Browse Source

2023年8月22日18:20:31

纪新园 2 years ago
parent
commit
c07cc12cc8
33 changed files with 763 additions and 70 deletions
  1. 24 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IWechatClient.java
  2. 34 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/template/dto/WechatMessageTemplateDTO.java
  3. 114 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/template/entity/WechatMessageTemplate.java
  4. 36 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/template/vo/WechatMessageTemplateVO.java
  5. 1 1
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/maintenance/entity/Maintenance.java
  6. 5 0
      blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/entity/StockGoods.java
  7. 5 0
      blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/vo/AppStockPartsVO.java
  8. 2 2
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Items.java
  9. 9 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxFeesController.java
  10. 8 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportItemFeesController.java
  11. 1 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/ocean/service/impl/ShippingBillServiceImpl.java
  12. 1 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/ArchivesServiceImpl.java
  13. 1 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/RepairServiceImpl.java
  14. 4 4
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java
  15. 1 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransferServiceImpl.java
  16. 2 2
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransportServiceImpl.java
  17. 69 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescPartsController.java
  18. 2 10
      blade-service/blade-client/src/main/java/org/springblade/client/goods/excel/GoodsInfoPartsExcel.java
  19. 126 0
      blade-service/blade-client/src/main/java/org/springblade/client/template/controller/WechatMessageTemplateController.java
  20. 42 0
      blade-service/blade-client/src/main/java/org/springblade/client/template/mapper/WechatMessageTemplateMapper.java
  21. 28 0
      blade-service/blade-client/src/main/java/org/springblade/client/template/mapper/WechatMessageTemplateMapper.xml
  22. 41 0
      blade-service/blade-client/src/main/java/org/springblade/client/template/service/IWechatMessageTemplateService.java
  23. 41 0
      blade-service/blade-client/src/main/java/org/springblade/client/template/service/impl/WechatMessageTemplateServiceImpl.java
  24. 61 8
      blade-service/blade-client/src/main/java/org/springblade/client/wechat/feign/WechatClient.java
  25. 1 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java
  26. 2 2
      blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java
  27. 12 9
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  28. 36 19
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/controller/MaintenanceController.java
  29. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/service/IMaintenanceService.java
  30. 42 5
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/service/impl/MaintenanceServiceImpl.java
  31. 3 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml
  32. 4 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java
  33. 3 3
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

+ 24 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IWechatClient.java

@@ -5,6 +5,7 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -20,6 +21,7 @@ public interface IWechatClient {
 	String API_NEW_PUSH = "/newPush";
 	String BID_WINNING_PUSH = "/bidWinningPush";
 	String GET_ALL_UNION_IDS = "/getAllUnionIds";
+	String SEND_MESSAGE = "/sendMessage";
 
 	/**
 	 * 获得所有关注用户
@@ -48,4 +50,26 @@ public interface IWechatClient {
 					@RequestParam("objectiveHarbor") String objectiveHarbor,
 					@RequestParam("boxTypeQuantity") String boxTypeQuantity,
 					@RequestParam("offer") String offer);
+
+	/**
+	 * 推送消息
+	 * @param openid 用户id
+	 * @param date 日期
+	 * @param name 客户名称
+	 * @param device 设备名称
+	 * @param tel  电话
+	 * @param deviceDescription 设备描述
+	 * @param amount 金额
+	 * @param type 类型
+	 */
+	@GetMapping(SEND_MESSAGE)
+	String sendMessage (@RequestParam("openid") String openid,
+						  @RequestParam("date") String date,
+						  @RequestParam("name") String name,
+						  @RequestParam("device") String device,
+						  @RequestParam("tel") String tel,
+						  @RequestParam("deviceDescription") String deviceDescription,
+						  @RequestParam("amount") BigDecimal amount,
+						@RequestParam("type") String type
+						);
 }

+ 34 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/template/dto/WechatMessageTemplateDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.client.template.dto;
+
+import org.springblade.client.template.entity.WechatMessageTemplate;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 微信公众号消息模板配置表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-08-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WechatMessageTemplateDTO extends WechatMessageTemplate {
+	private static final long serialVersionUID = 1L;
+
+}

+ 114 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/template/entity/WechatMessageTemplate.java

@@ -0,0 +1,114 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.client.template.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 微信公众号消息模板配置表实体类
+ *
+ * @author BladeX
+ * @since 2023-08-22
+ */
+@Data
+@TableName("blade_weChat_message_template")
+@ApiModel(value = "WechatMessageTemplate对象", description = "微信公众号消息模板配置表")
+public class WechatMessageTemplate implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+	/**
+	 * 公众号
+	 */
+	@ApiModelProperty(value = "公众号")
+	private String officialAccount;
+	/**
+	 * 公众号secret
+	 */
+	@ApiModelProperty(value = "公众号secret")
+	private String officialAccountSecret;
+	/**
+	 * 小程序appId
+	 */
+	@ApiModelProperty(value = "小程序appId")
+	private String appId;
+	/**
+	 * 小程序appSecret
+	 */
+	@ApiModelProperty(value = "小程序appSecret")
+	private String appSecret;
+	/**
+	 * 模板id
+	 */
+	@ApiModelProperty(value = "模板id")
+	private String templateId;
+	/**
+	 * 备注(收费指示)
+	 */
+	@ApiModelProperty(value = "备注(收费指示)")
+	private String remarks;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private Long updateUser;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private Long createUser;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 状态
+	 */
+	@ApiModelProperty(value = "状态")
+	private Integer status;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+	/**
+	 * 类型
+	 */
+	@ApiModelProperty(value = "类型")
+	private String type;
+
+	/**
+	 * 租户
+	 */
+	@ApiModelProperty(value = "租户")
+	private String tenantId;
+
+
+}

+ 36 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/template/vo/WechatMessageTemplateVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.client.template.vo;
+
+import org.springblade.client.template.entity.WechatMessageTemplate;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 微信公众号消息模板配置表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-08-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "WechatMessageTemplateVO对象", description = "微信公众号消息模板配置表")
+public class WechatMessageTemplateVO extends WechatMessageTemplate {
+	private static final long serialVersionUID = 1L;
+
+}

+ 1 - 1
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/maintenance/entity/Maintenance.java

@@ -266,7 +266,7 @@ public class Maintenance implements Serializable {
 
 	//维修描述
 	@ApiModelProperty(value = "维修描述")
-	private Long repairDescription;
+	private String repairDescription;
 
 
 }

