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

1、司机详情重复车辆处理;

zk 2 лет назад
Родитель
Сommit
83a8b1614e

+ 32 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/NumberUtils.java

@@ -50,6 +50,17 @@ public class NumberUtils {
         }
     }
 
+    public static Integer parseInteger(Object obj){
+        return parseInt(obj, 0);
+    }
+
+    public static Integer parseEmptyInteger(Object obj) {
+        if (obj == null) {
+            return null;
+        }
+        return parseInt(obj, 0);
+    }
+
     public static long parseLong(Object obj) {
         return parseLong(obj, 0L);
     }
@@ -68,6 +79,13 @@ public class NumberUtils {
         }
     }
 
+    public static Long parseEmptyLong(Object obj){
+        if (obj == null) {
+            return null;
+        }
+        return parseLong(obj, 0);
+    }
+
     public static float parseFloat(Object obj) {
         return parseFloat(obj, 0.0F);
     }
@@ -86,6 +104,13 @@ public class NumberUtils {
         }
     }
 
+    public static Float parseEmptyFloat(Object obj){
+        if (obj == null) {
+            return null;
+        }
+        return parseFloat(obj, 0);
+    }
+
     public static double parseDouble(Object str) {
         return parseDouble(str, 0.0D);
     }
@@ -104,6 +129,13 @@ public class NumberUtils {
         }
     }
 
+    public static Double parseEmptyDouble(Object obj){
+        if (obj == null) {
+            return null;
+        }
+        return parseDouble(obj, 0);
+    }
+
     public static BigDecimal parseBigDecimal(Object obj) {
         return parseBigDecimal(obj, new BigDecimal(0));
     }

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

@@ -49,6 +49,9 @@ public class DateUtil {
      * @return
      */
     public static String getDateTime(Date date) {
+        if (date == null) {
+            return null;
+        }
         Instant instant = date.toInstant();
         ZoneId zoneId = ZoneId.systemDefault();
         LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();

+ 22 - 17
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dubbo/RemoteFleetServiceImpl.java

@@ -3,6 +3,8 @@ package com.sckw.fleet.dubbo;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.NumberUtils;
+import com.sckw.core.utils.StringUtils;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RDriverDetailVo;
 import com.sckw.fleet.api.model.vo.RDriverVo;
@@ -51,16 +53,16 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
         /**数据处理**/
         for (Map<String, Object> driver:drivers) {
             RDriverVo driverVo = new RDriverVo();
-            driverVo.setId(driver.get("id") != null ? Long.parseLong(String.valueOf(driver.get("id"))) : null);
-            driverVo.setName(driver.get("name") != null ? String.valueOf(driver.get("name")) : null);
-            driverVo.setPhone(driver.get("phone") != null ? String.valueOf(driver.get("phone")) : null);
-            driverVo.setIdcard(driver.get("idcard") != null ? String.valueOf(driver.get("idcard")) : null);
-            driverVo.setTotalComplete(driver.get("totalComplete") != null ? Integer.parseInt(String.valueOf(driver.get("totalComplete"))) : null);
-            driverVo.setTotalTake(driver.get("totalTake") != null ? Integer.parseInt(String.valueOf(driver.get("totalTake"))) : null);
-            driverVo.setTotalWeight(driver.get("totalWeight") != null ? new BigDecimal(Double.parseDouble(String.valueOf(driver.get("totalWeight")))) : null);
+            driverVo.setId(NumberUtils.parseEmptyLong(driver.get("id")));
+            driverVo.setName(StringUtils.objectStr(driver.get("name")));
+            driverVo.setPhone(StringUtils.objectStr(driver.get("phone")));
+            driverVo.setIdcard(StringUtils.objectStr(driver.get("idcard")));
+            driverVo.setTotalComplete(NumberUtils.parseEmptyInteger(driver.get("totalComplete")));
+            driverVo.setTotalTake(NumberUtils.parseEmptyInteger(driver.get("totalTake")));
+            driverVo.setTotalWeight(new BigDecimal(NumberUtils.parseDouble(driver.get("totalWeight"))));
+            driverVo.setBusinessStatus(NumberUtils.parseEmptyInteger(driver.get("businessStatus")));
             driverMap.put(driverVo.getId(), driverVo);
         }
-
         return driverMap;
     }
 
@@ -128,17 +130,16 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
         /**数据处理**/
         for (Map<String, Object> truck:trucks) {
             RTruckVo truckVo = new RTruckVo();
-            truckVo.setId(truck.get("id") != null ? Long.parseLong(String.valueOf(truck.get("id"))) : null);
-            truckVo.setTruckNo(truck.get("truckNo") != null ? String.valueOf(truck.get("truckNo")) : null);
-            truckVo.setActualWeight(truck.get("actualWeight") != null ? Double.parseDouble(String.valueOf(truck.get("actualWeight"))) : null);
-            truckVo.setTrailerNo(truck.get("trailerNo") != null ? String.valueOf(truck.get("trailerNo")) : null);
-            truckVo.setTotalComplete(truck.get("totalComplete") != null ? Integer.parseInt(String.valueOf(truck.get("totalComplete"))) : null);
-            truckVo.setTotalTake(truck.get("totalTake") != null ? Integer.parseInt(String.valueOf(truck.get("totalTake"))) : null);
-            truckVo.setTotalWeight(truck.get("totalWeight") != null ? new BigDecimal(Double.parseDouble(String.valueOf(truck.get("totalWeight")))) : null);
-            truckVo.setBusinessStatus(truck.get("businessStatus") != null ? Integer.parseInt(String.valueOf(truck.get("businessStatus"))) : null);
+            truckVo.setId(NumberUtils.parseEmptyLong(truck.get("id")));
+            truckVo.setTruckNo(StringUtils.objectStr(truck.get("truckNo")));
+            truckVo.setActualWeight(NumberUtils.parseEmptyDouble(truck.get("actualWeight")));
+            truckVo.setTrailerNo(StringUtils.objectStr(truck.get("trailerNo")));
+            truckVo.setTotalComplete(NumberUtils.parseEmptyInteger(truck.get("totalComplete")));
+            truckVo.setTotalTake(NumberUtils.parseEmptyInteger(truck.get("totalTake")));
+            truckVo.setTotalWeight(new BigDecimal(NumberUtils.parseDouble(truck.get("totalWeight"))));
+            truckVo.setBusinessStatus(NumberUtils.parseEmptyInteger(truck.get("businessStatus")));
             truckMap.put(truckVo.getTruckNo(), truckVo);
         }
-
         return truckMap;
     }
 
