Sfoglia il codice sorgente

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

xucaiqin 2 anni fa
parent
commit
f11bc78b2c

+ 75 - 20
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java

@@ -253,7 +253,7 @@ public class CommonService {
      * @param appConsignUrl  app托运地址
      * @param pcCarriageUrl  PC承运地址
      * @param appCarriageUrl app承运地址
-     * @param type 1代表给托运创建人发 2代表给承运创建人发
+     * @param type           1代表给托运创建人发 2代表给承运创建人发
      */
     public void newSendLogisticsOrderToMessage(KwtLogisticsOrderUnit consignUnit, KwtLogisticsOrderUnit carriageUnit,
                                                String orderNo, Long createBy, Long entId,
@@ -269,25 +269,25 @@ public class CommonService {
         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);
+            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);
+            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);
+            sendLogisticsConsignMessage(consignUnit, map, pcConsignUrl, appConsignUrl, consignMessageEnum);
+            sendLogisticsCarriageMessage(carriageUnit, map, pcCarriageUrl, appCarriageUrl, carriageMessageEnum);
             if (type.equals("1")) {
-                sendLogisticsCreateByMessage(createBy, entId, map,pcConsignUrl,appConsignUrl,consignMessageEnum);
+                sendLogisticsCreateByMessage(createBy, entId, map, pcConsignUrl, appConsignUrl, consignMessageEnum);
             } else {
-                sendLogisticsCreateByMessage(createBy, entId, map, pcCarriageUrl, appCarriageUrl,carriageMessageEnum);
+                sendLogisticsCreateByMessage(createBy, entId, map, pcCarriageUrl, appCarriageUrl, carriageMessageEnum);
             }
 
         }
 
     }
 
