From 74432331d7130a2d2798d0217ee9b688de55d811 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期三, 27 八月 2025 17:55:30 +0800
Subject: [PATCH] 新增前后端

---
 service/src/main/java/com/ruoyi/cwgl/service/impl/KeyCollectionInfoServiceImpl.java |   38 +++++++
 api/src/main/java/com/ruoyi/api/controller/LockerApiController.java                 |   73 ++++++++++++++
 service/src/main/java/com/ruoyi/cwgl/service/IKeyCollectionInfoService.java         |   14 ++
 service/src/main/java/com/ruoyi/cwgl/domain/KeyCollectionInfo.java                  |   11 ++
 service/src/main/java/com/ruoyi/cwgl/mapper/KeyCollectionInfoMapper.java            |    3 
 service/src/main/java/com/ruoyi/cwgl/domain/RequestLog.java                         |    2 
 service/src/main/java/com/ruoyi/cwgl/domain/dto/TakeReviewDto.java                  |   24 ++++
 service/src/main/java/com/ruoyi/cwgl/domain/dto/ReturnReportDto.java                |   24 ++++
 admin/src/main/resources/application-custom.yml                                     |    1 
 pom.xml                                                                             |    1 
 service/src/main/resources/mapper/cwgl/KeyCollectionInfoMapper.xml                  |   48 +++++++++
 api/pom.xml                                                                         |   29 +++++
 12 files changed, 267 insertions(+), 1 deletions(-)

diff --git a/admin/src/main/resources/application-custom.yml b/admin/src/main/resources/application-custom.yml
index 51db08d..2d1f2bf 100644
--- a/admin/src/main/resources/application-custom.yml
+++ b/admin/src/main/resources/application-custom.yml
@@ -83,6 +83,7 @@
       /captchaImage
       /actuator/**
       /*/api-docs
+      /api/**
       /druid/**
       /webjars/**
       /swagger-resources/**
diff --git a/api/pom.xml b/api/pom.xml
new file mode 100644
index 0000000..cd72684
--- /dev/null
+++ b/api/pom.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>manage</artifactId>
+        <groupId>com.ruoyi</groupId>
+        <version>master</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>api</artifactId>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>api-remote</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>service</artifactId>
+            <version>master</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/api/src/main/java/com/ruoyi/api/controller/LockerApiController.java b/api/src/main/java/com/ruoyi/api/controller/LockerApiController.java
new file mode 100644
index 0000000..ad837e0
--- /dev/null
+++ b/api/src/main/java/com/ruoyi/api/controller/LockerApiController.java
@@ -0,0 +1,73 @@
+package com.ruoyi.api.controller;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.cwgl.domain.KeyCollectionInfo;
+import com.ruoyi.cwgl.domain.RequestLog;
+import com.ruoyi.cwgl.domain.dto.ReturnReportDto;
+import com.ruoyi.cwgl.domain.dto.TakeReviewDto;
+import com.ruoyi.cwgl.service.IKeyCollectionInfoService;
+import com.ruoyi.cwgl.service.IRequestLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * 鍌ㄧ墿鏌滄帴鍙�
+ * @author wjw
+ */
+@RestController
+@RequestMapping("/api/third/locker/")
+public class LockerApiController {
+
+    @Autowired
+    private IKeyCollectionInfoService keyCollectionInfoService;
+    @Autowired
+    private IRequestLogService logService;
+
+    /**
+     * 涓婃姤鍙栧嚭瀹℃牳
+     */
+
+    @PostMapping("takeReview")
+    public AjaxResult takeReview(@RequestBody TakeReviewDto takeReviewDto){
+
+        KeyCollectionInfo keyCollectionInfo = keyCollectionInfoService.selectCwData(takeReviewDto);
+        //娣诲姞璇锋眰鏃ュ織
+        RequestLog requestLog = new RequestLog();
+        requestLog.setDriverCode(takeReviewDto.getDriverCode());
+        requestLog.setDriverName(takeReviewDto.getDriverName());
+        requestLog.setReqTime(DateUtils.parseDate(takeReviewDto.getHandleTime()));
+        requestLog.setType(0);
+        logService.insertRequestLog(requestLog);
+
+        return keyCollectionInfoService.takeReview(keyCollectionInfo);
+
+
+    }
+
+    /**
+     * 褰掕繕涓婃姤
+     */
+
+    @PostMapping("returnReport")
+    public AjaxResult returnReport(@RequestBody ReturnReportDto returnReportDto){
+
+        //娣诲姞璇锋眰鏃ュ織
+        RequestLog requestLog = new RequestLog();
+        requestLog.setDriverCode(returnReportDto.getDriverCode());
+        requestLog.setBoxNum(returnReportDto.getBoxNum());
+        requestLog.setReqTime(DateUtils.parseDate(returnReportDto.getSaveTime()));
+        requestLog.setType(1);
+        logService.insertRequestLog(requestLog);
+
+        return AjaxResult.success();
+
+
+    }
+
+
+}
diff --git a/pom.xml b/pom.xml
index d02d130..92d3541 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,6 +18,7 @@
         <module>quartz</module>
         <module>common</module>
         <module>service</module>
