Browse Source

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

lengfaqiang 2 years ago
parent
commit
e17464972d
69 changed files with 2184 additions and 277 deletions
  1. 2 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CooperateStatusEnum.java
  2. 3 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/ExcelUtil.java
  3. 3 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCarrierController.java
  4. 3 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java
  5. 6 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java
  6. 5 3
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcPurchaseController.java
  7. 19 14
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  8. 22 14
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java
  9. 3 0
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml
  10. 11 9
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfDriverController.java
  11. 10 7
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfFleetController.java
  12. 8 7
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java
  13. 11 7
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckReportController.java
  14. 7 2
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfDriverVo.java
  15. 7 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfFleetVo.java
  16. 7 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckReportVo.java
  17. 7 2
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckVo.java
  18. 5 3
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmAddressController.java
  19. 5 3
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmCooperateApplyController.java
  20. 5 3
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmCooperateManageController.java
  21. 73 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/report/AddressQueryExport.java
  22. 59 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/report/CooperateManageExport.java
  23. 1 1
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/AddressQueryReqVo.java
  24. 10 13
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java
  25. 35 11
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateApplyService.java
  26. 31 11
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateManageService.java
  27. 9 8
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTransportDemandService.java
  28. 2 2
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwpWantBuyService.java
  29. 14 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/WalletController.java
  30. 4 4
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/operate/SettlementWalletController.java
  31. 2 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpSettlementLogisticsMapper.java
  32. 19 8
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/WalletChannelEnum.java
  33. 9 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/ChannelDetail.java
  34. 50 0
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WalletService.java
  35. 0 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/operate/LedgerTradeService.java
  36. 11 39
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/operate/SettlementLogisticsService.java
  37. 64 22
      sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementLogisticsMapper.xml
  38. 79 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/operation/GoodsManagerController.java
  39. 97 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/OperationGoodsListExport.java
  40. 31 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/SelectOperationGoodsListParam.java
  41. 24 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/OperationGoodsDetail.java
  42. 168 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/OperationGoodsList.java
  43. 318 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/operation/GoodsManagerService.java
  44. 87 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/operator/TradeOrderManageController.java
  45. 86 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/model/dto/OperatorTOrderListStsConditionDTO.java
  46. 22 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/OperatorTOrderContractParam.java
  47. 35 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/OperatorTOrderExportQueryVO.java
  48. 39 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/OperatorTOrderListQueryVO.java
  49. 81 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/OperatorTOrderStsQueryVO.java
  50. 43 9
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java
  51. 174 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/operator/TradeOrderManageService.java
  52. 4 0
      sckw-modules/sckw-system/pom.xml
  53. 12 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java
  54. 8 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsRoleController.java
  55. 17 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsUserController.java
  56. 3 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteBaseService.java
  57. 11 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/pojo/FindEntListPojo.java
  58. 40 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/report/KwsRoleExcel.java
  59. 51 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/report/KwsUserExcel.java
  60. 20 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/EntFindPageResVo.java
  61. 2 2
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/KwsUserResVo.java
  62. 34 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/QueryCustomerResVo.java
  63. 43 2
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
  64. 16 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsRoleService.java
  65. 41 12
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java
  66. 45 42
      sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.xml
  67. 5 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsRoleDao.xml
  68. 6 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDao.xml
  69. 0 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ManagementWaybillOrderService.java

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

@@ -32,10 +32,10 @@ public enum CooperateStatusEnum {
         this.name = name;
     }
 