@@ -179,4 +180,8 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
     public List<Map<String, Object>> capacityStatistics(List entIds) {
         return truckDao.capacityStatistics(entIds);
     }
+
+    public static void main(String[] args) {
+        System.out.println(NumberUtils.parseLong(null));
+    }
 }

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

@@ -141,25 +141,6 @@ public class KwfDriverService {
         return null;
     }
 
-    /**
-     * @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;
-    }
-
     /**
      * @param params 参数
      * @desc 统计
@@ -811,6 +792,25 @@ public class KwfDriverService {
         }
     }
 
+    /**
+     * @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;
+    }
+
     /**
      * @param params 参数
      * @desc 校验司机是否有证书

+ 33 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/UserInfoVo.java

@@ -0,0 +1,33 @@
+package com.sckw.transport.model.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * desc 用户+司机信息
+ * author zk
+ * date 2023/9/7 0007
+ */
+@Data
+public class UserInfoVo implements Serializable {
+
+    /**
+     * 用户id
+     */
+    private long id;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 电话
+     */
+    private String phone;
+
+    /**
+     * 企业ID
+     */
+    private long entId;
+}

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillTrackVO.java

@@ -32,7 +32,7 @@ public class WaybillTrackVO {
     /**
      * 操作员名
      */
-    private String createBy;
+    private Long createBy;
     /**
      * 操作员名
      */

+ 36 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java

@@ -7,22 +7,24 @@ import com.sckw.contract.api.RemoteContractService;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.exception.BusinessException;
+import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.core.model.enums.OrderRuleEnum;
 import com.sckw.core.model.enums.RedisOrderGenerateEnum;
-import com.sckw.core.utils.CollectionUtils;
-import com.sckw.core.utils.DateUtils;
-import com.sckw.core.utils.OrderGenerateSeqNoUtils;
-import com.sckw.core.utils.StringUtils;
+import com.sckw.core.utils.*;
+import com.sckw.fleet.api.RemoteFleetService;
+import com.sckw.fleet.api.model.vo.RDriverVo;
 import com.sckw.mongo.model.TableTops;
 import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.dao.KwtLogisticsOrderContractMapper;
 import com.sckw.transport.dao.KwtLogisticsOrderMapper;
 import com.sckw.transport.model.KwtLogisticsOrder;
 import com.sckw.transport.model.KwtLogisticsOrderContract;
+import com.sckw.transport.model.vo.UserInfoVo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +49,9 @@ public class CommonService {
     @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
     RemoteContractService remoteContractService;
 
+    @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
+    RemoteFleetService remoteFleetService;
+
     @Autowired
     private KwtLogisticsOrderMapper logisticsOrderMapper;
 
@@ -183,4 +188,31 @@ public class CommonService {
         KwtLogisticsOrderContract contract = logisticsOrderContractMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderContract>().eq(KwtLogisticsOrderContract::getLOrderId, logisticsOrder.getId()));
         remoteContractService.updatePerformed(contract.getContractId(), actualAmount);
     }
+
+    /**
+     * @param userIds 企业用户ID+司机ID
+     * @desc 查询用户信息
+     * @author zk
+     * @date 2023/9/7
+     **/
+    public List<UserInfoVo> findUserList(List<Long> userIds) {
+        List<UserInfoVo> userList = new ArrayList<>();
+        //用户数据集
+        userIds = userIds.stream().distinct().collect(Collectors.toList());
+        Map<Long, UserCacheResDto> users = remoteSystemService.queryUserCacheMapByIds(userIds);
+        users.forEach((key,value) -> {
+            UserInfoVo userInfo = new UserInfoVo();
+            BeanUtils.copyProperties(value, userInfo);
+            userList.add(userInfo);
+        });
+
+        Map<Long, RDriverVo> drivers = remoteFleetService.findDriver(userIds);
+        drivers.forEach((key,value) -> {
+            UserInfoVo userInfo = new UserInfoVo();
+            BeanUtils.copyProperties(value, userInfo);
+            userList.add(userInfo);
+        });
+        return userList;
+    }
+
 }

