Przeglądaj źródła

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

czh 2 lat temu
rodzic
commit
ac7c3220d7
20 zmienionych plików z 229 dodań i 35 usunięć
  1. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTransportDemandController.java
  2. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwpWantBuyController.java
  3. 24 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/JumpUrl.java
  4. 13 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/JumpUrlConfig.java
  5. 3 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/ISettlement.java
  6. 4 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/MessageSender.java
  7. 12 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WalletService.java
  8. 1 1
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementTradeMapper.xml
  9. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java
  10. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/operation/GoodsManagerController.java
  11. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwOrderController.java
  12. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwTransportController.java
  13. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/operator/TradeOrderManageController.java
  14. 2 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java
  15. 16 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java
  16. 39 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillAmountDTO.java
  17. 14 13
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  18. 27 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java
  19. 35 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java
  20. 32 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

+ 1 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTransportDemandController.java

@@ -117,7 +117,7 @@ public class KwoTransportDemandController {
     public void export(@RequestBody ExportTransportDemandParam param, HttpServletResponse response) {
         List<TransportDemandExport> list = kwoTransportDemandService.export(param);
         if (CollectionUtils.isEmpty(list)) {
-            throw new BusinessException("导出数据为空!");
+            throw new BusinessException("暂无数据,请确认");
         }
         ExcelUtil.downData(response, TransportDemandExport.class, list);
     }

+ 1 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwpWantBuyController.java

@@ -165,7 +165,7 @@ public class KwpWantBuyController {
     public void export(@RequestBody WantBuySelectParam param, HttpServletResponse response) {
         List<WantBuyExport> list = kwpWantBuyService.export(param);
         if (CollectionUtils.isEmpty(list)) {
-            throw new BusinessException("导出数据为空!");
+            throw new BusinessException("暂无数据,请确认");
         }
         ExcelUtil.downData(response, WantBuyExport.class, list);
     }

+ 24 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/JumpUrl.java

@@ -0,0 +1,24 @@
+package com.sckw.payment.model;
+
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ * @author xucaiqin
+ * @date 2023-09-06 18:58:51
+ */
+@Getter
+@Setter
+public class JumpUrl {
+    /**
+     * pc端跳转地址
+     */
+    private String pc;
+    /**
+     * app端跳转地址
+     */
+    private String app;
+
+
+}

+ 13 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/JumpUrlConfig.java

@@ -8,6 +8,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 
 
 /**
@@ -23,7 +24,18 @@ public class JumpUrlConfig {
     /**
      * 销售收款对账
      */
-    private Map<String, String> url = new HashMap<>();
+    private Map<String, JumpUrl> url = new HashMap<>();
+
+    public Map<String, String> getMapUrl(String key) {
+        JumpUrl jumpUrl = url.get(key);
+        if (Objects.nonNull(jumpUrl)) {
+            return new HashMap<>() {{
+                put("pc", jumpUrl.getPc());
+                put("app", jumpUrl.getApp());
+            }};
+        }
+        return new HashMap<>();
+    }
 
 
 }

+ 3 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/ISettlement.java

@@ -44,6 +44,9 @@ public interface ISettlement {
             pay = new BigDecimal("0.0");
             total = new BigDecimal("1");
         }
+        if (BigDecimal.ZERO.compareTo(total) == 0) {
+            return "0.00%";
+        }
         return df().format(pay.divide(total, 6, RoundingMode.HALF_UP).multiply(new BigDecimal("100.0"))) + "%";
     }
 }

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