-    public static CooperateStatusEnum getName(int code) {
+    public static String getName(int code) {
         for (CooperateStatusEnum cooperateStatusEnum : values()) {
             if (cooperateStatusEnum.getCode() == code) {
-                return cooperateStatusEnum;
+                return cooperateStatusEnum.getName();
             }
         }
         return null;

+ 3 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/ExcelUtil.java

@@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelWriter;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.model.constant.Global;
@@ -29,6 +30,7 @@ import java.time.LocalDateTime;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 
 
 /**
@@ -248,4 +250,5 @@ public class ExcelUtil {
 
         return selectedMap;
     }
+
 }

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

@@ -3,9 +3,9 @@ package com.sckw.contract.controller;
 import com.sckw.contract.model.vo.req.IdReqVo;
 import com.sckw.contract.model.vo.req.QueryListReqVo;
 import com.sckw.contract.service.KwcContractLogisticsService;
-import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.enums.EntTypeEnum;
 import com.sckw.core.web.response.HttpResult;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -57,9 +57,9 @@ public class KwcCarrierController {
      * @date 2023/7/17
      */
     @PostMapping("export")
-    public void export(@Valid @RequestBody QueryListReqVo reqVo) {
+    public void export(@Valid @RequestBody QueryListReqVo reqVo, HttpServletResponse response) {
         reqVo.setEntType(EntTypeEnum.LOGISTICS4.getCode());
-        kwcContractLogisticsService.export(reqVo);
+        kwcContractLogisticsService.export(reqVo, response);
     }
 
 

+ 3 - 3
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcCheckedController.java

@@ -142,10 +142,10 @@ public class KwcCheckedController {
      * @author: czh
      * @date 2023/7/17
      */
-    @PostMapping("export")
-    public void export(@Valid @RequestBody QueryListReqVo reqVo) {
+    @PostMapping(value = "export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@Valid @RequestBody QueryListReqVo reqVo, HttpServletResponse response) {
         reqVo.setEntType(EntTypeEnum.LOGISTICS3.getCode());
-        kwcContractLogisticsService.export(reqVo);
+        kwcContractLogisticsService.export(reqVo, response);
     }
 
 

+ 6 - 3
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcContractSaleController.java

@@ -1,5 +1,6 @@
 package com.sckw.contract.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.sckw.contract.model.vo.req.*;
 import com.sckw.contract.service.KwcContractTradeService;
 import com.sckw.core.exception.SystemException;
@@ -15,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Properties;
+
 
 /**
  * @author czh
@@ -139,10 +142,10 @@ public class KwcContractSaleController {
      * @author: czh
      * @date 2023/7/17
      */
-    @PostMapping("export")
-    public void export(@Valid @RequestBody QueryListReqVo reqVo) {
+    @PostMapping(value = "export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@Valid @RequestBody QueryListReqVo reqVo, HttpServletResponse response) {
         reqVo.setEntType(EntTypeEnum.SUPPLIER.getCode());
-        kwcContractTradeService.export(reqVo);
+        kwcContractTradeService.export(reqVo, response);
     }
 
     /**

+ 5 - 3
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/controller/KwcPurchaseController.java

@@ -6,8 +6,10 @@ import com.sckw.contract.service.KwcContractTradeService;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.enums.EntTypeEnum;
 import com.sckw.core.web.response.HttpResult;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -57,10 +59,10 @@ public class KwcPurchaseController {
      * @author: czh
      * @date 2023/7/17
      */
-    @PostMapping("export")
-    public void export(@Valid @RequestBody QueryListReqVo reqVo) {
+    @PostMapping(value = "export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@Valid @RequestBody QueryListReqVo reqVo, HttpServletResponse response) {
         reqVo.setEntType(EntTypeEnum.PURCHASER.getCode());
-        kwcContractTradeService.export(reqVo);
+        kwcContractTradeService.export(reqVo, response);
     }
 
     /**

+ 19 - 14
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java

@@ -607,27 +607,32 @@ public class KwcContractLogisticsService {
         return list;
     }
 
-    public void export(QueryListReqVo reqVo) {
+    public void export(QueryListReqVo reqVo, HttpServletResponse response) {
         QueryListReqDto queryListReqDto = new QueryListReqDto();
         BeanUtils.copyProperties(reqVo, queryListReqDto);
-        queryListReqDto.setEntId(LoginUserHolder.getEntId());
-        if (StringUtils.isNotBlank(reqVo.getIds())) {
-            List<Long> idList = Arrays.stream(reqVo.getIds().split(Global.COMMA)).map(Long::parseLong).toList();
-            queryListReqDto.setIdList(idList);
+        List<Long> allEnt = new ArrayList<>();
+        if (Objects.isNull(reqVo.getEntId())) {
+            queryListReqDto.setEntId(LoginUserHolder.getEntId());
         }
+        allEnt.add(queryListReqDto.getEntId());
 
-        List<QueryListResVo> queryListResVos = new ArrayList<>();
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(queryListReqDto.getEntId());
+        if (Objects.nonNull(entCacheResDto)) {
+            EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntTreeById(entCacheResDto.getId());
+            List<EntCacheResDto> child = entCacheResDto1.getChild();
+            if (CollectionUtils.isNotEmpty(child)) {
+                allEnt.addAll(child.stream().map(EntCacheResDto::getId).toList());
+            }
+        }
+        queryListReqDto.setAllEnt(allEnt);
         List<QueryListResDto> queryListResDtos = kwcContractLogisticsMapper.queryList(queryListReqDto);
-        if (CollectionUtils.isNotEmpty(queryListResDtos)) {
-            queryListResVos = getQueryListResVos(queryListResDtos);
+        if (CollectionUtils.isEmpty(queryListResDtos)) {
+            throw new SystemException("导出数据为空");
         }
 
-        try {
-            EasyExcelUtil.writeSingleExcel("物流合同.xlsx", "sheet1", queryListResVos, QueryListResVo.class);
-        } catch (IOException e) {
-//            log.error("导出失败:", e);
-            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_014);
-        }
+        List<QueryListResVo> list = getQueryListResVos(queryListResDtos);
+        List<LogisticsListExport> dataList = BeanUtils.copyToList(list, LogisticsListExport.class);
+        ExcelUtil.downData(response, LogisticsListExport.class, dataList);
     }
 
 

+ 22 - 14
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java

@@ -3,12 +3,14 @@ package com.sckw.contract.service;
 import java.io.IOException;
 import java.util.Date;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.contract.model.dto.req.QueryListReqDto;
 import com.sckw.contract.model.dto.res.QueryListResDto;
 import com.sckw.contract.model.entity.*;
+import com.sckw.contract.model.report.LogisticsListExport;
 import com.sckw.contract.model.report.TradeListExport;
 import com.sckw.contract.model.vo.req.*;
 
@@ -606,26 +608,32 @@ public class KwcContractTradeService {
      * @author: czh
      * @date 2023/7/17
      */
-    public void export(QueryListReqVo reqVo) {
+    public void export(QueryListReqVo reqVo, HttpServletResponse response) {
         QueryListReqDto queryListReqDto = new QueryListReqDto();
         BeanUtils.copyProperties(reqVo, queryListReqDto);
-        queryListReqDto.setEntId(LoginUserHolder.getEntId());
-        if (StringUtils.isNotBlank(reqVo.getIds())) {
-            List<Long> idList = Arrays.stream(reqVo.getIds().split(Global.COMMA)).map(Long::parseLong).toList();
-            queryListReqDto.setIdList(idList);
+        List<Long> allEnt = new ArrayList<>();
+        if (Objects.isNull(reqVo.getEntId())) {
+            queryListReqDto.setEntId(LoginUserHolder.getEntId());
         }
+        allEnt.add(queryListReqDto.getEntId());
 
-        List<QueryListResVo> queryListResVos = new ArrayList<>();
-        List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList(queryListReqDto);
-        if (CollectionUtils.isNotEmpty(queryListResDtos)) {
-            queryListResVos = getQueryListResVos(queryListResDtos);
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(queryListReqDto.getEntId());
+        if (Objects.nonNull(entCacheResDto)) {
+            EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntTreeById(entCacheResDto.getId());
+            List<EntCacheResDto> child = entCacheResDto1.getChild();
+            if (CollectionUtils.isNotEmpty(child)) {
+                allEnt.addAll(child.stream().map(EntCacheResDto::getId).toList());
+            }
         }
-        try {
-            EasyExcelUtil.writeSingleExcel("贸易合同.xlsx", "sheet1", queryListResVos, QueryListResVo.class);
-        } catch (IOException e) {
-            log.error("导出失败:", e);
-            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_014);
+        queryListReqDto.setAllEnt(allEnt);
+        List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList(queryListReqDto);
+        if (CollectionUtils.isEmpty(queryListResDtos)) {
+            throw new SystemException("导出数据为空");
         }
+
+        List<QueryListResVo> list = getQueryListResVos(queryListResDtos);
+        List<LogisticsListExport> dataList = BeanUtils.copyToList(list, LogisticsListExport.class);
+        ExcelUtil.downData(response, LogisticsListExport.class, dataList);
     }
 
     /**

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

@@ -119,6 +119,9 @@
         <if test="signingWay != null">
             and a.signing_way = #{signingWay}
         </if>
+        <if test="charging != null">
+            and a.charging = #{charging}
+        </if>
         <if test="keywords != null and keywords != ''">
             and (b.firm_name like concat('%', #{keywords}, '%') or
                  e.firm_name like concat('%', #{keywords}, '%') or

+ 11 - 9
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfDriverController.java

@@ -2,15 +2,15 @@ package com.sckw.fleet.controller;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
-import com.sckw.core.model.enums.SystemTypeEnum;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
-import com.sckw.excel.easyexcel.RequestHolder;
+import com.sckw.core.web.response.ResponseUtil;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.fleet.model.dto.*;
 import com.sckw.fleet.model.vo.*;
@@ -18,9 +18,12 @@ import com.sckw.fleet.service.KwfDriverService;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -125,17 +128,16 @@ public class KwfDriverController {
      * @author zk
      * @date 2023/07/11
      **/
-    @PostMapping("/export")
-    public void export(@RequestBody Map<String, Object> params) {
+    @PostMapping(value = "/export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@RequestBody Map<String, Object> params, HttpServletResponse response) {
         /**分页数据**/
         List<KwfDriverVo> drivers = driverService.findPage(params);
 
-        if (!CollectionUtils.isEmpty(drivers)) {
-            HttpServletResponse response = RequestHolder.getResponse();
-            ExcelUtil.downData(response, KwfDriverVo.class, drivers);
-            //return null;
+        if (CollectionUtils.isEmpty(drivers)) {
+            throw new BusinessException("没有您想导出的数据!");
         }
-        //return HttpResult.error("无数据!");
+        ExcelUtil.downData(response, KwfDriverVo.class, drivers);
+        //ResponseUtil.writer(response, HttpResult.error("没有您想导出的数据!"));
     }
 
     /**

+ 10 - 7
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfFleetController.java

@@ -2,12 +2,14 @@ package com.sckw.fleet.controller;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.enums.SystemTypeEnum;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.core.web.response.ResponseUtil;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.fleet.model.dto.KwfFleetDto;
@@ -16,8 +18,11 @@ import com.sckw.fleet.service.KwfFleetService;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -78,18 +83,16 @@ public class KwfFleetController {
      * @author zk
      * @date 2023/07/11
      **/
-    @PostMapping("/export")
-    public HttpResult export(@RequestBody Map<String, Object> params) {
+    @PostMapping(value = "/export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@RequestBody Map<String, Object> params, HttpServletResponse response) {
         params.put("entId", LoginUserHolder.getEntId());
         /**查询分页数据**/
         List<KwfFleetVo> fleets = fleetService.findPage(params);
 
-        if (!CollectionUtils.isEmpty(fleets)) {
-            HttpServletResponse response = RequestHolder.getResponse();
-            ExcelUtil.downData(response, KwfFleetVo.class, fleets);
-            return null;
+        if (CollectionUtils.isEmpty(fleets)) {
+            throw new BusinessException("没有您想导出的数据!");
         }
-        return HttpResult.error("无数据!");
+        ExcelUtil.downData(response, KwfFleetVo.class, fleets);
     }
 
     /**

+ 8 - 7
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.SystemTypeEnum;
@@ -14,6 +15,7 @@ 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.core.web.response.ResponseUtil;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.fleet.model.dto.GpsByTruckNoDto;
@@ -27,6 +29,7 @@ import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import java.io.BufferedReader;
@@ -136,17 +139,15 @@ public class KwfTruckController {
      * @author zk
      * @date 2023/07/11
      **/
-    @PostMapping("/export")
-    public HttpResult export(@RequestBody Map<String, Object> params) {
+    @PostMapping(value = "/export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@RequestBody Map<String, Object> params, HttpServletResponse response) {
         /**查询数据**/
         List<KwfTruckVo> trucks = truckService.findPage(params);
 
-        if (!CollectionUtils.isEmpty(trucks)) {
-            HttpServletResponse response = RequestHolder.getResponse();
-            ExcelUtil.downData(response, KwfTruckVo.class, trucks);
-            return null;
+        if (CollectionUtils.isEmpty(trucks)) {
+            throw new BusinessException("没有您想导出的数据!");
         }
-        return HttpResult.error("无数据!");
+        ExcelUtil.downData(response, KwfTruckVo.class, trucks);
     }
 
     /**

+ 11 - 7
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckReportController.java

@@ -2,12 +2,15 @@ package com.sckw.fleet.controller;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.enums.SystemTypeEnum;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
+import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.core.web.response.ResponseUtil;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.fleet.model.KwfTruckReport;
@@ -18,9 +21,12 @@ import com.sckw.fleet.service.KwfTruckReportService;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -71,18 +77,16 @@ public class KwfTruckReportController {
      * @author zk
      * @date 2023/07/18
      **/
-    @PostMapping("/export")
-    public HttpResult export(@RequestBody Map<String, Object> params) {
+    @PostMapping(value = "/export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@RequestBody Map<String, Object> params, HttpServletResponse response) {
         params.put("entId", LoginUserHolder.getEntId());
         /**查询数据**/
         List<KwfTruckReportVo> trucks = reportService.findPage(params);
 
-        if (!CollectionUtils.isEmpty(trucks)) {
-            HttpServletResponse response = RequestHolder.getResponse();
-            ExcelUtil.downData(response, KwfTruckReportVo.class, trucks);
-            return null;
+        if (CollectionUtils.isEmpty(trucks)) {
+            throw new BusinessException("没有您想导出的数据!");
         }
-        return HttpResult.error("无数据!");
+        ExcelUtil.downData(response, KwfTruckReportVo.class, trucks);
     }
 
     /**

+ 7 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfDriverVo.java

@@ -5,7 +5,9 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sckw.excel.annotation.ExcelContext;
 import lombok.Data;
-
+import lombok.experimental.Accessors;
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -14,8 +16,11 @@ import java.util.Date;
  * @date 2023/7/7 0007
  */
 @Data
+@Accessors(chain = true)
 @ExcelContext(fileName = "司机信息", sheetName = "司机信息")
-public class KwfDriverVo {
+public class KwfDriverVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -7951209824419412386L;
 
     /**
      * 司机主键id

+ 7 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfFleetVo.java

@@ -4,6 +4,9 @@ import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.sckw.excel.annotation.ExcelContext;
 import lombok.Data;
+import lombok.experimental.Accessors;
+import java.io.Serial;
+import java.io.Serializable;
 
 /**
  * @author zk
@@ -11,8 +14,11 @@ import lombok.Data;
  * @date 2023/7/6 0006
  */
 @Data
+@Accessors(chain = true)
 @ExcelContext(fileName = "车队班组信息", sheetName = "车队班组信息")
-public class KwfFleetVo {
+public class KwfFleetVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -7951209824419412686L;
 
     /**
      * 主键id

+ 7 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckReportVo.java

@@ -4,6 +4,9 @@ import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.sckw.excel.annotation.ExcelContext;
 import lombok.Data;
+import lombok.experimental.Accessors;
+import java.io.Serial;
+import java.io.Serializable;
 
 /**
  * @desc 车辆上报
@@ -11,8 +14,11 @@ import lombok.Data;
  * @date 2023/7/15
  */
 @Data
+@Accessors(chain = true)
 @ExcelContext(fileName = "车辆上报信息", sheetName = "车辆上报信息")
-public class KwfTruckReportVo {
+public class KwfTruckReportVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -7951209824419412486L;
 
     /**
      * 车辆主键id

+ 7 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckVo.java

@@ -5,7 +5,9 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sckw.excel.annotation.ExcelContext;
 import lombok.Data;
-
+import lombok.experimental.Accessors;
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -14,8 +16,11 @@ import java.util.Date;
  * @date 2023/7/11 0011
  */
 @Data
+@Accessors(chain = true)
 @ExcelContext(fileName = "车辆信息", sheetName = "车辆信息")
-public class KwfTruckVo {
+public class KwfTruckVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -7951209824419412586L;
 
     /**
      * 车辆信息主键id

+ 5 - 3
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmAddressController.java

@@ -4,8 +4,10 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.manage.model.vo.req.*;
 import com.sckw.manage.service.KwmAddressService;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -95,9 +97,9 @@ public class KwmAddressController {
      * @author: czh
      * @date: 2023/7/12
      */
-    @PostMapping("/export")
-    public void export(@Valid @RequestBody AddressQueryReqVo reqVo) {
-        kwmAddressService.export(reqVo);
+    @PostMapping(value = "export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@Valid @RequestBody AddressQueryReqVo reqVo, HttpServletResponse response) {
+        kwmAddressService.export(reqVo, response);
     }
 
     /**

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

@@ -7,8 +7,10 @@ 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.service.KwmCooperateApplyService;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -83,9 +85,9 @@ public class KwmCooperateApplyController {
      * @author: czh
      * @date: 2023/7/11
      */
-    @PostMapping("/export")
-    public void export(@Valid @RequestBody CooperateApplyQueryReqVo reqVo) {
-        kwmCooperateApplyService.export(reqVo);
+    @PostMapping(value = "export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@Valid @RequestBody CooperateApplyQueryReqVo reqVo, HttpServletResponse response) {
+        kwmCooperateApplyService.export(reqVo, response);
     }
 
 

+ 5 - 3
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmCooperateManageController.java

@@ -5,8 +5,10 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.manage.model.vo.req.*;
 import com.sckw.manage.service.KwmCooperateManageService;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -107,9 +109,9 @@ public class KwmCooperateManageController {
      * @author: czh
      * @date: 2023/7/11
      */
-    @PostMapping("export")
-    public void export(@Valid @RequestBody CooperateManageQueryReqVo reqVo) {
-        kwmCooperateManageService.export(reqVo);
+    @PostMapping(value = "export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@Valid @RequestBody CooperateManageQueryReqVo reqVo, HttpServletResponse response) {
+        kwmCooperateManageService.export(reqVo, response);
     }
 
     /**

+ 73 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/report/AddressQueryExport.java

@@ -0,0 +1,73 @@
+package com.sckw.manage.model.report;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.sckw.excel.annotation.ExcelContext;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author czh
+ * @desc 地点档案列表信息
+ * @date 2023/9/14
+ */
+@Data
+@Accessors(chain = true)
+@ExcelContext(fileName = "地点档案列表信息", sheetName = "地点档案列表信息")
+public class AddressQueryExport implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 9153289220823593050L;
+
+    @ExcelProperty(value = "地址名称")
+    private String name;
+
+    @ExcelProperty(value = "地址类型")
+    private String typeName;
+
+    @ExcelProperty(value = "电子围栏")
+    private String fence;
+
+    @ExcelProperty(value = "默认类型")
+    private String defaultTypeName;
+
+    @ExcelProperty(value = "联系人")
+    private String contacts;
+
+    @ExcelProperty(value = "联系电话")
+    private String phone;
+
+    @ExcelProperty(value = "所属区域")
+    private String cityName;
+
+    @ExcelProperty(value = "详细地址")
+    private String detailAddress;
+
+    @ExcelProperty(value = "经度")
+    private String lng;
+
+    @ExcelProperty(value = "纬度")
+    private String lat;
+
+    @ExcelProperty(value = "创建人")
+    private String createByName;
+
+    @ExcelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @ExcelProperty(value = "修改时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+}

+ 59 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/report/CooperateManageExport.java

@@ -0,0 +1,59 @@
+package com.sckw.manage.model.report;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.sckw.excel.annotation.ExcelContext;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 合作信息
+ * @date 2023/9/14
+ */
+@Data
+@Accessors(chain = true)
+@ExcelContext(fileName = "合作信息", sheetName = "合作信息")
+public class CooperateManageExport implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -5491364851093075646L;
+
+    @ExcelProperty(value = "申请类型")
+    private String applyType;
+
+    @ExcelProperty(value = "合作状态")
+    private String status;
+
+    @ExcelProperty(value = "合作单位名称")
+    private String targetEntName;
+
+    @ExcelProperty(value = "我方单位名称")
+    private String entName;
+
+    @ExcelProperty(value = "供应单位")
+    private String ent1;
+
+    @ExcelProperty(value = "采购单位")
+    private String ent2;
+
+    @ExcelProperty(value = "托运单位")
+    private String ent3;
+
+    @ExcelProperty(value = "承运单位")
+    private String ent4;
+
+    @ExcelProperty(value = "合作单位联系人")
+    private String contacts;
+
+    @ExcelProperty(value = "联系电话")
+    private String phone;
+
+    @ExcelProperty(value = "我方联系人")
+    private String manager;
+
+    @ExcelProperty(value = "联系电话")
+    private String managerPhone;
+}

+ 1 - 1
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/AddressQueryReqVo.java

@@ -54,6 +54,6 @@ public class AddressQueryReqVo extends PageRequest implements Serializable {
     /**
      * 主键
      */
-    private String ids;
+    private List<Long> ids;
 
 }

+ 10 - 13
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java

@@ -20,10 +20,12 @@ import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.excel.utils.EasyExcelUtil;
+import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.manage.api.model.dto.res.EntAddressResDto;
 import com.sckw.manage.dao.KwmAddressMapper;
 import com.sckw.manage.dubbo.RemoteManageServiceImpl;
 import com.sckw.manage.model.entity.KwmAddress;
+import com.sckw.manage.model.report.AddressQueryExport;
 import com.sckw.manage.model.vo.req.*;
 import com.sckw.manage.model.vo.res.AddressDetailResVo;
 import com.sckw.manage.model.vo.res.AddressQueryResVo;
@@ -34,6 +36,7 @@ import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -108,8 +111,8 @@ public class KwmAddressService {
             wrapper.lt(KwmAddress::getCreateTime, DateUtil.offsetDay(reqVo.getEndTime(), 1));
         }
 
-        if (StringUtils.isNotBlank(reqVo.getIds())) {
-            wrapper.in(KwmAddress::getId, Arrays.stream(reqVo.getIds().split(Global.COMMA)).map(Long::parseLong).toList());
+        if (CollectionUtils.isNotEmpty(reqVo.getIds())) {
+            wrapper.in(KwmAddress::getId, reqVo.getIds());
         }
         return kwmAddressMapper.selectList(wrapper);
     }
@@ -362,19 +365,13 @@ public class KwmAddressService {
      * @author: czh
      * @date: 2023/7/12
      */
-    public void export(AddressQueryReqVo reqVo) {
+    public void export(AddressQueryReqVo reqVo, HttpServletResponse response) {
         List<KwmAddress> kwmAddressList = findList(reqVo);
-        List<AddressQueryResVo> list = new ArrayList<>();
-        if (CollectionUtils.isNotEmpty(kwmAddressList)) {
-            list = getAddressQueryResVo(kwmAddressList);
-        }
-
-        try {
-            EasyExcelUtil.writeSingleExcel("地址管理.xlsx", "sheet1", list, AddressQueryResVo.class);
-        } catch (IOException e) {
-            log.error("导出失败:", e);
-            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_014);
+        if (CollectionUtils.isEmpty(kwmAddressList)) {
+            throw new SystemException("导出数据为空");
         }
+        List<AddressQueryResVo> list = getAddressQueryResVo(kwmAddressList);
+        ExcelUtil.downData(response, AddressQueryExport.class, BeanUtils.copyToList(list, AddressQueryExport.class));
     }
 
     /**

+ 35 - 11
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateApplyService.java

@@ -9,12 +9,14 @@ import com.github.pagehelper.PageInfo;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.CooperateStatusEnum;
+import com.sckw.core.model.enums.CooperateTypeEnum;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.excel.utils.EasyExcelUtil;
+import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.manage.dao.KwmCooperateMapper;
 import com.sckw.manage.dao.KwmCooperateTypeMapper;
 import com.sckw.manage.model.dto.req.CooperateManageQueryReqDto;
@@ -22,6 +24,8 @@ import com.sckw.manage.model.dto.res.CooperateManageQueryResDto;
 import com.sckw.manage.model.dto.res.CooperateQueryDto;
 import com.sckw.manage.model.entity.KwmCooperate;
 import com.sckw.manage.model.entity.KwmCooperateType;
+import com.sckw.manage.model.report.AddressQueryExport;
+import com.sckw.manage.model.report.CooperateManageExport;
 import com.sckw.manage.model.vo.req.CooperateApplyQueryReqVo;
 import com.sckw.manage.model.vo.req.CooperateApproveReqVo;
 import com.sckw.manage.model.vo.req.IdsReqVo;
@@ -33,6 +37,7 @@ import com.sckw.stream.model.UserInfo;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -550,22 +555,41 @@ public class KwmCooperateApplyService {
      * @author: czh
      * @date: 2023/7/11
      */
-    public void export(CooperateApplyQueryReqVo reqVo) {
+    public void export(CooperateApplyQueryReqVo reqVo, HttpServletResponse response) {
         CooperateManageQueryReqDto reqDto = buildQueryParam(reqVo);
         List<CooperateManageQueryResDto> list = kwmCooperateMapper.findList(reqDto);
         if (CollectionUtils.isEmpty(list)) {
-            return;
+            throw new SystemException("导出数据为空");
         }
+
         List<CooperateManageQueryResVo> cooperateManageQueryResVos = getCooperateManageQueryResVos(list);
-        if (CollectionUtils.isEmpty(cooperateManageQueryResVos)) {
-            return;
-        }
-        try {
-            EasyExcelUtil.writeSingleExcel("合作申请.xlsx", "sheet1", cooperateManageQueryResVos, CooperateManageQueryResVo.class);
-        } catch (IOException e) {
-            log.error("导出失败:", e);
-            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_014);
-        }
+        List<CooperateManageExport> result = new ArrayList<>();
+        cooperateManageQueryResVos.forEach(item -> {
+            CooperateManageExport cooperateManageExport = new CooperateManageExport();
+            BeanUtils.copyProperties(item, cooperateManageExport);
+            cooperateManageExport.setStatus(CooperateStatusEnum.getName(item.getStatus()));
+            cooperateManageExport.setApplyType(item.getApplyTypeCode().equals(1) ? "我方发起" : "对方发起");
+
+            String cooperateTypes = item.getCooperateTypes();
+            if (cooperateTypes.contains(String.valueOf(CooperateTypeEnum.SUPPLIER.getCode()))) {
+                cooperateManageExport.setEnt1("是");
+            }
+
+            if (cooperateTypes.contains(String.valueOf(CooperateTypeEnum.PURCHASER.getCode()))) {
+                cooperateManageExport.setEnt2("是");
+            }
+
+            if (cooperateTypes.contains(String.valueOf(CooperateTypeEnum.CONSIGN.getCode()))) {
+                cooperateManageExport.setEnt3("是");
+            }
+
+            if (cooperateTypes.contains(String.valueOf(CooperateTypeEnum.CARRIAGE.getCode()))) {
+                cooperateManageExport.setEnt4("是");
+            }
+            result.add(cooperateManageExport);
+        });
+
+        ExcelUtil.downData(response, CooperateManageExport.class, result);
     }
 
 

+ 31 - 11
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateManageService.java

@@ -9,6 +9,7 @@ import com.github.pagehelper.PageInfo;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.CooperateStatusEnum;
+import com.sckw.core.model.enums.CooperateTypeEnum;
 import com.sckw.core.model.enums.SystemTypeEnum;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
@@ -19,12 +20,14 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.EasyExcelUtil;
+import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.manage.dao.KwmCooperateMapper;
 import com.sckw.manage.dao.KwmCooperateTypeMapper;
 import com.sckw.manage.model.dto.req.CooperateManageQueryReqDto;
 import com.sckw.manage.model.dto.res.CooperateManageQueryResDto;
 import com.sckw.manage.model.entity.KwmCooperate;
 import com.sckw.manage.model.entity.KwmCooperateType;
+import com.sckw.manage.model.report.CooperateManageExport;
 import com.sckw.manage.model.vo.req.BindManagerReqVo;
 import com.sckw.manage.model.vo.req.CooperateManageQueryReqVo;
 import com.sckw.manage.model.vo.req.FindCooperateByEntReqVo;
@@ -38,6 +41,7 @@ import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.transport.api.dubbo.TransportDubboService;
 import com.sckw.payment.api.dubbo.PaymentDubboService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -339,23 +343,39 @@ public class KwmCooperateManageService {
      * @author: czh
      * @date: 2023/7/11
      */
-    public void export(CooperateManageQueryReqVo reqVo) {
+    public void export(CooperateManageQueryReqVo reqVo, HttpServletResponse response) {
         CooperateManageQueryReqDto reqDto = buildQueryParam(reqVo);
         List<CooperateManageQueryResDto> list = kwmCooperateMapper.findManageList(reqDto);
         if (CollectionUtils.isEmpty(list)) {
-            return;
+            throw new SystemException("导出数据为空");
         }
         List<CooperateManageQueryResVo> cooperateManageQueryResVos = commonBusinessService.getCooperateManageQueryResVos(list);
-        if (CollectionUtils.isEmpty(cooperateManageQueryResVos)) {
-            return;
-        }
+        List<CooperateManageExport> result = new ArrayList<>();
+        cooperateManageQueryResVos.forEach(item -> {
+            CooperateManageExport cooperateManageExport = new CooperateManageExport();
+            BeanUtils.copyProperties(item, cooperateManageExport);
+            cooperateManageExport.setStatus(CooperateStatusEnum.getName(item.getStatus()));
+            cooperateManageExport.setApplyType(item.getApplyTypeCode().equals(1) ? "我方发起" : "对方发起");
+            String cooperateTypes = item.getCooperateTypes();
+            if (cooperateTypes.contains(String.valueOf(CooperateTypeEnum.SUPPLIER.getCode()))) {
+                cooperateManageExport.setEnt1("是");
+            }
 
-        try {
-            EasyExcelUtil.writeSingleExcel("合作管理.xlsx", "sheet1", cooperateManageQueryResVos, CooperateManageQueryResVo.class);
-        } catch (IOException e) {
-            log.error("导出失败:", e);
-            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_014);
-        }
+            if (cooperateTypes.contains(String.valueOf(CooperateTypeEnum.PURCHASER.getCode()))) {
+                cooperateManageExport.setEnt2("是");
+            }
+
+            if (cooperateTypes.contains(String.valueOf(CooperateTypeEnum.CONSIGN.getCode()))) {
+                cooperateManageExport.setEnt3("是");
+            }
+
+            if (cooperateTypes.contains(String.valueOf(CooperateTypeEnum.CARRIAGE.getCode()))) {
+                cooperateManageExport.setEnt4("是");
+            }
+
+            result.add(cooperateManageExport);
+        });
+        ExcelUtil.downData(response, CooperateManageExport.class, result);
     }
 
     /**

+ 9 - 8
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTransportDemandService.java

@@ -24,14 +24,16 @@ import com.sckw.order.dao.KwoTransportDemandMapper;
 import com.sckw.order.model.KwoTransportDemand;
 import com.sckw.order.model.dto.TransportDemandExport;
 import com.sckw.order.model.vo.req.*;
-import com.sckw.order.model.vo.res.*;
+import com.sckw.order.model.vo.res.TransportDemandContactInfoRes;
+import com.sckw.order.model.vo.res.TransportDemandDetailRes;
+import com.sckw.order.model.vo.res.TransportDemandListRes;
+import com.sckw.order.model.vo.res.TransportDemandSquaresListRes;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
-import org.springframework.data.mongodb.core.aggregation.ArrayOperators;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -203,7 +205,7 @@ public class KwoTransportDemandService {
                     .setStatusLabel(DictEnum.getLabel(DictTypeEnum.TRANSPORT_DEMAND_STATUS.getType(), String.valueOf(e.getStatus())))
                     .setLoadAddress(loadAreaName + loadDetailAddress)
                     .setUnloadAddress(unloadAreaName + unloadDetailAddress)
-                    .setEntName(entMap != null ? entMap.get(e.getEntId()) : null);
+                    .setEntName(entMap.get(e.getEntId()));
             result.add(demand);
         });
         return PageResult.build(param.getPage(), param.getPageSize(), demandPage.getTotal(), result);
@@ -217,13 +219,12 @@ public class KwoTransportDemandService {
      * @return: com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<com.sckw.order.model.KwoTransportDemand>
      */
     private LambdaQueryWrapper<KwoTransportDemand> buildWrapper(ExportTransportDemandParam param) {
-        Long entId = !Objects.equals(LoginUserHolder.getSystemType(), SystemTypeEnum.MANAGE.getCode()) ? LoginUserHolder.getEntId() : null;
         LambdaQueryWrapper<KwoTransportDemand> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(KwoTransportDemand::getDelFlag, Global.NO);
         if (!Objects.equals(LoginUserHolder.getSystemType(), SystemTypeEnum.MANAGE.getCode())) {
-            wrapper.eq(KwoTransportDemand::getEntId, entId);
-        } else {
-            wrapper.in(KwoTransportDemand::getStatus, 1 , 2);
+            wrapper.eq(KwoTransportDemand::getEntId, LoginUserHolder.getEntId());
+        } else if (Objects.isNull(param.getStatus())) {
+            wrapper.in(KwoTransportDemand::getStatus, 1, 2);
         }
         if (StringUtils.isNotBlank(param.getIds())) {
             List<Long> ids = StringUtils.splitStrToList(param.getIds(), ",", Long.class);
@@ -429,7 +430,7 @@ public class KwoTransportDemandService {
             }
         }
         Integer unloadCode = param.getUnloadAreaCode();
-        if (Objects.nonNull(unloadCode) && Objects.nonNull(param.getLoadAreaLevel())) {
+        if (Objects.nonNull(unloadCode) && Objects.nonNull(param.getUnloadAreaLevel())) {
             switch (param.getUnloadAreaLevel()) {
                 case 1 ->
                         wrapper.likeRight(KwoTransportDemand::getUnloadAreaCode, Integer.valueOf(String.valueOf(unloadCode).substring(0, 2)));

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwpWantBuyService.java

@@ -141,7 +141,7 @@ public class KwpWantBuyService {
             List<String> goodsTypes = goodsTypeHandle(wantBuySelectParam);
             wantBuySelectParam.setGoodsTypeValueSearch(goodsTypes);
         }
-        wantBuySelectParam.setEntId(LoginUserHolder.getSystemType() != SystemTypeEnum.MANAGE.getCode() ? LoginUserHolder.getEntId() : null);
+        wantBuySelectParam.setEntId(!Objects.equals(LoginUserHolder.getSystemType(), SystemTypeEnum.MANAGE.getCode()) ? LoginUserHolder.getEntId() : null);
         wantBuySelectParam.setSystemType(LoginUserHolder.getSystemType());
 
         PageHelper.startPage(wantBuySelectParam.getPage(), wantBuySelectParam.getPageSize());
@@ -490,7 +490,7 @@ public class KwpWantBuyService {
                 selectParam.setGoodsTypeValueSearch(goodsTypes);
             }
         }
-        selectParam.setEntId(LoginUserHolder.getSystemType() != SystemTypeEnum.MANAGE.getCode() ? LoginUserHolder.getEntId() : null);
+        selectParam.setEntId(!Objects.equals(LoginUserHolder.getSystemType(), SystemTypeEnum.MANAGE.getCode()) ? LoginUserHolder.getEntId() : null);
         selectParam.setSystemType(LoginUserHolder.getSystemType());
 
         List<WantBuySelectRes> wantBuyDto = kwpWantBuyMapper.pageSelect(selectParam);

+ 14 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/WalletController.java

@@ -33,6 +33,16 @@ public class WalletController {
         return HttpResult.ok(walletService.walletOverview(queryChannel));
     }
 
+    /**
+     * 渠道开通情况
+     *
+     * @return
+     */
+    @GetMapping("channel")
+    public HttpResult channel() {
+        return HttpResult.ok(walletService.channel());
+    }
+
     /**
      * 查询资金明细
      *
@@ -140,6 +150,7 @@ public class WalletController {
     public HttpResult prePayList(PrePayPage prePayPage) {
         return HttpResult.ok(walletService.prePayList(prePayPage));
     }
+
     /**
      * 预付列表-按渠道统计数量
      *
@@ -149,6 +160,7 @@ public class WalletController {
     public HttpResult prePayCount(String entName) {
         return HttpResult.ok(walletService.walletCount(entName));
     }
+
     /**
      * 预收列表
      *
@@ -159,6 +171,7 @@ public class WalletController {
     public HttpResult preReceiveList(PrePayPage prePayPage) {
         return HttpResult.ok(walletService.preReceiveList(prePayPage));
     }
+
     /**
      * 预收列表-按渠道统计数量
      *
@@ -168,6 +181,7 @@ public class WalletController {
     public HttpResult preReceiveCount(String entName) {
         return HttpResult.ok(walletService.walletCount(entName));
     }
+
     /**
      * 预付校验
      *

+ 4 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/controller/operate/SettlementWalletController.java

@@ -29,8 +29,8 @@ public class SettlementWalletController {
      * @param settlementWalletReq
      * @return
      */
-    @PostMapping(name = "物流-电子钱包付款(货到付款)结算记录-列表", path = "logisticsList")
-    public HttpResult logisticsList(@RequestBody @Valid SettlementWalletReq settlementWalletReq) {
+    @GetMapping("logisticsList")
+    public HttpResult logisticsList(@Valid SettlementWalletReq settlementWalletReq) {
         settlementWalletReq.setPayType(SettlementWalletPayTypeEnum.CASH_ON_DELIVERY.getStatus());
         settlementWalletReq.setOrderType(SettlementOrderTypeEnum.LOGISTICS.getStatus());
         return HttpResult.ok(settlementWalletService.pageList(settlementWalletReq));
@@ -42,7 +42,7 @@ public class SettlementWalletController {
      * @param settlementWalletReq
      * @return
      */
-    @GetMapping(name = "销售-付款记录列表(采购电子钱包结算记录)", path = "tradeList")
+    @GetMapping("tradeList")
     public HttpResult tradeList(@Valid SettlementWalletReq settlementWalletReq) {
         settlementWalletReq.setPayType(SettlementWalletPayTypeEnum.CASH_ON_DELIVERY.getStatus());
         settlementWalletReq.setOrderType(SettlementOrderTypeEnum.TRADE.getStatus());
@@ -56,7 +56,7 @@ public class SettlementWalletController {
      * @param settlementWalletReq
      * @return
      */
-    @GetMapping(name = "销售-收款记录列表-预付款(电子钱包)", path = "tradePreList")
+    @GetMapping( "tradePreList")
     public HttpResult tradePreList(@Valid SettlementWalletReq settlementWalletReq) {
         settlementWalletReq.setPayType(SettlementWalletPayTypeEnum.ADVANCE_PAYMENT.getStatus());
         settlementWalletReq.setOrderType(SettlementOrderTypeEnum.TRADE.getStatus());

+ 2 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpSettlementLogisticsMapper.java

@@ -14,6 +14,7 @@ import org.apache.ibatis.annotations.Param;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author Aick Spt
@@ -45,6 +46,7 @@ public interface KwpSettlementLogisticsMapper extends BaseMapper<KwpSettlementLo
      * @date 2023-07-24 16:23
      */
     Long getCountList(@Param("settlementReq") SettlementReq settlementReq);
+    Map<String, Long> count(@Param("settlementReq") SettlementReq settlementReq);
 
     /**
      * 运费-物流订单列表查询合计

+ 19 - 8
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/WalletChannelEnum.java

@@ -2,19 +2,22 @@ package com.sckw.payment.model.constant;
 
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * @author Aick Spt
  * @date 2023-07-27 12:54
  */
 public enum WalletChannelEnum {
-    ALL(0, "1", "all", "全部"),
+    ALL(0, "0", "all", "全部"),
 
     //汇付
-    HF(1, "1", "huifu", "汇付"),
+    HF(1, "1", "huifu", "汇付天下"),
     //新生
     XS(2, "2", "newpay", "新生"),
     //中信
-    ZX(3, "3", "citic", "中信");
+    ZX(3, "3", "citic", "中信银行");
 
     private final int status;
     private final String value;
@@ -44,15 +47,13 @@ public enum WalletChannelEnum {
         return value;
     }
 
-    // 添加静态方法,根据 status 获取对应的 desc
-    public static String getStatusDesc(int status) {
+    public static String getDesc(String channel) {
         for (WalletChannelEnum walletChannelEnum : values()) {
-            if (walletChannelEnum.getStatus() == status) {
+            if (StringUtils.equals(walletChannelEnum.getChannel(), channel)) {
                 return walletChannelEnum.getDesc();
             }
         }
-        // 可根据实际需求返回默认值或其他处理
-        return null;
+        return "";
     }
 
     /**
@@ -75,4 +76,14 @@ public enum WalletChannelEnum {
         return null;
     }
 
+    /**
+     * 去除全部的渠道
+     *
+     * @return
+     */
+    public static List<WalletChannelEnum> channelEnumList() {
+        return Arrays.stream(values()).filter(a -> !(WalletChannelEnum.ALL.getStatus() == a.getStatus())).toList();
+    }
+
+
 }

+ 9 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/ChannelDetail.java

@@ -19,6 +19,11 @@ public class ChannelDetail implements Serializable {
      * 渠道
      */
     private String channel;
+    /**
+     * 渠道名称
+     */
+    private String name;
+
     /**
      * 可用金额统计
      */
@@ -27,4 +32,8 @@ public class ChannelDetail implements Serializable {
      * 总金额统计
      */
     private String totalMoney;
+    /**
+     * 渠道开通状态
+     */
+    private Boolean openFlag = false;
 }

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

@@ -241,19 +241,25 @@ public class WalletService {
         if (StringUtils.isBlank(uid)) {
             throw new BusinessException("暂未开通电子钱包");
         }
+        //钱包总览信息
         R<WalletOverview> wallet = payCenterService.general(uid);
         if (wallet.getStatus()) {
             WalletOverview data = wallet.getData();
             List<ChannelDetail> channelDetails = new ArrayList<>();
+            //是否查询渠道详情 适配app端
             if (queryChannel) {
+                //查询钱包清单,统计个渠道金额数量等
                 R<List<WalletDto>> wallet1 = payCenterService.wallet(uid, null, "");
                 if (wallet1.getStatus()) {
                     List<WalletDto> data1 = wallet1.getData();
                     if (!CollectionUtils.isEmpty(data1)) {
+                        // 渠道,渠道下的钱包作为的map
                         Map<String, List<WalletDto>> map = data1.stream().collect(Collectors.groupingBy(WalletDto::getChannel));
                         ChannelDetail channelDetail;
                         for (Map.Entry<String, List<WalletDto>> one : map.entrySet()) {
+                            //channel
                             String key = one.getKey();
+                            //channel下的钱包
                             List<WalletDto> value = one.getValue();
                             Long money = 0L;
                             Long totalMoney = 0L;
@@ -265,8 +271,10 @@ public class WalletService {
                             }
                             channelDetail = new ChannelDetail();
                             channelDetail.setChannel(key);
+                            channelDetail.setName(WalletChannelEnum.getDesc(key));
                             channelDetail.setMoney(String.valueOf(money / 100D));
                             channelDetail.setTotalMoney(String.valueOf(totalMoney / 100D));
+                            channelDetail.setOpenFlag(true);
                             channelDetails.add(channelDetail);
                         }
                     }
@@ -278,8 +286,10 @@ public class WalletService {
                     for (String channel : channels) {
                         channelDetail = new ChannelDetail();
                         channelDetail.setChannel(channel);
+                        channelDetail.setName(WalletChannelEnum.getDesc(channel));
                         channelDetail.setMoney("-");
                         channelDetail.setTotalMoney("-");
+                        channelDetail.setOpenFlag(true);
                         channelDetails.add(channelDetail);
                     }
                 }
@@ -290,6 +300,46 @@ public class WalletService {
         return new WalletDetail(LoginUserHolder.getEntName(), "-", "-", "-", 0, new ArrayList<>());
     }
 
+    /**
+     * 渠道开通情况
+     *
+     * @return
+     */
+    public Object channel() {
+        Long entId = LoginUserHolder.getEntId();
+        String uid = walletRelationService.getRelation(entId);
+        if (StringUtils.isBlank(uid)) {
+            throw new BusinessException("暂未开通电子钱包");
+        }
+        R<WalletOverview> wallet = payCenterService.general(uid);
+        if (wallet.getStatus()) {
+            WalletOverview data = wallet.getData();
+            //已开通的渠道
+            List<String> channels = data.getChannels();
+
+            List<ChannelDetail> res = new ArrayList<>();
+            for (WalletChannelEnum value : WalletChannelEnum.channelEnumList()) {
+                ChannelDetail channelDetail = new ChannelDetail();
+                channelDetail.setChannel(value.getChannel());
+                channelDetail.setName(value.getDesc());
+                channelDetail.setMoney("-");
+                channelDetail.setTotalMoney("-");
+                channelDetail.setOpenFlag(channels.contains(value.getChannel()));
+                res.add(channelDetail);
+            }
+            return res;
+        }
+        return WalletChannelEnum.channelEnumList().stream().map(a -> {
+            ChannelDetail channelDetail = new ChannelDetail();
+            channelDetail.setChannel(a.getChannel());
+            channelDetail.setName(a.getDesc());
+            channelDetail.setMoney("-");
+            channelDetail.setTotalMoney("-");
+            channelDetail.setOpenFlag(false);
+            return channelDetail;
+        }).collect(Collectors.toList());
+    }
+
     /**
      * 查询资金明细
      *

+ 0 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/operate/LedgerTradeService.java

@@ -93,7 +93,6 @@ public class LedgerTradeService extends AbsLedger {
      * @param tradeReq 请求参数
      */
     private void fillPara(TradeReq tradeReq) {
-        tradeReq.setEntId(LoginUserHolder.getEntId());
         if (StringUtils.isNotBlank(tradeReq.getStartCreateTime())) {
             tradeReq.setStartCreateTime(StringTimeUtil.fillStart(tradeReq.getStartCreateTime()));
         }

+ 11 - 39
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/operate/SettlementLogisticsService.java

@@ -6,14 +6,12 @@ import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.vo.TableTop;
 import com.sckw.core.utils.StringTimeUtil;
-import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.payment.dao.KwpSettlementLogisticsMapper;
 import com.sckw.payment.model.constant.LogisticsUnitType;
 import com.sckw.payment.model.constant.SettlementEnum;
 import com.sckw.payment.model.dto.SettlementLogisticsDto;
 import com.sckw.payment.model.vo.SettlementLogistics;
 import com.sckw.payment.model.vo.req.SettlementReq;
-import com.sckw.payment.model.vo.res.SettlementLogisticsStatusCountVo;
 import com.sckw.payment.model.vo.res.SettlementLogisticsSumVo;
 import com.sckw.payment.utils.CommonValidator;
 import com.sckw.payment.utils.PageMoreRes;
@@ -43,43 +41,17 @@ public class SettlementLogisticsService {
         settlementReq.setUnitType(LogisticsUnitType.SHIPPER);
         settlementReq.setUnitTypeTwo(LogisticsUnitType.CARRIER);
         validSettlementReq(settlementReq);
-        SettlementLogisticsStatusCountVo settlementLogisticsStatusCountVos = new SettlementLogisticsStatusCountVo();
-
-        //加上当前登录者顶级企业id用于过滤数据
-        settlementReq.setEntId(LoginUserHolder.getEntId());
-
-        List<TableTop> tableTops = new ArrayList<>();
-        TableTop tableTop = new TableTop();
-        //总
-        settlementReq.setStatus(SettlementEnum.ALL.getStatus());
-        settlementLogisticsStatusCountVos.setAllCount(settlementLogisticsMapper.getCountList(settlementReq));
-        tableTop.setName("全部").setValue(settlementReq.getStatus()).setTotal(Math.toIntExact(settlementLogisticsStatusCountVos.getAllCount()));
-        tableTops.add(tableTop);
-
-        //待结算
-        settlementReq.setStatus(SettlementEnum.WAITING_PAYMENT.getStatus());
-//        settlementLogisticsStatusCountVos.setWaitingPaymentCount(settlementLogisticsMapper.getCountList(settlementReq));
-        Long a = settlementLogisticsMapper.getCountList(settlementReq);
-        settlementLogisticsStatusCountVos.setWaitingPaymentCount(a);
-        TableTop tableTop1 = new TableTop();
-        tableTop1.setName("待结算").setValue(SettlementEnum.WAITING_PAYMENT.getStatus()).setTotal(Math.toIntExact(a));
-        tableTops.add(tableTop1);
-
-        //部分结算
-        settlementReq.setStatus(SettlementEnum.PARTIAL_PAYMENT.getStatus());
-        settlementLogisticsStatusCountVos.setPartialPaymentCount(settlementLogisticsMapper.getCountList(settlementReq));
-        TableTop tableTop2 = new TableTop();
-        tableTop2.setName("部分结算").setValue(SettlementEnum.PARTIAL_PAYMENT.getStatus()).setTotal(Math.toIntExact(settlementLogisticsStatusCountVos.getPartialPaymentCount()));
-        tableTops.add(tableTop2);
-
-        //全部结算
-        settlementReq.setStatus(SettlementEnum.ALL_PAYMENT.getStatus());
-        settlementLogisticsStatusCountVos.setAllPaymentCount(settlementLogisticsMapper.getCountList(settlementReq));
-        TableTop tableTop3 = new TableTop();
-        tableTop3.setName("全部结算").setValue(SettlementEnum.ALL_PAYMENT.getStatus()).setTotal(Math.toIntExact(settlementLogisticsStatusCountVos.getAllPaymentCount()));
-        tableTops.add(tableTop3);
-
-        return tableTops;
+
+        Map<String, Long> count = settlementLogisticsMapper.count(settlementReq);
+        List<TableTop> res = new ArrayList<>(4);
+        for (SettlementEnum value : SettlementEnum.values()) {
+            TableTop tableTop = new TableTop();
+            tableTop.setName(value.getDesc());
+            tableTop.setValue(value.getStatus());
+            tableTop.setTotal(Math.toIntExact(count.get(value.getLabel())));
+            res.add(tableTop);
+        }
+        return res;
     }
 
     /**

+ 64 - 22
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementLogisticsMapper.xml

@@ -152,30 +152,31 @@
     </select>
     <select id="list" resultType="com.sckw.payment.model.vo.SettlementLogistics">
         select s.id,
-               s.ent_id        as entId,
-               s.l_ledger_id   as lLedgerId,
-               s.sl_order_no   as slOrderNo,
-               s.total_price   as totalPrice,
-               s.actual_price  as actualPrice,
-               s.receipt_time  as receiptTime,
+               s.ent_id                       as entId,
+               s.l_ledger_id                  as lLedgerId,
+               s.sl_order_no                  as slOrderNo,
+               s.total_price                  as totalPrice,
+               s.actual_price                 as actualPrice,
+               s.total_price - s.actual_price as waitPrice,
+               s.receipt_time                 as receiptTime,
                s.remark,
-               s.audit_user    as auditUser,
-               s.audit_phone   as auditPhone,
-               s.success_user  as successUser,
-               s.success_phone as successPhone,
+               s.audit_user                   as auditUser,
+               s.audit_phone                  as auditPhone,
+               s.success_user                 as successUser,
+               s.success_phone                as successPhone,
                s.status,
-               s.create_by     as createBy,
-               s.create_time   as createTime,
-               s.update_by     as updateBy,
-               s.update_time   as updateTime,
+               s.create_by                    as createBy,
+               s.create_time                  as createTime,
+               s.update_by                    as updateBy,
+               s.update_time                  as updateTime,
                l.name,
-               l.generate_time as generateTime,
-               l.l_ledger_no   as lLedgerNo,
-               l.trading       as trading,
-               l.settle_price  as settlePrice,
-               l.url           as url,
-               lu.firm_name    as shipperFirmName,
-               lu2.firm_name   as carrierFirmName
+               l.generate_time                as generateTime,
+               l.l_ledger_no                  as lLedgerNo,
+               l.trading                      as trading,
+               l.settle_price                 as settlePrice,
+               l.url                          as url,
+               lu.firm_name                   as shipperFirmName,
+               lu2.firm_name                  as carrierFirmName
         from kwp_settlement_logistics s
                  inner join kwp_ledger_logistics l on s.l_ledger_id = l.id and l.del_flag = 0
                  inner join kwp_ledger_logistics_unit lu on s.l_ledger_id = lu.l_ledger_id and lu.del_flag = 0 and
@@ -273,7 +274,48 @@
             <include refid="settlementLogisticsSelectWhere"/>
         </where>
     </select>
-
+    <select id="count" resultType="java.util.Map">
+        select count(1)                           "0",
+               count(if(ksl.status = 3, 1, null)) "3",
+               count(if(ksl.status = 2, 1, null)) "2",
+               count(if(ksl.status = 1, 1, null)) "1"
+        from kwp_settlement_logistics ksl
+                 inner join kwp_ledger_logistics l on ksl.l_ledger_id = l.id and l.del_flag = 0
+                 inner join kwp_ledger_logistics_unit lu on ksl.l_ledger_id = lu.l_ledger_id and lu.del_flag = 0
+        and lu.unit_type = #{settlementReq.unitType,jdbcType=INTEGER}
+                 inner join kwp_ledger_logistics_unit lu2 on ksl.l_ledger_id = lu2.l_ledger_id and lu2.del_flag = 0
+        and lu2.unit_type = #{settlementReq.unitTypeTwo,jdbcType=INTEGER}
+        <where>
+            ksl.del_flag = 0
+            <if test="settlementReq.status != null and settlementReq.status != 0">
+                and ksl.status = #{settlementReq.status}
+            </if>
+            <if test="settlementReq.trading != null and settlementReq.trading != ''">
+                and l.trading = #{settlementReq.trading,jdbcType=VARCHAR}
+            </if>
+            <if test="settlementReq.startCreateTime != null and settlementReq.startCreateTime != ''  and settlementReq.endCreateTime != null  and settlementReq.endCreateTime != ''">
+                and ksl.create_time between #{settlementReq.startCreateTime,jdbcType=TIMESTAMP} and #{settlementReq.endCreateTime,jdbcType=TIMESTAMP}
+            </if>
+            <if test="settlementReq.startReceiptTime != null and settlementReq.endReceiptTime != null">
+                and ksl.receipt_time between #{settlementReq.startReceiptTime,jdbcType=TIMESTAMP} and #{settlementReq.endReceiptTime,jdbcType=TIMESTAMP}
+            </if>
+            <if test="settlementReq.keywords != null and settlementReq.keywords != ''">
+                and (l.name like concat('%'
+                    , #{settlementReq.keywords,jdbcType=VARCHAR}
+                    , '%')
+                    or lu.firm_name like concat('%'
+                        , #{settlementReq.keywords,jdbcType=VARCHAR}
+                        , '%')
+                    or lu2.firm_name like concat('%'
+                        , #{settlementReq.keywords,jdbcType=VARCHAR}
+                        , '%')
+                    or ksl.sl_order_no like concat('%'
+                        , #{settlementReq.keywords,jdbcType=VARCHAR}
+                        , '%')
+                    )
+            </if>
+        </where>
+    </select>
     <!-- 根据结算物流订单id查详情   -->
     <select id="detail" parameterType="java.lang.Long"
             resultType="com.sckw.payment.model.dto.SettlementLogisticsDto">

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

@@ -1,9 +1,88 @@
 package com.sckw.product.controller.operation;
 
+import com.sckw.core.exception.BusinessException;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.product.model.GoodsListExport;
+import com.sckw.product.model.OperationGoodsListExport;
+import com.sckw.product.model.vo.req.ExportStatisticGoodsListParam;
+import com.sckw.product.model.vo.req.SelectGoodsListParam;
+import com.sckw.product.model.vo.req.SelectOperationGoodsListParam;
+import com.sckw.product.model.vo.req.StatisticGoodsListParam;
+import com.sckw.product.service.KwpGoodsService;
+import com.sckw.product.service.operation.GoodsManagerService;
+import com.sckw.product.service.KwpGoodsService;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
 /**
  * @desc: TODO
  * @author: yzc
  * @date: 2023-09-14 9:13
  */
+
+@RestController
+@RequestMapping(value = "/goodsManager")
+@RequiredArgsConstructor
 public class GoodsManagerController {
+
+    private final GoodsManagerService goodsManagerService;
+    private final KwpGoodsService kwpGoodsService;
+
+    /**
+     * @desc: 运营端分页查询商品
+     * @author: lt
+     * @date: 2023-09-14 09:43
+     * @Param param:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/select", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult select(@RequestBody SelectOperationGoodsListParam params) {
+        return HttpResult.ok(goodsManagerService.select(params));
+    }
+
+    /**
+     * @desc: 运营端商品详情
+     * @author: lt
+     * @date: 2023-09-14 09:43
+     * @Param param:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @GetMapping("/detail")
+    public HttpResult detail(@RequestParam Long id) {
+        return HttpResult.ok(goodsManagerService.getDetail(id));
+    }
+
+    /**
+     * @desc: 运营端商品数量统计
+     * @author: lt
+     * @date: 2023-09-14 09:43
+     * @Param param:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/statistic", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult statistic(@RequestBody SelectOperationGoodsListParam params) {
+        return HttpResult.ok(goodsManagerService.statistic(params));
+    }
+
+    /**
+     * @desc: 导出
+     * @author: lt
+     * @date: 2023-09-14 15:00
+     * @Param params:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@RequestBody ExportStatisticGoodsListParam params, HttpServletResponse response) {
+        List<OperationGoodsListExport> list = goodsManagerService.export(params);
+        if (CollectionUtils.isEmpty(list)) {
+            throw new BusinessException("导出数据为空!");
+        }
+        ExcelUtil.downData(response, OperationGoodsListExport.class, list);
+    }
 }

+ 97 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/OperationGoodsListExport.java

@@ -0,0 +1,97 @@
+package com.sckw.product.model;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.sckw.excel.annotation.ExcelContext;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @desc: 商品列表导出对象
+ * @author: yzc
+ * @date: 2023-07-06 9:15
+ */
+@Data
+@Accessors(chain = true)
+@ExcelContext(fileName = "商品列表信息", sheetName = "商品列表信息")
+public class OperationGoodsListExport{
+
+    @Serial
+    private static final long serialVersionUID = 6833195135537265912L;
+
+    @ExcelProperty(value = "序号" )
+    private String serialNumber;
+
+    @ExcelProperty(value = "上架状态")
+    private String statusLabel;
+
+    @ExcelProperty(value = "商品编号")
+    private String code;
+
+    @ExcelProperty(value = "商品名称")
+    private String name;
+
+    @ExcelProperty(value = "商品类别")
+    private String goodsTypeLabel;
+
+    @ExcelProperty(value = "计量单位")
+    private String unitLabel;
+
+    @ExcelProperty(value = "规格尺寸")
+    private String spec;
+
+    @ExcelProperty(value = "发票税率")
+    private String taxRateLabel;
+
+    @ExcelProperty(value = "库存数量")
+    private String amount;
+
+    @ExcelProperty(value = "是否预付限额")
+    private String prepaidLimitLabel;
+
+    @ExcelProperty(value = "预付款最低限额")
+    private String advancePrice;
+
+    @ExcelProperty(value = "最低单价")
+    private String highestPrice;
+
+    @ExcelProperty(value = "最高单价")
+    private String lowestPrice;
+
+    @ExcelProperty(value = "仓储地址")
+    private String address;
+
+    @ExcelProperty(value = "客户经理")
+    private String manageName;
+
+    @ExcelProperty(value = "联系电话")
+    private String phone;
+
+    @ExcelProperty(value = "上架时间")
+    private String addedTime;
+
+    @ExcelProperty(value = "下架时间")
+    private String shelfTime;
+
+    @ExcelProperty(value = "供应企业")
+    private String supplyEnt;
+
+    @ExcelProperty(value = "创建人")
+    private String createByName;
+
+    @ExcelProperty(value = "创建时间")
+    private String createTime;
+
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+
+
+
+
+
+
+}

+ 31 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/SelectOperationGoodsListParam.java

@@ -0,0 +1,31 @@
+package com.sckw.product.model.vo.req;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 分页查询运营端商品列表请求参数
+ * @author: lt
+ * @date: 2023-09-14 14:01
+ */
+@Getter
+@Setter
+@ToString
+public class SelectOperationGoodsListParam extends StatisticGoodsListParam {
+
+    /**
+     * 当前页码
+     */
+    private int page = 1;
+    /**
+     * 每页数量
+     */
+    private int pageSize = 10;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+}

+ 24 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/OperationGoodsDetail.java

@@ -0,0 +1,24 @@
+package com.sckw.product.model.vo.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @desc: 商品详情响应
+ * @author: yzc
+ * @date: 2023-07-05 11:49
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class OperationGoodsDetail extends GoodsDetail{
+
+}

+ 168 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/OperationGoodsList.java

@@ -0,0 +1,168 @@
+package com.sckw.product.model.vo.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @desc: 运营端商品列表
+ * @author: lt
+ * @date: 2023-09-14 11:54
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class OperationGoodsList{
+
+    /**
+     * 商品id
+     */
+    private Long id;
+
+    /**
+     * 商品编号
+     */
+    private Long code;
+
+
+    /**
+     * 状态:0草稿/1上架/2下架
+     */
+    private Integer status;
+
+    /**
+     * 状态label
+     */
+    private String statusLabel;
+
+    /**
+     * 商品名称
+     */
+    private String name;
+
+    /**
+     * 商品缩略图
+     */
+    private String thumb;
+
+    /**
+     * 商品类型
+     */
+    private String goodsType;
+
+    /**
+     * 商品类型Label
+     */
+    private String goodsTypeLabel;
+
+    /**
+     * 计量单位(吨、方、件、箱、其他)
+     */
+    private String unit;
+
+    /**
+     * 计量单位lab
+     */
+    private String unitLabel;
+
+    /**
+     * 尺寸大小
+     */
+    private String spec;
+
+    /**
+     * 发票税率(%)
+     */
+    private String taxRate;
+
+    /**
+     * 发票税率label
+     */
+    private String taxRateLabel;
+
+    /**
+     * 库存数量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 是否设置预付限额0否1是
+     */
+    private Integer prepaidLimit;
+
+    /**
+     * 是否设置预付限额label
+     */
+    private String prepaidLimitLabel;
+
+    /**
+     * 预付款最低限额
+     */
+    private BigDecimal advancePrice;
+
+    /**
+     * 最高单价
+     */
+    private BigDecimal highestPrice;
+
+    /**
+     * 最低单价
+     */
+    private BigDecimal lowestPrice;
+
+    /**
+     * 仓储地址
+     */
+    private String address;
+
+    /**
+     * 客户经理
+     */
+    private String manageName;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 上架时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date addedTime;
+
+    /**
+     * 下架时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date shelfTime;
+
+    /**
+     * 供应企业
+     */
+    private String supplyEnt;
+
+    /**
+     * 创建人
+     */
+    private String createByName;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 318 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/operation/GoodsManagerService.java

@@ -0,0 +1,318 @@
+package com.sckw.product.service.operation;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sckw.core.common.enums.enums.DictEnum;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
+import com.sckw.core.exception.BusinessException;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.page.PageResult;
+import com.sckw.core.model.vo.TableBottom;
+import com.sckw.core.model.vo.TableStatisticRes;
+import com.sckw.core.model.vo.TableTop;
+import com.sckw.core.utils.*;
+import com.sckw.excel.utils.DateUtil;
+import com.sckw.payment.api.dubbo.PayCenterDubboService;
+import com.sckw.product.dao.KwpGoodsMapper;
+import com.sckw.product.enums.GoodsStatusEnum;
+import com.sckw.product.model.*;
+import com.sckw.product.model.vo.req.*;
+import com.sckw.product.model.vo.res.*;
+import com.sckw.product.service.*;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.RemoteUserService;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.KwsUserResDto;
+import com.sckw.system.api.model.dto.res.SysDictResDto;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.stream.function.StreamBridge;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+/**
+ * @desc: 商品service
+ * @author: yzc
+ * @date: 2023-06-25 14:47
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class GoodsManagerService {
+
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteUserService remoteUserService;
+
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private PayCenterDubboService payCenterDubboService;
+
+    private final KwpGoodsMapper kwpGoodsMapper;
+    private final KwpGoodsAddressService kwpGoodsAddressService;
+    private final KwpGoodsAttributeService kwpGoodsAttributeService;
+    private final KwpGoodsImageService kwpGoodsImageService;
+    private final KwpGoodsPriceRangeService kwpGoodsPriceRangeService;
+    private final StreamBridge streamBridge;
+
+    @Value("${goods.url.list}")
+    private String goodsListUrl;
+
+
+    public PageResult select(SelectOperationGoodsListParam params) {
+        LambdaQueryWrapper<KwpGoods> wrapper = buildWrapper(BeanUtils.copyProperties(params, ExportStatisticGoodsListParam.class));
+        Page<KwpGoods> page = new Page<>(params.getPage(), params.getPageSize());
+        IPage<KwpGoods> goodsIpage = kwpGoodsMapper.selectPage(page, wrapper);
+        List<KwpGoods> list = goodsIpage.getRecords();
+        if (CollectionUtils.isEmpty(list)) {
+            return PageResult.build(params.getPage(), params.getPageSize(), goodsIpage.getTotal(), Collections.emptyList());
+        }
+        List<OperationGoodsList> result = buildGoodLists(list);
+        return PageResult.build(params.getPage(), params.getPageSize(), goodsIpage.getTotal(), result);
+    }
+
+
+    /**
+     * @desc: 构建查询条件
+     * @author: lt
+     * @date: 2023-09-14 10:14
+     * @Param list:
+     * @return: java.util.List<com.sckw.product.model.vo.res.GoodsList>
+     */
+    private LambdaQueryWrapper<KwpGoods> buildWrapper(ExportStatisticGoodsListParam params) {
+        LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
+        if (StringUtils.isNotBlank(params.getIds())) {
+            List<Long> ids = StringUtils.splitStrToList(params.getIds(), ",", Long.class);
+            wrapper.in(KwpGoods::getId, ids);
+        } else {
+            if (Objects.nonNull(params.getEndCreateTime())) {
+                wrapper.ge(KwpGoods::getCreateTime, params.getStartCreateTime());
+            }
+            if (Objects.nonNull(params.getEndCreateTime())) {
+                wrapper.le(KwpGoods::getCreateTime, params.getEndCreateTime());
+            }
+            //运营端不需要显示草稿数据
+            wrapper.ne(KwpGoods::getStatus, 0);
+            wrapper.eq(Objects.nonNull(params.getSupplyEntId()), KwpGoods::getSupplyEntId, params.getSupplyEntId())
+                    .eq(Objects.nonNull(params.getPrepaidLimit()), KwpGoods::getPrepaidLimit, params.getPrepaidLimit())
+                    .eq(Objects.nonNull(params.getStatus()), KwpGoods::getStatus, params.getStatus());
+            if (StringUtils.isNotBlank(params.getGoodsType()) && StringUtils.isNotBlank(params.getGoodsTypeValue())) {
+                List<SysDictResDto> goodsTypeList = remoteSystemService.queryDictBottom(params.getGoodsType(), params.getGoodsTypeValue());
+                if (CollectionUtils.isNotEmpty(goodsTypeList)) {
+                    List<String> goodsTypes = goodsTypeList.stream().map(SysDictResDto::getValue).toList();
+                    wrapper.in(KwpGoods::getGoodsType, goodsTypes);
+                }
+            }
+            String keywords = params.getKeywords();
+            if (StringUtils.isNotBlank(keywords)) {
+                //模糊匹配商品名称、仓储地址、客户经理
+                List<KwsUserResDto> managers = remoteUserService.getUserByName(keywords);
+                if (CollectionUtils.isEmpty(managers)) {
+                    wrapper.and(e -> e.like(KwpGoods::getName, keywords).or().like(KwpGoods::getAddressName, keywords));
+                } else {
+                    List<Long> managerIds = managers.stream().map(KwsUserResDto::getId).toList();
+                    wrapper.and(e -> e.like(KwpGoods::getName, keywords).or().like(KwpGoods::getAddressName, keywords)
+                            .or().in(KwpGoods::getManager, managerIds));
+                }
+            }
+        }
+        wrapper.eq(KwpGoods::getDelFlag, Global.NO).orderByDesc(KwpGoods::getCreateTime);
+        return wrapper;
+    }
+
+    /**
+     * @desc: 构建商品列表
+     * @author: lt
+     * @date: 2023-09-14 10:14
+     * @Param list:
+     * @return: java.util.List<com.sckw.product.model.vo.res.GoodsList>
+     */
+    private List<OperationGoodsList> buildGoodLists(List<KwpGoods> list) {
+        List<OperationGoodsList> result = new ArrayList<>(list.size());
+        List<Long> goodsIds = new ArrayList<>(list.size());
+        List<Long> supplyEntIds = new ArrayList<>(list.size());
+        List<Long> userIds = new ArrayList<>();
+        list.forEach(e -> {
+            goodsIds.add(e.getId());
+            if (Objects.nonNull(e.getSupplyEntId())) {
+                supplyEntIds.add(e.getSupplyEntId());
+            }
+            if (Objects.nonNull(e.getManager())) {
+                userIds.add(e.getManager());
+            }
+            if (Objects.nonNull(e.getCreateBy())) {
+                userIds.add(e.getCreateBy());
+            }
+        });
+        //地址信息
+        Map<Long, String> addressMap = kwpGoodsAddressService.getByGoodsIds(goodsIds).stream()
+                .collect(Collectors.toMap(KwpGoodsAddress::getGoodsId, KwpGoodsAddress::getName, (k1, k2) -> k1));
+        //价格梯度信息
+        Map<Long, List<KwpGoodsPriceRange>> priceRangeMap = kwpGoodsPriceRangeService.getByGoodsIds(goodsIds).stream()
+                .collect(Collectors.groupingBy(KwpGoodsPriceRange::getGoodsId));
+        //用户信息
+        Map<Long, UserCacheResDto> userMap = remoteSystemService.queryUserCacheMapByIds(userIds);
+        //供应企业信息
+        List<EntCacheResDto> entList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(supplyEntIds)) {
+            entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
+        }
+        Map<Long, String> entMap = entList.stream().collect(Collectors.toMap(EntCacheResDto::getId, EntCacheResDto::getFirmName, (k1, k2) -> k1));
+        list.forEach(e -> {
+            Long id = e.getId();
+            OperationGoodsList operationGoodsList = BeanUtils.copyProperties(e, OperationGoodsList.class);
+            UserCacheResDto manager = userMap.get(e.getManager());
+            UserCacheResDto createUser = userMap.get(e.getCreateBy());
+            operationGoodsList.setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(operationGoodsList.getStatus())))
+                    .setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), operationGoodsList.getGoodsType()))
+                    .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), operationGoodsList.getUnit()))
+                    .setTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), operationGoodsList.getTaxRate()))
+                    .setPrepaidLimitLabel(Objects.equals(e.getPrepaidLimit(), 1) ? "是" : "否")
+                    .setAddress(addressMap.get(id)).setSupplyEnt(entMap.get(e.getSupplyEntId()))
+                    .setManageName(Objects.nonNull(manager) ? manager.getName() : null)
+                    .setPhone(Objects.nonNull(manager) ? manager.getPhone() : null)
+                    .setCreateByName(Objects.nonNull(createUser) ? createUser.getName() : null);
+            List<KwpGoodsPriceRange> priceRanges = priceRangeMap.get(id);
+            if (CollectionUtils.isNotEmpty(priceRanges)) {
+                operationGoodsList.setHighestPrice(priceRanges.get(priceRanges.size() - 1).getPrice()).setLowestPrice(priceRanges.get(0).getPrice());
+            }
+            result.add(operationGoodsList);
+        });
+        return result;
+    }
+
+    /**
+     * @desc: 获取商品详情
+     * @author: lt
+     * @date: 2023-09-14 14:20
+     * @Param id:
+     * @return: com.sckw.product.model.vo.res.GoodsDetail
+     */
+    public OperationGoodsDetail getDetail(Long id) {
+        KwpGoods goods = kwpGoodsMapper.selectById(id);
+        if (Objects.isNull(goods)) {
+            throw new BusinessException("当前商品不存在!");
+        }
+        OperationGoodsDetail detail = BeanUtils.copyProperties(goods, OperationGoodsDetail.class);
+        Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntCacheMapByIds(Arrays.asList(detail.getEntId(), detail.getSupplyEntId()));
+        EntCacheResDto ent = entMap.get(detail.getEntId());
+        if (Objects.nonNull(ent)) {
+            detail.setEnt(ent.getFirmName()).setEntHead(ent.getHead())
+                    .setEntBusiness(ent.getBusiness()).setEntAddress(ent.getCityName());
+        }
+        EntCacheResDto supplyEnt = entMap.get(detail.getSupplyEntId());
+        if (Objects.nonNull(supplyEnt)) {
+            detail.setSupplyEnt(supplyEnt.getFirmName());
+        }
+        UserCacheResDto managerInfo = remoteSystemService.queryUserCacheById(detail.getManager());
+        if (Objects.nonNull(managerInfo)) {
+            detail.setManagerName(managerInfo.getName()).setManagerPhone(managerInfo.getPhone());
+        }
+        detail.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), detail.getGoodsType()))
+                .setUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), detail.getUnit()))
+                .setTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), detail.getTaxRate()))
+                .setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(detail.getStatus())))
+                .setPrepaidLimitLabel(Objects.equals(detail.getPrepaidLimit(), 1) ? "是" : "否");
+        //商品图片信息
+        List<KwpGoodsImage> goodsImages = kwpGoodsImageService.getByGoodsId(id);
+        List<GoodsImagesDetail> images = BeanUtils.copyToList(goodsImages, GoodsImagesDetail.class);
+        //商品价格段信息
+        List<KwpGoodsPriceRange> priceRanges = kwpGoodsPriceRangeService.getByGoodsId(id);
+        List<GoodsPriceRangesDetail> ranges = BeanUtils.copyToList(priceRanges, GoodsPriceRangesDetail.class);
+        ranges.stream().filter(r -> r.getEndAmount().compareTo(new BigDecimal("-1.00")) == 0)
+                .forEach(r -> {
+                    r.setEndAmountLabel("不限");
+                });
+        //商品属性信息
+        List<KwpGoodsAttribute> attributesList = kwpGoodsAttributeService.getByGoodsId(id);
+        List<GoodsAttributesDetail> attributes = BeanUtils.copyToList(attributesList, GoodsAttributesDetail.class);
+        //商品地址信息
+        KwpGoodsAddress goodsAddress = kwpGoodsAddressService.getByGoodsId(id);
+        AddressInfoDetail addressInfo = BeanUtils.copyProperties(goodsAddress, AddressInfoDetail.class);
+        if (Objects.nonNull(addressInfo)) {
+            addressInfo.setTypeName(DictEnum.getLabel(DictTypeEnum.ADDRESS_TYPE.getType(), addressInfo.getType()));
+        }
+        detail.setImages(images).setPriceRanges(ranges).setAttributes(attributes).setAddressInfo(addressInfo);
+
+        return detail;
+    }
+
+    /**
+     * @desc: 统计查询
+     * @author: lt
+     * @date: 2023-09-14 14:44
+     * @Param params:
+     * @return: com.sckw.core.model.vo.TableStatisticRes
+     */
+    public TableStatisticRes statistic(SelectOperationGoodsListParam params) {
+        TableStatisticRes res = new TableStatisticRes();
+        LambdaQueryWrapper<KwpGoods> wrapper = buildWrapper(BeanUtils.copyProperties(params, ExportStatisticGoodsListParam.class));
+        List<KwpGoods> goodsList = kwpGoodsMapper.selectList(wrapper);
+        Map<Integer, List<KwpGoods>> map = goodsList.stream().collect(Collectors.groupingBy(KwpGoods::getStatus));
+        List<TableTop> tableTops = new ArrayList<>();
+        TableTop all = new TableTop();
+        all.setName("全部").setTotal(CollectionUtils.isEmpty(goodsList) ? 0 : goodsList.size());
+        tableTops.add(all);
+        GoodsStatusEnum.getSortList().forEach(e -> {
+            List<KwpGoods> list = map.get(e.getCode());
+            int total = CollectionUtils.isEmpty(list) ? 0 : list.size();
+            TableTop tableTop = new TableTop();
+            tableTop.setName(e.getMsg()).setValue(e.getCode()).setTotal(total);
+            tableTops.add(tableTop);
+        });
+        TableBottom tableBottom = new TableBottom();
+        tableBottom.setTotal(CollectionUtils.isEmpty(goodsList) ? 0 : goodsList.size());
+        List<TableTop> filteredTableTops = tableTops.stream()
+                .filter(tableTop -> !tableTop.getName().equals("已保存"))
+                .collect(Collectors.toList());
+        res.setTableTops(filteredTableTops).setTableBottom(tableBottom);
+        return res;
+    }
+
+    /**
+     * @desc: 导出
+     * @author: lt
+     * @date: 2023-09-14 17:56
+     * @Param params:
+     * @return: void
+     */
+    public List<OperationGoodsListExport> export(ExportStatisticGoodsListParam params) {
+        LambdaQueryWrapper<KwpGoods> wrapper = buildWrapper(params);
+        List<KwpGoods> list = kwpGoodsMapper.selectList(wrapper);
+        List<OperationGoodsList> goodsLists = buildGoodLists(list);
+        if (CollectionUtils.isEmpty(goodsLists)) {
+            return Collections.emptyList();
+        }
+        List<OperationGoodsListExport> result = new ArrayList<>();
+        AtomicInteger i = new AtomicInteger(1);
+        goodsLists.forEach(e -> {
+            OperationGoodsListExport export = BeanUtils.copyProperties(e, OperationGoodsListExport.class);
+            export.setSerialNumber(String.valueOf(i.getAndIncrement()))
+                    .setAmount(Objects.isNull(e.getAmount()) ? null : String.valueOf(e.getAmount()))
+                    .setHighestPrice(Objects.isNull(e.getHighestPrice()) ? null : String.valueOf(e.getHighestPrice()))
+                    .setLowestPrice(Objects.isNull(e.getLowestPrice()) ? null : String.valueOf(e.getLowestPrice()))
+                    .setAddedTime(Objects.isNull(e.getAddedTime()) ? null : DateUtil.getDateTime(e.getAddedTime()))
+                    .setShelfTime(Objects.isNull(e.getShelfTime()) ? null : DateUtil.getDateTime(e.getShelfTime()))
+                    .setCreateTime(Objects.isNull(e.getCreateTime()) ? null : DateUtil.getDateTime(e.getCreateTime()));
+            result.add(export);
+        });
+        return result;
+    }
+
+
+
+
+
+
+
+
+}

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

@@ -0,0 +1,87 @@
+package com.sckw.report.controller.operator;
+
+import com.sckw.core.exception.BusinessException;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.report.model.vo.OperatorTOrderContractParam;
+import com.sckw.report.model.vo.OperatorTOrderExportQueryVO;
+import com.sckw.report.model.vo.OperatorTOrderListQueryVO;
+import com.sckw.report.model.vo.OperatorTOrderStsQueryVO;
+import com.sckw.report.service.operator.TradeOrderManageService;
+import com.sckw.report.service.param.TradeOrderListExport;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.AllArgsConstructor;
+import org.springframework.http.MediaType;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @desc: 运营端贸易订单管理相关接口
+ * @author: yzc
+ * @date: 2023-09-14 11:21
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("/kwOrderManage")
+public class TradeOrderManageController {
+
+    private final TradeOrderManageService tradeOrderManageService;
+
+
+    /**
+     * @desc: 贸易订单列表分页查询
+     * @author: yzc
+     * @date: 2023-07-17 10:29
+     * @Param params:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/listPaging", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult listPaging(@RequestBody @Validated OperatorTOrderListQueryVO params) {
+        return HttpResult.ok(tradeOrderManageService.listPaging(params));
+    }
+
+    /**
+     * @desc: 贸易订单列表统计查询
+     * @author: yzc
+     * @date: 2023-07-17 10:29
+     * @Param params:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/listStatistic", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult listStatistic(@RequestBody @Validated OperatorTOrderStsQueryVO params) {
+        return HttpResult.ok(tradeOrderManageService.listStatistic(params));
+    }
+
+    /**
+     * @desc: 贸易订单列表导出
+     * @author: yzc
+     * @date: 2023-09-14 14:40
+     * @Param params:
+     * @Param response:
+     * @return: void
+     */
+    @PostMapping(value = "/listExport", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void listExport(@RequestBody @Validated OperatorTOrderExportQueryVO params, HttpServletResponse response) {
+        List<TradeOrderListExport> list = tradeOrderManageService.export(params);
+        if (CollectionUtils.isEmpty(list)) {
+            throw new BusinessException("导出数据为空!");
+        }
+        ExcelUtil.downData(response, TradeOrderListExport.class, list);
+    }
+
+    /**
+     * @desc: 合同关联订单列表
+     * @author: yzc
+     * @date: 2023-09-14 14:51
+     * @Param params:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/contractAssociationList", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult contractAssociationList(@RequestBody @Validated OperatorTOrderContractParam params) {
+        return HttpResult.ok(tradeOrderManageService.contractAssociationList(params));
+    }
+
+}

+ 86 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/dto/OperatorTOrderListStsConditionDTO.java

@@ -0,0 +1,86 @@
+package com.sckw.report.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @desc: 运营端贸易订单列表统计查询条件dto
+ * @author: yzc
+ * @date: 2023-09-14 11:33
+ */
+@Getter
+@Setter
+@ToString
+public class OperatorTOrderListStsConditionDTO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1352493248166762988L;
+
+
+    /**
+     * 订单编号、单位、商品名称(模糊匹配共用)
+     */
+    private String keywords;
+    /**
+     * 创建时间开始(yyyy-MM-dd HH:mm:ss)
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startCreateTime;
+
+    /**
+     * 创建时间结束(yyyy-MM-dd HH:mm:ss)
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endCreateTime;
+
+    /**
+     * 装货地址code
+     */
+    private String shippingAddressCode;
+
+    /**
+     * 装货地址等级
+     */
+    private Integer shippingAddressLevel;
+
+    /**
+     * 装货地址code
+     */
+    private String unloadingAddressCode;
+
+    /**
+     * 卸货地址等级
+     */
+    private Integer unloadingAddressLevel;
+
+    /**
+     * 交易方式(预付款、货到付款)
+     */
+    private String trading;
+
+    /**
+     * 提货方式(采方自提、供应配送)
+     */
+    private String pickupType;
+
+    /**
+     * 交付类型(签发交付、签收交付)
+     */
+    private String deliveryType;
+
+    /**
+     * 下单方式(1采购下单/2代客下单)
+     */
+    private String source;
+
+    /**
+     * 订单状态
+     */
+    private Integer status;
+
+}

+ 22 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/OperatorTOrderContractParam.java

@@ -0,0 +1,22 @@
+package com.sckw.report.model.vo;
+
+import com.sckw.core.model.page.PageRequest;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 合同关联订单列表请求参数
+ * @author: yzc
+ * @date: 2023-07-27 16:48
+ */
+@Getter
+@Setter
+@ToString
+public class OperatorTOrderContractParam extends PageRequest {
+
+    @NotBlank(message = "合同ids不能为空")
+    private String contractIds;
+
+}

+ 35 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/OperatorTOrderExportQueryVO.java

@@ -0,0 +1,35 @@
+package com.sckw.report.model.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import org.hibernate.validator.constraints.Range;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @desc: 运营端贸易订单列表导出查询参数vo
+ * @author: yzc
+ * @date: 2023-09-14 11:33
+ */
+@Getter
+@Setter
+@ToString
+public class OperatorTOrderExportQueryVO extends OperatorTOrderStsQueryVO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3904961009951552659L;
+
+    /**
+     * 订单状态
+     */
+    @Range(min = 1, max = 7, message = "非法订单状态")
+    private Integer status;
+
+    /**
+     * 订单ids
+     */
+    private String ids;
+
+}

+ 39 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/OperatorTOrderListQueryVO.java

@@ -0,0 +1,39 @@
+package com.sckw.report.model.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import org.hibernate.validator.constraints.Range;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @desc: 运营端贸易订单列表分页查询参数vo
+ * @author: yzc
+ * @date: 2023-09-14 11:33
+ */
+@Getter
+@Setter
+@ToString
+public class OperatorTOrderListQueryVO extends OperatorTOrderStsQueryVO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3904961009951552659L;
+
+    /**
+     * 当前页码
+     */
+    private int page = 1;
+    /**
+     * 每页数量
+     */
+    private int pageSize = 10;
+
+    /**
+     * 订单状态
+     */
+    @Range(min = 1, max = 7, message = "非法订单状态")
+    private Integer status;
+
+}

+ 81 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/OperatorTOrderStsQueryVO.java

@@ -0,0 +1,81 @@
+package com.sckw.report.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @desc: 运营端贸易订单统计查询参数vo
+ * @author: yzc
+ * @date: 2023-09-14 11:33
+ */
+@Getter
+@Setter
+@ToString
+public class OperatorTOrderStsQueryVO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1352493248166762988L;
+
+
+    /**
+     * 订单编号、单位、商品名称(模糊匹配共用)
+     */
+    private String keywords;
+    /**
+     * 创建时间开始(yyyy-MM-dd HH:mm:ss)
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startCreateTime;
+
+    /**
+     * 创建时间结束(yyyy-MM-dd HH:mm:ss)
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endCreateTime;
+
+    /**
+     * 装货地址code
+     */
+    private String shippingAddressCode;
+
+    /**
+     * 装货地址等级
+     */
+    private Integer shippingAddressLevel;
+
+    /**
+     * 装货地址code
+     */
+    private String unloadingAddressCode;
+
+    /**
+     * 卸货地址等级
+     */
+    private Integer unloadingAddressLevel;
+
+    /**
+     * 交易方式(预付款、货到付款)
+     */
+    private String trading;
+
+    /**
+     * 提货方式(采方自提、供应配送)
+     */
+    private String pickupType;
+
+    /**
+     * 交付类型(签发交付、签收交付)
+     */
+    private String deliveryType;
+
+    /**
+     * 下单方式(1采购下单/2代客下单)
+     */
+    private String source;
+
+}

+ 43 - 9
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -81,7 +81,7 @@ public class KwOrderService {
      * @Param pageSize:
      * @return: com.sckw.core.model.page.PageResult
      */
-    private PageResult getResult(Criteria criteria, int page, int pageSize) {
+    public PageResult getResult(Criteria criteria, Integer page, Integer pageSize) {
         Query query = new Query();
         query.addCriteria(criteria);
         long count = mongoTemplate.count(query, SckwTradeOrder.class);
@@ -254,8 +254,20 @@ public class KwOrderService {
      * @return: com.sckw.core.model.vo.TableStatisticRes
      */
     public TableStatisticRes tradeOrderStatistic(TradeOrderListStatisticParam params) {
-        TableStatisticRes res = new TableStatisticRes();
         Criteria criteria = buildCriteria(params, true);
+        return getTableStatistic(criteria, DictEnum.getEnumsByType(DictTypeEnum.TORDER_STATUS.getType()));
+    }
+
+    /**
+     * @desc: 列表统计
+     * @author: yzc
+     * @date: 2023-09-14 14:18
+     * @Param criteria:
+     * @Param enums:
+     * @return: com.sckw.core.model.vo.TableStatisticRes
+     */
+    public TableStatisticRes getTableStatistic(Criteria criteria, List<DictEnum> enums) {
+        TableStatisticRes res = new TableStatisticRes();
         Aggregation aggregation = Aggregation.newAggregation(
                 Aggregation.match(criteria),
                 Aggregation.group("status").count().as("total"),
@@ -270,9 +282,8 @@ public class KwOrderService {
                     (TableTop::getValue, TableTop::getTotal, (k1, k2) -> k2));
         }
         List<TableTop> list = new ArrayList<>();
-        List<DictEnum> tOrderStatusEnums = DictEnum.getEnumsByType(DictTypeEnum.TORDER_STATUS.getType());
         int count = 0;
-        for (DictEnum e : tOrderStatusEnums) {
+        for (DictEnum e : enums) {
             Integer value = Integer.valueOf(e.getValue());
             int total = Objects.isNull(map.get(value)) ? 0 : map.get(value);
             TableTop tableTop = new TableTop();
@@ -282,7 +293,7 @@ public class KwOrderService {
         }
         TableTop all = new TableTop();
         all.setName("全部").setTotal(count);
-        list.add(all);
+        list.add(0, all);
         TableBottom tableBottom = new TableBottom();
         tableBottom.setTotal(count);
         res.setTableTops(list).setTableBottom(tableBottom);
@@ -334,7 +345,6 @@ public class KwOrderService {
      * @Param params:
      * @return: java.util.List<com.sckw.report.service.param.TradeOrderListExport>
      */
-
     public List<TradeOrderListExport> export(TradeOrderListExportParam params) {
         Query query = new Query();
         if (StringUtils.isNotBlank(params.getIds())) {
@@ -348,6 +358,17 @@ public class KwOrderService {
             query.addCriteria(buildCriteria(params, false));
         }
         query.with(Sort.by(Sort.Order.desc("createTime")));
+        return getExportResult(query);
+    }
+
+    /**
+     * @desc: 获取导出结果
+     * @author: yzc
+     * @date: 2023-09-14 14:41
+     * @Param query:
+     * @return: java.util.List<com.sckw.report.service.param.TradeOrderListExport>
+     */
+    public List<TradeOrderListExport> getExportResult(Query query) {
         List<SckwTradeOrder> orders = mongoTemplate.find(query, SckwTradeOrder.class);
         if (CollectionUtils.isEmpty(orders)) {
             return Collections.emptyList();
@@ -438,15 +459,28 @@ public class KwOrderService {
      */
     public PageResult tradeOrderContractList(TradeOrderContractParam params) {
         Long entId = LoginUserHolder.getEntId();
-        Query query = new Query();
         Criteria criteria = new Criteria();
         String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
         List<Long> ids = StringUtils.splitStrToList(params.getContractIds(), ",", Long.class);
         criteria.and("contractId").in(ids).and(topEnt).is(entId).and("delFlag").is(0);
+        return getContractResult(criteria, params.getPage(), params.getPageSize());
+    }
+
+    /**
+     * @desc: 获取关联合同结果
+     * @author: yzc
+     * @date: 2023-09-14 14:58
+     * @Param criteria:
+     * @Param page:
+     * @Param pageSize:
+     * @return: com.sckw.core.model.page.PageResult
+     */
+    public PageResult getContractResult(Criteria criteria, Integer page, Integer pageSize) {
+        Query query = new Query();
         query.addCriteria(criteria);
         long count = mongoTemplate.count(query, SckwTradeOrder.class);
         Sort sort = Sort.by(Sort.Direction.DESC, "contractId", "createTime");
-        SpringDataPageAble pageAble = new SpringDataPageAble(params.getPage(), params.getPageSize(), sort);
+        SpringDataPageAble pageAble = new SpringDataPageAble(page, pageSize, sort);
         query.with(pageAble);
         List<SckwTradeOrder> list = mongoTemplate.find(query, SckwTradeOrder.class);
         List<OrderListRes> result = new ArrayList<>();
@@ -469,6 +503,6 @@ public class KwOrderService {
                     .setSourceLabel(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()));
             result.add(order);
         });
-        return PageResult.build(params.getPage(), params.getPageSize(), count, result);
+        return PageResult.build(page, pageSize, count, result);
     }
 }

+ 174 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/operator/TradeOrderManageService.java

@@ -0,0 +1,174 @@
+package com.sckw.report.service.operator;
+
+import com.sckw.core.common.enums.enums.DictEnum;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
+import com.sckw.core.model.page.PageResult;
+import com.sckw.core.model.vo.TableStatisticRes;
+import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.StringUtils;
+import com.sckw.report.model.dto.OperatorTOrderListStsConditionDTO;
+import com.sckw.report.model.vo.OperatorTOrderContractParam;
+import com.sckw.report.model.vo.OperatorTOrderExportQueryVO;
+import com.sckw.report.model.vo.OperatorTOrderListQueryVO;
+import com.sckw.report.model.vo.OperatorTOrderStsQueryVO;
+import com.sckw.report.service.KwOrderService;
+import com.sckw.report.service.param.TradeOrderListExport;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.regex.Pattern;
+
+/**
+ * @desc: 运营端贸易订单管理相关service
+ * @author: yzc
+ * @date: 2023-09-14 11:23
+ */
+@Service
+@Slf4j
+@AllArgsConstructor
+public class TradeOrderManageService {
+
+    private final KwOrderService kwOrderService;
+
+
+    /**
+     * @desc: 贸易订单列表分页查询
+     * @author: yzc
+     * @date: 2023-09-14 14:24
+     * @Param params:
+     * @return: com.sckw.core.model.page.PageResult
+     */
+    public PageResult listPaging(OperatorTOrderListQueryVO params) {
+        Criteria criteria = buildCriteria(BeanUtils.copyProperties(params, OperatorTOrderListStsConditionDTO.class), false);
+        return kwOrderService.getResult(criteria, params.getPage(), params.getPageSize());
+    }
+
+    /**
+     * @desc: 贸易订单列表统计查询
+     * @author: yzc
+     * @date: 2023-09-14 14:22
+     * @Param params:
+     * @return: com.sckw.core.model.vo.TableStatisticRes
+     */
+    public TableStatisticRes listStatistic(OperatorTOrderStsQueryVO params) {
+        Criteria criteria = buildCriteria(BeanUtils.copyProperties(params, OperatorTOrderListStsConditionDTO.class), true);
+        List<DictEnum> enums = DictEnum.getEnumsByType(DictTypeEnum.TORDER_STATUS.getType());
+        enums.remove(0);
+        return kwOrderService.getTableStatistic(criteria, enums);
+    }
+
+    /**
+     * @desc: 贸易订单列表导出
+     * @author: yzc
+     * @date: 2023-09-14 14:40
+     * @Param params:
+     * @return: java.util.List<com.sckw.report.service.param.TradeOrderListExport>
+     */
+    public List<TradeOrderListExport> export(OperatorTOrderExportQueryVO params) {
+        Query query = new Query();
+        if (StringUtils.isNotBlank(params.getIds())) {
+            List<Long> ids = StringUtils.splitStrToList(params.getIds(), ",", Long.class);
+            Criteria criteria = new Criteria();
+            criteria.and("_id").in(ids).and("delFlag").is(0);
+            query.addCriteria(criteria);
+        } else {
+            query.addCriteria(buildCriteria(BeanUtils.copyProperties(params, OperatorTOrderListStsConditionDTO.class), false));
+        }
+        query.with(Sort.by(Sort.Order.desc("createTime")));
+        return kwOrderService.getExportResult(query);
+    }
+
+    /**
+     * @desc: 构建Criteria
+     * @author: yzc
+     * @date: 2023-09-14 14:25
+     * @Param params:
+     * @Param isStatistic:
+     * @return: org.springframework.data.mongodb.core.query.Criteria
+     */
+    private Criteria buildCriteria(OperatorTOrderListStsConditionDTO params, boolean isStatistic) {
+        Criteria condition = new Criteria();
+        condition.and("delFlag").is(0);
+        //状态
+        if (!isStatistic && Objects.nonNull(params.getStatus())) {
+            condition.and("status").is(params.getStatus());
+        } else {
+            condition.and("status").ne(0);
+        }
+        //装货地址
+        String loadCode = params.getShippingAddressCode();
+        if (StringUtils.isNotBlank(loadCode)) {
+            switch (params.getShippingAddressLevel()) {
+                case 1 -> condition.and("loadCityCode")
+                        .regex(Pattern.compile("^" + loadCode.substring(0, 2) + ".*$", Pattern.CASE_INSENSITIVE));
+                case 2 -> condition.and("loadCityCode")
+                        .regex(Pattern.compile("^" + loadCode.substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE));
+                case 3 -> condition.and("loadCityCode").is(loadCode);
+            }
+        }
+        //卸货地址
+        String unloadCode = params.getUnloadingAddressCode();
+        if (StringUtils.isNotBlank(unloadCode)) {
+            switch (params.getUnloadingAddressLevel()) {
+                case 1 -> condition.and("unloadCityCode")
+                        .regex(Pattern.compile("^" + unloadCode.substring(0, 2) + ".*$", Pattern.CASE_INSENSITIVE));
+                case 2 -> condition.and("unloadCityCode")
+                        .regex(Pattern.compile("^" + unloadCode.substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE));
+                case 3 -> condition.and("unloadCityCode").is(unloadCode);
+            }
+        }
+        //提货方式
+        if (StringUtils.isNotBlank(params.getPickupType())) {
+            condition.and("pickupType").is(params.getPickupType());
+        }
+        //交易方式
+        if (StringUtils.isNotBlank(params.getTrading())) {
+            condition.and("trading").is(params.getTrading());
+        }
+        //交付类型
+        if (StringUtils.isNotBlank(params.getDeliveryType())) {
+            condition.and("deliveryType").is(params.getDeliveryType());
+        }
+        //下单方式
+        if (StringUtils.isNotBlank(params.getSource())) {
+            condition.and("source").is(params.getSource());
+        }
+        //日期范围
+        if (Objects.nonNull(params.getStartCreateTime()) && Objects.nonNull(params.getEndCreateTime())) {
+            condition.and("createTime").gte(params.getStartCreateTime()).lte(params.getEndCreateTime());
+        } else if (Objects.nonNull(params.getStartCreateTime())) {
+            condition.and("createTime").gte(params.getStartCreateTime());
+        } else if (Objects.nonNull(params.getEndCreateTime())) {
+            condition.and("createTime").lte(params.getEndCreateTime());
+        }
+        //关键字模糊匹配
+        if (StringUtils.isNotBlank(params.getKeywords())) {
+            Pattern pattern = Pattern.compile("^.*" + params.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+            Criteria keywordsMatch = new Criteria().orOperator(
+                    Criteria.where("tOrderNo").regex(pattern), Criteria.where("procureFirmName").regex(pattern),
+                    Criteria.where("supplyFirmName").regex(pattern), Criteria.where("goodsName").regex(pattern));
+            condition.andOperator(keywordsMatch);
+        }
+        return condition;
+    }
+
+    /**
+     * @desc: 合同关联订单列表
+     * @author: yzc
+     * @date: 2023-09-14 14:52
+     * @Param params:
+     * @return: com.sckw.core.model.page.PageResult
+     */
+    public PageResult contractAssociationList(OperatorTOrderContractParam params) {
+        Criteria criteria = new Criteria();
+        List<Long> ids = StringUtils.splitStrToList(params.getContractIds(), ",", Long.class);
+        criteria.and("contractId").in(ids).and("delFlag").is(0);
+        return kwOrderService.getContractResult(criteria, params.getPage(), params.getPageSize());
+    }
+}

+ 4 - 0
sckw-modules/sckw-system/pom.xml

@@ -71,6 +71,10 @@
             <groupId>com.sckw</groupId>
             <artifactId>sckw-transport-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-excel</artifactId>
+        </dependency>
 
     </dependencies>
     <build>

+ 12 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java

@@ -261,4 +261,16 @@ public class KwsEnterpriseController {
         return HttpResult.ok(kwsEntService.queryOtherEnt(reqVo.getId()));
     }
 
+    /**
+     * @param reqVo 查询
+     * @return  HttpResult
+     * @desc: 客户列表分组个数
+     * @author: czh
+     * @date: 2023/9/14
+     */
+    @PostMapping("queryCustomerGroup")
+    public HttpResult queryCustomer(@RequestBody EntFindPageReqVo reqVo) {
+        return HttpResult.ok(kwsEntService.queryCustomerGroup(reqVo));
+    }
+
 }

+ 8 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsRoleController.java

@@ -6,8 +6,10 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.system.model.vo.req.EditRoleReqVo;
 import com.sckw.system.model.vo.req.UserBindRoleReqVo;
 import com.sckw.system.service.KwsRoleService;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import java.util.HashMap;
 
@@ -98,4 +100,10 @@ public class KwsRoleController {
         kwsRoleService.userBindRole(reqVo);
         return HttpResult.ok(HttpStatus.MSG_010);
     }
+
+    @PostMapping(value = "export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@RequestBody HashMap params, HttpServletResponse response) {
+        kwsRoleService.export(params, response);
+    }
+
 }

+ 17 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsUserController.java

@@ -20,8 +20,10 @@ import com.sckw.system.model.vo.req.ResetPasswordReqVo;
 import com.sckw.system.model.vo.req.UserAddReqVo;
 import com.sckw.system.model.vo.res.KwsUserResVo;
 import com.sckw.system.service.KwsUserService;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
@@ -63,7 +65,6 @@ public class KwsUserController {
     public HttpResult findPage(@RequestBody HashMap params) {
         // 设置分页参数
         PageHelper.startPage(PageResult.getPage(params), PageResult.getPageSize(params));
-        params.put("entId", LoginUserHolder.getEntId());
         List<KwsUserResVo> list = kwsUserService.findPage(params);
         PageResult pageResult = PageHelperUtil.getPageResult(new PageInfo<>(list));
         return HttpResult.ok(pageResult);
@@ -88,6 +89,7 @@ public class KwsUserController {
      * @date: 2023/6/14
      */
     @PostMapping("/add")
+    @RepeatSubmit(interval = 3000,message ="两次请求间隔未超过3秒")
     public HttpResult add(@Valid @RequestBody UserAddReqVo reqVo) {
         kwsUserService.add(reqVo);
         return HttpResult.ok(HttpStatus.MSG_003);
@@ -207,6 +209,20 @@ public class KwsUserController {
         return HttpResult.ok(HttpStatus.MSG_005);
     }
 
+
+    /**
+     * @param reqVo 查询入参
+     * @desc: 导出
+     * @author: czh
+     * @date: 2023/7/11
+     */
+    @PostMapping(value = "export", produces = MediaType.APPLICATION_JSON_VALUE)
+    public void export(@RequestBody HashMap params, HttpServletResponse response) {
+        kwsUserService.export(params, response);
+    }
+
+
+
     @PostMapping("testEdit")
     public HttpResult testEdit(@RequestParam String type) {
         return HttpResult.ok(kwsUserService.test(Arrays.stream(type.split(",")).map(Integer::parseInt).toList()));

+ 3 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteBaseService.java

@@ -236,6 +236,9 @@ public class RemoteBaseService {
      */
     public KwsUser queryManageByEntId(Long entId) {
         FindManagePojo manageInfoByEntId = kwsEnterpriseDao.findManageInfoByEntId(entId);
+        if (Objects.isNull(manageInfoByEntId)) {
+            return null;
+        }
         return kwsUserService.selectByKey(manageInfoByEntId.getUserId());
     }
 }

+ 11 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/pojo/FindEntListPojo.java

@@ -202,4 +202,15 @@ public class FindEntListPojo {
      * 状态中文
      */
     private String statusName;
+
+    /**
+     * 母企业id
+     */
+    private Long pid;
+
+    /**
+     * 母企业名
+     */
+    private String pEntName;
+
 }

+ 40 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/report/KwsRoleExcel.java

@@ -0,0 +1,40 @@
+package com.sckw.system.model.report;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.sckw.core.utils.LongToStringUtils;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author czh
+ * @desc 角色
+ * @date 2023/9/14
+ */
+@Data
+public class KwsRoleExcel implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3981621106754243351L;
+
+    @ExcelProperty(value = "岗位名称")
+    private String name;
+
+    @ExcelProperty(value = "创建人")
+    private String createBy;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ExcelProperty(value = "创建时间")
+    private Date createTime;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ExcelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @ExcelProperty(value = "备注")
+    private String remark;
+}

+ 51 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/report/KwsUserExcel.java

@@ -0,0 +1,51 @@
+package com.sckw.system.model.report;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author czh
+ * @desc 用户导出
+ * @date 2023/9/14
+ */
+@Data
+public class KwsUserExcel implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -2268347072252833277L;
+
+    @ExcelProperty(value = "状态")
+    private String status;
+
+    @ExcelProperty(value = "姓名")
+    private String name;
+
+    @ExcelProperty(value = "账号")
+    private String account;
+
+    @ExcelProperty(value = "岗位角色")
+    private String roleName;
+
+    @ExcelProperty(value = "所属机构")
+    private String deptName;
+
+    @ExcelProperty(value = "创建人")
+    private String createByName;
+
+    @ExcelProperty(value = "创建时间")
+    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    @ExcelProperty(value = "更新时间")
+    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+}

+ 20 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/EntFindPageResVo.java

@@ -1,8 +1,10 @@
 package com.sckw.system.model.vo.res;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.sckw.core.utils.LongToStringUtils;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -43,6 +45,8 @@ public class EntFindPageResVo implements Serializable {
     /**
      * 注册时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date regTime;
 
     /**
@@ -53,6 +57,8 @@ public class EntFindPageResVo implements Serializable {
     /**
      * 审批时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date approvalTime;
 
     /**
@@ -68,6 +74,8 @@ public class EntFindPageResVo implements Serializable {
     /**
      * 修改时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
     /**
@@ -108,5 +116,17 @@ public class EntFindPageResVo implements Serializable {
     /**
      * 创建时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
+
+    /**
+     * 母企业id
+     */
+    private Long pid;
+
+    /**
+     * 母企业名
+     */
+    private String pEntName;
 }

+ 2 - 2
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/KwsUserResVo.java

@@ -99,7 +99,7 @@ public class KwsUserResVo implements Serializable {
     private String deptName;
 
     /**
-     * 机构
+     * 岗位
      */
     private String roleName;
 
@@ -114,7 +114,7 @@ public class KwsUserResVo implements Serializable {
     private String createByName;
 
     /**
-     * 修改时间
+     * 创建时间
      */
     private Date createTime;
 

+ 34 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/QueryCustomerResVo.java

@@ -0,0 +1,34 @@
+package com.sckw.system.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 客户列表入参
+ * @date 2023/9/14
+ */
+@Data
+public class QueryCustomerResVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 8423246495675260245L;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 状态名
+     */
+    private String statusName;
+
+    /**
+     * 个数
+     */
+    private Integer cnt;
+
+}

+ 43 - 2
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java

@@ -1,5 +1,4 @@
 package com.sckw.system.service;
-import com.google.common.collect.Lists;
 import java.util.Date;
 
 import cn.hutool.core.date.DateUtil;
@@ -17,7 +16,6 @@ import com.sckw.core.web.model.EntCertificateInfo;
 import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.UserInfo;
 import com.sckw.system.api.model.dto.req.RegisterReqDto;
-import com.sckw.system.api.model.dto.res.REnterpriseVo;
 import com.sckw.system.api.model.dto.res.*;
 import com.sckw.system.dao.*;
 import com.sckw.system.dubbo.RemoteSystemServiceImpl;
@@ -132,6 +130,12 @@ public class KwsEnterpriseService {
         kwsRoleService.deleteByDeptIds(list);
     }
 
+    public static void main(String[] args) {
+        Long l1 = 1234L;
+        Long l2 = 1234L;
+        System.out.println(l1.equals(l2));
+    }
+
     /**
      * @param reqVo 更新记录入参
      * @desc: 更新记录, 有的是更新有的是新增, 两种情况
@@ -837,6 +841,9 @@ public class KwsEnterpriseService {
         QueryCurrentOrganizationResVo queryCurrentOrganizationResVo = new QueryCurrentOrganizationResVo();
         queryCurrentOrganizationResVo.setEntId(entCacheResDto.getId());
         queryCurrentOrganizationResVo.setEntName(entCacheResDto.getFirmName());
+        queryCurrentOrganizationResVo.setContactsId(entCacheResDto.getContactsId());
+        queryCurrentOrganizationResVo.setContacts(entCacheResDto.getContacts());
+        queryCurrentOrganizationResVo.setPhone(entCacheResDto.getPhone());
         list.add(queryCurrentOrganizationResVo);
 
         List<KwsEntDept> kwsEntDepts = kwsEntDeptDao.selectByEntPid(entId);
@@ -1061,4 +1068,38 @@ public class KwsEnterpriseService {
     public List<KwsEnterprise> queryEntInfoByCityCodeAndEntTypesWithPage(Integer cityCode, List<Integer> entTypeList, List<Long> entIdList, String entName) {
         return kwsEnterpriseDao.queryEntInfoByCityCodeAndEntTypesWithPage(cityCode, entTypeList, entIdList, entName);
     }
+
+
+    /**
+     * @param reqVo 查询
+     * @return QueryCustomerResVo
+     * @desc: 客户列表分组个数
+     * @author: czh
+     * @date: 2023/9/14
+     */
+    public List<QueryCustomerResVo> queryCustomerGroup(EntFindPageReqVo reqVo) {
+        List<FindEntListPojo> list = findPojo(reqVo);
+        List<QueryCustomerResVo> result = new ArrayList<>();
+        Map<Integer, List<FindEntListPojo>> collect = list.stream().collect(Collectors.groupingBy(FindEntListPojo::getStatus));
+
+        List<FindEntListPojo> findEntListPojos1 = collect.get(Global.NO);
+        QueryCustomerResVo queryCustomerResVo1 = new QueryCustomerResVo();
+        queryCustomerResVo1.setStatus(Global.NO);
+        queryCustomerResVo1.setStatusName("正常");
+        queryCustomerResVo1.setCnt(CollectionUtils.isEmpty(findEntListPojos1) ? 0 : findEntListPojos1.size());
+
+        List<FindEntListPojo> findEntListPojos2 = collect.get(Global.YES);
+        QueryCustomerResVo queryCustomerResVo2 = new QueryCustomerResVo();
+        queryCustomerResVo2.setStatus(Global.YES);
+        queryCustomerResVo2.setStatusName("冻结");
+        queryCustomerResVo2.setCnt(CollectionUtils.isEmpty(findEntListPojos2) ? 0 : findEntListPojos2.size());
+
+        QueryCustomerResVo queryCustomerResVo = new QueryCustomerResVo();
+        queryCustomerResVo.setStatusName("全部");
+        queryCustomerResVo.setCnt(queryCustomerResVo1.getCnt() + queryCustomerResVo2.getCnt());
+        result.add(queryCustomerResVo);
+        result.add(queryCustomerResVo1);
+        result.add(queryCustomerResVo2);
+        return result;
+    }
 }

+ 16 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsRoleService.java

@@ -17,17 +17,21 @@ import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.config.CustomConfig;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.dao.*;
 import com.sckw.system.model.*;
 import com.sckw.system.model.pojo.FindManagePojo;
 import com.sckw.system.model.pojo.FindMenuTreePojo;
+import com.sckw.system.model.report.KwsRoleExcel;
+import com.sckw.system.model.report.KwsUserExcel;
 import com.sckw.system.model.vo.req.EditRoleReqVo;
 import com.sckw.system.model.vo.req.RoleBindMenuReqVo;
 import com.sckw.system.model.vo.req.UserBindRoleReqVo;
 import com.sckw.system.model.vo.res.IdResVo;
 import com.sckw.system.model.vo.res.KwsMenuResVo;
 import com.sckw.system.model.vo.res.RoleResVo;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -459,9 +463,20 @@ public class KwsRoleService {
 
     }
 
-
     public List<KwsUserRole> findAllByUserId(long userId) {
         return kwsUserRoleDao.findAllByUserId(userId);
     }
 
+
+
+    public void export(HashMap params, HttpServletResponse response) {
+        FindManagePojo manageInfoByEntId = kwsEnterpriseDao.findManageInfoByEntId(LoginUserHolder.getEntId());
+        params.put("entId", LoginUserHolder.getEntId());
+        params.put("manageRoleId", manageInfoByEntId.getRoleId());
+        List<RoleResVo> roleResVos = kwsRoleDao.findPage(params);
+        if (CollectionUtils.isEmpty(roleResVos)) {
+            throw new SystemException("导出数据为空");
+        }
+        ExcelUtil.downData(response, KwsRoleExcel.class, BeanUtils.copyToList(roleResVos, KwsRoleExcel.class));
+    }
 }

+ 41 - 12
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java

@@ -8,6 +8,7 @@ import com.sckw.core.model.enums.SystemTypeEnum;
 import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.api.RemoteUserService;
@@ -19,9 +20,11 @@ import com.sckw.system.api.model.dto.res.RegisterResDto;
 import com.sckw.system.dao.*;
 import com.sckw.system.dubbo.RemoteSystemServiceImpl;
 import com.sckw.system.model.*;
+import com.sckw.system.model.report.KwsUserExcel;
 import com.sckw.system.model.vo.req.*;
 import com.sckw.system.model.vo.res.KwsUserResVo;
 import com.sckw.transport.api.dubbo.TransportStatisticsService;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -81,7 +84,7 @@ public class KwsUserService {
      * @author: czh
      * @date: 2023/7/7
      */
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = {})
     public void add(UserAddReqVo reqVo) {
         commonService.checkPhone(reqVo.getAccount());
         KwsUser kwsUser = new KwsUser();
@@ -95,19 +98,22 @@ public class KwsUserService {
 
         /*2、填充密码*/
         fillPassword(kwsUser);
+        synchronized(this) {
+            //再次校验数据
+            checkAccountValid(kwsUser.getAccount(), kwsUser.getSystemType());
+            /*3、存库*/
+            long userId = new IdWorker(1).nextId();
+            kwsUser.setId(userId);
+            if (kwsUserDao.insert(kwsUser) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+            }
 
-        /*3、存库*/
-        long userId = new IdWorker(1).nextId();
-        kwsUser.setId(userId);
-        if (kwsUserDao.insert(kwsUser) <= 0) {
-            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
-        }
-
-        /*4、填充用户角色*/
-        fillUserRole(reqVo.getRoleIds(), userId, reqVo.getSystemType());
+            /*4、填充用户角色*/
+            fillUserRole(reqVo.getRoleIds(), userId, reqVo.getSystemType());
 
-        /*5、用户机构关系*/
-        fillUserDept(kwsUser.getId(), reqVo.getDeptId());
+            /*5、用户机构关系*/
+            fillUserDept(kwsUser.getId(), reqVo.getDeptId());
+        }
 
     }
 
@@ -363,6 +369,10 @@ public class KwsUserService {
      * 分页查询
      */
     public List<KwsUserResVo> findPage(Map<String, Object> params) {
+        if (Objects.equals(LoginUserHolder.getSystemType(), SystemTypeEnum.COMPANY.getCode())) {
+            params.put("entId", LoginUserHolder.getEntId());
+        }
+
         return kwsUserDao.findPage(params);
     }
 
@@ -637,4 +647,23 @@ public class KwsUserService {
     public List<KwsUser> queryUserByDeptIds(List<Long> deptIds) {
         return kwsUserDao.selectByDeptIds(deptIds);
     }
+
+
+    public void export(HashMap params, HttpServletResponse response) {
+        List<KwsUserResVo> list = kwsUserDao.findPage(params);
+
+        if (CollectionUtils.isEmpty(list)) {
+            throw new SystemException("导出数据为空");
+        }
+
+        List<KwsUserExcel> result = new ArrayList<>();
+        list.forEach(item -> {
+            KwsUserExcel kwsUserExce = new KwsUserExcel();
+            BeanUtils.copyProperties(item, kwsUserExce);
+            kwsUserExce.setStatus(item.getStatus().equals(Global.NO) ? "正常" : "冻结");
+            result.add(kwsUserExce);
+        });
+        ExcelUtil.downData(response, KwsUserExcel.class, result);
+    }
+    
 }

+ 45 - 42
sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.xml

@@ -54,45 +54,50 @@
   <select id="findPojo" resultType="com.sckw.system.model.pojo.FindEntListPojo" parameterType="com.sckw.system.model.pojo.FindPojoParam">
     select tab.*,
            case when tab.id in (select ent_id from kws_ent_dep) then '子单位' else '主单位' end entDept,
-           case when tab.status = 0 then '正常' else '冻结' end statusName from
+           case when tab.status = 0 then '正常' else '冻结' end statusName
+    from
     (
-    select a.id,
-    min(a.firm_name) firm_name,
-    min(a.code) code,
-    min(a.contacts) contacts,
-    min(a.phone) phone,
-    min(a.legal_name) legal_name,
-    min(a.legal_phone) legal_phone,
-    min(a.head) head,
-    min(a.integral) integral,
-    min(a.balance) balance,
-    min(a.experience) experience,
-    min(a.member_level) member_level,
-    min(a.reg_time) reg_time,
-    min(a.reg_source) reg_source,
-    min(a.org_code) org_code,
-    min(a.city_code) city_code,
-    min(a.detail_address) detail_address,
-    min(a.lat) lat,
-    min(a.lng) lng,
-    min(a.approval) approval,
-    min(a.approval_time) approval_time,
-    min(a.manager) manager,
-    min(a.remark) remark,
-    min(a.status) status,
-    min(a.create_by) create_by,
-    min(a.create_time) create_time,
-    min(a.update_by) update_by,
-    min(a.update_time) update_time,
-    min(a.del_flag) del_flag,
-    ifnull(GROUP_CONCAT(distinct b.type), '') type,
-    min(k.system_type) system_type,
-    min(k.name) createByName,
-    min(ku.name) updateByName
+          select a.id,
+          min(a.firm_name) firm_name,
+          min(a.code) code,
+          min(a.contacts) contacts,
+          min(a.phone) phone,
+          min(a.legal_name) legal_name,
+          min(a.legal_phone) legal_phone,
+          min(a.head) head,
+          min(a.integral) integral,
+          min(a.balance) balance,
+          min(a.experience) experience,
+          min(a.member_level) member_level,
+          min(a.reg_time) reg_time,
+          min(a.reg_source) reg_source,
+          min(a.org_code) org_code,
+          min(a.city_code) city_code,
+          min(a.detail_address) detail_address,
+          min(a.lat) lat,
+          min(a.lng) lng,
+          min(a.approval) approval,
+          min(a.approval_time) approval_time,
+          min(a.manager) manager,
+          min(a.remark) remark,
+          min(a.status) status,
+          min(a.create_by) create_by,
+          min(a.create_time) create_time,
+          min(a.update_by) update_by,
+          min(a.update_time) update_time,
+          min(a.del_flag) del_flag,
+          ifnull(GROUP_CONCAT(distinct b.type), '') type,
+          min(k.system_type) system_type,
+          min(k.name) createByName,
+          min(ku.name) updateByName,
+          min(d.id) pid,
+          min(d.firm_name) pEntName
     from kws_enterprise a
     left join kws_user k on a.create_by = k.id
     left join kws_user ku on a.update_by = ku.id
     left join kws_ent_type b on a.id = b.ent_id and b.del_flag = 0
+    left join kws_ent_dept c on a.id = c.ent_id
+    left join kws_enterprise d on c.ent_pid = d.id
     <if test="dto.typeList != null and dto.typeList.size() > 0">and b.type in
       <foreach collection="dto.typeList" item="item" open="(" close=")" separator=",">
         #{item}
@@ -111,10 +116,10 @@
       and (a.contacts like concat('%', #{dto.keywords}, '%') or a.phone like concat('%', #{dto.keywords}, '%') or a.firm_name like concat('%', #{dto.keywords}, '%'))
     </if>
     <if test="dto.startTime != null">
-      and a.update_time >= #{dto.startTime}
+      and a.reg_time >= #{dto.startTime}
     </if>
     <if test="dto.endTime != null">
-      and a.update_time &lt;= #{dto.endTime}
+      and a.reg_time &lt;= #{dto.endTime}
     </if>
     <if test="dto.approvalStartTime != null">
       and a.approval_time >= #{dto.approvalStartTime}
@@ -275,15 +280,13 @@
   </select>
 
   <select id="checkEntRepeat" resultType="com.sckw.system.model.KwsEnterprise">
-    select * from kws_enterprise where (
-        1 = 1
-        <if test="entName != null and entName != ''">
-          or firm_name = #{entName}
-        </if>
+    select * from kws_enterprise where  (
+          firm_name = #{entName}
         <if test="phone != null and phone != ''">
           or phone = #{phone}
         </if>
-         ) and del_flag = 0 and approval in (1,3,4)
+         )
+        and del_flag = 0 and approval in (1,3,4)
   </select>
 
   <select id="selectAllByKeys" resultType="com.sckw.system.model.KwsEnterprise">

+ 5 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsRoleDao.xml

@@ -161,6 +161,11 @@
     <if test="endTime != null and endTime != ''" >
       and sr.create_time &lt; date_add(#{endTime}, INTERVAL 1 DAY)
     </if>
+    <if test="idList != null and idList.size() > 0">
+      <foreach collection="idList" item="item" open="(" close=")" separator=",">
+        #{item}
+      </foreach>
+    </if>
     ORDER BY sr.create_time desc
   </select>
 

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

@@ -240,6 +240,12 @@
     <if test="systemType != null and systemType != ''">
       and su.system_type = #{systemType, jdbcType=VARCHAR}
     </if>
+    <if test="idList != null and idList.size() > 0">
+      and su.id in
+      <foreach collection="idList" item="item" open="(" close=")" separator=",">
+        #{item}
+      </foreach>
+    </if>
     <if test="account != null and account != ''">
       and su.account = #{account, jdbcType=VARCHAR}
     </if>

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

@@ -62,7 +62,6 @@ public class ManagementWaybillOrderService {
         // 设置模糊查询匹配规则  忽略大小写
         // 创建条件对象
         Criteria criteria = new Criteria();
-        criteria.and("entId").is(LoginUserHolder.getEntId());
         criteria.and("delFlag").is(NumberConstant.ZERO);
         // 运单状态
         if (StringUtils.isNotBlank(query.getStatus()) && (!"all".equals(query.getStatus()))) {