Bladeren bron

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

xucaiqin 2 jaren geleden
bovenliggende
commit
6548bfbbab
18 gewijzigde bestanden met toevoegingen van 351 en 290 verwijderingen
  1. 4 0
      sckw-auth/src/main/java/com/sckw/auth/model/vo/res/LoginResVo1.java
  2. 2 0
      sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java
  3. 14 6
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/RequestCheckFilter.java
  4. 14 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/KwsUserResDto.java
  5. 17 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java
  6. 24 11
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/enterpriseApp/AppWayBillController.java
  7. 1 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java
  8. 17 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java
  9. 57 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillListAppDTO.java
  10. 16 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/AcceptCarriageOrderVO.java
  11. 0 157
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CarWaybillAppVo.java
  12. 14 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  13. 9 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  14. 37 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java
  15. 3 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  16. 72 96
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java
  17. 1 2
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  18. 49 5
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

+ 4 - 0
sckw-auth/src/main/java/com/sckw/auth/model/vo/res/LoginResVo1.java

@@ -102,4 +102,8 @@ public class LoginResVo1 implements Serializable {
      */
     private String token;
 
+    private Long deptId;
+
+    private Long roleId;
+
 }

+ 2 - 0
sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java

@@ -448,6 +448,8 @@ public class AuthServiceImpl implements IAuthService {
         loginRes.setClientType(loginBase.getClientType());
         loginRes.setSystemType(loginBase.getSystemType());
         loginRes.setToken(token);
+        loginRes.setDeptId(user.getDeptId());
+        loginRes.setRoleId(user.getRoleId());
         return HttpResult.ok(loginRes);
     }
 

+ 14 - 6
sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/RequestCheckFilter.java

@@ -22,11 +22,9 @@ import jakarta.servlet.*;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
+
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @desc: 登录过滤
@@ -106,6 +104,17 @@ public class RequestCheckFilter implements Filter {
             return;
         }
 
+
+        if (loginUserInfo.getIsMain() == Global.YES && Integer.parseInt(systemType) == SystemTypeEnum.MANAGE.getCode()) {
+            LoginUserHolder.set(loginUserInfo);
+            RedissonUtils.putString(Global.getFullUserTokenKey(clientType, userId), token, ClientTypeEnum.expireTime(clientType));
+            RedissonUtils.putString(Global.getFullUserLoginKey(NumberUtils.parseInt(systemType), loginUserInfo.getId()), JSON.toJSONString(loginUserInfo), Global.APP_TOKEN_EXPIRE);
+            RedissonUtils.putString(Global.getFullUserTokenKey(clientType, userId), token, ClientTypeEnum.expireTime(clientType));
+            filterChain.doFilter(servletRequest, servletResponse);
+            LoginUserHolder.remove();
+            return;
+        }
+
         //校验用户账号是否冻结
         if (loginUserInfo.getStatus() == Global.YES) {
             ResponseUtil.writer(response, HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, "您的账号已被冻结,请联系系统管理员!"));
@@ -120,7 +129,7 @@ public class RequestCheckFilter implements Filter {
             return;
         } else {
             //校验用户企业是否冻结
-            if (loginEntInfo.getStatus()  == Global.YES) {
+            if (Objects.isNull(loginEntInfo) || loginEntInfo.getStatus() == Global.YES) {
                 ResponseUtil.writer(response, HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, "您所属企业已被冻结,请联系系统管理员!"));
                 return;
             }
@@ -153,7 +162,6 @@ public class RequestCheckFilter implements Filter {
     }
 
 
-
     /**
      * @param userId 用户菜单权限key  url 当前请求url
      * @return boolean

+ 14 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/KwsUserResDto.java

@@ -1,5 +1,7 @@
 package com.sckw.system.api.model.dto.res;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.sckw.core.utils.LongToStringUtils;
 import lombok.Data;
 
 import java.io.Serial;
@@ -111,4 +113,16 @@ public class KwsUserResDto implements Serializable {
      */
     private Long entId;
 
+    /**
+     * 机构id
+     */
+    @JsonSerialize(using = LongToStringUtils.class)
+    private Long deptId;
+
+    /**
+     * 角色id
+     */
+    @JsonSerialize(using = LongToStringUtils.class)
+    private Long roleId;
+
 }

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

@@ -2,7 +2,6 @@ package com.sckw.transport.controller;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.CollectionUtils;
@@ -16,12 +15,12 @@ import com.sckw.transport.model.vo.WaybillOrderDriverVo;
 import com.sckw.transport.service.DriverService;
 import com.sckw.transport.service.KwtWaybillOrderService;
 import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -149,6 +148,22 @@ public class KwtWaybillOrderController {
         }
     }
 
