فهرست منبع

Merge remote-tracking branch 'origin/dev' into dev

zk 2 سال پیش
والد
کامیت
0f4f799c09
38فایلهای تغییر یافته به همراه1050 افزوده شده و 289 حذف شده
  1. 5 0
      sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java
  2. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OkHttpUtils.java
  3. 5 4
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java
  4. 33 18
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java
  5. 9 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteUserService.java
  6. 54 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/FindEntUserResDto.java
  7. 10 10
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dubbo/RemoteContractServiceImpl.java
  8. 122 10
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/CommonBusinessService.java
  9. 105 44
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  10. 4 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsTrackService.java
  11. 101 36
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java
  12. 3 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeTrackService.java
  13. 11 6
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/task/SynchronousContractStatusTask.java
  14. 4 5
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/WorkbenchController.java
  15. 3 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpSettlementRecordMapper.java
  16. 27 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/Factor.java
  17. 4 11
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/SettlementRecord.java
  18. 2 10
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/FinanceCount.java
  19. 18 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/EChartsVo.java
  20. 10 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementRecordService.java
  21. 52 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WorkbenchService.java
  22. 39 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/utils/DateTimeUtil.java
  23. 18 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/utils/DecimalUtils.java
  24. 86 12
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementRecordMapper.xml
  25. 13 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteUserServiceImpl.java
  26. 2 2
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/CommonService.java
  27. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
  28. 2 2
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java
  29. 3 3
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/SysDictService.java
  30. 4 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/OrderCarDTO.java
  31. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/OrderFinishVO.java
  32. 35 19
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  33. 179 69
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java
  34. 21 4
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  35. 49 9
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  36. 12 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java
  37. 1 1
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  38. 1 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

+ 5 - 0
sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java

