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

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

czh 2 лет назад
Родитель
Сommit
fd11340bea
24 измененных файлов с 762 добавлено и 169 удалено
  1. 10 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java
  2. 46 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/Data.java
  3. 151 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/Result.java
  4. 32 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/Status.java
  5. 46 0
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java
  6. 0 10
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java
  7. 1 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CompleteLogisticsOrderParam.java
  8. 10 1
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java
  9. 36 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/RWaybillOrderDto.java
  10. 128 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/RWaybillOrderVo.java
  11. 12 0
      sckw-modules/sckw-file/src/main/java/com/sckw/file/controller/FileApiController.java
  12. 19 2
      sckw-modules/sckw-file/src/main/java/com/sckw/file/service/FileService.java
  13. 5 0
      sckw-modules/sckw-fleet/pom.xml
  14. 7 4
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java
  15. 5 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckGpsVo.java
  16. 1 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverService.java
  17. 54 21
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java
  18. 24 29
      sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java
  19. 4 5
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/dto/OrderCheckDTO.java
  20. 60 77
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  21. 11 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java
  22. 28 14
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java
  23. 39 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/dubbo/TransportDubboServiceImpl.java
  24. 33 1
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

+ 10 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java

@@ -90,6 +90,16 @@ public class DateUtils extends DateUtil {
         return format(date, DATE_PATTERN);
     }
 
+    /**
+     * 日期格式化 日期格式为:yyyy-MM-dd HH:mm:ss
+     *
+     * @param date 日期
+     * @return 返回yyyy-MM-dd格式日期
+     */
+    public static String formatV1(Date date) {
+        return format(date, DATE_TIME_PATTERN);
+    }
+
     /**
      * 日期格式化 日期格式为:yyyy-MM-dd
      *

+ 46 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/Data.java

@@ -0,0 +1,46 @@
+package com.sckw.core.web.response;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @description: 数据封装
+ * @author: lfdc
+ * @copyright
+ * @create: 2022-01-27 09:49
+ **/
+public class Data {
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private Object body;
+
+    public static Data getData() {
+        return new Data();
+    }
+
+    public static Data getData(Object data) {
+        Data da = new Data();
+        da.setBody(data);
+        return da;
+    }
+
+
+    public Object getBody() {
+        return this.body;
+    }
+
+
+    public void setBody(Object body) {
+        this.body = body;
+    }
+
+
+    public String toString() {
+        return "Data(body=" + this.getBody() + ")";
+    }
+
+    public Data() {
+    }
+
+    public Data(Object body) {
+        this.body = body;
+    }
+}

+ 151 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/Result.java