+    /**
+     * 查询已排量、待运量数据
+     * @param orderId
+     * @return
+     */
+    @RequestMapping(name = "查询已排量、待运量数据",path = "/getLogisticsAmountByOrderId",method = RequestMethod.GET)
+    public HttpResult getLogisticsAmountByOrderId(@NotBlank @RequestParam("orderId") String orderId){
+        log.info("查询已排量、待运量数据 query :{}",orderId);
+        try {
+            return waybillOrderService.getLogisticsAmountByOrderId(orderId);
+        } catch (Exception e) {
+            log.error("查询已排量、待运量数据 error:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
     /**
      * @param params {}
      * @desc 派车-趟次/循环

+ 24 - 11
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/enterpriseApp/AppWayBillController.java

@@ -2,10 +2,13 @@ package com.sckw.transport.controller.enterpriseApp;
 
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.transport.model.dto.WaybillListAppDTO;
+import com.sckw.transport.model.dto.WaybillOrderDTO;
 import com.sckw.transport.service.WaybillManagementService;
 import jakarta.validation.Valid;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -39,22 +42,32 @@ public class AppWayBillController {
 
     /**
      * APP 运单列表 - [运输中|已完成]
-     * @param keyword 搜索关键字
-     * @param status 分类状态
+     * @param waybillOrderDTO
      * @return
      */
     @Valid
-    @RequestMapping(name = "APP运单列表", value = "/waybillData", method = RequestMethod.GET)
-    public HttpResult waybillData(
-            @RequestParam("keyword") String keyword,
-            @RequestParam("status") String status,
-            @RequestParam("page") Integer page,
-            @RequestParam("pageSize") Integer pageSize
-            ) {
+    @RequestMapping(name = "APP运单列表", value = "/waybillData", method = RequestMethod.POST)
+    public HttpResult waybillData(@Validated @RequestBody WaybillListAppDTO waybillOrderDTO) {
         try {
-            return waybillManagementService.waybillDataApp(status, page, pageSize, keyword);
+            return waybillManagementService.waybillDataApp(waybillOrderDTO);
         } catch (Exception e) {
-            log.error("APP运单列表:订单id {},error {} ", keyword, e.getMessage(), e);
+            log.error("APP运单列表:订单id {},error {} ", waybillOrderDTO, e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
+    /**
+     * APP 运单列表吨量统计 - [运输中|已完成]
+     * @param waybillOrderDTO
+     * @return
+     */
+    @Valid
+    @RequestMapping(name = "APP运单吨量统计", value = "/waybillAmountStatistic", method = RequestMethod.POST)
+    public HttpResult waybillAmountStatistic(@Validated @RequestBody WaybillListAppDTO waybillOrderDTO) {
+        try {
+            return waybillManagementService.waybillAmountStatistic(waybillOrderDTO);
+        } catch (Exception e) {
+            log.error("APP运单列表:订单id {},error {} ", waybillOrderDTO, e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }

+ 1 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java

@@ -6,6 +6,7 @@ import com.sckw.transport.api.model.dto.AddressResDTO;
 import com.sckw.transport.api.model.dto.LogisticsOrderDTO;
 import com.sckw.transport.api.model.vo.LogisticsOrderVO;
 import com.sckw.transport.model.KwtLogisticsOrder;
+import com.sckw.transport.model.KwtWaybillOrder;
 import com.sckw.transport.model.param.AcceptCarriageOrderQuery;
 import com.sckw.transport.model.param.DriverParam;
 import com.sckw.transport.model.param.LogisticsOrderParam;

+ 17 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java

@@ -130,5 +130,21 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
      * @param statuses 查询状态
      * @return
      */
-    Long selectWaybillOrderCountByStatus(@Param("entId") Long entId, @Param("statuses") List<Integer> statuses, @Param("keyword") String keyword);
+    Long selectWaybillOrderCountByStatus(@Param("entId") Long entId, @Param("statuses") List<Long> statuses, @Param("keyword") String keyword);
+
+    Map<String,Object> selectOrderByOrderId(@Param("orderId") Long orderId, @Param("type") Integer type, @Param("statusList") List<Long> statusList);
+
+    /**
+     * 按装卸量统计运单
+     * @param entId 企业ID
+     * @param statuses 查询状态
+     * @return
+     */
+    Map<String,Object> selectWaybillOrderAmountByStatus(
+            @Param("entId") Long entId,
+            @Param("statuses") List<Long> statuses,
+            @Param("keyword") String keyword,
+            @Param("startDate") String startDate,
+            @Param("endDate") String endDate
+    );
 }

+ 57 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillListAppDTO.java

@@ -0,0 +1,57 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.sckw.core.model.page.PageRequest;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author lfdc
+ * @description 车辆运单
+ * @date 2023-06-27 11:06:08
+ */
+@Data
+@Accessors(chain = true)
+public class WaybillListAppDTO {
+
+    /**
+     * 搜索关键字
+     */
+    private String keyword;
+
+    /**
+     * 当前页码
+     */
+    private int page;
+
+    /**
+     * 每页数量
+     */
+    private int pageSize;
+
+    /**
+     * 状态
+     */
+    @NotNull(message = "分类状态不能为空")
+    private String status;
+
+    /**
+     * 查询开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date startDate;
+
+    /**
+     * 查询结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date endDate;
+
+}

+ 16 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/AcceptCarriageOrderVO.java

@@ -245,6 +245,22 @@ public class AcceptCarriageOrderVO /*extends PageRequest*/ {
      */
     private BigDecimal ignoreAmount;
 
+    /**
+     * 待分配量(amount-subcontract_amount-entrust_amount)
+     */
+    private BigDecimal waitDistributionAmount;
+
+    /**
+     * 分包量(给下游承运商分包的量)
+     */
+    private BigDecimal subcontractAmount;
+
+    /**
+     * 已委托量(自己承运,给下游司机分配的量)
+     */
+    private BigDecimal entrustAmount;
+
+
     /**
      * 卸货量
      */

+ 0 - 157
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CarWaybillAppVo.java

@@ -1,157 +0,0 @@
-package com.sckw.transport.model.vo;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import java.io.Serial;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * @author lfdc
- * @description 车辆运单
- * @date 2023-06-27 11:06:08
- */
-@Data
-@Accessors(chain = true)
-public class CarWaybillAppVo implements Serializable {
-
-    @Serial
-    private static final long serialVersionUID = 4526063761808958350L;
-    /**
-     * 物流订单id
-     */
-    @JsonProperty(value="wOrderId")
-    private String wOrderId;
-
-    /**
-     * 物流订单号
-     */
-    @JsonProperty(value="wOrderNo")
-    private String wOrderNo;
-
-    /**
-     * 车辆牌照
-     */
-    private String truckNo;
-
-    /**
-     * 司机
-     */
-    private String driverName;
-
-    /**
-     * 运单类型数字
-     */
-    private String type;
-
-    /**
-     * 运单类型字符
-     */
-    private String typeLabel;
-
-    /**
-     * 运单状态
-     */
-    private String  status;
-    /**
-     * 运单状态字符
-     */
-    private String  statusLabel;
-
-    /**
-     * 承运车队
-     */
-    private String firmName;
-
-
-    /**
-     * 派车时间
-     */
-    private String sendCarTime;
-
-    /**
-     * 计划开始时间
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
-    private Date startTime;
-
-    /**
-     * 计划结束时间
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
-    private Date endTime;
-
-    /**
-     * 派单量/吨
-     */
-    private String entrustAmount;
-
-    /**
-     * 装货地点名称
-     */
-    private String loadName;
-
-    /**
-     * 装货地点
-     */
-    private String loadAddress;
-
-    /**
-     * 卸货地点点名称
-     */
-    private String unloadName;
-
-    /**
-     * 卸货地点
-     */
-    private String unloadAddress;
-
-    /**
-     * 实装量/吨
-     */
-    private String loadAmount;
-
-    /**
-     * 实卸量/吨
-     */
-    private String unloadAmount;
-
-    /**
-     * 装货时间
-     */
-    private String loadDateTime;
-
-    /**
-     * 卸货时间
-     */
-    private String unloadDateTime;
-
-    /**
-     * 亏吨重量
-     */
-    private String deficitAmount;
-
-    /**
-     * 扣亏损值(合理损耗-(实装-实卸))-单位
-     */
-    private String goodsPriceUnit;
-
-    /**
-     * 扣亏量(合理损耗-(实装-实卸))-单位
-     */
-    private String deficitRealAmount;
-
-    /**
-     * 创建时间
-     */
-    private String createTime;
-
-    /**
-     * 更新时间
-     */
-    private String updateTime;
-
-}

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

@@ -185,8 +185,10 @@ public class AcceptCarriageOrderService {
             order.setSubcontractAmount(new BigDecimal(NumberConstant.ZERO));
             order.setUnit(bo.getCarryingCapacityUnit());
         }
-        BigDecimal ignoreAmount = logisticsOrder.getIgnoreAmount();
-        if (ignoreAmount.compareTo(new BigDecimal("0.00")) == 0) {
+        BigDecimal subcontractAmount = logisticsOrder.getSubcontractAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getSubcontractAmount();
+        BigDecimal entrustAmount = logisticsOrder.getEntrustAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getEntrustAmount();
+        BigDecimal waitDistributionAmount = logisticsOrder.getAmount().subtract(subcontractAmount).subtract(entrustAmount);
+        if (waitDistributionAmount.compareTo(new BigDecimal("0.00")) == 0) {
             throw new RuntimeException("剩余可分配量为0,不可进行分包操作!");
         }
         int level = logisticsLevel(logisticsOrder);
@@ -250,7 +252,7 @@ public class AcceptCarriageOrderService {
         insertLogisticsOrderTrack(bo, orderId, orderStatus);
         //修改上级分配量以及可分配量委托量等
         logisticsOrder.setSubcontractAmount(logisticsOrder.getSubcontractAmount().add(bo.getCarryingCapacity()));
-        logisticsOrder.setIgnoreAmount(logisticsOrder.getIgnoreAmount().subtract(bo.getCarryingCapacity()));
+//        logisticsOrder.setIgnoreAmount(logisticsOrder.getIgnoreAmount().subtract(bo.getCarryingCapacity()));
         logisticsOrderMapper.updateById(logisticsOrder);
         //修改父级mongodb数据
         //更新mongodb
@@ -263,7 +265,7 @@ public class AcceptCarriageOrderService {
         lOrder.setUpdateBy(order.getUpdateBy());
         lOrder.setUpdateByName(LoginUserHolder.getUserName());
         lOrder.setSubcontractAmount(logisticsOrder.getSubcontractAmount().add(bo.getCarryingCapacity()));
-        lOrder.setIgnoreAmount(logisticsOrder.getIgnoreAmount().subtract(bo.getCarryingCapacity()));
+//        lOrder.setIgnoreAmount(logisticsOrder.getIgnoreAmount().subtract(bo.getCarryingCapacity()));
         //rabbitMq业务汇总数据发送/消费对象
         SckwBusSum busSum = new SckwBusSum();
         //业务汇总类型
@@ -588,9 +590,11 @@ public class AcceptCarriageOrderService {
         order.setSubcontractAmount(decimal);
         order.setLoadAmount(decimal);
         order.setUnloadAmount(decimal);
-        order.setIgnoreAmount(bo.getCarryingCapacity());
+        order.setIgnoreAmount(decimal);
         order.setDeficitPrice(decimal);
         order.setDeficitAmount(decimal);
+        order.setTotalUnloadAmount(decimal);
+        order.setTotalLoadAmount(decimal);
         order.setBindStatus(String.valueOf(NumberConstant.ZERO));
         logisticsOrderMapper.insert(order);
     }
@@ -2062,7 +2066,7 @@ public class AcceptCarriageOrderService {
         order.setEntrustAmount(decimal);
         order.setUnloadAmount(decimal);
         order.setLoadAmount(decimal);
-        order.setIgnoreAmount(orderDTO.getAmount());
+        order.setIgnoreAmount(decimal);
         order.setDeficitAmount(decimal);
         order.setDeficitPrice(decimal);
         order.setTaxRate(orderDTO.getTaxRate());
@@ -2073,11 +2077,14 @@ public class AcceptCarriageOrderService {
         order.setUpdateBy(LoginUserHolder.getUserId());
         order.setUpdateTime(new Date());
         order.setBindStatus(String.valueOf(NumberConstant.ZERO));
+        order.setTotalUnloadAmount(decimal);
+        order.setTotalLoadAmount(decimal);
         logisticsOrderMapper.insert(order);
     }
 
     /**
      * 承运订单首页条件查询
+     *
      * @param query
      * @param type
      * @return
@@ -2163,6 +2170,7 @@ public class AcceptCarriageOrderService {
                     }
                 }
             }
+            vo.setWaitDistributionAmount(vo.getCarryingCapacity().subtract(vo.getSubcontractAmount()).subtract(vo.getEntrustAmount()));
         }
         return PageRes.build(pageInfo, list);
     }

+ 9 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -736,7 +736,10 @@ public class ConsignOrderService {
         if (logisticsOrder == null) {
             throw new BusinessException("采购订单-完结订单-物流单据不存在!");
         }
-        if (logisticsOrder.getLoadAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
+        if (logisticsOrder.getTotalLoadAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
+            throw new BusinessException("完结订单,实装量不能大于分配量");
+        }
+        if (logisticsOrder.getAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
             throw new BusinessException("完结订单,实装量不能大于分配量");
         }
         /**订单状态验证*/
@@ -750,7 +753,7 @@ public class ConsignOrderService {
             throw new BusinessException("检测您现在有运单正在执行中,该订单目前不可完结,请先将运单执行完毕!");
         }
         //修改单据本身数据
-        BigDecimal ignoreAmount = logisticsOrder.getAmount().subtract(logisticsOrder.getTotalLoadAmount());
+        BigDecimal ignoreAmount = logisticsOrder.getAmount().subtract(orderFinishDTO.getLoadAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getLoadAmount());
         logisticsOrder.setTotalLoadAmount(orderFinishDTO.getLoadAmount());
         logisticsOrder.setTotalUnloadAmount(orderFinishDTO.getUnloadAmount());
         logisticsOrder.setStatus(LogisticsOrderEnum.HAVE_FINISHED.getCode());
@@ -1228,7 +1231,7 @@ public class ConsignOrderService {
         order.setEntrustAmount(decimal);
         order.setUnloadAmount(decimal);
         order.setLoadAmount(decimal);
-        order.setIgnoreAmount(addOrderDTO.getAmount());
+        order.setIgnoreAmount(decimal);
         order.setDeficitAmount(decimal);
         order.setDeficitPrice(decimal);
         order.setTaxRate(addOrderDTO.getTaxRate());
@@ -1239,6 +1242,8 @@ public class ConsignOrderService {
         order.setUpdateBy(LoginUserHolder.getUserId());
         order.setUpdateTime(new Date());
         order.setBindStatus(String.valueOf(NumberConstant.ZERO));
+        order.setTotalUnloadAmount(decimal);
+        order.setTotalLoadAmount(decimal);
         kwtLogisticsOrderMapper.insert(order);
     }
 
@@ -1606,6 +1611,7 @@ public class ConsignOrderService {
                     }
                 }
             }
+            vo.setWaitDistributionAmount(vo.getCarryingCapacity().subtract(vo.getSubcontractAmount()).subtract(vo.getEntrustAmount()));
         }
         return PageRes.build(pageInfo, list);
     }

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

@@ -1,5 +1,6 @@
 package com.sckw.transport.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.exception.BusinessException;
@@ -2257,4 +2258,40 @@ public class KwtWaybillOrderService {
         map.put("total", proceed + finish + cancel);
         return map;
     }
+
+    /**
+     * 查询已排量、待运量数据
+     *
+     * @param orderId 物流订单id
+     * @return
+     */
+    public HttpResult getLogisticsAmountByOrderId(String orderId) {
+        KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderDao.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>().eq(KwtLogisticsOrder::getId, Long.parseLong(orderId)));
+        if (kwtLogisticsOrder==null){
+            return HttpResult.error("单据不存在!");
+        }
+        BigDecimal amount = kwtLogisticsOrder.getAmount();
+        BigDecimal entrustAmount = kwtLogisticsOrder.getEntrustAmount() == null ? new BigDecimal("0.00") : kwtLogisticsOrder.getEntrustAmount();
+        BigDecimal subcontractAmount = kwtLogisticsOrder.getSubcontractAmount() == null ? new BigDecimal("0.00") : kwtLogisticsOrder.getSubcontractAmount();
+        BigDecimal waitDistributionAmount = amount.subtract(entrustAmount).subtract(subcontractAmount);
+        Map<String, Map> map = new HashMap(NumberConstant.SIXTEEN);
+        //有效的车辆运单状态(其他状态不参与统计中)
+        List<Long> statusList = new ArrayList<>();
+        statusList.add(CarWaybillEnum.PENDING_VEHICLE.getCode().longValue());
+        statusList.add(CarWaybillEnum.EXIT_COMPLETED.getCode().longValue());
+        statusList.add(CarWaybillEnum.WAIT_LOADING.getCode().longValue());
+        statusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode().longValue());
+        statusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode().longValue());
+        statusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode().longValue());
+        statusList.add(CarWaybillEnum.APPROVAL_PASS.getCode().longValue());
+        //趟次
+        Map<String, Object> tripMap = waybillOrderDao.selectOrderByOrderId(Long.parseLong(orderId), 1, statusList);
+        tripMap.put("waitDistributionAmount",waitDistributionAmount);
+        map.put("trip", tripMap);
+        //循环
+        Map<String, Object> loopMap = waybillOrderDao.selectOrderByOrderId(Long.parseLong(orderId), 2, statusList);
+        loopMap.put("waitDistributionAmount",waitDistributionAmount);
+        map.put("loop", loopMap);
+        return HttpResult.ok(map);
+    }
 }

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

@@ -483,9 +483,11 @@ public class LogisticsConsignmentService {
         order.setSubcontractAmount(decimal);
         order.setLoadAmount(decimal);
         order.setUnloadAmount(decimal);
-        order.setIgnoreAmount(bo.getCarryingCapacity());
+        order.setIgnoreAmount(decimal);
         order.setDeficitPrice(decimal);
         order.setDeficitAmount(decimal);
+        order.setTotalUnloadAmount(decimal);
+        order.setTotalLoadAmount(decimal);
         order.setBindStatus(String.valueOf(NumberConstant.ZERO));
         kwtLogisticsOrderMapper.insert(order);
     }

+ 72 - 96
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -22,6 +22,7 @@ import com.sckw.transport.dao.*;
 import com.sckw.transport.model.KwtLogisticsOrder;
 import com.sckw.transport.model.KwtWaybillOrderTrack;
 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.vo.*;
 import lombok.extern.slf4j.Slf4j;
@@ -301,6 +302,17 @@ public class WaybillManagementService {
         // 执行查询
         List<SckwWaybillOrder> list = mongoTemplate.find(queryFormat, SckwWaybillOrder.class);
         List<WaybillBoardListVO> orders = new ArrayList<>();
+        packageWaybillIndexResult(list, statusVOS, orders);
+        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, orders);
+        return HttpResult.ok(build);
+    }
+
+    /**
+     *
+     * @return
+     */
+    public void packageWaybillIndexResult(List<SckwWaybillOrder> list, List<WaybillStatusVO> statusVOS, List<WaybillBoardListVO> returnList) {
+        // 执行查询
         for (SckwWaybillOrder sckwWaybillOrder:list) {
             WaybillBoardListVO waybillBoardListVO = new WaybillBoardListVO();
             waybillBoardListVO.setWOrderId(String.valueOf(sckwWaybillOrder.getWOrderId()));
@@ -356,11 +368,8 @@ public class WaybillManagementService {
                     });
                 });
             }
-            orders.add(waybillBoardListVO);
+            returnList.add(waybillBoardListVO);
         }
-
-        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, orders);
-        return HttpResult.ok(build);
     }
 
     /**
@@ -506,31 +515,42 @@ public class WaybillManagementService {
     public HttpResult waybillDataStatisticApp(String keyword){
         Long entId = LoginUserHolder.getEntId();
         // 运输途中
-        List<Integer> onWayStates = getWallBillStatues("onway");
+        Map<String, String> _onway = new HashMap<>();
+        _onway.put("name", "运输中");
+        _onway.put("value", "onway");
+        _onway.put("total", "0");
+        List<Long> onWayStates = getWallBillStatues("onway");
         Long onWayCount = kwtWaybillOrderMapper.selectWaybillOrderCountByStatus(entId, onWayStates, keyword);
+        _onway.put("total", onWayCount.toString());
         // 已完成
-        List<Integer> finishStates = getWallBillStatues("finish");
+        Map<String, String> _finish = new HashMap<>();
+        _finish.put("name", "已完成");
+        _finish.put("value", "finish");
+        _finish.put("total", "0");
+        List<Long> finishStates = getWallBillStatues("finish");
         Long finishCount = kwtWaybillOrderMapper.selectWaybillOrderCountByStatus(entId, finishStates, keyword);
-        Map<String, Long> statistic = new HashMap<>();
-        statistic.put("onway", onWayCount);
-        statistic.put("finish", finishCount);
-        return HttpResult.ok(statistic);
+        _onway.put("total", finishCount.toString());
+        List<Map<String, String>> _list = new ArrayList<>();
+        _list.add(_onway);
+        _list.add(_finish);
+        return HttpResult.ok(_list);
     }
 
     /**
-     * app 运单分类统计数据 [运输中|已完成]
-     * @param keyword
+     * app 运单列表 [运输中|已完成]
+     * @param query
      * @return
      */
