Эх сурвалжийг харах

Merge branch 'dev' into dev-xcq

xucaiqin 2 жил өмнө
parent
commit
86d3648556
42 өөрчлөгдсөн 1618 нэмэгдсэн , 605 устгасан
  1. 8 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/LoginFilter.java
  2. 2 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/SigningWayEnum.java
  3. 1 1
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/BusSumStatusCount.java
  4. 10 0
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/TableBottom.java
  5. 10 1
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/TableTops.java
  6. 14 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCarrierController.java
  7. 12 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java
  8. 12 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcPurchaseController.java
  9. 44 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java
  10. 1 1
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml
  11. 1 1
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmCooperateApplyController.java
  12. 5 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/dto/res/CooperateManageQueryResDto.java
  13. 5 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/entity/KwmCooperate.java
  14. 5 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/IdsReqVo.java
  15. 5 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/CooperateManageQueryResVo.java
  16. 1 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/CommonBusinessService.java
  17. 3 1
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java
  18. 5 4
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateApplyService.java
  19. 2 1
      sckw-modules/sckw-manage/src/main/resources/mapper/KwmCooperateMapper.xml
  20. 93 18
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwTransportController.java
  21. 379 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwAcceptCarriageService.java
  22. 389 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwConsignService.java
  23. 36 232
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java
  24. 139 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/AcceptCarriageOrderExcelVo.java
  25. 68 55
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/AcceptCarriageOrderVo.java
  26. 149 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/ConsignOrderExcelVo.java
  27. 0 9
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/ConsignOrderVo.java
  28. 3 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserDao.java
  29. 5 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/QueryCurrentOrganizationResVo.java
  30. 23 13
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
  31. 5 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsMenuService.java
  32. 37 5
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsRoleService.java
  33. 1 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsEntCheckTrackDao.xml
  34. 1 1
      sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDao.xml
  35. 2 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java
  36. 6 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/OrderDTO.java
  37. 2 230
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  38. 102 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  39. 6 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/DriverService.java
  40. 5 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java
  41. 1 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  42. 20 18
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

+ 8 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/LoginFilter.java

@@ -98,6 +98,13 @@ public class LoginFilter implements Filter {
         //将redis里的用户信息存入内存中,避免业务操作多次从redis获取值*/
         LoginUserInfo loginUserInfo = JSONObject.parseObject(userInfo, LoginUserInfo.class);
         LoginUserHolder.set(loginUserInfo);
+        //暂时这样写一下,有的接口需要给LoginUserHolder赋值
+        if ("/kwsMenu/findMenuTree".equals(requestUri) || "/kwsDept/findDeptTree".equals(requestUri)) {
+            RedissonUtils.putString(Global.getFullUserLoginKey(Integer.parseInt(systemType), Long.parseLong(key), clientType), JSON.toJSONString(loginUserInfo), Global.PC_TOKEN_EXPIRE);
+            filterChain.doFilter(servletRequest, servletResponse);
+            LoginUserHolder.remove();
+            return;
+        }
 
         /*3、平台管理员直接放行*/
         if (loginUserInfo.getIsMain() == Global.YES && Integer.parseInt(systemType) == SystemTypeEnum.MANAGE.getCode()) {
@@ -107,6 +114,7 @@ public class LoginFilter implements Filter {
             return;
         }
 
+
         //管理员不限制权限,按钮有权限才放行
         if (loginUserInfo.getIsMain() != Global.YES && !checkMenu(systemType + Global.COLON + key, requestUri)) {
             LoginUserHolder.remove();

+ 2 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/SigningWayEnum.java

@@ -11,9 +11,9 @@ import lombok.Getter;
 public enum SigningWayEnum {
 
     //线上签约
-    ONLINE(1, "1"),
+    ONLINE(1, "线上签约"),
     //线下签约
-    OFFLINE(2, "2");
+    OFFLINE(2, "线下签约");
 
     private final int code;
 

+ 1 - 1
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/BusSumStatusCount.java

@@ -11,6 +11,6 @@ import java.util.List;
  */
 @Data
 public class BusSumStatusCount {
-    private List<TobleTop> tobleTops;
+    private List<TableTops> tableTops;
 
 }

+ 10 - 0
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/TableBottom.java

@@ -0,0 +1,10 @@
+//package com.sckw.mongo.model;
+//
+///**
+// * @author lfdc
+// * @description 统计底部展示
+// * @date 2023-07-24 14:07:29
+// */
+//public class TableBottom {
+//
+//}

+ 10 - 1
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/TobleTop.java → sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/TableTops.java

@@ -8,8 +8,17 @@ import lombok.Data;
  * @date 2023-07-11 08:07:41
  */
 @Data
-public class TobleTop {
+public class TableTops {
+    /**
+     * top名称
+     */
     private String name;
+    /**
+     * top状态
+     */
     private String value;
+    /**
+     * 数量
+     */
     private Integer total;
 }

+ 14 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCarrierController.java

@@ -61,4 +61,18 @@ public class KwcCarrierController {
         reqVo.setEntType(EntTypeEnum.LOGISTICS4.getCode());
         kwcContractLogisticsService.export(reqVo);
     }
+
+
+    /**
+     * @return HttpResult
+     * @desc: 分组查询
+     * @author: czh
+     * @date: 2023/7/18
+     */
+    @PostMapping("findListGroup")
+    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) throws SystemException {
+        reqVo.setEntType(EntTypeEnum.LOGISTICS4.getCode());
+        return HttpResult.ok(kwcContractLogisticsService.findListGroup(reqVo));
+    }
+
 }

+ 12 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java

@@ -154,4 +154,16 @@ public class KwcContractSaleController {
     public HttpResult queryCurrentEntSaleContractList() throws SystemException {
         return HttpResult.ok(kwcContractTradeService.queryCurrentEntSaleContractList());
     }
+
+    /**
+     * @return HttpResult
+     * @desc: 分组查询
+     * @author: czh
+     * @date: 2023/7/18
+     */
+    @PostMapping("findListGroup")
+    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) throws SystemException {
+        reqVo.setEntType(EntTypeEnum.SUPPLIER.getCode());
+        return HttpResult.ok(kwcContractTradeService.findListGroup(reqVo));
+    }
 }

+ 12 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcPurchaseController.java

@@ -63,4 +63,16 @@ public class KwcPurchaseController {
         kwcContractTradeService.export(reqVo);
     }
 
+    /**
+     * @return HttpResult
+     * @desc: 分组查询
+     * @author: czh
+     * @date: 2023/7/18
+     */
+    @PostMapping("findListGroup")
+    public HttpResult findListGroup(@RequestBody QueryListReqVo reqVo) throws SystemException {
+        reqVo.setEntType(EntTypeEnum.PURCHASER.getCode());
+        return HttpResult.ok(kwcContractTradeService.findListGroup(reqVo));
+    }
+
 }

+ 44 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java

@@ -36,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
 import com.sckw.system.api.RemoteSystemService;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import com.sckw.contract.dao.KwcContractTradeMapper;
 
@@ -404,6 +405,12 @@ public class KwcContractTradeService {
         });
     }
 
+    /**
+     * @desc: 导出
+     * @param reqVo 查询入参
+     * @author: czh
+     * @date 2023/7/17
+     */
     public void export(QueryListReqVo reqVo) {
         QueryListReqDto queryListReqDto = new QueryListReqDto();
         BeanUtils.copyProperties(reqVo, queryListReqDto);
@@ -444,6 +451,43 @@ public class KwcContractTradeService {
         }
         return getQueryListResVos(queryListResDtos);
     }
+
+
+    /**
+     * @return FindListGroupResVo
+     * @desc: 分组查询
+     * @author: czh
+     * @date: 2023/7/18
+     */
+    public List<FindListGroupResVo> findListGroup(QueryListReqVo reqVo) {
+        ContractStatusEnum[] values = ContractStatusEnum.values();
+        List<FindListGroupResVo> list = new ArrayList<>();
+        FindListGroupResVo total = new FindListGroupResVo();
+        total.setCount(0);
+        list.add(total);
+        for (ContractStatusEnum contractStatusEnum : values) {
+            FindListGroupResVo findListGroupResVo = new FindListGroupResVo();
+            findListGroupResVo.setStatus(contractStatusEnum.getCode());
+            findListGroupResVo.setStatusName(contractStatusEnum.getName());
+            findListGroupResVo.setCount(0);
+            list.add(findListGroupResVo);
+        }
+
+        QueryListReqDto queryListReqDto = new QueryListReqDto();
+        BeanUtils.copyProperties(reqVo, queryListReqDto);
+        queryListReqDto.setEntId(LoginUserHolder.getEntId());
+        List<QueryListResDto> queryListResDtoList = kwcContractTradeMapper.queryList(queryListReqDto);
+        if (CollectionUtils.isNotEmpty(queryListResDtoList)) {
+            Map<Integer, List<QueryListResDto>> collect = queryListResDtoList.stream().collect(Collectors.groupingBy(QueryListResDto::getStatus));
+            for (FindListGroupResVo findListGroupResVo : list) {
+                List<QueryListResDto> queryListResDtos = collect.get(findListGroupResVo.getStatus());
+                findListGroupResVo.setCount(CollectionUtils.isEmpty(queryListResDtos) ? Global.NUMERICAL_ZERO : queryListResDtos.size());
+            }
+            //给汇总项求和
+            list.get(0).setCount(queryListResDtoList.size());
+        }
+        return list;
+    }
 }
 
 

+ 1 - 1
sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml

@@ -72,7 +72,7 @@
               and a.create_time >= #{startTime}
           </if>
           <if test="endTime != null">
