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

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

czh 2 жил өмнө
parent
commit
780047055f
16 өөрчлөгдсөн 559 нэмэгдсэн , 109 устгасан
  1. 2 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java
  2. 29 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/LogisticsOrderEnum.java
  3. 50 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/ProjectStatusEnum.java
  4. 35 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/EasyExcel.java
  5. 1 5
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/ExcelSelected.java
  6. 6 4
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/Translate.java
  7. 98 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/config/easyexcel/ExcelConverter.java
  8. 15 0
      sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/ExcelExportController.java
  9. 32 0
      sckw-modules/sckw-example/src/main/java/com/sckw/example/model/vo/ProjectPageVo.java
  10. 15 0
      sckw-modules/sckw-example/src/main/java/com/sckw/example/service/ExcelExportService.java
  11. 2 2
      sckw-modules/sckw-product/src/main/java/com/sckw/product/dubbo/GoodsInfoServiceImpl.java
  12. 41 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/AcceptCarriageOrderExcelVo.java
  13. 43 6
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/ConsignOrderExcelVo.java
  14. 59 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WayBillDetailDTO.java
  15. 9 4
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDataVO.java
  16. 122 80
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

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

@@ -37,7 +37,7 @@ public enum CarWaybillEnum {
     /**
      * 已核-通过
      */
-    APPROVAL_PASS(8, "approvalPass", "8", "已核单"),
+    APPROVAL_PASS(8, "approvalPass", "8", "审核通过"),
     /**
      * 拒接单
      */
@@ -53,7 +53,7 @@ public enum CarWaybillEnum {
     /**
      * 已核单-不通过
      */
-    APPROVAL_NO_PASS(12, "revoked", "12", "已撤销"),
+    APPROVAL_NO_PASS(12, "revoked", "12", "审核不通过"),
     ;
 
     private final Integer code;

+ 29 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/LogisticsOrderEnum.java

@@ -109,4 +109,33 @@ public enum LogisticsOrderEnum {
         }
         return codeList;
     }
+
+
+
+    public static String getDestination(String status) {
+        for (LogisticsOrderEnum logisticsOrderEnum : LogisticsOrderEnum.values()) {
+            if (logisticsOrderEnum.getStatus().equals(status)) {
+                return logisticsOrderEnum.getDestination();
+            }
+        }
+        return null;
+    }
+
+    public static LogisticsOrderEnum getLogisticsOrderEnumByCode(Integer code) {
+        for (LogisticsOrderEnum logisticsOrderEnum : LogisticsOrderEnum.values()) {
+            if (logisticsOrderEnum.getCode().equals(code)) {
+                return logisticsOrderEnum;
+            }
+        }
+        return null;
+    }
+
+    public static LogisticsOrderEnum getEntityByCode(Integer code) {
+        for (LogisticsOrderEnum logisticsOrderEnum : LogisticsOrderEnum.values()) {
+            if (logisticsOrderEnum.getCode().equals(code)) {
+                return logisticsOrderEnum;
+            }
+        }
+        return null;
+    }
 }

+ 50 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/ProjectStatusEnum.java