+        <module>api</module>
     </modules>
     <packaging>pom</packaging>
 
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/KeyCollectionInfo.java b/service/src/main/java/com/ruoyi/cwgl/domain/KeyCollectionInfo.java
index 79fb6d4..93e947e 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/KeyCollectionInfo.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/KeyCollectionInfo.java
@@ -161,5 +161,16 @@
     @TableField("remark")
     private String remark;
 
+    /**
+     * 璋冨害瓒呮椂涓嬪崟锛岃秴鏃�?涓皬鏃�
+     */
+    @TableField(exist = false)
+    private Integer schedulingTimeout;
+
+    /**
+     * '棰勮鍑哄彂鏃堕棿 & ord.ESTIMATED_DEPARTURE_TIME 锛岄鍙栭挜鍖欒秴鏃禢涓皬鏃�'
+     */
+    @TableField(exist = false)
+    private Integer keyTimeout;
 
 }
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/RequestLog.java b/service/src/main/java/com/ruoyi/cwgl/domain/RequestLog.java
index b3fee56..3900da7 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/RequestLog.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/RequestLog.java
@@ -55,7 +55,7 @@
 
     /** 璇锋眰鏃堕棿 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "璇锋眰鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "璇锋眰鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @TableField("req_time")
     private Date reqTime;
 
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReturnReportDto.java b/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReturnReportDto.java
new file mode 100644
index 0000000..e36affa
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReturnReportDto.java
@@ -0,0 +1,24 @@
+package com.ruoyi.cwgl.domain.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 涓婃姤鍙栧嚭瀹℃牳dto
+ */
+@Data
+public class ReturnReportDto {
+
+
+    /**鏌滈棬缂栧彿*/
+    @NotBlank(message = "鏌滈棬缂栧彿涓嶈兘涓虹┖")
+    private  String boxNum ;
+    /**鍙告満鍞竴缂栧彿*/
+    @NotBlank(message = "鍙告満鍞竴缂栧彿涓嶈兘涓虹┖")
+    private  String driverCode ;
+    /**鍙告満鍞竴缂栧彿*/
+    @NotBlank(message = "瀛樺叆鏃堕棿涓嶈兘涓虹┖")
+    private  String saveTime ;
+
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/dto/TakeReviewDto.java b/service/src/main/java/com/ruoyi/cwgl/domain/dto/TakeReviewDto.java
new file mode 100644
index 0000000..2edad47
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/dto/TakeReviewDto.java
@@ -0,0 +1,24 @@
+package com.ruoyi.cwgl.domain.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 涓婃姤鍙栧嚭瀹℃牳dto
+ */
+@Data
+public class TakeReviewDto {
+
+
+    /**鍙告満鍞竴缂栧彿*/
+    @NotBlank(message = "鍙告満鍞竴缂栧彿涓嶈兘涓虹┖")
+    private  String driverCode ;
+    /**鍙告満濮撳悕*/
+    @NotBlank(message = "鍙告満濮撳悕涓嶈兘涓虹┖")
+    private  String driverName ;
+    /**鍙告満鍞竴缂栧彿*/
+    @NotBlank(message = "璇锋眰寮�闂ㄦ椂闂翠笉鑳戒负绌�")
+    private  String handleTime ;
+
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/mapper/KeyCollectionInfoMapper.java b/service/src/main/java/com/ruoyi/cwgl/mapper/KeyCollectionInfoMapper.java
index eb2196b..3aedc58 100644
--- a/service/src/main/java/com/ruoyi/cwgl/mapper/KeyCollectionInfoMapper.java
+++ b/service/src/main/java/com/ruoyi/cwgl/mapper/KeyCollectionInfoMapper.java
@@ -3,6 +3,7 @@
 import java.util.List;
 import com.ruoyi.cwgl.domain.KeyCollectionInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.cwgl.domain.dto.TakeReviewDto;
 
 
 /**
@@ -84,4 +85,6 @@
      * @return 缁撴灉
      */
     public int deleteKeyCollectionInfoByIds(Integer[] ids);
+
+    KeyCollectionInfo selectCwData(TakeReviewDto takeReviewDto);
 }
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/IKeyCollectionInfoService.java b/service/src/main/java/com/ruoyi/cwgl/service/IKeyCollectionInfoService.java
index 6659561..88cf9e7 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/IKeyCollectionInfoService.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/IKeyCollectionInfoService.java
@@ -1,8 +1,12 @@
 package com.ruoyi.cwgl.service;
 
 import java.util.List;
+
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.cwgl.domain.KeyCollectionInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.cwgl.domain.dto.TakeReviewDto;
+
 /**
  * 閽ュ寵棰嗗彇淇℃伅Service鎺ュ彛
  * 
@@ -99,4 +103,14 @@
      * @return 缁撴灉
      */
     public int deleteKeyCollectionInfoById(Integer id);
+
+    public KeyCollectionInfo selectCwData(TakeReviewDto takeReviewDto);
+
+    /**
+     *  涓婃姤鍙栧嚭瀹℃牳
+     * @param keyCollectionInfo
+     * @return
+     */
+    AjaxResult takeReview(KeyCollectionInfo keyCollectionInfo);
+
 }
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/KeyCollectionInfoServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/KeyCollectionInfoServiceImpl.java
index 8d2ea1a..e95a2d8 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/impl/KeyCollectionInfoServiceImpl.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/KeyCollectionInfoServiceImpl.java
@@ -1,8 +1,16 @@
 package com.ruoyi.cwgl.service.impl;
 