-              and a.create_time &lt;= #{endTime}
+              and a.create_time &lt; date_add(#{endTime}, INTERVAL 1 DAY)
           </if>
           <if test="status != null">
               and a.status = #{status}

+ 1 - 1
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmCooperateApplyController.java

@@ -61,7 +61,7 @@ public class KwmCooperateApplyController {
      */
     @PostMapping("/cancel")
     public HttpResult cancel(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
-        kwmCooperateApplyService.cancel(reqVo.getIds());
+        kwmCooperateApplyService.cancel(reqVo);
         return HttpResult.ok(HttpStatus.MSG_018);
     }
 

+ 5 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/dto/res/CooperateManageQueryResDto.java

@@ -97,4 +97,9 @@ public class CooperateManageQueryResDto {
      */
     private Integer status;
 
+    /**
+     * 操作备注
+     */
+    private String approvalRemark;
+
 }

+ 5 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/entity/KwmCooperate.java

@@ -58,4 +58,9 @@ public class KwmCooperate extends BaseModel {
      */
     private String inviteePhone;
 
+    /**
+     * 操作备注
+     */
+    private String approvalRemark;
+
 }

+ 5 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/IdsReqVo.java

@@ -24,4 +24,9 @@ public class IdsReqVo implements Serializable {
     private String ids;
 
     private Long id;
+
+    /**
+     * 备注
+     */
+    private String remark;
 }

+ 5 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/res/CooperateManageQueryResVo.java

@@ -96,4 +96,9 @@ public class CooperateManageQueryResVo implements Serializable {
      */
     private Integer applyTypeCode;
 
+    /**
+     * 操作备注
+     */
+    private String approvalRemark;
+
 }

+ 1 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/CommonBusinessService.java

@@ -179,6 +179,7 @@ public class CommonBusinessService {
             cooperateManageQueryResVo.setCreateByName(userMap.get(cooperateManageQueryResDto.getCreateBy()));
             cooperateManageQueryResVo.setEntName(targetEntName);
             cooperateManageQueryResVo.setEntId(targetEntId);
+            cooperateManageQueryResVo.setApprovalRemark(cooperateManageQueryResDto.getApprovalRemark());
 
             //我方是发起方
             if (entId.compareTo(cooperateManageQueryResDto.getInviterEntId()) == 0) {

+ 3 - 1
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java

@@ -2,6 +2,8 @@ package com.sckw.manage.service;
 
 import java.io.IOException;
 import java.util.*;
+
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -74,7 +76,7 @@ public class KwmAddressService {
                 eq(Objects.nonNull(reqVo.getType()), KwmAddress::getType, reqVo.getType()).
                 eq(KwmAddress::getDelFlag, Global.NO).
                 ge(Objects.nonNull(reqVo.getStartTime()), KwmAddress::getCreateTime, reqVo.getStartTime()).
-                le(Objects.nonNull(reqVo.getEndTime()), KwmAddress::getCreateTime, reqVo.getEndTime()).
+                lt(Objects.nonNull(reqVo.getEndTime()), KwmAddress::getCreateTime, DateUtil.offsetDay(reqVo.getEndTime(), 1)).
                 and(StringUtils.isNotBlank(reqVo.getKeywords()),
                         wq -> wq.like(KwmAddress::getDetailAddress, reqVo.getKeywords()).or().
                                 like(KwmAddress::getCityName, reqVo.getKeywords()));

+ 5 - 4
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateApplyService.java

@@ -25,6 +25,7 @@ import com.sckw.manage.model.entity.KwmCooperate;
 import com.sckw.manage.model.entity.KwmCooperateType;
 import com.sckw.manage.model.vo.req.CooperateApplyQueryReqVo;
 import com.sckw.manage.model.vo.req.CooperateApproveReqVo;
+import com.sckw.manage.model.vo.req.IdsReqVo;
 import com.sckw.manage.model.vo.req.InitiateReqVo;
 import com.sckw.manage.model.vo.res.CooperateManageQueryResVo;
 import com.sckw.manage.model.vo.res.FindListGroupResVo;
@@ -268,13 +269,13 @@ public class KwmCooperateApplyService {
 
 
     /**
-     * @param ids 主键
+     * @param reqVo 主键
      * @desc: 撤销
      * @author: czh
      * @date: 2023/7/11
      */
-    public void cancel(String ids) {
-        updateCooperateInfo(ids, CooperateStatusEnum.CANCEL.getCode(), "");
+    public void cancel(IdsReqVo reqVo) {
+        updateCooperateInfo(reqVo.getIds(), CooperateStatusEnum.CANCEL.getCode(), reqVo.getRemark());
     }
 
 
@@ -304,7 +305,7 @@ public class KwmCooperateApplyService {
             item.setStatus(type);
             item.setUpdateBy(userId);
             item.setUpdateTime(date);
-            item.setRemark(remark);
+            item.setApprovalRemark(remark);
             if (kwmCooperateMapper.updateById(item) <= 0) {
                 throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
             }

+ 2 - 1
sckw-modules/sckw-manage/src/main/resources/mapper/KwmCooperateMapper.xml

@@ -47,6 +47,7 @@
                min(a.create_by) createBy,
                min(a.remark) remark,
                min(a.status) status,
+               min(a.approval_remark) approvalRemark,
                case when min(a.ent_id) = min(a.invitee_ent_id) then min(a.inviter_ent_id) else min(a.invitee_ent_id) end targetEntId,
                case when min(a.ent_id) = #{reqDto.currentEntId} then 1 else 2 end applyTypeCode
           FROM kwm_cooperate a
@@ -57,7 +58,7 @@
                and a.create_time >= #{reqDto.startTime}
            </if>
            <if test="reqDto.endTime != null">
-               and a.create_time &lt;= #{reqDto.endTime}
+               and a.create_time &lt; date_add(#{reqDto.endTime}, INTERVAL 1 DAY)
            </if>
            <if test="reqDto.applyTypeCode != null and reqDto.applyTypeCode == 1">
                and a.ent_id = #{reqDto.currentEntId}

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

@@ -4,10 +4,13 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.config.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.report.service.KwAcceptCarriageService;
+import com.sckw.report.service.KwConsignService;
 import com.sckw.report.service.KwTransportService;
 import com.sckw.report.service.param.ConsignOrderQuery;
 import com.sckw.report.service.param.WaybillOrderQuery;
-import com.sckw.report.service.vo.ConsignOrderVo;
+import com.sckw.report.service.vo.AcceptCarriageOrderExcelVo;
+import com.sckw.report.service.vo.ConsignOrderExcelVo;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.NotBlank;
 import lombok.AllArgsConstructor;
@@ -32,17 +35,23 @@ public class KwTransportController {
     @Autowired
     KwTransportService transportService;
 
+    @Autowired
+    KwConsignService consignService;
+
+    @Autowired
+    KwAcceptCarriageService acceptCarriageService;
+
     /**
-     * 托运订单首页条件查询
+     * 运订单首页条件查询
      *
      * @param query 查询参数
      * @return
      */
-    @RequestMapping(value = "/selectList", method = RequestMethod.POST)
+    @RequestMapping(value = "/selectAcceptCarriageOrderList", method = RequestMethod.POST)
     public HttpResult acceptCarriageOrderList(@Validated @RequestBody ConsignOrderQuery query) {
         HttpResult httpResult = new HttpResult();
         try {
-            httpResult = transportService.list(query);
+            httpResult = acceptCarriageService.acceptCarriageOrderList(query,"2");
         } catch (Exception e) {
             log.error("托运订单查询失败:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
@@ -51,15 +60,15 @@ public class KwTransportController {
     }
 
     /**
-     * 运订单top统计
+     * 运订单top统计
      *
      * @param query
      * @return
      */
-    @RequestMapping(value = "/statistics", method = RequestMethod.POST)
-    public HttpResult statistics(@Validated @RequestBody ConsignOrderQuery query) {
+    @RequestMapping(value = "/statisticsAcceptCarriage", method = RequestMethod.POST)
+    public HttpResult statisticsAcceptCarriage(@Validated @RequestBody ConsignOrderQuery query) {
         try {
-            return transportService.statistics(query);
+            return acceptCarriageService.statisticsAcceptCarriage(query,"2");
         } catch (Exception e) {
             log.error("托运订单top统计失败:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
@@ -67,37 +76,103 @@ public class KwTransportController {
     }
 
     /**
-     * 运订单导出
+     * 运订单导出
      *
      * @param query 查询参数
      * @return
      */
     @RequestMapping(value = "/export", method = RequestMethod.POST)
-    public HttpResult export(@Validated @RequestBody ConsignOrderQuery query) {
+    public HttpResult exportAcceptCarriage(@Validated @RequestBody ConsignOrderQuery query) {
         HttpServletResponse response = RequestHolder.getResponse();
-        List<ConsignOrderVo> list = transportService.export(query);
+        List<AcceptCarriageOrderExcelVo> list = acceptCarriageService.exportAcceptCarriage(query,"2");
         if (!org.springframework.util.CollectionUtils.isEmpty(list)) {
-            ExcelUtil.download(response, ConsignOrderVo.class, list);
+            ExcelUtil.download(response, AcceptCarriageOrderExcelVo.class, list);
             return null;
         }
         return HttpResult.ok("没有可导出的数据");
     }
 
+//    /**
+//     * 承运订单-(订单详情)
+//     * @param id
+//     * @return
+//     */
+//    @RequestMapping(value = "/getOrderDetailAcceptCarriage", method = RequestMethod.GET)
+//    public HttpResult getOrderDetailAcceptCarriage(@RequestParam("id") Long id) {
+//        try {
+//            return transportService.getOrderDetail(id);
+//        } catch (Exception e) {
+//            log.error("承运订单-(订单详情)查询失败:{}", e.getMessage(), e);
+//            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+//        }
+//    }
+
     /**
-     * 托运订单-承运订单(订单详情)
-     * @param id
+     * 托运订单首页条件查询
+     *
+     * @param query 查询参数
      * @return
      */
-    @RequestMapping(value = "/getOrderDetail", method = RequestMethod.GET)
-    public HttpResult getOrderDetail(@RequestParam("id") Long id) {
+    @RequestMapping(value = "/selectConsignOrderList", method = RequestMethod.POST)
+    public HttpResult selectConsignOrderList(@Validated @RequestBody ConsignOrderQuery query) {
+        HttpResult httpResult = new HttpResult();
         try {
-            return transportService.getOrderDetail(id);
+            httpResult = consignService.selectConsignOrderList(query,"1");
         } catch (Exception e) {
-            log.error("托运订单-承运订单(订单详情)查询失败:{}", e.getMessage(), e);
+            log.error("托运订单查询失败:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
+        return httpResult;
     }
 
+    /**
+     * 托运订单top统计
+     *
+     * @param query
+     * @return
+     */
+    @RequestMapping(value = "/statisticsConsign", method = RequestMethod.POST)
+    public HttpResult statisticsConsign(@Validated @RequestBody ConsignOrderQuery query) {
+        try {
+            return consignService.statisticsConsign(query,"1");
+        } catch (Exception e) {
+            log.error("托运订单top统计失败:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
+    /**
+     * 托运订单导出
+     *
+     * @param query 查询参数
+     * @return
+     */
+    @RequestMapping(value = "/exportConsign", method = RequestMethod.POST)
+    public HttpResult exportConsign(@Validated @RequestBody ConsignOrderQuery query) {
+        HttpServletResponse response = RequestHolder.getResponse();
+        List<ConsignOrderExcelVo> list = consignService.exportConsign(query,"1");
+        if (!org.springframework.util.CollectionUtils.isEmpty(list)) {
+            ExcelUtil.download(response, ConsignOrderExcelVo.class, list);
+            return null;
+        }
+        return HttpResult.ok("没有可导出的数据");
+    }
+
+//    /**
+//     * 托运订单-(订单详情)
+//     * @param id
+//     * @return
+//     */
+//    @RequestMapping(value = "/getOrderDetailConsign", method = RequestMethod.GET)
+//    public HttpResult getOrderDetailConsign(@RequestParam("id") Long id) {
+//        try {
+//            return transportService.getOrderDetail(id);
+//        } catch (Exception e) {
+//            log.error("托运订单-(订单详情)查询失败:{}", e.getMessage(), e);
+//            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+//        }
+//    }
+
     /**
      * 运单管理-运单列表
      * @param query

+ 379 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwAcceptCarriageService.java

@@ -0,0 +1,379 @@
+package com.sckw.report.service;
+
+import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.enums.LogisticsOrderEnum;
+import com.sckw.core.model.page.PageResult;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.StringUtils;
+import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.utils.DateUtil;
+import com.sckw.mongo.model.SckwLogisticsOrder;
+import com.sckw.mongo.model.TableTops;
+import com.sckw.report.service.param.ConsignOrderQuery;
+import com.sckw.report.service.vo.AcceptCarriageOrderExcelVo;
+import com.sckw.report.service.vo.AcceptCarriageOrderVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.aggregation.AggregationResults;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * @author lfdc
+ * @description 承运列表service
+ * @date 2023-07-24 12:07:05
+ */
+@Slf4j
+@Service
+public class KwAcceptCarriageService {
+
+    @Autowired
+    public MongoTemplate mongoTemplate;
+
+    @Autowired
+    public KwTransportService transportService;
+
+    /**
+     * 承运列表分页查询
+     * @param query
+     * @param unitType
+     * @return
+     */
+    public HttpResult acceptCarriageOrderList(ConsignOrderQuery query, String unitType)  {
+        //模糊匹配
+        //根据条件查询所有并排序,且分页
+        //设置模糊查询匹配规则  忽略大小写
+        // 创建条件对象
+        Criteria criteria = new Criteria();
+        // 1. 全等于
+        //判断承运还是托运企业
+        if (unitType.equals(NumberConstant.ONE)){
+            criteria.and("checkEntId").is(LoginUserHolder.getEntId());
+        }else {
+            criteria.and("carrierEntId").is(LoginUserHolder.getEntId());
+        }
+        if (StringUtils.isNotBlank(query.getLoadAddress())) {
+            criteria.and("loadDetailAddress").is(query.getLoadAddress());
+        }
+        if (StringUtils.isNotBlank(query.getUnloadAddress())) {
+            criteria.and("unloadDetailAddress").is(query.getUnloadAddress());
+        }
+        if (StringUtils.isNotBlank(query.getStatus())) {
+            criteria.and("status").is(query.getStatus());
+        }
+        criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
+        // 4. 日期范围
+        if (StringUtils.isNotEmpty(query.getStartDateTime()) && StringUtils.isNotEmpty(query.getEndDateTime())) {
+            criteria.andOperator(Criteria.where("createTime").gte(query.getStartDateTime()), Criteria.where("createTime")
+                    .lte(query.getEndDateTime()));
+        }
+        //多条件模糊查询
+        Criteria c1 = new Criteria();
+        Criteria c2 = new Criteria();
+        Criteria c3 = new Criteria();
+        Criteria c4 = new Criteria();
+        Criteria c5 = new Criteria();
+        if (StringUtils.isNotBlank(query.getKeywords())) {
+            Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+            c1 = Criteria.where("firmName").regex(pattern);
+            c2 = Criteria.where("carrierFirmName").regex(pattern);
+            c3 = Criteria.where("checkFirmName").regex(pattern);
+            c4 = Criteria.where("tOrderNo").regex(pattern);
+            c5 = Criteria.where("lOrderNo").regex(pattern);
+            criteria.orOperator(c1, c2, c3, c4, c5);
+        }
+
+        Query query1 = new Query(criteria);
+        //in查询
+        if (CollectionUtils.isNotEmpty(query.getIds())) {
+            query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
+        }
+        // 12. 总记录数
+        long total = mongoTemplate.count(query1, SckwLogisticsOrder.class);
+        // 10. 分页
+        query1.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
+                // 11. 排序list = {ArrayList@27436}  size = 3returnList = {ArrayList@27393}  size = 3
+                Sort.by(Sort.Order.desc("createTime"))));
+        // 执行查询
+        List<SckwLogisticsOrder> list = mongoTemplate.find(query1, SckwLogisticsOrder.class);
+        List<AcceptCarriageOrderVo> returnList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            packageReturnAcceptCarriageOrderList(list, returnList);
+        }
+        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, returnList);
+        return HttpResult.ok(build);
+    }
+    public HttpResult statisticsAcceptCarriage(ConsignOrderQuery param, String unitType) {
+        //模糊匹配
+        //根据条件查询所有并排序,且分页
+        //设置模糊查询匹配规则  忽略大小写
+        // 创建条件对象
+        Criteria criteria = new Criteria();
+        // 1. 全等于
+        //判断承运还是托运企业
+        if (unitType.equals(NumberConstant.ONE)){
+            criteria.and("checkEntId").is(LoginUserHolder.getEntId());
+        }else {
+            criteria.and("carrierEntId").is(LoginUserHolder.getEntId());
+        }
+        if (StringUtils.isNotBlank(param.getLoadAddress())) {
+            criteria.and("loadDetailAddress").is(param.getLoadAddress());
+        }
+        if (StringUtils.isNotBlank(param.getUnloadAddress())) {
+            criteria.and("unloadDetailAddress").is(param.getUnloadAddress());
+        }
+        if (StringUtils.isNotBlank(param.getStatus())) {
+            criteria.and("status").is(param.getStatus());
+        }
+        criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
+        // 4. 日期范围
+        if (StringUtils.isNotEmpty(param.getStartDateTime()) && StringUtils.isNotEmpty(param.getEndDateTime())) {
+            criteria.andOperator(Criteria.where("createTime").gte(param.getStartDateTime()), Criteria.where("createTime")
+                    .lte(param.getEndDateTime()));
+        }
+        if (CollectionUtils.isNotEmpty(param.getIds())) {
+            criteria = Criteria.where("lOrderId").in(param.getIds());
+        }
+        //多条件模糊查询
+        Criteria c1 = new Criteria();
+        Criteria c2 = new Criteria();
+        Criteria c3 = new Criteria();
+        Criteria c4 = new Criteria();
+        Criteria c5 = new Criteria();
+        if (StringUtils.isNotBlank(param.getKeywords())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+            c1 = Criteria.where("firmName").regex(pattern);
+            c2 = Criteria.where("carrierFirmName").regex(pattern);
+            c3 = Criteria.where("checkFirmName").regex(pattern);
+            c4 = Criteria.where("tOrderNo").regex(pattern);
+            c5 = Criteria.where("lOrderNo").regex(pattern);
+            criteria.orOperator(c1, c2, c3, c4, c5);
+        }
+        Aggregation aggregation = Aggregation.newAggregation(
+                Aggregation.match(criteria),
+                Aggregation.group("status").count().as("total"),
+                Aggregation.project("total").and("value").previousOperation()
+        );
+        AggregationResults<TableTops> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwLogisticsOrder.class, TableTops.class);
+        List<TableTops> mappedResults = outputTypeCount.getMappedResults();
+        List<TableTops> arrayList = new ArrayList<>();
+        arrayList.addAll(mappedResults);
+        /**补全数据状态不齐的情况*/
+        packageReturnStatistics(mappedResults, arrayList);
+        // 查询结果
+        return HttpResult.ok(arrayList);
+    }
+    /**
+     * 组装承运订单列表数据
+     * @param list
+     * @param returnList
+     */
+    private void packageReturnAcceptCarriageOrderList(List<SckwLogisticsOrder> list, List<AcceptCarriageOrderVo> returnList) {
+        for (SckwLogisticsOrder logisticsOrder : list) {
+            AcceptCarriageOrderVo vo = new AcceptCarriageOrderVo();
+            vo.setAccountsCycle(logisticsOrder.getSettlementCycle() == null ?
+                    null : String.valueOf(logisticsOrder.getSettlementCycle()));
+            vo.setAppointor(logisticsOrder.getCreateByName());
+            vo.setBillingMode(logisticsOrder.getBillingMode());
+            vo.setCarrierCompany(logisticsOrder.getCarrierFirmName());
+            vo.setCarrierOrder(logisticsOrder.getWOrderNo());
+            vo.setCarrierPhone(logisticsOrder.getCarrierPhone());
+            vo.setCarryingCapacity(logisticsOrder.getCarryingCapacity() == null ?
+                    null : String.valueOf(logisticsOrder.getCarryingCapacity()));
+            vo.setConsignCompany(logisticsOrder.getCheckFirmName());
+            vo.setConsignContacts(logisticsOrder.getCheckContacts());
+            vo.setConsignPhone(logisticsOrder.getCheckPhone());
+            vo.setContract(logisticsOrder.getContractName());
+            vo.setDeficitAmount(logisticsOrder.getDeficitAmount() == null ?
+                    null : String.valueOf(logisticsOrder.getDeficitAmount()));
+            vo.setGoodsName(logisticsOrder.getGoodsName());
+            vo.setLoadAddress(logisticsOrder.getLoadDetailAddress());
+            vo.setUnloadAddress(logisticsOrder.getUnloadDetailAddress());
+            vo.setLOrderId(String.valueOf(logisticsOrder.getLOrderId()));
+            vo.setLOrderNo(logisticsOrder.getLOrderNo());
+            vo.setLoss(logisticsOrder.getLoss() == null ?
+                    null : String.valueOf(logisticsOrder.getLoss()));
+            vo.setPrice(logisticsOrder.getPrice() == null ?
+                    null : String.valueOf(logisticsOrder.getPrice()));
+            vo.setReceiveGoodsContacts(logisticsOrder.getUnloadContacts());
+            vo.setReceiveGoodsPhone(logisticsOrder.getUnloadPhone());
+            vo.setRemark(logisticsOrder.getRemark());
+            vo.setShipmentsContacts(logisticsOrder.getLoadContacts());
+            vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
+            vo.setShipmentsDateTime(logisticsOrder.getLoadTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getLoadTime()));
+            vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
+            vo.setSigning(logisticsOrder.getContractSigningWay());
+            vo.setStatus(logisticsOrder.getStatus());
+            vo.setUnloadAddress(logisticsOrder.getUnloadDetailAddress());
+            vo.setWOrderNo(logisticsOrder.getWOrderNo());
+            vo.setCreateTime(logisticsOrder.getCreateTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getCreateTime()));
+            vo.setUpdateTime(logisticsOrder.getUpdateTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getUpdateTime()));
+            returnList.add(vo);
+        }
+    }
+
+
+
+    /**
+     * 组装返回数据
+     *
+     * @param mappedResults
+     * @param arrayList
+     */
+    private void packageReturnStatistics(List<com.sckw.mongo.model.TableTops> mappedResults, List<TableTops> arrayList) {
+        List<String> codeList = LogisticsOrderEnum.getCodeStringList();
+        List<String> collect = mappedResults.stream().map(e -> e.getValue()).collect(Collectors.toList());
+        List<String> diffrentList = transportService.getDiffrentList(collect, codeList);
+        if (CollectionUtils.isNotEmpty(mappedResults)) {
+            if (CollectionUtils.isNotEmpty(diffrentList)) {
+                for (String s : diffrentList) {
+                    TableTops top = new TableTops();
+                    top.setValue(s);
+                    top.setTotal(NumberConstant.ZERO);
+                    arrayList.add(top);
+                }
+            }
+            for (TableTops top : arrayList) {
+                top.setName(LogisticsOrderEnum.getName(Integer.valueOf(top.getValue())));
+            }
+        } else {
+            for (LogisticsOrderEnum logisticsOrderEnum : LogisticsOrderEnum.values()) {
+                TableTops top = new TableTops();
+                top.setName(logisticsOrderEnum.getDestination());
+                top.setValue(logisticsOrderEnum.getStatus());
+                top.setTotal(NumberConstant.ZERO);
+                arrayList.add(top);
+            }
+        }
+    }
+
+    /**
+     * 承运分页详情导出
+     * @param query
+     * @param unitType
+     * @return
+     */
+    public List<AcceptCarriageOrderExcelVo> exportAcceptCarriage(ConsignOrderQuery query, String unitType) {
+        //模糊匹配
+        //根据条件查询所有并排序,且分页
+        //设置模糊查询匹配规则  忽略大小写
+        // 创建条件对象
+        Criteria criteria = new Criteria();
+        // 1. 全等于
+        Query query1 =new Query();
+        //判断承运还是托运企业
+        if (unitType.equals(NumberConstant.ONE)){
+            criteria.and("checkEntId").is(LoginUserHolder.getEntId());
+        }else {
+            criteria.and("carrierEntId").is(LoginUserHolder.getEntId());
+        }
+        criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
+        if (CollectionUtils.isEmpty(query.getIds())) {
+            if (StringUtils.isNotBlank(query.getLoadAddress())) {
+                criteria.and("loadDetailAddress").is(query.getLoadAddress());
+            }
+            if (StringUtils.isNotBlank(query.getUnloadAddress())) {
+                criteria.and("unloadDetailAddress").is(query.getUnloadAddress());
+            }
+            if (StringUtils.isNotBlank(query.getStatus())) {
+                criteria.and("status").is(query.getStatus());
+            }
+            // 4. 日期范围
+            if (StringUtils.isNotEmpty(query.getStartDateTime()) && StringUtils.isNotEmpty(query.getEndDateTime())) {
+                criteria.andOperator(Criteria.where("createTime").gte(query.getStartDateTime()), Criteria.where("createTime")
+                        .lte(query.getEndDateTime()));
+            }
+            //多条件模糊查询
+            Criteria c1 = new Criteria();
+            Criteria c2 = new Criteria();
+            Criteria c3 = new Criteria();
+            Criteria c4 = new Criteria();
+            Criteria c5 = new Criteria();
+            if (StringUtils.isNotBlank(query.getKeywords())) {
+                Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+                c1 = Criteria.where("firmName").regex(pattern);
+                c2 = Criteria.where("carrierFirmName").regex(pattern);
+                c3 = Criteria.where("checkFirmName").regex(pattern);
+                c4 = Criteria.where("tOrderNo").regex(pattern);
+                c5 = Criteria.where("lOrderNo").regex(pattern);
+                criteria.orOperator(c1, c2, c3, c4, c5);
+            }
+            query1.addCriteria(criteria);
+            if (CollectionUtils.isNotEmpty(query.getIds())) {
+                query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
+            }
+        }else {
+            query1.addCriteria(criteria);
+            if (CollectionUtils.isNotEmpty(query.getIds())) {
+                query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
+            }
+        }
+        // 执行查询
+        List<SckwLogisticsOrder> list = mongoTemplate.find(query1, SckwLogisticsOrder.class);
+        List<AcceptCarriageOrderExcelVo> returnList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            packageReturnList(list, returnList);
+        }
+        return returnList;
+    }
+    private void packageReturnList(List<SckwLogisticsOrder> list, List<AcceptCarriageOrderExcelVo> returnList) {
+        for (SckwLogisticsOrder logisticsOrder : list) {
+            AcceptCarriageOrderExcelVo vo = new AcceptCarriageOrderExcelVo();
+            vo.setAccountsCycle(logisticsOrder.getSettlementCycle() == null ?
+                    null : String.valueOf(logisticsOrder.getSettlementCycle()));
+            vo.setAppointor(logisticsOrder.getCreateByName());
+            vo.setBillingMode(logisticsOrder.getBillingMode());
+            vo.setCarrierCompany(logisticsOrder.getCarrierFirmName());
+            vo.setCarrierOrder(logisticsOrder.getWOrderNo());
+            vo.setCarrierPhone(logisticsOrder.getCarrierPhone());
+            vo.setCarryingCapacity(logisticsOrder.getCarryingCapacity() == null ?
+                    null : String.valueOf(logisticsOrder.getCarryingCapacity()));
+            vo.setConsignCompany(logisticsOrder.getCheckFirmName());
+            vo.setConsignContacts(logisticsOrder.getCheckContacts());
+            vo.setConsignPhone(logisticsOrder.getCheckPhone());
+            vo.setContract(logisticsOrder.getContractName());
+            vo.setDeficitAmount(logisticsOrder.getDeficitAmount() == null ?
+                    null : String.valueOf(logisticsOrder.getDeficitAmount()));
+            vo.setGoodsName(logisticsOrder.getGoodsName());
+            vo.setLoadAddress(logisticsOrder.getLoadDetailAddress());
+            vo.setUnloadAddress(logisticsOrder.getUnloadDetailAddress());
+            vo.setLOrderId(String.valueOf(logisticsOrder.getLOrderId()));
+            vo.setLOrderNo(logisticsOrder.getLOrderNo());
+            vo.setLoss(logisticsOrder.getLoss() == null ?
+                    null : String.valueOf(logisticsOrder.getLoss()));
+            vo.setPrice(logisticsOrder.getPrice() == null ?
+                    null : String.valueOf(logisticsOrder.getPrice()));
+            vo.setReceiveGoodsContacts(logisticsOrder.getUnloadContacts());
+            vo.setReceiveGoodsPhone(logisticsOrder.getUnloadPhone());
+            vo.setRemark(logisticsOrder.getRemark());
+            vo.setShipmentsContacts(logisticsOrder.getLoadContacts());
+            vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
+            vo.setShipmentsDateTime(logisticsOrder.getLoadTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getLoadTime()));
+            vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
+            vo.setSigning(logisticsOrder.getContractSigningWay());
+            vo.setStatus(logisticsOrder.getStatus());
+            vo.setUnloadAddress(logisticsOrder.getUnloadDetailAddress());
+            vo.setWOrderNo(logisticsOrder.getWOrderNo());
+            vo.setCreateTime(logisticsOrder.getCreateTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getCreateTime()));
+            vo.setUpdateTime(logisticsOrder.getUpdateTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getUpdateTime()));
+            returnList.add(vo);
+        }
+    }
+}

+ 389 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwConsignService.java

@@ -0,0 +1,389 @@
+package com.sckw.report.service;
+
+import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.enums.LogisticsOrderEnum;
+import com.sckw.core.model.page.PageResult;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.StringUtils;
+import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.utils.DateUtil;
+import com.sckw.mongo.model.SckwLogisticsOrder;
+import com.sckw.mongo.model.TableTops;
+import com.sckw.report.service.param.ConsignOrderQuery;
+import com.sckw.report.service.vo.ConsignOrderExcelVo;
+import com.sckw.report.service.vo.ConsignOrderVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.aggregation.AggregationResults;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * @author lfdc
+ * @description 托运service
+ * @date 2023-07-24 13:07:47
+ */
+@Slf4j
+@Service
+public class KwConsignService {
+
+    @Autowired
+    public MongoTemplate mongoTemplate;
+
+    @Autowired
+    public KwTransportService transportService;
+
+    /**
+     * 托运订单列表查询
+     *
+     * @param query
+     * @return
+     * @throws ParseException
+     */
+    public HttpResult selectConsignOrderList(ConsignOrderQuery query, String unitType) {
+        //模糊匹配
+        //根据条件查询所有并排序,且分页
+        //设置模糊查询匹配规则  忽略大小写
+        // 创建条件对象
+        Criteria criteria = new Criteria();
+        // 1. 全等于
+        //判断承运还是托运企业
+        if (unitType.equals(NumberConstant.ONE)) {
+            criteria.and("checkEntId").is(LoginUserHolder.getEntId());
+        } else {
+            criteria.and("carrierEntId").is(LoginUserHolder.getEntId());
+        }
+        if (StringUtils.isNotBlank(query.getLoadAddress())) {
+            criteria.and("loadDetailAddress").is(query.getLoadAddress());
+        }
+        if (StringUtils.isNotBlank(query.getUnloadAddress())) {
+            criteria.and("unloadDetailAddress").is(query.getUnloadAddress());
+        }
+        if (StringUtils.isNotBlank(query.getStatus())) {
+            criteria.and("status").is(query.getStatus());
+        }
+        criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
+        // 4. 日期范围
+        if (StringUtils.isNotEmpty(query.getStartDateTime()) && StringUtils.isNotEmpty(query.getEndDateTime())) {
+            criteria.andOperator(Criteria.where("createTime").gte(query.getStartDateTime()), Criteria.where("createTime")
+                    .lte(query.getEndDateTime()));
+        }
+        //多条件模糊查询
+        Criteria c1 = new Criteria();
+        Criteria c2 = new Criteria();
+        Criteria c3 = new Criteria();
+        Criteria c4 = new Criteria();
+        Criteria c5 = new Criteria();
+        if (StringUtils.isNotBlank(query.getKeywords())) {
+            Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+            c1 = Criteria.where("firmName").regex(pattern);
+            c2 = Criteria.where("carrierFirmName").regex(pattern);
+            c3 = Criteria.where("checkFirmName").regex(pattern);
+            c4 = Criteria.where("tOrderNo").regex(pattern);
+            c5 = Criteria.where("lOrderNo").regex(pattern);
+            criteria.orOperator(c1, c2, c3, c4, c5);
+        }
+
+        Query query1 = new Query(criteria);
+        //in查询
+        if (CollectionUtils.isNotEmpty(query.getIds())) {
+            query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
+        }
+        // 12. 总记录数
+        long total = mongoTemplate.count(query1, SckwLogisticsOrder.class);
+        // 10. 分页
+        query1.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
+                // 11. 排序list = {ArrayList@27436}  size = 3returnList = {ArrayList@27393}  size = 3
+                Sort.by(Sort.Order.desc("createTime"))));
+        // 执行查询
+        List<SckwLogisticsOrder> list = mongoTemplate.find(query1, SckwLogisticsOrder.class);
+        List<ConsignOrderVo> returnList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            packageReturnList(list, returnList);
+        }
+        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, returnList);
+        return HttpResult.ok(build);
+    }
+
+    /**
+     * 组装托运列表分页查询
+     *
+     * @param list
+     * @param returnList
+     */
+    private void packageReturnList(List<SckwLogisticsOrder> list, List<ConsignOrderVo> returnList) {
+        for (SckwLogisticsOrder logisticsOrder : list) {
+            ConsignOrderVo vo = new ConsignOrderVo();
+            vo.setAccountsCycle(logisticsOrder.getSettlementCycle() == null ?
+                    null : String.valueOf(logisticsOrder.getSettlementCycle()));
+            vo.setAppointor(logisticsOrder.getCreateByName());
+            vo.setBillingMode(logisticsOrder.getBillingMode());
+            vo.setCarrierCompany(logisticsOrder.getCarrierFirmName());
+            vo.setCarrierOrder(logisticsOrder.getWOrderNo());
+            vo.setCarrierPhone(logisticsOrder.getCarrierPhone());
+            vo.setCarryingCapacity(logisticsOrder.getCarryingCapacity() == null ?
+                    null : String.valueOf(logisticsOrder.getCarryingCapacity()));
+            vo.setConsignCompany(logisticsOrder.getCheckFirmName());
+            vo.setConsignContacts(logisticsOrder.getCheckContacts());
+            vo.setConsignPhone(logisticsOrder.getCheckPhone());
+            vo.setContract(logisticsOrder.getContractName());
+            vo.setDeficitAmount(logisticsOrder.getDeficitAmount() == null ?
+                    null : String.valueOf(logisticsOrder.getDeficitAmount()));
+            vo.setGoodsName(logisticsOrder.getGoodsName());
+            vo.setLoadAddress(logisticsOrder.getLoadDetailAddress());
+            vo.setUnloadAddress(logisticsOrder.getUnloadDetailAddress());
+            vo.setLOrderId(String.valueOf(logisticsOrder.getLOrderId()));
+            vo.setLOrderNo(logisticsOrder.getLOrderNo());
+            vo.setLoss(logisticsOrder.getLoss() == null ?
+                    null : String.valueOf(logisticsOrder.getLoss()));
+            vo.setPrice(logisticsOrder.getPrice() == null ?
+                    null : String.valueOf(logisticsOrder.getPrice()));
+            vo.setReceiveGoodsContacts(logisticsOrder.getUnloadContacts());
+            vo.setReceiveGoodsPhone(logisticsOrder.getUnloadPhone());
+            vo.setRemark(logisticsOrder.getRemark());
+            vo.setShipmentsContacts(logisticsOrder.getLoadContacts());
+            vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
+            vo.setShipmentsDateTime(logisticsOrder.getLoadTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getLoadTime()));
+            vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
+            vo.setSigning(logisticsOrder.getContractSigningWay());
+            vo.setStatus(logisticsOrder.getStatus());
+            vo.setUnloadAddress(logisticsOrder.getUnloadDetailAddress());
+            vo.setWOrderNo(logisticsOrder.getWOrderNo());
+            vo.setCreateTime(logisticsOrder.getCreateTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getCreateTime()));
+            vo.setUpdateTime(logisticsOrder.getUpdateTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getUpdateTime()));
+            returnList.add(vo);
+        }
+    }
+
+    /**
+     * 托运订单导出
+     *
+     * @param query
+     * @param unitType
+     * @return
+     */
+    public List<ConsignOrderExcelVo> exportConsign(ConsignOrderQuery query, String unitType) {
+        //模糊匹配
+        //根据条件查询所有并排序,且分页
+        //设置模糊查询匹配规则  忽略大小写
+        // 创建条件对象
+        Criteria criteria = new Criteria();
+        // 1. 全等于
+        Query query1 = new Query();
+        if (unitType.equals(NumberConstant.ONE)) {
+            criteria.and("checkEntId").is(LoginUserHolder.getEntId());
+        } else {
+            criteria.and("carrierEntId").is(LoginUserHolder.getEntId());
+        }
+        criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
+        if (CollectionUtils.isEmpty(query.getIds())) {
+            if (StringUtils.isNotBlank(query.getLoadAddress())) {
+                criteria.and("loadDetailAddress").is(query.getLoadAddress());
+            }
+            if (StringUtils.isNotBlank(query.getUnloadAddress())) {
+                criteria.and("unloadDetailAddress").is(query.getUnloadAddress());
+            }
+            if (StringUtils.isNotBlank(query.getStatus())) {
+                criteria.and("status").is(query.getStatus());
+            }
+            // 4. 日期范围
+            if (StringUtils.isNotEmpty(query.getStartDateTime()) && StringUtils.isNotEmpty(query.getEndDateTime())) {
+                criteria.andOperator(Criteria.where("createTime").gte(query.getStartDateTime()), Criteria.where("createTime")
+                        .lte(query.getEndDateTime()));
+            }
+            //多条件模糊查询
+            Criteria c1 = new Criteria();
+            Criteria c2 = new Criteria();
+            Criteria c3 = new Criteria();
+            Criteria c4 = new Criteria();
+            Criteria c5 = new Criteria();
+            if (StringUtils.isNotBlank(query.getKeywords())) {
+                Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+                c1 = Criteria.where("firmName").regex(pattern);
+                c2 = Criteria.where("carrierFirmName").regex(pattern);
+                c3 = Criteria.where("checkFirmName").regex(pattern);
+                c4 = Criteria.where("tOrderNo").regex(pattern);
+                c5 = Criteria.where("lOrderNo").regex(pattern);
+                criteria.orOperator(c1, c2, c3, c4, c5);
+            }
+            query1.addCriteria(criteria);
+            if (CollectionUtils.isNotEmpty(query.getIds())) {
+                query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
+            }
+        } else {
+            query1.addCriteria(criteria);
+            if (CollectionUtils.isNotEmpty(query.getIds())) {
+                query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
+            }
+        }
+        // 执行查询
+        List<SckwLogisticsOrder> list = mongoTemplate.find(query1, SckwLogisticsOrder.class);
+        List<ConsignOrderExcelVo> returnList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            packageReturnExcelList(list, returnList);
+        }
+        return returnList;
+    }
+
+    private void packageReturnExcelList(List<SckwLogisticsOrder> list, List<ConsignOrderExcelVo> returnList) {
+        for (SckwLogisticsOrder logisticsOrder : list) {
+            ConsignOrderExcelVo vo = new ConsignOrderExcelVo();
+            vo.setAccountsCycle(logisticsOrder.getSettlementCycle() == null ?
+                    null : String.valueOf(logisticsOrder.getSettlementCycle()));
+            vo.setAppointor(logisticsOrder.getCreateByName());
+            vo.setBillingMode(logisticsOrder.getBillingMode());
+            vo.setCarrierCompany(logisticsOrder.getCarrierFirmName());
+            vo.setCarrierOrder(logisticsOrder.getWOrderNo());
+            vo.setCarrierPhone(logisticsOrder.getCarrierPhone());
+            vo.setCarryingCapacity(logisticsOrder.getCarryingCapacity() == null ?
+                    null : String.valueOf(logisticsOrder.getCarryingCapacity()));
+            vo.setConsignCompany(logisticsOrder.getCheckFirmName());
+            vo.setConsignContacts(logisticsOrder.getCheckContacts());
+            vo.setConsignPhone(logisticsOrder.getCheckPhone());
+            vo.setContract(logisticsOrder.getContractName());
+            vo.setDeficitAmount(logisticsOrder.getDeficitAmount() == null ?
+                    null : String.valueOf(logisticsOrder.getDeficitAmount()));
+            vo.setGoodsName(logisticsOrder.getGoodsName());
+            vo.setLoadAddress(logisticsOrder.getLoadDetailAddress());
+            vo.setUnloadAddress(logisticsOrder.getUnloadDetailAddress());
+            vo.setLOrderId(String.valueOf(logisticsOrder.getLOrderId()));
+            vo.setLOrderNo(logisticsOrder.getLOrderNo());
+            vo.setLoss(logisticsOrder.getLoss() == null ?
+                    null : String.valueOf(logisticsOrder.getLoss()));
+            vo.setPrice(logisticsOrder.getPrice() == null ?
+                    null : String.valueOf(logisticsOrder.getPrice()));
+            vo.setReceiveGoodsContacts(logisticsOrder.getUnloadContacts());
+            vo.setReceiveGoodsPhone(logisticsOrder.getUnloadPhone());
+            vo.setRemark(logisticsOrder.getRemark());
+            vo.setShipmentsContacts(logisticsOrder.getLoadContacts());
+            vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
+            vo.setShipmentsDateTime(logisticsOrder.getLoadTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getLoadTime()));
+            vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
+            vo.setSigning(logisticsOrder.getContractSigningWay());
+            vo.setStatus(logisticsOrder.getStatus());
+            vo.setUnloadAddress(logisticsOrder.getUnloadDetailAddress());
+            vo.setWOrderNo(logisticsOrder.getWOrderNo());
+            vo.setCreateTime(logisticsOrder.getCreateTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getCreateTime()));
+            vo.setUpdateTime(logisticsOrder.getUpdateTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getUpdateTime()));
+            returnList.add(vo);
+        }
+    }
+
+    public HttpResult statisticsConsign(ConsignOrderQuery param, String unitType) {
+        //模糊匹配
+        //根据条件查询所有并排序,且分页
+        //设置模糊查询匹配规则  忽略大小写
+        // 创建条件对象
+        Criteria criteria = new Criteria();
+        // 1. 全等于
+        //判断承运还是托运企业
+        if (unitType.equals(NumberConstant.ONE)) {
+            criteria.and("checkEntId").is(LoginUserHolder.getEntId());
+        } else {
+            criteria.and("carrierEntId").is(LoginUserHolder.getEntId());
+        }
+        if (StringUtils.isNotBlank(param.getLoadAddress())) {
+            criteria.and("loadDetailAddress").is(param.getLoadAddress());
+        }
+        if (StringUtils.isNotBlank(param.getUnloadAddress())) {
+            criteria.and("unloadDetailAddress").is(param.getUnloadAddress());
+        }
+        if (StringUtils.isNotBlank(param.getStatus())) {
+            criteria.and("status").is(param.getStatus());
+        }
+        criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
+        // 4. 日期范围
+        if (StringUtils.isNotEmpty(param.getStartDateTime()) && StringUtils.isNotEmpty(param.getEndDateTime())) {
+            criteria.andOperator(Criteria.where("createTime").gte(param.getStartDateTime()), Criteria.where("createTime")
+                    .lte(param.getEndDateTime()));
+        }
+        if (CollectionUtils.isNotEmpty(param.getIds())) {
+            criteria = Criteria.where("lOrderId").in(param.getIds());
+        }
+        //多条件模糊查询
+        Criteria c1 = new Criteria();
+        Criteria c2 = new Criteria();
+        Criteria c3 = new Criteria();
+        Criteria c4 = new Criteria();
+        Criteria c5 = new Criteria();
+        if (StringUtils.isNotBlank(param.getKeywords())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+            c1 = Criteria.where("firmName").regex(pattern);
+            c2 = Criteria.where("carrierFirmName").regex(pattern);
+            c3 = Criteria.where("checkFirmName").regex(pattern);
+            c4 = Criteria.where("tOrderNo").regex(pattern);
+            c5 = Criteria.where("lOrderNo").regex(pattern);
+            criteria.orOperator(c1, c2, c3, c4, c5);
+        }
+        Aggregation aggregation = Aggregation.newAggregation(
+                Aggregation.match(criteria),
+                Aggregation.group("status").count().as("total"),
+                Aggregation.project("total").and("value").previousOperation()
+        );
+        AggregationResults<TableTops> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwLogisticsOrder.class, TableTops.class);
+        List<TableTops> mappedResults = outputTypeCount.getMappedResults();
+        List<TableTops> arrayList = new ArrayList<>();
+        arrayList.addAll(mappedResults);
+        /**补全数据状态不齐的情况*/
+        packageReturnStatistics(mappedResults, arrayList);
+        // 查询结果
+        Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
+        map.put("tableTop",arrayList);
+        return HttpResult.ok(map);
+    }
+
+
+    /**
+     * 组装返回数据
+     *
+     * @param mappedResults
+     * @param arrayList
+     */
+    private void packageReturnStatistics(List<TableTops> mappedResults, List<TableTops> arrayList) {
+        List<String> codeList = LogisticsOrderEnum.getCodeStringList();
+        List<String> collect = mappedResults.stream().map(e -> e.getValue()).collect(Collectors.toList());
+        List<String> diffrentList = transportService.getDiffrentList(collect, codeList);
+        if (CollectionUtils.isNotEmpty(mappedResults)) {
+            if (CollectionUtils.isNotEmpty(diffrentList)) {
+                for (String s : diffrentList) {
+                    TableTops top = new TableTops();
+                    top.setValue(s);
+                    top.setTotal(NumberConstant.ZERO);
+                    arrayList.add(top);
+                }
+            }
+            for (TableTops top : arrayList) {
+                top.setName(LogisticsOrderEnum.getName(Integer.valueOf(top.getValue())));
+            }
+        } else {
+            for (LogisticsOrderEnum logisticsOrderEnum : LogisticsOrderEnum.values()) {
+                TableTops top = new TableTops();
+                top.setName(logisticsOrderEnum.getDestination());
+                top.setValue(logisticsOrderEnum.getStatus());
+                top.setTotal(NumberConstant.ZERO);
+                arrayList.add(top);
+            }
+        }
+    }
+
+}