@@ -577,6 +577,11 @@ public class AuthServiceImpl implements IAuthService {
             //普通用户需要填充数据权限
             if (user.getIsMain().equals(Global.NO)) {
                 loginUserInfo.setAuthUserIdList(remoteUserService.queryAuthUserList(user.getId()));
+            } else {
+                List<FindEntUserResDto> entUser = remoteUserService.findEntUser(user.getEntId());
+                if (CollectionUtils.isNotEmpty(entUser)) {
+                    loginUserInfo.setAuthUserIdList(entUser.stream().map(FindEntUserResDto::getUserId).distinct().toList());
+                }
             }
 
             int expireTime = ClientTypeEnum.expireTime(loginBase.getClientType());

+ 1 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OkHttpUtils.java

@@ -456,7 +456,7 @@ public class OkHttpUtils {
             }
             return respContent;
         } catch (Exception e) {
-            log.error("网络访问异常,请求url地址={},响应体={},error={}", url, response, e);
+            log.error("网络访问异常,请求url地址={},响应体={},error=", url, response, e);
             throw new RuntimeException();
         } finally {
             log.info("统一外网请求参数打印,post请求url地址={},响应={}", url, respContent);

+ 5 - 4
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java

@@ -40,15 +40,11 @@ public class HttpStatus {
     public static final String ACCOUNT_MISSING = "用户账号必填!";
     public static final String ACCOUNT_FREEZE = "用户账号不能重复冻结!";
     public static final String ACCOUNT_UNFREEZE = "用户账号不能重复解冻!";
-    public static final String ACCOUNT_EXISTS = "用户账号已存在!";
     public static final String PWD_MISSING = "密码不能为空!";
     public static final String TOKEN_MISSING = "token不能为空!";
     public static final String TOKEN_INVAILD = "无效token";
     public static final String TOKEN_ERROR = "非法token!";
     public static final String CAPCHA_ERROR = "验证码无效!";
-    public static final String ENT_EXISTS = "企业已存在,不可重复!";
-    public static final String DICTTYPE_EXISTS = "字典类型已存在,不可重复!";
-    public static final String DICT_EXISTS = "字典键值已存在,不可重复!";
     public static final String ADDRESS_EXISTS = "地点已存在,不可重复!";
 
     /**其他自定义状态码*/
@@ -188,4 +184,9 @@ public class HttpStatus {
     public static final String MSG_034 = "您与所选企业存在未完结对账单,当前无法删除!";
     public static final String MSG_035 = "地址信息已存在";
 
+    public static final String ENT_EXISTS = "企业已存在,不可重复!";
+    public static final String ACCOUNT_EXISTS = "用户账号已存在!";
+    public static final String DICTTYPE_EXISTS = "字典类型已存在,不可重复!";
+    public static final String DICT_EXISTS = "字典键值已存在,不可重复!";
+
 }

+ 33 - 18
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java

@@ -296,30 +296,45 @@ public enum MessageEnum {
             "贵司已发起了对【${company}】的付款操作,请及时确认并联系收款单位;结算单号:${number}", "terminal,ios,android",""),
 
     /**
-     * 合同-销售合同、托运合同
+     * 合同-销售合同、托运合同  补充合同
      */
-    SAELCONTRACT_SUBMIT_DATA("BUSINESS", "SAELCONTRACT_SUBMIT_DATA", "发起补充合同签约",
-            "贵司新建了补充合同并发起与【${entName}】的合同签约流程,请留意电话短信;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
+    SAELCONTRACT_SUBMIT_DATA("BUSINESS", "SAELCONTRACT_SUBMIT_DATA", "发起补充合同签约", "贵司新建了补充合同并发起与【${entName}】的合同签约流程,请留意电话短信;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
 
-    SAELCONTRACT_COMPLETE_CONTRACT("BUSINESS", "SAELCONTRACT_COMPLETE_CONTRACT", "完结合同",
-            "贵司已完结了与【${entName}】间的签约合同,请及时通知合作单位;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
 
-    SAELCONTRACT_SEND_CONTRACT("BUSINESS", "SAELCONTRACT_SEND_CONTRACT", "发起合同签约",
-            "贵司新建了合同并发起与【${entName}】的合同签约流程,请留意电话短信;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
-    SAELCONTRACT_SUCCESS_CONTRACT("BUSINESS", "SAELCONTRACT_SUCCESS_CONTRACT", "合同签约成功",
-            "贵司已成功与【${entName}】签约合同;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
     /**
-     * 合同-采购合同、承运合同
+     * 完结合同
      */
-    BUYCONTRACT_PROCESS_SEND("BUSINESS", "SAELCONTRACT_SUBMIT_DATA", "合同签约流程已发起",
-            "【${entName}】新建合同并发起签约流程,请留意电话短信;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
-    BUYCONTRACT_SUPPLYPROCESS_SEND("BUSINESS", "BUYCONTRACT_SUPPLYPROCESS_SEND", "补充合同签约流程已发起",
-            "【${entName}】新建补充合同并发起签约流程,请留意电话短信;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
-    BUYCONTRACT_SUCCESS_CONTRACT("BUSINESS", "BUYCONTRACT_SUCCESS_CONTRACT", "合同签约成功",
-            "贵司已成功与【${entName}】签约合同;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
-    BUYCONTRACT_COMPLETE_CONTRACT("BUSINESS", "BUYCONTRACT_COMPLETE_CONTRACT", "合同被完结",
-            "【${entName}】完结了与贵司签约的合同,请及时联系确认;;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
+    SAELCONTRACT_COMPLETE_CONTRACT("BUSINESS", "SAELCONTRACT_COMPLETE_CONTRACT", "完结合同","贵司已完结了与【${entName}】间的签约合同,请及时通知合作单位;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
 
+    /**
+     * 发起
+     */
+    SAELCONTRACT_SEND_CONTRACT("BUSINESS", "SAELCONTRACT_SEND_CONTRACT", "发起合同签约","贵司新建了合同并发起与【${entName}】的合同签约流程,请留意电话短信;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
+
+    /**
+     * 合同签约成功
+     */
+    SAELCONTRACT_SUCCESS_CONTRACT("BUSINESS", "SAELCONTRACT_SUCCESS_CONTRACT", "合同签约成功", "贵司已成功与【${entName}】签约合同;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
+
+    /**
+     * 合同-采购合同、承运合同  对方已发起签约
+     */
+    BUYCONTRACT_PROCESS_SEND("BUSINESS", "SAELCONTRACT_SUBMIT_DATA", "合同签约流程已发起", "【${entName}】新建合同并发起签约流程,请留意电话短信;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
+
+    /**
+     * 补充合同签约流程已发起
+     */
+    BUYCONTRACT_SUPPLYPROCESS_SEND("BUSINESS", "BUYCONTRACT_SUPPLYPROCESS_SEND", "补充合同签约流程已发起", "【${entName}】新建补充合同并发起签约流程,请留意电话短信;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
+
+    /**
+     * 合同签约成功
+     */
+    BUYCONTRACT_SUCCESS_CONTRACT("BUSINESS", "BUYCONTRACT_SUCCESS_CONTRACT", "合同签约成功", "贵司已成功与【${entName}】签约合同;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
+
+    /**
+     * 合同被完结
+     */
+    BUYCONTRACT_COMPLETE_CONTRACT("BUSINESS", "BUYCONTRACT_COMPLETE_CONTRACT", "合同被完结", "【${entName}】完结了与贵司签约的合同,请及时联系确认;;合同编号:${contract_no},合同名称:${name}", "terminal,ios,android", ""),
 
 
     ;

+ 9 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteUserService.java

@@ -202,4 +202,13 @@ public interface RemoteUserService {
      * @date: 2023/9/4
      */
     List<Long> queryAuthUserList(Long id);
+
+    /**
+     * @param entId 企业id
+     * @return FindEntUserResDto
+     * @desc: 查企业下的员工
+     * @author: czh
+     * @date: 2023/9/20
+     */
+    List<FindEntUserResDto> findEntUser(Long entId);
 }

+ 54 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/FindEntUserResDto.java

@@ -0,0 +1,54 @@
+package com.sckw.system.api.model.dto.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 员工信息
+ * @date 2023/9/20
+ */
+@Data
+public class FindEntUserResDto implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1899047398204218528L;
+
+    /**
+     * 企业id
+     */
+    private Long entId;
+
+    /**
+     * 企业名
+     */
+    private String entName;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 用户账号
+     */
+    private String account;
+
+    /**
+     * 用户姓名
+     */
+    private String name;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    /**
+     * 角色名
+     */
+    private String roleName;
+
+}

+ 10 - 10
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dubbo/RemoteContractServiceImpl.java

@@ -111,17 +111,17 @@ public class RemoteContractServiceImpl implements RemoteContractService {
      */
     @Override
     public Map<Integer, Integer> queryContractValidCount(Long entId) {
-        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(entId);
-        if (Objects.isNull(entCacheResDto)) {
-            return Collections.emptyMap();
-        }
-
         List<Long> entIdList = new ArrayList<>();
-        entIdList.add(entId);
-
-        List<EntCacheResDto> child = entCacheResDto.getChild();
-        if (CollectionUtils.isNotEmpty(child)) {
-            entIdList.addAll(child.stream().map(EntCacheResDto::getId).toList());
+        if (Objects.nonNull(entId)) {
+            EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(entId);
+            if (Objects.isNull(entCacheResDto)) {
+                return Collections.emptyMap();
+            }
+            entIdList.add(entId);
+            List<EntCacheResDto> child = entCacheResDto.getChild();
+            if (CollectionUtils.isNotEmpty(child)) {
+                entIdList.addAll(child.stream().map(EntCacheResDto::getId).toList());
+            }
         }
 
         List<QueryContractValidCountResDto> queryContractValidCountResDtos = kwcContractTradeMapper.queryContractValidCount(entIdList);

+ 122 - 10
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/CommonBusinessService.java

@@ -9,9 +9,14 @@ import com.sckw.contract.factory.AsyncFactory;
 import com.sckw.contract.model.dto.req.EsignGetFlowReqDto;
 import com.sckw.contract.model.dto.res.ESignSubmitResDto;
 import com.sckw.contract.model.entity.KwcContractLogistics;
+import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
 import com.sckw.contract.model.entity.KwcContractTrade;
+import com.sckw.contract.model.entity.KwcContractTradeUnit;
 import com.sckw.contract.model.vo.req.ESignCallBackReqVo;
 import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.enums.ClientTypeEnum;
+import com.sckw.core.model.enums.CooperateTypeEnum;
 import com.sckw.core.utils.AsyncThreadUtils;
 import com.sckw.core.utils.BeanUtils;
 import lombok.RequiredArgsConstructor;
@@ -39,10 +44,9 @@ import com.sckw.stream.model.UserInfo;
 import java.io.*;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 
 @Slf4j
@@ -77,11 +81,50 @@ public class CommonBusinessService {
     @Autowired
     private KwcContractTradeTrackService kwcContractTradeTrackService;
 
+    @Autowired
+    private KwcContractLogisticsUnitService kwcContractLogisticsUnitService;
+
+    @Autowired
+    private KwcContractTradeUnitService kwcContractTradeUnitService;
+
     private  final StreamBridge streamBridge;
 
     @Value("${eSignUrl}")
     private String eSignUrl;
 
+    /**销售合同*/
+    @Value(value = "${jumpUrl.saleSendContract}")
+    private String saleSendContract;
+
+    /**采购合同*/
+    @Value(value = "${jumpUrl.purchaseSendContract}")
+    private String purchaseSendContract;
+
+    /**托运合同*/
+    @Value(value = "${jumpUrl.consignmentSendContract}")
+    private String consignmentSendContract;
+
+    /**承运合同*/
+    @Value(value = "${jumpUrl.acceptanceSendContract}")
+    private String acceptanceSendContract;
+
+    /**app销售合同*/
+    @Value(value = "${jumpUrl.appSaleSendContract}")
+    private String appSaleSendContract;
+
+    /**app采购合同*/
+    @Value(value = "${jumpUrl.appPurchaseSendContract}")
+    private String appPurchaseSendContract;
+
+    /**app托运合同*/
+    @Value(value = "${jumpUrl.appConsignmentSendContract}")
+    private String appConsignmentSendContract;
+
+    /**app承运合同*/
+    @Value(value = "${jumpUrl.appAcceptanceSendContract}")
+    private String appAcceptanceSendContract;
+
+
     /**
      * @return Map
      * @desc: 查企业
@@ -107,6 +150,7 @@ public class CommonBusinessService {
             kwcContractTradeService.approval(reqVo.getContractId(), reqVo.getStatus(), reqVo.getRemark());
             kwcContractTradeTrackService.saveContractTradeTrack(contractId, reqVo.getStatus());
             notifyOrder(contractId, kwcContractTrade.getCreateBy());
+            sendTradePassMessage(kwcContractTrade);
             return;
         }
 
@@ -115,11 +159,73 @@ public class CommonBusinessService {
             kwcContractLogisticsService.approval(reqVo.getContractId(), reqVo.getStatus(), reqVo.getRemark());
             kwcContractLogisticsTrackService.saveContractLogisticsTrack(contractId, reqVo.getStatus());
             notifyOrder(contractId, kwcContractLogistics.getCreateBy());
+            sendLogisticsPassMessage(kwcContractLogistics);
             return;
         }
         throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.CONTRACT_NOT_EXISTS);
     }
 
+
+    public void sendLogisticsPassMessage(KwcContractLogistics kwcContractLogistics) {
+        List<KwcContractLogisticsUnit> kwcContractLogisticsUnits = kwcContractLogisticsUnitService.queryByContractId(kwcContractLogistics.getId());
+        Map<Integer, KwcContractLogisticsUnit> collect = kwcContractLogisticsUnits.stream().collect(Collectors.toMap(KwcContractLogisticsUnit::getUnitType, Function.identity()));
+
+        KwcContractLogisticsUnit kwcContractLogisticsUnit = collect.get(CooperateTypeEnum.CARRIAGE.getCode());
+        Long entId1 = kwcContractLogisticsUnit.getEntId();
+
+        EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntCacheById(entId1);
+        Map<String, Object> map = new HashMap<>();
+        map.put("entName", entCacheResDto1.getFirmName());
+        map.put("contract_no", kwcContractLogistics.getContractNo());
+        map.put("name", kwcContractLogistics.getName());
+        sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractLogistics.getCreateBy()).setEntId(kwcContractLogistics.getEntId())),
+                MessageEnum.SAELCONTRACT_SUCCESS_CONTRACT,
+                map,
+                consignmentSendContract,
+                appConsignmentSendContract);
+
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(entId1);
+        KwcContractLogisticsUnit kwcContractLogisticsUnit2 = collect.get(CooperateTypeEnum.CONSIGN.getCode());
+        EntCacheResDto entCacheResDto2 = remoteSystemService.queryEntCacheById(kwcContractLogisticsUnit2.getEntId());
+        map.put("entName", entCacheResDto2.getFirmName());
+        sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(entCacheResDto.getContactsId()).setEntId(entCacheResDto.getId())),
+                MessageEnum.BUYCONTRACT_SUCCESS_CONTRACT,
+                map,
+                acceptanceSendContract,
+                appAcceptanceSendContract);
+    }
+
+
+
+    public void sendTradePassMessage(KwcContractTrade kwcContractTrade) {
+        List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitService.queryByContractId(kwcContractTrade.getId());
+        Map<Integer, KwcContractTradeUnit> collect = kwcContractTradeUnits.stream().collect(Collectors.toMap(KwcContractTradeUnit::getUnitType, Function.identity()));
+
+        KwcContractTradeUnit kwcContractTradeUnit = collect.get(CooperateTypeEnum.PURCHASER.getCode());
+        Long entId1 = kwcContractTradeUnit.getEntId();
+
+        EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntCacheById(entId1);
+        Map<String, Object> map = new HashMap<>();
+        map.put("entName", entCacheResDto1.getFirmName());
+        map.put("contract_no", kwcContractTrade.getContractNo());
+        map.put("name", kwcContractTrade.getName());
+        sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractTrade.getCreateBy()).setEntId(kwcContractTrade.getEntId())),
+                MessageEnum.SAELCONTRACT_SUCCESS_CONTRACT,
+                map,
+                saleSendContract,
+                appSaleSendContract);
+
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(entId1);
+        KwcContractTradeUnit kwcContractTradeUnit2 = collect.get(CooperateTypeEnum.SUPPLIER.getCode());
+        EntCacheResDto entCacheResDto2 = remoteSystemService.queryEntCacheById(kwcContractTradeUnit2.getEntId());
+        map.put("entName", entCacheResDto2.getFirmName());
+        sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(entCacheResDto.getContactsId()).setEntId(entCacheResDto.getId())),
+                MessageEnum.BUYCONTRACT_SUCCESS_CONTRACT,
+                map,
+                purchaseSendContract,
+                appPurchaseSendContract);
+    }
+
     /**
      * @param contractId 合同id   userId用户id
      * @desc: 通知订单模块更新状态
@@ -155,19 +261,22 @@ public class CommonBusinessService {
      * @author: czh
      * @date: 2023/8/14
      */
-    public void postToEsign(String firstAccount, String secondAccount, Long orgFirst, Long orgSeconId, String contractFile, Long id, String contractName) {
-        AsyncFactory.execute(new AsyncProcess(firstAccount, secondAccount, orgFirst, orgSeconId, contractFile, id, contractName, remoteSystemService, eSignUrl, kwcContractLogisticsMapper, kwcContractTradeMapper));
+    public void postToEsign(String firstAccount, String secondAccount, Long orgFirst, Long orgSeconId, String contractFile, Long id, String contractName, String filePathPrefix) {
+        AsyncFactory.execute(new AsyncProcess(firstAccount, secondAccount, orgFirst, orgSeconId, contractFile, id, contractName, remoteSystemService, eSignUrl, kwcContractLogisticsMapper, kwcContractTradeMapper, filePathPrefix));
     }
 
 
 
 
-    public void sendSystemMessage(List<UserInfo> userInfos, MessageEnum messageEnum, Map<String, Object> map, String msgUrl) {
+    public void sendSystemMessage(List<UserInfo> userInfos, MessageEnum messageEnum, Map<String, Object> map, String msgUrl, String appMsgUrl) {
         SckwMessage msg = new SckwMessage();
+        Map<String, String> msgUrls = new HashMap<>(Global.NUMERICAL_FOUR);
+        msgUrls.put(ClientTypeEnum.pc.getValue(), msgUrl);
+        msgUrls.put(ClientTypeEnum.app.getValue(), appMsgUrl);
         msg.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(messageEnum)
                 .setParams(map)
-                .setMsgUrl(msgUrl)
+                .setMsgUrls(msgUrls)
                 .setUserInfos(userInfos)
                 .setCreateBy(LoginUserHolder.getUserId());
         AsyncThreadUtils.submit(new AsyncProcessMessage(msg, streamBridge));
@@ -199,6 +308,7 @@ public class CommonBusinessService {
         private final String contractFile;
         private final Long id;
         private final String contractName;
+        private final String filePathPrefix;
 
         private RemoteSystemService remoteSystemService;
         private String eSignUrl;
@@ -215,7 +325,8 @@ public class CommonBusinessService {
                             RemoteSystemService remoteSystemService,
                             String eSignUrl,
                             KwcContractLogisticsMapper kwcContractLogisticsMapper,
-                            KwcContractTradeMapper kwcContractTradeMapper) {
+                            KwcContractTradeMapper kwcContractTradeMapper,
+                            String filePathPrefix) {
             this.firstAccount = firstAccount;
             this.secondAccount = secondAccount;
             this.orgFirst = orgFirst;
@@ -227,6 +338,7 @@ public class CommonBusinessService {
             this.eSignUrl = eSignUrl;
             this.kwcContractLogisticsMapper = kwcContractLogisticsMapper;
             this.kwcContractTradeMapper = kwcContractTradeMapper;
+            this.filePathPrefix = filePathPrefix;
         }
 
         @Override
@@ -235,7 +347,7 @@ public class CommonBusinessService {
             JSONArray jsonArray = JSONArray.parseArray(contractFile);
             JSONObject jsonObject = jsonArray.getJSONObject(0);
             String fileName = jsonObject.getString("name");
-            String url = jsonObject.getString("url");
+            String url = filePathPrefix + jsonObject.getString("url");
             File file = getFileByHttpURL(url, fileName);
             List<Long> entIds = new ArrayList<>(2);
             entIds.add(orgFirst);

+ 105 - 44
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java

@@ -1,4 +1,5 @@
 package com.sckw.contract.service;
+
 import java.util.Date;
 
 import com.alibaba.fastjson.JSON;
@@ -50,6 +51,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.io.*;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -73,9 +75,6 @@ public class KwcContractLogisticsService {
     @Autowired
     private KwcContractLogisticsUnitService kwcContractLogisticsUnitService;
 
-    //@Autowired
-    //private RemoteContractServiceImpl remoteContractService;
-
     @Autowired
     private CommonBusinessService commonBusinessService;
 
@@ -88,8 +87,41 @@ public class KwcContractLogisticsService {
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private GoodsInfoService goodsInfoService;
 
-    @Value(value = "${jumpUrl.tradeSendContract}")
-    private String  tradeSendContract;
+    //销售合同
+    @Value(value = "${jumpUrl.saleSendContract}")
+    private String saleSendContract;
+
+    //采购合同
+    @Value(value = "${jumpUrl.purchaseSendContract}")
+    private String purchaseSendContract;
+
+    //托运合同
+    @Value(value = "${jumpUrl.consignmentSendContract}")
+    private String consignmentSendContract;
+
+    //承运合同
+    @Value(value = "${jumpUrl.acceptanceSendContract}")
+    private String acceptanceSendContract;
+
+    //app销售合同
+    @Value(value = "${jumpUrl.appSaleSendContract}")
+    private String appSaleSendContract;
+
+    //app采购合同
+    @Value(value = "${jumpUrl.appPurchaseSendContract}")
+    private String appPurchaseSendContract;
+
+    //app托运合同
+    @Value(value = "${jumpUrl.appConsignmentSendContract}")
+    private String appConsignmentSendContract;
+
+    //app承运合同
+    @Value(value = "${jumpUrl.appAcceptanceSendContract}")
+    private String appAcceptanceSendContract;
+
+
+    @Value(value = "${filePathPrefix}")
+    private String filePathPrefix;
 
     /**
      * @param reqVo 新增入参
@@ -125,24 +157,6 @@ public class KwcContractLogisticsService {
 
         //存单位信息
         kwcContractLogisticsUnitService.saveContractLogisticsUnit(kwcContractLogistics.getId(), baseInfo);
-
-        //发送消息
-        Long entId = kwcContractLogistics.getEntId();
-        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(entId);
-        Map<String, Object> map = new HashMap<>();
-        map.put("entName", entCacheResDto.getFirmName());
-        map.put("contract_no", baseInfo.getContractCode());
-        map.put("name", baseInfo.getContractName());
-        MessageEnum messageEnum;
-        if (Objects.nonNull(reqVo.getPid())) {
-            messageEnum = MessageEnum.SAELCONTRACT_SUBMIT_DATA;//检测到PID时为补充合同
-        }else{
-            messageEnum = MessageEnum.SAELCONTRACT_SEND_CONTRACT;
-        }
-        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractLogistics.getCreateBy()).setEntId(entId)),
-                messageEnum,
-                map,
-                tradeSendContract);
         return contactId;
     }
 
@@ -393,6 +407,7 @@ public class KwcContractLogisticsService {
      * @date: 2023/8/18
      */
     private void sign(ContractLogisticsReqVo reqVo, Long id) {
+        KwcContractLogistics kwcContractLogistics = kwcContractLogisticsMapper.selectById(id);
         if (DictEnum.SIGNING_WAY_1.getValue().equals(String.valueOf(reqVo.getBaseInfo().getSigningWay()))) {
             commonBusinessService.postToEsign(reqVo.getBaseInfo().getCheckedPhone(),
                     reqVo.getBaseInfo().getCarrierPhone(),
@@ -400,7 +415,10 @@ public class KwcContractLogisticsService {
                     reqVo.getBaseInfo().getCarrierEntId(),
                     reqVo.getContractFile(),
                     id,
-                    reqVo.getBaseInfo().getContractName());
+                    reqVo.getBaseInfo().getContractName(),
+                    filePathPrefix);
+            //发送消息
+            sendLogisticsMessage(kwcContractLogistics);
         }
 
         //线下签约直接通过
@@ -409,22 +427,51 @@ public class KwcContractLogisticsService {
             eSignCallBackReqVo.setContractId(id);
             eSignCallBackReqVo.setStatus(ContractStatusEnum.SIGNED.getCode());
             commonBusinessService.approval(eSignCallBackReqVo);
-
             //发送消息
-            KwcContractLogistics kwcContractLogistic = kwcContractLogisticsMapper.selectById(id);
-            Long entId = kwcContractLogistic.getEntId();
-            EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(entId);
-            Map<String, Object> map = new HashMap<>();
-            map.put("entName", entCacheResDto.getFirmName());
-            map.put("contract_no", kwcContractLogistic.getContractNo());
-            map.put("name", kwcContractLogistic.getName());
-            MessageEnum messageEnum = MessageEnum.SAELCONTRACT_COMPLETE_CONTRACT;
-
-            commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractLogistic.getCreateBy()).setEntId(entId)),
-                    messageEnum,
-                    map,
-                    tradeSendContract);
+            sendLogisticsMessage(kwcContractLogistics);
+            commonBusinessService.sendLogisticsPassMessage(kwcContractLogistics);
+        }
+
+    }
+
+
+
+    private void sendLogisticsMessage(KwcContractLogistics kwcContractLogistics) {
+        List<KwcContractLogisticsUnit> kwcContractLogisticsUnits = kwcContractLogisticsUnitService.queryByContractId(kwcContractLogistics.getId());
+        Map<Integer, KwcContractLogisticsUnit> collect = kwcContractLogisticsUnits.stream().collect(Collectors.toMap(KwcContractLogisticsUnit::getUnitType, Function.identity()));
+        KwcContractLogisticsUnit kwcContractLogisticsUnit = collect.get(CooperateTypeEnum.CARRIAGE.getCode());
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(kwcContractLogisticsUnit.getEntId());
+        Map<String, Object> map = new HashMap<>();
+        map.put("entName", entCacheResDto.getFirmName());
+        map.put("contract_no", kwcContractLogistics.getContractNo());
+        map.put("name", kwcContractLogistics.getName());
+        MessageEnum messageEnum;
+        if (Objects.nonNull(kwcContractLogistics.getContractPid())) {
+            messageEnum = MessageEnum.SAELCONTRACT_SUBMIT_DATA;
+        } else {
+            messageEnum = MessageEnum.SAELCONTRACT_SEND_CONTRACT;
         }
+        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractLogistics.getCreateBy()).setEntId(kwcContractLogistics.getEntId())),
+                messageEnum,
+                map,
+                consignmentSendContract,
+                appConsignmentSendContract);
+
+
+        if (Objects.nonNull(kwcContractLogistics.getContractPid())) {
+            messageEnum = MessageEnum.BUYCONTRACT_SUPPLYPROCESS_SEND;
+        } else {
+            messageEnum = MessageEnum.BUYCONTRACT_PROCESS_SEND;
+        }
+
+        EntCacheResDto entCacheResDto2 = remoteSystemService.queryEntTreeById(kwcContractLogisticsUnit.getEntId());
+        EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntCacheById(kwcContractLogistics.getEntId());
+        map.put("entName", entCacheResDto1.getFirmName());
+        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(entCacheResDto2.getContactsId()).setEntId(entCacheResDto2.getId())),
+                messageEnum,
+                map,
+                acceptanceSendContract,
+                appAcceptanceSendContract);
     }
 
 
@@ -548,19 +595,33 @@ public class KwcContractLogisticsService {
 
 
         //发送消息
-        Long entId = kwcContractLogistic.getEntId();
-        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(entId);
+        List<KwcContractLogisticsUnit> kwcContractLogisticsUnits = kwcContractLogisticsUnitService.queryByContractId(kwcContractLogistic.getId());
+        Map<Integer, KwcContractLogisticsUnit> collect = kwcContractLogisticsUnits.stream().collect(Collectors.toMap(KwcContractLogisticsUnit::getUnitType, Function.identity()));
+        KwcContractLogisticsUnit kwcContractLogisticsUnit = collect.get(CooperateTypeEnum.CARRIAGE.getCode());
+        Long entId = kwcContractLogisticsUnit.getEntId();
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(entId);
         Map<String, Object> map = new HashMap<>();
         map.put("entName", entCacheResDto.getFirmName());
         map.put("contract_no", kwcContractLogistic.getContractNo());
         map.put("name", kwcContractLogistic.getName());
-        MessageEnum messageEnum = MessageEnum.SAELCONTRACT_COMPLETE_CONTRACT;
 
-        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractLogistic.getCreateBy()).setEntId(entId)),
-                messageEnum,
+        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractLogistic.getCreateBy()).setEntId(kwcContractLogistic.getEntId())),
+                MessageEnum.SAELCONTRACT_COMPLETE_CONTRACT,
                 map,
-                tradeSendContract);
+                consignmentSendContract,
+                appConsignmentSendContract);
 
+
+        KwcContractLogisticsUnit kwcContractLogisticsUnit2 = collect.get(CooperateTypeEnum.CONSIGN.getCode());
+        Long entId1 = kwcContractLogisticsUnit2.getEntId();
+        EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntCacheById(entId1);
+        EntCacheResDto entCacheResDto2 = remoteSystemService.queryEntTreeById(entId);
+        map.put("entName", entCacheResDto1.getFirmName());
+        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(entCacheResDto2.getContactsId()).setEntId(entCacheResDto2.getId())),
+                MessageEnum.BUYCONTRACT_COMPLETE_CONTRACT,
+                map,
+                acceptanceSendContract,
+                appAcceptanceSendContract);
     }
 
 

+ 4 - 2
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsTrackService.java

@@ -2,6 +2,7 @@ package com.sckw.contract.service;
 
 import java.util.*;
 
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.sckw.contract.dao.KwcContractLogisticsMapper;
 import com.sckw.contract.dao.KwcContractLogisticsTrackMapper;
@@ -52,6 +53,7 @@ public class KwcContractLogisticsTrackService {
     public void saveContractLogisticsTrack(Long contractId, Integer status) {
         KwcContractLogisticsTrack kwcContractLogisticsTrack = new KwcContractLogisticsTrack();
         Date date = new Date();
+        date = DateUtil.offsetSecond(date, Global.NUMERICAL_TWO);
         kwcContractLogisticsTrack.setId(new IdWorker(1L).nextId());
         kwcContractLogisticsTrack.setContractId(contractId);
         kwcContractLogisticsTrack.setType(status);
@@ -113,9 +115,9 @@ public class KwcContractLogisticsTrackService {
             ContractTrackResVo contractTrackResVo = new ContractTrackResVo();
             contractTrackResVo.setCreateTime(item.getCreateTime());
             contractTrackResVo.setTrackName(ContractTrackEnum.getName(item.getType()).getName());
-            if (ContractTrackEnum.SIGNING.getCode() == item.getType()) {
+            if (item.getType().equals(ContractTrackEnum.SIGNING.getCode())) {
                 contractTrackResVo.setEntName(initiateEntName);
-            } else if (ContractTrackEnum.SIGNED.getCode() == item.getType()) {
+            } else if (item.getType().equals(ContractTrackEnum.SIGNED.getCode())) {
                 contractTrackResVo.setEntName(targetEntName);
             } else {
                 UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(item.getCreateBy());

+ 101 - 36
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java

@@ -21,6 +21,7 @@ import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.ContractStatusEnum;
 import com.sckw.core.model.enums.ContractTrackEnum;
+import com.sckw.core.model.enums.CooperateTypeEnum;
 import com.sckw.core.model.enums.EntTypeEnum;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
@@ -49,6 +50,7 @@ import com.sckw.system.api.RemoteSystemService;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import com.sckw.contract.dao.KwcContractTradeMapper;
@@ -87,10 +89,41 @@ public class KwcContractTradeService {
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private TradeOrderInfoService tradeOrderInfoService;
 
+    /**销售合同*/
     @Value(value = "${jumpUrl.saleSendContract}")
     private String saleSendContract;
 
+    /**采购合同*/
+    @Value(value = "${jumpUrl.purchaseSendContract}")
+    private String purchaseSendContract;
 
+    /**托运合同*/
+    @Value(value = "${jumpUrl.consignmentSendContract}")
+    private String consignmentSendContract;
+
+    /**承运合同*/
+    @Value(value = "${jumpUrl.acceptanceSendContract}")
+    private String acceptanceSendContract;
+
+    /**app销售合同*/
+    @Value(value = "${jumpUrl.appSaleSendContract}")
+    private String appSaleSendContract;
+
+    /**app采购合同*/
+    @Value(value = "${jumpUrl.appPurchaseSendContract}")
+    private String appPurchaseSendContract;
+
+    /**app托运合同*/
+    @Value(value = "${jumpUrl.appConsignmentSendContract}")
+    private String appConsignmentSendContract;
+
+    /**app承运合同*/
+    @Value(value = "${jumpUrl.appAcceptanceSendContract}")
+    private String appAcceptanceSendContract;
+
+
+    @Value(value = "${filePathPrefix}")
+    private String filePathPrefix;
 
     /**
      * @return PageResult
@@ -198,23 +231,6 @@ public class KwcContractTradeService {
 
         //存单位信息
         kwcContractTradeUnitService.saveContractTradeUnit(contactId, baseInfo);
-        //发送消息
-        Long entId = kwcContractTrade.getEntId();
-        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(entId);
-        Map<String, Object> map = new HashMap<>();
-        map.put("entName", entCacheResDto.getFirmName());
-        map.put("contract_no", baseInfo.getContractCode());
-        map.put("name", baseInfo.getContractName());
-        MessageEnum messageEnum;
-        if (Objects.nonNull(reqVo.getPid())) {
-            messageEnum = MessageEnum.SAELCONTRACT_SUBMIT_DATA;//检测到PID时为补充合同
-        }else{
-            messageEnum = MessageEnum.SAELCONTRACT_SEND_CONTRACT;
-        }
-        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractTrade.getCreateBy()).setEntId(entId)),
-                messageEnum,
-                map,
-                saleSendContract);
         return contactId;
     }
 
@@ -459,6 +475,7 @@ public class KwcContractTradeService {
      * @date: 2023/8/18
      */
     private void sign(ContractTradeReqVo reqVo, Long id) {
+        KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(id);
         if (DictEnum.SIGNING_WAY_1.getValue().equals(String.valueOf(reqVo.getBaseInfo().getSigningWay()))) {
             commonBusinessService.postToEsign(reqVo.getBaseInfo().getProvidePhone(),
                     reqVo.getBaseInfo().getPurchasePhone(),
@@ -466,7 +483,9 @@ public class KwcContractTradeService {
                     reqVo.getBaseInfo().getPurchaseEntId(),
                     reqVo.getContractFile(),
                     id,
-                    reqVo.getBaseInfo().getContractName());
+                    reqVo.getBaseInfo().getContractName(),
+                    filePathPrefix);
+            sendTradeMessage(kwcContractTrade);
         }
 
         //线下签约直接通过
@@ -476,22 +495,53 @@ public class KwcContractTradeService {
             eSignCallBackReqVo.setStatus(ContractStatusEnum.SIGNED.getCode());
             commonBusinessService.approval(eSignCallBackReqVo);
             //发送消息
-            Long entId = reqVo.getBaseInfo().getProvideEntId();
-            EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(entId);
-            Map<String, Object> map = new HashMap<>();
-            map.put("entName", entCacheResDto.getFirmName());
-            map.put("contract_no", reqVo.getBaseInfo().getContractCode());
-            map.put("name", reqVo.getBaseInfo().getContractName());
-            MessageEnum messageEnum = MessageEnum.SAELCONTRACT_SUCCESS_CONTRACT;
-            KwcContractTrade kwcContractTrade = kwcContractTradeMapper.selectById(id);
-            commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractTrade.getCreateBy()).setEntId(entId)),
-                    messageEnum,
-                    map,
-                    saleSendContract);
+            sendTradeMessage(kwcContractTrade);
+            commonBusinessService.sendTradePassMessage(kwcContractTrade);
         }
     }
 
 
+    private void sendTradeMessage(KwcContractTrade kwcContractTrade) {
+        List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitService.queryByContractId(kwcContractTrade.getId());
+        Map<Integer, KwcContractTradeUnit> collect = kwcContractTradeUnits.stream().collect(Collectors.toMap(KwcContractTradeUnit::getUnitType, Function.identity()));
+        KwcContractTradeUnit kwcContractTradeUnit = collect.get(CooperateTypeEnum.PURCHASER.getCode());
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(kwcContractTradeUnit.getEntId());
+        Map<String, Object> map = new HashMap<>();
+        map.put("entName", entCacheResDto.getFirmName());
+        map.put("contract_no", kwcContractTrade.getContractNo());
+        map.put("name", kwcContractTrade.getName());
+        MessageEnum messageEnum;
+        if (Objects.nonNull(kwcContractTrade.getContractPid())) {
+            messageEnum = MessageEnum.SAELCONTRACT_SUBMIT_DATA;
+        } else {
+            messageEnum = MessageEnum.SAELCONTRACT_SEND_CONTRACT;
+        }
+        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractTrade.getCreateBy()).setEntId(kwcContractTrade.getEntId())),
+                messageEnum,
+                map,
+                saleSendContract,
+                appSaleSendContract);
+
+
+        if (Objects.nonNull(kwcContractTrade.getContractPid())) {
+            messageEnum = MessageEnum.BUYCONTRACT_SUPPLYPROCESS_SEND;
+        } else {
+            messageEnum = MessageEnum.BUYCONTRACT_PROCESS_SEND;
+        }
+
+        EntCacheResDto entCacheResDto2 = remoteSystemService.queryEntTreeById(kwcContractTradeUnit.getEntId());
+        KwcContractTradeUnit kwcContractTradeUnit2 = collect.get(CooperateTypeEnum.SUPPLIER.getCode());
+        EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntCacheById(kwcContractTradeUnit2.getEntId());
+        map.put("entName", entCacheResDto1.getFirmName());
+        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(entCacheResDto2.getContactsId()).setEntId(entCacheResDto2.getId())),
+                messageEnum,
+                map,
+                purchaseSendContract,
+                appPurchaseSendContract);
+    }
+
+
+
     /**
      * @param id 合同id
      * @desc: 更新合同为发起
@@ -617,18 +667,33 @@ public class KwcContractTradeService {
         tradeOrderInfoService.contractSignCompleted(contractSignCompletedParam);
 
         //发送消息
-        Long entId = kwcContractTrade.getEntId();
-        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(entId);
+        List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitService.queryByContractId(kwcContractTrade.getId());
+        Map<Integer, KwcContractTradeUnit> collect = kwcContractTradeUnits.stream().collect(Collectors.toMap(KwcContractTradeUnit::getUnitType, Function.identity()));
+        KwcContractTradeUnit kwcContractTradeUnit = collect.get(CooperateTypeEnum.CARRIAGE.getCode());
+        Long entId = kwcContractTradeUnit.getEntId();
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(entId);
         Map<String, Object> map = new HashMap<>();
         map.put("entName", entCacheResDto.getFirmName());
         map.put("contract_no", kwcContractTrade.getContractNo());
         map.put("name", kwcContractTrade.getName());
-        MessageEnum messageEnum = MessageEnum.SAELCONTRACT_COMPLETE_CONTRACT;
 
-        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractTrade.getCreateBy()).setEntId(entId)),
-                messageEnum,
+        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(kwcContractTrade.getCreateBy()).setEntId(kwcContractTrade.getEntId())),
+                MessageEnum.SAELCONTRACT_COMPLETE_CONTRACT,
+                map,
+                saleSendContract,
+                appSaleSendContract);
+
+
+        KwcContractTradeUnit kwcContractTradeUnit2 = collect.get(CooperateTypeEnum.CONSIGN.getCode());
+        Long entId1 = kwcContractTradeUnit2.getEntId();
+        EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntCacheById(entId1);
+        EntCacheResDto entCacheResDto2 = remoteSystemService.queryEntTreeById(entId);
+        map.put("entName", entCacheResDto1.getFirmName());
+        commonBusinessService.sendSystemMessage(Collections.singletonList(new UserInfo().setUserId(entCacheResDto2.getContactsId()).setEntId(entCacheResDto2.getId())),
+                MessageEnum.BUYCONTRACT_COMPLETE_CONTRACT,
                 map,
-                saleSendContract);
+                purchaseSendContract,
+                appPurchaseSendContract);
     }
 
 

+ 3 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeTrackService.java

@@ -1,5 +1,7 @@
 package com.sckw.contract.service;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.sckw.contract.dao.KwcContractLogisticsTrackMapper;
 import com.sckw.contract.dao.KwcContractTradeMapper;
@@ -44,6 +46,7 @@ public class KwcContractTradeTrackService {
 
     public void saveContractTradeTrack(Long contractId, Integer status) {
         Date date = new Date();
+        date = DateUtil.offsetSecond(date, Global.NUMERICAL_TWO);
         KwcContractTradeTrack kwcContractTradeTrack = new KwcContractTradeTrack();
         kwcContractTradeTrack.setId(new IdWorker(1L).nextId());
         kwcContractTradeTrack.setContractId(contractId);

+ 11 - 6
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/task/SynchronousContractStatusTask.java

@@ -8,6 +8,7 @@ import com.sckw.contract.dao.KwcContractLogisticsMapper;
 import com.sckw.contract.dao.KwcContractTradeMapper;
 import com.sckw.contract.model.entity.KwcContractLogistics;
 import com.sckw.contract.model.entity.KwcContractTrade;
+import com.sckw.contract.model.vo.req.ESignCallBackReqVo;
 import com.sckw.contract.service.CommonBusinessService;
 import com.sckw.core.model.enums.ContractStatusEnum;
 import com.sckw.core.utils.CollectionUtils;
@@ -69,9 +70,11 @@ public class SynchronousContractStatusTask {
                     //合同签署状态 0 - 草稿  1 - 签署中 2 - 完成   3 - 撤销   5 - 过期(签署截至日期到期后触发)  - 拒签
                     Integer signFlowStatus = data.getInteger("signFlowStatus");
                     if (signFlowStatus.equals(2)) {
-                        kwcContractTrade.setStatus(ContractStatusEnum.SIGNED.getCode());
-                        kwcContractTradeMapper.updateById(kwcContractTrade);
-                        commonBusinessService.notifyOrder(kwcContractTrade.getId(), kwcContractTrade.getCreateBy());
+                        ESignCallBackReqVo eSignCallBackReqVo = new ESignCallBackReqVo();
+                        eSignCallBackReqVo.setContractId(kwcContractTrade.getId());
+                        eSignCallBackReqVo.setStatus(ContractStatusEnum.SIGNED.getCode());
+                        eSignCallBackReqVo.setRemark("定时任务轮询更新");
+                        commonBusinessService.approval(eSignCallBackReqVo);
                     }
                 }
             }
@@ -97,9 +100,11 @@ public class SynchronousContractStatusTask {
                     //合同签署状态 0 - 草稿  1 - 签署中 2 - 完成   3 - 撤销   5 - 过期(签署截至日期到期后触发)  - 拒签
                     Integer signFlowStatus = data.getInteger("signFlowStatus");
                     if (signFlowStatus.equals(2)) {
-                        kwcContractLogistics.setStatus(ContractStatusEnum.SIGNED.getCode());
-                        kwcContractLogisticsMapper.updateById(kwcContractLogistics);
-                        commonBusinessService.notifyOrder(kwcContractLogistics.getId(), kwcContractLogistics.getCreateBy());
+                        ESignCallBackReqVo eSignCallBackReqVo = new ESignCallBackReqVo();
+                        eSignCallBackReqVo.setContractId(kwcContractLogistics.getId());
+                        eSignCallBackReqVo.setStatus(ContractStatusEnum.SIGNED.getCode());
+                        eSignCallBackReqVo.setRemark("定时任务轮询更新");
+                        commonBusinessService.approval(eSignCallBackReqVo);
                     }
                 }
             }

+ 4 - 5
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/WorkbenchController.java

@@ -4,11 +4,10 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.payment.model.vo.req.FinanceCount;
 import com.sckw.payment.service.WorkbenchService;
 import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 工作台
@@ -29,8 +28,8 @@ public class WorkbenchController {
      *
      * @return
      */
-    @GetMapping("finance")
-    public HttpResult finance(FinanceCount financeCount) {
+    @PostMapping("finance")
+    public HttpResult finance(@Valid @RequestBody FinanceCount financeCount) {
         return HttpResult.ok(workbenchService.financeCount(financeCount));
     }
 

+ 3 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpSettlementRecordMapper.java

@@ -16,5 +16,7 @@ import java.util.List;
 public interface KwpSettlementRecordMapper extends BaseMapper<KwpSettlementRecord> {
     void insertBatch(@Param("list") List<KwpSettlementRecord> list);
 
-    List<SettlementRecord> countByDay(@Param("time") List<String> time, @Param("entId")Long entId);
+    List<SettlementRecord> countByDay(@Param("timeAll") List<String> timeAll, @Param("time") List<String> time, @Param("entId") Long entId);
+
+    List<SettlementRecord> countMonth(@Param("timeAll") List<String> timeAll, @Param("time") List<String> time, @Param("entId") Long entId);
 }

+ 27 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/Factor.java

@@ -0,0 +1,27 @@
+package com.sckw.payment.model.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 统计因子
+ *
+ * @author xucaiqin
+ * @date 2023-09-20 09:03:38
+ */
+@Getter
+@Setter
+public class Factor {
+
+    /**
+     * 统计因子 1,2,3
+     */
+    @NotBlank(message = "统计因子1不能为空")
+    private String factorOne;
+    /**
+     * 统计因子 1,2,3
+     */
+    @NotBlank(message = "统计因子2不能为空")
+    private String factorTwo;
+}

+ 4 - 11
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/SettlementRecord.java

@@ -1,10 +1,8 @@
 package com.sckw.payment.model.vo;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.math.BigDecimal;
-import java.time.LocalDate;
 
 /**
  * 结算统计
@@ -14,10 +12,6 @@ import java.time.LocalDate;
  */
 @Data
 public class SettlementRecord {
-    /**
-     * 企业id
-     */
-    private Long entId;
 
     /**
      * 总应收金额
@@ -25,17 +19,17 @@ public class SettlementRecord {
     private BigDecimal totalReceiveMoney;
 
     /**
-     * 待收金额
+     * 待收金额(未回款金额)
      */
     private BigDecimal exactMoney;
 
     /**
-     * 已收金额(累加金额)
+     * 已收金额(回款金额)
      */
     private BigDecimal receivedMoney;
 
     /**
-     * 逾期待收金额
+     * 逾期待收金额(逾期未回款金额)
      */
     private BigDecimal overdueExactMoney;
 
@@ -62,6 +56,5 @@ public class SettlementRecord {
     /**
      * 创建日期
      */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    private LocalDate createTime;
+    private String createTime;
 }

+ 2 - 10
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/req/FinanceCount.java

@@ -1,12 +1,10 @@
 package com.sckw.payment.model.vo.req;
 
+import com.sckw.payment.model.dto.Factor;
 import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
 import lombok.Getter;
 import lombok.Setter;
 
-import java.util.List;
-
 /**
  * 财务统计
  *
@@ -15,7 +13,7 @@ import java.util.List;
  */
 @Getter
 @Setter
-public class FinanceCount {
+public class FinanceCount extends Factor {
     /**
      * 周期维度 1-日、2-周、3-月 4-年
      */
@@ -31,11 +29,5 @@ public class FinanceCount {
      */
 //    @NotBlank(message = "周期维度不能为空")
     private String endTime;
-    /**
-     * 统计因子
-     */
-    @Size(message = "统计因子不能为空", min = 1)
-    @NotNull(message = "统计因子不能为空")
-    private List<Integer> factor;
 
 }

+ 18 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/EChartsVo.java

@@ -0,0 +1,18 @@
+package com.sckw.payment.model.vo.res;
+
+import com.sckw.payment.model.dto.Factor;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author xucaiqin
+ * @date 2023-09-20 08:44:40
+ */
+@Getter
+@Setter
+public class EChartsVo extends Factor {
+    /**
+     * 创建日期
+     */
+    private String createTime;
+}

+ 10 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementRecordService.java

@@ -2,6 +2,7 @@ package com.sckw.payment.service;
 
 import com.sckw.payment.dao.KwpSettlementRecordMapper;
 import com.sckw.payment.model.vo.SettlementRecord;
+import com.sckw.payment.utils.DateTimeUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -21,7 +22,14 @@ public class KwpSettlementRecordService {
     private final KwpSettlementRecordMapper kwpSettlementRecordMapper;
 
 
-    public List<SettlementRecord> financeCount(List<String> financeCount, Long entId) {
-        return kwpSettlementRecordMapper.countByDay(financeCount,entId);
+    public List<SettlementRecord> financeCount(List<String> financeCount, Long entId, Integer circle) {
+        //3-月
+        if (circle == 3) {
+            List<String> timeAll = DateTimeUtil.generateMonthRange(DateTimeUtil.parseYMD(financeCount.get(0)), DateTimeUtil.parseYMD(financeCount.get(1)));
+            return kwpSettlementRecordMapper.countMonth(timeAll, financeCount, entId);
+        } else {
+            List<String> timeAll = DateTimeUtil.generateDateRange(DateTimeUtil.parseYMD(financeCount.get(0)), DateTimeUtil.parseYMD(financeCount.get(1)));
+            return kwpSettlementRecordMapper.countByDay(timeAll, financeCount, entId);
+        }
     }
 }

+ 52 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WorkbenchService.java

@@ -1,16 +1,22 @@
 package com.sckw.payment.service;
 
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.payment.model.vo.SettlementRecord;
 import com.sckw.payment.model.vo.req.FinanceCount;
+import com.sckw.payment.model.vo.res.EChartsVo;
 import com.sckw.payment.utils.DateTimeUtil;
+import com.sckw.payment.utils.DecimalUtils;
 import jakarta.annotation.Resource;
-import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 工作台
@@ -20,7 +26,6 @@ import java.util.List;
  */
 @Slf4j
 @Service
-@RequiredArgsConstructor
 public class WorkbenchService {
 
     @Resource
@@ -33,7 +38,7 @@ public class WorkbenchService {
 
         //时间参数为空,按照默认维度统计
         if (StringUtils.isBlank(financeCount.getStartTime()) && StringUtils.isBlank(financeCount.getEndTime())) {
-            //按照周期维度生成时间段
+            //按照周期维度生成时间段2
             if (circle == 1) {
                 //从今天倒推15天
                 time.add(DateTimeUtil.getComputeDaysStr(-14));
@@ -54,6 +59,49 @@ public class WorkbenchService {
             }
         }
         Long entId = LoginUserHolder.getEntId();
-        return kwpSettlementRecordService.financeCount(time,entId);
+        DecimalFormat df = new DecimalFormat("0.00");
+        //获取数据,按照统计因子进行处理,并转换成万元
+        List<SettlementRecord> settlementRecords = kwpSettlementRecordService.financeCount(time, entId, circle);
+        return settlementRecords.stream().map(a -> {
+            EChartsVo eChartsVo = new EChartsVo();
+            eChartsVo.setCreateTime(a.getCreateTime());
+            switch (financeCount.getFactorOne()) {
+                case "1" ->
+                        eChartsVo.setFactorOne(df.format(a.getReceivedMoney().divide(new BigDecimal("10000.0"), 2, RoundingMode.HALF_UP)));
+                case "2" ->
+                        eChartsVo.setFactorOne(df.format(a.getExactMoney().divide(new BigDecimal("10000.0"), 2, RoundingMode.HALF_UP)));
+                case "3" ->
+                        eChartsVo.setFactorOne(df.format(a.getOverdueExactMoney().divide(new BigDecimal("10000.0"), 2, RoundingMode.HALF_UP)));
+                case "4" -> {
+                    BigDecimal overdueExactMoney = a.getOverdueExactMoney();
+                    //总应收金额
+                    BigDecimal totalReceiveMoney = a.getTotalReceiveMoney();
+                    if (totalReceiveMoney.compareTo(new BigDecimal("0.0")) <= 0) {
+                        eChartsVo.setFactorOne("0.00%");
+                    } else {
+                        eChartsVo.setFactorOne(DecimalUtils.financePercent(overdueExactMoney, totalReceiveMoney));
+                    }
+                }
+            }
+            switch (financeCount.getFactorTwo()) {
+                case "1" ->
+                        eChartsVo.setFactorTwo(df.format(a.getReceivedMoney().divide(new BigDecimal("10000.0"), 2, RoundingMode.HALF_UP)));
+                case "2" ->
+                        eChartsVo.setFactorTwo(df.format(a.getExactMoney().divide(new BigDecimal("10000.0"), 2, RoundingMode.HALF_UP)));
+                case "3" ->
+                        eChartsVo.setFactorTwo(df.format(a.getOverdueExactMoney().divide(new BigDecimal("10000.0"), 2, RoundingMode.HALF_UP)));
+                case "4" ->{
+                    BigDecimal overdueExactMoney = a.getOverdueExactMoney();
+                    //总应收金额
+                    BigDecimal totalReceiveMoney = a.getTotalReceiveMoney();
+                    if (totalReceiveMoney.compareTo(new BigDecimal("0.0")) <= 0) {
+                        eChartsVo.setFactorTwo("0.00%");
+                    } else {
+                        eChartsVo.setFactorTwo(DecimalUtils.financePercent(overdueExactMoney, totalReceiveMoney));
+                    }
+                }
+            }
+            return eChartsVo;
+        }).collect(Collectors.toList());
     }
 }

+ 39 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/utils/DateTimeUtil.java

@@ -5,7 +5,10 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAdjusters;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @description: 时间工具类
@@ -15,10 +18,12 @@ import java.time.temporal.TemporalAdjusters;
  **/
 public class DateTimeUtil {
     public static final String YMD = "yyyy-MM-dd";
+    public static final String YM = "yyyy-MM";
     public static final String HMS = "HH:mm:ss";
     public static final DateTimeFormatter YYYY_MM_DD_HH_MM_SS = DateTimeFormatter.ofPattern(YMD + " " + HMS);
     public static final DateTimeFormatter YYYYMMDDHHMMSS = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
     public static final DateTimeFormatter YYYY_MM_DD = DateTimeFormatter.ofPattern(YMD);
+    public static final DateTimeFormatter YYYY_MM = DateTimeFormatter.ofPattern(YM);
     public static final DateTimeFormatter HH_MM_SS = DateTimeFormatter.ofPattern(HMS);
 
     public static LocalDateTime parse(String date) {
@@ -39,6 +44,10 @@ public class DateTimeUtil {
         return YYYY_MM_DD_HH_MM_SS.format(localDateTime);
     }
 
+    public static String formatYM(LocalDate localDate) {
+        return YYYY_MM.format(localDate);
+    }
+
     public static String formatYMD(LocalDate localDate) {
         return YYYY_MM_DD.format(localDate);
     }
@@ -242,6 +251,36 @@ public class DateTimeUtil {
         return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
     }
 
+
+    public static List<String> generateDateRange(LocalDate startDate, LocalDate endDate) {
+        List<String> dateRange = new ArrayList<>();
+        LocalDate currentDate = startDate;
+
+        while (!currentDate.isAfter(endDate)) {
+            dateRange.add(formatYMD(currentDate));
+            currentDate = currentDate.plus(1, ChronoUnit.DAYS); // 增加一天
+        }
+        return dateRange;
+    }
+
+    /**
+     * 根据开始时间结束时间 格式化时间范围内的时间
+     *
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    public static List<String> generateMonthRange(LocalDate startDate, LocalDate endDate) {
+        List<String> dateRange = new ArrayList<>();
+        LocalDate currentDate = startDate;
+
+        while (!currentDate.isAfter(endDate)) {
+            dateRange.add(formatYM(currentDate));
+            currentDate = currentDate.plus(1, ChronoUnit.MONTHS);
+        }
+        return dateRange;
+    }
+
     public static void main(String[] args) {
 
         System.out.println(parse("2023-12-11"));

+ 18 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/utils/DecimalUtils.java

@@ -34,4 +34,22 @@ public class DecimalUtils {
         }
         return df.format(dividend.divide(divisor, 6, RoundingMode.HALF_UP).multiply(new BigDecimal("100.0")).abs()) + "%";
     }
+
+    public static String financePercent(BigDecimal dividend, BigDecimal divisor) {
+        if (Objects.isNull(dividend)) {
+            dividend = new BigDecimal("0.00");
+        }
+        //除数为0
+        if (Objects.isNull(divisor)) {
+            divisor = new BigDecimal("0.00");
+        }
+
+        if (BigDecimal.ZERO.compareTo(dividend) != 0 && BigDecimal.ZERO.compareTo(divisor) == 0) {
+            return "100.00%";
+        }
+        if (BigDecimal.ZERO.compareTo(dividend) == 0 && BigDecimal.ZERO.compareTo(divisor) == 0) {
+            return "0.00%";
+        }
+        return df.format(dividend.divide(divisor, 6, RoundingMode.HALF_UP).multiply(new BigDecimal("100.0")).abs()) + "%";
+    }
 }

+ 86 - 12
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementRecordMapper.xml

@@ -58,19 +58,92 @@
         </foreach>
     </insert>
     <select id="countByDay" resultType="com.sckw.payment.model.vo.SettlementRecord">
-        select sum(ksr.total_pay_money)     totalPayMoney,
-               sum(ksr.exact_money)         exactMoney,
-               sum(ksr.received_money)      receivedMoney,
-               sum(ksr.overdue_exact_money) overdueExactMoney,
-               sum(ksr.total_pay_money)     totalPayMoney,
-               sum(ksr.unpaid_money)        unpaidMoney,
-               sum(ksr.paid_money)          paidMoney,
-               sum(ksr.overdue_paid_money)  overduePaidMoney
-        from kwp_settlement_record ksr
+        SELECT temp.date                               createTime,
+               ifnull(sum(ksr.total_receive_money), 0) totalReceiveMoney,
+               ifnull(sum(ksr.exact_money), 0)         exactMoney,
+               ifnull(sum(ksr.received_money), 0)      receivedMoney,
+               ifnull(sum(ksr.overdue_exact_money), 0) overdueExactMoney,
+               ifnull(sum(ksr.total_pay_money), 0)     totalPayMoney,
+               ifnull(sum(ksr.unpaid_money), 0)        unpaidMoney,
+               ifnull(sum(ksr.paid_money), 0)          paidMoney,
+               ifnull(sum(ksr.overdue_paid_money), 0)  overduePaidMoney
+        FROM (
+        <foreach collection="timeAll" item="date" separator="UNION ALL">
+            SELECT #{date} AS date
+        </foreach>
+        ) AS temp
+            left join
+        kwp_settlement_record ksr on temp.date = ksr.create_time and ksr.ent_id = #{entId,jdbcType=BIGINT}
+        <where>
+            <if test="time != null and time.size() != 0">
+                temp.date between
+                <foreach collection="time" open=" " separator="and" close=" " item="item">
+                    #{item,jdbcType=TIMESTAMP}
+                </foreach>
+            </if>
+        </where>
+        group by temp.date
+        order by temp.date
+    </select>
+    <!--原方案 按月统计-->
+    <select id="countMonth2" resultType="com.sckw.payment.model.vo.SettlementRecord">
+        SELECT temp.date                               createTime,
+               ifnull(sum(ksr.total_receive_money), 0) totalReceiveMoney,
+               ifnull(sum(ksr.exact_money), 0)         exactMoney,
+               ifnull(sum(ksr.received_money), 0)      receivedMoney,
+               ifnull(sum(ksr.overdue_exact_money), 0) overdueExactMoney,
+               ifnull(sum(ksr.total_pay_money), 0)     totalPayMoney,
+               ifnull(sum(ksr.unpaid_money), 0)        unpaidMoney,
+               ifnull(sum(ksr.paid_money), 0)          paidMoney,
+               ifnull(sum(ksr.overdue_paid_money), 0)  overduePaidMoney
+        FROM (
+        <foreach collection="timeAll" item="date" separator="UNION ALL">
+            SELECT #{date} AS date
+        </foreach>
+        ) AS temp
+            left join
+        kwp_settlement_record ksr
+        on temp.date = date_format(ksr.create_time, '%Y-%m') and ksr.ent_id = #{entId,jdbcType=BIGINT}
         <where>
-            <if test="entId != null">
-                and ksr.ent_id = #{entId,jdbcType=BIGINT}
+            <if test="time != null and time.size() != 0">
+                temp.date between
+                <foreach collection="time" open=" " separator="and" close=" " item="item">
+                    #{item,jdbcType=TIMESTAMP}
+                </foreach>
             </if>
+        </where>
+        group by temp.date
+        order by temp.date
+    </select>
+    <!--    支持时间范围筛选的按月统计-->
+    <select id="countMonth" resultType="com.sckw.payment.model.vo.SettlementRecord">
+        select tmpd.createTime,
+               tmpd.totalReceiveMoney,
+               tmpd.exactMoney,
+               tmpd.receivedMoney,
+               tmpd.overdueExactMoney,
+               tmpd.totalPayMoney,
+               tmpd.unpaidMoney,
+               tmpd.paidMoney,
+               tmpd.overduePaidMoney
+        FROM (
+        <foreach collection="timeAll" item="date" separator="UNION ALL">
+            SELECT #{date} AS date
+        </foreach>
+        ) AS temp
+            left join
+        (SELECT date_format(ksr.create_time, '%Y-%m')   createTime,
+                ifnull(sum(ksr.total_receive_money), 0) totalReceiveMoney,
+                ifnull(sum(ksr.exact_money), 0)         exactMoney,
+                ifnull(sum(ksr.received_money), 0)      receivedMoney,
+                ifnull(sum(ksr.overdue_exact_money), 0) overdueExactMoney,
+                ifnull(sum(ksr.total_pay_money), 0)     totalPayMoney,
+                ifnull(sum(ksr.unpaid_money), 0)        unpaidMoney,
+                ifnull(sum(ksr.paid_money), 0)          paidMoney,
+                ifnull(sum(ksr.overdue_paid_money), 0)  overduePaidMoney
+         FROM kwp_settlement_record ksr
+        <where>
+            ksr.ent_id = #{entId,jdbcType=BIGINT}
             <if test="time != null and time.size() != 0">
                 and ksr.create_time between
                 <foreach collection="time" open=" " separator="and" close=" " item="item">
@@ -78,6 +151,7 @@
                 </foreach>
             </if>
         </where>
-        group by ksr.create_time
+        group by date_format(ksr.create_time, '%Y-%m')) as tmpd on temp.date = tmpd.createTime
+        order by temp.date
     </select>
 </mapper>

+ 13 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteUserServiceImpl.java

@@ -17,7 +17,9 @@ import com.sckw.system.dao.KwsEnterpriseDao;
 import com.sckw.system.dao.KwsUserLoginDao;
 import com.sckw.system.dao.SysDictDao;
 import com.sckw.system.model.*;
+import com.sckw.system.model.pojo.FindEntUserPojo;
 import com.sckw.system.model.pojo.FindMenuTreePojo;
+import com.sckw.system.model.vo.req.FindListReqVo;
 import com.sckw.system.model.vo.req.ForgetPasswordReqVo;
 import com.sckw.system.model.vo.res.KwsMenuResVo;
 import com.sckw.system.model.vo.res.KwsUserResVo;
@@ -223,6 +225,17 @@ public class RemoteUserServiceImpl implements RemoteUserService {
         return list;
     }
 
+    @Override
+    public List<FindEntUserResDto> findEntUser(Long entId) {
+        FindListReqVo findListReqVo = new FindListReqVo();
+        findListReqVo.setId(entId);
+        List<FindEntUserPojo> entUser = kwsEnterpriseService.findEntUser(findListReqVo);
+        if(CollectionUtils.isEmpty(entUser)) {
+            return Collections.emptyList();
+        }
+        return BeanUtils.copyToList(entUser,FindEntUserResDto.class);
+    }
+
 
     /**
      * 根据用户名查用户信息

+ 2 - 2
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/CommonService.java

@@ -75,11 +75,11 @@ public class CommonService {
                 String firmName = kwsEnterprise.getFirmName();
                 String phone1 = kwsEnterprise.getPhone();
                 if (entName.equals(firmName)) {
-                    throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ENT_EXISTS);
+                    throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.ENT_EXISTS);
                 }
 
                 if (StringUtils.isNotBlank(phone) && phone.equals(phone1)) {
-                    throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ACCOUNT_EXISTS);
+                    throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ACCOUNT_EXISTS);
                 }
             }
         }

+ 1 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java

@@ -157,7 +157,7 @@ public class KwsEnterpriseService {
         List<KwsEnterprise> list = kwsEnterpriseDao.checkEntRepeat(reqVo.getFirmName(), "");
         if (CollectionUtils.isNotEmpty(list)) {
             if (!list.get(0).getId().equals(kwsEnterprise.getId())) {
-                throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ENT_EXISTS);
+                throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ENT_EXISTS);
             }
         }
         SysArea sysArea = sysAreaDao.selectById(reqVo.getCityCode());

+ 2 - 2
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java

@@ -266,7 +266,7 @@ public class KwsUserService {
     public void deleteByKey(String ids) {
         /*1.数据校验*/
         if (StringUtils.isBlank(ids)) {
-            throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ACCOUNT_MISSING);
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ACCOUNT_MISSING);
         }
 
         String[] idArray = ids.split(",");
@@ -515,7 +515,7 @@ public class KwsUserService {
      */
     public void checkAccountValid(String account, Integer systemType) {
         if (Objects.nonNull(getUserByAccount(account, systemType))) {
-            throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ACCOUNT_EXISTS);
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ACCOUNT_EXISTS);
         }
     }
 

+ 3 - 3
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/SysDictService.java

@@ -64,7 +64,7 @@ public class SysDictService {
         sysDictType.setType(type);
         List<SysDictType> list = sysDictTypeDao.select(sysDictType);
         if (!CollectionUtils.isEmpty(list)) {
-            throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.DICTTYPE_EXISTS);
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.DICTTYPE_EXISTS);
         }
     }
 
@@ -110,7 +110,7 @@ public class SysDictService {
     public void checkDict(Long dictTypeId, String value, String label) {
         SysDict sysDict = sysDictDao.queryUnitDict(dictTypeId, value, label);
         if (!Objects.isNull(sysDict)) {
-            throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.DICT_EXISTS);
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.DICT_EXISTS);
         }
     }
 
@@ -123,7 +123,7 @@ public class SysDictService {
     public void deleteByKey(String ids) {
         /*1.数据校验*/
         if (StringUtils.isBlank(ids)) {
-            throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ID_MISSING);
+            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ID_MISSING);
         }
 
         String[] idArray = ids.split(",");

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/OrderCarDTO.java

@@ -11,6 +11,10 @@ import lombok.Data;
 @Data
 public class OrderCarDTO {
 
+    private Integer status;
+
+    private String statusLabel;
+
     /**
      * 物流订单id
      */

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/OrderFinishVO.java

@@ -19,7 +19,7 @@ public class OrderFinishVO {
     /**
      * 运输
      */
-    /*private BigDecimal amount;*/
+    private BigDecimal amount;
 
     /**
      * 总卸货量

+ 35 - 19
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -305,7 +305,12 @@ public class AcceptCarriageOrderService {
         carriageUnit.setFirmName(bo.getConsignCompany());
         carriageUnit.setTopEntId(consignentMap == null ? null : consignentMap.getId());
 
-        commonService.initIatingLogisticsConsignment(checkUnit, carriageUnit, logisticsOrder.getLOrderNo(), logisticsOrder.getCreateBy(), logisticsOrder.getEntId());
+//        commonService.initIatingLogisticsConsignment(checkUnit, carriageUnit, logisticsOrder.getLOrderNo(), logisticsOrder.getCreateBy(), logisticsOrder.getEntId());
+        commonService.newSendLogisticsOrderToMessage(checkUnit,carriageUnit,logisticsOrder.getLOrderNo(), logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
+                messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(), messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT,MessageEnum.NEW_CARRIAGE_ORDER,
+                "1");
 
         //修改父级mongodb数据
         //更新mongodb
@@ -775,9 +780,14 @@ public class AcceptCarriageOrderService {
             KwtLogisticsOrderUnit carriageOrderUnit = logisticsOrderUnitMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
                     .eq(KwtLogisticsOrderUnit::getLOrderId, id)
                     .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.TWO));
-            commonService.publicLogisticsConsignmentPushMessage(consignOrderUnit, carriageOrderUnit, logisticsOrder.getLOrderNo(),
+//            commonService.publicLogisticsConsignmentPushMessage(consignOrderUnit, carriageOrderUnit, logisticsOrder.getLOrderNo(),
+//                    logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
+//                    MessageEnum.CONSIGN_ACCEPT_LOGISTICS, MessageEnum.CARRIAGE_ACCEPT_LOGISTICS);
+            commonService.newSendLogisticsOrderToMessage(consignOrderUnit,carriageOrderUnit,logisticsOrder.getLOrderNo(),
                     logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
-                    MessageEnum.CONSIGN_ACCEPT_LOGISTICS, MessageEnum.CARRIAGE_ACCEPT_LOGISTICS);
+                    messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                    messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                    MessageEnum.CONSIGN_ACCEPT_LOGISTICS, MessageEnum.CARRIAGE_ACCEPT_LOGISTICS,"1");
         } else {
             orderStatus = LogisticsOrderEnum.REJECT_ORDER.getCode();
             //todo 改为拒绝接单  数据统计在页面已退回状态中
@@ -838,10 +848,14 @@ public class AcceptCarriageOrderService {
             KwtLogisticsOrderUnit carriageOrderUnit = logisticsOrderUnitMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
                     .eq(KwtLogisticsOrderUnit::getLOrderId, id)
                     .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.TWO));
-            commonService.publicLogisticsConsignmentPushMessage(consignOrderUnit, carriageOrderUnit, logisticsOrder.getLOrderNo(),
+//            commonService.publicLogisticsConsignmentPushMessage(consignOrderUnit, carriageOrderUnit, logisticsOrder.getLOrderNo(),
+//                    logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
+//                    MessageEnum.REJECT_ORDER, MessageEnum.CARRIAGE_DISALLOTMENT);
+            commonService.newSendLogisticsOrderToMessage(consignOrderUnit,carriageOrderUnit,logisticsOrder.getLOrderNo(),
                     logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
-                    MessageEnum.REJECT_ORDER, MessageEnum.CARRIAGE_DISALLOTMENT);
-
+                    messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                    messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                    MessageEnum.REJECT_ORDER, MessageEnum.CARRIAGE_DISALLOTMENT,"1");
         }
         //状态表新增状态数据
         KwtLogisticsOrderTrack track = logisticsOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
@@ -1412,6 +1426,7 @@ public class AcceptCarriageOrderService {
         statusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
         statusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
         statusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
+        statusList.add(CarWaybillEnum.APPROVAL_IN.getCode());
         int count = waybillOrderMapper.selectDataByLorderId(id, statusList);
         if (count > NumberConstant.ZERO) {
             throw new RuntimeException("检测您现在有运单正在执行中,该订单目前不可完结,请先将运单执行完毕");
@@ -1483,7 +1498,7 @@ public class AcceptCarriageOrderService {
             HttpResult result1 = tradeOrderInfoService.createOrCancelLogisticsOrder(param);
             if (result1.getCode() != HttpStatus.SUCCESS_CODE) {
                 log.info("{}拒绝接单->贸易订单失败!,返回信息:{}", "id:" + logisticsOrder.getTOrderId() + "orderNo" + logisticsOrder.getTOrderNo(), JSONObject.toJSONString(result1));
-                throw new BusinessException("{" + logisticsOrder.getTOrderNo() + "} 拒绝接单->贸易订单失败!");
+                throw new BusinessException("{" + logisticsOrder.getTOrderNo() + "} 拒绝接单->贸易订单失败!" + result1.getMsg());
             }
         }
 
@@ -1943,13 +1958,14 @@ public class AcceptCarriageOrderService {
         carriageUnit.setFirmName(orderDTO.getAcceptCompany());
         carriageUnit.setContactsId(Long.parseLong(orderDTO.getAcceptContactsId()));
         System.out.println("承运订单新建订单-消息列表推送 start");
-        commonService.publicLogisticsConsignmentPushMessage(consignUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId()
-                , MessageEnum.CARRIAGE_NEW_LOGISTICS, MessageEnum.CARRIAGE_NEW_LOGISTICS_ORDER);
+//        commonService.publicLogisticsConsignmentPushMessage(consignUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId()
+//                , MessageEnum.CARRIAGE_NEW_LOGISTICS, MessageEnum.CARRIAGE_NEW_LOGISTICS_ORDER);
 
-        commonService.pushMessageByUrl(consignUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId()
-                , MessageEnum.CARRIAGE_NEW_LOGISTICS, MessageEnum.CARRIAGE_NEW_LOGISTICS_ORDER
+        commonService.newSendLogisticsOrderToMessage(consignUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId()
                 , messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl()
                 , messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl()
+                , MessageEnum.NEW_LOGISTICS_ORDER, MessageEnum.NEW_CARRIAGE_ORDER
+                ,"1"
         );
 
         System.out.println("承运订单新建订单-消息列表推送 end ");
@@ -2916,15 +2932,15 @@ public class AcceptCarriageOrderService {
 
             List<LogisticsOrderStatisticsVO> list = logisticsOrderMapper.workbenchLogisticsOrderStatisticsByMonth(id, statusList,
                     OrderTypeEnum.ACCEPT_CARRIAGE_ORDER.getType(), dateStart, dateEnd, logisticsOrderStatistics.getTypeOne(), logisticsOrderStatistics.getTypeTwo());
-            if (logisticsOrderStatistics.getTypeOne().equals("2")){
+            if (logisticsOrderStatistics.getTypeOne().equals("2")) {
                 list.forEach(vo -> {
-                    vo.setTypeTwo(vo.getTypeTwo().setScale(2,RoundingMode.HALF_UP));
+                    vo.setTypeTwo(vo.getTypeTwo().setScale(2, RoundingMode.HALF_UP));
                     vo.setTypeOne(vo.getTypeOne().divide(new BigDecimal("10000")).setScale(2, RoundingMode.HALF_UP));
                 });
             }
-            if (logisticsOrderStatistics.getTypeTwo().equals("2")){
+            if (logisticsOrderStatistics.getTypeTwo().equals("2")) {
                 list.forEach(vo -> {
-                    vo.setTypeOne(vo.getTypeOne().setScale(2,RoundingMode.HALF_UP));
+                    vo.setTypeOne(vo.getTypeOne().setScale(2, RoundingMode.HALF_UP));
                     vo.setTypeTwo(vo.getTypeTwo().divide(new BigDecimal("10000")).setScale(2, RoundingMode.HALF_UP));
                 });
             }
@@ -2942,15 +2958,15 @@ public class AcceptCarriageOrderService {
             String dateEnd = DateUtil.getLastWeekDateEndToString(0);
             List<LogisticsOrderStatisticsVO> list = logisticsOrderMapper.workbenchLogisticsOrderStatisticsByDays(id, statusList,
                     OrderTypeEnum.ACCEPT_CARRIAGE_ORDER.getType(), dateStart, dateEnd, logisticsOrderStatistics.getTypeOne(), logisticsOrderStatistics.getTypeTwo());
-            if (logisticsOrderStatistics.getTypeOne().equals("2")){
+            if (logisticsOrderStatistics.getTypeOne().equals("2")) {
                 list.forEach(vo -> {
-                    vo.setTypeTwo(vo.getTypeTwo().setScale(2,RoundingMode.HALF_UP));
+                    vo.setTypeTwo(vo.getTypeTwo().setScale(2, RoundingMode.HALF_UP));
                     vo.setTypeOne(vo.getTypeOne().divide(new BigDecimal("10000")).setScale(2, RoundingMode.HALF_UP));
                 });
             }
-            if (logisticsOrderStatistics.getTypeTwo().equals("2")){
+            if (logisticsOrderStatistics.getTypeTwo().equals("2")) {
                 list.forEach(vo -> {
-                    vo.setTypeOne(vo.getTypeOne().setScale(2,RoundingMode.HALF_UP));
+                    vo.setTypeOne(vo.getTypeOne().setScale(2, RoundingMode.HALF_UP));
                     vo.setTypeTwo(vo.getTypeTwo().divide(new BigDecimal("10000")).setScale(2, RoundingMode.HALF_UP));
                 });
             }

+ 179 - 69
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java

@@ -242,6 +242,119 @@ public class CommonService {
      * 发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]
      *
      * @param consignUnit    托运单位
+     * @param carriageUnit   承运单位
+     * @param orderNo        单据号
+     * @param createBy       创建人
+     * @param entId          创建数据的企业id
+     * @param pcConsignUrl   PC托运地址
+     * @param appConsignUrl  app托运地址
+     * @param pcCarriageUrl  PC承运地址
+     * @param appCarriageUrl app承运地址
+     * @param type 1代表给托运创建人发 2代表给承运创建人发
+     */
+    public void newSendLogisticsOrderToMessage(KwtLogisticsOrderUnit consignUnit, KwtLogisticsOrderUnit carriageUnit,
+                                               String orderNo, Long createBy, Long entId,
+                                               String pcConsignUrl, String appConsignUrl,
+                                               String pcCarriageUrl, String appCarriageUrl,
+                                               MessageEnum consignMessageEnum, MessageEnum carriageMessageEnum,
+                                               String type
+    ) {
+        boolean flag = false;
+        if (createBy.equals(consignUnit.getContactsId()) || createBy.equals(carriageUnit.getContactsId())) {
+            flag = true;
+        }
+        Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
+        map.put("orderNo", orderNo);
+        if (flag && createBy.equals(consignUnit.getContactsId())) {
+            sendLogisticsConsignMessage(consignUnit, map, pcConsignUrl, appConsignUrl,consignMessageEnum);
+            sendLogisticsCarriageMessage(carriageUnit, map, pcCarriageUrl, appCarriageUrl,carriageMessageEnum);
+        } else if (flag && createBy.equals(carriageUnit.getContactsId())) {
+            sendLogisticsCarriageMessage(carriageUnit, map, pcCarriageUrl, appCarriageUrl,carriageMessageEnum);
+            sendLogisticsConsignMessage(consignUnit, map, pcConsignUrl, appConsignUrl,consignMessageEnum);
+        } else {
+            sendLogisticsConsignMessage(consignUnit, map, pcConsignUrl, appConsignUrl,consignMessageEnum);
+            sendLogisticsCarriageMessage(carriageUnit, map, pcCarriageUrl, appCarriageUrl,carriageMessageEnum);
+            if (type.equals("1")) {
+                sendLogisticsCreateByMessage(createBy, entId, map,pcConsignUrl,appConsignUrl,consignMessageEnum);
+            } else {
+                sendLogisticsCreateByMessage(createBy, entId, map, pcCarriageUrl, appCarriageUrl,carriageMessageEnum);
+            }
+
+        }
+
+    }
+
+    private void sendLogisticsCreateByMessage(Long createBy, Long entId, Map<String, Object> map, String pcUrl, String appUrl,MessageEnum messageEnum) {
+        UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(createBy);
+        //给订单创建人发消息
+        List<UserInfo> userInfos = new ArrayList<>();
+        UserInfo createUser = new UserInfo();
+        createUser.setUserId(createBy).setEntId(entId);
+        userInfos.add(createUser);
+        map.put("companyName", userCacheResDto == null ? null : userCacheResDto.getEntInfo().getFirmName());
+        SckwMessage msg = new SckwMessage();
+        msg.setRequestId(UUIDUtils.get32UUID())
+                .setMessageEnum(messageEnum)
+                .setParams(map)
+                .setMsgUrls(new HashMap<>(NumberConstant.SIXTEEN) {
+                    {
+                        put("pc", pcUrl);
+                        put("app", appUrl);
+                    }
+                })
+                .setUserInfos(userInfos)
+                .setCreateBy(LoginUserHolder.getUserId());
+        log.info("发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]-创建人:{}", JSON.toJSONString(msg));
+        streamBridge.send("sckw-message", JSON.toJSONString(msg));
+    }
+
+    private void sendLogisticsCarriageMessage(KwtLogisticsOrderUnit carriageUnit, Map<String, Object> map, String pcUrl, String appUrl,MessageEnum messageEnum) {
+        //给业务联系人发消息[承运方]
+        List<UserInfo> userInfoList = new ArrayList<>();
+        UserInfo userInfo = new UserInfo();
+        userInfo.setUserId(carriageUnit.getContactsId()).setEntId(carriageUnit.getTopEntId());
+        userInfoList.add(userInfo);
+        map.put("companyName", carriageUnit.getFirmName());
+        SckwMessage sckwMessage = new SckwMessage();
+        sckwMessage.setRequestId(UUIDUtils.get32UUID())
+                .setMessageEnum(messageEnum)
+                .setParams(map)
+                .setMsgUrls(new HashMap<>() {{
+                    put("pc", pcUrl);
+                    put("app", appUrl);
+                }})
+                .setUserInfos(userInfoList)
+                .setCreateBy(LoginUserHolder.getUserId());
+        log.info("发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]-[承运方]-业务联系人:{}", JSON.toJSONString(sckwMessage));
+        streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
+    }
+
+    private void sendLogisticsConsignMessage(KwtLogisticsOrderUnit consignUnit, Map<String, Object> map, String pcUrl, String appUrl,MessageEnum messageEnum) {
+        //给业务联系人发消息[托运方]
+        List<UserInfo> list = new ArrayList<>();
+        UserInfo userInfo = new UserInfo();
+        userInfo.setUserId(consignUnit.getContactsId()).setEntId(consignUnit.getTopEntId());
+        list.add(userInfo);
+        map.put("companyName", consignUnit.getFirmName());
+        SckwMessage message = new SckwMessage();
+        message.setRequestId(UUIDUtils.get32UUID())
+                .setMessageEnum(messageEnum)
+                .setParams(map)
+                .setMsgUrls(new HashMap<>() {{
+                    put("pc", pcUrl);
+                    put("app", appUrl);
+                }})
+                .setUserInfos(list)
+                .setCreateBy(LoginUserHolder.getUserId());
+        log.info("发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]-[托运方]-业务联系人:{}", JSON.toJSONString(message));
+        streamBridge.send("sckw-message", JSON.toJSONString(message));
+    }
+
+
+    /**
+     * 发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]
+     *
+     * @param consignUnit  托运单位
      * @param carriageUnit 承运单位
      * @param orderNo      单据号
      * @param createBy     创建人
@@ -270,9 +383,12 @@ public class CommonService {
             msg.setRequestId(UUIDUtils.get32UUID())
                     .setMessageEnum(MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT)
                     .setParams(map)
-                    .setMsgUrls(new HashMap<>(NumberConstant.SIXTEEN){
-                        { put("pc", messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl());
-                            put("app", messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl()); }})
+                    .setMsgUrls(new HashMap<>(NumberConstant.SIXTEEN) {
+                        {
+                            put("pc", messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl());
+                            put("app", messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl());
+                        }
+                    })
                     .setUserInfos(userInfos)
                     .setCreateBy(LoginUserHolder.getUserId());
             log.info("发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]-创建人:{}", JSON.toJSONString(msg));
@@ -300,7 +416,7 @@ public class CommonService {
         sckwMessage.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT)
                 .setParams(map)
-                .setMsgUrl(carriageLogisticsOrderUrl)
+                .setMsgUrls(new HashMap<>(){{put("app",consignLogisticsOrderUrl);put("pc",carriageLogisticsOrderUrl);}})
                 .setUserInfos(userInfoList)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info("发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]-[承运方]-业务联系人:{}", JSON.toJSONString(sckwMessage));
@@ -316,7 +432,7 @@ public class CommonService {
         message.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(MessageEnum.NEW_CARRIAGE_ORDER)
                 .setParams(map)
-                .setMsgUrl(carriageLogisticsOrderUrl)
+                .setMsgUrls(new HashMap<>(){{put("app",consignLogisticsOrderUrl);put("pc",carriageLogisticsOrderUrl);}})
                 .setUserInfos(list)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info("发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]-[托运方]-业务联系人:{}", JSON.toJSONString(message));
@@ -344,36 +460,11 @@ public class CommonService {
         carriageUnit.setContactsId(Long.parseLong(addOrderDTO.getAcceptContactsId()));
         carriageUnit.setFirmName(addOrderDTO.getConsignCompany());
         carriageUnit.setTopEntId(acceptMap == null ? null : acceptMap.getId());
-        boolean flag = false;
-        if (createBy.equals(checkUnit.getContactsId()) || createBy.equals(carriageUnit.getContactsId())) {
-            flag = true;
-        }
-        Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
-        map.put("orderNo", lOrderNo);
-        if (flag && createBy.equals(checkUnit.getContactsId())) {
-            sendMessageNewLogisticsOrder(checkUnit, map, MessageEnum.NEW_LOGISTICS_ORDER, consignLogisticsOrderUrl);
-        } else if (flag && createBy.equals(carriageUnit.getContactsId())) {
-            sendMessageNewLogisticsOrder(carriageUnit, map, MessageEnum.NEW_CARRIAGE_ORDER, carriageLogisticsOrderUrl);
-        } else {
-            UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(createBy);
-            //给订单创建人发消息
-            List<UserInfo> userInfos = new ArrayList<>();
-            UserInfo createUser = new UserInfo();
-            createUser.setUserId(createBy).setEntId(entId);
-            userInfos.add(createUser);
-            map.put("companyName", userCacheResDto == null ? null : userCacheResDto.getEntInfo().getFirmName());
-            SckwMessage msg = new SckwMessage();
-            msg.setRequestId(UUIDUtils.get32UUID())
-                    .setMessageEnum(MessageEnum.NEW_LOGISTICS_ORDER)
-                    .setParams(map)
-                    .setMsgUrl(consignLogisticsOrderUrl)
-                    .setUserInfos(userInfos)
-                    .setCreateBy(LoginUserHolder.getUserId());
-            log.info("托运订单/承运订单自建物流订单-创建人:{}", JSON.toJSONString(msg));
-            streamBridge.send("sckw-message", JSON.toJSONString(msg));
-            sendMessageNewLogisticsOrder(checkUnit, map, MessageEnum.NEW_LOGISTICS_ORDER, consignLogisticsOrderUrl);
-            sendMessageNewLogisticsOrder(carriageUnit, map, MessageEnum.NEW_CARRIAGE_ORDER, carriageLogisticsOrderUrl);
-        }
+        newSendLogisticsOrderToMessage(checkUnit,carriageUnit,lOrderNo,createBy,entId
+                ,messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                MessageEnum.NEW_LOGISTICS_ORDER,MessageEnum.NEW_CARRIAGE_ORDER,"1"
+        );
 
     }
 
@@ -397,7 +488,7 @@ public class CommonService {
         sckwMessage.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(messageEnum)
                 .setParams(map)
-                .setMsgUrl(consignLogisticsOrderUrl)
+                .setMsgUrls(new HashMap<>(){{put("app",consignLogisticsOrderUrl);put("pc",carriageLogisticsOrderUrl);}})
                 .setUserInfos(userInfoList)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info("托运订单/承运订单自建物流订单-业务联系人:{}", JSON.toJSONString(sckwMessage));
@@ -440,12 +531,15 @@ public class CommonService {
             msg.setRequestId(UUIDUtils.get32UUID())
                     .setMessageEnum(consignMessageEnum)
                     .setParams(map)
-                    .setMsgUrl(consignLogisticsOrderUrl)
+                    .setMsgUrls(new HashMap<>() {{
+                        put("pc", consignLogisticsOrderUrl);
+                        put("app", carriageLogisticsOrderUrl);
+                    }})
                     .setUserInfos(userInfos)
                     .setCreateBy(LoginUserHolder.getUserId());
             log.info(MessageEnum.getDesc(consignMessageEnum) + "-创建人:{}", JSON.toJSONString(msg));
             streamBridge.send("sckw-message", JSON.toJSONString(msg));
-            sendMessagePublicLogistics(consignUnit, carriageUnit, map,consignMessageEnum);
+            sendMessagePublicLogistics(consignUnit, carriageUnit, map, consignMessageEnum);
         }
     }
 
@@ -485,7 +579,10 @@ public class CommonService {
             msg.setRequestId(UUIDUtils.get32UUID())
                     .setMessageEnum(consignMessageEnum)
                     .setParams(map)
-                    .setMsgUrl(consignLogisticsOrderUrl)
+                    .setMsgUrls(new HashMap<>() {{
+                        put("pc", consignLogisticsOrderUrl);
+                        put("app", carriageLogisticsOrderUrl);
+                    }})
                     .setUserInfos(userInfos)
                     .setCreateBy(LoginUserHolder.getUserId());
             log.info(MessageEnum.getDesc(consignMessageEnum) + "-创建人:{}", JSON.toJSONString(msg));
@@ -506,7 +603,10 @@ public class CommonService {
         sckwMessage.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(consignMessageEnum)
                 .setParams(map)
-                .setMsgUrl(carriageLogisticsOrderUrl)
+                .setMsgUrls(new HashMap<>() {{
+                    put("pc", consignLogisticsOrderUrl);
+                    put("app", carriageLogisticsOrderUrl);
+                }})
                 .setUserInfos(userInfoList)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info(MessageEnum.getDesc(consignMessageEnum) + "-[承运方]-业务联系人:{}", JSON.toJSONString(sckwMessage));
@@ -523,7 +623,10 @@ public class CommonService {
         message.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(MessageEnum.NEW_CARRIAGE_ORDER)
                 .setParams(map)
-                .setMsgUrl(carriageLogisticsOrderUrl)
+                .setMsgUrls(new HashMap<>() {{
+                    put("pc", consignLogisticsOrderUrl);
+                    put("app", carriageLogisticsOrderUrl);
+                }})
                 .setUserInfos(list)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info(MessageEnum.getDesc(consignMessageEnum) + "-[托运方]-业务联系人:{}", JSON.toJSONString(message));
@@ -531,24 +634,23 @@ public class CommonService {
     }
 
     /**
-     *
-     * @param consignUnit 托运单位
-     * @param carriageUnit  承运单位
-     * @param orderNo   单据号
-     * @param createBy  创建人
-     * @param entId 企业id
-     * @param consignMessageEnum 托运消息体
-     * @param carriageMessageEnum   承运消息体
-     * @param pcConsignLogisticsAddOrderUrl pc托运url
-     * @param pcCarriageLogisticsAddOrderUrl    pc承运url
-     * @param appConsignLogisticsAddOrderUrl    app托运url
-     * @param appCarriageLogisticsAddOrderUrl   app承运url
+     * @param consignUnit                     托运单位
+     * @param carriageUnit                    承运单位
+     * @param orderNo                         单据号
+     * @param createBy                        创建人
+     * @param entId                           企业id
+     * @param consignMessageEnum              托运消息体
+     * @param carriageMessageEnum             承运消息体
+     * @param pcConsignLogisticsAddOrderUrl   pc托运url
+     * @param pcCarriageLogisticsAddOrderUrl  pc承运url
+     * @param appConsignLogisticsAddOrderUrl  app托运url
+     * @param appCarriageLogisticsAddOrderUrl app承运url
      */
     public void pushMessageByUrl(KwtLogisticsOrderUnit consignUnit, KwtLogisticsOrderUnit carriageUnit, String orderNo, Long createBy, Long entId,
                                  MessageEnum consignMessageEnum, MessageEnum carriageMessageEnum,
-                                 String pcConsignLogisticsAddOrderUrl,String pcCarriageLogisticsAddOrderUrl,
-                                 String appConsignLogisticsAddOrderUrl,String appCarriageLogisticsAddOrderUrl
-                                 )  {
+                                 String pcConsignLogisticsAddOrderUrl, String pcCarriageLogisticsAddOrderUrl,
+                                 String appConsignLogisticsAddOrderUrl, String appCarriageLogisticsAddOrderUrl
+    ) {
         boolean flag = false;
         if (createBy.equals(consignUnit.getContactsId()) || createBy.equals(carriageUnit.getContactsId())) {
             flag = true;
@@ -556,9 +658,9 @@ public class CommonService {
         Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
         map.put("orderNo", orderNo);
         if (flag && createBy.equals(consignUnit.getContactsId())) {
-            sendPushMessageByUrlLogistics(consignUnit, carriageUnit, map, consignMessageEnum,carriageMessageEnum);
+            sendPushMessageByUrlLogistics(consignUnit, carriageUnit, map, consignMessageEnum, carriageMessageEnum);
         } else if (flag && createBy.equals(carriageUnit.getContactsId())) {
-            sendPushMessageByUrlLogistics(consignUnit, carriageUnit, map, consignMessageEnum,carriageMessageEnum);
+            sendPushMessageByUrlLogistics(consignUnit, carriageUnit, map, consignMessageEnum, carriageMessageEnum);
         } else {
             UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(createBy);
             //给订单创建人发消息
@@ -571,28 +673,30 @@ public class CommonService {
             msg.setRequestId(UUIDUtils.get32UUID())
                     .setMessageEnum(carriageMessageEnum)
                     .setParams(map)
-                    .setMsgUrls(new HashMap<>(NumberConstant.SIXTEEN){{put("pc",pcCarriageLogisticsAddOrderUrl);put("app",appCarriageLogisticsAddOrderUrl);}})
+                    .setMsgUrls(new HashMap<>(NumberConstant.SIXTEEN) {{
+                        put("pc", pcCarriageLogisticsAddOrderUrl);
+                        put("app", appCarriageLogisticsAddOrderUrl);
+                    }})
                     .setUserInfos(userInfos)
                     .setCreateBy(LoginUserHolder.getUserId());
             log.info(MessageEnum.getDesc(consignMessageEnum) + "-创建人:{}", JSON.toJSONString(msg));
             streamBridge.send("sckw-message", JSON.toJSONString(msg));
-            sendPushMessageByUrlLogistics(consignUnit, carriageUnit, map, consignMessageEnum,carriageMessageEnum);
+            sendPushMessageByUrlLogistics(consignUnit, carriageUnit, map, consignMessageEnum, carriageMessageEnum);
+        }
     }
-}
 
     /**
-     *
-     * @param consignUnit 托运单位
-     * @param carriageUnit 承运单位
+     * @param consignUnit         托运单位
+     * @param carriageUnit        承运单位
      * @param map
-     * @param consignMessageEnum    托运枚举
-     * @param carriageMessageEnum   承运枚
+     * @param consignMessageEnum  托运枚举
+     * @param carriageMessageEnum 承运枚
      */
     private void sendPushMessageByUrlLogistics(KwtLogisticsOrderUnit consignUnit, KwtLogisticsOrderUnit carriageUnit,
                                                Map<String, Object> map,
                                                MessageEnum consignMessageEnum,
                                                MessageEnum carriageMessageEnum
-                                               ) {
+    ) {
         //给业务联系人发消息[承运方]
         List<UserInfo> userInfoList = new ArrayList<>();
         UserInfo userInfo = new UserInfo();
@@ -603,7 +707,10 @@ public class CommonService {
         sckwMessage.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(carriageMessageEnum)
                 .setParams(map)
-                .setMsgUrls(new HashMap<>(){{put("pc",messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl());put("app",messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl());}})
+                .setMsgUrls(new HashMap<>() {{
+                    put("pc", messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl());
+                    put("app", messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl());
+                }})
                 .setUserInfos(userInfoList)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info(MessageEnum.getDesc(carriageMessageEnum) + "-[承运方]-业务联系人:{}", JSON.toJSONString(sckwMessage));
@@ -620,7 +727,10 @@ public class CommonService {
         message.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(consignMessageEnum)
                 .setParams(map)
-                .setMsgUrls(new HashMap<>(){{put("pc",messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl());put("app",messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl());}})
+                .setMsgUrls(new HashMap<>() {{
+                    put("pc", messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl());
+                    put("app", messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl());
+                }})
                 .setUserInfos(list)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info(MessageEnum.getDesc(consignMessageEnum) + "-[托运方]-业务联系人:{}", JSON.toJSONString(message));

+ 21 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -34,6 +34,7 @@ import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.mongo.model.TableTops;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.order.api.model.CompleteLogisticsOrderParam;
+import com.sckw.order.api.model.CreateOrCancelLogisticsOrderParam;
 import com.sckw.order.api.model.OrderDetailRes;
 import com.sckw.order.api.model.UnitInfoDetailRes;
 import com.sckw.payment.api.dubbo.PaymentDubboService;
@@ -145,7 +146,10 @@ public class ConsignOrderService {
     public KwtLogisticsOrderCirculateMapper kwtLogisticsOrderCirculateMapper;
 
     @Autowired
-    TransportCommonService transportCommonService;
+    public TransportCommonService transportCommonService;
+
+    @Autowired
+    KwtWaybillOrderService waybillOrderService;
 
 
     /**
@@ -644,7 +648,7 @@ public class ConsignOrderService {
                     //扣亏量/吨
                     BigDecimal deduct = defectiveWeigh.compareTo(new BigDecimal("0.00")) == 0 ? new BigDecimal("0.00") : defectiveWeigh.subtract(multiply);
                     carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
-                    carWaybillVo.setWOrderNo(order.getLOrderNo());
+                    carWaybillVo.setWOrderNo(kwtWaybillOrder.getWOrderNo());
                     carWaybillVo.setTruckNo(kwtWaybillOrder.getTruckNo());
                     carWaybillVo.setStatus(String.valueOf(kwtWaybillOrder.getStatus()));
                     carWaybillVo.setStatusLabel(CarWaybillEnum.getName(kwtWaybillOrder.getStatus()));
@@ -860,6 +864,16 @@ public class ConsignOrderService {
                 log.info("贸易订单手动完结订单异常,传递信息:{},返回信息:{}", JSONObject.toJSONString(tradeOrder), JSONObject.toJSONString(httpResult));
                 throw new BusinessException("单据完结出现错误!" + httpResult.getMsg());
             }
+            CreateOrCancelLogisticsOrderParam param = new CreateOrCancelLogisticsOrderParam();
+            param.setTOrderId(Long.valueOf(logisticsOrder.getTOrderId()));
+            param.setEntrustAmount(orderFinishDTO.getLoadAmount().subtract(logisticsOrder.getAmount()));
+            param.setUpdateBy(LoginUserHolder.getUserId());
+            param.setUpdateByName(LoginUserHolder.getUserName());
+            HttpResult result1 = tradeOrderInfoService.createOrCancelLogisticsOrder(param);
+            if (result1.getCode() != HttpStatus.SUCCESS_CODE) {
+                log.info("托运订单手动完结订单-完结订单,返回信息:{}", "id:" + logisticsOrder.getTOrderId() + "orderNo" + logisticsOrder.getTOrderNo(), JSONObject.toJSONString(result1));
+                throw new BusinessException("{" + logisticsOrder.getTOrderNo() + "} 托运订单手动完结订单-完结订单!"+result1.getMsg());
+            }
         }
 
         //修改合同履约量
@@ -874,6 +888,7 @@ public class ConsignOrderService {
         }
 
         transportCommonService.closeHandle(logisticsOrder.getId());
+        waybillOrderService.cancelSendCar(logisticsOrder.getId());
         return HttpResult.ok("托运订单-完结订单成功");
     }
 
@@ -959,13 +974,14 @@ public class ConsignOrderService {
     private boolean judgmentWaybillOrderIsFinish(String id) {
         boolean flag = false;
         List<Integer> statusList = new ArrayList<>();
-        statusList.add(CarWaybillEnum.PENDING_ORDER.getCode());
+//        statusList.add(CarWaybillEnum.PENDING_ORDER.getCode());
         statusList.add(CarWaybillEnum.PENDING_VEHICLE.getCode());
         statusList.add(CarWaybillEnum.EXIT_COMPLETED.getCode());
         statusList.add(CarWaybillEnum.WAIT_LOADING.getCode());
         statusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
         statusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
         statusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
+        statusList.add(CarWaybillEnum.APPROVAL_IN.getCode());
 //        statusList.add(CarWaybillEnum.APPROVAL_PASS.getCode());
         int count = kwtWaybillOrderMapper.selectDataByLorderId(id, statusList);
         if (count > NumberConstant.ZERO) {
@@ -1163,7 +1179,7 @@ public class ConsignOrderService {
      * @return
      */
     public HttpResult consignOrderFinishDetail(String orderId) {
-//        OrderFinishVO orderFinishVO = kwtLogisticsOrderMapper.selectOrderFinishData(orderId);
+        OrderFinishVO finishVO = kwtLogisticsOrderMapper.selectOrderFinishData(orderId);
         Map<String, Object> map = new HashMap(NumberConstant.SIXTEEN);
         map.put("upperlOrderId", orderId);
         //随意给个值 主要是传递不为null
@@ -1173,6 +1189,7 @@ public class ConsignOrderService {
         orderFinishVO.setLoadAmount(waybillOrderCount == null ? new BigDecimal("0.00") : waybillOrderCount.getLoadAmount());
         orderFinishVO.setUnloadAmount(waybillOrderCount == null ? new BigDecimal("0.00") : waybillOrderCount.getUnloadAmount());
         orderFinishVO.setNumber(waybillOrderCount == null ? NumberConstant.ZERO : waybillOrderCount.getTotalComplete());
+        orderFinishVO.setAmount(finishVO.getAmount());
         return HttpResult.ok(orderFinishVO);
     }
 

+ 49 - 9
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

@@ -33,6 +33,7 @@ import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.transport.common.config.MessageUrlConfig;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.LogisticsOrderDTO;
@@ -73,6 +74,15 @@ public class LogisticsConsignmentService {
     @Autowired
     RedisLockUtil redisLockUtil;
 
+    @Autowired
+    public TransportCommonService transportCommonService;
+
+    @Autowired
+    KwtWaybillOrderService waybillOrderService;
+
+    @Autowired
+    MessageUrlConfig messageUrlConfig;
+
     @Autowired
     public CommonService commonService;
 
@@ -233,7 +243,11 @@ public class LogisticsConsignmentService {
         carriageUnit.setTopEntId(consignentMap == null ? null : consignentMap.getId());
         carriageUnit.setContactsId(Long.parseLong(bo.getConsignContactsId()));
 
-        commonService.initIatingLogisticsConsignment(checkUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId());
+//        commonService.initIatingLogisticsConsignment(checkUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId());
+        commonService.newSendLogisticsOrderToMessage(checkUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId(),
+                messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT,MessageEnum.NEW_CARRIAGE_ORDER,"1");
     }
 
     /**
@@ -800,7 +814,7 @@ public class LogisticsConsignmentService {
             List<LogisticsOrderDTO> list = new ArrayList<>();
             if (flag) {
                 /**数据展示*/
-                list = kwtLogisticsOrderMapper.selectOrderListNotPage(id, type);
+                list = kwtLogisticsOrderMapper.selectOrderListNotPage(id, "2");
                 /**计量单位*/
                 Map<String, String> unitTypeDictData = commonService.getDictData(DictTypeEnum.UNIT_TYPE.getType());
                 /**运价方式*/
@@ -885,6 +899,7 @@ public class LogisticsConsignmentService {
 //            orderCarDTO.setDriverName(orderCarDTO.getDriverName());
 //            orderCarDTO.setDriverPhone(orderCarDTO.getDriverPhone());
 //            orderCarDTO.setDriverCard(orderCarDTO.getDriverCard());
+                    orderCarDTO.setStatusLabel(CarWaybillEnum.getName(orderCarDTO.getStatus()));
                     orderCarDTO.setLoadAmount(truck.get(orderCarDTO.getTruckNo()) == null ?
                             null : (truck.get(orderCarDTO.getTruckNo()).getActualWeight() == null ?
                             null : (String.valueOf(truck.get(orderCarDTO.getTruckNo()).getActualWeight()))));
@@ -943,6 +958,7 @@ public class LogisticsConsignmentService {
 //            orderCarDTO.setDriverName(orderCarDTO.getDriverName());
 //            orderCarDTO.setDriverPhone(orderCarDTO.getDriverPhone());
 //            orderCarDTO.setDriverCard(orderCarDTO.getDriverCard());
+                    orderCarDTO.setStatusLabel(CarWaybillEnum.getName(orderCarDTO.getStatus()));
                     orderCarDTO.setLoadAmount(truck.get(orderCarDTO.getTruckNo()) == null ?
                             null : (truck.get(orderCarDTO.getTruckNo()).getActualWeight() == null ?
                             null : (String.valueOf(truck.get(orderCarDTO.getTruckNo()).getActualWeight()))));
@@ -1090,8 +1106,14 @@ public class LogisticsConsignmentService {
                         new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
                                 .eq(KwtLogisticsOrderUnit::getLOrderId, kwtLogisticsOrder.getId())
                                 .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.TWO));
-                commonService.cancelLogisticsConsignment(consignUnit, carriageUnit, kwtLogisticsOrder.getLOrderNo(), kwtLogisticsOrder.getCreateBy(),
-                        kwtLogisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
+//                commonService.cancelLogisticsConsignment(consignUnit, carriageUnit, kwtLogisticsOrder.getLOrderNo(), kwtLogisticsOrder.getCreateBy(),
+//                        kwtLogisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
+                commonService.newSendLogisticsOrderToMessage(consignUnit, carriageUnit, kwtLogisticsOrder.getLOrderNo(), kwtLogisticsOrder.getCreateBy(),
+                        kwtLogisticsOrder.getEntId(),
+                        messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                        messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                        MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS,
+                        "1");
             } else {
                 result.setMsg("操作失败:" + httpResult.getMsg());
                 result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
@@ -1184,8 +1206,13 @@ public class LogisticsConsignmentService {
                         new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
                                 .eq(KwtLogisticsOrderUnit::getLOrderId, id)
                                 .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.TWO));
-                commonService.cancelLogisticsConsignment(consignUnit, carriageUnit, kwtLogisticsOrder.getLOrderNo(), kwtLogisticsOrder.getCreateBy(),
-                        kwtLogisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
+//                commonService.cancelLogisticsConsignment(consignUnit, carriageUnit, kwtLogisticsOrder.getLOrderNo(), kwtLogisticsOrder.getCreateBy(),
+//                        kwtLogisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
+                commonService.newSendLogisticsOrderToMessage(consignUnit, carriageUnit, kwtLogisticsOrder.getLOrderNo(), kwtLogisticsOrder.getCreateBy(),
+                        kwtLogisticsOrder.getEntId(),
+                        messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                        messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                        MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS,"1");
             } else {
                 result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
                 result.setMsg("操作失败:" + httpResult.getMsg());
@@ -1328,6 +1355,18 @@ public class LogisticsConsignmentService {
             log.info("贸易订单-采购订单/销售订单-手动完结订单异常,传递信息:{},返回信息:{}", JSONObject.toJSONString(tradeOrder), JSONObject.toJSONString(httpResult));
             throw new BusinessException("单据完结出现错误!" + httpResult.getMsg());
         }
+        CreateOrCancelLogisticsOrderParam param = new CreateOrCancelLogisticsOrderParam();
+        param.setTOrderId(Long.valueOf(logisticsOrder.getTOrderId()));
+        param.setEntrustAmount(orderFinishDTO.getLoadAmount().subtract(logisticsOrder.getAmount()));
+        param.setUpdateBy(LoginUserHolder.getUserId());
+        param.setUpdateByName(LoginUserHolder.getUserName());
+        HttpResult result1 = tradeOrderInfoService.createOrCancelLogisticsOrder(param);
+        if (result1.getCode() != HttpStatus.SUCCESS_CODE) {
+            log.info("采购订单/销售订单完结订单,返回信息:{}", "id:" + logisticsOrder.getTOrderId() + "orderNo" + logisticsOrder.getTOrderNo(), JSONObject.toJSONString(result1));
+            throw new BusinessException("{" + logisticsOrder.getTOrderNo() + "} 采购订单/销售订单完结订单失败!"+result1.getMsg());
+        }
+        transportCommonService.closeHandle(logisticsOrder.getId());
+        waybillOrderService.cancelSendCar(logisticsOrder.getId());
         //todo 直接订单完结-不递归操作
 //
 //        //存在子集
@@ -1710,14 +1749,15 @@ public class LogisticsConsignmentService {
     private boolean judgmentWaybillOrderIsFinish(String id) {
         boolean flag = false;
         List<Integer> statusList = new ArrayList<>();
-        statusList.add(CarWaybillEnum.PENDING_ORDER.getCode());
+//        statusList.add(CarWaybillEnum.PENDING_ORDER.getCode());
         statusList.add(CarWaybillEnum.PENDING_VEHICLE.getCode());
         statusList.add(CarWaybillEnum.EXIT_COMPLETED.getCode());
         statusList.add(CarWaybillEnum.WAIT_LOADING.getCode());
         statusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
         statusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
         statusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
-        statusList.add(CarWaybillEnum.APPROVAL_PASS.getCode());
+//        statusList.add(CarWaybillEnum.APPROVAL_PASS.getCode());
+        statusList.add(CarWaybillEnum.APPROVAL_IN.getCode());
         int count = waybillOrderMapper.selectDataByLorderId(id, statusList);
         if (count > NumberConstant.ZERO) {
             flag = true;
@@ -1734,7 +1774,7 @@ public class LogisticsConsignmentService {
      */
     public void judgmentLogisticsOrderIsFinish(KwtLogisticsOrder logisticsOrder) {
         //查询是否存在进行中的车辆运单 取至 CarWaybillEnum 枚举类
-        long[] waybillStatus = {1, 2, 3, 4, 5, 6, 7, 8};
+        long[] waybillStatus = {1, 2, 3, 4, 5, 6, 7, 13};
         List<KwtWaybillOrder> waybillOrders = waybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
                 .eq(KwtWaybillOrder::getLOrderId, logisticsOrder.getId())
                 .in(KwtWaybillOrder::getStatus, waybillStatus));

+ 12 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

@@ -32,6 +32,7 @@ import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.api.model.vo.LogisticsOrderVO;
+import com.sckw.transport.common.config.MessageUrlConfig;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.CancelOrderDTO;
@@ -70,6 +71,9 @@ public class TransportCommonService {
     @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
     RemoteContractService remoteContractService;
 
+    @Autowired
+    MessageUrlConfig messageUrlConfig;
+
     @Autowired
     public CommonService commonService;
 
@@ -463,8 +467,14 @@ public class TransportCommonService {
                 new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
                         .eq(KwtLogisticsOrderUnit::getLOrderId, id)
                         .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.TWO));
-        commonService.cancelLogisticsConsignment(consignUnit, carriageUnit, logisticsOrder.getLOrderNo(), logisticsOrder.getCreateBy(),
-                logisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
+//        commonService.cancelLogisticsConsignment(consignUnit, carriageUnit, logisticsOrder.getLOrderNo(), logisticsOrder.getCreateBy(),
+//                logisticsOrder.getEntId(), MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS);
+        commonService.newSendLogisticsOrderToMessage(consignUnit, carriageUnit, logisticsOrder.getLOrderNo(), logisticsOrder.getCreateBy(),
+                logisticsOrder.getEntId(),
+                messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                MessageEnum.CANCELLATION_LOGISTICS, MessageEnum.CARRIAGE_CANCELLATION_LOGISTICS,
+                "1");
         return result;
     }
 

+ 1 - 1
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -2016,7 +2016,7 @@
         ELSE 0 end AS typeOne,
         CASE WHEN #{typeTwo} = 2 THEN
         sum(a.amount * IFNULL( a.price, 0 ))
-        CASE WHEN #{typeTwo} = 1 THEN
+        WHEN #{typeTwo} = 1 THEN
         sum( a.amount )
         ELSE 0	end AS typeTwo
         FROM kwt_logistics_order a LEFT JOIN  kwt_logistics_order_unit b ON a.id = b.l_order_id

+ 1 - 0
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -476,6 +476,7 @@
                a.driver_phone  as driverPhone,
                a.driver_idcard as driverCard,
                a.truck_no      as truckNo,
+               a.status        as status,
                a.l_order_id    as lOrderId,
                b.l_order_no    as lOrderNo,
                b.t_order_id    as tOrderId,