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