+ 36 - 232
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -10,13 +10,11 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.DateUtil;
 import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.mongo.model.SckwWaybillOrder;
-import com.sckw.mongo.model.TobleTop;
+import com.sckw.mongo.model.TableTops;
 import com.sckw.report.dao.SckwLogisticsOrderRepository;
 import com.sckw.report.enums.CarWaybillEnum;
-import com.sckw.report.service.param.ConsignOrderQuery;
 import com.sckw.report.service.param.WaybillOrderQuery;
 import com.sckw.report.service.vo.CarWaybillVo;
-import com.sckw.report.service.vo.ConsignOrderVo;
 import com.sckw.report.service.vo.WaybillsCountVo;
 import com.sckw.transport.api.dubbo.TransportDubboService;
 import com.sckw.transport.api.model.dto.vo.KwtLogisticsOrderVO;
@@ -36,6 +34,7 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @author zk
@@ -54,228 +53,33 @@ public class KwTransportService {
 
     @DubboReference(version = "2.0.0", group = "design", check = false)
     TransportDubboService transportDubboService;
-    public HttpResult list(ConsignOrderQuery query) throws ParseException {
-        //模糊匹配
-        //根据条件查询所有并排序,且分页
-        //设置模糊查询匹配规则  忽略大小写
-        // 创建条件对象
-        Criteria criteria = new Criteria();
-        // 1. 全等于
-        criteria.and("entId").is(LoginUserHolder.getEntId());
-        if (StringUtils.isNotBlank(query.getLoadAddress())) {
-            criteria.and("loadDetailAddress").is(query.getLoadAddress());
-        }
-        if (StringUtils.isNotBlank(query.getUnloadAddress())) {
-            criteria.and("unloadDetailAddress").is(query.getUnloadAddress());
-        }
-        if (StringUtils.isNotBlank(query.getStatus())) {
-            criteria.and("status").is(query.getStatus());
-        }
-        criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
-        // 4. 日期范围
-        if (StringUtils.isNotEmpty(query.getStartDateTime()) && StringUtils.isNotEmpty(query.getEndDateTime())) {
-            criteria.andOperator(Criteria.where("createTime").gte(query.getStartDateTime()), Criteria.where("createTime")
-                    .lte(query.getEndDateTime()));
-        }
-        //多条件模糊查询
-        Criteria c1 = new Criteria();
-        Criteria c2 = new Criteria();
-        Criteria c3 = new Criteria();
-        Criteria c4 = new Criteria();
-        Criteria c5 = new Criteria();
-        if (StringUtils.isNotBlank(query.getKeywords())) {
-            Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
-            c1 = Criteria.where("firmName").regex(pattern);
-            c2 = Criteria.where("carrierFirmName").regex(pattern);
-            c3 = Criteria.where("checkFirmName").regex(pattern);
-            c4 = Criteria.where("tOrderNo").regex(pattern);
-            c5 = Criteria.where("lOrderNo").regex(pattern);
-            criteria.orOperator(c1, c2, c3, c4, c5);
-        }
-
-        Query query1 = new Query(criteria);
-        //in查询
-        if (CollectionUtils.isNotEmpty(query.getIds())) {
-            query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
-        }
-        // 12. 总记录数
-        long total = mongoTemplate.count(query1, SckwLogisticsOrder.class);
-        // 10. 分页
-        query1.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
-                // 11. 排序list = {ArrayList@27436}  size = 3returnList = {ArrayList@27393}  size = 3
-                Sort.by(Sort.Order.desc("createTime"))));
-        // 执行查询
-        List<SckwLogisticsOrder> list = mongoTemplate.find(query1, SckwLogisticsOrder.class);
-        List<ConsignOrderVo> returnList = new ArrayList<>();
-        if (CollectionUtils.isNotEmpty(list)) {
-            packageReturnList(list, returnList);
-        }
-        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, returnList);
-        return HttpResult.ok(build);
-    }
-
-    public HttpResult statistics(ConsignOrderQuery param) {
-        //模糊匹配
-        //根据条件查询所有并排序,且分页
-        //设置模糊查询匹配规则  忽略大小写
-        // 创建条件对象
-        Criteria criteria = new Criteria();
-        // 1. 全等于
-        criteria.and("entId").is(LoginUserHolder.getEntId());
-        if (StringUtils.isNotBlank(param.getLoadAddress())) {
-            criteria.and("loadDetailAddress").is(param.getLoadAddress());
-        }
-        if (StringUtils.isNotBlank(param.getUnloadAddress())) {
-            criteria.and("unloadDetailAddress").is(param.getUnloadAddress());
-        }
-        if (StringUtils.isNotBlank(param.getStatus())) {
-            criteria.and("status").is(param.getStatus());
-        }
-        criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
-        // 4. 日期范围
-        if (StringUtils.isNotEmpty(param.getStartDateTime()) && StringUtils.isNotEmpty(param.getEndDateTime())) {
-            criteria.andOperator(Criteria.where("createTime").gte(param.getStartDateTime()), Criteria.where("createTime")
-                    .lte(param.getEndDateTime()));
-        }
-        if (CollectionUtils.isNotEmpty(param.getIds())) {
-            criteria = Criteria.where("lOrderId").in(param.getIds());
-        }
-        //多条件模糊查询
-        Criteria c1 = new Criteria();
-        Criteria c2 = new Criteria();
-        Criteria c3 = new Criteria();
-        Criteria c4 = new Criteria();
-        Criteria c5 = new Criteria();
-        if (StringUtils.isNotBlank(param.getKeywords())) {
-            Pattern pattern = Pattern.compile("^.*" + param.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
-            c1 = Criteria.where("firmName").regex(pattern);
-            c2 = Criteria.where("carrierFirmName").regex(pattern);
-            c3 = Criteria.where("checkFirmName").regex(pattern);
-            c4 = Criteria.where("tOrderNo").regex(pattern);
-            c5 = Criteria.where("lOrderNo").regex(pattern);
-            criteria.orOperator(c1, c2, c3, c4, c5);
-        }
-        Aggregation aggregation = Aggregation.newAggregation(
-                Aggregation.match(criteria),
-                Aggregation.group("status").count().as("total"),
-                Aggregation.project("total").and("value").previousOperation()
-        );
-        AggregationResults<TobleTop> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwLogisticsOrder.class, TobleTop.class);
-        List<TobleTop> results = (List<TobleTop>) outputTypeCount.getRawResults().get("results");
-        // 查询结果
-        return HttpResult.ok(results);
-    }
-
-    public List<ConsignOrderVo> export(ConsignOrderQuery query) {
-        //模糊匹配
-        //根据条件查询所有并排序,且分页
-        //设置模糊查询匹配规则  忽略大小写
-        // 创建条件对象
-        Criteria criteria = new Criteria();
-        // 1. 全等于
-        criteria.and("entId").is(LoginUserHolder.getEntId());
-        if (StringUtils.isNotBlank(query.getLoadAddress())) {
-            criteria.and("loadDetailAddress").is(query.getLoadAddress());
-        }
-        if (StringUtils.isNotBlank(query.getUnloadAddress())) {
-            criteria.and("unloadDetailAddress").is(query.getUnloadAddress());
-        }
-        if (StringUtils.isNotBlank(query.getStatus())) {
-            criteria.and("status").is(query.getStatus());
-        }
-        criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
-        // 4. 日期范围
-        if (StringUtils.isNotEmpty(query.getStartDateTime()) && StringUtils.isNotEmpty(query.getEndDateTime())) {
-            criteria.andOperator(Criteria.where("createTime").gte(query.getStartDateTime()), Criteria.where("createTime")
-                    .lte(query.getEndDateTime()));
-        }
-        //多条件模糊查询
-        Criteria c1 = new Criteria();
-        Criteria c2 = new Criteria();
-        Criteria c3 = new Criteria();
-        Criteria c4 = new Criteria();
-        Criteria c5 = new Criteria();
-        if (StringUtils.isNotBlank(query.getKeywords())) {
-            Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
-            c1 = Criteria.where("firmName").regex(pattern);
-            c2 = Criteria.where("carrierFirmName").regex(pattern);
-            c3 = Criteria.where("checkFirmName").regex(pattern);
-            c4 = Criteria.where("tOrderNo").regex(pattern);
-            c5 = Criteria.where("lOrderNo").regex(pattern);
-            criteria.orOperator(c1, c2, c3, c4, c5);
-        }
-        Query query1 = new Query(criteria);
-        if (CollectionUtils.isNotEmpty(query.getIds())) {
-            query1.addCriteria(Criteria.where("lOrderId").in(query.getIds()));
-        }
-        // 执行查询
-        List<SckwLogisticsOrder> list = mongoTemplate.find(query1, SckwLogisticsOrder.class);
-//        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, list);
-        List<ConsignOrderVo> returnList = new ArrayList<>();
-        if (CollectionUtils.isNotEmpty(list)) {
-            packageReturnList(list, returnList);
-        }
-        return returnList;
-    }
 
