Просмотр исходного кода

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

czh 2 лет назад
Родитель
Сommit
a2844f1a53
39 измененных файлов с 836 добавлено и 114 удалено
  1. 13 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java
  2. 5 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java
  3. 2 2
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwTradeOrder.java
  4. 0 3
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfFleetController.java
  5. 6 4
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java
  6. 6 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfFleetDriverMapper.java
  7. 7 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfFleetTruckMapper.java
  8. 5 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfFleetDriver.java
  9. 7 2
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfFleetTruck.java
  10. 3 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfTransportLicense.java
  11. 1 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfDriverDto.java
  12. 2 2
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTransportLicenseDto.java
  13. 2 2
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTruckDto.java
  14. 2 2
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTruckLicenseDto.java
  15. 25 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckVo.java
  16. 38 9
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java
  17. 0 2
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfFleetService.java
  18. 0 4
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckReportService.java
  19. 62 7
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java
  20. 2 2
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverCardMapper.xml
  21. 2 2
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverLicenseMapper.xml
  22. 2 2
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverQualificationMapper.xml
  23. 8 0
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfFleetDriverMapper.xml
  24. 8 0
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfFleetTruckMapper.xml
  25. 2 2
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfTransportLicenseMapper.xml
  26. 2 2
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfTruckLicenseMapper.xml
  27. 11 8
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfTruckMapper.xml
  28. 0 23
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java
  29. 2 13
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  30. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  31. 4 0
      sckw-modules/sckw-report/pom.xml
  32. 62 4
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwOrderController.java
  33. 191 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java
  34. 78 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/SpringDataPageAble.java
  35. 95 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExport.java
  36. 2 2
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExportParam.java
  37. 2 2
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListSelectParam.java
  38. 14 9
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListStatisticParam.java
  39. 162 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java

+ 13 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java

@@ -3,6 +3,10 @@ package com.sckw.core.common.enums.enums;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+
 /**
  * @author lfdc
  * @description 枚举字典
@@ -60,5 +64,14 @@ public enum DictEnum {
         }
         return null;
     }
+    public static List<DictEnum> getEnumsByType(String type) {
+        List<DictEnum> list = new ArrayList<>();
+        for (DictEnum dict : DictEnum.values()) {
+            if (dict.getType().equals(type) ) {
+                list.add(dict);
+            }
+        }
+        return list.stream().sorted(Comparator.comparing(DictEnum::getValue)).toList();
+    }
 
 }

+ 5 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java

@@ -27,7 +27,11 @@ public enum DictTypeEnum {
     CATEGORY_TYPE("category_type", "类别类型"),
     PRODUCT_NAME_TYPE("product_name_type", "品名类型"),
     GOODS_STATUS("goods_status", "商品状态"),
-    CHARGING_TYPE("charging_type", "计费方式");
+    CHARGING_TYPE("charging_type", "计费方式") ,
+    COLOR_TYPE("color_type", "车辆颜色"),
+    ENERGY_TYPE("energy_type", "能源类型"),
+    TRUCK_TYPE("truck_type", "车辆类型"),
+    USE_TYPE("use_type", "使用性质");
 
     private final String type;
     private final String name;

+ 2 - 2
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwTradeOrder.java

@@ -251,7 +251,7 @@ public class SckwTradeOrder {
     /**
      * 装货所在地区
      */
-    private Integer loadCityCode;
+    private String loadCityCode;
 
     /**
      * 装货所属区域名称
@@ -296,7 +296,7 @@ public class SckwTradeOrder {
     /**
      * 卸货所在地区
      */
-    private Integer unloadCityCode;
+    private String unloadCityCode;
 
     /**
      * 卸货所属区域名称

+ 0 - 3
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfFleetController.java

@@ -5,14 +5,11 @@ import com.github.pagehelper.PageInfo;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
-import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
-import com.sckw.fleet.model.KwfDriver;
 import com.sckw.fleet.model.KwfFleet;
 import com.sckw.fleet.model.dto.KwfFleetDto;
-import com.sckw.fleet.model.vo.KwfDriverVo;
 import com.sckw.fleet.model.vo.KwfFleetVo;
 import com.sckw.fleet.service.KwfFleetService;
 import jakarta.servlet.http.HttpServletResponse;

+ 6 - 4
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java

@@ -13,9 +13,11 @@ import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.fleet.model.*;
 import com.sckw.fleet.model.dto.*;
 import com.sckw.fleet.model.vo.KwfDriverVo;
+import com.sckw.fleet.model.vo.KwfTruckVo;
 import com.sckw.fleet.service.KwfTruckService;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
+import org.checkerframework.checker.units.qual.K;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
@@ -107,11 +109,11 @@ public class KwfTruckController {
     @PostMapping("/export")
     public HttpResult export(@RequestBody HashMap params) {
         /**查询数据**/
-        List<KwfDriverVo> drivers = truckService.findPage(params);
+        List<KwfTruckVo> trucks = truckService.findPage(params);
 