@@ -0,0 +1,50 @@
+package com.sckw.core.model.enums;
+
+import lombok.Getter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Getter
+public enum ProjectStatusEnum {
+    /**
+     *
+     */
+    SET_UP(0, "立项"),
+    RUNNING(1, "施工中"),
+    FINISH(2, "已竣工"),
+    ;
+    public static Map<Integer, ProjectStatusEnum> MAPS = new HashMap<>();
+
+    static {
+        for (ProjectStatusEnum e : values()) {
+            MAPS.put(e.getCode(), e);
+        }
+    }
+
+    private final Integer code;
+    private final String name;
+
+    ProjectStatusEnum(Integer code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    public static ProjectStatusEnum codeOf(Integer code) {
+        for (ProjectStatusEnum logisticsOrderEnum : ProjectStatusEnum.values()) {
+            if (logisticsOrderEnum.getCode().equals(code)) {
+                return logisticsOrderEnum;
+            }
+        }
+        return null;
+    }
+
+    public static ProjectStatusEnum getProjectStatusEnumByCode(Integer code) {
+        for (ProjectStatusEnum logisticsOrderEnum : ProjectStatusEnum.values()) {
+            if (logisticsOrderEnum.getCode().equals(code)) {
+                return logisticsOrderEnum;
+            }
+        }
+        return null;
+    }
+}

+ 35 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/EasyExcel.java

@@ -0,0 +1,35 @@
+package com.sckw.excel.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * @author lfdc
+ * @version v1
+ * @create 2020-11-28 15:37:35
+ * @copyright 指定枚举类注解
+ */
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface EasyExcel {
+    /**
+     * 控件类型
+     *
+     * @return
+     */
+    Class<? extends Enum> type();
+
+    /**
+     * 默认翻译字段类型
+     *
+     * @return
+     */
+    int status() default 0;
+
+    /**
+     * 是否选择翻译
+     *
+     * @return
+     */
+    boolean flag() default true;
+}

+ 1 - 5
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/ExcelSelected.java

@@ -3,17 +3,13 @@ package com.sckw.excel.annotation;
 import java.lang.annotation.*;
 
 /**
- * easy导出下拉框注解
+ * easy导出下拉框注解 标注导出的列为下拉框类型,并为下拉框设置内容
  *
  * @author lfdc
  * @version v1
  * @create 2020-11-28 15:37:35
  * @copyright
  */
-
-/**
- * 标注导出的列为下拉框类型,并为下拉框设置内容
- */
 @Documented
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.FIELD)

+ 6 - 4
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/annotation/Translate.java

@@ -3,17 +3,18 @@ package com.sckw.excel.annotation;
 
 import java.lang.annotation.*;
 
+
 /**
- *
  * 对某个字段进行翻译
- *
  * 可以标注在类和方法上
  * 1. 标注在类上:适用于对整个实体的指定字段进行翻译
  * 2. 标注在方法上:适用于对方法的返回值中的data数据实体进行翻译
- *
  * 标注在类和方法上时,如果同时存在@Translates和@Translate,则@Translates会生效,@Translate不会生效
  *
- *
+ * @author lfdc
+ * @version v1
+ * @create 2020-11-28 15:37:35
+ * @copyright
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target({ElementType.TYPE, ElementType.METHOD})
@@ -32,6 +33,7 @@ public @interface Translate {
      * 字段值为字符串
      */
     boolean isString() default true;
+
     /**
      * 字段值为数组
      */

+ 98 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/config/easyexcel/ExcelConverter.java

@@ -0,0 +1,98 @@
+package com.sckw.excel.config.easyexcel;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.excel.annotation.EasyExcel;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * @author lfdc
+ * @description 状态枚举信息获取(code->value,1代表失败 进行转换)
+ * @date 2023-07-28 10:07:51
+ */
+public class ExcelConverter implements Converter<String> {
+    @Override
+    public Class supportJavaTypeKey() {
+        //指定状态码类型
+        return String.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        //指定需要获取的参数类型
+        return CellDataTypeEnum.STRING;
+    }
+
+    /**
+     * 导出时转换
+     *
+     * @param value               状态码
+     * @param contentProperty     字段属性
+     * @param globalConfiguration 全局配置
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public WriteCellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        //获取字段属性中的注解
+        Field field = contentProperty.getField();
+        EasyExcel easyExcel = field.getAnnotation(EasyExcel.class);
+        //获取注解中的枚举信息
+        Class<? extends Enum> type = easyExcel.type();
+        //获取枚举类的方法名 “codeOf”就是自己编写的函数,Integer.class 指定入参类型
+        int status = easyExcel.status();
+        boolean flag = easyExcel.flag();
+        Object invoke = null;
+        if (flag) {
+            invoke = verifyTranslate(value, status, type);
+        } else {
+            //将转换的值进行返回
+            return new WriteCellData(value.toString());
+        }
+        //将转换的值进行返回
+        return new WriteCellData(invoke.toString());
+    }
+
+    /**
+     * 应对不同枚举处理
+     * @param value
+     * @param status
+     * @param type
+     * @return
+     * @throws NoSuchMethodException
+     * @throws InvocationTargetException
+     * @throws IllegalAccessException
+     */
+    private Object verifyTranslate(String value, int status, Class<? extends Enum> type) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
+        Object invoke = null;
+        if (NumberConstant.ONE == status) {
+            //获取枚举类的方法名 【destination】就是自己编写的函数,String.class 指定入参类型
+            Method codeOf = type.getMethod("getDestination", String.class);
+            //反射执行方法,此方法得到的是一个枚举实例(具体得到什么,结合自身项目)
+            invoke = codeOf.invoke(type, value);
+        } else if (NumberConstant.TWO == status) {
+            //获取枚举类的方法名 【destination】就是自己编写的函数,String.class 指定入参类型
+            Method codeOf = type.getMethod("getName", Integer.class);
+            //反射执行方法,此方法得到的是一个枚举实例(具体得到什么,结合自身项目)
+            invoke = codeOf.invoke(type, Integer.getInteger(value));
+        } else {
+            //获取枚举类的方法名 “codeOf”就是自己编写的函数,Integer.class 指定入参类型
+            Method codeOf = type.getMethod("getEntityByCode", Integer.class);
+            //反射执行方法,此方法得到的是一个枚举实例(具体得到什么,结合自身项目)
+            invoke = codeOf.invoke(type, value);
+            //枚举实例调用getname方法,得到name的值
+            Method getName = invoke.getClass().getMethod("getDestination");
+            //将转换的值进行返回
+            invoke = String.valueOf(getName.invoke(invoke));
+        }
+        return invoke;
+    }
+
+}

