Răsfoiți Sursa

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

czh 2 ani în urmă
părinte
comite
6c3c5016b2
32 a modificat fișierele cu 445 adăugiri și 91 ștergeri
  1. 26 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/StringUtils.java
  2. 20 2
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java
  3. 5 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UnitInfoDetailRes.java
  4. 1 1
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageUserService.java
  5. 15 5
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java
  6. 5 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderUnit.java
  7. 3 3
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/AcceptanceOrderParam.java
  8. 6 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UnitInfo.java
  9. 16 8
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  10. 2 0
      sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderUnitMapper.xml
  11. 7 8
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java
  12. 2 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsTrackService.java
  13. 7 9
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java
  14. 2 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeTrackService.java
  15. 1 1
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml
  16. 4 2
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java
  17. 15 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java
  18. 13 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/WaybillManagementController.java
  19. 10 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderAddressMapper.java
  20. 20 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddOrderDTO.java
  21. 5 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/DriverListVo.java
  22. 24 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/SckwLogisticsOrderVO.java
  23. 13 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVO.java
  24. 3 9
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillSimpleDataVO.java
  25. 35 9
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  26. 21 8
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  27. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java
  28. 5 4
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  29. 27 4
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java
  30. 83 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java
  31. 37 14
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  32. 11 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderAddressMapper.xml

+ 26 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/StringUtils.java

@@ -757,6 +757,32 @@ public class StringUtils {
         return String.format(prefix, args);
     }
 
