浏览代码

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

xucaiqin 2 年之前
父节点
当前提交
fe177771e1
共有 20 个文件被更改,包括 811 次插入133 次删除
  1. 16 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java
  2. 6 6
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckReportService.java
  3. 10 10
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java
  4. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java
  5. 16 7
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  6. 40 18
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java
  7. 2 4
      sckw-modules/sckw-report/src/main/resources/bootstrap-dev.yml
  8. 1 1
      sckw-modules/sckw-system/src/main/resources/mapper/SysDictDao.xml
  9. 57 16
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java
  10. 13 4
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/WaybillManagementController.java
  11. 0 10
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderTicketMapper.java
  12. 10 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrder.java
  13. 2 38
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderTicket.java
  14. 68 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderDTO.java
  15. 65 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderTicketDto.java
  16. 105 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillBoardListVO.java
  17. 39 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillStatusVO.java
  18. 210 13
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java
  19. 148 4
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java
  20. 2 1
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderTicketMapper.xml

+ 16 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java

@@ -5,7 +5,9 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.CollectionUtils;
@@ -20,8 +22,11 @@ import com.sckw.fleet.model.dto.*;
 import com.sckw.fleet.model.vo.KwfDriverVo;
 import com.sckw.fleet.model.vo.KwfTruckVo;
 import com.sckw.fleet.service.KwfTruckService;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.SysDictResDto;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -38,6 +43,8 @@ public class KwfTruckController {
 
     @Autowired
     KwfTruckService truckService;
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
 
     /**
      * @param id 主键ID
@@ -59,12 +66,17 @@ public class KwfTruckController {
         //车队班组
         KwfFleet fleet = truckService.findByFleetTruck(id, LoginUserHolder.getEntId());
 
+        //字典
+        Map<String, SysDictResDto> dicts = remoteSystemService.queryDictMapByTypeValues(DictTypeEnum.COLOR_TYPE.getType() + Global.POUND + truck.getColor());
+        SysDictResDto color = dicts == null ? null : dicts.get(DictTypeEnum.COLOR_TYPE.getType() + Global.POUND + truck.getColor());
+
         //数据组装
         JSONObject truckJson = JSONObject.parseObject(JSON.toJSONString(truck));
         truckJson.put("truckLicense", truckLicense);
         truckJson.put("transportLicense", transportLicense);
         truckJson.put("fleetId", fleet.getId());
         truckJson.put("fleetName", fleet.getName());
+        truckJson.put("colorName", color != null ? color.getLabel() : null);
         return HttpResult.ok(truckJson);
     }
 
@@ -100,12 +112,16 @@ public class KwfTruckController {
         //车队班组
         KwfFleet fleet = truckService.findByFleetTruck(id, LoginUserHolder.getEntId());
 
+        //字典
+        Map<String, SysDictResDto> dicts = remoteSystemService.queryDictMapByTypeValues(DictTypeEnum.COLOR_TYPE.getType() + Global.POUND + truck.getColor());
+        SysDictResDto color = dicts == null ? null : dicts.get(DictTypeEnum.COLOR_TYPE.getType() + Global.POUND + truck.getColor());
         //数据组装
         JSONObject truckJson = JSONObject.parseObject(JSON.toJSONString(truck));
         truckJson.put("truckLicense", truckLicense);
         truckJson.put("transportLicense", transportLicense);
         truckJson.put("fleetId", fleet.getId());
         truckJson.put("fleetName", fleet.getName());
+        truckJson.put("colorName", color != null ? color.getLabel() : null);
         return HttpResult.ok(truckJson);
     }
 

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

@@ -127,7 +127,7 @@ public class KwfTruckReportService {
         }
 
         /**获取查询数据**/
-        String prefix = Global.REDIS_SYS_DICT_PREFIX, pound = Global.POUND;
+        String pound = Global.POUND;
         List<Long> createBys = new ArrayList<>();
         List<Long> entIds = new ArrayList<>();
         List<String> dictKey = new ArrayList<>();
@@ -135,8 +135,8 @@ public class KwfTruckReportService {
             createBys.add(Long.parseLong(truck.getCreateBy()));
             entIds.add(Long.parseLong(truck.getDriverEntId()));
             entIds.add(Long.parseLong(truck.getTruckEntId()));
-            dictKey.add(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getColor());
-            dictKey.add(prefix + DictTypeEnum.TRUCK_TYPE.getType() + pound + truck.getTruckType());
+            dictKey.add(DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getColor());
+            dictKey.add(DictTypeEnum.TRUCK_TYPE.getType() + pound + truck.getTruckType());
         }
         //用户数据集
         createBys = createBys.stream().distinct().collect(Collectors.toList());
@@ -146,14 +146,14 @@ public class KwfTruckReportService {
         Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
         //数据字典
         dictKey = dictKey.stream().distinct().collect(Collectors.toList());
-        Map<Long, SysDictResDto> dicts = null;//remoteSystemService.queryDictByType(dictKey);
+        Map<String, SysDictResDto> dicts = remoteSystemService.queryDictMapByTypeValues(String.join(",", dictKey));
 
         /**数据组装**/
         for (KwfTruckReportVo truck:trucks) {
             UserCacheResDto user = users == null ? null : users.get(Long.parseLong(truck.getCreateBy()));
             EntCacheResDto ent = ents == null ? null : ents.get(Long.parseLong(truck.getDriverEntId()));
-            SysDictResDto color = dicts == null ? null : dicts.get(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getColor());
-            SysDictResDto type = dicts == null ? null : dicts.get(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getTruckType());
+            SysDictResDto color = dicts == null ? null : dicts.get(DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getColor());
+            SysDictResDto type = dicts == null ? null : dicts.get(DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getTruckType());
             truck.setCreateByName(user != null ? user.getName() : null);
             truck.setDriverFirmName(ent != null ? ent.getFirmName() : null);
             ent = ents == null ? null : ents.get(Long.parseLong(truck.getTruckEntId()));

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

@@ -118,7 +118,7 @@ public class KwfTruckService {
         }
 
         /**获取查询数据**/
-        String prefix = Global.REDIS_SYS_DICT_PREFIX, pound = Global.POUND;
+        String pound = Global.POUND;
         List<Long> createBys = new ArrayList<>();
         List<Long> entIds = new ArrayList<>();
         List<String> dictKey = new ArrayList<>();
@@ -126,10 +126,10 @@ public class KwfTruckService {
         for (KwfTruckVo truck:trucks) {
             createBys.add(Long.parseLong(truck.getCreateBy()));
             entIds.add(Long.parseLong(truck.getEntId()));
-            dictKey.add(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getColor());
-            dictKey.add(prefix + DictTypeEnum.TRUCK_TYPE.getType() + pound + truck.getType());
-            dictKey.add(prefix + DictTypeEnum.USE_TYPE.getType() + pound + truck.getUseType());
-            dictKey.add(prefix + DictTypeEnum.ENERGY_TYPE.getType() + pound + truck.getEnergyType());
+            dictKey.add(DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getColor());
+            dictKey.add(DictTypeEnum.TRUCK_TYPE.getType() + pound + truck.getType());
+            dictKey.add(DictTypeEnum.USE_TYPE.getType() + pound + truck.getUseType());
+            dictKey.add(DictTypeEnum.ENERGY_TYPE.getType() + pound + truck.getEnergyType());
         }
         //用户数据集
         createBys = createBys.stream().distinct().collect(Collectors.toList());
@@ -139,16 +139,16 @@ public class KwfTruckService {
         Map<Long, EntCacheResDto> ents = remoteSystemService.queryEntCacheMapByIds(entIds);
         //数据字典
         dictKey = dictKey.stream().distinct().collect(Collectors.toList());
-        Map<Long, SysDictResDto> dicts = null;//remoteSystemService.queryDictByType(dictKey);
+        Map<String, SysDictResDto> dicts = remoteSystemService.queryDictMapByTypeValues(String.join(",", dictKey));
 
         /**数据组装**/
         for (KwfTruckVo truck:trucks) {
             UserCacheResDto user = users == null ? null : users.get(Long.parseLong(truck.getCreateBy()));
             EntCacheResDto ent = ents == null ? null : ents.get(Long.parseLong(truck.getEntId()));
-            SysDictResDto color = dicts == null ? null : dicts.get(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getColor());
-            SysDictResDto type = dicts == null ? null : dicts.get(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getType());
-            SysDictResDto useType = dicts == null ? null : dicts.get(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getUseType());
-            SysDictResDto energyType = dicts == null ? null : dicts.get(prefix + DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getEnergyType());
+            SysDictResDto color = dicts == null ? null : dicts.get(DictTypeEnum.COLOR_TYPE.getType() + pound + truck.getColor());
+            SysDictResDto type = dicts == null ? null : dicts.get(DictTypeEnum.TRUCK_TYPE.getType() + pound + truck.getType());
+            SysDictResDto useType = dicts == null ? null : dicts.get(DictTypeEnum.USE_TYPE.getType() + pound + truck.getUseType());
+            SysDictResDto energyType = dicts == null ? null : dicts.get(DictTypeEnum.ENERGY_TYPE.getType() + pound + truck.getEnergyType());
             truck.setCreateByName(user != null ? user.getName() : null);
             truck.setFirmName(ent != null ? ent.getFirmName() : null);
             truck.setColorName(color != null ? color.getLabel() : null);

+ 1 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java

@@ -88,7 +88,7 @@ public class KwpGoodsController {
      */
     @PostMapping(value = "/select", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult select(@RequestBody SelectGoodsListParam params) {
-        return HttpResult.ok(kwpGoodsService.select(params));
+        return HttpResult.ok(kwpGoodsService.select(params, true));
     }
 
     /**

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

@@ -397,8 +397,8 @@ public class KwpGoodsService {
      * @Param params:
      * @return: java.util.List<com.sckw.product.model.vo.res.GoodsList>
      */
-    public PageResult select(SelectGoodsListParam params) {
-        IPage<KwpGoods> goodsIpage = getGoodsLists(params, true);
+    public PageResult select(SelectGoodsListParam params, Boolean isPage) {
+        IPage<KwpGoods> goodsIpage = getGoodsLists(params, isPage);
         List<KwpGoods> goodsLists = goodsIpage.getRecords();
         if (CollectionUtils.isEmpty(goodsLists)) {
             return PageResult.build(params.getPage(), params.getPageSize(), goodsIpage.getTotal(), Collections.emptyList());
@@ -409,9 +409,15 @@ public class KwpGoodsService {
         List<Long> userIds = new ArrayList<>();
         goodsLists.forEach(e -> {
             goodsIds.add(e.getId());
-            supplyEntIds.add(e.getSupplyEntId());
-            userIds.add(e.getManager());
-            userIds.add(e.getCreateBy());
+            if (Objects.nonNull(e.getSupplyEntId())){
+                supplyEntIds.add(e.getSupplyEntId());
+            }
+            if (Objects.nonNull(e.getManager())){
+                supplyEntIds.add(e.getManager());
+            }
+            if (Objects.nonNull(e.getCreateBy())){
+                supplyEntIds.add(e.getCreateBy());
+            }
         });
         //地址信息
         Map<Long, KwpGoodsAddress> addressMap = kwpGoodsAddressService.getByGoodsIds(goodsIds)
@@ -423,7 +429,10 @@ public class KwpGoodsService {
         List<UserCacheResDto> userList = remoteSystemService.queryUserCacheByIds(userIds);
         Map<Long, UserCacheResDto> userMap = userList.stream().collect(Collectors.toMap(UserCacheResDto::getId, e -> e, (k1, k2) -> k1));
         //供应企业信息
-        List<EntCacheResDto> entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
+        List<EntCacheResDto> entList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(supplyEntIds)) {
+            entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
+        }
         Map<Long, String> entMap = entList.stream().collect(Collectors.toMap(EntCacheResDto::getId, EntCacheResDto::getFirmName, (k1, k2) -> k1));
         goodsLists.forEach(e -> {
             Long id = e.getId();
@@ -523,7 +532,7 @@ public class KwpGoodsService {
      * @return: void
      */
     public List<GoodsListExport> export(ExportGoodsListParam params) {
-        PageResult pageResult = select(BeanUtils.copyProperties(params, SelectGoodsListParam.class));
+        PageResult pageResult = select(BeanUtils.copyProperties(params, SelectGoodsListParam.class), false);
         List<GoodsList> goodsLists = pageResult.getList();
         if (CollectionUtils.isEmpty(goodsLists)) {
             return Collections.emptyList();

+ 40 - 18
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -175,7 +175,16 @@ public class KwTransportService {
         criteria.and("delFlag").is(NumberConstant.ZERO);
 
         if (StringUtils.isNotBlank(query.getStatus())) {
-            criteria.and("status").is(query.getStatus());
+            // TODO 此处需要修改
+            if(query.getStatus().equals(String.valueOf(NumberConstant.ONE_ZERO_ZERO))) {
+                List<Long> statuses = new ArrayList<>();
+                statuses.add(CarWaybillEnum.REJECT_ORDER.getCode().longValue());
+                statuses.add(CarWaybillEnum.REFUSE_TRAFFIC.getCode().longValue());
+                statuses.add(CarWaybillEnum.REVOKED.getCode().longValue());
+                criteria.and("status").in(statuses);
+            } else {
+                criteria.and("status").is(query.getStatus());
+            }
         }
         // 装载时间
         if (StringUtils.isNotBlank(query.getStartLoadTime()) && StringUtils.isNotEmpty(query.getEndLoadTime())) {
@@ -193,21 +202,16 @@ public class KwTransportService {
                     .lte(query.getEndUnloadTime()));
         }
         // 多条件模糊查询
-        Criteria c1 = new Criteria();
-        Criteria c2 = new Criteria();
-        Criteria c3 = new Criteria();
-        Criteria c4 = new Criteria();
-        Criteria c5 = new Criteria();
-        Criteria c6 = new Criteria();
+        List<Criteria> orCriteria = new ArrayList<>();
         if (StringUtils.isNotBlank(query.getKeywords())) {
             Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
-            c1 = Criteria.where("wOrderNo").regex(pattern);
-            c2 = Criteria.where("truckNo").regex(pattern);
-            c3 = Criteria.where("driverName").regex(pattern);
-            c4 = Criteria.where("firmName").regex(pattern);
-            c5 = Criteria.where("loadAddress").regex(pattern);
-            c6 = Criteria.where("unloadAddress").regex(pattern);
-            criteria.orOperator(c1, c2, c3, c4, c5, c6);
+            orCriteria.add(Criteria.where("wOrderNo").regex(pattern));
+            orCriteria.add(Criteria.where("truckNo").regex(pattern));
+            orCriteria.add(Criteria.where("driverName").regex(pattern));
+            orCriteria.add(Criteria.where("firmName").regex(pattern));
+            orCriteria.add(Criteria.where("loadAddress").regex(pattern));
+            orCriteria.add(Criteria.where("unloadAddress").regex(pattern));
+            criteria.orOperator(orCriteria);
         }
         return criteria;
     }
@@ -231,21 +235,39 @@ public class KwTransportService {
         List<TableTops> results = outputTypeCount.getMappedResults();
         // 填充默认值
         List<TableTops> list = new ArrayList<>();
+        TableTops topExpired = new TableTops();
+        topExpired.setName("已作废");
+        topExpired.setValue(String.valueOf(NumberConstant.ONE_ZERO_ZERO));
+        topExpired.setTotal(0);
+        ArrayList<Long> expiredStatuses = new ArrayList<>();
+        expiredStatuses.add(CarWaybillEnum.REJECT_ORDER.getCode().longValue());
+        expiredStatuses.add(CarWaybillEnum.REFUSE_TRAFFIC.getCode().longValue());
+        expiredStatuses.add(CarWaybillEnum.REVOKED.getCode().longValue());
+
         for (CarWaybillEnum status : CarWaybillEnum.values()) {
+            boolean expiredFlag = expiredStatuses.contains(status.getCode().longValue());
             TableTops top = new TableTops();
             top.setName(status.getDestination());
             top.setValue(String.valueOf(status.getCode()));
             top.setTotal(0);
             if (CollectionUtils.isNotEmpty(results)) {
                 for (TableTops result : results) {
-                    if (StringUtils.isNotEmpty(result.getValue()) && String.valueOf(result.getValue()).equals(String.valueOf(status.getCode()))) {
-                        top.setTotal(result.getTotal());
-                        continue;
+                    if (StringUtils.isNotEmpty(result.getValue())
+                            && String.valueOf(result.getValue()).equals(String.valueOf(status.getCode()))) {
+                        if(expiredFlag) {
+                            topExpired.setTotal(topExpired.getTotal() + result.getTotal());
+                        } else {
+                            top.setTotal(result.getTotal());
+                        }
+                        break;
                     }
                 }
             }
-            list.add(top);
+            if(!expiredFlag) {
+                list.add(top);
+            }
         }
+        list.add(topExpired);
         // 查询结果
         return HttpResult.ok(list);
     }

+ 2 - 4
sckw-modules/sckw-report/src/main/resources/bootstrap-dev.yml

@@ -5,8 +5,7 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-#        namespace: sckw_jc
-        namespace:  sckw-service-platform-dev
+        namespace: sckw-service-platform-dev
         # 共享配置
         group: sckw-service-platform
       config:
@@ -15,8 +14,7 @@ spring:
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-#        namespace: sckw_jc
-        namespace:  sckw-service-platform-dev
+        namespace: sckw-service-platform-dev
         # 共享配置
         group: sckw-service-platform
         #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组

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

@@ -239,7 +239,7 @@
     from sys_dict
     where del_flag = 0
       and type = #{type}
-      and value = #{value}
+      and value = #{value} limit 1
   </select>
 
   <select id="selectAll" resultType="com.sckw.system.model.SysDict">

+ 57 - 16
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java

@@ -4,10 +4,7 @@ import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.model.ValiList;
 import com.sckw.core.web.response.HttpResult;
-import com.sckw.transport.model.dto.OperateWaybillDto;
-import com.sckw.transport.model.dto.OperateSendCarDto;
-import com.sckw.transport.model.dto.SendCarDto1;
-import com.sckw.transport.model.dto.UpdateDriverCarDTO;
+import com.sckw.transport.model.dto.*;
 import com.sckw.transport.service.DriverService;
 import com.sckw.transport.service.KwtWaybillOrderService;
 import jakarta.validation.Valid;
@@ -15,7 +12,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.List;
 
 /**
@@ -95,7 +91,7 @@ public class KwtWaybillOrderController {
 
     /**
      * @param params {}
-     * @description 派车-趟次/循环
+     * @desc 派车-趟次/循环
      * @author zk
      * @date 2023/5/30
      **/
@@ -109,7 +105,7 @@ public class KwtWaybillOrderController {
 
     /**
      * @param ids 车辆运单主键ID,多个已逗号隔开
-     * @description 取消派车
+     * @desc 取消派车
      * @author zk
      * @date 2023/7/24
      **/
@@ -120,7 +116,7 @@ public class KwtWaybillOrderController {
 
     /**
      * @param params {}
-     * @description 确认接单
+     * @desc 确认接单
      * @author zk
      * @date 2023/7/24
      **/
@@ -131,7 +127,7 @@ public class KwtWaybillOrderController {
 
     /**
      * @param params {}
-     * @description 拒绝接单
+     * @desc 拒绝接单
      * @author zk
      * @date 2023/7/24
      **/
@@ -141,8 +137,8 @@ public class KwtWaybillOrderController {
     }
 
     /**
-     * @param params 确认/拒绝出车参数
-     * @description 确认出车
+     * @param params {}
+     * @desc 确认出车
      * @author zk
      * @date 2023/7/26
      **/
@@ -152,8 +148,8 @@ public class KwtWaybillOrderController {
     }
 
     /**
-     * @param params 确认/拒绝出车参数
-     * @description 拒绝出车
+     * @param params {}
+     * @desc 拒绝出车
      * @author zk
      * @date 2023/7/26
      **/
@@ -162,6 +158,50 @@ public class KwtWaybillOrderController {
         return waybillOrderService.refuseDeparture(params);
     }
 
+    /**
+     * @param params {}
+     * @desc 到达装货地点
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @PostMapping("/arriveLoadLocation")
+    public HttpResult arriveLoadLocation(@RequestBody @Valid OperateWaybillDto params){
+        return waybillOrderService.arriveLoadLocation(params);
+    }
+
+    /**
+     * @param params {}
+     * @desc 装货
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @PostMapping("/loading")
+    public HttpResult loading(@RequestBody @Valid WaybillOrderTicketDto params){
+        return waybillOrderService.loading(params);
+    }
+
+    /**
+     * @param params {}
+     * @desc 到达卸货地点
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @PostMapping("/arriveUnloadLocation")
+    public HttpResult arriveUnloadLocation(@RequestBody @Valid OperateWaybillDto params){
+        return waybillOrderService.arriveUnloadLocation(params);
+    }
+
+    /**
+     * @param params {}
+     * @desc 卸货
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @PostMapping("/unloading")
+    public HttpResult unloading(@RequestBody @Valid WaybillOrderTicketDto params){
+        return waybillOrderService.unloading(params);
+    }
+
 
 
     //取消派车(未接单前)
@@ -170,10 +210,11 @@ public class KwtWaybillOrderController {
     //确认接单-趟次/循环
     //拒绝接单-趟次/循环
     //确认/拒绝出车
-    //到达装货地点
+    //到达装货地点 arriveLoadLocation
     //确认装货
-    //到达卸货地点
+    //到达卸货地点 arriveUnloadLocation
     //确认卸货
-
+    //修改单证
+    //单证审核
 
 }

+ 13 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/WaybillManagementController.java

@@ -2,14 +2,14 @@ package com.sckw.transport.controller;
 
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.transport.model.dto.WaybillOrderDTO;
 import com.sckw.transport.service.WaybillManagementService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
 
 /**
  * @author lfdc
@@ -25,7 +25,7 @@ public class WaybillManagementController {
     @Autowired
     WaybillManagementService waybillManagementService;
 
-    @RequestMapping(value = "/waybillData", method = RequestMethod.GET)
+    @RequestMapping(name = "运单详情", value = "/waybillData", method = RequestMethod.GET)
     public HttpResult waybillData(@Param("id") Long id) {
         try {
             return waybillManagementService.waybillData(id);
@@ -34,4 +34,13 @@ public class WaybillManagementController {
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }
+    @RequestMapping(name = "运单看板", value = "/waybillIndex", method = RequestMethod.GET)
+    public HttpResult waybillIndex(WaybillOrderDTO waybillOrderDTO) {
+        try {
+            return waybillManagementService.waybillIndex(waybillOrderDTO);
+        } catch (Exception e) {
+            log.error("运单看板:订单id {},error {} ", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
 }

+ 0 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderTicketMapper.java

@@ -6,15 +6,5 @@ import org.apache.ibatis.annotations.Mapper;
 
 @Mapper
 public interface KwtWaybillOrderTicketMapper extends BaseMapper<KwtWaybillOrderTicket> {
-    int deleteByPrimaryKey(Long id);
 
-    int insert(KwtWaybillOrderTicket record);
-
-    int insertSelective(KwtWaybillOrderTicket record);
-
-    KwtWaybillOrderTicket selectByPrimaryKey(Long id);
-
-    int updateByPrimaryKeySelective(KwtWaybillOrderTicket record);
-
-    int updateByPrimaryKey(KwtWaybillOrderTicket record);
 }

+ 10 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrder.java

@@ -145,6 +145,16 @@ public class KwtLogisticsOrder implements Serializable {
      */
     private BigDecimal deficitPrice;
 
+    /**
+     * 实际开始时间(装货)
+     */
+    private Date loadTime;
+
+    /**
+     * 实际结束时间(卸货)
+     */
+    private Date unloadTime;
+
     /**
      * 付款方式(预付款、线下支付、第三方支付)
      */

+ 2 - 38
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderTicket.java

@@ -1,12 +1,9 @@
 package com.sckw.transport.model;
 
-import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.sckw.core.model.base.BaseModel;
 import lombok.Data;
-
-import java.io.Serializable;
 import java.math.BigDecimal;
-import java.util.Date;
 
 /**
  * @author lfdc
@@ -15,11 +12,7 @@ import java.util.Date;
  */
 @Data
 @TableName("kwt_waybill_order_ticket")
-public class KwtWaybillOrderTicket implements Serializable {
-    /**
-     * 主键
-     */
-    private Long id;
+public class KwtWaybillOrderTicket extends BaseModel {
 
     /**
      * 车辆运单id
@@ -51,33 +44,4 @@ public class KwtWaybillOrderTicket implements Serializable {
      */
     private String urls;
 
-    /**
-     * 备注
-     */
-    private String remark;
-
-    /**
-     * 用户状态(0正常、1已锁)
-     */
-    private Integer status;
-
-    private Long createBy;
-
-    private Date createTime;
-
-    private Long updateBy;
-
-    /**
-     * 更新时间
-     */
-    private Date updateTime;
-
-    /**
-     * 是否删除(0未删除,1删除)
-     */
-    @TableLogic("0")
-    private Integer delFlag;
-
-    private static final long serialVersionUID = 1L;
-
 }

+ 68 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderDTO.java

@@ -0,0 +1,68 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.sckw.core.model.page.PageRequest;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author JC
+ * @version 1.0
+ * @desc TODO
+ * @date 2023/{07}/19 10:20:44
+ **/
+@Data
+@Accessors(chain = true)
+public class WaybillOrderDTO extends PageRequest implements Serializable {
+    private List<Long> ids;
+    /**
+     * 派车开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String startSendCarTime;
+
+    /**
+     * 派车结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String endSendCarTime;
+
+    /**
+     * 装载开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String startLoadTime;
+
+    /**
+     * 装载结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String endLoadTime;
+
+    /**
+     * 卸载开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String startUnloadTime;
+
+    /**
+     * 卸载结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String endUnloadTime;
+
+    /**
+     * 关键字搜索
+     */
+    @NotBlank(message = "关键字不能为空")
+    private String keywords;
+
+    /**
+     * 运单状态
+     */
+    private String status;
+}

+ 65 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/WaybillOrderTicketDto.java

@@ -0,0 +1,65 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.DecimalMin;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import java.math.BigDecimal;
+
+/**
+ * @author zk
+ * @desc 装卸货榜单信息
+ * @date 2023/7/26 0026
+ */
+@Data
+public class WaybillOrderTicketDto {
+
+    /**
+     * 车辆运单id
+     */
+    @JsonProperty("wOrderId")
+    @NotNull(message = "车辆运单ID不能为空")
+    private Long wOrderId;
+
+    /**
+     * 磅单类型(1装货单/2卸货单)
+
+    @JsonProperty("type")
+    @NotNull(message = "磅单类型不能为空")
+    private Integer type;*/
+
+    /**
+     * 装卸货数量
+     */
+    @JsonProperty("amount")
+    @NotNull(message = "装卸货净重不能为空")
+    @DecimalMin(value= "0", inclusive=false, message = "装卸货净重必须等于或大于0")
+    private BigDecimal amount;
+
+    /**
+     * 毛重
+     */
+    @JsonProperty("grossAmount")
+    private BigDecimal grossAmount;
+
+    /**
+     * 皮重
+     */
+    @JsonProperty("tareAmount")
+    private BigDecimal tareAmount;
+
+    /**
+     * 上传凭证地址,多个以英文逗号隔开
+     */
+    @JsonProperty("urls")
+    @NotBlank(message = "凭证不能为空")
+    private String urls;
+
+    /**
+     * 备注
+     */
+    @Size(max=100, message = "原因长度不能大于100个字符!")
+    private String remark;
+}

+ 105 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillBoardListVO.java

@@ -0,0 +1,105 @@
+package com.sckw.transport.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author JC
+ * @version 1.0
+ * @desc TODO
+ * @date 2023/07/26 17:03:22
+ **/
+@Data
+@Accessors(chain = true)
+public class WaybillBoardListVO {
+    /**
+     * 运单Id
+     */
+    private String wOrderId;
+    /**
+     * 运单号
+     */
+    private String wOrderNo;
+
+    /**
+     * 商品名称
+     */
+    private String goodsName;
+
+    /**
+     * 装货地点
+     */
+    private String loadDetailAddress;
+
+    /**
+     * 卸货地点
+     */
+    private String unloadDetailAddress;
+
+    /**
+     * 开始时间
+     */
+    private String startTime;
+
+    /**
+     * 结束时间
+     */
+    private String endTime;
+
+    /**
+     * 托运单位
+     */
+    private String firmName;
+
+    /**
+     * 派单人员
+     */
+    private String createByName;
+
+    /**
+     * 派单时间
+     */
+    private String createTime;
+
+    /**
+     * 司机姓名
+     */
+    private String driverName;
+
+    /**
+     * 司机电话
+     */
+    private String driverPhone;
+
+    /**
+     * 车牌号
+     */
+    private String truckNo;
+
+    /**
+     * 装载重量
+     */
+    private String loadGrossAmount;
+
+    /**
+     * 卸货重量
+     */
+    private String unloadGrossAmount;
+
+    /**
+     * 装载图片
+     */
+    private String loadUrls;
+
+    /**
+     * 卸货图片
+     */
+    private String unloadUrls;
+
+    /**
+     * 进度列表
+     */
+    private List<WaybillStatusVO> tracks;
+}

+ 39 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillStatusVO.java

@@ -0,0 +1,39 @@
+package com.sckw.transport.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author JC
+ * @version 1.0
+ * @desc TODO
+ * @date 2023/07/26 17:03:22
+ **/
+@Data
+@Accessors(chain = true)
+public class WaybillStatusVO {
+    /**
+     * 状态描述
+     */
+    private String destination;
+
+    /**
+     * 状态码
+     */
+    private Integer code;
+
+    /**
+     * 进行状态
+     */
+    private boolean status;
+
+    /**
+     * 记录时间
+     */
+    private String createTime;
+
+    /**
+     * 记录时间
+     */
+    private String createByName;
+}

+ 210 - 13
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -19,12 +19,14 @@ import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.OperateWaybillDto;
 import com.sckw.transport.model.dto.OperateSendCarDto;
 import com.sckw.transport.model.dto.SendCarDto1;
+import com.sckw.transport.model.dto.WaybillOrderTicketDto;
 import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-
+import org.springframework.web.bind.annotation.RequestBody;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
@@ -50,6 +52,8 @@ public class KwtWaybillOrderService {
     @Autowired
     KwtWaybillOrderTrackMapper waybillOrderTrackDao;
     @Autowired
+    KwtWaybillOrderTicketMapper waybillOrderTicketDao;
+    @Autowired
     KwtLogisticsOrderUnitMapper logisticsOrderUnitDao;
     @Autowired
     KwtLogisticsOrderGoodsMapper logisticsOrderGoodsDao;
@@ -818,18 +822,11 @@ public class KwtWaybillOrderService {
             /**2Mongodb数据更新**/
             SckwWaybillOrder wOrder = new SckwWaybillOrder();
             wOrder.set_id(circulate.getId());
-            wOrder.setStatus(CarWaybillEnum.REJECT_ORDER.getCode());
-            wOrder.setUpdateTime(circulate.getUpdateTime());
-            wOrder.setUpdateBy(circulate.getUpdateBy());
-            //rabbitMq业务汇总数据发送/消费对象
-            SckwBusSum busSum = new SckwBusSum();
-            //业务汇总类型
-            busSum.setBusSumType(BusinessTypeEnum.WAYBILL_ORDER_TYPE.getName());
-            //操作对象(1新增/2修改/3替换数据)
-            busSum.setMethod(2);
-            //业务汇总数据对象
-            busSum.setObject(wOrder);
-            streamBridge.send("sckw-busSum", busSum);
+            KwtWaybillOrder waybillOrder = new KwtWaybillOrder();
+            waybillOrder.setStatus(CarWaybillEnum.REJECT_ORDER.getCode());
+            waybillOrder.setUpdateTime(circulate.getUpdateTime());
+            waybillOrder.setUpdateBy(circulate.getUpdateBy());
+            editSckwWaybillOrder(wOrder, waybillOrder, 2);
 
             /**3发送消息**/
         }
@@ -922,5 +919,205 @@ public class KwtWaybillOrderService {
         return HttpResult.ok("拒绝出车成功!");
     }
 
+    /**
+     * @param params {}
+     * @desc 到达装货地点
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult arriveLoadLocation(OperateWaybillDto params){
+        /**数据校验**/
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+        //已出车车辆运单才能到达装货地点
+        if (waybillOrder.getStatus() != CarWaybillEnum.EXIT_COMPLETED.getCode()) {
+            return HttpResult.error("车辆运单当前状态已不能到达装货地点!");
+        }
+
+        /**业务处理**/
+        /**1更新车辆运单**/
+        waybillOrder.setStatus(CarWaybillEnum.WAIT_LOADING.getCode());
+        waybillOrderDao.updateById(waybillOrder);
+
+        /**2新增运单状态记录**/
+        setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), params.getRemark());
+
+        /**3Mongodb数据更新**/
+        //1车辆运单
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        wOrder.set_id(waybillOrder.getId());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
+
+        /**4发送消息**/
+
+        return HttpResult.ok("到达装货地点成功!");
+    }
+
+    /**
+     * @param params {}
+     * @desc 装货
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult loading(WaybillOrderTicketDto params){
+        /**数据校验**/
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+        //到达装货地车辆运单才能装货
+        if (waybillOrder.getStatus() != CarWaybillEnum.WAIT_LOADING.getCode()) {
+            return HttpResult.error("车辆运单当前状态已不能装货!");
+        }
+
+        /**业务处理**/
+        /**1更新车辆运单**/
+        waybillOrder.setLoadAmount(params.getAmount());
+        waybillOrder.setStatus(CarWaybillEnum.COMPLETION_LOADING.getCode());
+        waybillOrderDao.updateById(waybillOrder);
+
+        /**2新增运单状态记录**/
+        setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), params.getRemark());
+
+        /**3新增装卸货榜单信息**/
+        KwtWaybillOrderTicket ticket = new KwtWaybillOrderTicket();
+        ticket.setWOrderId(waybillOrder.getId());
+        ticket.setType(Global.NUMERICAL_ONE);
+        ticket.setAmount(waybillOrder.getLoadAmount());
+        ticket.setUrls(params.getUrls());
+        waybillOrderTicketDao.insert(ticket);
+
+        /**4更新承运订单entrustAmount**/
+        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
+        //承运订单已委派量=承运订单原委派量+当前车辆运单委派量
+        BigDecimal loadAmount = logisticsOrder.getLoadAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getLoadAmount();
+        logisticsOrder.setLoadAmount(loadAmount.add(waybillOrder.getLoadAmount()));
+        logisticsOrder.setLoadTime(waybillOrder.getUpdateTime());
+        logisticsOrderDao.updateById(logisticsOrder);
+
+        /**5Mongodb数据更新**/
+        //1车辆运单
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        wOrder.set_id(waybillOrder.getId());
+        wOrder.setLoadAmount(waybillOrder.getLoadAmount());
+        wOrder.setLoadUrls(params.getUrls());
+        wOrder.setLoadTime(waybillOrder.getUpdateTime());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
+
+        //2承运订单
+        SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
+        lOrder.setLoadTime(logisticsOrder.getLoadTime());
+        lOrder.setLoadAmount(logisticsOrder.getLoadAmount());
+        editSckwLogisticsOrder(lOrder, logisticsOrder);
+
+        /**6发送消息**/
+
+        return HttpResult.ok("装货成功!");
+    }
+
+    /**
+     * @param params {}
+     * @desc 到达卸货地点
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult arriveUnloadLocation(OperateWaybillDto params){
+        /**数据校验**/
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+        //已装货车辆运单才能到达卸货地点
+        if (waybillOrder.getStatus() != CarWaybillEnum.COMPLETION_LOADING.getCode()) {
+            return HttpResult.error("车辆运单当前状态已不能到达卸货地点!");
+        }
+
+        /**业务处理**/
+        /**1更新车辆运单**/
+        waybillOrder.setStatus(CarWaybillEnum.WAIT_UNLOADING.getCode());
+        waybillOrderDao.updateById(waybillOrder);
+
+        /**2新增运单状态记录**/
+        setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), params.getRemark());
+
+        /**3Mongodb数据更新**/
+        //1车辆运单
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        wOrder.set_id(waybillOrder.getId());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
+
+        /**4发送消息**/
+
+        return HttpResult.ok("到达卸货地点成功!");
+    }
+
+    /**
+     * @param params {}
+     * @desc 卸货
+     * @author zk
+     * @date 2023/7/26
+     **/
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult unloading(@RequestBody @Valid WaybillOrderTicketDto params){
+        /**数据校验**/
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+        //到达卸货地车辆运单才能卸货
+        if (waybillOrder.getStatus() != CarWaybillEnum.WAIT_UNLOADING.getCode()) {
+            return HttpResult.error("车辆运单当前状态已不能装货!");
+        }
+
+        /**业务处理**/
+        /**1更新车辆运单**/
+        waybillOrder.setUnloadAmount(params.getAmount());
+        waybillOrder.setDeficitAmount(waybillOrder.getLoadAmount().subtract(waybillOrder.getUnloadAmount()));
+        waybillOrder.setStatus(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
+        waybillOrderDao.updateById(waybillOrder);
+
+        /**2新增运单状态记录**/
+        setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), params.getRemark());
+
+        /**3新增装卸货榜单信息**/
+        KwtWaybillOrderTicket ticket = new KwtWaybillOrderTicket();
+        ticket.setWOrderId(waybillOrder.getId());
+        ticket.setType(Global.NUMERICAL_TWO);
+        ticket.setAmount(waybillOrder.getUnloadAmount());
+        ticket.setUrls(params.getUrls());
+        waybillOrderTicketDao.insert(ticket);
+
+        /**4更新承运订单entrustAmount**/
+        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
+        //承运订单已委派量=承运订单原委派量+当前车辆运单委派量
+        BigDecimal loadAmount = logisticsOrder.getLoadAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getLoadAmount();
+        logisticsOrder.setLoadAmount(loadAmount.add(waybillOrder.getLoadAmount()));
+        logisticsOrder.setLoadTime(waybillOrder.getUpdateTime());
+        logisticsOrderDao.updateById(logisticsOrder);
+
+        /**5Mongodb数据更新**/
+        //1车辆运单
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        wOrder.set_id(waybillOrder.getId());
+        wOrder.setLoadAmount(waybillOrder.getLoadAmount());
+        wOrder.setLoadUrls(params.getUrls());
+        wOrder.setLoadTime(waybillOrder.getUpdateTime());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
+
+        //2承运订单
+        SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
+        lOrder.setLoadTime(logisticsOrder.getLoadTime());
+        lOrder.setLoadAmount(logisticsOrder.getLoadAmount());
+        editSckwLogisticsOrder(lOrder, logisticsOrder);
+
+        /**6发送消息**/
+
+        return HttpResult.ok("装货成功!");
+    }
 
 }

+ 148 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -2,10 +2,17 @@ package com.sckw.transport.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.enums.CarWaybillEnum;
+import com.sckw.core.model.page.PageResult;
+import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.StringUtils;
+import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.utils.DateUtil;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RTruckVo;
+import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.dao.KwtWaybillOrderAddressMapper;
@@ -16,15 +23,21 @@ import com.sckw.transport.model.KwtWaybillOrderAddress;
 import com.sckw.transport.model.KwtWaybillOrderTicket;
 import com.sckw.transport.model.KwtWaybillOrderTrack;
 import com.sckw.transport.model.dto.WayBillDetailDTO;
-import com.sckw.transport.model.vo.WaybillCarVO;
-import com.sckw.transport.model.vo.WaybillDataVO;
-import com.sckw.transport.model.vo.WaybillTicketVO;
-import com.sckw.transport.model.vo.WaybillTrackVO;
+import com.sckw.transport.model.dto.WaybillOrderDTO;
+import com.sckw.transport.model.vo.*;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Value;
 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.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -57,6 +70,9 @@ public class WaybillManagementService {
     @Autowired
     public KwtWaybillOrderTrackMapper kwtWaybillOrderTrackMapper;
 
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
     /**
      * 运单详情
      *
@@ -149,4 +165,132 @@ public class WaybillManagementService {
         waybillDataVO.setLogsMessage(waybillTrackVOS);
         return HttpResult.ok(waybillDataVO);
     }
+
+    /**
+     * 运单看板列表
+     * @return
+     */
+    public HttpResult waybillIndex(WaybillOrderDTO query) {
+        // mongo查询列数据,不足的数据单独关联表查询
+        // 状态查询 status [2-8]
+        List<Integer> statuses = new ArrayList<>();
+        statuses.add(CarWaybillEnum.PENDING_VEHICLE.getCode());
+        statuses.add(CarWaybillEnum.EXIT_COMPLETED.getCode());
+        statuses.add(CarWaybillEnum.WAIT_LOADING.getCode());
+        statuses.add(CarWaybillEnum.COMPLETION_LOADING.getCode());
+        statuses.add(CarWaybillEnum.WAIT_UNLOADING.getCode());
+        statuses.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
+        statuses.add(CarWaybillEnum.APPROVAL_COMPLETED.getCode());
+        // 初始化各状态
+        List<WaybillStatusVO> statusVOS = new ArrayList<>();
+        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("核单");
+            }
+            statusVOS.add(waybillStatusVO);
+        });
+
+        Criteria criteria = new Criteria();
+        criteria.and("entId").is(LoginUserHolder.getEntId());
+        criteria.and("delFlag").is(NumberConstant.ZERO);
+
+        if (StringUtils.isNotBlank(query.getStatus())) {
+            criteria.and("status").is(query.getStatus());
+        } else {
+            criteria.and("status").in(statuses);
+        }
+        // 装载时间
+        if (StringUtils.isNotBlank(query.getStartLoadTime()) && StringUtils.isNotEmpty(query.getEndLoadTime())) {
+            criteria.andOperator(Criteria.where("loadTime").gte(query.getStartLoadTime()), Criteria.where("loadTime")
+                    .lte(query.getEndLoadTime()));
+        }
+        if (StringUtils.isNotBlank(query.getStartLoadTime()) && StringUtils.isNotEmpty(query.getEndLoadTime())) {
+            criteria.andOperator(Criteria.where("loadTime").gte(query.getStartLoadTime()), Criteria.where("loadTime")
+                    .lte(query.getEndLoadTime()));
+        }
+        // 派车时间
+        if (StringUtils.isNotBlank(query.getStartSendCarTime()) && StringUtils.isNotEmpty(query.getEndSendCarTime())) {
+            criteria.andOperator(Criteria.where("sendCarTime").gte(query.getStartSendCarTime()), Criteria.where("sendCarTime")
+                    .lte(query.getEndSendCarTime()));
+        }
+        // 卸货时间
+        if (StringUtils.isNotBlank(query.getStartUnloadTime()) && StringUtils.isNotEmpty(query.getEndUnloadTime())) {
+            criteria.andOperator(Criteria.where("unloadTime").gte(query.getStartUnloadTime()), Criteria.where("unloadTime")
+                    .lte(query.getEndUnloadTime()));
+        }
+        // 多条件模糊查询
+        List<Criteria> orCriteria = new ArrayList<>();
+        if (StringUtils.isNotBlank(query.getKeywords())) {
+            /*Pattern pattern = Pattern.compile("^.*" + query.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
+            orCriteria.add(Criteria.where("wOrderNo").regex(pattern));
+            orCriteria.add(Criteria.where("truckNo").regex(pattern));
+            orCriteria.add(Criteria.where("driverName").regex(pattern));
+            orCriteria.add(Criteria.where("firmName").regex(pattern));
+            orCriteria.add(Criteria.where("loadAddress").regex(pattern));
+            orCriteria.add(Criteria.where("unloadAddress").regex(pattern));
+            criteria.orOperator(orCriteria);*/
+        }
+        Query queryFormat = new Query(criteria);
+        long total = mongoTemplate.count(queryFormat, SckwWaybillOrder.class);
+        queryFormat.with(PageRequest.of(query.getPage() - 1, query.getPageSize(),
+                Sort.by(Sort.Order.desc("createTime"))));
+        // 执行查询
+        List<SckwWaybillOrder> list = mongoTemplate.find(queryFormat, SckwWaybillOrder.class);
+        // 查询关联单据信息
+        List<WaybillBoardListVO> orders = new ArrayList<>();
+        for (SckwWaybillOrder sckwWaybillOrder:list) {
+            WaybillBoardListVO waybillBoardListVO = new WaybillBoardListVO();
+            waybillBoardListVO.setWOrderId(String.valueOf(sckwWaybillOrder.getWOrderId()));
+            waybillBoardListVO.setWOrderNo(String.valueOf(sckwWaybillOrder.getWOrderNo()));
+            waybillBoardListVO.setGoodsName(String.valueOf(sckwWaybillOrder.getGoodsName()));
+            waybillBoardListVO.setLoadDetailAddress(String.valueOf(sckwWaybillOrder.getLoadDetailAddress()));
+            waybillBoardListVO.setUnloadDetailAddress(String.valueOf(sckwWaybillOrder.getUnloadDetailAddress()));
+            waybillBoardListVO.setStartTime(DateUtil.getDateTime(sckwWaybillOrder.getStartTime()));
+            waybillBoardListVO.setEndTime(DateUtil.getDateTime(sckwWaybillOrder.getEndTime()));
+            waybillBoardListVO.setFirmName(String.valueOf(sckwWaybillOrder.getFirmName()));
+            waybillBoardListVO.setCreateByName(String.valueOf(sckwWaybillOrder.getCreateByName()));
+            waybillBoardListVO.setCreateTime(DateUtil.getDateTime(sckwWaybillOrder.getCreateTime()));
+            waybillBoardListVO.setDriverName(String.valueOf(sckwWaybillOrder.getDriverName()));
+            waybillBoardListVO.setDriverPhone(String.valueOf(sckwWaybillOrder.getDriverPhone()));
+            waybillBoardListVO.setTruckNo(String.valueOf(sckwWaybillOrder.getTruckNo()));
+            waybillBoardListVO.setLoadGrossAmount(sckwWaybillOrder.getLoadGrossAmount() != null ? String.valueOf(sckwWaybillOrder.getLoadGrossAmount()) : null);
+            waybillBoardListVO.setUnloadGrossAmount(sckwWaybillOrder.getUnloadGrossAmount() != null ? String.valueOf(sckwWaybillOrder.getUnloadGrossAmount()) : null);
+            waybillBoardListVO.setLoadUrls(sckwWaybillOrder.getLoadUrls() != null ? String.valueOf(sckwWaybillOrder.getLoadUrls()) : null);
+            waybillBoardListVO.setUnloadUrls(sckwWaybillOrder.getUnloadUrls() != null ? String.valueOf(sckwWaybillOrder.getUnloadUrls()) : null);
+            // 运单进度
+            List<WaybillStatusVO> statusVOS2 = new ArrayList<>();
+            BeanUtils.copyProperties(statusVOS, statusVOS2);
+            log.error("XXXX-11 {}", statusVOS);
+            log.error("XXXX-12 {}", statusVOS2);
+            List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
+                    .eq(KwtWaybillOrderTrack::getWOrderId, sckwWaybillOrder.getWOrderId()));
+            if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
+                for (WaybillStatusVO waybillStatusVO: statusVOS2) {
+                    for (KwtWaybillOrderTrack waybillOrderTrack: kwtWaybillOrderTracks) {
+                        log.error("XXXX-1 {}", waybillStatusVO.getCode());
+                        log.error("XXXX-2 {}", waybillOrderTrack.getStatus());
+                        if(waybillStatusVO.getCode().equals(waybillOrderTrack.getStatus())) {
+                            waybillStatusVO.setStatus(true);
+                            waybillStatusVO.setCreateTime(DateUtil.getDateTime(waybillOrderTrack.getCreateTime()));
+                            waybillStatusVO.setCreateByName(String.valueOf(waybillOrderTrack.getCreateBy()));
+                        }
+                    }
+                }
+            }
+            waybillBoardListVO.setTracks(statusVOS);
+            orders.add(waybillBoardListVO);
+        }
+
+        PageResult build = PageResult.build(query.getPage(), query.getPageSize(), total, orders);
+        return HttpResult.ok(build);
+    }
 }

+ 2 - 1
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderTicketMapper.xml

@@ -19,6 +19,7 @@
     </resultMap>
     <sql id="Base_Column_List">
         id, w_order_id, `type`, amount, gross_amount, tare_amount, urls, remark, `status`,
-    create_by, create_time, update_by, update_time, del_flag
+        create_by, create_time, update_by, update_time, del_flag
     </sql>
+
 </mapper>