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