-    public HttpResult waybillDataApp(String status, Integer page, Integer pageSize, String keyword){
-        List<Integer> _statuses = getWallBillStatues(status);
+    public HttpResult waybillDataApp(WaybillListAppDTO query){
+        List<Integer> processStatuses = initWaybillIndexStatus();
+        List<Long> _statuses = getWallBillStatues(query.getStatus());
         Criteria criteria = new Criteria();
         criteria.and("entId").is(LoginUserHolder.getEntId());
         criteria.and("delFlag").is(NumberConstant.ZERO);
         // 多条件模糊查询
         List<Criteria> orCriteria = new ArrayList<>();
-        if (StringUtils.isNotBlank(keyword)) {
-            Pattern pattern = Pattern.compile("^.*" + keyword + ".*$", Pattern.CASE_INSENSITIVE);
+        if (StringUtils.isNotBlank(query.getKeyword())) {
+            Pattern pattern = Pattern.compile("^.*" + query.getKeyword() + ".*$", Pattern.CASE_INSENSITIVE);
             orCriteria.add(Criteria.where("wOrderNo").regex(pattern));
             orCriteria.add(Criteria.where("truckNo").regex(pattern));
             orCriteria.add(Criteria.where("driverName").regex(pattern));
@@ -544,86 +564,42 @@ public class WaybillManagementService {
         }
         // 总记录数
         long total = mongoTemplate.count(queryFormat, SckwWaybillOrder.class);
-        queryFormat.with(PageRequest.of(page - 1, pageSize,
+        queryFormat.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
                 Sort.by(Sort.Order.desc("createTime"))));
         // 执行查询
         List<SckwWaybillOrder> list = mongoTemplate.find(queryFormat, SckwWaybillOrder.class);
-        List<CarWaybillAppVo> returnList = new ArrayList<>();
+        List<WaybillBoardListVO> returnList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(list)) {
-            packageWayBillReturnList(list, returnList);
+            List<WaybillStatusVO> statusVOS = new ArrayList();
+            processStatuses.forEach(e -> {
+                WaybillStatusVO waybillStatusVO = new WaybillStatusVO();
+                waybillStatusVO.setStatus(false);
+                waybillStatusVO.setCode(e);
+                waybillStatusVO.setDestination(CarWaybillEnum.getName(e));
+                statusVOS.add(waybillStatusVO);
+            });
+            packageWaybillIndexResult(list, statusVOS, returnList);
         }
-        PageResult build = PageResult.build(page, pageSize, total, returnList);
+        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, returnList);
         return HttpResult.ok(build);
     }
 
+
     /**
-     * 运单处理运单查询结果
-     *
-     * @param list
-     * @param returnList
+     * app 运单分类吨量统计数据 [运输中|已完成]
+     * @param query
+     * @return
      */
-    private void packageWayBillReturnList(List<SckwWaybillOrder> list, List<CarWaybillAppVo> returnList) {
-        for (SckwWaybillOrder waybillOrder : list) {
-            CarWaybillAppVo vo = new CarWaybillAppVo();
-            vo.setWOrderNo(waybillOrder.getWOrderNo() == null ?
-                    null : String.valueOf(waybillOrder.getWOrderNo()));
-            vo.setWOrderId(waybillOrder.getWOrderId() == null ?
-                    String.valueOf(waybillOrder.get_id()) : String.valueOf(waybillOrder.getWOrderId()));
-            vo.setTruckNo(waybillOrder.getTruckNo());
-            vo.setDriverName(waybillOrder.getDriverName() == null ?
-                    null : String.valueOf(waybillOrder.getDriverName()));
-            vo.setType(String.valueOf(waybillOrder.getType()));
-            String typeString = "";
-            if (waybillOrder.getType().equals(NumberConstant.ONE)) {
-                typeString = "趟次";
-            }
-            if (waybillOrder.getType().equals(NumberConstant.TWO)) {
-                typeString = "循环";
-            }
-            vo.setTypeLabel(typeString);
-            vo.setStatus(waybillOrder.getStatus() == null ?
-                        null : String.valueOf(waybillOrder.getStatus()));
-            vo.setStatusLabel(CarWaybillEnum.getName(waybillOrder.getStatus()));
-            vo.setSendCarTime(waybillOrder.getCreateTime() == null ?
-                    null : DateUtil.getDateTime(waybillOrder.getCreateTime()));
-            vo.setStartTime(waybillOrder.getStartTime() == null ?
-                    null : waybillOrder.getStartTime());
-            vo.setEndTime(waybillOrder.getEndTime() == null ?
-                    null : waybillOrder.getEndTime());
-            vo.setEntrustAmount(String.valueOf(waybillOrder.getEntrustAmount()));
-            vo.setLoadName(waybillOrder.getLoadName() == null ?
-                    null : waybillOrder.getLoadName());
-            vo.setLoadAddress((waybillOrder.getLoadCityName() == null ? "" : waybillOrder.getLoadCityName())
-                    .concat(waybillOrder.getLoadDetailAddress() == null ? "" : waybillOrder.getLoadDetailAddress()));
-            vo.setUnloadName(waybillOrder.getUnloadName() == null ?
-                    null : waybillOrder.getUnloadName());
-            vo.setUnloadAddress((waybillOrder.getUnloadCityName() == null ? "" : waybillOrder.getUnloadCityName())
-                    .concat(waybillOrder.getUnloadDetailAddress() == null ? "" : waybillOrder.getUnloadDetailAddress()));
-            vo.setLoadAmount(waybillOrder.getLoadAmount() == null ?
-                    null : String.valueOf(waybillOrder.getLoadAmount()));
-            vo.setUnloadAmount(waybillOrder.getUnloadAmount() == null ?
-                    null : String.valueOf(waybillOrder.getUnloadAmount()));
-            vo.setLoadDateTime(waybillOrder.getLoadTime() == null ?
-                    null : DateUtil.getDateTime(waybillOrder.getLoadTime()));
-            vo.setUnloadDateTime(waybillOrder.getUnloadTime() == null ?
-                    null : DateUtil.getDateTime(waybillOrder.getUnloadTime()));
-            vo.setCreateTime(waybillOrder.getCreateTime() == null ?
-                    null : DateUtil.getDateTime(waybillOrder.getCreateTime()));
-            vo.setUpdateTime(waybillOrder.getUpdateTime() == null ?
-                    null : DateUtil.getDateTime(waybillOrder.getUpdateTime()));
-            vo.setDeficitAmount(waybillOrder.getDeficitAmount() == null ?
-                    null : String.valueOf(waybillOrder.getDeficitAmount()));
-            BigDecimal deficitLoss = waybillOrder.getLoss() == null ? BigDecimal.valueOf(0) : waybillOrder.getLoss();
-            BigDecimal deficitAmount = waybillOrder.getDeficitAmount() == null ? BigDecimal.valueOf(0) : waybillOrder.getDeficitAmount();
-            BigDecimal deficitRealAmount = BigDecimal.valueOf(0);
-            if(deficitAmount.compareTo(BigDecimal.valueOf(0)) > 0) {
-                deficitRealAmount = deficitLoss.subtract(deficitAmount);
-            }
-            vo.setDeficitRealAmount(deficitRealAmount.toString());
-            vo.setGoodsPriceUnit(waybillOrder.getGoodsPriceUnit() == null ?
-                    null : String.valueOf(waybillOrder.getGoodsPriceUnit()));
-            returnList.add(vo);
-        }
+    public HttpResult waybillAmountStatistic(WaybillListAppDTO query){
+        List<Long> _statuses = getWallBillStatues(query.getStatus());
+        Map<String,Object> amount = kwtWaybillOrderMapper.selectWaybillOrderAmountByStatus(
+                LoginUserHolder.getEntId(),
+                _statuses,
+                query.getKeyword(),
+                query.getStartDate() == null ? null : query.getStartDate().toString().concat(" 00:00:00"),
+                query.getEndDate() == null ? null : query.getEndDate().toString().concat(" 23:59:59")
+        );
+        return HttpResult.ok(amount);
     }
 
     /**
@@ -631,19 +607,19 @@ public class WaybillManagementService {
      * @param status
      * @return
      */
-    public List<Integer> getWallBillStatues(String status) {
-        List<Integer> _list = new ArrayList<>();
+    public List<Long> getWallBillStatues(String status) {
+        List<Long> _list = new ArrayList<>();
         if(status.equals("onway")) {
-            _list.add(CarWaybillEnum.PENDING_ORDER.getCode());
-            _list.add(CarWaybillEnum.PENDING_VEHICLE.getCode());
-            _list.add(CarWaybillEnum.EXIT_COMPLETED.getCode());
-            _list.add(CarWaybillEnum.WAIT_LOADING.getCode());
-            _list.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
-            _list.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
+            _list.add(CarWaybillEnum.PENDING_ORDER.getCode().longValue());
+            _list.add(CarWaybillEnum.PENDING_VEHICLE.getCode().longValue());
+            _list.add(CarWaybillEnum.EXIT_COMPLETED.getCode().longValue());
+            _list.add(CarWaybillEnum.WAIT_LOADING.getCode().longValue());
+            _list.add(CarWaybillEnum.COMPLETION_LOADING.getCode().longValue());
+            _list.add(CarWaybillEnum.WAIT_UNLOADING.getCode().longValue());
         }
         if(status.equals("finish")) {
-            _list.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
-            _list.add(CarWaybillEnum.APPROVAL_PASS.getCode());
+            _list.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode().longValue());
+            _list.add(CarWaybillEnum.APPROVAL_PASS.getCode().longValue());
         }
         return _list;
     }

+ 1 - 2
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -549,8 +549,7 @@
     </select>
 
     <select id="countAmountByTradeOrderId" resultType="java.util.Map">
-        SELECT
-               IFNULL(SUM(unload_amount), 0)       AS unloadAmount,
+        SELECT IFNULL(SUM(unload_amount), 0)       AS unloadAmount,
                IFNULL(SUM(load_amount), 0)         AS loadAmount,
                IFNULL(SUM(total_load_amount), 0)   AS totalLoadAmount,
                IFNULL(SUM(total_unload_amount), 0) AS totalUnloadAmount

+ 49 - 5
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -431,14 +431,58 @@
         AND del_flag = 0
         <if test="keyword != null and keyword != ''">
             AND (
-                `w_order_no` LIKE concat('%',#{keyword},'%')
-                OR `truck_no` LIKE concat('%',#{keyword},'%')
-                OR `driver_name` LIKE concat('%',#{keyword},'%')
-                OR `driver_phone` LIKE concat('%',#{keyword},'%')
+                w_order_no LIKE concat('%',#{keyword},'%')
+                OR truck_no LIKE concat('%',#{keyword},'%')
+                OR driver_name LIKE concat('%',#{keyword},'%')
+                OR driver_phone LIKE concat('%',#{keyword},'%')
             )
         </if>
         <if test="statuses != null and statuses.size() > 0">
-            AND `status` IN
+            AND status IN
+            <foreach collection="statuses" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+
+    <select id="selectOrderByOrderId" resultType="java.util.Map">
+        SELECT COUNT(id) total,SUM(IFNULL(entrust_amount,0)) AS amount
+        FROM
+        sckw_transport.kwt_waybill_order
+        WHERE
+        l_order_id = #{orderId}
+        AND type = #{type}
+        <if test="statusList != null and statusList.size() > 0">
+            and status in
+            <foreach collection="statusList" open="(" close=")" separator="," item="item">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+    <select id="selectWaybillOrderAmountByStatus" resultType="java.util.Map">
+        SELECT
+        COUNT(id) total,
+        SUM(load_amount) loadAmount,
+        SUM(unload_amount) unloadAmount,
+        SUM(load_amount - unload_amount) lossAmount,
+        SUM( IF(load_amount - unload_amount - deficit_amount > 0, load_amount - unload_amount - deficit_amount , 0) ) deficitRealAmount
+        FROM
+        kwt_waybill_order
+        WHERE ent_id = #{entId}
+        AND del_flag = 0
+        <if test="startDate != null and startDate != '' and endDate != null and endDate != ''">
+            AND create_time BETWEEN #{startDate} AND #{endDate}
+        </if>
+        <if test="keyword != null and keyword != ''">
+            AND (
+            w_order_no LIKE concat('%',#{keyword},'%')
+            OR truck_no LIKE concat('%',#{keyword},'%')
+            OR driver_name LIKE concat('%',#{keyword},'%')
+            OR driver_phone LIKE concat('%',#{keyword},'%')
+            )
+        </if>
+        <if test="statuses != null and statuses.size() > 0">
+            AND status IN
             <foreach collection="statuses" item="item" open="(" close=")" separator=",">
                 #{item}
             </foreach>