-        if (!CollectionUtils.isEmpty(drivers)) {
+        if (!CollectionUtils.isEmpty(trucks)) {
             HttpServletResponse response = RequestHolder.getResponse();
-            ExcelUtil.download(response, KwfDriverVo.class, drivers);
+            ExcelUtil.download(response, KwfTruckVo.class, trucks);
             return null;
         }
         return HttpResult.error("无数据!");
@@ -179,7 +181,7 @@ public class KwfTruckController {
      * @author zk
      * @date 2023/7/7
      **/
-    @PostMapping("/transportLicenseEdit")
+    @PostMapping("/tranLicenseEdit")
     public HttpResult transportLicenseEdit(@Valid @RequestBody KwfTransportLicenseDto params) throws SystemException {
         return truckService.transportLicenseEdit(params);
     }

+ 6 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfFleetDriverMapper.java

@@ -12,4 +12,10 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KwfFleetDriverMapper extends BaseMapper<KwfFleetDriver> {
 
+    /**
+     * 查询
+     * @param params 参数
+     * @return
+     */
+    KwfFleetDriver findByTruckDriver(KwfFleetDriver params);
 }

+ 7 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfFleetTruckMapper.java

@@ -2,6 +2,7 @@ package com.sckw.fleet.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.fleet.model.KwfFleetTruck;
+import com.sckw.fleet.model.KwfTruckEnt;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -12,4 +13,10 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KwfFleetTruckMapper extends BaseMapper<KwfFleetTruck> {
 
+    /**
+     * 查询
+     * @param params 参数
+     * @return
+     */
+    KwfFleetTruck findByTruckFleet(KwfFleetTruck params);
 }

+ 5 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfFleetDriver.java

@@ -25,4 +25,9 @@ public class KwfFleetDriver extends BaseModel {
      */
     private Long driverId;
 
+    /**
+     * 企业id
+     */
+    private Long entId;
+
 }

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

@@ -21,8 +21,13 @@ public class KwfFleetTruck extends BaseModel {
     private Long fleetId;
 
     /**
-     * 车牌号
+     * 车辆档案主键id
      */
-    private String truckNo;
+    private Long truckId;
+
+    /**
+     * 企业id
+     */
+    private Long entId;
 
 }

+ 3 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfTransportLicense.java

@@ -1,5 +1,6 @@
 package com.sckw.fleet.model;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sckw.core.model.base.BaseModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -44,11 +45,13 @@ public class KwfTransportLicense extends BaseModel {
     /**
      * 发证日期
      */
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
     private Date grantTime;
 
     /**
      * 有效期至
      */
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
     private Date expireTime;
 
     /**

+ 1 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfDriverDto.java

@@ -40,7 +40,7 @@ public class KwfDriverDto {
     /**
      * 车队班组主键ID
      */
-    private String fleetId;
+    private Long fleetId;
 
     /**
      * 身份证信息

+ 2 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTransportLicenseDto.java

@@ -44,13 +44,13 @@ public class KwfTransportLicenseDto {
     /**
      * 发证日期
      */
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
     private Date grantTime;
 
     /**
      * 有效期至
      */
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
     private Date expireTime;
 
     /**

+ 2 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTruckDto.java

@@ -52,13 +52,13 @@ public class KwfTruckDto {
     /**
      * 标准荷载(净重)
      */
-    @Pattern(regexp = "^1[3456789]\\d{9}$", message = "标准荷载格式不正确!")
+    //@Pattern(regexp = "^1[3456789]\\d{9}$", message = "标准荷载格式不正确!")
     private Double actualWeight;
 
     /**
      * 车辆总质量(毛重)
      */
-    @Digits(integer=1, fraction=0)
+    //@Digits(integer=1, fraction=0)
     private Double grossWeight;
 
     /**

+ 2 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTruckLicenseDto.java

@@ -44,13 +44,13 @@ public class KwfTruckLicenseDto {
     /**
      * 注册日期
      */
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
     private Date regTime;
 
     /**
      * 发证日期
      */
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
     private Date grantTime;
 
     /**

+ 25 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckVo.java

@@ -39,11 +39,23 @@ public class KwfTruckVo {
     @ExcelProperty(value = "车牌号")
     private String truckNo;
 
+    /**
+     * 车牌颜色
+     */
+    @ExcelIgnore
+    private Integer color;
+
     /**
      * 车牌颜色
      */
     @ExcelProperty(value = "车牌颜色")
-    private String color;
+    private String colorName;
+
+    /**
+     * 车辆类型
+     */
+    @ExcelIgnore
+    private Integer type;
 
     /**
      * 车辆类型
@@ -51,6 +63,12 @@ public class KwfTruckVo {
     @ExcelProperty(value = "车辆类型")
     private String truckTypeName;
 
+    /**
+     * 能源类型
+     */
+    @ExcelIgnore
+    private Integer energyType;
+
     /**
      * 能源类型
      */
@@ -75,6 +93,12 @@ public class KwfTruckVo {
     @ExcelProperty(value = "外廓尺寸")
     private String spec;
 
+    /**
+     * 使用性质
+     */
+    @ExcelIgnore
+    private Integer useType;
+
     /**
      * 使用性质
      */

+ 38 - 9
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java

@@ -1,14 +1,7 @@
 package com.sckw.fleet.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-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.page.PageHelperUtil;
-import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.PasswordUtils;
@@ -16,7 +9,6 @@ import com.sckw.core.utils.StringUtils;
 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.fleet.dao.*;
 import com.sckw.fleet.model.*;
 import com.sckw.fleet.model.dto.*;
@@ -32,7 +24,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -58,6 +49,8 @@ public class KwfDriverService {
     KwfDriverLicenseMapper KwfDriverLicenseDao;
     @Autowired
     KwfDriverQualificationMapper KwfDriverQualificationDao;
+    @Autowired
+    KwfFleetDriverMapper fleetDriverDao;
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
@@ -200,6 +193,10 @@ public class KwfDriverService {
 
         /**司机信息与企业关联信息**/
         driverEntEdit(driver);
+
+        /**车队班组绑定**/
+        driverFleetEdit(driver.getId(), params.getFleetId());
+
         return HttpResult.ok("司机信息新增成功!");
     }
 
@@ -251,6 +248,10 @@ public class KwfDriverService {
             driverQualificationDto.setDriverId(driver.getId());
             driverQualificationEdit(driverQualificationDto);
         }
+
+        /**车队班组绑定**/
+        driverFleetEdit(driver.getId(), params.getFleetId());
+
         return HttpResult.ok("司机信息修改成功!");
     }
 
@@ -443,6 +444,34 @@ public class KwfDriverService {
         driverEntDao.insert(driverEnt);
     }
 
+    /**
+     * @param driverId 司机档案主键id fleetId 车队班组主键id
+     * @desc 车队班组绑定
+     * @author zk
+     * @date 2023/7/7
+     **/
+    public HttpResult driverFleetEdit(Long driverId, Long fleetId) {
+        /**数据校验**/
+        if (fleetId == null) {
+            return HttpResult.ok("未选择车队班组!");
+        }
+        KwfFleetDriver queryFleetDriver = new KwfFleetDriver();
+        queryFleetDriver.setEntId(LoginUserHolder.getEntId());
+        queryFleetDriver.setDriverId(driverId);
+        KwfFleetDriver fleetDriver = fleetDriverDao.findByTruckDriver(queryFleetDriver);
+
+        /**数据更新**/
+        queryFleetDriver.setFleetId(fleetId);
+        if (fleetDriver == null) {
+            int count = fleetDriverDao.insert(queryFleetDriver);
+            return count > 0 ? HttpResult.ok("车队班组绑定成功!") : HttpResult.error("车队班组绑定失败!");
+        } else {
+            queryFleetDriver.setId(fleetDriver.getId());
+            int count = fleetDriverDao.updateById(queryFleetDriver);
+            return count > 0 ? HttpResult.ok("车队班组绑定成功!") : HttpResult.error("车队班组绑定失败!");
+        }
+    }
+
     /**
      * @param params 参数
      * @desc: 修改密码

+ 0 - 2
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfFleetService.java

@@ -11,10 +11,8 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.fleet.dao.KwfFleetMapper;
 import com.sckw.fleet.model.KwfFleet;
 import com.sckw.fleet.model.dto.KwfFleetDto;
-import com.sckw.fleet.model.vo.KwfDriverVo;
 import com.sckw.fleet.model.vo.KwfFleetVo;
 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 org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;

+ 0 - 4
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckReportService.java

@@ -3,7 +3,6 @@ package com.sckw.fleet.service;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.auth.context.LoginUserHolder;
 import com.sckw.core.model.constant.Global;
-import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
@@ -11,9 +10,6 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.fleet.dao.KwfDriverMapper;
 import com.sckw.fleet.dao.KwfTruckMapper;
 import com.sckw.fleet.dao.KwfTruckReportMapper;
-import com.sckw.fleet.model.KwfDriver;
-import com.sckw.fleet.model.KwfTruck;
-import com.sckw.fleet.model.KwfTruckEnt;
 import com.sckw.fleet.model.KwfTruckReport;
 import com.sckw.fleet.model.dto.*;
 import com.sckw.fleet.model.vo.KwfTableTopCount;

+ 62 - 7
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java

@@ -1,5 +1,6 @@
 package com.sckw.fleet.service;
 
+import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.BeanUtils;
@@ -8,16 +9,14 @@ import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
-import com.sckw.fleet.dao.KwfTransportLicenseMapper;
-import com.sckw.fleet.dao.KwfTruckEntMapper;
-import com.sckw.fleet.dao.KwfTruckLicenseMapper;
-import com.sckw.fleet.dao.KwfTruckMapper;
+import com.sckw.fleet.dao.*;
 import com.sckw.fleet.model.*;
 import com.sckw.fleet.model.dto.*;
 import com.sckw.fleet.model.vo.KwfTableTopCount;
 import com.sckw.fleet.model.vo.KwfTruckVo;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,6 +44,8 @@ public class KwfTruckService {
     KwfTruckLicenseMapper truckLicenseDao;
     @Autowired
     KwfTransportLicenseMapper transportLicenseDao;
+    @Autowired
+    KwfFleetTruckMapper fleetTruckDao;
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 
@@ -99,11 +100,18 @@ public class KwfTruckService {
         }
 
         /**获取查询数据**/
+        String prefix = Global.REDIS_SYS_DICT_PREFIX, pound = Global.POUND;
         List<Long> createBys = new ArrayList<>();
         List<Long> entIds = new ArrayList<>();
+        List<String> dictKey = new ArrayList<>();
+
         for (KwfTruckVo truck:trucks) {
             createBys.add(Long.parseLong(truck.getCreateBy()));
             entIds.add(Long.parseLong(truck.getEntId()));
+            dictKey.add(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getColor());
+            dictKey.add(prefix + DictTypeEnum.TRUCK_TYPE.getType() + pound + truck.getType());
+            dictKey.add(prefix + DictTypeEnum.USE_TYPE.getType() + pound + truck.getUseType());
+            dictKey.add(prefix + DictTypeEnum.ENERGY_TYPE.getType() + pound + truck.getEnergyType());
         }
         //用户数据集
         createBys = createBys.stream().distinct().collect(Collectors.toList());
@@ -111,13 +119,24 @@ public class KwfTruckService {
         //企业数据集
         entIds = entIds.stream().distinct().collect(Collectors.toList());
         Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
+        //数据字典
+        dictKey = dictKey.stream().distinct().collect(Collectors.toList());
+        Map<Long, SysDictResDto> dicts = null;//remoteSystemService.queryDictByType(dictKey);
 
         /**数据组装**/
         for (KwfTruckVo truck:trucks) {
             UserCacheResDto user = users == null ? null : users.get(Long.parseLong(truck.getCreateBy()));
             EntCacheResDto ent = ents == null ? null : ents.get(Long.parseLong(truck.getEntId()));
+            SysDictResDto color = dicts == null ? null : dicts.get(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getColor());
+            SysDictResDto type = dicts == null ? null : dicts.get(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getType());
+            SysDictResDto useType = dicts == null ? null : dicts.get(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getUseType());
+            SysDictResDto energyType = dicts == null ? null : dicts.get(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getEnergyType());
             truck.setCreateByName(user != null ? user.getName() : null);
             truck.setFirmName(ent != null ? ent.getFirmName() : null);
+            truck.setColorName(color != null ? color.getLabel() : null);
+            truck.setTruckTypeName(type != null ? type.getLabel() : null);
+            truck.setUseTypeName(useType != null ? useType.getLabel() : null);
+            truck.setEnergyTypeName(energyType != null ? energyType.getLabel() : null);
         }
         return trucks;
     }
@@ -174,12 +193,16 @@ public class KwfTruckService {
         /**车辆行驶证信息**/
         KwfTransportLicenseDto transportLicenseDto = params.getTransportLicense();
         if (transportLicenseDto != null) {
-            truckLicenseDto.setTruckId(truck.getId());
+            transportLicenseDto.setTruckId(truck.getId());
             transportLicenseEdit(transportLicenseDto);
         }
 
         /**车辆信息与企业关联信息**/
         truckEntEdit(truck);
+
+        /**车队班组绑定**/
+        truckFleetEdit(truck.getId(), params.getFleetId());
+
         return HttpResult.ok("车辆信息新增成功!");
     }
 
@@ -221,9 +244,12 @@ public class KwfTruckService {
         /**车辆行驶证信息**/
         KwfTransportLicenseDto transportLicenseDto = params.getTransportLicense();
         if (transportLicenseDto != null) {
-            truckLicenseDto.setTruckId(truck.getId());
+            transportLicenseDto.setTruckId(truck.getId());
             transportLicenseEdit(transportLicenseDto);
         }
+
+        /**车队班组绑定**/
+        truckFleetEdit(truck.getId(), params.getFleetId());
         return HttpResult.ok("车辆信息修改成功!");
     }
 
@@ -281,7 +307,7 @@ public class KwfTruckService {
             //校验list中对象key值是否存在与value不一致的情况
             boolean bool = CollectionUtils.listByKeyValueV1(trucks, "id", String.valueOf(params.getId()));
             if (bool) {
-                return HttpResult.error("车辆信息已存在!");
+                return HttpResult.error("车牌号已存在!");
             }
 
             /**更新**/
@@ -376,6 +402,35 @@ public class KwfTruckService {
         truckEntDao.insert(truckEnt);
     }
 
+    /**
+     * @param truckId 车辆档案主键id fleetId 车队班组主键id
+     * @desc 车队班组绑定
+     * @author zk
+     * @date 2023/7/7
+     **/
+    public HttpResult truckFleetEdit(Long truckId, Long fleetId) {
+        /**数据校验**/
+        if (fleetId == null) {
+            return HttpResult.ok("未选择车队班组!");
+        }
+        KwfFleetTruck queryFleetTruck = new KwfFleetTruck();
+        queryFleetTruck.setEntId(LoginUserHolder.getEntId());
+        queryFleetTruck.setTruckId(truckId);
+        KwfFleetTruck fleetTruck = fleetTruckDao.findByTruckFleet(queryFleetTruck);
+
+        /**数据更新**/
+        queryFleetTruck.setFleetId(fleetId);
+        if (fleetTruck == null) {
+            int count = fleetTruckDao.insert(queryFleetTruck);
+            return count > 0 ? HttpResult.ok("车队班组绑定成功!") : HttpResult.error("车队班组绑定失败!");
+        } else {
+            queryFleetTruck.setId(fleetTruck.getId());
+            int count = fleetTruckDao.updateById(queryFleetTruck);
+            return count > 0 ? HttpResult.ok("车队班组绑定成功!") : HttpResult.error("车队班组绑定失败!");
+        }
+    }
+
+
     /**
      * @param params 参数
      * @desc 校验车辆是否有证书

+ 2 - 2
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverCardMapper.xml

@@ -2,13 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.fleet.dao.KwfDriverCardMapper">
 
-    <select id="findByDriverId" resultType="com.sckw.fleet.model.KwfDriverCard" parameterType="java.lang.String" >
+    <select id="findByDriverId" resultType="com.sckw.fleet.model.KwfDriverCard" parameterType="java.lang.Long" >
         SELECT
             id, driver_id driverId, idcard, expire_time expireTime, address, certificate_main certificateMain,
             certificate_revolt certificateRevolt, remark, status, create_by createBy, create_time createTime,
             update_by updateBy, update_time updateTime
         from kwf_driver_card
-        where del_flag = 0 and driver_id = #{driverId, jdbcType=VARCHAR}
+        where del_flag = 0 and driver_id = #{driverId, jdbcType=BIGINT}
     </select>
 
 </mapper>

+ 2 - 2
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverLicenseMapper.xml

@@ -2,13 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.fleet.dao.KwfDriverLicenseMapper">
 
-    <select id="findByDriverId" resultType="com.sckw.fleet.model.KwfDriverLicense" parameterType="java.lang.String" >
+    <select id="findByDriverId" resultType="com.sckw.fleet.model.KwfDriverLicense" parameterType="java.lang.Long" >
         SELECT
             id, driver_id driverId, driver_no driverNo, type, expire_time expireTime, grant_unit grantUnit,
             certificate_main certificateMain, certificate_revolt certificateRevolt, remark, status, create_by createBy,
             create_time createTime, update_by updateBy, update_time updateTime
         from kwf_driver_license
-        where del_flag = 0 and driver_id = #{driverId, jdbcType=VARCHAR}
+        where del_flag = 0 and driver_id = #{driverId, jdbcType=BIGINT}
     </select>
 
 </mapper>

+ 2 - 2
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverQualificationMapper.xml

@@ -2,13 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.fleet.dao.KwfDriverQualificationMapper">
 
-    <select id="findByDriverId" resultType="com.sckw.fleet.model.KwfDriverQualification" parameterType="java.lang.String" >
+    <select id="findByDriverId" resultType="com.sckw.fleet.model.KwfDriverQualification" parameterType="java.lang.Long" >
         SELECT
             id, driver_id driverId, quali_no qualiNo, type, expire_time expireTime, grant_unit grantUnit,
             certificate_main certificateMain, certificate_revolt certificateRevolt, remark, status, create_by createBy,
             create_time createTime, update_by updateBy, update_time updateTime
         from kwf_driver_qualification
-        where del_flag = 0 and driver_id = #{driverId, jdbcType=VARCHAR}
+        where del_flag = 0 and driver_id = #{driverId, jdbcType=BIGINT}
     </select>
 
 </mapper>

+ 8 - 0
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfFleetDriverMapper.xml

@@ -2,4 +2,12 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.fleet.dao.KwfFleetDriverMapper">
 
+    <select id="findByTruckDriver" resultType="com.sckw.fleet.model.KwfFleetDriver" parameterType="com.sckw.fleet.model.KwfFleetDriver" >
+        SELECT
+        id, fleet_id fleetId, driver_id driverId, ent_id entId, remark, status, create_by createBy, create_time createTime,
+        update_by updateBy, update_time updateTime FROM kwf_fleet_driver
+        where del_flag = 0
+        and driver_id = #{driverId, jdbcType=VARCHAR}
+        and ent_id = #{entId, jdbcType=VARCHAR}
+    </select>
 </mapper>

+ 8 - 0
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfFleetTruckMapper.xml

@@ -2,4 +2,12 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.fleet.dao.KwfFleetTruckMapper">
 
+    <select id="findByTruckFleet" resultType="com.sckw.fleet.model.KwfFleetTruck" parameterType="com.sckw.fleet.model.KwfFleetTruck" >
+        SELECT
+            id, fleet_id fleetId, truck_id truckId, ent_id entId, remark, status, create_by createBy, create_time createTime,
+            update_by updateBy, update_time updateTime FROM kwf_fleet_truck
+        where del_flag = 0
+        and truck_id = #{truckId, jdbcType=VARCHAR}
+        and ent_id = #{entId, jdbcType=VARCHAR}
+    </select>
 </mapper>

+ 2 - 2
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfTransportLicenseMapper.xml

@@ -2,14 +2,14 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.fleet.dao.KwfTransportLicenseMapper">
 
-    <select id="findByTruckId" resultType="com.sckw.fleet.model.KwfTransportLicense" parameterType="java.lang.String" >
+    <select id="findByTruckId" resultType="com.sckw.fleet.model.KwfTransportLicense" parameterType="java.lang.Long" >
         SELECT
             id, truck_id truckId, road_tran_no roadTranNo, firm_name firmName, business_license_no businessLicenseNo,
             grant_unit grantUnit, grant_time grantTime, expire_time expireTime, certificate_main certificateMain,
             certificate_revolt certificateRevolt, remark, create_by createBy, create_time createTime, update_by updateBy,
             update_time updateTime
         from kwf_transport_license
-        where del_flag = 0 and truck_id = #{truckId, jdbcType=VARCHAR}
+        where del_flag = 0 and truck_id = #{truckId, jdbcType=BIGINT}
     </select>
 
 </mapper>

+ 2 - 2
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfTruckLicenseMapper.xml

@@ -2,13 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.fleet.dao.KwfTruckLicenseMapper">
 
-    <select id="findByTruckId" resultType="com.sckw.fleet.model.KwfTruckLicense" parameterType="java.lang.String" >
+    <select id="findByTruckId" resultType="com.sckw.fleet.model.KwfTruckLicense" parameterType="java.lang.Long" >
         SELECT
             id, truck_id truckId, vin, driving_no drivingNo, owner, reg_time regTime, grant_unit grantUnit,
             grant_time grantTime, certificate_main certificateMain, certificate_revolt certificateRevolt,
             remark, create_by createBy, create_time createTime, update_by updateBy, update_time updateTime
         from kwf_truck_license
-        where del_flag = 0 and truck_id = #{truckId, jdbcType=VARCHAR}
+        where del_flag = 0 and truck_id = #{truckId, jdbcType=BIGINT}
     </select>
 
 </mapper>

+ 11 - 8
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfTruckMapper.xml

@@ -9,9 +9,9 @@
         left join kwf_truck_ent tre on tre.truck_id = tr.id
         left join kwf_truck_license trl on trl.truck_id = tr.id and trl.del_flag = 0
         left join kwf_transport_license tranl on tranl.truck_id = tr.id and tranl.del_flag = 0
-        left join kwf_fleet_truck flt on flt.id = tr.id and flt.del_flag = 0
+        left join kwf_fleet_truck flt on flt.truck_id = tr.id and flt.del_flag = 0
         left join kwf_fleet fl on fl.id = flt.fleet_id and fl.del_flag = 0
-        where tre.del_flag = 0 and tre.del_flag = 0
+        where tr.del_flag = 0 and tre.del_flag = 0
         <if test="entId != null and entId != ''">
             and tre.ent_id = #{entId, jdbcType=VARCHAR}
         </if>
@@ -52,7 +52,7 @@
 
     <select id="findPage" resultType="com.sckw.fleet.model.vo.KwfTruckVo" parameterType="java.util.Map" >
         SELECT
-        tr.id, tre.ent_id entId, tr.truck_no truckNo, tr.type, tr.energy_type energyType, tr.use_type useType,
+        tr.id, tr.ent_id entId, tr.truck_no truckNo, tr.type, tr.energy_type energyType, tr.use_type useType,
         tr.spec, tr.actual_weight actualWeight, tr.gross_weight grossWeight, tr.tare_weight tareWeight,
         tr.color, tr.eev, tr.trailer_no trailerNo, tr.total_complete totalComplete, tr.total_take totalTake,
         tr.total_weight totalWeight, tr.business_status businessStatus, tr.remark, tr.status,
@@ -64,16 +64,16 @@
         left join kwf_truck_ent tre on tre.truck_id = tr.id
         left join kwf_truck_license trl on trl.truck_id = tr.id and trl.del_flag = 0
         left join kwf_transport_license tranl on tranl.truck_id = tr.id and tranl.del_flag = 0
-        left join kwf_fleet_truck flt on flt.id = tr.id and flt.del_flag = 0
+        left join kwf_fleet_truck flt on flt.truck_id = tr.id and flt.del_flag = 0
         left join kwf_fleet fl on fl.id = flt.fleet_id and fl.del_flag = 0
-        where tre.del_flag = 0 and tre.del_flag = 0
+        where tr.del_flag = 0 and tre.del_flag = 0
         <if test="entId != null and entId != ''">
             and tre.ent_id = #{entId, jdbcType=VARCHAR}
         </if>
         <if test="truckNo != null and truckNo != ''">
             and tr.truck_no = #{truckNo, jdbcType=VARCHAR}
         </if>
-        <if test="type != null and type != ''">
+        <if test="truckType != null and truckType != ''">
             and tr.type = #{type, jdbcType=VARCHAR}
         </if>
         <if test="energyType != null and energyType != ''">
@@ -114,7 +114,7 @@
             tr.create_by createBy, tr.create_time createTime, tr.update_by updateBy, tr.update_time updateTime
         from kwf_truck tr
         left join kwf_truck_ent tre on tre.truck_id = tr.id
-        where tre.del_flag = 0 and tre.del_flag = 0
+        where tr.del_flag = 0 and tre.del_flag = 0
         <if test="entId != null and entId != ''">
             and tre.ent_id = #{entId, jdbcType=VARCHAR}
         </if>
@@ -156,8 +156,11 @@
             tr.create_by createBy, tr.create_time createTime, tr.update_by updateBy, tr.update_time updateTime
         from kwf_truck tr
         left join kwf_truck_ent tre on tre.truck_id = tr.id
-        where tre.del_flag = 0 and tre.del_flag = 0
+        where tr.del_flag = 0 and tre.del_flag = 0
         and tre.ent_id = #{entId, jdbcType=VARCHAR}
         and tr.id = #{id, jdbcType=VARCHAR}
     </select>
+
+
+
 </mapper>

+ 0 - 23
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java

@@ -147,29 +147,6 @@ public class KwoTradeOrderController {
         return HttpResult.ok("订单完结成功");
     }
 
-    /**
-     * @desc: 分页查询
-     * @author: yzc
-     * @date: 2023-07-12 17:31
-     * @Param completeOrderParam:
-     * @return: com.sckw.core.web.response.HttpResult
-     */
-    @PostMapping(value = "/select", produces = MediaType.APPLICATION_JSON_VALUE)
-    public HttpResult select(@RequestBody @Validated OrderListSelectParam orderListSelectParam) {
-        return HttpResult.ok(kwoTradeOrderService.select(orderListSelectParam));
-    }
-
-    /**
-     * @desc: 订单统计
-     * @author: yzc
-     * @date: 2023-07-12 17:31
-     * @Param completeOrderParam:
-     * @return: com.sckw.core.web.response.HttpResult
-     */
-    @PostMapping(value = "/statistic", produces = MediaType.APPLICATION_JSON_VALUE)
-    public HttpResult statistic(@RequestBody @Validated OrderListStatisticParam orderListStatisticParam) {
-        return HttpResult.ok(kwoTradeOrderService.statistic(orderListStatisticParam));
-    }
 
     /**
      * @desc: 订单列表导出

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

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
-import com.sckw.core.model.vo.TableStatisticRes;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.OrderGenerateUtils;
@@ -17,7 +16,6 @@ import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.model.*;
 import com.sckw.order.model.vo.req.*;
 import com.sckw.order.model.vo.res.OrderDetailRes;
-import com.sckw.order.model.vo.res.OrderListRes;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
 import com.sckw.stream.model.SckwBusSum;
@@ -142,11 +140,11 @@ public class KwoTradeOrderService {
                 list.add(address);
                 if (Objects.equals(e.getAddressType(), DictEnum.TORDER_ADDRESS_TYPE_1.getValue())) {
                     order.setLoadName(e.getName()).setLoadType(e.getType()).setLoadContacts(e.getContacts())
-                            .setLoadPhone(e.getPhone()).setLoadCityCode(e.getCityCode()).setLoadCityName(e.getCityName())
+                            .setLoadPhone(e.getPhone()).setLoadCityCode(String.valueOf(e.getCityCode())).setLoadCityName(e.getCityName())
                             .setLoadDetailAddress(e.getDetailAddress()).setLoadLat(e.getLat()).setLoadLng(e.getLng());
                 } else {
                     order.setUnloadName(e.getName()).setUnloadType(e.getType()).setUnloadContacts(e.getContacts())
-                            .setUnloadPhone(e.getPhone()).setUnloadCityCode(e.getCityCode()).setUnloadCityName(e.getCityName())
+                            .setUnloadPhone(e.getPhone()).setUnloadCityCode(String.valueOf(e.getCityCode())).setUnloadCityName(e.getCityName())
                             .setUnloadDetailAddress(e.getDetailAddress()).setUnloadLat(e.getLat()).setUnloadLng(e.getLng());
                 }
             });
@@ -607,15 +605,6 @@ public class KwoTradeOrderService {
     }
 
 
-    public List<OrderListRes> select(OrderListSelectParam param) {
-        return null;
-    }
-
-    public TableStatisticRes statistic(OrderListStatisticParam param) {
-        return null;
-    }
-
-
     public void export(CompleteOrderParam param) {
 
     }

+ 1 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -433,7 +433,7 @@ public class KwpGoodsService {
      * @author: yzc
      * @date: 2023-07-05 17:55
      * @Param params:
-     * @return: com.sckw.core.model.vo.TableRes
+     * @return: com.sckw.core.model.vo.TableStatisticRes
      */
     public TableStatisticRes statistic(GoodsListParam params) {
         TableStatisticRes res = new TableStatisticRes();

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

@@ -87,6 +87,10 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

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

@@ -1,12 +1,21 @@
 package com.sckw.report.controller;
 
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.easyexcel.RequestHolder;
+import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.report.service.KwOrderService;
+import com.sckw.report.service.param.TradeOrderListExport;
+import com.sckw.report.service.param.TradeOrderListExportParam;
+import com.sckw.report.service.param.TradeOrderListSelectParam;
+import com.sckw.report.service.param.TradeOrderListStatisticParam;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.http.MediaType;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * @author zk
@@ -20,9 +29,58 @@ public class KwOrderController {
 
     private final KwOrderService orderService;
 
+    /**
+     * @desc: 贸易订单详情
+     * @author: yzc
+     * @date: 2023-07-17 10:29
+     * @Param id:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
     @GetMapping("/tradeOrderDetail")
     public HttpResult detail(@RequestParam Long id) {
         return HttpResult.ok(orderService.tradeOrderDetail(id));
     }
 
+    /**
+     * @desc: 贸易订单列表分页查询
+     * @author: yzc
+     * @date: 2023-07-17 10:29
+     * @Param params:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/tradeOrderSelect", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult select(@RequestBody @Validated TradeOrderListSelectParam params) {
+        return HttpResult.ok(orderService.tradeOrderSelect(params));
+    }
+
+    /**
+     * @desc: 贸易订单列表统计查询
+     * @author: yzc
+     * @date: 2023-07-17 10:29
+     * @Param params:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/tradeOrderStatistic", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult statistic(@RequestBody @Validated TradeOrderListStatisticParam params) {
+        return HttpResult.ok(orderService.tradeOrderStatistic(params));
+    }
+
+    /**
+     * @desc: 贸易订单列表导出
+     * @author: yzc
+     * @date: 2023-07-17 10:29
+     * @Param params:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @PostMapping(value = "/tradeOrderExport", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult export(@RequestBody TradeOrderListExportParam params) {
+        HttpServletResponse response = RequestHolder.getResponse();
+        List<TradeOrderListExport> list = orderService.export(params);
+        if (CollectionUtils.isNotEmpty(list)) {
+            ExcelUtil.download(response, TradeOrderListExport.class, list);
+            return HttpResult.ok();
+        }
+        return HttpResult.error("没有可导出的数据");
+    }
+
 }

+ 191 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -1,15 +1,32 @@
 package com.sckw.report.service;
 
+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.TableBottom;
+import com.sckw.core.model.vo.TableStatisticRes;
+import com.sckw.core.model.vo.TableTop;
+import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.excel.utils.DateUtil;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.report.dao.SckwTradeOrderRepository;
+import com.sckw.report.service.param.*;
+import com.sckw.report.service.vo.OrderListRes;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
+import java.util.*;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
 /**
  * @author zk
  * @desc 订单服务
@@ -41,4 +58,178 @@ public class KwOrderService {
         SckwTradeOrder tradeOrder = mongoTemplate.findOne(query, SckwTradeOrder.class);
         return mongoTemplate.findOne(query, SckwTradeOrder.class);
     }
+
+    /**
+     * @desc: 贸易订单列表分页查询
+     * @author: yzc
+     * @date: 2023-07-17 18:04
+     * @Param params:
+     * @return: com.sckw.core.model.page.PageResult
+     */
+    public PageResult tradeOrderSelect(TradeOrderListSelectParam params) {
+        Query query = getQuery(params);
+        long count = mongoTemplate.count(query, SckwTradeOrder.class);
+        Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
+        SpringDataPageAble pageAble = new SpringDataPageAble(params.getPage(), params.getPageSize(), sort);
+        query.with(pageAble);
+        List<SckwTradeOrder> list = mongoTemplate.find(query, SckwTradeOrder.class);
+        List<OrderListRes> result = new ArrayList<>();
+        list.forEach(e -> {
+            OrderListRes order = BeanUtils.copyProperties(e, OrderListRes.class);
+                    order.setStatus(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(e.getStatus())))
+                            .setTrading(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
+                            .setDeliveryType(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
+                            .setPickupType(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
+                            .setConsignmentStatus(Objects.equals(e.getAmount(), e.getEntrustAmount()) ? "待托运" : "已托运")
+                            .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()));
+        });
+        return PageResult.build(params.getPage(), params.getPageSize(), count, result);
+    }
+
+    /**
+     * @desc: 组装query
+     * @author: yzc
+     * @date: 2023-07-17 18:08
+     * @Param params:
+     * @return: org.springframework.data.mongodb.core.query.Query
+     */
+    private Query getQuery(TradeOrderListStatisticParam params) {
+        Long entId = LoginUserHolder.getEntId();
+        Query query = new Query();
+        Criteria criteria = new Criteria();
+        criteria.and("delFlag").is(0);
+        //销售订单
+        if (Objects.equals(params.getOrderType(), 1)) {
+            criteria.and("supplyTopEntId").is(entId);
+        } else {
+            //采购订单
+            criteria.and("procureTopEntId").is(entId);
+        }
+        //交易方式
+        if (CollectionUtils.isNotEmpty(params.getTradings())) {
+            criteria.and("trading").in(params.getTradings());
+        }
+        //提货方式
+        if (CollectionUtils.isNotEmpty(params.getPickupTypes())) {
+            criteria.and("pickupType").in(params.getPickupTypes());
+        }
+        //交付类型
+        if (CollectionUtils.isNotEmpty(params.getDeliveryTypes())) {
+            criteria.and("deliveryType").in(params.getDeliveryTypes());
+        }
+        //下单方式
+        if (CollectionUtils.isNotEmpty(params.getSources())) {
+            criteria.and("source").in(params.getSources());
+        }
+        //日期范围
+        if (Objects.nonNull(params.getStartCreateTime()) && Objects.nonNull(params.getEndCreateTime())) {
+            criteria.andOperator(Criteria.where("createTime").gte(params.getStartCreateTime()), Criteria.where("createTime")
+                    .lte(params.getEndCreateTime()));
+        } else if (Objects.nonNull(params.getStartCreateTime())) {
+            criteria.and("createTime").gte(params.getStartCreateTime());
+        } else if (Objects.nonNull(params.getEndCreateTime())) {
+            criteria.and("createTime").lte(params.getEndCreateTime());
+        }
+        List<Criteria> orCriteriaList = new ArrayList<>();
+        //关键字模糊匹配
+        if (StringUtils.isNotBlank(params.getKeywords())) {
+            Pattern pattern = Pattern.compile("^.*" + params.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+            orCriteriaList.add(Criteria.where("tOrderNo").regex(pattern));
+            orCriteriaList.add(Criteria.where("procureFirmName").regex(pattern));
+            orCriteriaList.add(Criteria.where("supplyFirmName").regex(pattern));
+            orCriteriaList.add(Criteria.where("goodsName").regex(pattern));
+        }
+        //装卸货地址
+        if (CollectionUtils.isNotEmpty(params.getShippingAddressCodes())) {
+            params.getShippingAddressCodes().forEach(c -> {
+                Pattern pattern = Pattern.compile("^" + c.substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
+                orCriteriaList.add(Criteria.where("loadCityCode").regex(pattern));
+            });
+        }
+        if (CollectionUtils.isNotEmpty(params.getUnloadingAddressCodes())) {
+            params.getUnloadingAddressCodes().forEach(c -> {
+                Pattern pattern = Pattern.compile("^" + c.substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
+                orCriteriaList.add(Criteria.where("unloadCityCode").regex(pattern));
+            });
+        }
+        if (CollectionUtils.isNotEmpty(orCriteriaList)) {
+            criteria.orOperator(orCriteriaList);
+        }
+        return query.addCriteria(criteria);
+    }
+
+    /**
+     * @desc: 贸易订单列表统计查询
+     * @author: yzc
+     * @date: 2023-07-17 18:05
+     * @Param params:
+     * @return: com.sckw.core.model.vo.TableStatisticRes
+     */
+    public TableStatisticRes tradeOrderStatistic(TradeOrderListStatisticParam params) {
+        TableStatisticRes res = new TableStatisticRes();
+        Query query = getQuery(params);
+        List<SckwTradeOrder> orders = mongoTemplate.find(query, SckwTradeOrder.class);
+        Map<Integer, List<SckwTradeOrder>> map = orders.stream().collect(Collectors.groupingBy(SckwTradeOrder::getStatus));
+        List<TableTop> tableTops = new ArrayList<>();
+        List<DictEnum> tOrderStatusEnums = DictEnum.getEnumsByType(DictTypeEnum.TORDER_STATUS.getType());
+        tOrderStatusEnums.forEach(e -> {
+            Integer value = Integer.valueOf(e.getValue());
+            List<SckwTradeOrder> list = map.get(value);
+            int total = CollectionUtils.isEmpty(list) ? 0 : list.size();
+            TableTop tableTop = new TableTop();
+            tableTop.setName(e.getLabel()).setValue(value).setTotal(total);
+            tableTops.add(tableTop);
+        });
+        TableBottom tableBottom = new TableBottom();
+        tableBottom.setTotal(CollectionUtils.isEmpty(orders) ? 0 : orders.size());
+        res.setTableTops(tableTops).setTableBottom(tableBottom);
+        return res;
+    }
+
+    /**
+     * @desc: 贸易订单列表导出
+     * @author: yzc
+     * @date: 2023-07-17 18:05
+     * @Param params:
+     * @return: java.util.List<com.sckw.report.service.param.TradeOrderListExport>
+     */
+
+    public List<TradeOrderListExport> export(TradeOrderListExportParam params) {
+        Query query = new Query();
+        if (CollectionUtils.isNotEmpty(params.getIds())) {
+            Long entId = LoginUserHolder.getEntId();
+            Criteria criteria = new Criteria();
+            criteria.and("tOrderId").in(params.getIds()).and("delFlag").is(0);
+            query.addCriteria(criteria);
+            //销售订单
+            if (Objects.equals(params.getOrderType(), 1)) {
+                criteria.and("supplyTopEntId").is(entId);
+            } else {
+                //采购订单
+                criteria.and("procureTopEntId").is(entId);
+            }
+        } else {
+            query = getQuery(params);
+        }
+        List<SckwTradeOrder> orders = mongoTemplate.find(query, SckwTradeOrder.class);
+        if (CollectionUtils.isEmpty(orders)) {
+            return Collections.emptyList();
+        }
+        List<TradeOrderListExport> list = new ArrayList<>();
+        orders.forEach(e -> {
+            TradeOrderListExport export = BeanUtils.copyProperties(e, TradeOrderListExport.class);
+            export.setStatus(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(e.getStatus())))
+                    .setTrading(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
+                    .setDeliveryType(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
+                    .setPickupType(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
+                    .setConsignmentStatus(Objects.equals(e.getAmount(), e.getEntrustAmount()) ? "待托运" : "已托运")
+                    .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()))
+                    .setUnitPrice(String.valueOf(e.getUnitPrice())).setPrice(String.valueOf(e.getPrice()))
+                    .setAmount(String.valueOf(e.getAmount())).setActualAmount(String.valueOf(e.getActualAmount()))
+                    .setStartTime(Objects.isNull(e.getStartTime()) ? null : DateUtil.dateToStr(e.getStartTime()))
+                    .setAddedTime(Objects.isNull(e.getEndTime()) ? null : DateUtil.dateToStr(e.getEndTime()));
+            list.add(export);
+        });
+        return list;
+    }
 }

+ 78 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/SpringDataPageAble.java

@@ -0,0 +1,78 @@
+package com.sckw.report.service.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+
+/**
+ * @author yzc
+ * @desc 分页请求参数
+ * @date 2023/7/17 0010
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Getter
+@Setter
+public class SpringDataPageAble implements Pageable {
+
+    private Integer pageNumber = 1;
+    private Integer pageSize = 10;
+    private Sort sort;
+
+    public void setSort(Sort sort) {
+        this.sort = sort;
+    }
+
+    // 当前页面
+    @Override
+    public int getPageNumber() {
+        return this.pageNumber;
+    }
+
+    // 每一页显示的条数
+
+    @Override
+    public int getPageSize() {
+        return this.pageSize;
+    }
+
+    // 第二页所需要增加的数量
+
+    @Override
+    public long getOffset() {
+        return (long) (getPageNumber() - 1) * getPageSize();
+    }
+
+    @Override
+    public Sort getSort() {
+        return sort;
+    }
+
+    @Override
+    public Pageable next() {
+        return null;
+    }
+
+    @Override
+    public Pageable previousOrFirst() {
+        return null;
+    }
+
+    @Override
+    public Pageable first() {
+        return null;
+    }
+
+    @Override
+    public Pageable withPage(int pageNumber) {
+        return null;
+    }
+
+    @Override
+    public boolean hasPrevious() {
+        return false;
+    }
+}

+ 95 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExport.java

@@ -0,0 +1,95 @@
+package com.sckw.report.service.param;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.sckw.excel.annotation.ExcelContext;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @desc: 交易列表信息导出对象
+ * @author: yzc
+ * @date: 2023-07-17 10:36
+ */
+@Data
+@Accessors(chain = true)
+@ExcelContext(fileName = "交易列表信息", sheetName = "交易列表信息")
+public class TradeOrderListExport {
+    @ExcelProperty(value = "上架状态", index = 0)
+    private String status;
+
+    @ExcelProperty(value = "订单编号", index = 1)
+    private String tOrderNo;
+
+    @ExcelProperty(value = "采购单位", index = 2)
+    private String procureFirmName;
+
+    @ExcelProperty(value = "销售单位", index = 3)
+    private String supplyFirmName;
+
+    @ExcelProperty(value = "交付类型", index = 4)
+    private String deliveryType;
+
+    @ExcelProperty(value = "提货方式", index = 5)
+    private String pickupType;
+
+    @ExcelProperty(value = "托运状态", index = 6)
+    private String consignmentStatus;
+
+    @ExcelProperty(value = "下单方式", index = 7)
+    private String source;
+
+    @ExcelProperty(value = "付款类型", index = 8)
+    private String trading;
+
+    @ExcelProperty(value = "关联合同", index = 9)
+    private String contractNo;
+
+    @ExcelProperty(value = "承包方式", index = 10)
+    private String contractSigningWay;
+
+    @ExcelProperty(value = "商品名称", index = 11)
+    private String manageName;
+
+    @ExcelProperty(value = "规格", index = 12)
+    private String goodsSpec;
+
+    @ExcelProperty(value = "上架时间", index = 13)
+    private String addedTime;
+
+    @ExcelProperty(value = "单价/元", index = 14)
+    private String unitPrice;
+
+    @ExcelProperty(value = "订单金额", index = 15)
+    private String price;
+
+    @ExcelProperty(value = "订单目标", index = 16)
+    private String amount;
+
+    @ExcelProperty(value = "已履约量", index = 17)
+    private String actualAmount;
+
+    @ExcelProperty(value = "归属项目", index = 14)
+    private String projectName;
+
+    @ExcelProperty(value = "装货地点", index = 15)
+    private String loadCityName;
+
+    @ExcelProperty(value = "卸货地点", index = 16)
+    private String unloadCityName;
+
+    @ExcelProperty(value = "计划开始时间", index = 17)
+    private String startTime;
+
+    @ExcelProperty(value = "计划结束时间", index = 17)
+    private String endTime;
+
+    @ExcelProperty(value = "备注", index = 14)
+    private String remark;
+
+    @ExcelProperty(value = "创造人", index = 15)
+    private String creatByName;
+
+    @ExcelProperty(value = "创建时间", index = 16)
+    private String createTime;
+
+}

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/OrderListExportParam.java → sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExportParam.java

@@ -1,4 +1,4 @@
-package com.sckw.order.model.vo.req;
+package com.sckw.report.service.param;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -14,7 +14,7 @@ import java.util.List;
 @Getter
 @Setter
 @ToString
-public class OrderListExportParam extends OrderListStatisticParam {
+public class TradeOrderListExportParam extends TradeOrderListStatisticParam {
 
     /**
      * 订单id集合

+ 2 - 2
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/OrderListSelectParam.java → sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListSelectParam.java

@@ -1,4 +1,4 @@
-package com.sckw.order.model.vo.req;
+package com.sckw.report.service.param;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -12,7 +12,7 @@ import lombok.ToString;
 @Getter
 @Setter
 @ToString
-public class OrderListSelectParam extends OrderListStatisticParam {
+public class TradeOrderListSelectParam extends TradeOrderListStatisticParam {
 
     /**
      * 当前页码

+ 14 - 9
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/OrderListStatisticParam.java → sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListStatisticParam.java

@@ -1,6 +1,9 @@
-package com.sckw.order.model.vo.req;
+package com.sckw.report.service.param;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -16,13 +19,15 @@ import java.util.List;
 @Getter
 @Setter
 @ToString
-public class OrderListStatisticParam {
+public class TradeOrderListStatisticParam {
 
     /**
      * 订单类型(1销售订单、2采购订单)
      */
+    @Min(value = 1, message = "非法订单类型")
+    @Max(value = 2, message = "非法订单类型")
+    @NotNull(message = "订单类型不能为空")
     private Integer orderType;
-
     /**
      * 订单编号、单位、商品名称(模糊匹配共用)
      */
@@ -30,24 +35,24 @@ public class OrderListStatisticParam {
     /**
      * 创建时间开始(yyyy-MM-dd)
      */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date startCreateTime;
 
     /**
      * 创建时间结束(yyyy-MM-dd)
      */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date endCreateTime;
 
     /**
-     * 装货地址id集合
+     * 装货地址code集合
      */
-    private List<Long> shippingAddressIds;
+    private List<String> shippingAddressCodes;
 
     /**
-     * 装货地址id集合
+     * 装货地址code集合
      */
-    private List<Long> unloadingAddressIds;
+    private List<String> unloadingAddressCodes;
 
     /**
      * 交易方式(预付款、货到付款)集合

+ 162 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java

@@ -0,0 +1,162 @@
+package com.sckw.report.service.vo;
+
+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.time.LocalDate;
+import java.util.Date;
+
+/**
+ * @desc: 订单列表响应参数
+ * @author: yzc
+ * @date: 2023-07-12 17:45
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class OrderListRes {
+
+    /**
+     * 订单id
+     */
+    private Long tOrderId;
+    /**
+     * 订单状态
+     */
+    private String status;
+    /**
+     * 订单编号
+     */
+    private String tOrderNo;
+    /**
+     * 采购企业主键ID
+     */
+    private Long procureEntId;
+
+    /**
+     * 采购单位
+     */
+    private String procureFirmName;
+
+    /**
+     * 销售单位主键ID
+     */
+    private Long supplyEntId;
+    /**
+     * 销售单位
+     */
+    private String supplyFirmName;
+    /**
+     * 交易方式(预付款、货到付款)
+     */
+    private String trading;
+    /**
+     * 交付类型(签发交付、签收交付)
+     */
+    private String deliveryType;
+    /**
+     * 提货方式(采方自提、供应配送)
+     */
+    private String pickupType;
+    /**
+     * 托运状态
+     */
+    private String consignmentStatus;
+    /**
+     * 下单方式(自主下单/代客下单)
+     */
+    private String source;
+
+    /**
+     * 合同主键
+     */
+    private Long contractId;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 合同mc
+     */
+    private String contractName;
+
+    /**
+     * 合同签约方式
+     */
+    private String contractSigningWay;
+    /**
+     * 商品id
+     */
+    private Long goodsId;
+    /**
+     * 商品名称
+     */
+    private String goodsName;
+    /**
+     * 单位(吨、方、箱、件)
+     */
+    private String goodsSpec;
+    /**
+     * 订单成交单价
+     */
+    private BigDecimal unitPrice;
+    /**
+     * 订单金额
+     */
+    private BigDecimal price;
+
+    /**
+     * 订单总量
+     */
+    private BigDecimal amount;
+    /**
+     * 已委托量
+     */
+    private BigDecimal entrustAmount;
+    /**
+     * 实际交付量
+     */
+    private BigDecimal actualAmount;
+    /**
+     * 归属项目
+     */
+    private String projectName;
+    /**
+     * 装货地点
+     */
+    private String loadCityName;
+    /**
+     * 卸货地点
+     */
+    private String unloadCityName;
+    /**
+     * 计划开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate startTime;
+    /**
+     * 计划结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate endTime;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 创建人
+     */
+    private String creatByName;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+}