+ 15 - 0
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/ExcelExportController.java

@@ -9,6 +9,7 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.example.dao.KwsDeptDao;
 import com.sckw.example.model.KwsDept;
+import com.sckw.example.model.vo.ProjectPageVo;
 import com.sckw.example.model.vo.SysUserVo;
 import com.sckw.example.service.ExcelExportService;
 import com.sckw.excel.easyexcel.ExcelImportListener;
@@ -189,4 +190,18 @@ public class ExcelExportController {
             throw new RuntimeException(e);
         }
     }
+
+    /**
+     * 导出注解翻译示例
+     */
+    @RequestMapping(value = "/easyExcelDemo", method = RequestMethod.GET)
+    public HttpResult easyExcelDemo() {
+        HttpServletResponse response = RequestHolder.getResponse();
+        List<ProjectPageVo> list = excelExportService.easyExcelDemo();
+        if (!CollectionUtils.isEmpty(list)) {
+            ExcelUtil.download(response, ProjectPageVo.class, list);
+            return null;
+        }
+        return HttpResult.error("没有可导出的数据");
+    }
 }

+ 32 - 0
sckw-modules/sckw-example/src/main/java/com/sckw/example/model/vo/ProjectPageVo.java

@@ -0,0 +1,32 @@
+package com.sckw.example.model.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.enums.ProjectStatusEnum;
+import com.sckw.excel.annotation.EasyExcel;
+import com.sckw.excel.annotation.ExcelContext;
+import com.sckw.excel.config.easyexcel.ExcelConverter;
+import lombok.Data;
+
+/**
+ * @author lfdc
+ * @description
+ * @date 2023-07-28 11:07:15
+ */
+@Data
+@ExcelContext(fileName = "企业列表", sheetName = "企业列表")
+public class ProjectPageVo {
+    /**
+     * 项目状态 ,index = 0
+     */
+    @ExcelProperty(value = "项目状态", converter = ExcelConverter.class)
+    @EasyExcel(type = ProjectStatusEnum.class, status = NumberConstant.ONE)
+    private Integer status;
+
+    /**
+     * 项目备注,index = 0
+     */
+    @ExcelProperty(value = "项目备注")
+    private String remark;
+
+}

+ 15 - 0
sckw-modules/sckw-example/src/main/java/com/sckw/example/service/ExcelExportService.java

@@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelReader;
 import com.alibaba.excel.read.metadata.ReadSheet;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.example.model.vo.ProjectPageVo;
 import com.sckw.example.model.vo.SysEnterpriseVo;
 import com.sckw.example.model.vo.SysUserVo;
 import com.sckw.excel.common.FileType;
@@ -15,6 +16,7 @@ import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
+
 import java.io.*;
 import java.net.URLEncoder;
 import java.util.ArrayList;
@@ -208,4 +210,17 @@ public class ExcelExportService {
         }
         return HttpResult.ok(HttpStatus.SUCCESS_CODE);
     }