-    private void packageReturnList(List<SckwLogisticsOrder> list, List<ConsignOrderVo> returnList) {
-        for (SckwLogisticsOrder logisticsOrder : list) {
-            ConsignOrderVo vo = new ConsignOrderVo();
-            vo.setAccountsCycle(logisticsOrder.getSettlementCycle() == null ?
-                    null : String.valueOf(logisticsOrder.getSettlementCycle()));
-            vo.setAppointor(logisticsOrder.getCreateByName());
-            vo.setBillingMode(logisticsOrder.getBillingMode());
-            vo.setCarrierCompany(logisticsOrder.getCarrierFirmName());
-            vo.setCarrierOrder(logisticsOrder.getWOrderNo());
-            vo.setCarrierPhone(logisticsOrder.getCarrierPhone());
-            vo.setCarryingCapacity(logisticsOrder.getCarryingCapacity() == null ?
-                    null : String.valueOf(logisticsOrder.getCarryingCapacity()));
-            vo.setConsignCompany(logisticsOrder.getCheckFirmName());
-            vo.setConsignContacts(logisticsOrder.getCheckContacts());
-            vo.setConsignPhone(logisticsOrder.getCheckPhone());
-            vo.setContract(logisticsOrder.getContractName());
-            vo.setDeficitAmount(logisticsOrder.getDeficitAmount() == null ?
-                    null : String.valueOf(logisticsOrder.getDeficitAmount()));
-            vo.setGoodsName(logisticsOrder.getGoodsName());
-            vo.setLoadAddress(logisticsOrder.getLoadDetailAddress());
-            vo.setUnloadAddress(logisticsOrder.getUnloadDetailAddress());
-            vo.setLOrderId(String.valueOf(logisticsOrder.getLOrderId()));
-            vo.setLOrderNo(logisticsOrder.getLOrderNo());
-            vo.setLoss(logisticsOrder.getLoss() == null ?
-                    null : String.valueOf(logisticsOrder.getLoss()));
-            vo.setPrice(logisticsOrder.getPrice() == null ?
-                    null : String.valueOf(logisticsOrder.getPrice()));
-            vo.setReceiveGoodsContacts(logisticsOrder.getUnloadContacts());
-            vo.setReceiveGoodsPhone(logisticsOrder.getUnloadPhone());
-            vo.setRemark(logisticsOrder.getRemark());
-            vo.setShipmentsContacts(logisticsOrder.getLoadContacts());
-            vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
-            vo.setShipmentsDateTime(logisticsOrder.getLoadTime() == null ?
-                    null : DateUtil.getDateTime(logisticsOrder.getLoadTime()));
-            vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
-            vo.setSigning(logisticsOrder.getContractSigningWay());
-            vo.setStatus(logisticsOrder.getStatus());
-            vo.setUnloadAddress(logisticsOrder.getUnloadDetailAddress());
-            vo.setWOrderNo(logisticsOrder.getWOrderNo());
-            vo.setCreateTime(logisticsOrder.getCreateTime() == null ?
-                    null : DateUtil.getDateTime(logisticsOrder.getCreateTime()));
-            vo.setUpdateTime(logisticsOrder.getUpdateTime() == null ?
-                    null : DateUtil.getDateTime(logisticsOrder.getUpdateTime()));
-            returnList.add(vo);
-        }
+    /**
+     * @param sourceList 源数据  [1,2,3]
+     * @param targetList 目标数据 [1]
+     * @Description: 获取targetList中在sourceList中不存在的项
+     * @return: List<String>    [2,3]
+     */
+    public  List<String> getDiffrentList(List<String> sourceList, List<String> targetList) {
+        return targetList.stream().filter(item -> sourceList.stream().allMatch(each -> !item.equals(each))).collect(Collectors.toList());
     }
 
-    public HttpResult getOrderDetail(Long id) {
-        Query query = new Query();
-        Criteria criteria = new Criteria();
-        // 1. 全等于
-        criteria.and("entId").is(LoginUserHolder.getEntId());
-        criteria.and("_id").is(id);
-        criteria.and("delFlag").is(NumberConstant.ZERO);
-        query.addCriteria(criteria);
-        SckwLogisticsOrder sckwLogisticsOrder = mongoTemplate.findById(id, SckwLogisticsOrder.class);
-        return HttpResult.ok(sckwLogisticsOrder);
-    }
+//    /**
+//     * 托运订单-承运订单(订单详情)
+//     * @param id
+//     * @return
+//     */
+//    public HttpResult getOrderDetail(Long id) {
+//        Query query = new Query();
+//        Criteria criteria = new Criteria();
+//        // 1. 全等于
+//        criteria.and("entId").is(LoginUserHolder.getEntId());
+//        criteria.and("_id").is(id);
+//        criteria.and("delFlag").is(NumberConstant.ZERO);
+//        query.addCriteria(criteria);
+//        SckwLogisticsOrder sckwLogisticsOrder = mongoTemplate.findById(id, SckwLogisticsOrder.class);
+//        return HttpResult.ok(sckwLogisticsOrder);
+//    }
 
     /**
      * 司机端 运单详情页面-【作废】
@@ -423,18 +227,18 @@ public class KwTransportService {
                 Aggregation.group("status").count().as("total"),
                 Aggregation.project("total").and("value").previousOperation()
         );
-        AggregationResults<TobleTop> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwWaybillOrder.class, TobleTop.class);
-        List<TobleTop> results = outputTypeCount.getMappedResults();
+        AggregationResults<TableTops> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwWaybillOrder.class, TableTops.class);
+        List<TableTops> results = outputTypeCount.getMappedResults();
         // 填充默认值
-        List<TobleTop> list = new ArrayList<>();
-        for (CarWaybillEnum status:CarWaybillEnum.values()) {
-            TobleTop top = new TobleTop();
+        List<TableTops> list = new ArrayList<>();
+        for (CarWaybillEnum status : CarWaybillEnum.values()) {
+            TableTops top = new TableTops();
             top.setName(status.getDestination());
             top.setValue(String.valueOf(status.getCode()));
             top.setTotal(0);
-            if(CollectionUtils.isNotEmpty(results)) {
-                for (TobleTop result:results) {
-                    if(StringUtils.isNotEmpty(result.getValue()) && String.valueOf(result.getValue()).equals(String.valueOf(status.getCode()))) {
+            if (CollectionUtils.isNotEmpty(results)) {
+                for (TableTops result : results) {
+                    if (StringUtils.isNotEmpty(result.getValue()) && String.valueOf(result.getValue()).equals(String.valueOf(status.getCode()))) {
                         top.setTotal(result.getTotal());
                         continue;
                     }
@@ -544,8 +348,8 @@ public class KwTransportService {
                 Aggregation.project("total").and("value").previousOperation()
         );
         query1.addCriteria(Criteria.where("pid").in(lOrderId));
-        AggregationResults<TobleTop> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwLogisticsOrder.class, TobleTop.class);
-        List<TobleTop> results = (List<TobleTop>) outputTypeCount.getRawResults().get("results");
+        AggregationResults<TableTops> outputTypeCount = mongoTemplate.aggregate(aggregation, SckwLogisticsOrder.class, TableTops.class);
+        List<TableTops> mappedResults = outputTypeCount.getMappedResults();
         // 执行查询
 //        List<SckwLogisticsOrder> list = mongoTemplate.findAll(query1, SckwLogisticsOrder.class);
 ////        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, list);

+ 139 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/AcceptCarriageOrderExcelVo.java

@@ -0,0 +1,139 @@
+package com.sckw.report.service.vo;
+
+import lombok.Data;
+
+/**
+ * @author lfdc
+ * @description 承运订单导出vo
+ * @date 2023-07-24 13:07:44
+ */
+@Data
+public class AcceptCarriageOrderExcelVo {
+    /**
+     * 结算周期
+     */
+    private String accountsCycle;
+    /**
+     * 发起人
+     */
+    private String appointor;
+    /**
+     * 计费方式
+     */
+    private String billingMode;
+    /**
+     * 承运单位
+     */
+    private String carrierCompany;
+    /**
+     * 承运联系人
+     */
+    private String carrierContacts;
+    /**
+     * 承运订单
+     */
+    private String carrierOrder;
+    /**
+     * 承运联系电话
+     */
+    private String carrierPhone;
+    /**
+     * 分配承运量
+     */
+    private String carryingCapacity;
+    /**
+     * 托运单位
+     */
+    private String consignCompany;
+    /**
+     * 托运联系人
+     */
+    private String consignContacts;
+    /**
+     * 托运联系电话
+     */
+    private String consignPhone;
+    /**
+     * 合同
+     */
+    private String contract;
+    /**
+     * 扣亏货值/元/吨
+     */
+    private String deficitAmount;
+    /**
+     * 货物名称
+     */
+    private String goodsName;
+    /**
+     * 装货地点
+     */
+    private String loadAddress;
+    /**
+     * 数据库id
+     */
+    private String lOrderId;
+    /**
+     * 托运订单号
+     */
+    private String lOrderNo;
+    /**
+     * 合理损耗
+     */
+    private String loss;
+    /**
+     * 计划时间
+     */
+    private String plannedDateTime;
+    /**
+     * 运价
+     */
+    private String price;
+    /**
+     * 收货联系人
+     */
+    private String receiveGoodsContacts;
+    /**
+     * 计划收货时间
+     */
+    private String receiveGoodsDateTime;
+    /**
+     * 收货电话
+     */
+    private String receiveGoodsPhone;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 发货联系人
+     */
+    private String shipmentsContacts;
+    /**
+     * 计划发货时间
+     */
+    private String shipmentsDateTime;
+    /**
+     * 发货电话
+     */
+    private String shipmentsPhone;
+    /**
+     * 签约方式
+     */
+    private String signing;
+    /**
+     * 状态
+     */
+    private String status;
+    /**
+     * 卸货地点
+     */
+    private String unloadAddress;
+    /**
+     * 关联承运订单号
+     */
+    private String wOrderNo;
+    private String createTime;
+    private String updateTime;
+
+}

+ 68 - 55
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/AcceptCarriageOrderVo.java

@@ -3,8 +3,6 @@ package com.sckw.report.service.vo;
 import com.sckw.core.model.page.PageRequest;
 import lombok.Data;
 
-import java.util.List;
-
 /**
  * @author lfdc
  * @description 承运订单VO
@@ -13,115 +11,130 @@ import java.util.List;
 @Data
 public class AcceptCarriageOrderVo extends PageRequest {
     /**
-     * 状态
+     * 结算周期
      */
-    private String status;
+    private String accountsCycle;
     /**
-     * 承运订单号
+     * 发起人
      */
-    private String orderId;
+    private String appointor;
     /**
-     * 托运单位
+     * 计费方式
      */
-    private String companyName;
+    private String billingMode;
     /**
-     * 货物名称
+     * 承运单位
      */
-    private String goodsName;
+    private String carrierCompany;
     /**
-     * 分配承运量
+     * 承运联系人
      */
-    private String carryingCapacity;
+    private String carrierContacts;
     /**
-     * 装货地点
+     * 承运订单
      */
-    private String stowageAddress;
+    private String carrierOrder;
     /**
-     * 卸货地点
+     * 承运联系电话
      */
-    private String unloadAddress;
+    private String carrierPhone;
     /**
-     * 运价
+     * 分配承运量
      */
-    private String freightRate;
+    private String carryingCapacity;
     /**
-     * 结算周期
+     * 托运单位
      */
-    private String accountsCycle;
+    private String consignCompany;
     /**
-     * 计费方式
+     * 托运联系人
      */
-    private String billingMode;
+    private String consignContacts;
     /**
-     * 合理损耗
+     * 托运联系电话
      */
-    private String wastage;
+    private String consignPhone;
+    /**
+     * 合同
+     */
+    private String contract;
     /**
      * 扣亏货值/元/吨
      */
-    private String defectiveValue;
+    private String deficitAmount;
     /**
-     * 承运联系人
+     * 货物名称
      */
-    private String acceptCarriagePerson;
+    private String goodsName;
     /**
-     * 承运联系电话
+     * 装货地点
      */
-    private String acceptCarriageTel;
+    private String loadAddress;
     /**
-     * 托运单位
+     * 数据库id
      */
-    private String consignCompany;
+    private String lOrderId;
     /**
-     * 托运联系人
+     * 托运订单号
      */
-    private String consignPerson;
+    private String lOrderNo;
     /**
-     * 托运联系电话
+     * 合理损耗
      */
-    private String consignTel;
+    private String loss;
     /**
-     * 发货联系人
+     * 计划时间
      */
-    private String shipmentsPerson;
+    private String plannedDateTime;
     /**
-     * 发货电话
+     * 运价
      */
-    private String shipmentsTel;
+    private String price;
     /**
      * 收货联系人
      */
-    private String receiveGoodsPerson;
+    private String receiveGoodsContacts;
+    /**
+     * 计划收货时间
+     */
+    private String receiveGoodsDateTime;
     /**
      * 收货电话
      */
-    private String receiveGoodsTel;
+    private String receiveGoodsPhone;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 发货联系人
+     */
+    private String shipmentsContacts;
     /**
      * 计划发货时间
      */
-    private String shipmentsDate;
+    private String shipmentsDateTime;
     /**
-     * 计划收货时间
+     * 发货电话
      */
-    private String receiveGoodsDate;
+    private String shipmentsPhone;
     /**
-     * 合同
+     * 签约方式
      */
-    private String contract;
+    private String signing;
     /**
-     * 备注
+     * 状态
      */
-    private String remark;
+    private String status;
     /**
-     * 发起人
+     * 卸货地点
      */
-    private String appointor;
+    private String unloadAddress;
     /**
-     * 计划时间
+     * 关联承运订单号
      */
-    private String plannedDate;
-
-    private List<CarWaybillVo> carWaybillList;
-    private List<ConsignmentVo> consignmentList;
+    private String wOrderNo;
+    private String createTime;
+    private String updateTime;
 
 }