+    /**
+     * @desc: 替换文本变量,变量格式为:${}
+     * @author: yzc
+     * @date: 2023-09-01 9:03
+     * @Param text: 文本
+     * @Param varNames:  变量名map
+     * @return: java.util.List<java.lang.String>  替换后的文本
+     */
+    public static String replaceTextVar(String text, Map<String, Object> varNames) {
+        if (StringUtils.isBlank(text) || CollectionUtils.isEmpty(varNames)) {
+            return text;
+        }
+        Pattern pattern = Pattern.compile("\\$\\{([^}]+)\\}");
+        Matcher matcher = pattern.matcher(text);
+        StringBuilder result = new StringBuilder();
+        while (matcher.find()) {
+            String varName = matcher.group(1);
+            Object varValue = varNames.get(varName);
+            if (Objects.nonNull(varValue)) {
+                matcher.appendReplacement(result, varValue.toString());
+            }
+        }
+        matcher.appendTail(result);
+        return result.toString();
+    }
+
     public static void main(String[] args) {
         Map<String, Object> param = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         param.put("account", "17358629955");

+ 20 - 2
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java

@@ -13,8 +13,26 @@ public enum MessageEnum {
     //认证通过
     AUDIT_PASS("SYSTEM","SYSTEM_ENT_APPR","认证通过通知","审核通过!您的资质已认证成功,危品汇欢迎您的入驻!","terminal,ios,android"),
     //委托单-指派成功
-    RECEIVE_ASSIGN_ENTRUST("BUSINESS", "RECEIVE_ASSIGN_ENTRUST", "新委托单通知",
-            "${firmName}委托承运:从${loadAddress}至${unloadAddress},承运${supplyName},委托量${weight}吨,运价${price}!","terminal,ios,android");
+    RECEIVE_ASSIGN_ENTRUST("BUSINESS", "BUSINESS_RECEIVE_ASSIGN_ENTRUST", "新委托单通知",
+            "${firmName}委托承运:从${loadAddress}至${unloadAddress},承运${supplyName},委托量${weight}吨,运价${price}!","terminal,ios,android"),
+
+    /**
+     * 新销售订单(有新的待受理订单)
+     */
+    NEW_SALE_ORDER("BUSINESS", "BUSINESS_TORDER_NEW_SALE", "有新的待受理订单",
+                                   "${firmName}发起采购,请及时进行受理;订单号:${orderNo}","terminal,ios,android"),
+
+    /**
+     * 新采购订单(有新的代客下单信息)
+     */
+    NEW_PURCHASE_ORDER("BUSINESS", "BUSINESS_TORDER_NEW_PURCHASE", "有新的代客下单信息",
+                           "${firmName}代您发起了商品采购,请确认;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 采购订单被驳回
+     */
+    REJECT_PURCHASE_ORDER("BUSINESS", "BUSINESS_TORDER_REJECT_PURCHASE", "采购订单被驳回",
+            "您的采购申请被${firmName}驳回,请及时查看;订单号:${orderNo}","terminal,ios,android"),
+    ;
 
     /**
      * 消息分类

+ 5 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UnitInfoDetailRes.java

@@ -39,6 +39,11 @@ public class UnitInfoDetailRes implements Serializable {
      */
     private String firmName;
 
+    /**
+     * 联系人id
+     */
+    private Long contactsId;
+
     /**
      * 联系人姓名
      */

+ 1 - 1
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageUserService.java

@@ -83,7 +83,7 @@ public class KwmMessageUserService {
     /**
      * @param messageUsers
      * @return void
-     * @desc: 批量插入(不直接批量插入,防止daoAspect切面失效)
+     * @desc: 批量插入
      * @author: yzc
      * @date: 2023-06-09 15:58
      */

+ 15 - 5
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java

@@ -3,9 +3,9 @@ package com.sckw.message.service;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
 import com.sckw.core.utils.StringUtils;
-import com.sckw.redis.constant.RedisConstant;
 import com.sckw.message.model.KwmMessage;
 import com.sckw.message.model.KwmMessageUser;
+import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.SckwMessage;
@@ -52,9 +52,16 @@ public class SckwMessageHandlerService {
         }
         //构建message对象
         MessageEnum messageEnum = sckwMessage.getMessageEnum();
-        KwmMessage kwmMessage = KwmMessage.builder().category(messageEnum.getCategory()).type(messageEnum.getType()).title(messageEnum.getTitle())
-                .content(messageEnum.getContent()).clientType(messageEnum.getPushType()).url(sckwMessage.getMsgUrl())
-                .params(JSON.toJSONString(sckwMessage.getParams())).build();
+        String content = StringUtils.replaceTextVar(messageEnum.getContent(), sckwMessage.getParams());
+        KwmMessage kwmMessage = KwmMessage.builder()
+                .category(messageEnum.getCategory())
+                .type(messageEnum.getType())
+                .title(messageEnum.getTitle())
+                .content(content)
+                .clientType(messageEnum.getPushType())
+                .url(sckwMessage.getMsgUrl())
+                .params(JSON.toJSONString(sckwMessage.getParams()))
+                .build();
         kwmMessage.setCreateBy(sckwMessage.getCreateBy());
         kwmMessage.setUpdateBy(sckwMessage.getCreateBy());
         Long msgId = kwmMessageService.insert(kwmMessage);
@@ -62,7 +69,10 @@ public class SckwMessageHandlerService {
         List<String> userIdList = Arrays.asList(userIds.split(","));
         List<KwmMessageUser> messageUsers = Lists.newArrayList();
         userIdList.forEach(e -> {
-            KwmMessageUser messageUser = KwmMessageUser.builder().userId(Long.valueOf(e)).msgId(msgId).build();
+            KwmMessageUser messageUser = KwmMessageUser.builder()
+                    .userId(Long.valueOf(e))
+                    .msgId(msgId)
+                    .build();
             messageUser.setCreateBy(sckwMessage.getCreateBy());
             messageUser.setUpdateBy(sckwMessage.getCreateBy());
             messageUsers.add(messageUser);

+ 5 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderUnit.java

@@ -57,6 +57,11 @@ public class KwoTradeOrderUnit extends BaseModel implements Serializable {
      */
     private String firmName;
 
+    /**
+     * 联系人id
+     */
+    private Long contactsId;
+
     /**
      * 联系人姓名
      */

+ 3 - 3
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/AcceptanceOrderParam.java

@@ -26,15 +26,15 @@ public class AcceptanceOrderParam {
     private Long id;
 
     @NotNull(message = "订单总量不能为空")
-    @DecimalMin(value = "0.00",message = "订单总量最小为零")
+    @DecimalMin(value = "0.01",message = "订单总量必须大于零")
     private BigDecimal amount;
 
     @NotNull(message = "订单成交单价不能为空")
-    @DecimalMin(value = "0.00",message = "订单成交单价最小为零")
+    @DecimalMin(value = "0.01",message = "订单成交单价必须大于零")
     private BigDecimal unitPrice;
 
     @NotNull(message = "订单金额不能为空")
-    @DecimalMin(value = "0.00",message = "订单金额最小为零")
+    @DecimalMin(value = "0.01",message = "订单金额必须大于零")
     private BigDecimal price;
 
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")

+ 6 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/UnitInfo.java

@@ -37,6 +37,12 @@ public class UnitInfo {
     @NotBlank(message = "企业名称不能为空")
     private String firmName;
 
+    /**
+     * 联系人id
+     */
+    @NotNull(message = "联系人id不能为空")
+    private Long contactsId;
+
     /**
      * 联系人姓名
      */

+ 16 - 8
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -520,19 +520,23 @@ public class KwoTradeOrderService {
         //单位信息
         List<KwoTradeOrderUnit> units = kwoTradeOrderUnitService.getByOrderId(id);
         if (CollectionUtils.isNotEmpty(units)) {
-            List<UnitInfoDetailRes> unitInfos = BeanUtils.copyToList(units, UnitInfoDetailRes.class);
-            unitInfos.forEach(e -> {
-                e.setUnitTypeLabel(DictEnum.getLabel(DictTypeEnum.TORDER_UNIT_TYPE.getType(), e.getUnitType()));
+            List<UnitInfoDetailRes> unitInfos = new ArrayList<>(units.size());
+            units.forEach(e -> {
+                UnitInfoDetailRes unit = BeanUtils.copyProperties(e, UnitInfoDetailRes.class);
+                unit.setUnitTypeLabel(DictEnum.getLabel(DictTypeEnum.TORDER_UNIT_TYPE.getType(), unit.getUnitType()));
+                unitInfos.add(unit);
             });
             detail.setUnitInfo(unitInfos);
         }
         //地址信息
         List<KwoTradeOrderAddress> addressList = kwoTradeOrderAddressService.getByOrderId(id);
         if (CollectionUtils.isNotEmpty(addressList)) {
-            List<AddressInfoDetailRes> addressInfoDetails = BeanUtils.copyToList(addressList, AddressInfoDetailRes.class);
-            addressInfoDetails.forEach(e -> {
-                e.setAddressTypeLabel(DictEnum.getLabel(DictTypeEnum.TORDER_ADDRESS_TYPE.getType(), e.getAddressType()));
-                e.setTypeLabel(DictEnum.getLabel(DictTypeEnum.ADDRESS_TYPE.getType(), e.getType()));
+            List<AddressInfoDetailRes> addressInfoDetails = new ArrayList<>(addressList.size());
+            addressList.forEach(e -> {
+                AddressInfoDetailRes address = BeanUtils.copyProperties(e, AddressInfoDetailRes.class);
+                address.setAddressTypeLabel(DictEnum.getLabel(DictTypeEnum.TORDER_ADDRESS_TYPE.getType(), address.getAddressType()));
+                address.setTypeLabel(DictEnum.getLabel(DictTypeEnum.ADDRESS_TYPE.getType(), address.getType()));
+                addressInfoDetails.add(address);
             });
             detail.setAddressInfo(addressInfoDetails);
         }
@@ -681,6 +685,9 @@ public class KwoTradeOrderService {
             if (StringUtils.isBlank(e.getFirmName())) {
                 throw new BusinessException("企业名称不能为空!");
             }
+            if (Objects.isNull(e.getContactsId())) {
+                throw new BusinessException("联系人id不能为空!");
+            }
             if (StringUtils.isBlank(e.getContacts())) {
                 throw new BusinessException("联系人姓名不能为空!");
             }
@@ -940,7 +947,8 @@ public class KwoTradeOrderService {
         }
         //排除草稿状态权限匹配
         List<Long> filterIds = list.stream().filter(e -> !(Objects.equals(e.getStatus(), 0))).map(KwoTradeOrder::getId).toList();
-        if (kwoTradeOrderUnitService.entBatchMatch(filterIds, LoginUserHolder.getEntId(), String.valueOf(param.getOrderType()))) {
+        if (CollectionUtils.isNotEmpty(filterIds) &&
+                kwoTradeOrderUnitService.entBatchMatch(filterIds, LoginUserHolder.getEntId(), String.valueOf(param.getOrderType()))) {
             throw new BusinessException("无订单操作权限!");
         }
         LambdaUpdateWrapper<KwoTradeOrder> updateWrapper = new LambdaUpdateWrapper<>();

+ 2 - 0
sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderUnitMapper.xml

@@ -12,6 +12,7 @@
             ent_id,
             top_ent_id,
             firm_name,
+            contacts_id,
             contacts,
             phone,
             remark,
@@ -32,6 +33,7 @@
                 #{item.entId,jdbcType=VARCHAR},
                 #{item.topEntId,jdbcType=VARCHAR},
                 #{item.firmName,jdbcType=VARCHAR},
+                #{item.contactsId,jdbcType=BIGINT},
                 #{item.contacts,jdbcType=VARCHAR},
                 #{item.phone,jdbcType=VARCHAR},
                 #{item.remark,jdbcType=VARCHAR},

+ 7 - 8
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -178,13 +178,13 @@ public class KwpLedgerLogisticsService extends AbsLedger {
             logisticsReq.setGenerateTime(LocalDateTime.now());
             logisticsReq.setStatus(LedgerEnum.TO_LEDGER.getStatus());
             Long aLong = saveDraft(logisticsReq);
-            logisticsTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerTrackEnum.TO_LEDGER);
+            logisticsTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerEnum.TO_LEDGER);
         } else {
             removeDraft(Long.parseLong(id));
             logisticsReq.setGenerateTime(LocalDateTime.now());
             logisticsReq.setStatus(LedgerEnum.TO_LEDGER.getStatus());
             Long aLong = saveDraft(logisticsReq);
-            logisticsTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerTrackEnum.TO_LEDGER);
+            logisticsTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerEnum.TO_LEDGER);
 
         }
         return "保存对账单成功";
@@ -363,7 +363,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         logisticsReq.setGenerateTime(null);
         logisticsReq.setStatus(LedgerEnum.SAVE.getStatus());
         Long aLong = saveDraft(logisticsReq);
-        logisticsTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerTrackEnum.SAVE);
+        logisticsTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerEnum.SAVE);
         return "草稿保存成功";
     }
 
@@ -394,7 +394,6 @@ public class KwpLedgerLogisticsService extends AbsLedger {
             throw new BusinessException(httpResult.getMsg());
         }
         logisticsOrderService.remove(id);
-        logisticsTrackService.saveTrack(id, Global.EMPTY_STRING, LedgerTrackEnum.DELETE);
         return "删除成功";
     }
 
@@ -416,7 +415,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpLedgerLogistics.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
         logisticsMapper.updateById(kwpLedgerLogistics);
-        logisticsTrackService.saveTrack(id, Global.EMPTY_STRING, LedgerTrackEnum.REVOKE);
+        logisticsTrackService.saveTrack(id, Global.EMPTY_STRING, LedgerEnum.REVOCATION);
         return "撤回成功";
     }
 
@@ -450,7 +449,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpLedgerLogistics.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
         logisticsMapper.updateById(kwpLedgerLogistics);
-        logisticsTrackService.saveTrack(ledgerReq.getIdLong(), ledgerReq.getRemark(), LedgerTrackEnum.REJECT);
+        logisticsTrackService.saveTrack(ledgerReq.getIdLong(), ledgerReq.getRemark(), LedgerEnum.BACK);
         return "驳回成功";
     }
 
@@ -473,7 +472,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
         kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
         kwpLedgerLogistics.setUpdateBy(LoginUserHolder.getUserId());
         logisticsMapper.updateById(kwpLedgerLogistics);
-        logisticsTrackService.saveTrack(confirmReq.getIdLong(), Global.EMPTY_STRING, LedgerTrackEnum.CONFIRM);
+        logisticsTrackService.saveTrack(confirmReq.getIdLong(), Global.EMPTY_STRING, LedgerEnum.LEDGERED);
         return "对账确认成功";
     }
 
@@ -529,7 +528,7 @@ public class KwpLedgerLogisticsService extends AbsLedger {
 
         settlementLogisticsService.save(kwpSettlementLogistics);
 
-        logisticsTrackService.saveTrack(ledgerReq.getIdLong(), Global.EMPTY_STRING, LedgerTrackEnum.SUCCESS);
+        logisticsTrackService.saveTrack(ledgerReq.getIdLong(), Global.EMPTY_STRING, LedgerEnum.SUCCESS);
         return "对账完成";
     }
 

+ 2 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsTrackService.java

@@ -6,6 +6,7 @@ import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.payment.dao.KwpLedgerLogisticsTrackMapper;
 import com.sckw.payment.model.KwpLedgerLogisticsTrack;
+import com.sckw.payment.model.constant.LedgerEnum;
 import com.sckw.payment.model.constant.LedgerTrackEnum;
 import jakarta.validation.constraints.NotNull;
 import lombok.AllArgsConstructor;
@@ -30,7 +31,7 @@ public class KwpLedgerLogisticsTrackService {
      * @param remark      备注
      * @param status      状态值
      */
-    public void saveTrack(Long l_ledger_id, String remark, LedgerTrackEnum status) {
+    public void saveTrack(Long l_ledger_id, String remark, LedgerEnum status) {
         KwpLedgerLogisticsTrack kwpLedgerLogisticsTrack = new KwpLedgerLogisticsTrack();
         kwpLedgerLogisticsTrack.setId(new IdWorker(NumberConstant.ONE).nextId());
         kwpLedgerLogisticsTrack.setLLedgerId(l_ledger_id);

+ 7 - 9
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java

@@ -339,7 +339,7 @@ public class KwpLedgerTradeService extends AbsLedger {
             tradeSendReq.setGenerateTime(LocalDateTime.now());
             tradeSendReq.setStatus(LedgerEnum.TO_LEDGER.getStatus());
             Long aLong = saveDraft(tradeSendReq);
-            tradeTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerTrackEnum.TO_LEDGER);
+            tradeTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerEnum.TO_LEDGER);
         } else {
             //先删除
             removeDraft(tradeSendReq.getIdLong());
@@ -347,7 +347,7 @@ public class KwpLedgerTradeService extends AbsLedger {
             tradeSendReq.setGenerateTime(LocalDateTime.now());
             tradeSendReq.setStatus(LedgerEnum.TO_LEDGER.getStatus());
             Long aLong = saveDraft(tradeSendReq);
-            tradeTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerTrackEnum.TO_LEDGER);
+            tradeTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerEnum.TO_LEDGER);
 
         }
         return "保存对账单成功";
@@ -365,7 +365,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         tradeSendReq.setGenerateTime(null);
         tradeSendReq.setStatus(LedgerEnum.SAVE.getStatus());
         Long aLong = saveDraft(tradeSendReq);
-        tradeTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerTrackEnum.SAVE);
+        tradeTrackService.saveTrack(aLong, Global.EMPTY_STRING, LedgerEnum.SAVE);
         return "草稿保存成功";
     }
 
@@ -400,8 +400,6 @@ public class KwpLedgerTradeService extends AbsLedger {
             updateAssociateStatementParam.setUpdateByName(LoginUserHolder.getUserName());
             tradeOrderInfoService.updateAssociateStatement(updateAssociateStatementParam);
         }
-        //记录操作记录
-        tradeTrackService.saveTrack(kwpLedgerTrade.getId(), Global.EMPTY_STRING, LedgerTrackEnum.DELETE);
         return "删除成功";
     }
 
@@ -422,7 +420,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
         tradeMapper.updateById(kwpLedgerTrade);
 
-        tradeTrackService.saveTrack(id, Global.EMPTY_STRING, LedgerTrackEnum.REVOKE);
+        tradeTrackService.saveTrack(id, Global.EMPTY_STRING, LedgerEnum.REVOCATION);
         return "撤回成功";
     }
 
@@ -455,7 +453,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         kwpLedgerTrade.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
         tradeMapper.updateById(kwpLedgerTrade);
-        tradeTrackService.saveTrack(ledgerReq.getIdLong(), ledgerReq.getRemark(), LedgerTrackEnum.REJECT);
+        tradeTrackService.saveTrack(ledgerReq.getIdLong(), ledgerReq.getRemark(), LedgerEnum.BACK);
         return "驳回成功";
     }
 
@@ -478,7 +476,7 @@ public class KwpLedgerTradeService extends AbsLedger {
         kwpLedgerTrade.setUpdateBy(LoginUserHolder.getUserId());
         kwpLedgerTrade.setUpdateTime(LocalDateTime.now());
         tradeMapper.updateById(kwpLedgerTrade);
-        tradeTrackService.saveTrack(confirmReq.getIdLong(), Global.EMPTY_STRING, LedgerTrackEnum.CONFIRM);
+        tradeTrackService.saveTrack(confirmReq.getIdLong(), Global.EMPTY_STRING, LedgerEnum.LEDGERED);
         return "对账确认成功";
     }
 
@@ -547,7 +545,7 @@ public class KwpLedgerTradeService extends AbsLedger {
             tradeOrderInfoService.updateOrderStatus(updateOrderStatusParam);
         }
         //保存操作记录
-        tradeTrackService.saveTrack(id, Global.EMPTY_STRING, LedgerTrackEnum.SUCCESS);
+        tradeTrackService.saveTrack(id, Global.EMPTY_STRING, LedgerEnum.SUCCESS);
         return "对账完成";
     }
 