+
+    public List<ProjectPageVo> easyExcelDemo() {
+        ProjectPageVo projectPageVo = new ProjectPageVo();
+        projectPageVo.setStatus(0);
+        projectPageVo.setRemark("0");
+        ProjectPageVo projectPageVo1 = new ProjectPageVo();
+        projectPageVo1.setStatus(1);
+        projectPageVo1.setRemark("0");
+        List<ProjectPageVo> list = new ArrayList<>();
+        list.add(projectPageVo);
+        list.add(projectPageVo1);
+        return list;
+    }
 }

+ 2 - 2
sckw-modules/sckw-product/src/main/java/com/sckw/product/dubbo/GoodsInfoServiceImpl.java

@@ -57,9 +57,9 @@ public class GoodsInfoServiceImpl implements GoodsInfoService {
         if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 3L, 3L))) {
             return HttpResult.error("业务繁忙,请稍后再试!");
         }
-        com.sckw.product.model.KwpGoods goods = kwpGoodsService.selectGoodsById(id);
+        com.sckw.product.model.KwpGoods goods = kwpGoodsService.selectById(id);
         if (Objects.isNull(goods)) {
-            return HttpResult.error("商品不存在或已下架!");
+            return HttpResult.error("商品不存在!");
         }
         BigDecimal goodsAmount = goods.getAmount();
         if (goods.getAmount().compareTo(amount) < 0) {

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

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

+ 43 - 6
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/ConsignOrderExcelVo.java

@@ -1,7 +1,11 @@
 package com.sckw.report.service.vo;
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.enums.LogisticsOrderEnum;
+import com.sckw.excel.annotation.EasyExcel;
 import com.sckw.excel.annotation.ExcelContext;
+import com.sckw.excel.config.easyexcel.ExcelConverter;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -17,68 +21,77 @@ public class ConsignOrderExcelVo implements Serializable {
     /**
      * 结算周期
      */
-    @ExcelProperty(value = "结算周期")
+//    @ExcelProperty(value = "结算周期")
     private String accountsCycle;
     /**
      * 发起人
      */
-    @ExcelProperty(value = "发起人")
+    //    @ExcelProperty(value = "发起人")
     private String appointor;
     /**
      * 计费方式
      */
-    @ExcelProperty(value = "计费方式")
+    //     @ExcelProperty(value = "计费方式")
     private String billingMode;
     /**
      * 承运单位
      */
-    @ExcelProperty(value = "承运单位")
+    //    @ExcelProperty(value = "承运单位")
     private String carrierCompany;
     /**
      * 承运联系人
      */
-    @ExcelProperty(value = "承运联系人")
+    //   @ExcelProperty(value = "承运联系人")
     private String carrierContacts;
     /**
      * 承运订单
      */
-    @ExcelProperty(value = "承运订单")
+    //    @ExcelProperty(value = "承运订单")
     private String carrierOrder;
     /**
      * 承运联系电话
      */
+    //    @ExcelProperty(value = "承运联系电话")
     private String carrierPhone;
     /**
      * 分配承运量
      */
+    //   @ExcelProperty(value = "分配承运量")
     private String carryingCapacity;
     /**
      * 托运单位
      */
+    //   @ExcelProperty(value = "托运单位")
     private String consignCompany;
     /**
      * 托运联系人
      */
+    //   @ExcelProperty(value = "托运联系人")
     private String consignContacts;
     /**
      * 托运联系电话
      */
+    //    @ExcelProperty(value = "托运联系电话")
     private String consignPhone;
     /**
      * 合同
      */
+    //   @ExcelProperty(value = "合同")
     private String contract;
     /**
      * 扣亏货值/元/吨
      */
+    //    @ExcelProperty(value = "扣亏货值/元/吨")
     private String deficitAmount;
     /**
      * 货物名称
      */
+    //    @ExcelProperty(value = "货物名称")
     private String goodsName;
     /**
      * 装货地点
      */
+//    @ExcelProperty(value = "装货地点")
     private String loadAddress;
     /**
      * 数据库id
@@ -87,63 +100,87 @@ public class ConsignOrderExcelVo implements Serializable {
     /**
      * 托运订单号
      */
+//    @ExcelProperty(value = "托运订单号")
     private String lOrderNo;
     /**
      * 合理损耗
      */
+    //    @ExcelProperty(value = "合理损耗")
     private String loss;
     /**
      * 计划时间
      */
+    //   @ExcelProperty(value = "计划时间")
     private String plannedDateTime;
     /**
      * 运价
      */
+    //    @ExcelProperty(value = "运价")
     private String price;
     /**
      * 收货联系人
      */
+    //   @ExcelProperty(value = "收货联系人")
     private String receiveGoodsContacts;
     /**
      * 计划收货时间
      */
+    //   @ExcelProperty(value = "计划收货时间")
     private String receiveGoodsDateTime;
     /**
      * 收货电话
      */
+    //     @ExcelProperty(value = "收货电话")
     private String receiveGoodsPhone;
     /**
      * 备注
      */
+    //     @ExcelProperty(value = "备注")
     private String remark;
     /**
      * 发货联系人
      */
+    //    @ExcelProperty(value = "发货联系人")
     private String shipmentsContacts;
     /**
      * 计划发货时间
      */
+    //    @ExcelProperty(value = "计划发货时间")
     private String shipmentsDateTime;
     /**
      * 发货电话
      */
+    //    @ExcelProperty(value = "发货电话")
     private String shipmentsPhone;
     /**
      * 签约方式
      */
+    //    @ExcelProperty(value = "签约方式")
     private String signing;
     /**
      * 状态
      */
+    @EasyExcel(type = LogisticsOrderEnum.class, status = NumberConstant.ONE, flag = false)
+    @ExcelProperty(value = "状态", converter = ExcelConverter.class)
     private String status;
     /**
      * 卸货地点
      */
+    //    @ExcelProperty(value = "卸货地点")
     private String unloadAddress;
     /**
      * 关联承运订单号
      */
+    //    @ExcelProperty(value = "关联承运订单号")
     private String wOrderNo;
+    /**
+     * 创建时间
+     */
+    //   @ExcelProperty(value = "创建时间")
     private String createTime;
+    /**
+     * 修改时间
+     */
+    //    @ExcelProperty(value = "修改时间")
     private String updateTime;
 }

+ 59 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WayBillDetailDTO.java

@@ -10,27 +10,80 @@ import lombok.Data;
  **/
 @Data
 public class WayBillDetailDTO {
+    /**
+     * 运单ID
+     */
     private Long wOrderId;
+    /**
+     * 运单号
+     */
     private String wOrderNo;
+    /**
+     * 承运单号
+     */
     private String lOrderNo;
+    /**
+     * 车辆ID
+     */
     private Long truckId;
+    /**
+     * 车牌号
+     */
     private String truckNo;
+    /**
+     * 司机ID
+     */
     private Long driverId;
+    /**
+     * 司机姓名
+     */
     private String driverName;
+    /**
+     * 司机电话
+     */
     private String driverPhone;
+    /**
+     * 司机身份证
+     */
     private String driverIdcard;
+    /**
+     * 运单ID
+     */
     private Long lOrderId;
+    /**
+     * 分配任务量
+     */
     private String entrustAmount;
+    /**
+     * 运单类型
+     */
     private String type;
+    /**
+     * 计划开始时间
+     */
     private String startTime;
+    /**
+     * 计划结束时间
+     */
     private String endTime;
+    /**
+     * 创建人
+     */
     private String createBy;
+    /**
+     * 计费方式
+     */
     private String priceType;
+    /**
+     * 商品名
+     */
     private String goodsName;
-    private String startAddressId;
-    private String endAddressId;
-    private String startLocationName;
-    private String startLocationAddress;
-    private String endLocationName;
-    private String endLocationAddress;
+    /**
+     * 装载地址
+     */
+    private String loadDetailAddress;
+    /**
+     * 卸货地址
+     */
+    private String unloadDetailAddress;
 }

+ 9 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDataVO.java

@@ -15,21 +15,26 @@ public class WaybillDataVO {
     /**
      * 基础信息
      */
-    private WayBillDetailDTO transportMessage;
+    private WayBillDetailDTO transport;
 
     /**
      * 车辆人员
      */
-    private WaybillCarVO carMessage;
+    private WaybillCarVO car;
 
     /**
      * 履约协议
      */
-    private WaybillTicketVO agreementMessage;
+    private WaybillTicketVO agreement;
 
     /**
      * 业务日志
      */
-    private List<WaybillTrackVO> logsMessage;
+    private List<WaybillTrackVO> logs;
+
+    /**
+     * 进度数据
+     */
+    private List<WaybillStatusVO> process;
 }
 

+ 122 - 80
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -80,89 +80,131 @@ public class WaybillManagementService {
      * @return
      */
     public HttpResult waybillData(@Param("id") Long id) {
-        WayBillDetailDTO kwtWaybillOrder = kwtWaybillOrderMapper.selectWaybillRelate(id);
-        // 收发地址
-        List<KwtWaybillOrderAddress> kwtWaybillOrderAddressList = kwtWaybillOrderAddressMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderAddress>()
-                .eq(KwtWaybillOrderAddress::getWOrderId, kwtWaybillOrder.getLOrderId()));
-        if (CollectionUtils.isNotEmpty(kwtWaybillOrderAddressList)) {
-            for (KwtWaybillOrderAddress kwtWaybillOrderAddress : kwtWaybillOrderAddressList) {
-                // 1装货地址、2卸货地址
-                if (kwtWaybillOrderAddress.getAddressType().equals(NumberConstant.ONE)) {
-                    kwtWaybillOrder.setStartLocationName(kwtWaybillOrderAddress.getName());
-                    kwtWaybillOrder.setStartLocationAddress(kwtWaybillOrderAddress.getDetailAddress());
-                }
-                if (kwtWaybillOrderAddress.getAddressType().equals(NumberConstant.TWO)) {
-                    kwtWaybillOrder.setEndLocationName(kwtWaybillOrderAddress.getName());
-                    kwtWaybillOrder.setEndLocationAddress(kwtWaybillOrderAddress.getDetailAddress());
-                }
+        List<Integer> statuses = initWaybillIndexStatus();
+        // 初始化各状态
+        Map<String, WaybillStatusVO> statusMap = new HashMap<>();
+        statuses.forEach(e -> {
+            WaybillStatusVO waybillStatusVO = new WaybillStatusVO();
+            waybillStatusVO.setStatus(false);
+            waybillStatusVO.setCode(e);
+            switch (e){
+                case 2 -> waybillStatusVO.setDestination("司机接单");
+                case 3 -> waybillStatusVO.setDestination("已出车");
+                case 4 -> waybillStatusVO.setDestination("到装货地");
+                case 5 -> waybillStatusVO.setDestination("已装货");
+                case 6 -> waybillStatusVO.setDestination("到卸货地");
+                case 7 -> waybillStatusVO.setDestination("已卸货");
+                case 8 -> waybillStatusVO.setDestination("已核单");
             }
-        }
-        WaybillDataVO waybillDataVO = new WaybillDataVO();
-        waybillDataVO.setTransportMessage(kwtWaybillOrder);
+            statusMap.put(String.valueOf(e), waybillStatusVO);
+        });
 
-        // 车辆信息
-        List<String> list = new ArrayList<>(NumberConstant.SIXTEEN);
-        list.add(kwtWaybillOrder.getTruckNo());
-        Map<String, RTruckVo> trucks = remoteFleetService.findTruck(list);
-        WaybillCarVO waybillCarVO = new WaybillCarVO();
-        if (CollectionUtils.isNotEmpty(trucks)) {
-            waybillCarVO.setType(trucks.get(0).getTruckType());
-            waybillCarVO.setTruckId(String.valueOf(trucks.get(0).getId()));
-            waybillCarVO.setTrailerNo(trucks.get(0).getTrailerNo());
-        }
-        waybillCarVO.setDriverId(String.valueOf(kwtWaybillOrder.getDriverId()))
-                .setTruckNo(kwtWaybillOrder.getTruckNo())
-                .setDriverName(kwtWaybillOrder.getDriverName())
-                .setDriverPhone(kwtWaybillOrder.getDriverPhone());
-        waybillDataVO.setCarMessage(waybillCarVO);
-        // 履约信息
-        List<KwtWaybillOrderTicket> kwtWaybillOrderTicket = kwtWaybillOrderTicketMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
-                .eq(KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getWOrderId()));
-        WaybillTicketVO waybillTicketVO = new WaybillTicketVO();
-        if (CollectionUtils.isNotEmpty(kwtWaybillOrderTicket)) {
-            for (KwtWaybillOrderTicket ticket : kwtWaybillOrderTicket) {
-                // 装货
-                if (ticket.getType().equals(NumberConstant.ONE)) {
-                    waybillTicketVO.setLoadUrl(ticket.getUrls())
-                            .setLoadWeight(String.valueOf(ticket.getGrossAmount()))
-                            .setLoadTime(String.valueOf(ticket.getCreateTime()));
-                }
-                // 卸货
-                if (ticket.getType().equals(NumberConstant.TWO)) {
-                    waybillTicketVO.setUnloadUrl(ticket.getUrls())
-                            .setUnloadWeight(String.valueOf(ticket.getGrossAmount()))
-                            .setUnloadTime(String.valueOf(ticket.getCreateTime()));
-                }
-            }
-        }
-        waybillDataVO.setAgreementMessage(waybillTicketVO);
-        // 业务日志
-        List<WaybillTrackVO> waybillTrackVOS = new ArrayList<>();
-        List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
-                .eq(KwtWaybillOrderTrack::getWOrderId, kwtWaybillOrder.getWOrderId()));
-        if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
-            List<Long> userIds = new ArrayList<>();
-            for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
-                userIds.add(track.getCreateBy());
-            }
-            List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
-            for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
-                WaybillTrackVO waybillTrackVO = new WaybillTrackVO();
-                waybillTrackVO.setId(String.valueOf(track.getId()))
-                        .setRemark(track.getRemark())
-                        .setStatus(String.valueOf(track.getStatus()))
-                        .setCreateBy(String.valueOf(track.getCreateBy()));
-                for (UserCacheResDto user : users) {
-                    if (Long.valueOf(user.getId()).equals(track.getCreateBy())) {
-                        waybillTrackVO.setCreateByName(user.getName())
-                                .setCreateByPhone(user.getPhone());
-                        break;
-                    }
-                }
-                waybillTrackVOS.add(waybillTrackVO);
-            }
+//        WayBillDetailDTO kwtWaybillOrder = kwtWaybillOrderMapper.selectWaybillRelate(id);
+//        // 收发地址
+//        List<KwtWaybillOrderAddress> kwtWaybillOrderAddressList = kwtWaybillOrderAddressMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderAddress>()
+//                .eq(KwtWaybillOrderAddress::getWOrderId, kwtWaybillOrder.getLOrderId()));
+//        if (CollectionUtils.isNotEmpty(kwtWaybillOrderAddressList)) {
+//            for (KwtWaybillOrderAddress kwtWaybillOrderAddress : kwtWaybillOrderAddressList) {
+//                // 1装货地址、2卸货地址
+//                if (kwtWaybillOrderAddress.getAddressType().equals(NumberConstant.ONE)) {
+//                    kwtWaybillOrder.setStartLocationName(kwtWaybillOrderAddress.getName());
+//                    kwtWaybillOrder.setStartLocationAddress(kwtWaybillOrderAddress.getDetailAddress());
+//                }
+//                if (kwtWaybillOrderAddress.getAddressType().equals(NumberConstant.TWO)) {
+//                    kwtWaybillOrder.setEndLocationName(kwtWaybillOrderAddress.getName());
+//                    kwtWaybillOrder.setEndLocationAddress(kwtWaybillOrderAddress.getDetailAddress());
+//                }
+//            }
+//        }
+//        WaybillDataVO waybillDataVO = new WaybillDataVO();
+//        waybillDataVO.setTransport(kwtWaybillOrder);
+//
+//        // 车辆信息
+//        List<String> list = new ArrayList<>();
+//        list.add(kwtWaybillOrder.getTruckNo());
+////        Map<String, RTruckVo> trucks = remoteFleetService.findTruck(list);
+//        Map<String, RTruckVo> trucks = new HashMap<>();
+//        WaybillCarVO waybillCarVO = new WaybillCarVO();
+//        if (CollectionUtils.isNotEmpty(trucks)) {
+//            waybillCarVO.setType(trucks.get(0).getTruckType());
+//            waybillCarVO.setTruckId(String.valueOf(trucks.get(0).getId()));
+//            waybillCarVO.setTrailerNo(trucks.get(0).getTrailerNo());
+//        }
+//        waybillCarVO.setDriverId(String.valueOf(kwtWaybillOrder.getDriverId()))
+//                .setTruckNo(kwtWaybillOrder.getTruckNo())
+//                .setDriverName(kwtWaybillOrder.getDriverName())
+//                .setDriverPhone(kwtWaybillOrder.getDriverPhone());
+//        waybillDataVO.setCar(waybillCarVO);
+//        // 履约信息
+//        List<KwtWaybillOrderTicket> kwtWaybillOrderTicket = kwtWaybillOrderTicketMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
+//                .eq(KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getWOrderId()));
+//        WaybillTicketVO waybillTicketVO = new WaybillTicketVO();
+//        if (CollectionUtils.isNotEmpty(kwtWaybillOrderTicket)) {
+//            for (KwtWaybillOrderTicket ticket : kwtWaybillOrderTicket) {
+//                // 装货
+//                if (ticket.getType().equals(NumberConstant.ONE)) {
+//                    waybillTicketVO.setLoadUrl(ticket.getUrls())
+//                            .setLoadWeight(String.valueOf(ticket.getGrossAmount()))
+//                            .setLoadTime(String.valueOf(ticket.getCreateTime()));
+//                }
+//                // 卸货
+//                if (ticket.getType().equals(NumberConstant.TWO)) {
+//                    waybillTicketVO.setUnloadUrl(ticket.getUrls())
+//                            .setUnloadWeight(String.valueOf(ticket.getGrossAmount()))
+//                            .setUnloadTime(String.valueOf(ticket.getCreateTime()));
+//                }
+//            }
+//        }
+//        waybillDataVO.setAgreement(waybillTicketVO);
+//        // 业务日志
+//        List<WaybillTrackVO> waybillTrackVOS = new ArrayList<>();
+//        List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
+//                .eq(KwtWaybillOrderTrack::getWOrderId, kwtWaybillOrder.getWOrderId()));
+//        if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
+//            List<Long> userIds = new ArrayList<>();
+//            for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
+//                userIds.add(track.getCreateBy());
+//            }
+//            List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
+//            Map<String, UserCacheResDto> userMap = new HashMap<>();
+//            if(!ObjectUtils.isEmpty(users)) {
+//                users.forEach(e -> userMap.put(String.valueOf(e.getId()), e));
+//            }
+//            for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
+//                WaybillTrackVO waybillTrackVO = new WaybillTrackVO();
+//                if(statusMap.containsKey(String.valueOf(track.getStatus()))) {
+//                    statusMap.get(String.valueOf(track.getStatus()))
+//                            .setCreateTime(DateUtil.getDateTime(track.getCreateTime()))
+//                            .setCreateByName(userMap.get(String.valueOf(track.getCreateBy())).getName())
+//                            .setStatus(true)
+//                            .setId(track.getId());
+//                }
+//                waybillTrackVO.setId(String.valueOf(track.getId()))
+//                        .setRemark(track.getRemark())
+//                        .setStatus(String.valueOf(track.getStatus()))
+//                        .setCreateBy(userMap.get(String.valueOf(track.getCreateBy())).getName());
+//                waybillTrackVOS.add(waybillTrackVO);
+//            }
+//        }
+//        waybillDataVO.setLogs(waybillTrackVOS);
+//        waybillDataVO.setProcess(statusMap.values().stream().toList());
+//        return HttpResult.ok(waybillDataVO);
+
+        WaybillDataVO waybillDataVO = new WaybillDataVO();
+        Criteria criteria = new Criteria();
+        criteria.and("wOrderId").is(id);
+        criteria.and("entId").is(LoginUserHolder.getEntId());
+        criteria.and("delFlag").is(NumberConstant.ZERO);
+        Query queryFormat = new Query(criteria);
+        SckwWaybillOrder info = mongoTemplate.findOne(queryFormat, SckwWaybillOrder.class);
+        WayBillDetailDTO wayBillDetailDTO = new WayBillDetailDTO();
+        if(!ObjectUtils.isEmpty(info)) {
+            wayBillDetailDTO.setDriverId(info.getDriverId());
+            wayBillDetailDTO.setDriverName(info.getDriverName());
+            wayBillDetailDTO.setDriverPhone(info.getDriverPhone());
+            wayBillDetailDTO.setDriverId(info.getDriverId());
         }
-        waybillDataVO.setLogsMessage(waybillTrackVOS);
+        waybillDataVO.setTransport(wayBillDetailDTO);
         return HttpResult.ok(waybillDataVO);
     }