+ 149 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/ConsignOrderExcelVo.java

@@ -0,0 +1,149 @@
+package com.sckw.report.service.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.sckw.excel.annotation.ExcelContext;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author lfdc
+ * @description 托运订单导出vo
+ * @date 2023-07-24 13:07:40
+ */
+@Data
+@ExcelContext(fileName = "托运订单列表", sheetName = "托运订单列表")
+public class ConsignOrderExcelVo implements Serializable {
+    /**
+     * 结算周期
+     */
+    @ExcelProperty(value = "结算周期")
+    private String accountsCycle;
+    /**
+     * 发起人
+     */
+    @ExcelProperty(value = "发起人")
+    private String appointor;
+    /**
+     * 计费方式
+     */
+    @ExcelProperty(value = "计费方式")
+    private String billingMode;
+    /**
+     * 承运单位
+     */
+    @ExcelProperty(value = "承运单位")
+    private String carrierCompany;
+    /**
+     * 承运联系人
+     */
+    @ExcelProperty(value = "承运联系人")
+    private String carrierContacts;
+    /**
+     * 承运订单
+     */
+    @ExcelProperty(value = "承运订单")
+    private String carrierOrder;
+    /**
+     * 承运联系电话
+     */
+    private String carrierPhone;
+    /**
+     * 分配承运量
+     */
+    private String carryingCapacity;
+    /**
+     * 托运单位
+     */
+    private String consignCompany;
+    /**
+     * 托运联系人
+     */
+    private String consignContacts;
+    /**
+     * 托运联系电话
+     */
+    private String consignPhone;
+    /**
+     * 合同
+     */
+    private String contract;
+    /**
+     * 扣亏货值/元/吨
+     */
+    private String deficitAmount;
+    /**
+     * 货物名称
+     */
+    private String goodsName;
+    /**
+     * 装货地点
+     */
+    private String loadAddress;
+    /**
+     * 数据库id
+     */
+    private String lOrderId;
+    /**
+     * 托运订单号
+     */
+    private String lOrderNo;
+    /**
+     * 合理损耗
+     */
+    private String loss;
+    /**
+     * 计划时间
+     */
+    private String plannedDateTime;
+    /**
+     * 运价
+     */
+    private String price;
+    /**
+     * 收货联系人
+     */
+    private String receiveGoodsContacts;
+    /**
+     * 计划收货时间
+     */
+    private String receiveGoodsDateTime;
+    /**
+     * 收货电话
+     */
+    private String receiveGoodsPhone;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 发货联系人
+     */
+    private String shipmentsContacts;
+    /**
+     * 计划发货时间
+     */
+    private String shipmentsDateTime;
+    /**
+     * 发货电话
+     */
+    private String shipmentsPhone;
+    /**
+     * 签约方式
+     */
+    private String signing;
+    /**
+     * 状态
+     */
+    private String status;
+    /**
+     * 卸货地点
+     */
+    private String unloadAddress;
+    /**
+     * 关联承运订单号
+     */
+    private String wOrderNo;
+    private String createTime;
+    private String updateTime;
+}