+ 35 - 30
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -79,6 +79,9 @@ public class WaybillManagementService {
     @Autowired
     private MongoTemplate mongoTemplate;
 
+    @Autowired
+    private CommonService commonService;
+
     /**
      * 运单详情
      *
@@ -181,9 +184,8 @@ public class WaybillManagementService {
                 deficitRealAmount = deficitLoss.subtract(deficitAmount);
             }
             waybillTicketVO.setDeficitRealAmount(deficitRealAmount.toString());
-//            waybillBoardListVO.setLoadUrls(sckwWaybillOrder.getLoadUrls() != null ? FileUtils.getOSSAddressPrefix() + sckwWaybillOrder.getLoadUrls() : null);
-//            waybillBoardListVO.setUnloadUrls(sckwWaybillOrder.getUnloadUrls() != null ? FileUtils.getOSSAddressPrefix() + sckwWaybillOrder.getUnloadUrls() : null);
         }
+
         List<Integer> statuses = initWaybillIndexStatus();
         // 初始化各状态
         List<WaybillStatusVO> statusVOS = new ArrayList<>();
@@ -194,38 +196,41 @@ public class WaybillManagementService {
             waybillStatusVO.setDestination(CarWaybillEnum.getName(e));
             statusVOS.add(waybillStatusVO);
         });
-        List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
+
+        List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper
+                .selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
                 .eq(KwtWaybillOrderTrack::getWOrderId, id));
         List<WaybillTrackVO> waybillTrackVOS = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
             List<Long> userIds = new ArrayList<>();
             kwtWaybillOrderTracks.forEach(e -> userIds.add(e.getCreateBy()));
-            List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
-            Map<Long, UserCacheResDto> usersMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
-            users.forEach(e -> usersMap.put(e.getId(), e));
-            for (KwtWaybillOrderTrack kwtWaybillOrderTrack : kwtWaybillOrderTracks) {
+            List<UserInfoVo> users = commonService.findUserList(userIds);
+            Map<Long, String> userNameMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            users.forEach(e -> userNameMap.put(e.getId(), e.getName()));
+            Map<Long, String> userPhoneMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            users.forEach(e -> userPhoneMap.put(e.getId(), e.getPhone()));
+
+            for (KwtWaybillOrderTrack track : kwtWaybillOrderTracks) {
                 for (WaybillStatusVO statusVO : statusVOS) {
-                    if (statusVO.getCode().equals(kwtWaybillOrderTrack.getStatus())) {
+                    if (statusVO.getCode().equals(track.getStatus())) {
                         statusVO.setStatus(true);
-                        statusVO.setId(kwtWaybillOrderTrack.getId());
-                        statusVO.setCreateTime(DateUtil.getDateTime(kwtWaybillOrderTrack.getCreateTime()));
-                        statusVO.setOperateTime(kwtWaybillOrderTrack.getOperateTime() == null
-                                ? null : DateUtil.getDateTime(kwtWaybillOrderTrack.getOperateTime()));
-                        statusVO.setCreateByName(usersMap.get(kwtWaybillOrderTrack.getCreateBy()) == null
-                                ? null : usersMap.get(kwtWaybillOrderTrack.getCreateBy()).getName());
+                        statusVO.setId(track.getId());
+                        statusVO.setCreateTime(DateUtil.getDateTime(track.getCreateTime()));
+                        statusVO.setOperateTime(DateUtil.getDateTime(track.getOperateTime()));
+                        statusVO.setCreateByName(userNameMap.get(track.getCreateBy()));
                         break;
                     }
                 }
+
                 WaybillTrackVO waybillTrackVO = new WaybillTrackVO();
-                waybillTrackVO.setId(String.valueOf(kwtWaybillOrderTrack.getId()))
-                        .setRemark(kwtWaybillOrderTrack.getRemark())
-                        .setStatus(String.valueOf(kwtWaybillOrderTrack.getStatus()))
-                        .setStatusLabel(CarWaybillEnum.getName(kwtWaybillOrderTrack.getStatus()))
-                        .setCreateBy(usersMap.get(kwtWaybillOrderTrack.getCreateBy()) == null
-                                ? null : usersMap.get(kwtWaybillOrderTrack.getCreateBy()).getName())
-                        .setCreateByPhone(usersMap.get(kwtWaybillOrderTrack.getCreateBy()) == null
-                                ? null : usersMap.get(kwtWaybillOrderTrack.getCreateBy()).getPhone())
-                        .setCreateTime(DateUtil.getDateTime(kwtWaybillOrderTrack.getCreateTime()));
+                waybillTrackVO.setId(String.valueOf(track.getId()))
+                        .setRemark(track.getRemark())
+                        .setStatus(String.valueOf(track.getStatus()))
+                        .setStatusLabel(CarWaybillEnum.getName(track.getStatus()))
+                        .setCreateBy(track.getCreateBy())
+                        .setCreateByPhone(userPhoneMap.get(track.getCreateBy()))
+                        .setCreateByName(userNameMap.get(track.getCreateBy()))
+                        .setCreateTime(DateUtil.getDateTime(track.getCreateTime()));
                 waybillTrackVOS.add(waybillTrackVO);
             }
         }
@@ -369,7 +374,6 @@ public class WaybillManagementService {
         // mongo查询列数据,不足的数据单独关联表查询
         // 状态查询 status [2-8]
         List<Integer> statuses = initWaybillIndexStatus();
-//        List<Integer> statuses = CarWaybillEnum.getCodes();
         // 初始化各状态
         List<WaybillStatusVO> statusVOS = new ArrayList<>();
         statuses.forEach(e -> {
@@ -383,8 +387,7 @@ public class WaybillManagementService {
         Criteria criteria = buildWaybillIndexQuery(query);
         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"))));
+        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<>();
@@ -423,9 +426,8 @@ public class WaybillManagementService {
             waybillBoardListVO.setLoadGrossAmount(sckwWaybillOrder.getLoadGrossAmount() != null ? String.valueOf(sckwWaybillOrder.getLoadGrossAmount()) : null);
             waybillBoardListVO.setUnloadGrossAmount(sckwWaybillOrder.getUnloadGrossAmount() != null ? String.valueOf(sckwWaybillOrder.getUnloadGrossAmount()) : null);
             waybillBoardListVO.setLoadUrls(sckwWaybillOrder.getLoadUrls());
-//            waybillBoardListVO.setLoadUrls(sckwWaybillOrder.getLoadUrls() != null ? FileUtils.getOSSAddressPrefix() + sckwWaybillOrder.getLoadUrls() : null);
-//            waybillBoardListVO.setUnloadUrls(sckwWaybillOrder.getUnloadUrls() != null ? FileUtils.getOSSAddressPrefix() + sckwWaybillOrder.getUnloadUrls() : null);
             waybillBoardListVO.setUnloadUrls(sckwWaybillOrder.getUnloadUrls());
+
             List<WaybillStatusVO> statusVOS2 = new ArrayList<>();
             statusVOS.forEach(e -> {
                 WaybillStatusVO temp = new WaybillStatusVO();
@@ -433,13 +435,16 @@ public class WaybillManagementService {
                 statusVOS2.add(temp);
             });
             waybillBoardListVO.setTracks(statusVOS2);
+
             // 运单进度
-            List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
+            List<KwtWaybillOrderTrack> kwtWaybillOrderTracks = kwtWaybillOrderTrackMapper
+                    .selectList(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
                     .eq(KwtWaybillOrderTrack::getWOrderId, sckwWaybillOrder.getWOrderId()));
+
             if (CollectionUtils.isNotEmpty(kwtWaybillOrderTracks)) {
                 List<Long> userIds = new ArrayList<>();
                 kwtWaybillOrderTracks.forEach(e -> userIds.add(e.getCreateBy()));
-                List<UserCacheResDto> users = remoteSystemService.queryUserCacheByIds(userIds);
+                List<UserInfoVo> users = commonService.findUserList(userIds);
                 Map<Long, String> usersMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
                 users.forEach(e -> usersMap.put(e.getId(), e.getName()));
                 waybillBoardListVO.getTracks().forEach(e -> {