@@ -49,7 +49,7 @@ public class MessageSender {
      */
     public void sendCreate(Long createBy, Map<String, Object> map, UserInfo user, MessageEnum messageEnum) {
         AsyncPool.addTask(() -> {
-            SckwMessage sckwMessage = new SckwMessage(messageEnum).setMsgUrl(jumpUrlConfig.getUrl().get(JumpEnum.getByEnum(messageEnum))).setParams(map).setUserInfos(Collections.singletonList(user)).setCreateBy(createBy);
+            SckwMessage sckwMessage = new SckwMessage(messageEnum).setMsgUrls(jumpUrlConfig.getMapUrl(JumpEnum.getByEnum(messageEnum))).setParams(map).setUserInfos(Collections.singletonList(user)).setCreateBy(createBy);
             log.info("推送创建人:{}", JSONObject.toJSONString(sckwMessage));
             streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
         });
@@ -66,7 +66,7 @@ public class MessageSender {
         AsyncPool.addTask(() -> {
             EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(entId);
             if (Objects.nonNull(entCacheResDto)) {
-                SckwMessage sckwMessage = new SckwMessage(messageEnum).setMsgUrl(jumpUrlConfig.getUrl().get(JumpEnum.getByEnum(messageEnum))).setParams(map).setUserInfos(Collections.singletonList(new UserInfo(entCacheResDto.getContactsId(), entCacheResDto.getId()))).setCreateBy(createBy);
+                SckwMessage sckwMessage = new SckwMessage(messageEnum).setMsgUrls(jumpUrlConfig.getMapUrl(JumpEnum.getByEnum(messageEnum))).setParams(map).setUserInfos(Collections.singletonList(new UserInfo(entCacheResDto.getContactsId(), entCacheResDto.getId()))).setCreateBy(createBy);
                 log.info("推送系统管理员:{}", JSONObject.toJSONString(sckwMessage));
                 streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
             }
@@ -88,7 +88,7 @@ public class MessageSender {
             if (Objects.nonNull(kwpLedgerTradeTrack)) {
                 UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(kwpLedgerTradeTrack.getCreateBy());
                 EntCacheResDto entCacheResDto = Objects.nonNull(userCacheResDto) ? (Objects.nonNull(userCacheResDto.getEntInfo()) ? userCacheResDto.getEntInfo() : new EntCacheResDto()) : new EntCacheResDto();
-                SckwMessage sckwMessage = new SckwMessage(messageEnum).setMsgUrl(jumpUrlConfig.getUrl().get(JumpEnum.getByEnum(messageEnum))).setParams(map).setUserInfos(Collections.singletonList(new UserInfo(kwpLedgerTradeTrack.getCreateBy(), entCacheResDto.getId()))).setCreateBy(createBy);
+                SckwMessage sckwMessage = new SckwMessage(messageEnum).setMsgUrls(jumpUrlConfig.getMapUrl(JumpEnum.getByEnum(messageEnum))).setParams(map).setUserInfos(Collections.singletonList(new UserInfo(kwpLedgerTradeTrack.getCreateBy(), entCacheResDto.getId()))).setCreateBy(createBy);
                 log.info("推送变更人:{}", JSONObject.toJSONString(sckwMessage));
                 streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
             }
@@ -110,7 +110,7 @@ public class MessageSender {
                 UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(kwpLedgerLogisticsTrack.getCreateBy());
                 EntCacheResDto entCacheResDto = Objects.nonNull(userCacheResDto) ? (Objects.nonNull(userCacheResDto.getEntInfo()) ? userCacheResDto.getEntInfo() : new EntCacheResDto()) : new EntCacheResDto();
                 SckwMessage sckwMessage = new SckwMessage(messageEnum)
-                        .setMsgUrl(jumpUrlConfig.getUrl().get(JumpEnum.getByEnum(messageEnum)))
+                        .setMsgUrls(jumpUrlConfig.getMapUrl(JumpEnum.getByEnum(messageEnum)))
                         .setParams(map).setUserInfos(Collections.singletonList(new UserInfo(kwpLedgerLogisticsTrack.getCreateBy(), entCacheResDto.getId()))).setCreateBy(createBy);
                 log.info("推送变更人:{}", JSONObject.toJSONString(sckwMessage));
                 streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));

+ 12 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WalletService.java

@@ -61,6 +61,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -1564,6 +1565,17 @@ public class WalletService {
                 logs.setRemark(a.getContent());
                 logs.setCreateTime(a.getCreateTime());
                 return logs;
+            }).sorted((c1, c2) -> {
+                DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                if (StringUtils.isBlank(c1.getCreateTime())) {
+                    return 0;
+                }
+                if (StringUtils.isBlank(c2.getCreateTime())) {
+                    return 1;
+                }
+                LocalDateTime parse = LocalDateTime.parse(c1.getCreateTime(), df);
+                LocalDateTime parse2 = LocalDateTime.parse(c2.getCreateTime(), df);
+                return parse.compareTo(parse2);
             }).collect(Collectors.toList());
             cashDetailVo.setLogs(collect);
         }

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

@@ -614,7 +614,7 @@
                     <if test="settlementReq.trading != null and settlementReq.trading != ''">
                         and klt.trading = #{settlementReq.trading,jdbcType=VARCHAR}
                     </if>
-                    <if test="settlementReq.status != null">
+                    <if test="settlementReq.status != null  and settlementReq.status != 0">
                         and kst.status = #{settlementReq.status,jdbcType=INTEGER}
                     </if>
                     <if test="settlementReq.startCreateTime != null and settlementReq.startCreateTime != '' and settlementReq.endCreateTime != null and settlementReq.endCreateTime != ''">

+ 1 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java

@@ -115,7 +115,7 @@ public class KwpGoodsController {
     public void export(@RequestBody ExportStatisticGoodsListParam params, HttpServletResponse response) {
         List<GoodsListExport> list = kwpGoodsService.export(params);
         if (CollectionUtils.isEmpty(list)) {
-            throw new BusinessException("导出数据为空!");
+            throw new BusinessException("暂无数据,请确认");
         }
         ExcelUtil.downData(response, GoodsListExport.class, list);
     }

+ 1 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/operation/GoodsManagerController.java

@@ -77,7 +77,7 @@ public class GoodsManagerController {
     public void export(@RequestBody @Validated OperatorGoodsExportQueryVO params, HttpServletResponse response) {
         List<OperationGoodsListExport> list = goodsManagerService.export(params);
         if (CollectionUtils.isEmpty(list)) {
-            throw new BusinessException("导出数据为空!");
+            throw new BusinessException("暂无数据,请确认");
         }
         ExcelUtil.downData(response, OperationGoodsListExport.class, list);
     }

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwOrderController.java

@@ -85,7 +85,7 @@ public class KwOrderController {
     public void export(@RequestBody @Validated TradeOrderListExportParam params, HttpServletResponse response) {
         List<TradeOrderListExport> list = orderService.export(params);
         if (CollectionUtils.isEmpty(list)) {
-            throw new BusinessException("导出数据为空!");
+            throw new BusinessException("暂无数据,请确认");
         }
         ExcelUtil.downData(response, TradeOrderListExport.class, list);
     }

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwTransportController.java

@@ -278,7 +278,7 @@ public class KwTransportController {
     public void wayBillOrderExport(@RequestBody @Validated WaybillOrderQuery query, HttpServletResponse response) {
         List<WaybillOrderListExport> list = transportService.wayBillOrderExport(query);
         if (CollectionUtils.isEmpty(list)) {
-            throw new BusinessException("导出数据为空!");
+            throw new BusinessException("暂无数据,请确认");
         }
         ExcelUtil.downData(response, WaybillOrderListExport.class, list);
     }

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/operator/TradeOrderManageController.java

@@ -67,7 +67,7 @@ public class TradeOrderManageController {
     public void listExport(@RequestBody @Validated OperatorTOrderExportQueryVO params, HttpServletResponse response) {
         List<TradeOrderListExport> list = tradeOrderManageService.export(params);
         if (CollectionUtils.isEmpty(list)) {
-            throw new BusinessException("导出数据为空!");
+            throw new BusinessException("暂无数据,请确认");
         }
         ExcelUtil.downData(response, TradeOrderListExport.class, list);
     }

+ 2 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java

@@ -312,7 +312,7 @@ public class LogisticsConsignmentController {
     public void logisticOrderByPurchaseOrderIdExport(@RequestParam("ids") @NotBlank(message = "单据id不能为空") String ids, HttpServletResponse response) {
         List<PurchaseLogisticOrderExcelVo> list = logisticsConsignmentService.logisticOrderByPurchaseOrderIdExport(ids);
         if (CollectionUtils.isEmpty(list)) {
-            throw new BusinessException("导出数据为空!");
+            throw new BusinessException("暂无数据,请确认");
         }
         ExcelUtil.downData(response, PurchaseLogisticOrderExcelVo.class, list);
     }
@@ -328,7 +328,7 @@ public class LogisticsConsignmentController {
     public void logisticOrderBySellOrderIdExport(@RequestParam("ids") @NotBlank(message = "单据id不能为空") String ids, HttpServletResponse response) {
         List<SellLogisticOrderExcelVo> list = logisticsConsignmentService.logisticOrderBySellOrderIdExport(ids);
         if (CollectionUtils.isEmpty(list)) {
-            throw new BusinessException("导出数据为空!");
+            throw new BusinessException("暂无数据,请确认");
         }
         ExcelUtil.downData(response, SellLogisticOrderExcelVo.class, list);
     }

+ 16 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java

@@ -5,6 +5,7 @@ import com.sckw.mongo.model.TableTops;
 import com.sckw.transport.model.KwtWaybillOrder;
 import com.sckw.transport.model.dto.OrderCarDTO;
 import com.sckw.transport.model.dto.WayBillDetailDTO;
+import com.sckw.transport.model.dto.WaybillAmountDTO;
 import com.sckw.transport.model.vo.WaybillCountVo;
 import com.sckw.transport.model.vo.WaybillOrderDriverVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -162,6 +163,21 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
             @Param("endDate") String endDate
     );
 
+    /**
+     * 按装卸量统计运单
+     * @param entId 企业ID
+     * @param statuses 查询状态
+     * @return
+     */
+    List<WaybillAmountDTO> selectWaybillOrdersByStatus(
+            @Param("entId") Long entId,
+            @Param("statuses") List<Long> statuses,
+            @Param("keyword") String keyword,
+            @Param("startDate") String startDate,
+            @Param("endDate") String endDate
+    );
+
+
     String getMaxOrderNo(@Param("lOrderNo") String lOrderNo);
 
     /**

+ 39 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillAmountDTO.java

@@ -0,0 +1,39 @@
+package com.sckw.transport.model.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author JC
+ * @version 1.0
+ * @desc TODO
+ * @date 2023/09/22 08:50:14
+ **/
+@Data
+public class WaybillAmountDTO {
+    /**
+     * 实装量
+     */
+    private BigDecimal loadAmount;
+
+    /**
+     * 实卸量
+     */
+    private BigDecimal unloadAmount;
+
+    /**
+     * 货损量
+     */
+    private BigDecimal deficitAmount;
+
+    /**
+     * 允许货损量
+     */
+    private BigDecimal loss;
+
+    /**
+     * 货损量计算单位
+     */
+    private String lossUnit;
+}

+ 14 - 13
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -306,10 +306,10 @@ public class AcceptCarriageOrderService {
         carriageUnit.setTopEntId(consignentMap == null ? null : consignentMap.getId());
 
 //        commonService.initIatingLogisticsConsignment(checkUnit, carriageUnit, logisticsOrder.getLOrderNo(), logisticsOrder.getCreateBy(), logisticsOrder.getEntId());
-        commonService.newSendLogisticsOrderToMessage(checkUnit,carriageUnit,logisticsOrder.getLOrderNo(), logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
+        commonService.newSendLogisticsOrderToMessage(checkUnit, carriageUnit, logisticsOrder.getLOrderNo(), logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
                 messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
                 messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(), messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
-                MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT,MessageEnum.NEW_CARRIAGE_ORDER,
+                MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT, MessageEnum.NEW_CARRIAGE_ORDER,
                 "1");
 
         //修改父级mongodb数据
@@ -783,11 +783,11 @@ public class AcceptCarriageOrderService {
 //            commonService.publicLogisticsConsignmentPushMessage(consignOrderUnit, carriageOrderUnit, logisticsOrder.getLOrderNo(),
 //                    logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
 //                    MessageEnum.CONSIGN_ACCEPT_LOGISTICS, MessageEnum.CARRIAGE_ACCEPT_LOGISTICS);
-            commonService.newSendLogisticsOrderToMessage(consignOrderUnit,carriageOrderUnit,logisticsOrder.getLOrderNo(),
+            commonService.newSendLogisticsOrderToMessage(consignOrderUnit, carriageOrderUnit, logisticsOrder.getLOrderNo(),
                     logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
-                    messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
-                    messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
-                    MessageEnum.CONSIGN_ACCEPT_LOGISTICS, MessageEnum.CARRIAGE_ACCEPT_LOGISTICS,"1");
+                    messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                    messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(), messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                    MessageEnum.CONSIGN_ACCEPT_LOGISTICS, MessageEnum.CARRIAGE_ACCEPT_LOGISTICS, "1");
         } else {
             orderStatus = LogisticsOrderEnum.REJECT_ORDER.getCode();
             //todo 改为拒绝接单  数据统计在页面已退回状态中
@@ -851,11 +851,11 @@ public class AcceptCarriageOrderService {
 //            commonService.publicLogisticsConsignmentPushMessage(consignOrderUnit, carriageOrderUnit, logisticsOrder.getLOrderNo(),
 //                    logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
 //                    MessageEnum.REJECT_ORDER, MessageEnum.CARRIAGE_DISALLOTMENT);
-            commonService.newSendLogisticsOrderToMessage(consignOrderUnit,carriageOrderUnit,logisticsOrder.getLOrderNo(),
+            commonService.newSendLogisticsOrderToMessage(consignOrderUnit, carriageOrderUnit, logisticsOrder.getLOrderNo(),
                     logisticsOrder.getCreateBy(), logisticsOrder.getEntId(),
-                    messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(),messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
-                    messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(),messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
-                    MessageEnum.REJECT_ORDER, MessageEnum.CARRIAGE_DISALLOTMENT,"1");
+                    messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl(), messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl(),
+                    messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl(), messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl(),
+                    MessageEnum.REJECT_ORDER, MessageEnum.CARRIAGE_DISALLOTMENT, "1");
         }
         //状态表新增状态数据
         KwtLogisticsOrderTrack track = logisticsOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
@@ -1105,7 +1105,7 @@ public class AcceptCarriageOrderService {
                         driverListVo.setTransportStatusLabel((driverListVo.getTransportStatus() == 0) ? "空闲" : "任务中");
                     }
                     String truckType = truck.get(driverListVo.getTruckNo()).getTruckType();
-                    if (StringUtils.isNotBlank(truckType)){
+                    if (StringUtils.isNotBlank(truckType)) {
 //                        driverListVo.setCarType(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getTruckType());
                         driverListVo.setCarType(dictData.get(truckType));
                     }
@@ -1122,7 +1122,7 @@ public class AcceptCarriageOrderService {
             }
             Map<String, String> dictData = commonService.getDictData(DictTypeEnum.TRUCK_TYPE.getType());
             for (DriverListVo driverListVo : list) {
-                if (!driverListVo.getCirculateId().isEmpty()){
+                if (!driverListVo.getCirculateId().isEmpty()) {
 //                    driverListVo.setStatus(1);
                     driverListVo.setStatusLabel(CarWaybillEnum.PENDING_ORDER.getDestination());
                 }
@@ -1135,7 +1135,7 @@ public class AcceptCarriageOrderService {
                         driverListVo.setTransportStatusLabel((driverListVo.getTransportStatus() == 0) ? "空闲" : "任务中");
                     }
                     String truckType = truck.get(driverListVo.getTruckNo()).getTruckType();
-                    if (StringUtils.isNotBlank(truckType)){
+                    if (StringUtils.isNotBlank(truckType)) {
 //                        driverListVo.setCarType(truck.get(driverListVo.getTruckNo()) == null ? null : truck.get(driverListVo.getTruckNo()).getTruckType());
                         driverListVo.setCarType(dictData.get(truckType));
                     }
@@ -1298,6 +1298,7 @@ public class AcceptCarriageOrderService {
         }
     }
 
+
     /**
      * 承运订单-取消派车
      *

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

@@ -805,6 +805,27 @@ public class CommonService {
      **/
     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);
+//        }
+//        //承运订单亏吨扣款=(承运订单亏吨量 -(承运订单装货量 * 承运订单合理损耗))* 扣亏货值
+//        loss = loss == null ? new BigDecimal(Global.AMOUNT) : 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()));
+//            }
+//        }
+//        //扣亏量
+//        BigDecimal deficitPrice = deficitAmount.subtract(loadAmount.multiply(loss).setScale(4, RoundingMode.HALF_UP));
+//        return deficitPrice;
+
+        if (StringUtils.isBlank(lossUnit)) {
+            loss = new BigDecimal(Global.AMOUNT);
+        }
+        //亏吨<=0
         if (deficitAmount.compareTo(new BigDecimal(Global.AMOUNT)) <= 0) {
             return new BigDecimal(Global.AMOUNT);
         }
@@ -818,8 +839,12 @@ public class CommonService {
                 loss = loss.divide(new BigDecimal(TaxRateTypeEnum.MILLIMETER.getValue()));
             }
         }
-        //扣亏量
-        BigDecimal deficitPrice = deficitAmount.subtract(loadAmount.multiply(loss).setScale(4, RoundingMode.HALF_UP));
+        //扣亏量=亏吨量-合理损耗值【要求大于0,如果小于0则扣亏货量取0】
+        BigDecimal deficitPrice = deficitAmount.subtract(loadAmount.multiply(loss).setScale(2, RoundingMode.HALF_UP));
+//        log.error("[ddd] {}", deficitPrice);
+        if (deficitPrice.doubleValue() <= 0) {
+            return new BigDecimal(Global.AMOUNT);
+        }
         return deficitPrice;
     }
 }

+ 35 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -22,10 +22,7 @@ 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.AddressDropListDTO;
-import com.sckw.transport.model.dto.WayBillDetailDTO;
-import com.sckw.transport.model.dto.WaybillListAppDTO;
-import com.sckw.transport.model.dto.WaybillOrderDTO;
+import com.sckw.transport.model.dto.*;
 import com.sckw.transport.model.vo.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -960,13 +957,46 @@ public class WaybillManagementService {
      */
     public HttpResult waybillAmountStatistic(WaybillListAppDTO query) {
         List<Long> _statuses = getWallBillStatues(query.getStatus());
-        Map<String, Object> amount = kwtWaybillOrderMapper.selectWaybillOrderAmountByStatus(
+        List<WaybillAmountDTO> wOrders = kwtWaybillOrderMapper.selectWaybillOrdersByStatus(
                 LoginUserHolder.getEntId(),
                 _statuses,
                 query.getKeyword(),
                 StringUtils.isBlank(query.getStartDate()) ? null : query.getStartDate().concat(" 00:00:00"),
                 StringUtils.isBlank(query.getEndDate()) ? null : query.getEndDate().concat(" 23:59:59")
         );
+        Map<String, String> amount = new HashMap<>();
+        // 总计条数
+        BigDecimal loadAmount = new BigDecimal(Global.AMOUNT);
+        BigDecimal unloadAmount = new BigDecimal(Global.AMOUNT);
+        BigDecimal lossAmount = new BigDecimal(Global.AMOUNT);
+        BigDecimal deficitRealAmount = new BigDecimal(Global.AMOUNT);
+        if(CollectionUtils.isNotEmpty(wOrders)) {
+            for (WaybillAmountDTO wOrder:wOrders) {
+                loadAmount = loadAmount.add(wOrder.getLoadAmount() == null ? new BigDecimal(Global.AMOUNT) : wOrder.getLoadAmount());
+                unloadAmount = unloadAmount.add(wOrder.getUnloadAmount() == null ? new BigDecimal(Global.AMOUNT) : wOrder.getUnloadAmount());
+                lossAmount = lossAmount.add(wOrder.getDeficitAmount() == null ? new BigDecimal(Global.AMOUNT) : wOrder.getDeficitAmount());
+                if(wOrder.getLoadAmount() != null
+                        && wOrder.getUnloadAmount() != null
+                        && wOrder.getDeficitAmount() != null
+                ) {
+                    BigDecimal realDeficitAMount = commonService.deficitPrice(
+                            wOrder.getLoadAmount(),
+                            wOrder.getDeficitAmount(),
+                            wOrder.getLoss(),
+                            wOrder.getLossUnit()
+                    );
+                    deficitRealAmount = deficitRealAmount.add(realDeficitAMount);
+                }
+            }
+        }
+        // 总计装货量
+        amount.put("loadAmount",  String.valueOf(loadAmount));
+        // 总计卸货量
+        amount.put("unloadAmount",  String.valueOf(unloadAmount));
+        // 总计货损量
+        amount.put("lossAmount",  String.valueOf(lossAmount));
+        // 总计扣亏量
+        amount.put("deficitRealAmount",  String.valueOf(deficitRealAmount));
         return HttpResult.ok(amount);
     }
 

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

@@ -564,6 +564,38 @@
         </if>
     </select>
 
+    <select id="selectWaybillOrdersByStatus" resultType="com.sckw.transport.model.dto.WaybillAmountDTO">
+        SELECT
+        wo.load_amount as loadAmount,
+        wo.unload_amount as unloadAmount,
+        wo.deficit_amount as DeficitAmount,
+        lo.loss as loss,
+        lo.loss_unit as lossUnit
+        FROM
+        kwt_waybill_order AS wo
+        LEFT JOIN kwt_logistics_order AS lo
+        ON lo.id = wo.l_order_id
+        WHERE wo.ent_id = #{entId}
+        AND wo.del_flag = 0
+        <if test="startDate != null and startDate != '' and endDate != null and endDate != ''">
+            AND wo.create_time BETWEEN #{startDate} AND #{endDate}
+        </if>
+        <if test="keyword != null and keyword != ''">
+            AND (
+            wo.w_order_no LIKE concat('%',#{keyword},'%')
+            OR wo.truck_no LIKE concat('%',#{keyword},'%')
+            OR wo.driver_name LIKE concat('%',#{keyword},'%')
+            OR wo.driver_phone LIKE concat('%',#{keyword},'%')
+            )
+        </if>
+        <if test="statuses != null and statuses.size() > 0">
+            AND wo.status IN
+            <foreach collection="statuses" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+
     <select id="getMaxOrderNo" resultType="java.lang.String">
         SELECT w_order_no FROM `kwt_waybill_order`  WHERE w_order_no LIKE concat(#{lOrderNo},'%') ORDER BY w_order_no DESC LIMIT 1
     </select>