+ 0 - 9
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/ConsignOrderVo.java

@@ -1,7 +1,5 @@
 package com.sckw.report.service.vo;
 
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.sckw.excel.annotation.ExcelContext;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -12,37 +10,30 @@ import java.io.Serializable;
  * @date 2023-07-07 09:07:06
  */
 @Data
-@ExcelContext(fileName = "托运订单列表", sheetName = "托运订单列表")
 public class ConsignOrderVo implements Serializable {
     /**
      * 结算周期
      */
-    @ExcelProperty(value = "结算周期")
     private String accountsCycle;
     /**
      * 发起人
      */
-    @ExcelProperty(value = "发起人")
     private String appointor;
     /**
      * 计费方式
      */
-    @ExcelProperty(value = "计费方式")
     private String billingMode;
     /**
      * 承运单位
      */
-    @ExcelProperty(value = "承运单位")
     private String carrierCompany;
     /**
      * 承运联系人
      */
-    @ExcelProperty(value = "承运联系人")
     private String carrierContacts;
     /**
      * 承运订单
      */
-    @ExcelProperty(value = "承运订单")
     private String carrierOrder;
     /**
      * 承运联系电话

+ 3 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserDao.java

@@ -5,6 +5,8 @@ import com.sckw.system.model.KwsUser;
 import com.sckw.system.model.KwsUserDept;
 import com.sckw.system.model.vo.res.KwsUserResVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
 import java.util.List;
 import java.util.Map;
 
@@ -81,6 +83,6 @@ public interface KwsUserDao {
      * @author: czh
      * @date: 2023/7/21
      */
-    List<KwsUser> selectByRoleIds(List<Long> roleIdList);
+    List<KwsUser> selectByRoleIds(@Param(value = "roleIdList") List<Long> roleIdList);
 
 }

+ 5 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/QueryCurrentOrganizationResVo.java

@@ -31,4 +31,9 @@ public class QueryCurrentOrganizationResVo implements Serializable {
      */
     private Long pId;
 
+    /**
+     * 企业属性
+     */
+    private String entTypes;
+
 }

+ 23 - 13
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java