-    private void sendLogisticsCreateByMessage(Long createBy, Long entId, Map<String, Object> map, String pcUrl, String appUrl,MessageEnum messageEnum) {
+    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<>();
@@ -311,7 +311,7 @@ public class CommonService {
         streamBridge.send("sckw-message", JSON.toJSONString(msg));
     }
 
-    private void sendLogisticsCarriageMessage(KwtLogisticsOrderUnit carriageUnit, Map<String, Object> map, String pcUrl, String appUrl,MessageEnum messageEnum) {
+    private void sendLogisticsCarriageMessage(KwtLogisticsOrderUnit carriageUnit, Map<String, Object> map, String pcUrl, String appUrl, MessageEnum messageEnum) {
         //给业务联系人发消息[承运方]
         List<UserInfo> userInfoList = new ArrayList<>();
         UserInfo userInfo = new UserInfo();
@@ -332,7 +332,7 @@ public class CommonService {
         streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
     }
 
-    private void sendLogisticsConsignMessage(KwtLogisticsOrderUnit consignUnit, Map<String, Object> map, String pcUrl, String appUrl,MessageEnum messageEnum) {
+    private void sendLogisticsConsignMessage(KwtLogisticsOrderUnit consignUnit, Map<String, Object> map, String pcUrl, String appUrl, MessageEnum messageEnum) {
         //给业务联系人发消息[托运方]
         List<UserInfo> list = new ArrayList<>();
         UserInfo userInfo = new UserInfo();
@@ -419,7 +419,10 @@ public class CommonService {
         sckwMessage.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT)
                 .setParams(map)
-                .setMsgUrls(new HashMap<>(){{put("app",consignLogisticsOrderUrl);put("pc",carriageLogisticsOrderUrl);}})
+                .setMsgUrls(new HashMap<>() {{
+                    put("app", consignLogisticsOrderUrl);
+                    put("pc", carriageLogisticsOrderUrl);
+                }})
                 .setUserInfos(userInfoList)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info("发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]-[承运方]-业务联系人:{}", JSON.toJSONString(sckwMessage));
@@ -435,7 +438,10 @@ public class CommonService {
         message.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(MessageEnum.NEW_CARRIAGE_ORDER)
                 .setParams(map)
-                .setMsgUrls(new HashMap<>(){{put("app",consignLogisticsOrderUrl);put("pc",carriageLogisticsOrderUrl);}})
+                .setMsgUrls(new HashMap<>() {{
+                    put("app", consignLogisticsOrderUrl);
+                    put("pc", carriageLogisticsOrderUrl);
+                }})
                 .setUserInfos(list)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info("发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]-[托运方]-业务联系人:{}", JSON.toJSONString(message));
@@ -463,10 +469,10 @@ public class CommonService {
         carriageUnit.setContactsId(Long.parseLong(addOrderDTO.getAcceptContactsId()));
         carriageUnit.setFirmName(addOrderDTO.getConsignCompany());
         carriageUnit.setTopEntId(acceptMap == null ? null : acceptMap.getId());
-        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"
+        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"
         );
 
     }
@@ -491,7 +497,10 @@ public class CommonService {
         sckwMessage.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(messageEnum)
                 .setParams(map)
-                .setMsgUrls(new HashMap<>(){{put("app",consignLogisticsOrderUrl);put("pc",carriageLogisticsOrderUrl);}})
+                .setMsgUrls(new HashMap<>() {{
+                    put("app", consignLogisticsOrderUrl);
+                    put("pc", carriageLogisticsOrderUrl);
+                }})
                 .setUserInfos(userInfoList)
                 .setCreateBy(LoginUserHolder.getUserId());
         log.info("托运订单/承运订单自建物流订单-业务联系人:{}", JSON.toJSONString(sckwMessage));
@@ -740,6 +749,52 @@ public class CommonService {
         streamBridge.send("sckw-message", JSON.toJSONString(message));
     }
 
+
+    /**
+     * @param loadAmount    装货量
+     * @param deficitAmount 亏吨量
+     * @param loss          合理损耗
+     * @desc 计算扣亏量
+     **/
+    public BigDecimal deficitAmount(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal entrustAmount, BigDecimal loss, String lossUnit) {
+        //亏吨<=0
+        if (deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {
+            return new BigDecimal(Global.AMOUNT);
+        }
+        //合理损耗
+        loss = loss == null ? new BigDecimal("0.00") : loss;
+        if (loss.doubleValue() > 0 && StringUtils.isNotBlank(lossUnit)) {
+            if (lossUnit.equals(String.valueOf(TaxRateTypeEnum.PERCENT.getCode()))) {
+                loss = loss.divide(new BigDecimal(TaxRateTypeEnum.PERCENT.getValue()));
+            }
+            if (lossUnit.equals(String.valueOf(TaxRateTypeEnum.MILLIMETER.getCode()))) {
+                loss = loss.divide(new BigDecimal(TaxRateTypeEnum.MILLIMETER.getValue()));
+            }
+        }
+        /**
+         * 一、罚款值计算:
+         * 1、合理损耗值=实装量*合理损耗(‰)
+         * 1.1 亏吨量= 实装量-实卸量
+         * 2、扣亏量=亏吨量-合理损耗值【要求大于0,如果小于0则扣亏货量取0】
+         * 3、罚款值=扣亏量 * 扣亏货值
+         *
+         * 二、运价计算:
+         * 1、按装货量:总运价=实装量*运价
+         * 2、按卸货量:总运价=实卸量*运价-罚款值
+         * 3、按趟次:总运价=运价*趟次【后期加】
+         */
+        loadAmount = loadAmount == null ? new BigDecimal("0.00") : loadAmount;
+        //已委托量
+        entrustAmount = entrustAmount == null ? new BigDecimal("0.00") : entrustAmount;
+        //合理损耗值
+        BigDecimal multiply = loadAmount.multiply(loss.divide(BigDecimal.valueOf(1000L)));
+        //亏吨量
+        deficitAmount = deficitAmount == null ? new BigDecimal("0.00") : deficitAmount;
+        //扣亏量/吨
+        deficitAmount = deficitAmount.compareTo(new BigDecimal("0.00")) == 0 ? new BigDecimal("0.00") : deficitAmount.subtract(multiply);
+        return deficitAmount;
+    }
+
     /**
      * @param loadAmount    装货量
      * @param deficitAmount 亏吨量
@@ -748,7 +803,7 @@ public class CommonService {
      * @author zk
      * @date 2023/7/27
      **/
-    public BigDecimal deficitPrice(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss,String lossUnit) {
+    public BigDecimal deficitPrice(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss, String lossUnit) {
         //亏吨<=0
         if (deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {
             return new BigDecimal(Global.AMOUNT);

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

@@ -648,6 +648,7 @@ public class ConsignOrderService {
                     BigDecimal defectiveWeigh = kwtWaybillOrder.getDeficitAmount() == null ? new BigDecimal("0.00") : kwtWaybillOrder.getDeficitAmount();
                     //扣亏量/吨
 //                    BigDecimal deduct = defectiveWeigh.compareTo(new BigDecimal("0.00")) == 0 ? new BigDecimal("0.00") : defectiveWeigh.subtract(multiply);
+//                    BigDecimal decimal = commonService.deficitAmount();
                     BigDecimal deduct = commonService.deficitPrice(loadAmount, defectiveWeigh, loss, order.getLossUnit());
                     carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
                     carWaybillVo.setWOrderNo(kwtWaybillOrder.getWOrderNo());

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

@@ -31,7 +31,6 @@ import com.sckw.stream.model.UserInfo;
 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.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.*;
@@ -2151,7 +2150,7 @@ public class KwtWaybillOrderService {
         //商品信息
         KwtLogisticsOrderGoods goods = logisticsOrderGoodsDao.findByGoods(waybillOrder.getLOrderId());
         //审批意见
-        KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrack(waybillOrder.getLOrderId(), CarWaybillEnum.APPROVAL_NO_PASS.getCode());
+        KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrack(waybillOrder.getId(), CarWaybillEnum.APPROVAL_NO_PASS.getCode());
 
         //用户数据集
         List<Long> createBys = new ArrayList() {{
@@ -2210,7 +2209,8 @@ public class KwtWaybillOrderService {
         }
         //已卸货/审批不通过车辆运单才能审核
         if (waybillOrder.getStatus() != CarWaybillEnum.COMPLETION_UNLOADING.getCode()
-                && waybillOrder.getStatus() != CarWaybillEnum.APPROVAL_NO_PASS.getCode()) {
+                && waybillOrder.getStatus() != CarWaybillEnum.APPROVAL_NO_PASS.getCode()
+                && waybillOrder.getStatus() != CarWaybillEnum.APPROVAL_IN.getCode()) {
             return HttpResult.error("车辆运单当前状态已不能审核!");
         }
         //已卸货/审批不通过车辆运单只能审批通过或审批不通过
@@ -2295,7 +2295,8 @@ public class KwtWaybillOrderService {
         }
         //已卸货/审批不通过车辆运单才能审核
         if (waybillOrder.getStatus() != CarWaybillEnum.COMPLETION_UNLOADING.getCode()
-                && waybillOrder.getStatus() != CarWaybillEnum.APPROVAL_NO_PASS.getCode()) {
+                && waybillOrder.getStatus() != CarWaybillEnum.APPROVAL_NO_PASS.getCode()
+                && waybillOrder.getStatus() != CarWaybillEnum.APPROVAL_IN.getCode()) {
             return HttpResult.error("车辆运单当前状态已不能审核!");
         }
         //已卸货/审批不通过车辆运单只能审批通过或审批不通过
@@ -2554,6 +2555,8 @@ public class KwtWaybillOrderService {
         orderStatusList.add(CarWaybillEnum.WAIT_LOADING.getCode());
         orderStatusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
         orderStatusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
+        orderStatusList.add(CarWaybillEnum.APPROVAL_NO_PASS.getCode());
+        orderStatusList.add(CarWaybillEnum.APPROVAL_IN.getCode());
         Integer proceed = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
         map.put("proceed", proceed);
 
@@ -2596,6 +2599,8 @@ public class KwtWaybillOrderService {
         orderStatusList.add(CarWaybillEnum.WAIT_LOADING.getCode());
         orderStatusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
         orderStatusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
+        orderStatusList.add(CarWaybillEnum.APPROVAL_NO_PASS.getCode());
+        orderStatusList.add(CarWaybillEnum.APPROVAL_IN.getCode());
         Integer proceed = logisticsOrderDao.selectCountByLorderId(orderId, orderStatusList);
         map.put("proceed", proceed);
 

+ 10 - 3
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -343,7 +343,6 @@
         ) tab1
     </select>
 
-
     <select id="findWaitWaybillOrderByDriver" resultType="com.sckw.transport.model.vo.WaybillOrderDriverVo"
             parameterType="java.util.Map">
         SELECT *
@@ -424,8 +423,9 @@
                 and lo.del_flag = 0
                 and loc.status = 0
                 and loc.w_order_id is null
-                and loc.driver_id = #{driverId, jdbcType=BIGINT}) tab
-        order by createTime desc
+                and loc.driver_id = #{driverId, jdbcType=BIGINT}
+        ) tab
+        order by startTime
     </select>
 
     <select id="findOtherWaybillOrderByDriver" resultType="com.sckw.transport.model.vo.WaybillOrderDriverVo"
@@ -466,6 +466,13 @@
         <if test="endTime != null and endTime != ''">
             and DATE(wo.create_time) <![CDATA[ <= ]]> #{endTime,jdbcType=TIMESTAMP}
         </if>
+
+        <if test="busStatus != null and busStatus == 2">
+            ORDER BY wo.start_time
+        </if>
+        <if test="busStatus != null and busStatus == 4">
+            ORDER BY wo.create_time desc
+        </if>
     </select>
 
     <select id="selectWaybillOrderCarListNotPage" resultType="com.sckw.transport.model.dto.OrderCarDTO">