@@ -0,0 +1,151 @@
+package com.sckw.core.web.response;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+/**
+ * @description:
+ * @author: LengFaQiang
+ * @copyright 北京联众信安科技有限公司
+ * @create: 2022-01-27 10:17
+ **/
+public class Result {
+    private static final long serialVersionUID = 8295075842951977226L;
+    private int status;
+    private String msg;
+    //    @JsonProperty
+    private Object data;
+
+
+    public Result() {
+    }
+
+    public Result(Status status) {
+        this.status = status.getCode();
+        this.msg = status.getMsg();
+        this.data = Data.getData();
+    }
+
+    public Result(Status status, Object data) {
+        this.status = status.getCode();
+        this.data = data;
+    }
+
+
+    public Result(Status status, String msg) {
+        this.status = status.getCode();
+        this.msg = msg;
+//        this.data = Data.getData();
+    }
+
+    public Result(Status status, int msgCode) {
+        this.status = status.getCode();
+        this.msg = String.valueOf(msgCode);
+//        this.data = Data.getData();
+    }
+
+
+    public Result(Status status, String msg, Object data) {
+        this.status = status.getCode();
+        this.msg = msg;
+        this.data = data;
+    }
+
+    public Result(Status status, int msgCode, Object data) {
+        this.status = status.getCode();
+        this.msg = String.valueOf(msgCode);
+        this.data = data;
+    }
+
+
+    @JsonIgnore
+    public boolean isSuccess() {
+        return this.status == Status.SUCCESS.getCode();
+    }
+
+    @JsonIgnore
+    public boolean nonSuccess() {
+        return this.status != Status.SUCCESS.getCode();
+    }
+
+    public Result success() {
+        return new Result(Status.SUCCESS);
+    }
+
+    public Result illegal() {
+        return new Result(Status.BAD_REQUEST);
+    }
+
+    public Result unauthorized() {
+        return new Result(Status.UNAUTHORIZED);
+    }
+
+    public Result forbidden() {
+        return new Result(Status.FORBIDDEN);
+    }
+
+    public Result notFound() {
+        return new Result(Status.NOT_FOUND);
+    }
+
+    public Result failure() {
+        return new Result(Status.FAILURE);
+    }
+
+    public Result conflict() {
+        return new Result(Status.CONFLICT);
+    }
+
+    public int getStatus() {
+        return this.status;
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+
+    public Object getData() {
+        return this.data;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public void setData(Data data) {
+        this.data = data;
+    }
+
+    public String toString() {
+        return "Result(status=" + this.getStatus() + ", msg=" + this.getMsg() + ", data=" + this.getData() + ")";
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    public Result(int status, String msg, Object data) {
+        this.status = status;
+        this.msg = msg;
+        this.data = data;
+    }
+
+    public static Result build(Status status, Object data) {
+        return new Result(status, data);
+    }
+
+    public static Result build(Status status, String msg, Object data) {
+        return new Result(status, msg, data);
+    }
+
+    public static Result build(Status status, String msg) {
+        return new Result(status, msg);
+    }
+}

+ 32 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/Status.java

@@ -0,0 +1,32 @@
+package com.sckw.core.web.response;
+
+/**
+ * @description: 状态枚举
+ * @author: lfdc
+ * @create: 2022-01-27 09:43
+ **/
+public enum Status {
+    SUCCESS(200, "操作成功"),
+    BAD_REQUEST(400, "操作验证失败"),
+    UNAUTHORIZED(401, "操作未授权"),
+    FORBIDDEN(403, "操作被拒绝"),
+    NOT_FOUND(404, "未知操作"),
+    CONFLICT(409, "请求发生冲突"),
+    FAILURE(500, "操作失败");
+
+    private int code;
+    private String msg;
+
+    private Status(int code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public int getCode() {
+        return this.code;
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+}

+ 46 - 0
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/enums/MessageEnum.java

@@ -115,6 +115,52 @@ public enum MessageEnum {
                         "terminal,ios,android"),
 
 
+    /**
+     * 托运订单-发起物流托运
+     * 触发点-贸易订单物流托运确认/承运订单分包托运确认
+     *
+     */
+    INITIATING_LOGISTICS_CONSIGNMENT("BUSINESS", "BUSINESS_INITIATING_LOGISTICS_CONSIGNMENT", "发起物流托运",
+            "贵司发起了对【${companyName}】的物流分配计划,请留意后续消息;订单号:${orderNo}","terminal,ios,android"),
+
+    /**
+     * 托运订单-自建物流订单
+     */
+    NEW_LOGISTICS_ORDER("BUSINESS", "BUSINESS_NEW_LOGISTICS_ORDER", "自建物流订单",
+            "贵司通过自建物流订单,发起了对【${companyName}】的物流分配计划,请留意后续消息;订单号:${orderNo}","terminal,ios,android"),
+
+    /**
+     * 托运订单-撤回物流分配计划
+     */
+    CANCELLATION_LOGISTICS("BUSINESS", "BUSINESS_CANCELLATION_LOGISTICS", "撤回物流分配计划",
+            "贵司撤回了分配给【${companyName}】的物流分配计划,请及时确认;订单号:${orderNo}","terminal,ios,android"),
+
+    /**
+     * 托运订单-承运方拒绝订单
+     */
+    REJECT_ORDER("BUSINESS", "BUSINESS_REJECT_ORDER", "承运方拒绝订单",
+            "你的物流托运任务被【【${companyName}】拒绝接单,请及时查看;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 承运订单-有新分配的承运任务
+     */
+    NEW_CARRIAGE_ORDER("BUSINESS", "BUSINESS_NEW_CARRIAGE_ORDER", "有新分配的承运任务",
+            "【${companyName}】给您分配了物流承运计划,请及时查看;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 承运订单-自建物流订单
+     */
+    CARRIAGE_NEW_LOGISTICS_ORDER("BUSINESS", "BUSINESS_CARRIAGE_NEW_LOGISTICS_ORDER", "自建物流订单",
+            "贵司通过自建物流订单,发起了对【${companyName}】的物流承运计划,请及时通知往来单位;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 承运订单-拒绝分配计划
+     */
+    CARRIAGE_DISALLOTMENT("BUSINESS", "BUSINESS_CARRIAGE_DISALLOTMENT", "拒绝分配计划",
+            "贵司拒绝了【${companyName}】的物流分配计划,请及时通知往来单位;订单号:${orderNo}","terminal,ios,android"),
+    /**
+     * 承运订单-托运方撤回承运任务
+     */
+    CARRIAGE_CANCELLATION_LOGISTICS("BUSINESS", "BUSINESS_CARRIAGE_CANCELLATION_LOGISTICS", "托运方撤回承运任务",
+            "【${companyName}】撤销了分配给您的物流承运计划,请及时查看;订单号:${orderNo}","terminal,ios,android"),
+
 
     ;
 

+ 0 - 10
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java

@@ -64,16 +64,6 @@ public interface TradeOrderInfoService {
      */
     void updateAssociateStatement(UpdateAssociateStatementParam param);
 
-    /**
-     * @desc: 是否关联企业  true是,false否 (废弃)
-     * @author: yzc
-     * @date: 2023-08-16 16:20
-     * @Param entId:
-     * @return: java.lang.Boolean
-     */
-    @Deprecated
-    Boolean associateEnt(Long entId);
-
     /**
      * @desc: 是否关联企业  true是,false否
      * @author: yzc

+ 1 - 1
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CompleteLogisticsOrderParam.java

@@ -40,7 +40,7 @@ public class CompleteLogisticsOrderParam implements Serializable {
     private BigDecimal actualUnloadAmount;
 
     /**
-     * 物流订单是否已全部完结
+     * 物流订单是否已全部完结(废弃)
      */
     private Boolean isAllComplete;
 

+ 10 - 1
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java

@@ -4,10 +4,11 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.transport.api.model.dto.AccountCheckingBindDTO;
 import com.sckw.transport.api.model.dto.AddressResDTO;
 import com.sckw.transport.api.model.dto.LogisticsOrderDTO;
+import com.sckw.transport.api.model.dto.RWaybillOrderDto;
 import com.sckw.transport.api.model.param.ContractSignLogisticsParam;
 import com.sckw.transport.api.model.param.LogisticsOrderParam;
 import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
-
+import com.sckw.transport.api.model.vo.RWaybillOrderVo;
 import java.util.List;
 import java.util.Map;
 
@@ -106,4 +107,12 @@ public interface TransportDubboService {
      * @param param
      */
     void contractSignLogisticsCompleted(ContractSignLogisticsParam param);
+
+    /**
+     * @param params 参数
+     * @desc 查询车辆运单
+     * @author zk
+     * @date 2023/9/6
+     **/
+    List<RWaybillOrderVo> findWaybillOrder(RWaybillOrderDto params);
 }

+ 36 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/RWaybillOrderDto.java

@@ -0,0 +1,36 @@
+package com.sckw.transport.api.model.dto;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * desc 车辆运单
+ * author zk
+ * date 2023/9/6 0006
+ */
+@Data
+public class RWaybillOrderDto implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -2991208083876944003L;
+
+    /**
+     * 车牌号
+     */
+    private String truckNo;
+
+    /**
+     * busStatus 状态 2出车/3执行/4完结
+     */
+    private Integer busStatus;
+
+    public RWaybillOrderDto() {
+    }
+
+    public RWaybillOrderDto(String truckNo, Integer busStatus) {
+        this.truckNo = truckNo;
+        this.busStatus = busStatus;
+    }
+}

+ 128 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/RWaybillOrderVo.java

@@ -0,0 +1,128 @@
+package com.sckw.transport.api.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * desc 车辆运单
+ * author zk
+ * date 2023/9/6 0006
+ */
+@Data
+public class RWaybillOrderVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -2991208083876944003L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 企业id
+     */
+    private Long entId;
+
+    /**
+     * 物流订单id(kwt_logistics_order)
+     */
+    private Long lOrderId;
+
+    /**
+     * 编号
+     */
+    private String wOrderNo;
+
+    /**
+     * 单据类型(1:趟次;2:循环)
+     */
+    private Integer type;
+
+    /**
+     * 车辆信息ID
+     */
+    private Long truckId;
+
+    /**
+     * 车牌号
+     */
+    private String truckNo;
+
+    /**
+     * 司机id
+     */
+    private Long driverId;
+
+    /**
+     * 司机姓名
+     */
+    private String driverName;
+
+    /**
+     * 司机手机号码
+     */
+    private String driverPhone;
+
+    /**
+     * 司机身份证号
+     */
+    private String driverIdcard;
+
+    /**
+     * 已委托量
+     */
+    private BigDecimal entrustAmount;
+
+    /**
+     * 卸货重量
+     */
+    private BigDecimal unloadAmount;
+
+    /**
+     * 装货重量
+     */
+    private BigDecimal loadAmount;
+
+    /**
+     * 亏吨重量
+     */
+    private BigDecimal deficitAmount;
+
+    /**
+     * 亏吨扣款
+     */
+    private BigDecimal deficitPrice;
+
+    /**
+     * 计划开始时间
+     */
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    /**
+     * 计划结束时间
+     */
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    /**
+     * 用户状态(待受理、待运输、运输中、已完成、已取消)
+     */
+    private Integer status;
+
+    /**
+     * 出车时间
+     */
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date departureTime;
+}

+ 12 - 0
sckw-modules/sckw-file/src/main/java/com/sckw/file/controller/FileApiController.java

@@ -3,6 +3,7 @@ package com.sckw.file.controller;
 import com.sckw.core.model.file.FileInfo;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.core.web.response.Result;
 import com.sckw.file.api.dto.FileInfoDTO;
 import com.sckw.file.service.FileService;
 import com.sckw.file.service.dubbo.FileDubboApiServiceImpl;
@@ -122,6 +123,17 @@ public class FileApiController {
         return fileService.uploadFileInfo(file);
     }
 
+
+    /**
+     * app-前端调用接口上传oss
+     * @param file
+     * @return
+     */
+    @RequestMapping(value = "/appUploadFileInfo", method = RequestMethod.POST)
+    public Result appUploadFileInfo(@RequestParam("file") MultipartFile file) {
+        return fileService.appUploadFileInfo(file);
+    }
+
     /**
      * dubbo接收文件信息保存至数据库
      * @param fileInfo

+ 19 - 2
sckw-modules/sckw-file/src/main/java/com/sckw/file/service/FileService.java

@@ -13,6 +13,8 @@ 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.core.web.response.Result;
+import com.sckw.core.web.response.Status;
 import com.sckw.file.api.dto.FileInfoDTO;
 import com.sckw.file.config.FileListConfig;
 import com.sckw.file.dao.KwsFileInfoDao;
@@ -249,19 +251,34 @@ public class FileService {
 
     public HttpResult uploadFileInfo(MultipartFile file) {
         boolean flag = checkFileFormat(file);
-        if (!flag){
+        if (!flag) {
             throw new RuntimeException("上传文件格式错误!");
         }
         FileInfo fileInfo = FileUtils.getFileDataList(file);
         fileInfo.setType(FileEnum.FILE_STORE_TYPE_OSS.getFileType());
         FileInfo returnFileInfo = FileUtils.uploadFileInfo(file, fileInfo, FileEnum.FILE_STORE_TYPE_OSS);
         FileInfoVO fileInfoVO = new FileInfoVO();
-        BeanUtils.copyProperties(returnFileInfo,fileInfoVO);
+        BeanUtils.copyProperties(returnFileInfo, fileInfoVO);
         return HttpResult.ok(fileInfoVO);
     }
 
+
+    public Result appUploadFileInfo(MultipartFile file) {
+        boolean flag = checkFileFormat(file);
+        if (!flag) {
+            return Result.build(Status.FAILURE, "上传文件格式错误!");
+        }
+        FileInfo fileInfo = FileUtils.getFileDataList(file);
+        fileInfo.setType(FileEnum.FILE_STORE_TYPE_OSS.getFileType());
+        FileInfo returnFileInfo = FileUtils.uploadFileInfo(file, fileInfo, FileEnum.FILE_STORE_TYPE_OSS);
+        FileInfoVO fileInfoVO = new FileInfoVO();
+        BeanUtils.copyProperties(returnFileInfo, fileInfoVO);
+        return Result.build(Status.SUCCESS, fileInfoVO);
+    }
+
     /**
      * 上传文件->oss文件格式校验
+     *
      * @param file
      * @return
      */

+ 5 - 0
sckw-modules/sckw-fleet/pom.xml

@@ -69,6 +69,11 @@
             <artifactId>sckw-fleet-api</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-transport-api</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-file-api</artifactId>

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

@@ -334,8 +334,11 @@ public class KwfTruckController {
      * @date 2023/8/2
      **/
     @GetMapping("/findDetailByTruckNo")
-    public HttpResult findDetailByTruckNo(String truckNo) {
-        Map<String, Object> detail = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+    public HttpResult findDetailByTruckNo(@RequestParam String truckNo) {
+        if (StringUtils.isBlank(truckNo)) {
+            return HttpResult.error("车牌号不能为空!");
+        }
+        /*Map<String, Object> detail = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         detail.put("truckNo", truckNo);
         detail.put("driverName", "赵先生");
         detail.put("driverPhone", "17358629955");
@@ -344,8 +347,8 @@ public class KwfTruckController {
         detail.put("lat", "29.48"+new Random().nextInt(10000));
         detail.put("lng", "103.53"+new Random().nextInt(10000));
         detail.put("speed", new Random().nextInt(100));
-        detail.put("gpsTime", DateUtils.getCurrentTime());
-        return HttpResult.ok(detail);
+        detail.put("gpsTime", DateUtils.getCurrentTime());*/
+        return HttpResult.ok(truckService.findDetailByTruckNo(truckNo));
     }
 
 }

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

@@ -35,6 +35,11 @@ public class KwfTruckGpsVo {
      */
     private String lng;
 
+    /**
+     *详细地址
+     */
+    private String detailAddress;
+
     /**
      *速度
      */

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

@@ -134,7 +134,7 @@ public class KwfDriverService {
                         put("authStatus", report.get("authStatus"));
                     }});
                 }
-                driverDetailVo.setTrucks(trucks);
+                driverDetailVo.setTrucks(trucks.stream().distinct().collect(Collectors.toList()));
             }
             return driverDetailVo;
         }

+ 54 - 21
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java

@@ -28,6 +28,9 @@ 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 com.sckw.transport.api.dubbo.TransportDubboService;
+import com.sckw.transport.api.model.dto.RWaybillOrderDto;
+import com.sckw.transport.api.model.vo.RWaybillOrderVo;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -63,6 +66,8 @@ public class KwfTruckService {
     KwfFleetTruckMapper fleetTruckDao;
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private TransportDubboService transportDubboService;
 
     /**
      * @param key 主键id
@@ -634,7 +639,7 @@ public class KwfTruckService {
     public List<KwfTruckGpsVo> findTruckGps(List<String> truckNos) {
         /**车辆查询**/
         List<KwfTruckGpsVo> truckGpsList = new ArrayList<>();
-        Map queryParams = new HashMap<>(Global.NUMERICAL_SIXTEEN){{ put("truckNos", truckNos);}};
+        Map<String, Object> queryParams = new HashMap<>(Global.NUMERICAL_SIXTEEN){{ put("truckNos", truckNos);}};
         List<KwfTruckMonitorVo> truckList = findTruckMonitor(queryParams);
         if (truckList == null || truckList.size() == 0) {
             return truckGpsList;
@@ -682,27 +687,36 @@ public class KwfTruckService {
      * @date 2023/9/6
      **/
     public Map<String, Object> findDetailByTruckNo(String truckNo) {
+        //定位信息
+        KwfTruckGpsVo truckGps = findTruckLocate(truckNo);
+        //运单信息
+        RWaybillOrderVo waybillOrder = getWaybillOrder(truckNo, Global.NUMERICAL_THREE);
+        String firmName = LoginEntHolder.getFirmName();
+        if (LoginUserHolder.getSystemType() == SystemTypeEnum.MANAGE.getCode()) {
+            List<KwfTruck> trucks = truckDao.findTruck(new HashMap<>(Global.NUMERICAL_SIXTEEN){{put("truckNo", truckNo);}});
+            KwfTruck truck = CollectionUtils.isEmpty(trucks) ? null : trucks.get(Global.NUMERICAL_ZERO);
+            if (truck != null) {
+                //企业数据集
+                List<Long> entIds = new ArrayList<>() {{
+                    add(truck.getEntId());
+                }};
+                Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
+                EntCacheResDto ent = ents == null ? null : ents.get(truck.getEntId());
+                firmName = ent != null ? ent.getFirmName() : null;
+            }
+        }
+
         Map<String, Object> detail = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         detail.put("truckNo", truckNo);
-        detail.put("firmName", LoginEntHolder.getFirmName());
-        /*
-        鲁EH2975 承运单位:东营启正运输有限公司
-        当前位置:山东省东营市垦利区昊隆路西100米
-        GPS状态:77km/h
-        定位时间:2023-01-01  13:21:47
-        张晓波 18508243826
-        车辆轨迹 运单开始时间-结束时间
-        关联订单:202305010001*/
-
-        /*detail.put("truckNo", truckNo);
-        detail.put("driverName", "赵先生");
-        detail.put("driverPhone", "17358629955");
-        detail.put("firmName", "东旭物流有限公司");
-        detail.put("detailAddress", "四川省成都市xxx路10号");
-        detail.put("lat", "29.48"+new Random().nextInt(10000));
-        detail.put("lng", "103.53"+new Random().nextInt(10000));
-        detail.put("speed", new Random().nextInt(100));
-        detail.put("gpsTime", DateUtils.getCurrentTime());*/
+        detail.put("firmName", firmName);
+        detail.put("detailAddress", truckGps != null ? truckGps.getDetailAddress() : null);
+        detail.put("speed", truckGps != null ? truckGps.getSpeed() : null);
+        detail.put("gpsTime", truckGps != null ? truckGps.getGpsTime() : null);
+        detail.put("driverName", waybillOrder != null ? waybillOrder.getDriverName() : null);
+        detail.put("driverPhone", waybillOrder != null ? waybillOrder.getDriverPhone() : null);
+        detail.put("startTime", waybillOrder != null ? DateUtils.formatV1(waybillOrder.getDepartureTime()) : null);
+        detail.put("endTime", waybillOrder != null && waybillOrder.getDepartureTime() != null ? DateUtils.getCurrentTime() : null);
+        detail.put("orderNo", waybillOrder != null ? waybillOrder.getWOrderNo() : null);
         return detail;
     }
 
@@ -839,6 +853,25 @@ public class KwfTruckService {
         return truckGpsMap;
     }
 
+    /**
+     * @param truckNos 车牌号
+     * @desc 查询车辆定位数据
+     * @author zk
+     * @date 2023/9/5
+     **/
+    public RWaybillOrderVo getWaybillOrder(String truckNo, int busStatus) {
+        try {
+            List<RWaybillOrderVo> waybillOrders = transportDubboService.findWaybillOrder(new RWaybillOrderDto(truckNo, busStatus));
+            if (CollectionUtils.isEmpty(waybillOrders)) {
+                return null;
+            }
+            return waybillOrders.get(Global.NUMERICAL_ZERO);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
     @Value("${external.openapi.queryLocate}")
     private String queryLocate;
 
@@ -889,7 +922,7 @@ public class KwfTruckService {
 
     /**
      * @param truckNos 车牌号
-     * @desc 查询车辆定位数据
+     * @desc 查询车辆定位数据-单车牌号
      * @author zk
      * @date 2023/9/5
      **/

+ 24 - 29
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -126,7 +126,8 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             if (!Objects.equals(String.valueOf(order.getStatus()), DictEnum.TORDER_STATUS_4.getValue())) {
                 return HttpResult.error("执行中的订单才可物流托运!");
             }
-            BigDecimal totalEntrustAmount = Objects.isNull(order.getEntrustAmount()) ? entrustAmount : entrustAmount.add(order.getEntrustAmount());
+            BigDecimal totalEntrustAmount = Objects.isNull(order.getEntrustAmount()) ?
+                    entrustAmount : entrustAmount.add(order.getEntrustAmount());
             if (order.getAmount().compareTo(totalEntrustAmount) < 0) {
                 return HttpResult.error("物流已委托总量不可大于订单总量!");
             }
@@ -154,9 +155,9 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
         if (Objects.isNull(actualLoadAmount) || Objects.isNull(actualUnloadAmount)) {
             return HttpResult.error("装卸总量不能为空!");
         }
-        if (Objects.isNull(param.getIsAllComplete())) {
-            return HttpResult.error("物流订单是否已全部完结不能为空!");
-        }
+//        if (Objects.isNull(param.getIsAllComplete())) {
+//            return HttpResult.error("物流订单是否已全部完结不能为空!");
+//        }
         if (Objects.isNull(updateBy) || StringUtils.isBlank(updateByName)) {
             return HttpResult.error("操作人信息不能为空!");
         }
@@ -172,24 +173,28 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
             if (!Objects.equals(String.valueOf(order.getStatus()), DictEnum.TORDER_STATUS_4.getValue())) {
                 return HttpResult.error("执行中的订单才可物流托运!");
             }
-            BigDecimal actualAmount = Objects.equals(order.getDeliveryType(), DictEnum.DELIVERY_TYPE_0.getValue()) ? actualLoadAmount : actualUnloadAmount;
-            order.setActualAmount(actualAmount).setUpdateBy(param.getUpdateBy());
-            if (param.getIsAllComplete() && actualAmount.compareTo(order.getAmount()) >= 0) {
-                //完结订单
-                order.setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
-                //记录状态
-                KwoTradeOrderTrack track = new KwoTradeOrderTrack();
-                track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setStatus(order.getStatus())
-                        .setCreateBy(updateBy).setUpdateBy(updateBy);
-                kwoTradeOrderTrackService.insert(track);
-                //更新合同履约量
-                KwoTradeOrderContract contract = kwoTradeOrderContractService.getByOrderId(order.getId());
-                remoteContractService.updatePerformed(contract.getContractId(), actualAmount);
-            }
+            BigDecimal actualAmount = Objects.isNull(order.getActualAmount()) ? BigDecimal.ZERO : order.getActualAmount();
+            BigDecimal addActualAmount = Objects.equals(order.getDeliveryType(), DictEnum.DELIVERY_TYPE_0.getValue())
+                    ? actualLoadAmount : actualUnloadAmount;
+            BigDecimal totalActualAmount = actualAmount.add(addActualAmount);
+            order.setActualAmount(totalActualAmount).setUpdateBy(param.getUpdateBy());
+            //不走自然完结
+//            if (param.getIsAllComplete() && actualAmount.compareTo(order.getAmount()) >= 0) {
+//                //完结订单
+//                order.setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
+//                //记录状态
+//                KwoTradeOrderTrack track = new KwoTradeOrderTrack();
+//                track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setStatus(order.getStatus())
+//                        .setCreateBy(updateBy).setUpdateBy(updateBy);
+//                kwoTradeOrderTrackService.insert(track);
+//                //更新合同履约量
+//                KwoTradeOrderContract contract = kwoTradeOrderContractService.getByOrderId(order.getId());
+//                remoteContractService.updatePerformed(contract.getContractId(), actualAmount);
+//            }
             kwoTradeOrderService.updateById(order);
             //更新mongodb
             SckwTradeOrder updateParam = new SckwTradeOrder();
-            updateParam.setTOrderId(order.getId()).setActualAmount(actualAmount).setStatus(order.getStatus())
+            updateParam.setTOrderId(order.getId()).setActualAmount(totalActualAmount).setStatus(order.getStatus())
                     .setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
             saveMongoDb(updateParam);
         } finally {
@@ -274,16 +279,6 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
 
     }
 
-    @Override
-    public Boolean associateEnt(Long entId) {
-        Set<Long> tOrderIds = tradeOrderUnitService.associateEntOrderId(entId, entId);
-        if (CollectionUtils.isEmpty(tOrderIds)) {
-            return Boolean.FALSE;
-        }
-        List<KwoTradeOrder> list = kwoTradeOrderService.associateEnt(tOrderIds);
-        return CollectionUtils.isNotEmpty(list);
-    }
-
     @Override
     public Boolean associateEnt(Long firstEntId, Long secondEntId) {
         Set<Long> tOrderIds = tradeOrderUnitService.associateEntOrderId(firstEntId, secondEntId);

+ 4 - 5
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/dto/OrderCheckDTO.java

@@ -7,7 +7,6 @@ import lombok.ToString;
 import lombok.experimental.Accessors;
 
 import java.math.BigDecimal;
-import java.util.List;
 
 /**
  * @desc: 订单校验参数dto
@@ -61,9 +60,9 @@ public class OrderCheckDTO {
     private String procureFireName;
 
     /**
-     * 采购企业联系人集合
+     * 采购企业联系人
      */
-    private List<UserInfo> procureUsers;
+    private UserInfo procureUser;
 
     /**
      * 供应一级企业id
@@ -80,9 +79,9 @@ public class OrderCheckDTO {
     private String supplyFireName;
 
     /**
-     * 供应企业联系人集合
+     * 供应企业联系人
      */
-    private List<UserInfo> supplyUsers;
+    private UserInfo supplyUser;
 
     /**
      * 订单来源 1采购下单2代客下单

+ 60 - 77
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -293,64 +293,63 @@ public class KwoTradeOrderService {
     private void submitOrderSendMsg(OrderCheckDTO orderCheck, String orderNo) {
         Map<String, Object> map = new HashMap<>();
         map.put("orderNo", orderNo);
-        //提交人信息
         List<UserInfo> userInfos = new ArrayList<>();
+        //提交人信息
         UserInfo createUser = new UserInfo();
         createUser.setUserId(LoginUserHolder.getUserId()).setEntId(LoginUserHolder.getEntId());
         userInfos.add(createUser);
-
         boolean flag = Objects.equals(orderCheck.getOrderSource(), DictEnum.TORDER_SOURCE_1.getValue());
+        UserInfo procureUser = orderCheck.getProcureUser();
+        String procureFireName = orderCheck.getProcureFireName();
+        UserInfo supplyUser = orderCheck.getSupplyUser();
+        String supplyFireName = orderCheck.getSupplyFireName();
         //采购下单
         if (flag) {
-            //给创建人发消息
-            map.put("firmName", orderCheck.getSupplyFireName());
-            SckwMessage msg = new SckwMessage();
-            msg.setRequestId(UUIDUtils.get32UUID())
-                    .setMessageEnum(MessageEnum.ORDER_INITIATE_PURCHASE)
-                    .setParams(map)
-                    .setMsgUrl(purchaseOrderListUrl)
-                    .setUserInfos(userInfos)
-                    .setCreateBy(LoginUserHolder.getUserId());
-            log.info("发起采购下单消息:{}", JSON.toJSONString(msg));
-            streamBridge.send("sckw-message", JSON.toJSONString(msg));
+            //给创建人及采购联系人发消息
+            map.put("firmName", supplyFireName);
+            if (!Objects.equals(procureUser.getUserId(), LoginUserHolder.getUserId())) {
+                userInfos.add(procureUser);
+            }
+            sendMsg(MessageEnum.ORDER_INITIATE_PURCHASE, map, purchaseOrderListUrl, userInfos);
             //给供应企业联系人发消息
-            map.put("firmName", orderCheck.getProcureFireName());
-            SckwMessage contactsMsg = new SckwMessage();
-            contactsMsg.setRequestId(UUIDUtils.get32UUID())
-                    .setMessageEnum(MessageEnum.ORDER_NEW_PENDING)
-                    .setParams(map)
-                    .setMsgUrl(valetOrderListUrl)
-                    .setUserInfos(orderCheck.getSupplyUsers())
-                    .setCreateBy(LoginUserHolder.getUserId());
-            log.info("有新的待受理订单消息:{}", JSON.toJSONString(contactsMsg));
-            streamBridge.send("sckw-message", JSON.toJSONString(contactsMsg));
+            map.put("firmName", procureFireName);
+            sendMsg(MessageEnum.ORDER_NEW_PENDING, map, valetOrderListUrl, List.of(supplyUser));
         } else {
             //代客下单
-            //给创建人发消息
-            map.put("firmName", orderCheck.getProcureFireName());
-            SckwMessage msg = new SckwMessage();
-            msg.setRequestId(UUIDUtils.get32UUID())
-                    .setMessageEnum(MessageEnum.ORDER_INITIATE_SALE)
-                    .setParams(map)
-                    .setMsgUrl(valetOrderListUrl)
-                    .setUserInfos(userInfos)
-                    .setCreateBy(LoginUserHolder.getUserId());
-            log.info("发起代客下单消息:{}", JSON.toJSONString(msg));
-            streamBridge.send("sckw-message", JSON.toJSONString(msg));
+            //给创建人及供应企业联系人发消息
+            map.put("firmName", procureFireName);
+            if (!Objects.equals(supplyUser.getUserId(), LoginUserHolder.getUserId())) {
+                userInfos.add(supplyUser);
+            }
+            sendMsg(MessageEnum.ORDER_INITIATE_SALE, map, valetOrderListUrl, userInfos);
             //给采购企业联系人发消息
-            map.put("firmName", orderCheck.getSupplyFireName());
-            SckwMessage contactsMsg = new SckwMessage();
-            contactsMsg.setRequestId(UUIDUtils.get32UUID())
-                    .setMessageEnum(MessageEnum.ORDER_NEW_VALET_MSG)
-                    .setParams(map)
-                    .setMsgUrl(purchaseOrderListUrl)
-                    .setUserInfos(orderCheck.getSupplyUsers())
-                    .setCreateBy(LoginUserHolder.getUserId());
-            log.info("有新的代客下单消息:{}", JSON.toJSONString(contactsMsg));
-            streamBridge.send("sckw-message", JSON.toJSONString(contactsMsg));
+            map.put("firmName", supplyFireName);
+            sendMsg(MessageEnum.ORDER_NEW_VALET_MSG, map, purchaseOrderListUrl, List.of(procureUser));
         }
     }
 
+    /**
+     * @desc: 发送消息
+     * @author: yzc
+     * @date: 2023-09-06 15:57
+     * @Param msgEnum: 消息枚举
+     * @Param params: 消息变量
+     * @Param url: 消息调转url
+     * @Param userInfos:  发送消息用户集合
+     * @return: void
+     */
+    private void sendMsg(MessageEnum msgEnum, Map<String, Object> params, String url, List<UserInfo> userInfos) {
+        SckwMessage msg = new SckwMessage();
+        msg.setRequestId(UUIDUtils.get32UUID())
+                .setMessageEnum(msgEnum)
+                .setParams(params)
+                .setMsgUrl(url)
+                .setUserInfos(userInfos)
+                .setCreateBy(LoginUserHolder.getUserId());
+        log.info("有新的提醒消息:{}", JSON.toJSONString(msg));
+        streamBridge.send("sckw-message", JSON.toJSONString(msg));
+    }
+
     /**
      * @desc: 获取采购销售顶级企业id
      * @author: yzc
@@ -362,8 +361,6 @@ public class KwoTradeOrderService {
     private void getTopEnt(OrderCheckDTO orderCheck, List<UnitInfo> unitInfo) {
         List<Long> entIds = unitInfo.stream().map(UnitInfo::getEntId).toList();
         Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
-        List<UserInfo> procureUsers = new ArrayList<>();
-        List<UserInfo> supplyUsers = new ArrayList<>();
         unitInfo.forEach(e -> {
             Long entId = e.getEntId();
             EntCacheResDto ent = entMap.get(entId);
@@ -377,17 +374,16 @@ public class KwoTradeOrderService {
                 orderCheck.setProcureEntId(entId);
                 orderCheck.setProcureFireName(e.getFirmName());
                 procureUser.setUserId(e.getContactsId()).setEntId(ent.getId());
-                procureUsers.add(procureUser);
+                orderCheck.setProcureUser(procureUser);
             } else {
                 UserInfo supplyUser = new UserInfo();
                 orderCheck.setSupplyTopEntId(ent.getId());
                 orderCheck.setSupplyEntId(entId);
                 orderCheck.setSupplyFireName(e.getFirmName());
                 supplyUser.setUserId(e.getContactsId()).setEntId(ent.getId());
-                supplyUsers.add(supplyUser);
+                orderCheck.setSupplyUser(supplyUser);
             }
         });
-        orderCheck.setProcureUsers(procureUsers).setSupplyUsers(supplyUsers);
     }
 
     /**
@@ -952,42 +948,29 @@ public class KwoTradeOrderService {
      * @return: void
      */
     private void rejectOrderSendMsg(List<KwoTradeOrderUnit> units, KwoTradeOrder order) {
-        Map<String, KwoTradeOrderUnit> unitMap = units.stream().collect
-                (Collectors.toMap(KwoTradeOrderUnit::getUnitType, Function.identity()));
         Map<String, Object> map = new HashMap<>();
         map.put("orderNo", order.getTOrderNo());
-
-        //给供应企业联系人发消息
-        List<UserInfo> purchaseUsers = new ArrayList<>();
-        UserInfo purchaseUser = new UserInfo();
+        Map<String, KwoTradeOrderUnit> unitMap = units.stream().collect
+                (Collectors.toMap(KwoTradeOrderUnit::getUnitType, Function.identity()));
         KwoTradeOrderUnit purchase = unitMap.get(DictEnum.TORDER_UNIT_TYPE_1.getValue());
-        purchaseUser.setUserId(purchase.getContactsId()).setEntId(purchase.getTopEntId());
-        purchaseUsers.add(purchaseUser);
-        SckwMessage contactsMsg = new SckwMessage();
+        KwoTradeOrderUnit supply = unitMap.get(DictEnum.TORDER_UNIT_TYPE_2.getValue());
+        //给供应企业联系人发消息
         map.put("firmName", purchase.getFirmName());
-        contactsMsg.setRequestId(UUIDUtils.get32UUID())
-                .setMessageEnum(MessageEnum.ORDER_REJECT_VALET)
-                .setParams(map)
-                .setMsgUrl(valetOrderListUrl)
-                .setUserInfos(purchaseUsers)
-                .setCreateBy(LoginUserHolder.getUserId());
-        log.info("驳回采购订单消息:{}", JSON.toJSONString(contactsMsg));
-        streamBridge.send("sckw-message", JSON.toJSONString(contactsMsg));
-        //给订单创建人发消息
+        UserInfo supplyUser = new UserInfo();
+        supplyUser.setUserId(supply.getContactsId()).setEntId(supply.getTopEntId());
+        sendMsg(MessageEnum.ORDER_REJECT_VALET, map, valetOrderListUrl, List.of(supplyUser));
+        //给订单创建人及采购企业联系人发消息
+        map.put("firmName", supply.getFirmName());
         List<UserInfo> userInfos = new ArrayList<>();
         UserInfo createUser = new UserInfo();
         createUser.setUserId(order.getCreateBy()).setEntId(order.getEntId());
         userInfos.add(createUser);
-        map.put("firmName", unitMap.get(DictEnum.TORDER_UNIT_TYPE_2.getValue()).getFirmName());
-        SckwMessage msg = new SckwMessage();
-        msg.setRequestId(UUIDUtils.get32UUID())
-                .setMessageEnum(MessageEnum.ORDER_REJECT_PURCHASE)
-                .setParams(map)
-                .setMsgUrl(purchaseOrderListUrl)
-                .setUserInfos(userInfos)
-                .setCreateBy(LoginUserHolder.getUserId());
-        log.info("采购订单被驳回消息:{}", JSON.toJSONString(msg));
-        streamBridge.send("sckw-message", JSON.toJSONString(msg));
+        if (!Objects.equals(createUser.getUserId(), purchase.getContactsId())) {
+            UserInfo purchaseUser = new UserInfo();
+            purchaseUser.setUserId(purchase.getContactsId()).setEntId(purchase.getTopEntId());
+            userInfos.add(purchaseUser);
+        }
+        sendMsg(MessageEnum.ORDER_REJECT_PURCHASE, map, purchaseOrderListUrl, userInfos);
     }
 
     /**

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

@@ -99,7 +99,7 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
      * @author zk
      * @date 2023/8/1
      **/
-    Map<String, Object> findStatisticsSumByDriver(Map params);
+    Map<String, Object> findStatisticsSumByDriver(Map<String, Object> params);
 
     /**
      * @param params {driverId 司机ID}
@@ -107,7 +107,7 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
      * @author zk
      * @date 2023/8/1
      **/
-    List<WaybillOrderDriverVo> findWaitWaybillOrderByDriver(Map params);
+    List<WaybillOrderDriverVo> findWaitWaybillOrderByDriver(Map<String, Object> params);
 
     /**
      * @param params {driverId 司机ID, busStatus 状态 2出车/3执行/4完结, month月份}
@@ -115,7 +115,7 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
      * @author zk
      * @date 2023/8/1
      **/
-    List<WaybillOrderDriverVo> findOtherWaybillOrderByDriver(Map params);
+    List<WaybillOrderDriverVo> findOtherWaybillOrderByDriver(Map<String, Object> params);
 
     /**
      *
@@ -149,4 +149,12 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
     );
 
     String getMaxOrderNo(@Param("lOrderNo") String lOrderNo);
+
+    /**
+     * @param params {driverId 司机ID, truckNo车牌号, busStatus 状态 2出车/3执行/4完结}
+     * @desc 查询车辆运单
+     * @author zk
+     * @date 2023/9/6
+     **/
+    List<KwtWaybillOrder> findWaybillOrder(Map<String, Object> params);
 }

+ 28 - 14
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -4,7 +4,6 @@ import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.sckw.core.common.enums.NumberConstant;
-import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
@@ -41,7 +40,6 @@ import jakarta.annotation.Resource;
 import jakarta.validation.Valid;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
@@ -56,7 +54,7 @@ import java.util.stream.Collectors;
 
 /**
  * @author zk
- * @desc TODO
+ * @desc 车辆运单
  * @date 2023/7/19 0019
  */
 @Slf4j
@@ -146,24 +144,21 @@ public class KwtWaybillOrderService {
             }
         }
 
-        /**数据组装**/
+        /**数据配置**/
         List<Long> entIds = new ArrayList<>();
-        List<String> dictKey = new ArrayList<>();
         for (WaybillOrderDriverVo waybillOrder : waybillOrders) {
             entIds.add(waybillOrder.getCarrierEntId());
-            dictKey.add(DictTypeEnum.UNIT_TYPE.getType() + Global.POUND + waybillOrder.getUnit());
         }
-
         //企业数据集
         entIds = entIds.stream().distinct().collect(Collectors.toList());
-        dictKey = dictKey.stream().distinct().collect(Collectors.toList());
         Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
-        Map<String, SysDictResDto> dicts = remoteSystemService.queryDictMapByTypeValues(String.join(Global.COMMA, dictKey));
+
+        //数据组装
         for (WaybillOrderDriverVo waybillOrder : waybillOrders) {
             EntCacheResDto ent = ents == null ? null : ents.get(waybillOrder.getCarrierEntId());
-            SysDictResDto unit = dicts == null ? null : dicts.get(DictTypeEnum.UNIT_TYPE.getType() + Global.POUND + waybillOrder.getUnit());
+            String value = getDictValue(DictTypeEnum.UNIT_TYPE.getType(), waybillOrder.getUnit());
             waybillOrder.setCarrierFirmName(ent != null ? ent.getFirmName() : null);
-            waybillOrder.setUnit(unit != null ? unit.getLabel() : null);
+            waybillOrder.setUnit(value);
         }
         return waybillOrders;
     }
@@ -2479,12 +2474,12 @@ public class KwtWaybillOrderService {
         Map<String, Map> map = new HashMap(NumberConstant.SIXTEEN);
         //无效的车辆运单状态(其他状态不参与统计中)
         List<Long> statusList = new ArrayList<>();
-        statusList.add(CarWaybillEnum.PENDING_ORDER.getCode().longValue());
-        statusList.add(CarWaybillEnum.PENDING_VEHICLE.getCode().longValue());
+//        statusList.add(CarWaybillEnum.PENDING_ORDER.getCode().longValue());
+//        statusList.add(CarWaybillEnum.PENDING_VEHICLE.getCode().longValue());
         statusList.add(CarWaybillEnum.REJECT_ORDER.getCode().longValue());
         statusList.add(CarWaybillEnum.REFUSE_TRAFFIC.getCode().longValue());
         statusList.add(CarWaybillEnum.REVOKED.getCode().longValue());
-        statusList.add(CarWaybillEnum.APPROVAL_NO_PASS.getCode().longValue());
+//        statusList.add(CarWaybillEnum.APPROVAL_NO_PASS.getCode().longValue());
         //趟次
         Map<String, Object> tripMap = waybillOrderDao.selectOrderByOrderId(Long.parseLong(orderId), 1, statusList);
         tripMap.put("waitDistributionAmount", waitDistributionAmount);
@@ -2495,4 +2490,23 @@ public class KwtWaybillOrderService {
         map.put("loop", loopMap);
         return HttpResult.ok(map);
     }
+
+    /**
+     * @param type 字典类型
+     * @param value 字典值
+     * @desc 获取数据字典值
+     * @author zk
+     * @date 2023/8/30
+     **/
+    public String getDictValue(String type, String value) {
+        if (StringUtils.isBlank(type) || StringUtils.isBlank(value)) {
+            return null;
+        }
+        List<String> dictKey = new ArrayList<>(){{
+            add(type + Global.POUND + value);
+        }};
+        Map<String, SysDictResDto> dicts = remoteSystemService.queryDictMapByTypeValues(String.join(Global.COMMA, dictKey));
+        SysDictResDto dict = dicts == null ? null : dicts.get(DictTypeEnum.APPROVED_DRIVING.getType() + Global.POUND + value);
+        return dict != null ? dict.getLabel() : null;
+    }
 }

+ 39 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/dubbo/TransportDubboServiceImpl.java

@@ -9,6 +9,8 @@ import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
@@ -30,9 +32,11 @@ import com.sckw.transport.api.dubbo.TransportDubboService;
 import com.sckw.transport.api.model.dto.AccountCheckingBindDTO;
 import com.sckw.transport.api.model.dto.AddressResDTO;
 import com.sckw.transport.api.model.dto.LogisticsOrderDTO;
+import com.sckw.transport.api.model.dto.RWaybillOrderDto;
 import com.sckw.transport.api.model.param.ContractSignLogisticsParam;
 import com.sckw.transport.api.model.param.LogisticsOrderParam;
 import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
+import com.sckw.transport.api.model.vo.RWaybillOrderVo;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import jakarta.annotation.Resource;
@@ -86,6 +90,12 @@ public class TransportDubboServiceImpl implements TransportDubboService {
     @Autowired
     private KwtLogisticsOrderGoodsMapper logisticsOrderGoodsMapper;
 
+    @Autowired
+    private KwtWaybillOrderMapper waybillOrderDao;
+
+    @Autowired
+    private KwtWaybillOrderTrackMapper waybillOrderTrackDao;
+
     /**
      * 对账管理-ids查询
      *
@@ -534,4 +544,33 @@ public class TransportDubboServiceImpl implements TransportDubboService {
             RedissonUtils.unlock(lockKey);
         }
     }
+
+    /**
+     * @param params 参数
+     * @desc 查询车辆运单
+     * @author zk
+     * @date 2023/9/6
+     **/
+    @Override
+    public List<RWaybillOrderVo> findWaybillOrder(RWaybillOrderDto params) {
+        List<RWaybillOrderVo> waybillOrderVos = new ArrayList<>();
+        Map<String, Object> queryParams = new HashMap<>(Global.NUMERICAL_SIXTEEN){{
+            put("truckNo", params.getTruckNo());
+            put("busStatus", params.getBusStatus());
+        }};
+        List<KwtWaybillOrder> waybillOrders = waybillOrderDao.findWaybillOrder(queryParams);
+        if (CollectionUtils.isEmpty(waybillOrders)) {
+            return waybillOrderVos;
+        }
+
+        for (KwtWaybillOrder waybillOrder:waybillOrders) {
+            RWaybillOrderVo order = new RWaybillOrderVo();
+            BeanUtils.copyProperties(waybillOrder, order);
+            KwtWaybillOrderTrack track = waybillOrderTrackDao.findWaybillOrderTrack(waybillOrder.getId(), CarWaybillEnum.EXIT_COMPLETED.getCode());
+            order.setDepartureTime(track != null ? track.getOperateTime(): null);
+            waybillOrderVos.add(order);
+        }
+
+        return waybillOrderVos;
+    }
 }

+ 33 - 1
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -32,6 +32,7 @@
     load_amount, deficit_amount, remark, `status`, create_by, create_time, update_by,
     update_time, del_flag,start_time,end_time
     </sql>
+
     <select id="selectWaybillOrderCarList" resultType="com.sckw.transport.model.dto.OrderCarDTO">
         SELECT a.id            as wOrderId,
                a.w_order_no    as wOrderNo,
@@ -51,6 +52,7 @@
           and b.t_order_id = #{id,jdbcType=VARCHAR} limit #{page}
             , #{pageSize}
     </select>
+
     <select id="selectWaybillOrderCarCount" resultType="java.lang.Long">
         SELECT count(a.id)
         FROM kwt_waybill_order a
@@ -80,6 +82,7 @@
         </where>
         group by lOrderId
     </select>
+
     <select id="getWaybillData" resultType="com.sckw.transport.model.vo.WaybillDetailVO">
     </select>
 
@@ -421,6 +424,7 @@
             and DATE(wo.create_time) <![CDATA[ <= ]]> #{endTime,jdbcType=TIMESTAMP}
         </if>
     </select>
+
     <select id="selectWaybillOrderCarListNotPage" resultType="com.sckw.transport.model.dto.OrderCarDTO">
         SELECT a.id            as wOrderId,
                a.w_order_no    as wOrderNo,
@@ -439,6 +443,7 @@
           and b.del_flag = '0'
           and b.t_order_id = #{id,jdbcType=VARCHAR}
     </select>
+
     <select id="selectWaybillOrderCountByStatus">
         SELECT COUNT(id)
         FROM kwt_waybill_order
@@ -461,7 +466,7 @@
     </select>
 
     <select id="selectOrderByOrderId" resultType="java.util.Map">
-        SELECT COUNT(id) total,SUM(IFNULL(entrust_amount,0)) AS amount
+        SELECT COUNT(id) total,IFNULL(SUM(entrust_amount),0) AS amount
         FROM
         kwt_waybill_order
         WHERE
@@ -474,6 +479,7 @@
             </foreach>
         </if>
     </select>
+
     <select id="selectWaybillOrderAmountByStatus" resultType="java.util.Map">
         SELECT
         COUNT(id) total,
@@ -503,7 +509,33 @@
             </foreach>
         </if>
     </select>
+
     <select id="getMaxOrderNo" resultType="java.lang.String">
         SELECT w_order_no FROM `kwt_waybill_order`  WHERE w_order_no LIKE concat(#{lOrderNo},'%') ORDER BY w_order_no DESC LIMIT 1
     </select>
+
+    <select id="findWaybillOrder" resultType="com.sckw.transport.model.KwtWaybillOrder" parameterType="java.util.Map">
+        SELECT
+        kwo.id worderId, kwo.w_order_no worderNo, kwo.l_order_id lOrderId, kwo.type, kwo.ent_id carrierEntId, kwo.start_time startTime,
+        kwo.end_time endTime, kwo.entrust_amount entrustAmount, kwo.load_amount loadAmount, kwo.unload_amount unloadAmount,
+        kwo.deficit_amount deficitAmount, kwo.deficit_price deficitPrice, kwo.truck_id truckId, kwo.truck_no truckNo, kwo.status,
+        kwo.create_time createTime, kwo.driver_id driverId, kwo.driver_name driverName, kwo.driver_phone driverPhone
+        FROM kwt_waybill_order kwo
+        where kwo.del_flag = 0
+        <if test="driverId != null and driverId != ''">
+            and kwo.driver_id = #{driverId, jdbcType=BIGINT}
+        </if>
+        <if test="truckNo != null and truckNo != ''">
+            and kwo.truck_no = #{truckNo, jdbcType=VARCHAR}
+        </if>
+        <if test="busStatus != null and busStatus == 2">
+            and kwo.status = 2
+        </if>
+        <if test="busStatus != null and busStatus == 3">
+            and kwo.status in (3, 4, 5, 6)
+        </if>
+        <if test="busStatus != null and busStatus == 4">
+            and kwo.status in (7, 8, 9, 10, 12, 13)
+        </if>
+    </select>
 </mapper>