@@ -696,22 +696,32 @@ public class KwsEnterpriseService {
         list.add(queryCurrentOrganizationResVo);
 
         List<KwsEntDept> kwsEntDepts = kwsEntDeptDao.selectByEntPid(entId);
-        if (CollectionUtils.isEmpty(kwsEntDepts)) {
-            return list;
+        if (CollectionUtils.isNotEmpty(kwsEntDepts)) {
+            List<Long> entIdList = kwsEntDepts.stream().map(KwsEntDept::getEntId).toList();
+            Map<Long, EntCacheResDto> entCacheResDtoMap = remoteSystemService.queryEntCacheMapByIds(entIdList);
+            for (KwsEntDept kwsEntDept : kwsEntDepts) {
+                EntCacheResDto entCacheResDto1 = entCacheResDtoMap.get(kwsEntDept.getEntId());
+                if (Objects.nonNull(entCacheResDto1)) {
+                    QueryCurrentOrganizationResVo queryCurrentOrganizationResVo1 = new QueryCurrentOrganizationResVo();
+                    queryCurrentOrganizationResVo1.setEntId(entCacheResDto1.getId());
+                    queryCurrentOrganizationResVo1.setEntName(entCacheResDto1.getFirmName());
+                    queryCurrentOrganizationResVo1.setPId(kwsEntDept.getEntPid());
+                    list.add(queryCurrentOrganizationResVo1);
+                }
+            }
         }
 
-        List<Long> entIdList = kwsEntDepts.stream().map(KwsEntDept::getEntId).toList();
-        Map<Long, EntCacheResDto> entCacheResDtoMap = remoteSystemService.queryEntCacheMapByIds(entIdList);
-        for (KwsEntDept kwsEntDept : kwsEntDepts) {
-            EntCacheResDto entCacheResDto1 = entCacheResDtoMap.get(kwsEntDept.getEntId());
-            if (Objects.isNull(entCacheResDto1)) {
-                continue;
+        //填充企业属性
+        List<Long> entIds = list.stream().map(QueryCurrentOrganizationResVo::getEntId).toList();
+        List<KwsEntType> listByEntIds = kwsEntTypeDao.findListByEntIds(entIds);
+        if (CollectionUtils.isNotEmpty(listByEntIds)) {
+            Map<Long, List<KwsEntType>> collect = listByEntIds.stream().collect(Collectors.groupingBy(KwsEntType::getEntId));
+            for (QueryCurrentOrganizationResVo queryCurrentOrganizationResVo1 : list) {
+                List<KwsEntType> kwsEntTypes = collect.get(queryCurrentOrganizationResVo1.getEntId());
+                if (CollectionUtils.isNotEmpty(kwsEntTypes)) {
+                    queryCurrentOrganizationResVo1.setEntTypes(String.join(Global.COMMA, kwsEntTypes.stream().map(KwsEntType::getType).map(String::valueOf).distinct().toList()));
+                }
             }
-            QueryCurrentOrganizationResVo queryCurrentOrganizationResVo1 = new QueryCurrentOrganizationResVo();
-            queryCurrentOrganizationResVo1.setEntId(entCacheResDto1.getId());
-            queryCurrentOrganizationResVo1.setEntName(entCacheResDto1.getFirmName());
-            queryCurrentOrganizationResVo1.setPId(kwsEntDept.getEntPid());
-            list.add(queryCurrentOrganizationResVo1);
         }
 
         return list;

+ 5 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsMenuService.java

@@ -24,6 +24,7 @@ import com.sckw.system.model.vo.res.FindMenuTreeResVo;
 import com.sckw.system.model.vo.res.KwsMenuResVo;
 import com.sckw.system.model.vo.res.MenuDetailResVo;
 import com.sckw.system.model.vo.res.QueryChildMenuResVo;
+import org.apache.zookeeper.Login;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -265,6 +266,10 @@ public class KwsMenuService {
         if (Objects.equals(LoginUserHolder.getIsMain(), Global.YES)) {
             return;
         }
+
+        if (Objects.isNull(userId)) {
+            userId = LoginUserHolder.getUserId();
+        }
         KwsUser kwsUser = kwsUserDao.selectByKey(userId);
         if (Objects.isNull(kwsUser)) {
             throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ACCOUNT_NOT_EXISTS);

+ 37 - 5
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsRoleService.java

@@ -236,17 +236,49 @@ public class KwsRoleService {
      */
     @Transactional(rollbackFor = {})
     public void update(EditRoleReqVo reqVo) throws SystemException {
-
         KwsRole kwsRole = kwsRoleDao.selectByKey(reqVo.getId());
         if (Objects.isNull(kwsRole)) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
         }
 
-        //删除以前的角色
-        deleteRole(Collections.singletonList(kwsRole));
+        List<KwsMenuRights> kwsMenuRightsList = kwsMenuRightsDao.selectByRoleIds(Collections.singletonList(kwsRole.getId()));
+        if (CollectionUtils.isNotEmpty(kwsMenuRightsList)) {
+            for (KwsMenuRights kwsMenuRights : kwsMenuRightsList) {
+                kwsMenuRights.setDelFlag(Global.YES);
+                if (kwsMenuRightsDao.update(kwsMenuRights) <= 0) {
+                    throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+                }
+            }
+        }
+
+        KwsDept kwsDept = kwsDeptDao.selectByKey(kwsRole.getDeptId());
 
-        //新增
-        add(reqVo);
+        RoleBindMenuReqVo roleBindMenuReqVo = new RoleBindMenuReqVo();
+        roleBindMenuReqVo.setRoleId(kwsRole.getId());
+        roleBindMenuReqVo.setEntId(kwsDept.getEntId());
+        roleBindMenuReqVo.setMenuIds(reqVo.getMenuIds());
+        kwsMenuService.roleBindMenu(roleBindMenuReqVo);
+//        List<KwsUser> kwsUsers = kwsUserDao.selectByRoleIds(Collections.singletonList(reqVo.getId()));
+//
+//        //删除以前的角色
+//        deleteRole(Collections.singletonList(kwsRole));
+//
+//        //新增
+//        add(reqVo);
+//
+//        //重新绑定以前的员工
+//        if (CollectionUtils.isEmpty(kwsUsers)) {
+//            return;
+//        }
+
+//        for (KwsUser kwsUser : kwsUsers) {
+//            UserBindRoleReqVo userBindRoleReqVo = new UserBindRoleReqVo();
+//            userBindRoleReqVo.setUserId(kwsUser.getId());
+//            userBindRoleReqVo.setRoleIds(String.valueOf(reqVo.getId()));
+//            userBindRoleReqVo.setSystemType(LoginUserHolder.getSystemType());
+//            userBindRoleReqVo.setRemark("");
+//            userBindRole(userBindRoleReqVo);
+//        }
     }
 
     /**

+ 1 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsEntCheckTrackDao.xml

@@ -109,6 +109,7 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
+
     <select id="findList" resultType="com.sckw.system.model.KwsEntCheckTrack">
       select * from kws_ent_check_track where ent_id = #{entId} order by create_time
     </select>

+ 1 - 1
sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDao.xml

@@ -256,7 +256,7 @@
       and su.create_time >= #{startTime}
     </if>
     <if test="endTime != null and endTime != ''">
-      and su.create_time &lt;= #{endTime}
+      and su.create_time &lt; date_add(#{endTime}, INTERVAL 1 DAY))
     </if>
     ORDER BY su.create_time desc
   </select>

+ 2 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java

@@ -1,11 +1,10 @@
 package com.sckw.transport.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.sckw.mongo.model.TobleTop;
+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.vo.WaybillDetailVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -36,7 +35,7 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
      * @param status
      * @return
      */
-    TobleTop statistics(@Param("id") Long id, @Param("status") List<Long> status);
+    TableTops statistics(@Param("id") Long id, @Param("status") List<Long> status);
 
     /**
      * 根据司机id+运单状态获取物流订单id

+ 6 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/OrderDTO.java

@@ -20,4 +20,10 @@ public class OrderDTO {
     @JsonProperty("id")
     @NotNull(message = "数据id不能为空")
     private String id;
+    /**
+     * 1 托运 2 承运
+     */
+    @JsonProperty("type")
+    @NotNull(message = "单据类型不能为空")
+    private String type;
 }

+ 2 - 230
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -10,7 +10,6 @@ import com.github.pagehelper.PageInfo;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.common.enums.StringConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
-import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
@@ -550,234 +549,6 @@ public class AcceptCarriageOrderService {
         return result;
     }
 
-//    /**
-//     * 派车
-//     *
-//     * @param sendCarDTO
-//     * @return
-//     */
-//    @Transactional(rollbackFor = Exception.class)
-//    public HttpResult commitSendCar(SendCarDTO sendCarDTO) {
-//        log.info("承运订单提交派车信息详情:{}", JSONObject.toJSONString(sendCarDTO));
-//        HttpResult result = new HttpResult();
-//        KwtLogisticsOrder logisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
-//                .eq(StringUtils.isNotBlank(sendCarDTO.getLOrderId()), KwtLogisticsOrder::getId, sendCarDTO.getLOrderId()));
-//        if (logisticsOrder == null) {
-//            result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
-//            result.setMsg("单据不存在!");
-//            return result;
-//        }
-//        List<SckwWaybillOrder> list = new ArrayList<>();
-//        if (String.valueOf(NumberConstant.ONE).equals(sendCarDTO.getType())) {
-//            for (CarListDTO car : sendCarDTO.getCarList()) {
-//                if (ObjectUtils.isEmpty(car.getCount())) {
-//                    throw new RuntimeException("趟次派车时,趟次次数不能为空");
-//                }
-//                for (int i = 0; i < car.getCount(); i++) {
-//                    Long wOrderId = new IdWorker(NumberConstant.ONE).nextId();
-//                    String wOrderNo = com.sckw.transport.utils.StringUtils.getWaybillNoUtil() + i;
-//                    KwtWaybillOrder waybillOrder = new KwtWaybillOrder();
-//                    String type = String.valueOf(NumberConstant.ZERO);
-//                    waybillOrder.setType(type);
-//                    waybillOrder.setEntrustAmount(new BigDecimal(car.getLoadAmount()));
-//                    insertWaybillOrder(waybillOrder, wOrderId, wOrderNo, logisticsOrder, car, sendCarDTO, list, type);
-//                    //insertWaybillOrderTicket(id,wOrderNo,logisticsOrder,sendCarDTO);
-////                    insertWaybillOrderTrack(wOrderId);
-//                }
-//            }
-//        } else if (String.valueOf(NumberConstant.TWO).equals(sendCarDTO.getType())) {
-//            for (CarListDTO car : sendCarDTO.getCarList()) {
-//                if (ObjectUtils.isEmpty(sendCarDTO.getWaitingVolume())) {
-//                    throw new RuntimeException("循环派车时,剩余可运量不能为空");
-//                }
-//                KwtLogisticsOrderCirculate circulate = new KwtLogisticsOrderCirculate();
-//                circulate.setId(new IdWorker(NumberConstant.ONE).nextId());
-//                circulate.setEntId(logisticsOrder.getEntId());
-//                circulate.setLOrderId(Long.parseLong(sendCarDTO.getLOrderId()));
-//                circulate.setTruckNo(car.getTruckNo());
-//                circulate.setDriverId(Long.parseLong(car.getDriverId()));
-//                circulate.setActualAmount(new BigDecimal(car.getLoadAmount()));
-//                circulate.setEntrustAmount(new BigDecimal(sendCarDTO.getWaitingVolume()));
-//                circulate.setEntrustDate(new Date());
-//                circulate.setCreateBy(LoginUserHolder.getUserId());
-//                circulate.setCreateTime(new Date());
-//                circulate.setUpdateBy(LoginUserHolder.getUserId());
-//                circulate.setUpdateTime(new Date());
-//                circulate.setType(String.valueOf(NumberConstant.ONE));
-//                logisticsOrderCirculateMapper.insert(circulate);
-//                sendMongoDbData(list, logisticsOrder, car, sendCarDTO, String.valueOf(NumberConstant.ONE));
-//            }
-//        } else {
-//            result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
-//            result.setMsg("派车类型错误!");
-//            return result;
-//        }
-//        if (CollectionUtils.isNotEmpty(list)) {
-//            for (SckwWaybillOrder sckwWaybillOrder : list) {
-//                //rabbitMq业务汇总数据发送/消费对象
-//                SckwBusSum busSum = new SckwBusSum();
-//                //业务汇总类型
-//                busSum.setBusSumType(BusinessTypeEnum.WAYBILL_ORDER_TYPE.getName());
-//                //操作对象(1新增/2修改)
-//                busSum.setMethod(1);
-//                //业务汇总数据对象
-//                busSum.setObject(sckwWaybillOrder);
-//                streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
-//            }
-//        }
-//        return result;
-//    }
-//
-//    private void sendMongoDbData(List<SckwWaybillOrder> list, KwtLogisticsOrder logisticsOrder
-//            , CarListDTO carListDTO, SendCarDTO sendCarDTO, String type) {
-//        //放入mongodb实体
-//        SckwWaybillOrder waybillCarDTO = new SckwWaybillOrder();
-//        waybillCarDTO.set_id(new IdWorker(NumberConstant.ONE).nextId());
-//        waybillCarDTO.setStatus(CarWaybillEnum.PENDING_ORDER.getCode().toString());
-//        waybillCarDTO.setType(type);
-//        waybillCarDTO.setLOrderId(StringUtils.isBlank(sendCarDTO.getLOrderId()) ? null : Long.parseLong(sendCarDTO.getLOrderId()));
-//        waybillCarDTO.setLOrderNo(sendCarDTO.getLOrderNo());
-//        waybillCarDTO.setTOrderId(logisticsOrder.getTOrderId());
-//        waybillCarDTO.setTOrderNo(logisticsOrder.getTOrderNo());
-//        waybillCarDTO.setEntId(logisticsOrder.getEntId());
-//        waybillCarDTO.setFirmName(remoteSystemService.queryEntCacheById(logisticsOrder.getEntId()).getFirmName());
-//        waybillCarDTO.setTruckNo(carListDTO.getTruckNo());
-//        //todo 司机dubbo查询
-////        waybillCarDTO.setTruckType();
-////        waybillCarDTO.setTruckEnergyType();
-////        waybillCarDTO.setTruckColor()
-////        waybillCarDTO.setTruckTrailerNo();
-////        waybillCarDTO.setTruckFleetName();
-//        waybillCarDTO.setDriverId(StringUtils.isBlank(carListDTO.getDriverId()) ? null : Long.parseLong(carListDTO.getDriverId()));
-////        waybillCarDTO.setDriverPhone();
-////        waybillCarDTO.setDriverIdcard();
-//        waybillCarDTO.setDriverName(carListDTO.getDriverName());
-//        waybillCarDTO.setStartTime(sendCarDTO.getLoadDateTime());
-//        waybillCarDTO.setEndTime(sendCarDTO.getUnloadDateTime());
-//        waybillCarDTO.setFleetId(carListDTO.getFleetId());
-//        waybillCarDTO.setFleetName(carListDTO.getFleetName());
-//        waybillCarDTO.setGoodsName(sendCarDTO.getGoodsName());
-//        waybillCarDTO.setGoodsId(StringUtils.isBlank(sendCarDTO.getGoodsId()) ? null : Integer.valueOf(sendCarDTO.getGoodsId()));
-//        waybillCarDTO.setLoadingCity(sendCarDTO.getLoadCity());
-//        waybillCarDTO.setLoadTime(sendCarDTO.getLoadDateTime());
-//        waybillCarDTO.setLoadingAddress(sendCarDTO.getLoadAddress());
-//        waybillCarDTO.setUnloadingCity(sendCarDTO.getUnloadCity());
-//        waybillCarDTO.setUnloadTime(sendCarDTO.getUnloadDateTime());
-//        waybillCarDTO.setUnloadingAddress(sendCarDTO.getUnloadAddress());
-//        waybillCarDTO.setDelFlag(Integer.valueOf(NumberConstant.ZERO));
-//        list.add(waybillCarDTO);
-//    }
-
-    /**
-     * 保存车辆运单状态信息
-     *
-     * @param wOrderId
-     */
-    private void insertWaybillOrderTrack(Long wOrderId) {
-        KwtWaybillOrderTrack track = new KwtWaybillOrderTrack();
-        track.setId(new IdWorker(NumberConstant.ONE).nextId());
-        track.setWOrderId(wOrderId);
-        track.setStatus(CarWaybillEnum.PENDING_ORDER.getCode());
-        track.setCreateTime(new Date());
-        track.setUpdateTime(new Date());
-        track.setCreateBy(LoginUserHolder.getUserId());
-        track.setUpdateBy(LoginUserHolder.getUserId());
-        waybillOrderTrackMapper.insert(track);
-    }
-//
-//    /**
-//     * 保存车辆装卸单信息
-//     *
-//     * @param id
-//     * @param wOrderNo
-//     * @param logisticsOrder
-//     * @param carListDTO
-//     */
-//    private void insertWaybillOrderTicket(Long id, String wOrderNo, KwtLogisticsOrder logisticsOrder, CarListDTO carListDTO) {
-//
-//    }
-
-    /**
-     * 派车主体保存
-     *
-     * @param wOrderNo
-     * @param logisticsOrder
-     * @param carListDTO
-     * @param sendCarDTO
-     */
-//    private void insertWaybillOrder(KwtWaybillOrder waybillOrder, Long id, String wOrderNo,
-//                                    KwtLogisticsOrder logisticsOrder, CarListDTO carListDTO, SendCarDTO sendCarDTO,
-//                                    List<SckwWaybillOrder> list, String type) {
-//        waybillOrder.setId(id);
-//        waybillOrder.setEntId(logisticsOrder.getEntId());
-//        waybillOrder.setLOrderId(Long.parseLong(sendCarDTO.getLOrderId()));
-//        waybillOrder.setWOrderNo(wOrderNo);
-//        waybillOrder.setStartTime(sendCarDTO.getLoadDateTime());
-//        waybillOrder.setEndTime(sendCarDTO.getUnloadDateTime());
-//        waybillOrder.setDriverId(Long.parseLong(carListDTO.getDriverId()));
-//        waybillOrder.setTruckNo(carListDTO.getTruckNo());
-//        waybillOrder.setRemark(sendCarDTO.getRemark());
-//        waybillOrder.setStatus(NumberConstant.ZERO);
-//        waybillOrder.setCreateBy(LoginUserHolder.getUserId());
-//        Date createTime = new Date();
-//        waybillOrder.setCreateTime(createTime);
-//        waybillOrder.setUpdateTime(new Date());
-//        waybillOrder.setUpdateBy(LoginUserHolder.getUserId());
-//        waybillOrder.setStatus(CarWaybillEnum.PENDING_ORDER.getCode());
-//        waybillOrderMapper.insert(waybillOrder);
-//
-//        //状态表保存
-//        KwtWaybillOrderTrack track = new KwtWaybillOrderTrack();
-//        track.setId(new IdWorker(NumberConstant.ONE).nextId());
-//        track.setWOrderId(id);
-//        track.setStatus(CarWaybillEnum.PENDING_ORDER.getCode());
-//        track.setCreateTime(new Date());
-//        track.setUpdateTime(new Date());
-//        track.setCreateBy(LoginUserHolder.getUserId());
-//        track.setUpdateBy(LoginUserHolder.getUserId());
-//        waybillOrderTrackMapper.insert(track);
-//
-//        //放入mongodb实体
-//        SckwWaybillOrder waybillCarDTO = new SckwWaybillOrder();
-//        waybillCarDTO.setStatus(CarWaybillEnum.PENDING_ORDER.getCode().toString());
-//        waybillCarDTO.setType(type);
-//        waybillCarDTO.setWOrderId(id);
-//        waybillCarDTO.setWOrderNo(wOrderNo);
-//        waybillCarDTO.setLOrderId(StringUtils.isBlank(sendCarDTO.getLOrderId()) ? null : Long.parseLong(sendCarDTO.getLOrderId()));
-//        waybillCarDTO.setLOrderNo(sendCarDTO.getLOrderNo());
-//        waybillCarDTO.setTOrderId(logisticsOrder.getTOrderId());
-//        waybillCarDTO.setTOrderNo(logisticsOrder.getTOrderNo());
-//        waybillCarDTO.setEntId(logisticsOrder.getEntId());
-//        waybillCarDTO.setFirmName(remoteSystemService.queryEntCacheById(logisticsOrder.getEntId()).getFirmName());
-//        waybillCarDTO.setTruckNo(carListDTO.getTruckNo());
-//        //todo 司机dubbo查询
-////        waybillCarDTO.setTruckType();
-////        waybillCarDTO.setTruckEnergyType();
-////        waybillCarDTO.setTruckColor()
-////        waybillCarDTO.setTruckTrailerNo();
-////        waybillCarDTO.setTruckFleetName();
-//        waybillCarDTO.setDriverId(StringUtils.isBlank(carListDTO.getDriverId()) ? null : Long.parseLong(carListDTO.getDriverId()));
-////        waybillCarDTO.setDriverPhone();
-////        waybillCarDTO.setDriverIdcard();
-//        waybillCarDTO.setDriverName(carListDTO.getDriverName());
-//        waybillCarDTO.setSendCarTime(createTime);
-//        waybillCarDTO.setStartTime(sendCarDTO.getLoadDateTime());
-//        waybillCarDTO.setEndTime(sendCarDTO.getUnloadDateTime());
-//        waybillCarDTO.setFleetId(carListDTO.getFleetId());
-//        waybillCarDTO.setFleetName(carListDTO.getFleetName());
-//        waybillCarDTO.setGoodsName(sendCarDTO.getGoodsName());
-//        waybillCarDTO.setGoodsId(StringUtils.isBlank(sendCarDTO.getGoodsId()) ? null : Integer.valueOf(sendCarDTO.getGoodsId()));
-//        waybillCarDTO.setEntrustAmount(waybillOrder.getEntrustAmount());
-//        waybillCarDTO.setLoadingCity(sendCarDTO.getLoadCity());
-//        waybillCarDTO.setLoadTime(sendCarDTO.getLoadDateTime());
-//        waybillCarDTO.setLoadingAddress(sendCarDTO.getLoadAddress());
-//        waybillCarDTO.setUnloadingCity(sendCarDTO.getUnloadCity());
-//        waybillCarDTO.setUnloadTime(sendCarDTO.getUnloadDateTime());
-//        waybillCarDTO.setUnloadingAddress(sendCarDTO.getUnloadAddress());
-//        waybillCarDTO.setDelFlag(Integer.valueOf(NumberConstant.ZERO));
-//        list.add(waybillCarDTO);
-//    }
-
     /**
      * 承运订单-获取运单详情
      *
@@ -788,7 +559,7 @@ public class AcceptCarriageOrderService {
         SckwWaybillOrder sckwWaybillOrder = mongoTemplate.findById(Long.parseLong(wOrderId), SckwWaybillOrder.class);
         WaybillDetailVO vo = new WaybillDetailVO();
         if (!ObjectUtils.isEmpty(sckwWaybillOrder)) {
-            //vo.setFleetName(sckwWaybillOrder.getFleetName());
+            vo.setFleetName(sckwWaybillOrder.getCarrierFirmName());
             vo.setTruckNo(sckwWaybillOrder.getTruckNo());
             vo.setDriverName(sckwWaybillOrder.getDriverName());
             vo.setSendCarWeigh(sckwWaybillOrder.getEntrustAmount());
@@ -834,6 +605,7 @@ public class AcceptCarriageOrderService {
                 subcontractConsignmentVO.setPriceType(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getPriceType()));
                 subcontractConsignmentVO.setLossUnit(weightDictData == null ? null : weightDictData.get(subcontractConsignmentVO.getLossUnit()));
                 subcontractConsignmentVO.setGoodsPriceUnit(priceDictData == null ? null : priceDictData.get(subcontractConsignmentVO.getGoodsPriceUnit()));
+                //分包托运不需要展示签约方式
 //                subcontractConsignmentVO.setContractSigningWay(singDictData == null ? null : singDictData.get(subcontractConsignmentVO.getContractSigningWay()));
                 subcontractConsignmentVO.setBillingMode(chargingDictData == null ? null : chargingDictData.get(subcontractConsignmentVO.getBillingMode()));
                 subcontractConsignmentVO.setSettlementCycle(settlementDictData == null ? null : settlementDictData.get(subcontractConsignmentVO.getSettlementCycle()));

+ 102 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -64,7 +64,29 @@ public class ConsignOrderService {
     public KwtLogisticsOrderCirculateMapper kwtLogisticsOrderCirculateMapper;
 
 
+    /**
+     * 托运订单/承运订单-获取车辆运单
+     * @param orderDto
+     * @return
+     */
     public HttpResult getCarWaybillByOrder(OrderDTO orderDto) {
+        HttpResult httpResult = new HttpResult();
+        if (String.valueOf(NumberConstant.ONE).equals(orderDto.getType())) {
+            httpResult = getCarWaybillByOrderByConsign(orderDto);
+        } else if (String.valueOf(NumberConstant.TWO).equals(orderDto.getType())) {
+            httpResult = getCarWaybillByOrderByAcceptCarriage(orderDto);
+        } else {
+            throw new RuntimeException("单据类型错误");
+        }
+        return httpResult;
+    }
+
+    /**
+     * 通过订单id+类型 查询承运订单-车辆运单
+     * @param orderDto
+     * @return
+     */
+    private HttpResult getCarWaybillByOrderByAcceptCarriage(OrderDTO orderDto) {
         List<CarWaybillVO> returnList = new ArrayList<>();
         KwtLogisticsOrder order = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                 .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
@@ -74,8 +96,8 @@ public class ConsignOrderService {
             return HttpResult.ok(returnList);
         }
         List<KwtWaybillOrder> kwtWaybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
-                .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
-                .eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId()));
+                        .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
+                /**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
         if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
             for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
                 CarWaybillVO carWaybillVo = new CarWaybillVO();
@@ -137,6 +159,84 @@ public class ConsignOrderService {
         return HttpResult.ok(returnList);
     }
 
+
+    /**
+     * 通过订单id+类型 查询托运订单-车辆运单
+     * @param orderDto
+     * @return
+     */
+    private HttpResult getCarWaybillByOrderByConsign(OrderDTO orderDto) {
+        List<CarWaybillVO> returnList = new ArrayList<>();
+        KwtLogisticsOrder order = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
+                .eq(StringUtils.isNotBlank(orderDto.getOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
+                .eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId()));
+        if (ObjectUtils.isEmpty(order)) {
+            return HttpResult.ok(returnList);
+        }
+        List<KwtWaybillOrder> kwtWaybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
+                        .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
+                /**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
+        if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
+            for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
+                CarWaybillVO carWaybillVo = new CarWaybillVO();
+                KwtWaybillOrderTrack track = kwtWaybillOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
+                        .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtWaybillOrderTrack::getWOrderId, kwtWaybillOrder.getId()));
+                KwtWaybillOrderTicket loadTicket = kwtWaybillOrderTicketMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
+                        .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getId())
+                        .eq(KwtWaybillOrderTicket::getType, NumberConstant.ONE));
+                KwtWaybillOrderTicket unloadTicket = kwtWaybillOrderTicketMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
+                        .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getId())
+                        .eq(KwtWaybillOrderTicket::getType, NumberConstant.TWO));
+                KwtLogisticsOrderCirculate circulate = kwtLogisticsOrderCirculateMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderCirculate>()
+                        .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtLogisticsOrderCirculate::getLOrderId, kwtWaybillOrder.getId())
+                        .eq(KwtLogisticsOrderCirculate::getEntId, order.getEntId()));
+                //扣亏量/吨->亏吨量-合理损耗
+                BigDecimal deduct = null;
+                if (kwtWaybillOrder.getDeficitAmount() != null && (kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == NumberConstant.ZERO)) {
+                    deduct = kwtWaybillOrder.getDeficitAmount().subtract(order.getLoss() == null ? new BigDecimal(NumberConstant.ZERO) : order.getLoss());
+                }
+                carWaybillVo.setId(String.valueOf(kwtWaybillOrder.getId()));
+                carWaybillVo.setWaybillNumber(order.getLOrderNo());
+                carWaybillVo.setTruckNo(kwtWaybillOrder.getTruckNo());
+                carWaybillVo.setStatus(track == null ? null : String.valueOf(track.getStatus()));
+                carWaybillVo.setWaybillType(kwtWaybillOrder.getType());
+                carWaybillVo.setDriverName(kwtWaybillOrder.getDriverName());
+                //todo 取mongo
+                SckwWaybillOrder sckwWaybillOrder = mongoTemplate.findById(kwtWaybillOrder.getId(), SckwWaybillOrder.class);
+                /** 2023-07-24 原值为承运车队-去除后更换展示为承运公司*/
+                carWaybillVo.setConsignMotorcade(sckwWaybillOrder == null ? null : sckwWaybillOrder.getCarrierFirmName());
+                carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
+                if (circulate != null) {
+                    carWaybillVo.setSendCarDate(circulate.getCreateTime() == null ? null : DateUtil.getDateTime(circulate.getCreateTime()));
+                } else {
+                    carWaybillVo.setSendCarDate(null);
+                }
+                if (loadTicket != null) {
+                    carWaybillVo.setStowageWeigh(loadTicket.getAmount() == null ? null : String.valueOf(loadTicket.getAmount()));
+                    carWaybillVo.setStowageDate(loadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(loadTicket.getCreateTime()));
+                } else {
+                    carWaybillVo.setSendCarWeigh(null);
+                    carWaybillVo.setStowageDate(null);
+                }
+                if (unloadTicket != null) {
+                    carWaybillVo.setUnloadWeigh(unloadTicket.getAmount() == null ? null : String.valueOf(unloadTicket.getAmount()));
+                    carWaybillVo.setUnloadDate(unloadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(unloadTicket.getCreateTime()));
+                } else {
+                    carWaybillVo.setUnloadWeigh(null);
+                    carWaybillVo.setUnloadDate(null);
+                }
+                /**亏吨量/吨->装货量-卸货量
+                 扣亏量/吨->亏吨量-合理损耗*/
+                carWaybillVo.setDefectiveWeigh(kwtWaybillOrder.getDeficitAmount() == null ? null : String.valueOf(kwtWaybillOrder.getDeficitAmount()));
+                carWaybillVo.setDeduct(String.valueOf(deduct));
+                carWaybillVo.setAppointor(remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()) == null ?
+                        String.valueOf(kwtWaybillOrder.getCreateBy()) : remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()).getName());
+                returnList.add(carWaybillVo);
+            }
+        }
+        return HttpResult.ok(returnList);
+    }
     public HttpResult getCarListByOrder(OrderDTO orderDto) {
         KwtWaybillOrder waybillOrder = kwtWaybillOrderMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrder>()
                 .eq(KwtWaybillOrder::getLOrderId, orderDto.getId())

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

@@ -14,7 +14,7 @@ import com.sckw.excel.utils.ValidUtil;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.mongo.enums.BusinessTypeEnum;
 import com.sckw.mongo.model.SckwWaybillOrder;
-import com.sckw.mongo.model.TobleTop;
+import com.sckw.mongo.model.TableTops;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.transport.dao.*;
@@ -98,14 +98,14 @@ public class DriverService {
          * 完结: 对应[已卸货]、[已核单]
          * */
         List<Long> status = new ArrayList<>();
-        List<TobleTop> list = new ArrayList<>();
+        List<TableTops> list = new ArrayList<>();
         status.add(CarWaybillEnum.PENDING_ORDER.getCode().longValue());
-        TobleTop top = waybillOrderMapper.statistics(id, status);
+        TableTops top = waybillOrderMapper.statistics(id, status);
         top.setName("计划");
         top.setValue(String.valueOf(NumberConstant.ONE));
         status.clear();
         status.add(CarWaybillEnum.PENDING_VEHICLE.getCode().longValue());
-        TobleTop top1 = waybillOrderMapper.statistics(id, status);
+        TableTops top1 = waybillOrderMapper.statistics(id, status);
         top1.setName("出车");
         top1.setValue(String.valueOf(NumberConstant.TWO));
         status.clear();
@@ -113,13 +113,13 @@ public class DriverService {
         status.add(CarWaybillEnum.WAIT_LOADING.getCode().longValue());
         status.add(CarWaybillEnum.COMPLETION_LOADING.getCode().longValue());
         status.add(CarWaybillEnum.WAIT_UNLOADING.getCode().longValue());
-        TobleTop top2 = waybillOrderMapper.statistics(id, status);
+        TableTops top2 = waybillOrderMapper.statistics(id, status);
         top2.setName("执行");
         top2.setValue(String.valueOf(NumberConstant.THREE));
         status.clear();
         status.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode().longValue());
         status.add(CarWaybillEnum.APPROVAL_COMPLETED.getCode().longValue());
-        TobleTop top3 = waybillOrderMapper.statistics(id, status);
+        TableTops top3 = waybillOrderMapper.statistics(id, status);
         top3.setName("完结");
         top3.setValue(String.valueOf(NumberConstant.FOUR));
         list.add(top);

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

@@ -135,6 +135,11 @@ public class TransportCommonService {
         return httpResult;
     }
 
+    /**
+     * 获取订单详情
+     * @param dto
+     * @return
+     */
     private OrderDetailVO getOrderData(DocumentParamDTO dto) {
         KwtLogisticsOrder logisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                 .eq(KwtLogisticsOrder::getId, dto.getId())

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

@@ -343,6 +343,7 @@
         kwt_logistics_order a
         LEFT JOIN kwt_logistics_order_goods b ON a.id = b.l_order_id
         LEFT JOIN kwt_logistics_order_contract c ON a.id=c.l_order_id
+        and
         a.del_flag = 0
         <where>
             <if test="ids != null and ids.size() > 0">

+ 20 - 18
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -58,24 +58,7 @@
           and b.del_flag = '0'
           and b.t_order_id = #{id,jdbcType=VARCHAR}
     </select>
-    <select id="statistics" resultType="com.sckw.mongo.model.TobleTop">
-        SELECT count(a.id) AS total
-        FROM kwt_waybill_order a
-        LEFT JOIN kwt_waybill_order_track b ON a.id = b.w_order_id
-        AND a.del_flag = '0'
-        AND b.del_flag = '0'
-        <where>
-            <if test="id != null and id !=''">
-                a.driver_id = #{id,jdbcType=BIGINT}
-            </if>
-            <if test="status != null and status.size() > 0">
-                AND b.`status` IN
-                <foreach collection="status" item="item" open="(" close=")" separator=",">
-                    #{item}
-                </foreach>
-            </if>
-        </where>
-    </select>
+
     <select id="selectDriverOrder" resultType="java.lang.Long">
         SELECT a.l_order_id as lOrderId
         FROM kwt_waybill_order a
@@ -126,4 +109,23 @@
         WHERE
             `order`.`id` = #{id,jdbcType=BIGINT}
     </select>
+
+    <select id="statistics" resultType="com.sckw.mongo.model.TableTop">
+        SELECT count(a.id) AS total
+        FROM kwt_waybill_order a
+        LEFT JOIN kwt_waybill_order_track b ON a.id = b.w_order_id
+        AND a.del_flag = '0'
+        AND b.del_flag = '0'
+        <where>
+            <if test="id != null and id !=''">
+                a.driver_id = #{id,jdbcType=BIGINT}
+            </if>
+            <if test="status != null and status.size() > 0">
+                AND b.`status` IN
+                <foreach collection="status" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>