Przeglądaj źródła

1、全图监控接口调整;

zk 2 lat temu
rodzic
commit
8e51cca4eb

+ 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
      *

+ 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;
+}

+ 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;
+
     /**
      *速度
      */

+ 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
      **/

+ 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);
 }

+ 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;
+    }
 }

+ 32 - 0
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
@@ -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>