+ 5 - 0
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/entity/StockGoods.java

@@ -80,6 +80,11 @@ public class StockGoods implements Serializable {
 	@ApiModelProperty(value = "锁定数量")
 	private BigDecimal lockingQuantity;
 	/**
+	 * 本次锁定数量
+	 */
+	@ApiModelProperty(value = "本次锁定数量")
+	private BigDecimal thisLockingQuantity;
+	/**
 	 * 结余数量
 	 */
 	@ApiModelProperty(value = "结余数量")

+ 5 - 0
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/vo/AppStockPartsVO.java

@@ -222,6 +222,11 @@ public class AppStockPartsVO {
 	private Long corpId;
 
 	/**
+	 * 客户id
+	 */
+	private String categoryitemId;
+
+	/**
 	 * 热卖标准
 	 */
 	private String standard;

+ 2 - 2
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Items.java

@@ -270,8 +270,8 @@ public class Items implements Serializable {
 	/**
 	 * 箱号
 	 */
-	@TableField(exist = false)
-	private String srcSysNo;
+	@ApiModelProperty(value = "箱号")
+	private String srcSysno;
 
 
 	/**

+ 9 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxFeesController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.box.tube.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -25,6 +26,7 @@ import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.box.tube.entity.TradingBox;
 import org.springblade.box.tube.entity.TradingBoxFees;
+import org.springblade.box.tube.entity.TransportItemFees;
 import org.springblade.box.tube.service.ITradingBoxFeesService;
 import org.springblade.box.tube.service.ITradingBoxService;
 import org.springblade.box.tube.vo.TradingBoxFeesVO;
@@ -86,7 +88,13 @@ public class TradingBoxFeesController extends BladeController {
 		if (res.isSuccess() && res.getData().size() > 0) {
 			feesDescVOList = res.getData();
 		}
-		IPage<TradingBoxFees> pages = tradingBoxFeesService.page(Condition.getPage(query), Condition.getQueryWrapper(tradingBoxFees).orderByDesc());
+		LambdaQueryWrapper<TradingBoxFees> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(tradingBoxFees.getCode()),TradingBoxFees::getCode,tradingBoxFees.getCode())
+			.eq(TradingBoxFees::getPid,tradingBoxFees.getPid())
+			.eq(TradingBoxFees::getIsDeleted,0)
+			.eq(TradingBoxFees::getTenantId,AuthUtil.getTenantId())
+			.orderByDesc(TradingBoxFees::getCreateTime);
+		IPage<TradingBoxFees> pages = tradingBoxFeesService.page(Condition.getPage(query),lambdaQueryWrapper);
 
 		for (TradingBoxFees item : pages.getRecords()) {
 			FeesDesc descVO = feesDescVOList.stream().filter(e -> e.getId().equals(item.getItemId())).findFirst().orElse(new FeesDescVO());

+ 8 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportItemFeesController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.box.tube.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -92,7 +93,13 @@ public class TransportItemFeesController extends BladeController {
 		if (res.isSuccess() && res.getData().size() > 0) {
 			feesDescVOList = res.getData();
 		}
-		IPage<TransportItemFees> pages = transportItemFeesService.page(Condition.getPage(query), Condition.getQueryWrapper(transportItemFees).orderByDesc());
+		LambdaQueryWrapper<TransportItemFees> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(transportItemFees.getCode()),TransportItemFees::getCode,transportItemFees.getCode())
+			.eq(TransportItemFees::getPid,transportItemFees.getPid())
+			.eq(TransportItemFees::getIsDeleted,0)
+			.eq(TransportItemFees::getTenantId,AuthUtil.getTenantId())
+		.orderByDesc(TransportItemFees::getCreateTime);
+		IPage<TransportItemFees> pages = transportItemFeesService.page(Condition.getPage(query),lambdaQueryWrapper);
 		for (TransportItemFees item : pages.getRecords()) {
 			FeesDesc descVO = feesDescVOList.stream().filter(e -> e.getId().equals(item.getItemId())).findFirst().orElse(new FeesDescVO());
 			if (ObjectUtils.isNotNull(descVO)) {

+ 1 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/ocean/service/impl/ShippingBillServiceImpl.java

@@ -845,7 +845,7 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
 				items.setVoyageNumber(selectShippingBill.getVoyageNumber());
 				items.setSailDate(selectShippingBill.getSailDate());
 
-				items.setSrcSysNo(selectShippingBill.getSysNo());//业务单号
+				items.setSrcSysno(selectShippingBill.getSysNo());//业务单号
 				items.setSrcBillNo(selectShippingBill.getMainBillNo());//主提单号
 				items.setSrcRefno(selectShippingBill.getBranchBillNo());//分单号
 				//获取费用id

+ 1 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/ArchivesServiceImpl.java

@@ -215,6 +215,7 @@ public class ArchivesServiceImpl extends ServiceImpl<ArchivesMapper, Archives> i
 				LambdaQueryWrapper<Archives> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 				lambdaQueryWrapper.eq(Archives::getTenantId, AuthUtil.getTenantId())
 					.eq(Archives::getIsDeleted, 0)
+					.ne(Archives::getStatus, "退租")
 					.eq(ObjectUtils.isNotNull(portDesc.getName()), Archives::getAddress, portDesc.getName());//状态
 				int count = baseMapper.selectCount(lambdaQueryWrapper);
 				addressOld.add(portDesc.getName());

+ 1 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/RepairServiceImpl.java

@@ -652,7 +652,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
 				items.setSrcType(7);
 				items.setTradeType("BOX");
 				items.setUnit(repairFees.getUnit());
-				items.setSrcSysNo(repairFees.getCode());
+				items.setSrcSysno(repairFees.getCode());
 				items.setRemarks(repairFees.getRemarks());
 				items.setSrcBillNo(repair.getSysNo());
 				items.setStatusJT(0);

+ 4 - 4
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java

@@ -838,7 +838,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				items.setSrcType(5);
 				items.setTradeType("BOX");
 				items.setUnit(tradingBoxFees.getUnit());
-				items.setSrcSysNo(tradingBoxFees.getCode());
+				items.setSrcSysno(tradingBoxFees.getCode());
 				items.setRemarks(tradingBoxFees.getRemarks());
 				items.setSrcBillNo(tradingBox.getSysNo());
 				items.setStatusJT(0);
@@ -1383,7 +1383,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 
 					items.setSrcOrderno(transport.getContractNo());//合同号
 					items.setBillNo(transport.getSysNo());//系统号
-					items.setSrcSysNo(tradingBoxFees.getCode());//箱号
+					items.setSrcSysno(tradingBoxFees.getCode());//箱号
 					items.setSrcBillNo(transport.getBillNo());//提单号
 
 					itemsList.add(items);
@@ -1493,7 +1493,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 					items.setSrcFeesId(tradingBoxFees.getId());
 					items.setSrcOrderno(tradingBox.getContractNo());//合同号
 					items.setBillNo(tradingBox.getSysNo());//系统号
-					items.setSrcSysNo(tradingBoxFees.getCode());//箱号
+					items.setSrcSysno(tradingBoxFees.getCode());//箱号
 					items.setSrcBillNo(null);//提单号
 					itemsList.add(items);
 					applyDTO.setItemsList(itemsList);
@@ -1675,7 +1675,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				items.setSrcType(5);
 				items.setTradeType("BOX");
 				items.setUnit(tradingBoxFees.getUnit());
-				items.setSrcSysNo(tradingBoxFees.getCode());
+				items.setSrcSysno(tradingBoxFees.getCode());
 				items.setRemarks(tradingBoxFees.getRemarks());
 				items.setSrcBillNo(tradingBox.getSysNo());
 				items.setStatusJT(0);

+ 1 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransferServiceImpl.java

@@ -540,7 +540,7 @@ public class TransferServiceImpl implements ITransferService {
 				items.setSrcType(5);
 				items.setTradeType("BOX");
 				items.setUnit(tradingBoxFees.getUnit());
-				items.setSrcSysNo(tradingBoxFees.getCode());
+				items.setSrcSysno(tradingBoxFees.getCode());
 				items.setRemarks(tradingBoxFees.getRemarks());
 				items.setSrcBillNo(tradingBox.getSysNo());
 				items.setStatusJT(0);

+ 2 - 2
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransportServiceImpl.java

@@ -847,7 +847,7 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 
 				items.setSrcOrderno(transport.getContractNo());//合同号
 				items.setBillNo(transport.getSysNo());//系统号
-				items.setSrcSysNo(tradingBoxFees.getCode());//箱号
+				items.setSrcSysno(tradingBoxFees.getCode());//箱号
 				items.setSrcBillNo(transport.getBillNo());//提单号
 
 				itemsList.add(items);
@@ -988,7 +988,7 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 				items.setSrcType(6);
 				items.setTradeType("BOX");
 				items.setUnit(transportItemFees.getUnit());
-				items.setSrcSysNo(transportItemFees.getCode());
+				items.setSrcSysno(transportItemFees.getCode());
 				items.setRemarks(transportItemFees.getRemarks());
 				items.setSrcBillNo(transport.getBillNo());
 				items.setStatusJT(0);

+ 69 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescPartsController.java

@@ -17,13 +17,16 @@
 package org.springblade.client.goods.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.client.corps.service.ICorpsAttnService;
 import org.springblade.client.corps.service.ICorpsDescService;
 import org.springblade.client.dto.GoodsDescDto;
@@ -324,4 +327,70 @@ public class GoodsDescPartsController extends BladeController {
 		return R.data(goodsDesc);
 	}
 
+	@GetMapping("/descListAll")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入goodsDesc")
+	public R<List<GoodsDesc>> descListNew(@RequestParam(name = "current", defaultValue = "1") Integer current,
+							@RequestParam(name = "size", defaultValue = "10") Integer size,
+							@RequestParam(name = "cname", required = false) String cname,
+							@RequestParam(name = "cnameInt", required = false) String cnameInt,
+							@RequestParam(name = "ename", required = false) String ename,
+							@RequestParam(name = "code", required = false) String code,
+							@RequestParam(name = "status", required = false) String status,
+							@RequestParam(name = "unit", required = false) String unit,
+							@RequestParam(name = "remarks", required = false) String remarks,
+							@RequestParam(name = "upperFrame", required = false) String upperFrame,
+							@RequestParam(name = "label", required = false) String label,
+							@RequestParam(name = "categoryitem", required = false) String categoryitem,
+							@RequestParam(name = "categoryitemId", required = false) String categoryitemId,
+							@RequestParam(name = "brandId", required = false) String brandId,
+							@RequestParam(name = "specs", required = false) String specs,
+							@RequestParam(name = "artsVision", required = false) String artsVision) {
+		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(cname), GoodsDesc::getCname, cname);
+		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(cnameInt), GoodsDesc::getCnameInt, cnameInt);
+		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(ename), GoodsDesc::getEname, ename);
+		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(code), GoodsDesc::getCode, code);
+		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(label), GoodsDesc::getCode, label);
+		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(remarks), GoodsDesc::getCode, remarks);
+		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(specs), GoodsDesc::getSpecs, specs);
+		goodsDescLambdaQueryWrapper.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId());
+		goodsDescLambdaQueryWrapper.eq(GoodsDesc::getType, 0);
+		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(status), GoodsDesc::getStatus, status);
+		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(brandId), GoodsDesc::getBrandId, brandId);
+		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(unit), GoodsDesc::getUnit, unit);
+		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(categoryitem), GoodsDesc::getCategoryitem, categoryitem);
+		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(upperFrame), GoodsDesc::getUpperFrame, upperFrame);
+		if (StringUtils.isNotEmpty(artsVision)) {
+			goodsDescLambdaQueryWrapper.and(i -> i.like(GoodsDesc::getArtsVision, artsVision).or().isNull(GoodsDesc::getArtsVision));
+		}
+		goodsDescLambdaQueryWrapper.apply(ObjectUtils.isNotNull(categoryitemId), "find_in_set(categoryitem_id,'" + categoryitemId + "')");
+		goodsDescLambdaQueryWrapper.orderByDesc(GoodsDesc::getCreateTime);
+		Page<GoodsDesc> page = new Page<>(current, size);
+		List<GoodsType> types = goodsDescType.list(new LambdaQueryWrapper<GoodsType>()
+			.eq(GoodsType::getTenantId, AuthUtil.getTenantId())
+			.eq(GoodsType::getIsDeleted, 0));
+		List<String> typeIds = new ArrayList<>();
+		for (GoodsType item : types) {
+			typeIds.add(item.getId() + "");
+		}
+		List<GoodsDesc> iPage = goodsDescService.list(goodsDescLambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(iPage)) {
+			iPage.forEach(e -> {
+				String typeId = e.getGoodsTypeId();
+				String[] split = typeId.split(",");
+				List<String> stringList = Arrays.asList(split);
+				typeIds.retainAll(stringList);
+				if (CollectionUtils.isNotEmpty(typeIds)) {
+					String goodsTypeName = "";
+					for (String item : typeIds) {
+						goodsTypeName = types.stream().filter(i -> i.getId().equals(Long.parseLong(item))).findFirst().orElse(new GoodsType()).getCname() + ",";
+					}
+					e.setGoodsTypeName(goodsTypeName);
+				}
+			});
+		}
+		return R.data(iPage);
+	}
+
 }

+ 2 - 10
blade-service/blade-client/src/main/java/org/springblade/client/goods/excel/GoodsInfoPartsExcel.java

@@ -4,7 +4,6 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
 import com.alibaba.excel.annotation.write.style.HeadRowHeight;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -12,7 +11,7 @@ import java.math.BigDecimal;
 
 /**
  * 商品信息
- * */
+ */
 @Data
 @ColumnWidth(25)
 @HeadRowHeight(20)
@@ -92,7 +91,7 @@ public class GoodsInfoPartsExcel implements Serializable {
 	@ExcelProperty("是否为积分商品(0否 1是)")
 	private String whetherIntegral;
 
-	@ApiModelProperty(value = "商品积分")
+	@ExcelProperty(value = "商品积分")
 	private BigDecimal integral;
 
 	/**
@@ -123,11 +122,4 @@ public class GoodsInfoPartsExcel implements Serializable {
 	private String remarks;
 
 
-
-
-
-
-
-
-
 }

+ 126 - 0
blade-service/blade-client/src/main/java/org/springblade/client/template/controller/WechatMessageTemplateController.java

@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.client.template.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.client.template.entity.WechatMessageTemplate;
+import org.springblade.client.template.vo.WechatMessageTemplateVO;
+import org.springblade.client.template.service.IWechatMessageTemplateService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 微信公众号消息模板配置表 控制器
+ *
+ * @author BladeX
+ * @since 2023-08-22
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/wechatmessagetemplate")
+@Api(value = "微信公众号消息模板配置表", tags = "微信公众号消息模板配置表接口")
+public class WechatMessageTemplateController extends BladeController {
+
+	private final IWechatMessageTemplateService wechatMessageTemplateService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入wechatMessageTemplate")
+	public R<WechatMessageTemplate> detail(WechatMessageTemplate wechatMessageTemplate) {
+		WechatMessageTemplate detail = wechatMessageTemplateService.getOne(Condition.getQueryWrapper(wechatMessageTemplate));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 微信公众号消息模板配置表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入wechatMessageTemplate")
+	public R<IPage<WechatMessageTemplate>> list(WechatMessageTemplate wechatMessageTemplate, Query query) {
+		IPage<WechatMessageTemplate> pages = wechatMessageTemplateService.page(Condition.getPage(query), Condition.getQueryWrapper(wechatMessageTemplate));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 微信公众号消息模板配置表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入wechatMessageTemplate")
+	public R<IPage<WechatMessageTemplateVO>> page(WechatMessageTemplateVO wechatMessageTemplate, Query query) {
+		IPage<WechatMessageTemplateVO> pages = wechatMessageTemplateService.selectWechatMessageTemplatePage(Condition.getPage(query), wechatMessageTemplate);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 微信公众号消息模板配置表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入wechatMessageTemplate")
+	public R save(@Valid @RequestBody WechatMessageTemplate wechatMessageTemplate) {
+		return R.status(wechatMessageTemplateService.save(wechatMessageTemplate));
+	}
+
+	/**
+	 * 修改 微信公众号消息模板配置表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入wechatMessageTemplate")
+	public R update(@Valid @RequestBody WechatMessageTemplate wechatMessageTemplate) {
+		return R.status(wechatMessageTemplateService.updateById(wechatMessageTemplate));
+	}
+
+	/**
+	 * 新增或修改 微信公众号消息模板配置表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入wechatMessageTemplate")
+	public R submit(@Valid @RequestBody WechatMessageTemplate wechatMessageTemplate) {
+		return R.status(wechatMessageTemplateService.saveOrUpdate(wechatMessageTemplate));
+	}
+
+	
+	/**
+	 * 删除 微信公众号消息模板配置表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(wechatMessageTemplateService.removeByIds(Func.toLongList(ids)));
+	}
+
+	
+}

+ 42 - 0
blade-service/blade-client/src/main/java/org/springblade/client/template/mapper/WechatMessageTemplateMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.client.template.mapper;
+
+import org.springblade.client.template.entity.WechatMessageTemplate;
+import org.springblade.client.template.vo.WechatMessageTemplateVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 微信公众号消息模板配置表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-08-22
+ */
+public interface WechatMessageTemplateMapper extends BaseMapper<WechatMessageTemplate> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param wechatMessageTemplate
+	 * @return
+	 */
+	List<WechatMessageTemplateVO> selectWechatMessageTemplatePage(IPage page, WechatMessageTemplateVO wechatMessageTemplate);
+
+}

+ 28 - 0
blade-service/blade-client/src/main/java/org/springblade/client/template/mapper/WechatMessageTemplateMapper.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.client.template.mapper.WechatMessageTemplateMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="wechatMessageTemplateResultMap" type="org.springblade.client.template.entity.WechatMessageTemplate">
+        <id column="id" property="id"/>
+        <result column="official_account" property="officialAccount"/>
+        <result column="official_account_secret" property="officialAccountSecret"/>
+        <result column="app_id" property="appId"/>
+        <result column="app_secret" property="appSecret"/>
+        <result column="template_id" property="templateId"/>
+        <result column="remarks" property="remarks"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="type" property="type"/>
+    </resultMap>
+
+
+    <select id="selectWechatMessageTemplatePage" resultMap="wechatMessageTemplateResultMap">
+        select * from blade_weChat_message_template where is_deleted = 0
+    </select>
+
+</mapper>

+ 41 - 0
blade-service/blade-client/src/main/java/org/springblade/client/template/service/IWechatMessageTemplateService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.client.template.service;
+
+import org.springblade.client.template.entity.WechatMessageTemplate;
+import org.springblade.client.template.vo.WechatMessageTemplateVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 微信公众号消息模板配置表 服务类
+ *
+ * @author BladeX
+ * @since 2023-08-22
+ */
+public interface IWechatMessageTemplateService extends IService<WechatMessageTemplate> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param wechatMessageTemplate
+	 * @return
+	 */
+	IPage<WechatMessageTemplateVO> selectWechatMessageTemplatePage(IPage<WechatMessageTemplateVO> page, WechatMessageTemplateVO wechatMessageTemplate);
+
+}

+ 41 - 0
blade-service/blade-client/src/main/java/org/springblade/client/template/service/impl/WechatMessageTemplateServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.client.template.service.impl;
+
+import org.springblade.client.template.entity.WechatMessageTemplate;
+import org.springblade.client.template.vo.WechatMessageTemplateVO;
+import org.springblade.client.template.mapper.WechatMessageTemplateMapper;
+import org.springblade.client.template.service.IWechatMessageTemplateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 微信公众号消息模板配置表 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-08-22
+ */
+@Service
+public class WechatMessageTemplateServiceImpl extends ServiceImpl<WechatMessageTemplateMapper, WechatMessageTemplate> implements IWechatMessageTemplateService {
+
+	@Override
+	public IPage<WechatMessageTemplateVO> selectWechatMessageTemplatePage(IPage<WechatMessageTemplateVO> page, WechatMessageTemplateVO wechatMessageTemplate) {
+		return page.setRecords(baseMapper.selectWechatMessageTemplatePage(page, wechatMessageTemplate));
+	}
+
+}

+ 61 - 8
blade-service/blade-client/src/main/java/org/springblade/client/wechat/feign/WechatClient.java

@@ -1,5 +1,6 @@
 package org.springblade.client.wechat.feign;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
@@ -8,12 +9,19 @@ import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
 import org.springblade.client.feign.IWechatClient;
+import org.springblade.client.template.entity.WechatMessageTemplate;
+import org.springblade.client.template.service.IWechatMessageTemplateService;
 import org.springblade.client.wechat.Util.WxUtil;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
-import java.util.*;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 
 @NonDS
 @ApiIgnore()
@@ -31,23 +39,26 @@ public class WechatClient implements IWechatClient {
 	// 中标模板id
 	private static final String WINNING_TEMPLATE_ID = "x_oQaCsWi0n9hq3MNpd8hRvXqB8sc2E_DzIbrk1IRs0";
 
+	private final IWechatMessageTemplateService wechatMessageTemplateService;
+
 	/**
 	 * 发布标书获得所有关注用户
+	 *
 	 * @return 结果
 	 */
 	@Override
 	public List<Map<String, String>> getAllUnionIds() {
 		//获得token
-		Map<String,String> tokenMap = WxUtil.getToken(appId, appSecret);
+		Map<String, String> tokenMap = WxUtil.getToken(appId, appSecret);
 		//获得用户列表
 		Map<String, Object> openIdMap = WxUtil.getUserOpenId(tokenMap.get("accessToken"));
 		List<String> openIdsList = (List<String>) openIdMap.get("openIds");
 		List<Map<String, String>> unionIdMapList = new ArrayList<>();
 		//获得用户unionId
-		for (int i = 0; i < openIdsList.size(); i++ ){
+		for (int i = 0; i < openIdsList.size(); i++) {
 			String openid = openIdsList.get(i);
 			//获得unionId
-			Map<String, String > userMap = WxUtil.getUserInfo(tokenMap.get("accessToken"),openid);
+			Map<String, String> userMap = WxUtil.getUserInfo(tokenMap.get("accessToken"), openid);
 			unionIdMapList.add(userMap);
 		}
 		return unionIdMapList;
@@ -56,11 +67,11 @@ public class WechatClient implements IWechatClient {
 	/**
 	 * 发布标书发送模板消息
 	 *
-	 * @param openid  接收此消息的openId
+	 * @param openid 接收此消息的openId
 	 * @return 结果
 	 */
 	@Override
-	public String newsPush(String openid, String contractNo, String departureHarbor, String objectiveHarbor,String boxTypeQuantity, String loadingTime) {
+	public String newsPush(String openid, String contractNo, String departureHarbor, String objectiveHarbor, String boxTypeQuantity, String loadingTime) {
 
 		//1,配置
 		WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
@@ -98,11 +109,11 @@ public class WechatClient implements IWechatClient {
 	/**
 	 * 中标发送模板消息
 	 *
-	 * @param openid  接收此消息的openId
+	 * @param openid 接收此消息的openId
 	 * @return 结果
 	 */
 	@Override
-	public String bidWinningPush(String openid, String contractNo, String departureHarbor, String objectiveHarbor,String boxTypeQuantity, String offer) {
+	public String bidWinningPush(String openid, String contractNo, String departureHarbor, String objectiveHarbor, String boxTypeQuantity, String offer) {
 
 		//1,配置
 		WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
@@ -137,4 +148,46 @@ public class WechatClient implements IWechatClient {
 		return null;
 	}
 
+	@Override
+	public String sendMessage(String openid, String date, String name, String device, String tel,
+							  String deviceDescription, BigDecimal amount, String type) {
+		WechatMessageTemplate wechatMessageTemplate = wechatMessageTemplateService.getOne(new LambdaQueryWrapper<WechatMessageTemplate>()
+			.eq(WechatMessageTemplate::getIsDeleted, 0)
+			.eq(WechatMessageTemplate::getTenantId, AuthUtil.getTenantId())
+			.eq(WechatMessageTemplate::getType, type));
+		if (wechatMessageTemplate == null) {
+			throw new RuntimeException("未找到模板信息");
+		}
+		//1,配置
+		WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
+		wxStorage.setAppId(wechatMessageTemplate.getOfficialAccount());
+		wxStorage.setSecret(wechatMessageTemplate.getOfficialAccountSecret());
+		WxMpService wxMpService = new WxMpServiceImpl();
+		wxMpService.setWxMpConfigStorage(wxStorage);
+
+		List<WxMpTemplateData> data = Arrays.asList(
+			new WxMpTemplateData("first", "恭喜中标,合作愉快!"),
+			new WxMpTemplateData("keyword1", date),
+			new WxMpTemplateData("keyword2", name),
+			new WxMpTemplateData("keyword3", device),
+			new WxMpTemplateData("keyword4", deviceDescription),
+			new WxMpTemplateData("keyword5", tel),
+			new WxMpTemplateData("remark", "感谢您的使用。")
+		);
+		//2,推送消息
+		WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
+			.toUser(openid)//要推送的用户openid
+			.templateId(wechatMessageTemplate.getTemplateId())//模版id
+			.miniProgram(new WxMpTemplateMessage.MiniProgram(wechatMessageTemplate.getAppId(), "pages/index"))
+			.data(data)
+			.build();
+		try {
+			wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
+		} catch (Exception e) {
+			System.out.println("推送失败:" + e.getMessage());
+			e.printStackTrace();
+		}
+		return null;
+	}
+
 }

+ 1 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -1162,6 +1162,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 			throw new RuntimeException(stockGoods.getCode() + "更新库存总账失败,锁定库存不足");
 		} else {
 			stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(e.getOrderQuantity()));
+			stockGoods.setThisLockingQuantity(new BigDecimal("0.00").subtract(e.getOrderQuantity()));
 			// todo
 				/*if (ObjectUtils.isNotNull(stockGoods.getSurplusRouteQuantity())) {
 					stockGoods.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity().add(e.getOrderQuantity()));

+ 2 - 2
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java

@@ -1451,7 +1451,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, LandOrder> implem
 		LandOrderItems.setSrcType(9);
 		LandOrderItems.setTradeType("ZDLU");
 		LandOrderItems.setUnit(order.getPricingUnit());
-		LandOrderItems.setSrcSysNo(order.getOrderNo());
+		LandOrderItems.setSrcSysno(order.getOrderNo());
 		LandOrderItems.setRemarks(order.getRemarks());
 		LandOrderItems.setSrcBillNo(order.getBillNo());
 		LandOrderItems.setStatusJT(0);
@@ -1609,7 +1609,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, LandOrder> implem
 				items.setStatusJT(0);
 				items.setBillNo(order.getOrderNo());
 				items.setStockTime(order.getBsDate());
-				items.setSrcSysNo(order.getOrderNo());
+				items.setSrcSysno(order.getOrderNo());
 				items.setFleetId(transportItemFees.getFleetId());
 				items.setChargeMember(chargeMember);
 				items.setPlateNo(transportItemFees.getPlateNo());

+ 12 - 9
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -1257,6 +1257,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						}
 						// 减少可用库存
 						oneStock.setSurplusRouteQuantity(surplusRouteQuantity.subtract(orderQuantity));
+						oneStock.setThisLockingQuantity(orderQuantity);
 						// 增加锁定库存
 						oneStock.setLockingQuantity(lockingQuantity == null ? new BigDecimal("0").add(orderQuantity) : lockingQuantity.add(orderQuantity));
 						oneStock.setVersion(oneStock.getVersion());
@@ -1773,6 +1774,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					}
 					// 增加可用库存
 					oneStock.setSurplusRouteQuantity(surplusRouteQuantity.add(orderQuantity));
+					oneStock.setThisLockingQuantity(new BigDecimal("0").subtract(orderQuantity));
 					// 减少锁定库存
 					oneStock.setLockingQuantity(lockingQuantity == null ? new BigDecimal("0") : lockingQuantity.subtract(orderQuantity));
 					// 更新库存
@@ -2021,6 +2023,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						}
 						// 增加可用库存
 						oneStock.setSurplusRouteQuantity(surplusRouteQuantity.add(orderQuantity));
+						oneStock.setThisLockingQuantity(new BigDecimal("0").subtract(orderQuantity));
 						// 减少锁定库存
 						oneStock.setLockingQuantity(lockingQuantity == null ? new BigDecimal("0") : lockingQuantity.subtract(orderQuantity));
 						oneStock.setVersion(oneStock.getVersion());
@@ -3042,7 +3045,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		} else {
 			if (AuthUtil.getUserRole().equals("客户")) {
-				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 				if (ObjectUtils.isNull(corpsAttn)) {
 					throw new RuntimeException("未查到用户信息");
 				} else {
@@ -4253,7 +4256,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					order.setBusinesDate(new Date());
 					order.setSalesName(AuthUtil.getUserId() + "");
 					if (AuthUtil.getUserRole().equals("客户")) {
-						CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+						CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 						if (ObjectUtils.isNull(corpsAttn)) {
 							throw new RuntimeException("未查到用户信息");
 						} else {
@@ -4480,7 +4483,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					order.setBusinesDate(new Date());
 					order.setSalesName(AuthUtil.getUserId() + "");
 					if (AuthUtil.getUserRole().equals("客户")) {
-						CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+						CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 						if (ObjectUtils.isNull(corpsAttn)) {
 							throw new RuntimeException("未查到用户信息");
 						} else {
@@ -4861,7 +4864,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			map.put("contactNumber", "无");
 			map.put("tenantLevel", "VIP0");
 		}
-		CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+		CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 		if (ObjectUtils.isNotNull(corpsAttn)) {
 			CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpsAttn.getPid());
 			if (ObjectUtils.isNotNull(corpsDesc)) {
@@ -6265,7 +6268,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		} else {
 			if (AuthUtil.getUserRole().equals("客户")) {
-				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 				if (ObjectUtils.isNull(corpsAttn)) {
 					throw new RuntimeException("未查到用户信息");
 				} else {
@@ -6482,7 +6485,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		} else {
 			if (AuthUtil.getUserRole().equals("客户")) {
-				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 				if (ObjectUtils.isNull(corpsAttn)) {
 					throw new RuntimeException("未查到用户信息");
 				} else {
@@ -6656,7 +6659,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (res.isSuccess() && res.getData().size() > 0) {
 			Long corpId = null;
 			if (AuthUtil.getUserRole().equals("客户")) {
-				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 				if (ObjectUtils.isNotNull(corpsAttn)) {
 					CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpsAttn.getPid());
 					if (ObjectUtils.isNotNull(corpsDesc)) {
@@ -7239,7 +7242,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		} else {
 			if (AuthUtil.getUserRole().equals("客户")) {
-				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 				if (ObjectUtils.isNull(corpsAttn)) {
 					throw new RuntimeException("未查到用户信息");
 				} else {
@@ -7456,7 +7459,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 		} else {
 			if (AuthUtil.getUserRole().equals("客户")) {
-				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(),AuthUtil.getTenantId());
+				CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
 				if (ObjectUtils.isNull(corpsAttn)) {
 					throw new RuntimeException("未查到用户信息");
 				} else {

+ 36 - 19
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/controller/MaintenanceController.java

@@ -24,8 +24,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
-import org.springblade.client.entity.CorpEquipmentArchives;
-import org.springblade.client.excel.CorpEquipmentArchivesExcel;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
@@ -33,8 +31,6 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.purchase.sales.entity.Order;
-import org.springblade.salesPart.entity.ProjectGoods;
 import org.springblade.salesPart.excel.MaintenanceExcel;
 import org.springblade.salesPart.maintenance.entity.Maintenance;
 import org.springblade.salesPart.maintenance.entity.MaintenanceFees;
@@ -101,26 +97,37 @@ public class MaintenanceController extends BladeController {
 			lambdaQueryWrapper.gt(Maintenance::getRepairReportDate, maintenance.getRepairReportDateList().get(0));
 			lambdaQueryWrapper.lt(Maintenance::getRepairReportDate, maintenance.getRepairReportDateList().get(0));
 		}
-		if (AuthUtil.getUserRole().contains("维修工")) {
-			lambdaQueryWrapper.eq(Maintenance::getMaintenanceWorkerId, AuthUtil.getUserId());
+		if (AuthUtil.getUserRole().contains("admin")) {
 			if (ObjectUtils.isNotNull(maintenance.getStatus())) {
-				lambdaQueryWrapper.eq(Maintenance::getStatus, maintenance.getStatus());
-			} else {
-				lambdaQueryWrapper.in(Maintenance::getStatus, 2, 3, 4, 5);
+				if (maintenance.getStatus() == 1) {
+					lambdaQueryWrapper.eq(Maintenance::getDispatchingWorkers,"1");
+				}else{
+					lambdaQueryWrapper.eq(Maintenance::getStatus, maintenance.getStatus());
+				}
 			}
 		} else {
-			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(maintenance.getMaintenanceWorkerId()), Maintenance::getMaintenanceWorkerId, maintenance.getMaintenanceWorkerId())
-				.eq(ObjectUtils.isNotNull(maintenance.getStatus()), Maintenance::getStatus, maintenance.getStatus());
-		}
-		if (AuthUtil.getUserRole().contains("客户")) {
-			lambdaQueryWrapper.eq(Maintenance::getCreateUser, AuthUtil.getUserId());
-			if (ObjectUtils.isNotNull(maintenance.getStatus())) {
-				lambdaQueryWrapper.eq(Maintenance::getStatus, maintenance.getStatus());
+			if (AuthUtil.getUserRole().contains("维修工")) {
+				lambdaQueryWrapper.eq(Maintenance::getMaintenanceWorkerId, AuthUtil.getUserId())
+					.apply("find_in_set(dispatching_workers,'2,3')");
+				if (ObjectUtils.isNotNull(maintenance.getStatus())) {
+					lambdaQueryWrapper.eq(Maintenance::getStatus, maintenance.getStatus());
+				} else {
+					lambdaQueryWrapper.in(Maintenance::getStatus, 3, 4, 5);
+				}
 			} else {
-				lambdaQueryWrapper.in(Maintenance::getStatus, 1, 3, 4, 5);
+				lambdaQueryWrapper.eq(ObjectUtils.isNotNull(maintenance.getMaintenanceWorkerId()), Maintenance::getMaintenanceWorkerId, maintenance.getMaintenanceWorkerId())
+					.eq(ObjectUtils.isNotNull(maintenance.getStatus()), Maintenance::getStatus, maintenance.getStatus());
+			}
+			if (AuthUtil.getUserRole().contains("客户")) {
+				lambdaQueryWrapper.eq(Maintenance::getCreateUser, AuthUtil.getUserId());
+				if (ObjectUtils.isNotNull(maintenance.getStatus())) {
+					lambdaQueryWrapper.eq(Maintenance::getStatus, maintenance.getStatus());
+				} else {
+					lambdaQueryWrapper.isNotNull(Maintenance::getStatus);
+				}
+			} else {
+				lambdaQueryWrapper.eq(ObjectUtils.isNotNull(maintenance.getStatus()), Maintenance::getStatus, maintenance.getStatus());
 			}
-		} else {
-			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(maintenance.getStatus()), Maintenance::getStatus, maintenance.getStatus());
 		}
 		lambdaQueryWrapper.orderByDesc(Maintenance::getCreateTime);
 		IPage<Maintenance> pages = maintenanceService.page(Condition.getPage(query), lambdaQueryWrapper);
@@ -234,6 +241,16 @@ public class MaintenanceController extends BladeController {
 	}
 
 	/**
+	 * 撤销确认费用
+	 */
+	@PostMapping("/revokeConfirmFees")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "确认接单", notes = "传入maintenance")
+	public R revokeConfirmFees(@Valid @RequestBody Maintenance maintenance) {
+		return maintenanceService.revokeConfirmFees(maintenance);
+	}
+
+	/**
 	 * 生成支付信息
 	 */
 	@PostMapping("/confirmExpenses")

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/service/IMaintenanceService.java

@@ -63,4 +63,6 @@ public interface IMaintenanceService extends IService<Maintenance> {
 	R confirmFees(Maintenance maintenance);
 
 	R scanPay(Maintenance maintenance);
+
+	R revokeConfirmFees(Maintenance maintenance);
 }

+ 42 - 5
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/service/impl/MaintenanceServiceImpl.java

@@ -132,7 +132,8 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 			maintenance.setCreateUserName(AuthUtil.getUserName());
 			maintenance.setCreateUser(AuthUtil.getUserId());
 			maintenance.setTenantId(AuthUtil.getTenantId());
-			maintenance.setStatus(1);
+			maintenance.setStatus(3);
+			maintenance.setDispatchingWorkers("1");
 			baseMapper.insert(maintenance);
 		} else {
 			maintenance.setUpdateTime(new Date());
@@ -192,7 +193,7 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		}
 		if (ObjectUtils.isNotNull(maintenance.getMaintenanceWorkerId())) {
 			maintenance.setDispatchingWorkers("2");
-			maintenance.setStatus(2);
+			maintenance.setStatus(3);
 			maintenance.setUpdateTime(new Date());
 			maintenance.setUpdateUser(AuthUtil.getUserId());
 			maintenance.setUpdateUserName(AuthUtil.getUserName());
@@ -237,9 +238,9 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		if (maintenance.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
 		}
-		if (maintenance.getStatus() <= 2) {
+		if (maintenance.getStatus() <= 3) {
 			maintenance.setDispatchingWorkers("1");
-			maintenance.setStatus(1);
+			maintenance.setStatus(3);
 			maintenance.setUpdateTime(new Date());
 			maintenance.setUpdateUser(AuthUtil.getUserId());
 			maintenance.setUpdateUserName(AuthUtil.getUserName());
@@ -264,7 +265,7 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 				throw new SecurityException("发送消息失败");
 			}
 		} else {
-			throw new RuntimeException("待维修中撤销失败");
+			throw new RuntimeException("待结算中撤销失败");
 		}
 		MaintenanceLog maintenanceLog = new MaintenanceLog();
 		maintenanceLog.setSysNo(maintenance.getSysNo());
@@ -285,6 +286,7 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 			throw new RuntimeException("缺少必要参数");
 		}
 		maintenance.setStatus(3);
+		maintenance.setDispatchingWorkers("3");
 		maintenance.setUpdateTime(new Date());
 		maintenance.setUpdateUser(AuthUtil.getUserId());
 		maintenance.setUpdateUserName(AuthUtil.getUserName());
@@ -485,6 +487,20 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 			maintenance.setMaintenanceAmount(amount);
 			maintenanceFeesService.saveOrUpdateBatch(maintenance.getMaintenanceFees());
 		}
+		if (ObjectUtils.isNotNull(maintenance.getMaintenanceFiles()) && maintenance.getMaintenanceFiles().size() > 0) {
+			for (MaintenanceFiles item : maintenance.getMaintenanceFiles()) {
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setTenantId(AuthUtil.getTenantId());
+					item.setPid(maintenance.getId());
+				} else {
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+				}
+			}
+			maintenanceFilesService.saveOrUpdateBatch(maintenance.getMaintenanceFiles());
+		}
 		maintenance.setStatus(4);
 		maintenance.setUpdateTime(new Date());
 		maintenance.setUpdateUser(AuthUtil.getUserId());
@@ -520,6 +536,27 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		}
 	}
 
+	@Override
+	public R revokeConfirmFees(Maintenance maintenance) {
+		if (maintenance.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		maintenance.setStatus(3);
+		maintenance.setUpdateTime(new Date());
+		maintenance.setUpdateUser(AuthUtil.getUserId());
+		maintenance.setUpdateUserName(AuthUtil.getUserName());
+		baseMapper.updateById(maintenance);
+		MaintenanceLog maintenanceLog = new MaintenanceLog();
+		maintenanceLog.setSysNo(maintenance.getSysNo());
+		maintenanceLog.setSrcId(maintenance.getId());
+		maintenanceLog.setCreateTime(new Date());
+		maintenanceLog.setCreateUser(AuthUtil.getUserId());
+		maintenanceLog.setCreateUserName(AuthUtil.getUserName());
+		maintenanceLog.setType("撤销确认费用");
+		maintenanceLogService.save(maintenanceLog);
+		return R.data(maintenance);
+	}
+
 	private R scanPayMethod(Maintenance maintenance) {
 		if (null == maintenance) {
 			throw new RuntimeException("未找到订单信息,订单已取消");

+ 3 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml

@@ -199,6 +199,9 @@
             <if test="stock.goodsId != null">
                 and t1.goods_id = #{stock.goodsId}
             </if>
+            <if test="stock.categoryitemId != null and stock.categoryitemId != ''">
+                and find_in_set(#{stock.categoryitemId},t3.categoryitem_id)
+            </if>
             <if test="stock.status != null and stock.status != ''">
                 and t1.status = #{stock.status}
             </if>

+ 4 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java

@@ -482,7 +482,11 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	@Transactional(rollbackFor = Exception.class)
 	public R updateByIdNew(StockGoods stockGoods) {
+		StockGoods detail = baseMapper.selectById(stockGoods.getId());
 		int version = baseMapper.selectById(stockGoods.getId()).getVersion();
+		stockGoods.setLockingQuantity(detail.getLockingQuantity().add(stockGoods.getThisLockingQuantity()));
+		stockGoods.setBalanceQuantity(detail.getBalanceQuantity());
+		stockGoods.setSurplusRouteQuantity(detail.getBalanceQuantity().subtract(stockGoods.getLockingQuantity()));
 		int count = baseMapper.update(stockGoods, new LambdaQueryWrapper<StockGoods>()
 			.eq(StockGoods::getId, stockGoods.getId())
 			.eq(StockGoods::getVersion, version)

+ 3 - 3
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -1617,7 +1617,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		StringBuilder sysOrderNo = new StringBuilder();
 		for (Items items : itemsList) {
 			if (sysOrderNo.indexOf(items.getSrcOrderno()) == -1) {
-				sysOrderNo = sysOrderNo.append(items.getSrcOrderno()).append(",");
+				sysOrderNo = sysOrderNo.append(items.getSrcRefno()).append(",");
 			}
 		}
 		if (ObjectUtil.isNotEmpty(sysOrderNo)) {
@@ -3181,7 +3181,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			acc.setSrcBillNo(e.getSrcBillNo());//提单号
 			acc.setCreateTime(new Date());
 			acc.setTradeType(e.getTradeType());
-			acc.setSrcSysno(e.getSrcSysNo());//箱号
+			acc.setSrcSysno(e.getSrcSysno());//箱号
 			if (ObjectUtils.isNotNull(e.getStatusJT())) {
 				acc.setStatus(e.getStatusJT());
 			} else {
@@ -3241,7 +3241,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			lambdaQueryWrapper.eq(Acc::getIsDeleted, 0)
 				.eq(Acc::getTenantId, AuthUtil.getTenantId())
 				.eq(Acc::getSrcParentId, e.getSrcParentId())
-				.eq(Acc::getSrcSysno, e.getSrcSysNo());
+				.eq(Acc::getSrcSysno, e.getSrcSysno());
 			Acc selectAcc = accMapper.selectOne(lambdaQueryWrapper);
 			if (ObjectUtils.isNull(selectAcc)) {
 				accMapper.insert(acc);