Explorar el Código

企业app状态统计新增统计维度

lengfaqiang hace 2 años
padre
commit
0c8ca235bb

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

+ 4 - 1
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.*;
@@ -2555,6 +2554,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);
 
@@ -2597,6 +2598,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);