+import java.util.Date;
 import java.util.List;
 
 import javax.annotation.Resource;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.cwgl.domain.RequestLog;
+import com.ruoyi.cwgl.domain.dto.TakeReviewDto;
+import com.ruoyi.cwgl.service.IRequestLogService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.stereotype.Service;
 import org.springframework.scheduling.annotation.Async;
@@ -32,6 +40,7 @@
     protected final Logger logger = LoggerFactory.getLogger(getClass());
     @Resource
     private KeyCollectionInfoMapper keyCollectionInfoMapper;
+
 
 
     /**
@@ -176,4 +185,33 @@
     {
         return keyCollectionInfoMapper.deleteKeyCollectionInfoById(id);
     }
+
+    @DataSource(DataSourceType.CWSJ)
+    @Override
+    public KeyCollectionInfo selectCwData(TakeReviewDto takeReviewDto) {
+        return keyCollectionInfoMapper.selectCwData(takeReviewDto);
+    }
+
+    @Override
+    public AjaxResult takeReview(KeyCollectionInfo keyCollectionInfo) {
+        if (keyCollectionInfo == null) {
+            return AjaxResult.error("鏌ユ棤绗﹀悎瑕佹眰鐨勮皟搴﹀崟锛岃鑱旂郴璋冨害浜哄憳",3);
+        }
+        keyCollectionInfoMapper.insertKeyCollectionInfo(keyCollectionInfo);
+
+
+        //璋冨害瓒呮椂
+        Integer schedulingTimeout = keyCollectionInfo.getSchedulingTimeout();
+        if(schedulingTimeout>5){
+            return AjaxResult.error("璋冨害瓒呮椂涓嬪崟锛岃秴鏃�"+schedulingTimeout+"涓皬鏃�",3);
+
+        }
+        Integer keyTimeout = keyCollectionInfo.getKeyTimeout();
+        if (keyTimeout!=null && keyTimeout>24){
+            Date estimatedDepartureTime = keyCollectionInfo.getEstimatedDepartureTime();
+            String dateToStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, estimatedDepartureTime);
+            return AjaxResult.error("棰勮鍑哄彂鏃堕棿"+ dateToStr+"锛岄鍙栭挜鍖欒秴鏃�"+keyTimeout+"涓皬鏃�");
+        }
+        return AjaxResult.success("鎴愬姛",2);
+    }
 }
diff --git a/service/src/main/resources/mapper/cwgl/KeyCollectionInfoMapper.xml b/service/src/main/resources/mapper/cwgl/KeyCollectionInfoMapper.xml
index 4255608..85a9bd2 100644
--- a/service/src/main/resources/mapper/cwgl/KeyCollectionInfoMapper.xml
+++ b/service/src/main/resources/mapper/cwgl/KeyCollectionInfoMapper.xml
@@ -79,6 +79,54 @@
         </where>
         order by thisTab.id desc
     </select>
+    <select id="selectCwData" resultType="com.ruoyi.cwgl.domain.KeyCollectionInfo">
+SELECT
+	customer.`NAME` as customerName,
+	bp.`NAME` as carrier,
+	ts.DISPATCH_NO as dispatchNo,
+	driver_m.`NAME` as driverName,
+	driver_m.MOBILE as driverMobile,
+	vhc.LICENSE_PLATE_NUMBER as licensePlateNumber,
+	ord.ORDER_TIME as orderTime,
+	ord.CREATED_TIME as orderCreatedTime,
+	ts.CREATED_TIME as dispatchCreatedTime,
+	now() as keyCollectionTime, -- 鏀捐姹傛煡璇㈠埌鐨勬椂闂�
+	ord.ESTIMATED_DEPARTURE_TIME as estimatedDepartureTime,
+	ord.CONSIGNOR_ADDRESS_ADDR_INFO as consignorAddress,
+	ord.CONSIGNEE_ADDRESS_ADDR_INFO as consigneeAddress,
+	driver_m.`NAME` as mainDriver,
+	ts.POINT_NUM as pointNum,
+	ts.TRANSPORT_MODE as transportMode,
+	driver_a.`NAME` as assistantDriver,
+	ts.QUANTITY as quantity,
+	ts.REQUIRED_ARRIVAL_TIME as ,
+	ts.DISPATCH_QUANTITY as dispatchQuantity,
+	ts.REMARK as remark,
+	TIMESTAMPDIFF(HOUR, ord.ORDER_TIME, ord.CREATED_TIME) as schedulingTimeout,
+	TIMESTAMPDIFF(HOUR, ord.ESTIMATED_DEPARTURE_TIME, NOW()) as keyTimeout
+
+FROM
+  tms_shipment ts
+  left JOIN oms_order ord ON ts.DISPATCH_NO = ord.DISPATCH_CODE
+  LEFT JOIN base_customer customer ON customer.ID = ord.CUSTOMER_ID
+  LEFT JOIN tms_vehicle vhc ON ts.VEHICLE_ID = vhc.id
+  LEFT JOIN base_provider bp ON bp.ID = ts.CARRIER_ID
+  LEFT JOIN tms_driver driver_m ON driver_m.ID = ts.MAIN_DRIVER_ID
+  LEFT JOIN tms_driver driver_a ON driver_a.ID = ts.ASSISTANT_DRIVER_ID
+WHERE
+  ts.`STATUS` = 'A'
+  <if test="driverCode != null and driverCode != '' ">
+      and driver_m.MOBILE = #{driverCode}
+  </if>
+  <if test="driverName != null and driverName != ''">
+      and driver_m.NAME = #{driverName}
+  </if>
+ORDER BY ord.ESTIMATED_DEPARTURE_TIME asc
+LIMIT 1
+
+
+
+    </select>
 
     <!-- 鏂板 -->
     <insert id="insertKeyCollectionInfo" parameterType="com.ruoyi.cwgl.domain.KeyCollectionInfo"  useGeneratedKeys="true" keyProperty="id">

--
Gitblit v1.8.0