+ 2 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeTrackService.java

@@ -6,6 +6,7 @@ import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.payment.dao.KwpLedgerTradeTrackMapper;
 import com.sckw.payment.model.KwpLedgerTradeTrack;
+import com.sckw.payment.model.constant.LedgerEnum;
 import com.sckw.payment.model.constant.LedgerTrackEnum;
 import jakarta.validation.constraints.NotNull;
 import lombok.AllArgsConstructor;
@@ -31,7 +32,7 @@ public class KwpLedgerTradeTrackService {
      * @param remark      备注
      * @param status      状态值
      */
-    public void saveTrack(Long t_ledger_id, String remark, LedgerTrackEnum status) {
+    public void saveTrack(Long t_ledger_id, String remark, LedgerEnum status) {
         KwpLedgerTradeTrack tradeTrack = new KwpLedgerTradeTrack();
         tradeTrack.setId(new IdWorker(NumberConstant.ONE).nextId());
         tradeTrack.setTLedgerId(t_ledger_id);

+ 1 - 1
sckw-modules/sckw-payment/src/main/resources/mapper/KwpLedgerTradeMapper.xml

@@ -381,7 +381,7 @@
         </where>
     </select>
     <update id="updatePrice">
-        update kwp_settlement_trade
+        update kwp_ledger_trade
         set actual_price = IFNULL(actual_price,0) + #{totalPrice,jdbcType=DECIMAL}
         where id = #{id,jdbcType=BIGINT}
     </update>

+ 4 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -267,7 +267,6 @@ public class KwOrderService {
         Long entId = LoginUserHolder.getEntId();
         String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
         List<Integer> status = Arrays.asList(1, 4, 5, 7);
-        Query query = new Query();
         Criteria criteria = new Criteria();
         criteria.and(topEnt).is(entId).and("status").in(status).and("delFlag").is(0);
         Aggregation aggregation = Aggregation.newAggregation(
@@ -424,12 +423,15 @@ public class KwOrderService {
             OrderListRes order = BeanUtils.copyProperties(e, OrderListRes.class);
             order.setStatusLabel(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(e.getStatus())))
                     .setTrading(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
+                    .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
                     .setDeliveryType(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
+                    .setDeliveryTypeLabel(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
                     .setPickupTypeLabel(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
                     .setLoadDetailAddressInfo(loadCityName + loadDetailAddress)
                     .setUnloadDetailAddressInfo(unloadCityName + unloadDetailAddress)
                     .setWaitEntrustAmount(getWaitEntrustAmount(e.getAmount(), e.getActualAmount()))
-                    .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()));
+                    .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()))
+                    .setSourceLabel(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()));
             result.add(order);
         });
         return PageResult.build(params.getPage(), params.getPageSize(), count, result);

+ 15 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java

@@ -62,10 +62,20 @@ public class OrderListRes {
      * 交易方式(预付款、货到付款)
      */
     private String trading;
+
+    /**
+     * 交易方式label
+     */
+    private String tradingLabel;
     /**
      * 交付类型(签发交付、签收交付)
      */
     private String deliveryType;
+
+    /**
+     * 交付类型label
+     */
+    private String deliveryTypeLabel;
     /**
      * 提货方式(采方自提、供应配送)
      */
@@ -79,6 +89,11 @@ public class OrderListRes {
      */
     private String source;
 
+    /**
+     * 下单方式label
+     */
+    private String sourceLabel;
+
     /**
      * 合同主键
      */

+ 13 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/WaybillManagementController.java

@@ -2,7 +2,9 @@ package com.sckw.transport.controller;
 
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.transport.model.dto.AddressDropListDTO;
 import com.sckw.transport.model.dto.WaybillOrderDTO;
+import com.sckw.transport.model.dto.WaybillOrderTicketApprovalDto;
 import com.sckw.transport.service.WaybillManagementService;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
@@ -68,4 +70,15 @@ public class WaybillManagementController {
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }
+
+    /**
+     * @desc 获取企业地址信息
+     * @author zk
+     * @date 2023/9/1
+     **/
+    @GetMapping("/findAddressList")
+    public HttpResult findAddressList(){
+        AddressDropListDTO addresss = waybillManagementService.findAddressList();
+        return HttpResult.ok(addresss);
+    }
 }

+ 10 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderAddressMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.transport.model.KwtWaybillOrderAddress;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import java.util.List;
 
 @Mapper
 public interface KwtWaybillOrderAddressMapper extends BaseMapper<KwtWaybillOrderAddress> {
@@ -18,4 +19,13 @@ public interface KwtWaybillOrderAddressMapper extends BaseMapper<KwtWaybillOrder
      * @date 2023/7/20
      **/
     KwtWaybillOrderAddress findByAddress(@Param("wOrderId") Long wOrderId, @Param("addressType") Integer addressType);
+
+    /**
+     * @param entId 企业信息
+     * @param addressType 地址类型(1装货地址、2卸货地址)
+     * @desc 查询车辆运单装卸货地址CODE
+     * @author zk
+     * @date 2023/7/20
+     **/
+    List<Integer> findAddressCodeList(@Param("entId") Long entId, @Param("addressType") Integer addressType);
 }

+ 20 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddOrderDTO.java

@@ -217,6 +217,16 @@ public class AddOrderDTO {
     @Length(max = 200, message = "单据编号长度错误最大长度:{max}")
     private String remark;
 
+    /**
+     *装货地址id
+     */
+    private String loadId;
+
+    /**
+     *装货地址名称
+     */
+    private String loadName;
+
     /**
      * 装货城市编码
      */
@@ -259,6 +269,16 @@ public class AddOrderDTO {
      */
     private String loadLng;
 
+    /**
+     *卸货地址id
+     */
+    private String unloadId;
+
+    /**
+     *卸货地址名称
+     */
+    private String unloadName;
+
     /**
      * 卸货城市编码
      */

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/DriverListVo.java

@@ -38,6 +38,11 @@ public class DriverListVo {
      */
     private Integer transportStatus;
 
+    /**
+     * 运力状态(0空闲/1任务中)
+     */
+    private String transportStatusLabel;
+
     /**
      * 运输次数
      */

+ 24 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/SckwLogisticsOrderVO.java

@@ -88,6 +88,11 @@ public class SckwLogisticsOrderVO {
      */
     private String unit;
 
+    /**
+     * 单位(吨、方、箱、件)
+     */
+    private String unitLabel;
+
     /**
      * 合理损耗
      */
@@ -97,6 +102,10 @@ public class SckwLogisticsOrderVO {
      * 合理损耗单位(‰/kG)
      */
     private String lossUnit;
+    /**
+     * 合理损耗单位(‰/kG)
+     */
+    private String lossUnitLabel;
 
     /**
      * 商品价值(扣亏货值)
@@ -108,6 +117,11 @@ public class SckwLogisticsOrderVO {
      */
     private String goodsPriceUnit;
 
+    /**
+     * 商品价值(扣亏货值)单位
+     */
+    private String goodsPriceUnitLabel;
+
     /**
      * 卸货日期
      */
@@ -259,6 +273,11 @@ public class SckwLogisticsOrderVO {
      */
     private String contractSigningWay;
 
+    /**
+     * 托运企业主键ID
+     */
+    private Long checkId;
+
     /**
      * 托运企业主键ID
      */
@@ -284,6 +303,11 @@ public class SckwLogisticsOrderVO {
      */
     private String checkPhone;
 
+    /**
+     * 承运企业主键ID
+     */
+    private Long carrierId;
+
     /**
      * 承运企业主键ID
      */

+ 13 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVO.java

@@ -43,6 +43,19 @@ public class WaybillDetailVO {
      * 亏吨量
      */
     private BigDecimal deficitAmount;
+
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+
+    /**
+     * 单位翻译
+     */
+    private String unitLabel;
+
     /**
      * 合理损耗
      */

+ 3 - 9
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillSimpleDataVO.java

@@ -16,7 +16,7 @@ public class WaybillSimpleDataVO {
      * 运单ID
      */
     @JsonProperty("wOrderId")
-    private String wOrderId;
+    private Long wOrderId;
 
     /**
      * 运单号
@@ -24,12 +24,6 @@ public class WaybillSimpleDataVO {
     @JsonProperty("wOrderNo")
     private String wOrderNo;
 
-    /**
-     * 承运单号
-     */
-    @JsonProperty("lOrderNo")
-    private String lOrderNo;
-
     /**
      * 车辆ID
      */
@@ -38,7 +32,7 @@ public class WaybillSimpleDataVO {
     /**
      * 运单状态
      */
-    private String status;
+    private Integer status;
 
     /**
      * 车牌号
@@ -74,7 +68,7 @@ public class WaybillSimpleDataVO {
      * 承运单ID
      */
     @JsonProperty("lOrderId")
-    private String lOrderId;
+    private Long lOrderId;
 
     /**
      * 进度数据

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

@@ -825,6 +825,11 @@ public class AcceptCarriageOrderService {
                 }
             }
         }
+        vo.setUnit(kwtLogisticsOrder.getUnit());
+        if (kwtLogisticsOrder.getUnit() != null) {
+            SysDictResDto dictResDto = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.UNIT_TYPE.getType(), kwtLogisticsOrder.getUnit());
+            vo.setUnitLabel(dictResDto == null ? null : dictResDto.getLabel());
+        }
         vo.setWaybillType(waybillOrder.getType());
         vo.setDeficitAmount(waybillOrder.getDeficitAmount());
         vo.setLoss(kwtLogisticsOrder.getLoss());
@@ -888,6 +893,13 @@ public class AcceptCarriageOrderService {
             //联查数据
             if (CollectionUtils.isNotEmpty(list)) {
                 for (SubcontractConsignmentVO subcontractConsignmentVO : list) {
+                    //关联父级承运单据号
+                    if (subcontractConsignmentVO.getPid() != null) {
+                        KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>().eq(KwtLogisticsOrder::getId, subcontractConsignmentVO.getPid()));
+                        if (kwtLogisticsOrder != null) {
+                            subcontractConsignmentVO.setCarrierOrderNo(kwtLogisticsOrder.getLOrderNo());
+                        }
+                    }
                     subcontractConsignmentVO.setStatusLabel(LogisticsOrderEnum.getDestination(subcontractConsignmentVO.getStatus()));
                     if (subcontractConsignmentVO.getPriceType() != null) {
                         subcontractConsignmentVO.setPriceTypeLabel(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getPriceType()));
@@ -986,8 +998,14 @@ public class AcceptCarriageOrderService {
             }
             for (DriverListVo driverListVo : list) {
                 if (!ObjectUtils.isEmpty(truck)) {
-                    driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+                    if (truck.get(driverListVo.getTruckNo()) != null) {
+                        driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+                    }
+                    if (driverListVo.getTransportStatus() != null) {
+                        driverListVo.setTransportStatusLabel((driverListVo.getTransportStatus() == 0) ? "空闲" : "任务中");
+                    }
                     driverListVo.setCarType(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getTruckType());
+//                    driverListVo.setCount(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getTotalComplete());
                 }
             }
             result.setData(list);
@@ -1001,7 +1019,13 @@ public class AcceptCarriageOrderService {
             }
             for (DriverListVo driverListVo : list) {
                 if (!ObjectUtils.isEmpty(truck)) {
-                    driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+//                    driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+                    if (truck.get(driverListVo.getTruckNo()) != null) {
+                        driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+                    }
+                    if (driverListVo.getTransportStatus() != null) {
+                        driverListVo.setTransportStatusLabel((driverListVo.getTransportStatus() == 0) ? "空闲" : "任务中");
+                    }
                     driverListVo.setCarType(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getTruckType());
                 }
             }
@@ -1282,10 +1306,12 @@ public class AcceptCarriageOrderService {
 //        if (totalLoadAmount.compareTo(orderFinishDTO.getLoadAmount()) < 0) {
 //            throw new BusinessException("完结订单,实装量不能大于分配量");
 //        }
-        BigDecimal amount = logisticsOrder.getAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getAmount();
-        if (amount.compareTo(orderFinishDTO.getLoadAmount()) < 0) {
-            throw new BusinessException("完结订单,装货量不能大于运输总量");
-        }
+
+        //todo 2023-09-01 根据要求去除校验 物流订单手动完结,实装量可大于分配量,实卸量目前暂定不可大于实装量;根据计费方式,当对应实装或实卸大于分配量时自然完结
+//        BigDecimal amount = logisticsOrder.getAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getAmount();
+//        if (amount.compareTo(orderFinishDTO.getLoadAmount()) < 0) {
+//            throw new BusinessException("完结订单,装货量不能大于运输总量");
+//        }
         if (orderFinishDTO.getUnloadAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
             throw new BusinessException("完结订单,填写卸货量不能大于装货量");
         }
@@ -1363,7 +1389,7 @@ public class AcceptCarriageOrderService {
         }
 
         //修改合同履约量
-        commonService.updatePerformed(logisticsOrder,orderFinishDTO.getLoadAmount(),orderFinishDTO.getUnloadAmount());
+        commonService.updatePerformed(logisticsOrder, orderFinishDTO.getLoadAmount(), orderFinishDTO.getUnloadAmount());
 
         //修改mongodb的数据
         updateMongoDbByLogisticsOrder(logisticsOrder.getId(), orderFinishDTO, ignoreAmount);
@@ -2032,7 +2058,7 @@ public class AcceptCarriageOrderService {
         loadAddress.setId(new IdWorker(NumberConstant.ONE).nextId());
         loadAddress.setLOrderId(lOrderId);
         loadAddress.setAddressType(NumberConstant.ONE);
-//        loadAddress.setName();
+        loadAddress.setName(orderDTO.getLoadName() == null ? null : orderDTO.getLoadName());
 //        loadAddress.setType();
         loadAddress.setContacts(orderDTO.getLoadContacts());
         loadAddress.setPhone(orderDTO.getLoadPhone());
@@ -2053,7 +2079,7 @@ public class AcceptCarriageOrderService {
         unloadAddress.setId(new IdWorker(NumberConstant.TWO).nextId());
         unloadAddress.setLOrderId(lOrderId);
         unloadAddress.setAddressType(NumberConstant.TWO);
-//        unloadAddress.setName();
+        unloadAddress.setName(orderDTO.getUnloadName() == null ? null : orderDTO.getUnloadName());
 //        unloadAddress.setType();
         unloadAddress.setContacts(orderDTO.getUnloadContacts());
         unloadAddress.setPhone(orderDTO.getUnloadPhone());

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

@@ -488,7 +488,13 @@ public class ConsignOrderService {
                 List<String> objects = new ArrayList<>();
                 objects.add(driverListVo.getTruckNo());
                 if (!ObjectUtils.isEmpty(truck)) {
-                    driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+//                    driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+                    if (truck.get(driverListVo.getTruckNo()) != null) {
+                        driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+                    }
+                    if (driverListVo.getTransportStatus() != null) {
+                        driverListVo.setTransportStatusLabel((driverListVo.getTransportStatus() == 0) ? "空闲" : "任务中");
+                    }
                     driverListVo.setCarType(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getTruckType());
                 }
             }
@@ -526,7 +532,13 @@ public class ConsignOrderService {
             List<String> objects = new ArrayList<>();
             objects.add(driverListVo.getTruckNo());
             if (!ObjectUtils.isEmpty(truck)) {
-                driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+//                driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+                if (truck.get(driverListVo.getTruckNo()) != null) {
+                    driverListVo.setTransportStatus(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getBusinessStatus());
+                }
+                if (driverListVo.getTransportStatus() != null) {
+                    driverListVo.setTransportStatusLabel((driverListVo.getTransportStatus() == 0) ? "空闲" : "任务中");
+                }
                 driverListVo.setCarType(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getTruckType());
             }
         }
@@ -743,10 +755,11 @@ public class ConsignOrderService {
 //        if (totalLoadAmount.compareTo(orderFinishDTO.getLoadAmount()) < 0) {
 //            throw new BusinessException("完结订单,实装量不能大于分配量");
 //        }
-        BigDecimal amount = logisticsOrder.getAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getAmount();
-        if (amount.compareTo(orderFinishDTO.getLoadAmount()) < 0) {
-            throw new BusinessException("完结订单,装货量不能大于运输总量");
-        }
+        //todo 2023-09-01 根据要求去除校验 物流订单手动完结,实装量可大于分配量,实卸量目前暂定不可大于实装量;根据计费方式,当对应实装或实卸大于分配量时自然完结
+//        BigDecimal amount = logisticsOrder.getAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getAmount();
+//        if (amount.compareTo(orderFinishDTO.getLoadAmount()) < 0) {
+//            throw new BusinessException("完结订单,装货量不能大于运输总量");
+//        }
         if (orderFinishDTO.getUnloadAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
             throw new BusinessException("完结订单,填写卸货量不能大于装货量");
         }
@@ -1270,7 +1283,7 @@ public class ConsignOrderService {
         loadAddress.setId(new IdWorker(NumberConstant.ONE).nextId());
         loadAddress.setLOrderId(lOrderId);
         loadAddress.setAddressType(NumberConstant.ONE);
-//        loadAddress.setName();
+        loadAddress.setName(addOrderDTO.getLoadName() == null ? null : addOrderDTO.getLoadName());
 //        loadAddress.setType();
         loadAddress.setContacts(addOrderDTO.getLoadContacts());
         loadAddress.setPhone(addOrderDTO.getLoadPhone());
@@ -1291,7 +1304,7 @@ public class ConsignOrderService {
         unloadAddress.setId(new IdWorker(NumberConstant.TWO).nextId());
         unloadAddress.setLOrderId(lOrderId);
         unloadAddress.setAddressType(NumberConstant.TWO);
-//        unloadAddress.setName();
+        unloadAddress.setName(addOrderDTO.getUnloadName() == null ? null : addOrderDTO.getUnloadName());
 //        unloadAddress.setType();
         unloadAddress.setContacts(addOrderDTO.getUnloadContacts());
         unloadAddress.setPhone(addOrderDTO.getUnloadPhone());

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -1178,7 +1178,7 @@ public class KwtWaybillOrderService {
 
             /**4更新循环派车数据**/
             circulate.setWOrderId(waybillOrder.getId());
-            circulate.setTotalTake(circulate.getTotalTake() != null ? circulate.getTotalTake() + Global.NUMERICAL_ONE : Global.NUMERICAL_ZERO);
+            circulate.setTotalTake(circulate.getTotalTake() != null ? circulate.getTotalTake() + Global.NUMERICAL_ONE : Global.NUMERICAL_ONE);
             logisticsOrderCirculateDao.updateById(circulate);
 
             /**5Mongodb数据更新**/

+ 5 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

@@ -1166,10 +1166,11 @@ public class LogisticsConsignmentService {
         if (logisticsOrder == null) {
             throw new BusinessException("采购订单-完结订单-物流单据不存在!");
         }
-        BigDecimal amount = logisticsOrder.getAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getAmount();
-        if (amount.compareTo(orderFinishDTO.getLoadAmount()) < 0) {
-            throw new BusinessException("完结订单,装货量不能大于运输总量");
-        }
+        //todo 2023-09-01 根据要求去除校验 物流订单手动完结,实装量可大于分配量,实卸量目前暂定不可大于实装量;根据计费方式,当对应实装或实卸大于分配量时自然完结
+//        BigDecimal amount = logisticsOrder.getAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getAmount();
+//        if (amount.compareTo(orderFinishDTO.getLoadAmount()) < 0) {
+//            throw new BusinessException("完结订单,装货量不能大于运输总量");
+//        }
         if (orderFinishDTO.getUnloadAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
             throw new BusinessException("完结订单,填写卸货量不能大于装货量");
         }

+ 27 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

@@ -27,6 +27,7 @@ import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 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.dao.*;
 import com.sckw.transport.model.*;
@@ -565,10 +566,32 @@ public class TransportCommonService {
         List<Long> contractIds = StringUtils.splitStrToList(contractParam.getContractIds(), Long.class);
         Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(Collections.singletonList(LoginUserHolder.getEntId()));
         List<SckwLogisticsOrderVO> list = logisticsOrderMapper.selectOrderListByContractId(contractParam.getContractType(), entMap.get(LoginUserHolder.getEntId()).getId(), contractIds);
-        List<SckwLogisticsOrderVO> returnList =new ArrayList<>();
-        if (CollectionUtils.isNotEmpty(list)){
-             returnList = list.stream().skip((contractParam.getPage() - 1) * contractParam.getPageSize()).limit(contractParam.getPageSize()).collect(Collectors.toList());
-
+        List<SckwLogisticsOrderVO> returnList = new ArrayList<>();
+        /**支付方式*/
+//        Map<String, String> dictResDtoMap = getDictData(DictTypeEnum.UNIT_TYPE.getType());
+        /**计量单位*/
+        Map<String, String> unitTypeDictData = getDictData(DictTypeEnum.TRADE_TYPE.getType());
+        /**运价方式*/
+//        Map<String, String> priceDictData = getDictData(DictTypeEnum.PRICE_TYPE.getType());
+        /**计费方式*/
+//        Map<String, String> chargingDictData = getDictData(DictTypeEnum.CHARGING_TYPE.getType());
+        /**结算周期*/
+        Map<String, String> settlementDictData = getDictData(DictTypeEnum.SETTLEMENT_CYCLE.getType());
+        /**签约方式*/
+//        Map<String, String> signingWay = getDictData(DictTypeEnum.SIGNING_TYPE.getType());
+        /**合理损耗*/
+        Map<String, String> taxRateTypeDictData = getDictData(DictTypeEnum.TAX_RATE_TYPE.getType());
+        if (CollectionUtils.isNotEmpty(list)) {
+            for (SckwLogisticsOrderVO vo : list) {
+                vo.setStatusLabel(LogisticsOrderEnum.getDestination(vo.getStatus()));
+                vo.setLossUnitLabel(vo.getLossUnit() == null ? null : taxRateTypeDictData.get(vo.getLossUnit()));
+                vo.setUnitLabel(vo.getUnit() == null ? null : unitTypeDictData.get(vo.getUnit()));
+                vo.setGoodsPriceUnitLabel(vo.getGoodsPriceUnit() == null ? null : unitTypeDictData.get(vo.getGoodsPriceUnit()));
+                vo.setSettlementCycleLabel(vo.getSettlementCycle() == null ? null : settlementDictData.get(vo.getSettlementCycle().toString()));
+                UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(vo.getCreateBy());
+                vo.setCreateByName(userCacheResDto == null ? null : userCacheResDto.getName());
+            }
+            returnList = list.stream().skip((contractParam.getPage() - 1) * contractParam.getPageSize()).limit(contractParam.getPageSize()).collect(Collectors.toList());
         }
         PageResult build = PageResult.build(contractParam.getPage(), contractParam.getPageSize(), list.stream().count(), returnList);
         return HttpResult.ok(build);

+ 83 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -16,11 +16,15 @@ import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.mongo.model.TableTops;
 import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.KwtLogisticsOrder;
+import com.sckw.transport.model.KwtLogisticsOrderCirculate;
+import com.sckw.transport.model.KwtWaybillOrder;
 import com.sckw.transport.model.KwtWaybillOrderTrack;
+import com.sckw.transport.model.dto.AddressDropListDTO;
 import com.sckw.transport.model.dto.WayBillDetailDTO;
 import com.sckw.transport.model.dto.WaybillListAppDTO;
 import com.sckw.transport.model.dto.WaybillOrderDTO;
@@ -69,6 +73,9 @@ public class WaybillManagementService {
     @Autowired
     public KwtWaybillOrderTicketMapper kwtWaybillOrderTicketMapper;
 
+    @Autowired
+    private KwtLogisticsOrderCirculateMapper orderCirculateDao;
+
     @Autowired
     public KwtWaybillOrderTrackMapper kwtWaybillOrderTrackMapper;
 
@@ -228,7 +235,60 @@ public class WaybillManagementService {
      * @return
      */
     public HttpResult waybillSimpleData(Long id){
+        // 数据校验
+        if (id == null) {
+            return HttpResult.error("车辆运单ID不能为空!");
+        }
         WaybillSimpleDataVO waybillSimpleDataVO = new WaybillSimpleDataVO();
+        KwtWaybillOrder waybillOrder = kwtWaybillOrderMapper.selectById(id);
+        if (waybillOrder != null) {
+            BeanUtils.copyPropertiesValue(waybillOrder, waybillSimpleDataVO);
+            waybillSimpleDataVO.setWOrderId(waybillOrder.getId());
+        } else {
+            KwtLogisticsOrderCirculate orderCirculate = orderCirculateDao.selectById(id);
+            if (orderCirculate == null) {
+                return HttpResult.error("车辆运单已不存在!");
+            }
+            BeanUtils.copyPropertiesValue(orderCirculate, waybillSimpleDataVO);
+            waybillSimpleDataVO.setWOrderId(orderCirculate.getId());
+        }
+
+        // 初始化各状态
+        List<WaybillStatusVO> statusVOS = new ArrayList<>();
+        List<Integer> statuses = initWaybillIndexStatus();
+        statuses.forEach(e -> {
+            WaybillStatusVO waybillStatusVO = new WaybillStatusVO();
+            waybillStatusVO.setStatus(false);
+            waybillStatusVO.setCode(e);
+            waybillStatusVO.setDestination(CarWaybillEnum.getName(e));
+            statusVOS.add(waybillStatusVO);
+        });
+
+        List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>().eq(KwtWaybillOrderTrack::getWOrderId, id));
+        if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
+            List<Long> userIds = new ArrayList<>();
+            kwtWaybillOrderTracks.forEach(e -> userIds.add(e.getCreateBy()));
+            List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
+            Map<Long, UserCacheResDto> usersMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            users.forEach(e -> usersMap.put(e.getId(), e));
+            for (KwtWaybillOrderTrack kwtWaybillOrderTrack : kwtWaybillOrderTracks) {
+                for (WaybillStatusVO statusVO : statusVOS) {
+                    if (statusVO.getCode().equals(kwtWaybillOrderTrack.getStatus())) {
+                        statusVO.setStatus(true);
+                        statusVO.setId(kwtWaybillOrderTrack.getId());
+                        statusVO.setCreateTime(DateUtil.getDateTime(kwtWaybillOrderTrack.getCreateTime()));
+                        statusVO.setOperateTime(kwtWaybillOrderTrack.getOperateTime() == null
+                                ? null : DateUtil.getDateTime(kwtWaybillOrderTrack.getOperateTime()));
+                        statusVO.setCreateByName(usersMap.get(kwtWaybillOrderTrack.getCreateBy()) == null
+                                ? null : usersMap.get(kwtWaybillOrderTrack.getCreateBy()).getName());
+                        break;
+                    }
+                }
+            }
+        }
+        waybillSimpleDataVO.setProcess(statusVOS);
+        return HttpResult.ok(waybillSimpleDataVO);
+        /*WaybillSimpleDataVO waybillSimpleDataVO = new WaybillSimpleDataVO();
         Criteria criteria = new Criteria();
         criteria.and("wOrderId").is(id);
         criteria.and("entId").is(LoginUserHolder.getEntId());
@@ -285,7 +345,7 @@ public class WaybillManagementService {
             }
         }
         waybillSimpleDataVO.setProcess(statusVOS);
-        return HttpResult.ok(waybillSimpleDataVO);
+        return HttpResult.ok(waybillSimpleDataVO);*/
     }
     /**
      * 运单看板列表
@@ -375,6 +435,7 @@ public class WaybillManagementService {
                         if(e.getCode().equals(e2.getStatus())) {
                             e.setStatus(true);
                             e.setId(e2.getId());
+                            e.setOperateTime(DateUtil.getDateTime(e2.getOperateTime()));
                             e.setCreateTime(DateUtil.getDateTime(e2.getCreateTime()));
                             e.setCreateByName(usersMap.get(e2.getCreateBy()) == null ? null : usersMap.get(e2.getCreateBy()));
                         }
@@ -644,4 +705,25 @@ public class WaybillManagementService {
         }
         return _list;
     }
+
+    /**
+     * @desc 获取企业地址信息
+     * @author zk
+     * @date 2023/9/1
+     **/
+    public AddressDropListDTO findAddressList() {
+        AddressDropListDTO res = new AddressDropListDTO();
+       //装货地址树
+        List<Integer> loadAddressList = kwtWaybillOrderAddressMapper.findAddressCodeList(LoginUserHolder.getEntId(), Global.NUMERICAL_ONE);
+        //卸货地址树
+        List<Integer> unloadAddressList = kwtWaybillOrderAddressMapper.findAddressCodeList(LoginUserHolder.getEntId(), Global.NUMERICAL_TWO);
+
+        //装货地址下拉列表树
+        List<AreaTreeFrontResDto> loadTree = remoteSystemService.queryAreaTreeFrontByCodeList(loadAddressList);
+        res.setLoadAddressList(loadTree);
+        //卸货地址下拉列表树
+        List<AreaTreeFrontResDto> unloadTree = remoteSystemService.queryAreaTreeFrontByCodeList(unloadAddressList);
+        res.setUnloadAddressList(unloadTree);
+        return res;
+    }
 }

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

@@ -104,9 +104,16 @@
     <select id="selectOrderListByContractId" resultType="com.sckw.transport.model.vo.SckwLogisticsOrderVO">
         SELECT
         a.STATUS,
+        a.id AS lOrderId,
         a.l_order_no AS lOrderNo,
         f.contract_no AS contractNo,
+        d.id as checkId,
+        d.ent_id as checkEntId,
+        d.top_ent_id as checkTopEntId,
         d.firm_name AS checkFirmName,
+        e.id as carrierId,
+        e.ent_id as carrierEntId,
+        e.top_ent_id as carrierTopEntId,
         e.firm_name AS carrierFirmName,
         g.goods_name AS goodsName,
         a.amount AS carryingCapacity,
@@ -115,7 +122,9 @@
         b.detail_address AS loadDetailAddress,
         a.payment AS payment,
         a.loss AS loss,
+        a.loss_unit AS lossUnit,
         a.goods_price AS goodsPrice,
+        a.goods_price_unit AS goodsPriceUnit,
         a.settlement_cycle AS settlementCycle,
         e.contacts AS carrierContacts,
         e.phone AS carrierPhone,
@@ -129,7 +138,8 @@
         a.end_time AS endTime,
         a.remark AS remark,
         a.create_by AS createBy,
-        a.create_time AS createTime
+        a.create_time AS createTime,
+        f.contract_id AS contractId
         FROM
         kwt_logistics_order a
         LEFT JOIN kwt_logistics_order_address b ON a.id = b.l_order_id
@@ -149,12 +159,12 @@
         AND f.del_flag = 0
         <where>
             a.del_flag = 0
-            <if test="type == 1">
-                and (d.top_ent_id = #{entId} or d.ent_id = #{entId})
-            </if>
-            <if test="type == 2">
-                and (e.top_ent_id = #{entId} or e.ent_id = #{entId})
-            </if>
+<!--            <if test="type == 1">-->
+<!--                and (d.top_ent_id = #{entId} or d.ent_id = #{entId})-->
+<!--            </if>-->
+<!--            <if test="type == 2">-->
+<!--                and (e.top_ent_id = #{entId} or e.ent_id = #{entId})-->
+<!--            </if>-->
             <if test="contractIds != null and contractIds.size() > 0">
                 and f.contract_id in
                 <foreach collection="contractIds" item="item" separator="," open="(" close=")">
@@ -338,7 +348,7 @@
                a.pid,
                a.`status`         as status,
                a.l_order_no       as consignOrderNo,
-               a.l_order_no       as carrierOrderNo,
+<!--               a.l_order_no       as carrierOrderNo,-->
                c.firm_name        as carrierCompany,
                d.goods_name       as goodsName,
                a.amount           as carryingCapacity,
@@ -447,7 +457,8 @@
     </select>
 
     <select id="selectDriverListById" resultType="com.sckw.transport.model.vo.DriverListVo">
-        SELECT a.id AS lOrderId,
+        SELECT COUNT( b.truck_no ) AS count,
+        a.id AS lOrderId,
         a.l_order_no AS lOrderNo,
         b.driver_id AS driverId,
         b.id AS wOrderId,
@@ -456,11 +467,23 @@
         b.driver_phone AS driverPhone,
         b.driver_idcard AS driverIdCard,
         b.truck_no AS truckNo
+        FROM
+        kwt_waybill_order b
+        LEFT JOIN kwt_logistics_order a ON b.l_order_id = a.id
+        <!--        SELECT a.id AS lOrderId,-->
+        <!--        a.l_order_no AS lOrderNo,-->
+        <!--        b.driver_id AS driverId,-->
+        <!--        b.id AS wOrderId,-->
+        <!--        b.w_order_no AS wOrderNo,-->
+        <!--        b.driver_name AS driverName,-->
+        <!--        b.driver_phone AS driverPhone,-->
+        <!--        b.driver_idcard AS driverIdCard,-->
+        <!--        b.truck_no AS truckNo-->
         <!--        ,-->
         <!--        COUNT( b.id ) AS count-->
-        FROM
-        kwt_waybill_order b,
-        kwt_logistics_order a
+<!--        FROM-->
+<!--        kwt_waybill_order b,-->
+<!--        kwt_logistics_order a-->
         <where>
             a.id = b.l_order_id
             AND a.del_flag = 0
@@ -483,8 +506,8 @@
                 </if>
                 )
             </if>
-            <!--        GROUP BY-->
-            <!--        b.truck_no-->
+            GROUP BY
+            b.truck_no
             <!--        a.l_order_no,-->
         </where>
     </select>

+ 11 - 0
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderAddressMapper.xml

@@ -176,4 +176,15 @@
         and w_order_id = #{wOrderId, jdbcType=BIGINT}
         and address_type = #{addressType, jdbcType=INTEGER}
     </select>
+
+    <select id="findAddressCodeList" resultType="java.lang.Integer" >
+        SELECT
+        DISTINCT kwoa.city_code
+        from kwt_waybill_order kwo
+        left join kwt_waybill_order_address kwoa on kwoa.w_order_id = kwo.id
+        where kwo.del_flag = 0 and kwoa.del_flag = 0
+        and kwo.ent_id = #{entId, jdbcType=BIGINT}
+        and kwoa.address_type = #{addressType, jdbcType=INTEGER}
+    </select>
+
 </mapper>