Преглед на файлове

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

zk преди 2 години
родител
ревизия
37126663de
променени са 14 файла, в които са добавени 182 реда и са изтрити 30 реда
  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. 14 7
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  10. 24 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/SckwLogisticsOrderVO.java
  11. 13 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVO.java
  12. 6 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  13. 27 4
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java
  14. 17 7
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.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;
+
     /**
      * 联系人姓名
      */

+ 14 - 7
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("联系人姓名不能为空!");
             }

+ 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;
+
     /**
      * 合理损耗
      */

+ 6 - 1
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());
@@ -1363,7 +1368,7 @@ public class AcceptCarriageOrderService {
         }
 
         //修改合同履约量
-        commonService.updatePerformed(logisticsOrder,orderFinishDTO.getLoadAmount(),orderFinishDTO.getUnloadAmount());
+        commonService.updatePerformed(logisticsOrder, orderFinishDTO.getLoadAmount(), orderFinishDTO.getUnloadAmount());
 
         //修改mongodb的数据
         updateMongoDbByLogisticsOrder(logisticsOrder.getId(), orderFinishDTO, ignoreAmount);

+ 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);

+ 17 - 7
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=")">