From 4f7d8924b8c5f4f019b16a8563e30c48abef441e Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期一, 01 九月 2025 13:30:50 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/yagwly_fa_master' into yagwly_fa_master
---
service/src/main/resources/mapper/cwgl/RequestLogMapper.xml | 137 +++
service/src/main/java/com/ruoyi/cwgl/domain/KeyCollectionInfo.java | 176 ++++
service/src/main/java/com/ruoyi/cwgl/domain/RequestLog.java | 77 +
admin/src/main/resources/application-custom.yml | 1
service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableServiceImpl.java | 27
service/src/main/resources/mapper/cwgl/PendingSettlementBusinessMapper.xml | 6
pom.xml | 1
service/src/main/resources/mapper/cwgl/KeyCollectionInfoMapper.xml | 264 ++++++
ui/admin-ui3/src/api/cwgl/keyCollectionInfo.ts | 67 +
ui/admin-ui3/src/views/cwgl/keyCollectionInfo/index.vue | 181 ++++
quartz/src/main/java/com/ruoyi/quartz/task/SettlementTask.java | 3
service/src/main/java/com/ruoyi/cwgl/service/impl/KeyCollectionInfoServiceImpl.java | 217 +++++
service/src/main/java/com/ruoyi/cwgl/service/IKeyCollectionInfoService.java | 116 ++
service/src/main/java/com/ruoyi/cwgl/controller/KeyCollectionInfoController.java | 108 ++
service/src/main/java/com/ruoyi/cwgl/domain/dto/TakeReviewDto.java | 24
api/pom.xml | 29
ui/admin-ui3/src/api/cwgl/requestLog.ts | 67 +
service/src/main/java/com/ruoyi/cwgl/controller/RequestLogController.java | 108 ++
api/src/main/java/com/ruoyi/api/controller/LockerApiController.java | 73 +
service/src/main/java/com/ruoyi/cwgl/mapper/KeyCollectionInfoMapper.java | 90 ++
service/src/main/java/com/ruoyi/cwgl/mapper/RequestLogMapper.java | 87 ++
service/src/main/java/com/ruoyi/cwgl/domain/dto/ReturnReportDto.java | 24
service/src/main/java/com/ruoyi/cwgl/service/impl/RequestLogServiceImpl.java | 181 ++++
service/src/main/java/com/ruoyi/cwgl/service/IRequestLogService.java | 102 ++
ui/admin-ui3/src/views/cwgl/requestLog/index.vue | 139 +++
25 files changed, 2,300 insertions(+), 5 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/quartz/src/main/java/com/ruoyi/quartz/task/SettlementTask.java b/quartz/src/main/java/com/ruoyi/quartz/task/SettlementTask.java
index 2ad1316..a32967c 100644
--- a/quartz/src/main/java/com/ruoyi/quartz/task/SettlementTask.java
+++ b/quartz/src/main/java/com/ruoyi/quartz/task/SettlementTask.java
@@ -49,6 +49,9 @@
List<EstimatedReceivable> estimatedReceivables = new ArrayList<>();
for (PendingSettlementBusiness pendingSettlementBusiness : pendingSettlementBusinesses) {
pendingSettlementBusiness.setIsCreate(0);
+ pendingSettlementBusiness.setEstimatedTotalCost(BigDecimal.ZERO);
+
+ pendingSettlementBusiness.setEstimatedTotalIncome(BigDecimal.ZERO);
ReceivableLineTruckPriceRule exactMatchingRule = ExactPricingRuleMatcher.findExactMatchingRule(receivableLineTruckPriceRules, pendingSettlementBusiness.getCustomerName(), pendingSettlementBusiness.getDepartureLocation(), pendingSettlementBusiness.getArrivalLocation(), pendingSettlementBusiness.getVehicleType());
if (exactMatchingRule!=null) {
//搴旀敹鏁版嵁
diff --git a/service/src/main/java/com/ruoyi/cwgl/controller/KeyCollectionInfoController.java b/service/src/main/java/com/ruoyi/cwgl/controller/KeyCollectionInfoController.java
new file mode 100644
index 0000000..613940b
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/controller/KeyCollectionInfoController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.cwgl.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.utils.file.DownloadExportUtil;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.cwgl.domain.KeyCollectionInfo;
+import com.ruoyi.cwgl.service.IKeyCollectionInfoService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 閽ュ寵棰嗗彇淇℃伅Controller
+ *
+ * @author ruoyi
+ * @date 2025-08-27
+ */
+@RestController
+@RequestMapping("/cwgl/keyCollectionInfo")
+public class KeyCollectionInfoController extends BaseController
+{
+ @Autowired
+ private IKeyCollectionInfoService keyCollectionInfoService;
+
+
+
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅鍒楄〃
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:keyCollectionInfo:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(KeyCollectionInfo keyCollectionInfo)
+ {
+ startPage();
+ List<KeyCollectionInfo> list = keyCollectionInfoService.selectKeyCollectionInfoList(keyCollectionInfo);
+ return getDataTable(list);
+ }
+
+ /**
+ * 瀵煎嚭閽ュ寵棰嗗彇淇℃伅鍒楄〃
+ * @param keyCollectionInfo 鏌ヨ鏉′欢瀵硅薄
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:keyCollectionInfo:export')")
+ @Log(title = "閽ュ寵棰嗗彇淇℃伅", businessType = BusinessType.EXPORT)
+ @GetMapping("/export")
+ public AjaxResult export(KeyCollectionInfo keyCollectionInfo,String exportKey)
+ {
+ keyCollectionInfoService.export(keyCollectionInfo,exportKey);
+ return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+ }
+
+
+
+ /**
+ * 鑾峰彇閽ュ寵棰嗗彇淇℃伅璇︾粏淇℃伅
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:keyCollectionInfo:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Integer id)
+ {
+ return AjaxResult.success(keyCollectionInfoService.selectKeyCollectionInfoById(id));
+ }
+
+ /**
+ * 鏂板閽ュ寵棰嗗彇淇℃伅
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:keyCollectionInfo:add')")
+ @Log(title = "閽ュ寵棰嗗彇淇℃伅", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody KeyCollectionInfo keyCollectionInfo)
+ {
+ return toAjax(keyCollectionInfoService.insertKeyCollectionInfo(keyCollectionInfo));
+ }
+
+ /**
+ * 淇敼閽ュ寵棰嗗彇淇℃伅
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:keyCollectionInfo:edit')")
+ @Log(title = "閽ュ寵棰嗗彇淇℃伅", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody KeyCollectionInfo keyCollectionInfo)
+ {
+ return toAjax(keyCollectionInfoService.updateKeyCollectionInfo(keyCollectionInfo));
+ }
+
+ /**
+ * 鍒犻櫎閽ュ寵棰嗗彇淇℃伅
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:keyCollectionInfo:remove')")
+ @Log(title = "閽ュ寵棰嗗彇淇℃伅", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Integer[] ids)
+ {
+ return toAjax(keyCollectionInfoService.deleteKeyCollectionInfoByIds(ids));
+ }
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/controller/RequestLogController.java b/service/src/main/java/com/ruoyi/cwgl/controller/RequestLogController.java
new file mode 100644
index 0000000..3a213d7
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/controller/RequestLogController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.cwgl.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.utils.file.DownloadExportUtil;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.cwgl.domain.RequestLog;
+import com.ruoyi.cwgl.service.IRequestLogService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 璇锋眰鏃ュ織Controller
+ *
+ * @author ruoyi
+ * @date 2025-08-27
+ */
+@RestController
+@RequestMapping("/cwgl/requestLog")
+public class RequestLogController extends BaseController
+{
+ @Autowired
+ private IRequestLogService requestLogService;
+
+
+
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織鍒楄〃
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:requestLog:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(RequestLog requestLog)
+ {
+ startPage();
+ List<RequestLog> list = requestLogService.selectRequestLogList(requestLog);
+ return getDataTable(list);
+ }
+
+ /**
+ * 瀵煎嚭璇锋眰鏃ュ織鍒楄〃
+ * @param requestLog 鏌ヨ鏉′欢瀵硅薄
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:requestLog:export')")
+ @Log(title = "璇锋眰鏃ュ織", businessType = BusinessType.EXPORT)
+ @GetMapping("/export")
+ public AjaxResult export(RequestLog requestLog,String exportKey)
+ {
+ requestLogService.export(requestLog,exportKey);
+ return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+ }
+
+
+
+ /**
+ * 鑾峰彇璇锋眰鏃ュ織璇︾粏淇℃伅
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:requestLog:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Integer id)
+ {
+ return AjaxResult.success(requestLogService.selectRequestLogById(id));
+ }
+
+ /**
+ * 鏂板璇锋眰鏃ュ織
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:requestLog:add')")
+ @Log(title = "璇锋眰鏃ュ織", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody RequestLog requestLog)
+ {
+ return toAjax(requestLogService.insertRequestLog(requestLog));
+ }
+
+ /**
+ * 淇敼璇锋眰鏃ュ織
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:requestLog:edit')")
+ @Log(title = "璇锋眰鏃ュ織", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody RequestLog requestLog)
+ {
+ return toAjax(requestLogService.updateRequestLog(requestLog));
+ }
+
+ /**
+ * 鍒犻櫎璇锋眰鏃ュ織
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:requestLog:remove')")
+ @Log(title = "璇锋眰鏃ュ織", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Integer[] ids)
+ {
+ return toAjax(requestLogService.deleteRequestLogByIds(ids));
+ }
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/KeyCollectionInfo.java b/service/src/main/java/com/ruoyi/cwgl/domain/KeyCollectionInfo.java
new file mode 100644
index 0000000..93e947e
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/KeyCollectionInfo.java
@@ -0,0 +1,176 @@
+package com.ruoyi.cwgl.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.util.Date;
+import lombok.Data;
+/**
+ * 閽ュ寵棰嗗彇淇℃伅瀵硅薄 key_collection_info
+ *
+ * @author ruoyi
+ * @date 2025-08-27
+ */
+@Data
+public class KeyCollectionInfo{
+
+
+ /** ID */
+ @TableField("id")
+ private Integer id;
+
+
+ /** 瀹㈡埛鍚嶇О */
+ @Excel(name = "瀹㈡埛鍚嶇О")
+
+ @TableField("customer_name")
+ private String customerName;
+
+
+ /** 鎵胯繍鍟� */
+ @Excel(name = "鎵胯繍鍟�")
+
+ @TableField("carrier")
+ private String carrier;
+
+
+ /** 璋冨害鍗曞彿 */
+ @Excel(name = "璋冨害鍗曞彿")
+
+ @TableField("dispatch_no")
+ private String dispatchNo;
+
+
+ /** 鍙告満鍚嶇О */
+ @Excel(name = "鍙告満鍚嶇О")
+
+ @TableField("driver_name")
+ private String driverName;
+
+
+ /** 鍙告満鎵嬫満鍙� */
+ @Excel(name = "鍙告満鎵嬫満鍙�")
+ @TableField("driver_mobile")
+ private String driverMobile;
+
+
+ /** 杞︾墝鍙� */
+ @Excel(name = "杞︾墝鍙�")
+ @TableField("license_plate_number")
+ private String licensePlateNumber;
+
+
+ /** 璁㈠崟涓嬪崟鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "璁㈠崟涓嬪崟鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @TableField("order_time")
+ private Date orderTime;
+
+
+ /** 璁㈠崟鍒涘缓鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "璁㈠崟鍒涘缓鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @TableField("order_created_time")
+ private Date orderCreatedTime;
+
+
+ /** 璋冨害鍗曞垱寤烘椂闂� */
+ @Excel(name = "璋冨害鍗曞垱寤烘椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("dispatch_created_time")
+ private Date dispatchCreatedTime;
+
+
+ /** 閽ュ寵棰嗗彇鏃堕棿锛堣姹傛煡璇㈡椂闂达級 */
+ @Excel(name = "閽ュ寵棰嗗彇鏃堕棿", readConverterExp = "璇�=姹傛煡璇㈡椂闂�")
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("key_collection_time")
+ private Date keyCollectionTime;
+
+
+ /** 棰勮鍑哄彂鏃堕棿 */
+ @Excel(name = "棰勮鍑哄彂鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("estimated_departure_time")
+ private Date estimatedDepartureTime;
+
+
+ /** 瑕佹眰鍒拌揪鏃堕棿 */
+ @Excel(name = "瑕佹眰鍒拌揪鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("required_arrival_time")
+ private Date requiredArrivalTime;
+
+
+ /** 鍑哄彂鍦板湴鍧� */
+ @Excel(name = "鍑哄彂鍦板湴鍧�")
+
+ @TableField("consignor_address")
+ private String consignorAddress;
+
+
+ /** 鐩殑鍦板湴鍧� */
+ @Excel(name = "鐩殑鍦板湴鍧�")
+
+ @TableField("consignee_address")
+ private String consigneeAddress;
+
+
+ /** 涓婚┚椹跺憳 */
+ @Excel(name = "涓婚┚椹跺憳")
+
+ @TableField("main_driver")
+ private String mainDriver;
+
+
+ /** 鎻愰�佽揣鐐规暟 */
+ @Excel(name = "鎻愰�佽揣鐐规暟")
+
+ @TableField("point_num")
+ private Integer pointNum;
+
+
+ /** 杩愯緭鏂瑰紡 */
+ @Excel(name = "杩愯緭鏂瑰紡")
+ @TableField("transport_mode")
+ private String transportMode;
+
+
+ /** 鍓┚椹跺憳 */
+ @Excel(name = "鍓┚椹跺憳")
+ @TableField("assistant_driver")
+ private String assistantDriver;
+
+
+ /** 浠舵暟 */
+ @Excel(name = "浠舵暟")
+ @TableField("quantity")
+ private Integer quantity;
+
+
+ /** 瀹炲彂浠舵暟 */
+ @Excel(name = "瀹炲彂浠舵暟")
+ @TableField("dispatch_quantity")
+ private Integer dispatchQuantity;
+
+
+ /** 澶囨敞 */
+ @Excel(name = "澶囨敞")
+ @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
new file mode 100644
index 0000000..3900da7
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/RequestLog.java
@@ -0,0 +1,77 @@
+package com.ruoyi.cwgl.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.util.Date;
+import lombok.Data;
+/**
+ * 璇锋眰鏃ュ織瀵硅薄 request_log
+ *
+ * @author ruoyi
+ * @date 2025-08-27
+ */
+@Data
+public class RequestLog{
+
+
+ /** 涓婚敭 */
+ @TableField("id")
+ private Integer id;
+
+
+ /** 鍙告満鍞竴缂栧彿 */
+ @Excel(name = "鍙告満鍞竴缂栧彿")
+
+ @TableField("driver_code")
+ private String driverCode;
+
+
+ /** 鍙告満濮撳悕 */
+ @Excel(name = "鍙告満濮撳悕")
+
+ @TableField("driver_name")
+ private String driverName;
+
+
+ /** 鏌滈棬缂栧彿 */
+ @Excel(name = "鏌滈棬缂栧彿")
+
+ @TableField("box_num")
+ private String boxNum;
+
+
+ /** 鍒涘缓鑰� */
+ @TableField("create_by")
+ private String createBy;
+
+
+ /** 鍒涘缓鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("create_time")
+ private Date createTime;
+
+
+ /** 璇锋眰鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "璇锋眰鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @TableField("req_time")
+ private Date reqTime;
+
+
+ /** 0涓婃姤鍙栧嚭1褰掕繕涓婃姤 */
+ @Excel(name = "0涓婃姤鍙栧嚭1褰掕繕涓婃姤")
+
+ @TableField("type")
+ private Integer type;
+
+
+ /** 鎿嶄綔璇存槑 */
+ @Excel(name = "鎿嶄綔璇存槑")
+
+ @TableField("operation")
+ private String operation;
+
+
+}
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
new file mode 100644
index 0000000..3aedc58
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/mapper/KeyCollectionInfoMapper.java
@@ -0,0 +1,90 @@
+package com.ruoyi.cwgl.mapper;
+
+import java.util.List;
+import com.ruoyi.cwgl.domain.KeyCollectionInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.cwgl.domain.dto.TakeReviewDto;
+
+
+/**
+ * 閽ュ寵棰嗗彇淇℃伅Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-08-27
+ */
+public interface KeyCollectionInfoMapper extends BaseMapper<KeyCollectionInfo>
+{
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param id 閽ュ寵棰嗗彇淇℃伅ID
+ * @return 閽ュ寵棰嗗彇淇℃伅
+ */
+ public KeyCollectionInfo selectKeyCollectionInfoById(Integer id);
+
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅 璁板綍鏁�
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 閽ュ寵棰嗗彇淇℃伅闆嗗悎
+ */
+ public int selectKeyCollectionInfoCount(KeyCollectionInfo keyCollectionInfo);
+
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅鍒楄〃
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 閽ュ寵棰嗗彇淇℃伅闆嗗悎
+ */
+ public List<KeyCollectionInfo> selectKeyCollectionInfoList(KeyCollectionInfo keyCollectionInfo);
+
+ /**
+ * 鏂板閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ public int insertKeyCollectionInfo(KeyCollectionInfo keyCollectionInfo);
+
+ /**
+ * 鏂板閽ュ寵棰嗗彇淇℃伅[鎵归噺]
+ *
+ * @param keyCollectionInfos 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ public int insertKeyCollectionInfoBatch(List<KeyCollectionInfo> keyCollectionInfos);
+
+ /**
+ * 淇敼閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ public int updateKeyCollectionInfo(KeyCollectionInfo keyCollectionInfo);
+
+ /**
+ * 淇敼閽ュ寵棰嗗彇淇℃伅[鎵归噺]
+ *
+ * @param keyCollectionInfos 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ public int updateKeyCollectionInfoBatch(List<KeyCollectionInfo> keyCollectionInfos);
+
+ /**
+ * 鍒犻櫎閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param id 閽ュ寵棰嗗彇淇℃伅ID
+ * @return 缁撴灉
+ */
+ public int deleteKeyCollectionInfoById(Integer id);
+
+ /**
+ * 鎵归噺鍒犻櫎閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteKeyCollectionInfoByIds(Integer[] ids);
+
+ KeyCollectionInfo selectCwData(TakeReviewDto takeReviewDto);
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/mapper/RequestLogMapper.java b/service/src/main/java/com/ruoyi/cwgl/mapper/RequestLogMapper.java
new file mode 100644
index 0000000..dd76967
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/mapper/RequestLogMapper.java
@@ -0,0 +1,87 @@
+package com.ruoyi.cwgl.mapper;
+
+import java.util.List;
+import com.ruoyi.cwgl.domain.RequestLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 璇锋眰鏃ュ織Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-08-27
+ */
+public interface RequestLogMapper extends BaseMapper<RequestLog>
+{
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織
+ *
+ * @param id 璇锋眰鏃ュ織ID
+ * @return 璇锋眰鏃ュ織
+ */
+ public RequestLog selectRequestLogById(Integer id);
+
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織 璁板綍鏁�
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 璇锋眰鏃ュ織闆嗗悎
+ */
+ public int selectRequestLogCount(RequestLog requestLog);
+
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織鍒楄〃
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 璇锋眰鏃ュ織闆嗗悎
+ */
+ public List<RequestLog> selectRequestLogList(RequestLog requestLog);
+
+ /**
+ * 鏂板璇锋眰鏃ュ織
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ public int insertRequestLog(RequestLog requestLog);
+
+ /**
+ * 鏂板璇锋眰鏃ュ織[鎵归噺]
+ *
+ * @param requestLogs 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ public int insertRequestLogBatch(List<RequestLog> requestLogs);
+
+ /**
+ * 淇敼璇锋眰鏃ュ織
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ public int updateRequestLog(RequestLog requestLog);
+
+ /**
+ * 淇敼璇锋眰鏃ュ織[鎵归噺]
+ *
+ * @param requestLogs 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ public int updateRequestLogBatch(List<RequestLog> requestLogs);
+
+ /**
+ * 鍒犻櫎璇锋眰鏃ュ織
+ *
+ * @param id 璇锋眰鏃ュ織ID
+ * @return 缁撴灉
+ */
+ public int deleteRequestLogById(Integer id);
+
+ /**
+ * 鎵归噺鍒犻櫎璇锋眰鏃ュ織
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteRequestLogByIds(Integer[] ids);
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/IKeyCollectionInfoService.java b/service/src/main/java/com/ruoyi/cwgl/service/IKeyCollectionInfoService.java
new file mode 100644
index 0000000..88cf9e7
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/service/IKeyCollectionInfoService.java
@@ -0,0 +1,116 @@
+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鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-08-27
+ */
+public interface IKeyCollectionInfoService extends IService<KeyCollectionInfo>
+{
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param id 閽ュ寵棰嗗彇淇℃伅ID
+ * @return 閽ュ寵棰嗗彇淇℃伅
+ */
+ public KeyCollectionInfo selectKeyCollectionInfoById(Integer id);
+
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅 璁板綍鏁�
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 閽ュ寵棰嗗彇淇℃伅闆嗗悎
+ */
+ public int selectKeyCollectionInfoCount(KeyCollectionInfo keyCollectionInfo);
+
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅鍒楄〃
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 閽ュ寵棰嗗彇淇℃伅闆嗗悎
+ */
+ public List<KeyCollectionInfo> selectKeyCollectionInfoList(KeyCollectionInfo keyCollectionInfo);
+
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅鍒楄〃 寮傛 瀵煎嚭
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 閽ュ寵棰嗗彇淇℃伅闆嗗悎
+ */
+ public void export(KeyCollectionInfo keyCollectionInfo, String exportKey) ;
+
+
+ /**
+ * 鏂板閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ public int insertKeyCollectionInfo(KeyCollectionInfo keyCollectionInfo);
+
+ /**
+ * 鏂板閽ュ寵棰嗗彇淇℃伅[鎵归噺]
+ *
+ * @param keyCollectionInfos 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ public int insertKeyCollectionInfoBatch(List<KeyCollectionInfo> keyCollectionInfos);
+
+ /**
+ * 淇敼閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ public int updateKeyCollectionInfo(KeyCollectionInfo keyCollectionInfo);
+
+ /**
+ * 淇敼閽ュ寵棰嗗彇淇℃伅[鎵归噺]
+ *
+ * @param keyCollectionInfos 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ public int updateKeyCollectionInfoBatch(List<KeyCollectionInfo> keyCollectionInfos);
+ /**
+ * 鎵归噺鍒犻櫎閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteKeyCollectionInfoByIds(String ids);
+
+ /**
+ * 鎵归噺鍒犻櫎閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteKeyCollectionInfoByIds(Integer[] ids);
+
+ /**
+ * 鍒犻櫎閽ュ寵棰嗗彇淇℃伅淇℃伅
+ *
+ * @param id 閽ュ寵棰嗗彇淇℃伅ID
+ * @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/IRequestLogService.java b/service/src/main/java/com/ruoyi/cwgl/service/IRequestLogService.java
new file mode 100644
index 0000000..3e60661
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/service/IRequestLogService.java
@@ -0,0 +1,102 @@
+package com.ruoyi.cwgl.service;
+
+import java.util.List;
+import com.ruoyi.cwgl.domain.RequestLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+/**
+ * 璇锋眰鏃ュ織Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-08-27
+ */
+public interface IRequestLogService extends IService<RequestLog>
+{
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織
+ *
+ * @param id 璇锋眰鏃ュ織ID
+ * @return 璇锋眰鏃ュ織
+ */
+ public RequestLog selectRequestLogById(Integer id);
+
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織 璁板綍鏁�
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 璇锋眰鏃ュ織闆嗗悎
+ */
+ public int selectRequestLogCount(RequestLog requestLog);
+
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織鍒楄〃
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 璇锋眰鏃ュ織闆嗗悎
+ */
+ public List<RequestLog> selectRequestLogList(RequestLog requestLog);
+
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織鍒楄〃 寮傛 瀵煎嚭
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 璇锋眰鏃ュ織闆嗗悎
+ */
+ public void export(RequestLog requestLog, String exportKey) ;
+
+
+ /**
+ * 鏂板璇锋眰鏃ュ織
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ public int insertRequestLog(RequestLog requestLog);
+
+ /**
+ * 鏂板璇锋眰鏃ュ織[鎵归噺]
+ *
+ * @param requestLogs 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ public int insertRequestLogBatch(List<RequestLog> requestLogs);
+
+ /**
+ * 淇敼璇锋眰鏃ュ織
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ public int updateRequestLog(RequestLog requestLog);
+
+ /**
+ * 淇敼璇锋眰鏃ュ織[鎵归噺]
+ *
+ * @param requestLogs 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ public int updateRequestLogBatch(List<RequestLog> requestLogs);
+ /**
+ * 鎵归噺鍒犻櫎璇锋眰鏃ュ織
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteRequestLogByIds(String ids);
+
+ /**
+ * 鎵归噺鍒犻櫎璇锋眰鏃ュ織
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteRequestLogByIds(Integer[] ids);
+
+ /**
+ * 鍒犻櫎璇锋眰鏃ュ織淇℃伅
+ *
+ * @param id 璇锋眰鏃ュ織ID
+ * @return 缁撴灉
+ */
+ public int deleteRequestLogById(Integer id);
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableServiceImpl.java
index 564fa6a..2940f2f 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableServiceImpl.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableServiceImpl.java
@@ -267,6 +267,9 @@
BigDecimal totalAmount = estimatedReceivableBill.getTotalAmount();
estimatedReceivableBill.setTotalAmount(totalAmount.add(estimatedReceivable.getEstimatedAmount()));
estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill);
+ pendingSettlementBusiness.setEstimatedTotalIncome(pendingSettlementBusiness.getEstimatedTotalIncome().add(estimatedReceivable.getEstimatedAmount()));
+ pendingSettlementBusinessMapper.updatePendingSettlementBusiness(pendingSettlementBusiness);
+ estimatedReceivable.setRelatedBillStatus(1);
}
String username = SecurityUtils.getUsername();
@@ -305,6 +308,9 @@
BigDecimal totalAmount = estimatedReceivableBill.getTotalAmount();
estimatedReceivableBill.setTotalAmount(totalAmount.subtract(estimatedReceivable.getEstimatedAmount()));
estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill);
+ pendingSettlementBusiness.setEstimatedTotalIncome(pendingSettlementBusiness.getConfirmedTotalIncome().subtract(estimatedReceivable.getEstimatedAmount()));
+ pendingSettlementBusinessMapper.updatePendingSettlementBusiness(pendingSettlementBusiness);
+ estimatedReceivable.setRelatedBillStatus(0);
}
String username = SecurityUtils.getUsername();
@@ -324,6 +330,27 @@
throw new ServiceException("鏃犻渶閲嶅浣滃簾");
}
+ PendingSettlementBusiness pendingSettlementBusiness = pendingSettlementBusinessMapper.selectPendingSettlementBusinessByNo(estimatedReceivable.getDispatchNo());
+ if (pendingSettlementBusiness == null){
+ throw new ServiceException("璋冨害鍗曚笉瀛樺湪");
+
+ }
+ Integer relatedBillStatus = pendingSettlementBusiness.getRelatedBillStatus();
+ if (relatedBillStatus.equals(2)||relatedBillStatus.equals(3)){
+ throw new ServiceException("褰撳墠璋冨害鍗曞凡缁撶畻鎴栭儴鍒嗙粨绠楁棤娉曚綔搴�");
+ }
+ //纭鐘舵�佷笅浣滃簾鎵嶆墽琛�
+ if (estimatedReceivable.getIsConfirmed().equals(1)) {
+ if (pendingSettlementBusiness.getBillId()!=null){
+ EstimatedReceivableBill estimatedReceivableBill = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(pendingSettlementBusiness.getBillId());
+ BigDecimal totalAmount = estimatedReceivableBill.getTotalAmount();
+ estimatedReceivableBill.setTotalAmount(totalAmount.subtract(estimatedReceivable.getEstimatedAmount()));
+ estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill);
+ pendingSettlementBusiness.setEstimatedTotalIncome(pendingSettlementBusiness.getConfirmedTotalIncome().subtract(estimatedReceivable.getEstimatedAmount()));
+ pendingSettlementBusinessMapper.updatePendingSettlementBusiness(pendingSettlementBusiness);
+ estimatedReceivable.setRelatedBillStatus(0);
+ }
+ }
String username = SecurityUtils.getUsername();
logService.insertEstimatedReceivableLog("浣滃簾搴旀敹",id,username);
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
new file mode 100644
index 0000000..e95a2d8
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/KeyCollectionInfoServiceImpl.java
@@ -0,0 +1,217 @@
+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;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.common.core.service.BaseService;
+
+import com.ruoyi.cwgl.mapper.KeyCollectionInfoMapper;
+import com.ruoyi.cwgl.domain.KeyCollectionInfo;
+import com.ruoyi.cwgl.service.IKeyCollectionInfoService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 閽ュ寵棰嗗彇淇℃伅Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2025-08-27
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class KeyCollectionInfoServiceImpl extends BaseService<KeyCollectionInfoMapper, KeyCollectionInfo> implements IKeyCollectionInfoService
+{
+ protected final Logger logger = LoggerFactory.getLogger(getClass());
+ @Resource
+ private KeyCollectionInfoMapper keyCollectionInfoMapper;
+
+
+
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param id 閽ュ寵棰嗗彇淇℃伅ID
+ * @return 閽ュ寵棰嗗彇淇℃伅
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public KeyCollectionInfo selectKeyCollectionInfoById(Integer id)
+ {
+ return keyCollectionInfoMapper.selectKeyCollectionInfoById(id);
+ }
+
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅 璁板綍鏁�
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 閽ュ寵棰嗗彇淇℃伅闆嗗悎
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public int selectKeyCollectionInfoCount(KeyCollectionInfo keyCollectionInfo)
+ {
+ return keyCollectionInfoMapper.selectKeyCollectionInfoCount(keyCollectionInfo);
+ }
+
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅鍒楄〃
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 閽ュ寵棰嗗彇淇℃伅
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public List<KeyCollectionInfo> selectKeyCollectionInfoList(KeyCollectionInfo keyCollectionInfo)
+ {
+ return keyCollectionInfoMapper.selectKeyCollectionInfoList(keyCollectionInfo);
+ }
+
+ /**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅鍒楄〃 寮傛 瀵煎嚭
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 閽ュ寵棰嗗彇淇℃伅闆嗗悎
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Async
+ @Override
+ public void export(KeyCollectionInfo keyCollectionInfo,String exportKey) {
+
+ super.export(KeyCollectionInfo.class,exportKey,"keyCollectionInfoData",(pageNum)->{
+ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
+ return selectKeyCollectionInfoList(keyCollectionInfo);
+ });
+ }
+
+
+ /**
+ * 鏂板閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertKeyCollectionInfo(KeyCollectionInfo keyCollectionInfo)
+ {
+ return keyCollectionInfoMapper.insertKeyCollectionInfo(keyCollectionInfo);
+ }
+
+ /**
+ * 鏂板閽ュ寵棰嗗彇淇℃伅[鎵归噺]
+ *
+ * @param keyCollectionInfos 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertKeyCollectionInfoBatch(List<KeyCollectionInfo> keyCollectionInfos)
+ {
+ int rows = keyCollectionInfoMapper.insertKeyCollectionInfoBatch(keyCollectionInfos);
+ return rows;
+ }
+
+ /**
+ * 淇敼閽ュ寵棰嗗彇淇℃伅
+ *
+ * @param keyCollectionInfo 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateKeyCollectionInfo(KeyCollectionInfo keyCollectionInfo)
+ {
+ return keyCollectionInfoMapper.updateKeyCollectionInfo(keyCollectionInfo);
+ }
+
+ /**
+ * 淇敼閽ュ寵棰嗗彇淇℃伅[鎵归噺]
+ *
+ * @param keyCollectionInfos 閽ュ寵棰嗗彇淇℃伅
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateKeyCollectionInfoBatch(List<KeyCollectionInfo> keyCollectionInfos){
+ return keyCollectionInfoMapper.updateKeyCollectionInfoBatch(keyCollectionInfos);
+ }
+
+ /**
+ * 鍒犻櫎閽ュ寵棰嗗彇淇℃伅瀵硅薄
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteKeyCollectionInfoByIds(String ids)
+ {
+ return deleteKeyCollectionInfoByIds(Convert.toIntArray(ids));
+ }
+
+ /**
+ * 鍒犻櫎閽ュ寵棰嗗彇淇℃伅瀵硅薄
+ *
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteKeyCollectionInfoByIds(Integer[] ids)
+ {
+ return keyCollectionInfoMapper.deleteKeyCollectionInfoByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎閽ュ寵棰嗗彇淇℃伅淇℃伅
+ *
+ * @param id 閽ュ寵棰嗗彇淇℃伅ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteKeyCollectionInfoById(Integer id)
+ {
+ 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/java/com/ruoyi/cwgl/service/impl/RequestLogServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/RequestLogServiceImpl.java
new file mode 100644
index 0000000..0f53480
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/RequestLogServiceImpl.java
@@ -0,0 +1,181 @@
+package com.ruoyi.cwgl.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import javax.annotation.Resource;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.stereotype.Service;
+import org.springframework.scheduling.annotation.Async;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.common.core.service.BaseService;
+
+import com.ruoyi.cwgl.mapper.RequestLogMapper;
+import com.ruoyi.cwgl.domain.RequestLog;
+import com.ruoyi.cwgl.service.IRequestLogService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 璇锋眰鏃ュ織Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2025-08-27
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RequestLogServiceImpl extends BaseService<RequestLogMapper, RequestLog> implements IRequestLogService
+{
+ protected final Logger logger = LoggerFactory.getLogger(getClass());
+ @Resource
+ private RequestLogMapper requestLogMapper;
+
+
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織
+ *
+ * @param id 璇锋眰鏃ュ織ID
+ * @return 璇锋眰鏃ュ織
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public RequestLog selectRequestLogById(Integer id)
+ {
+ return requestLogMapper.selectRequestLogById(id);
+ }
+
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織 璁板綍鏁�
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 璇锋眰鏃ュ織闆嗗悎
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public int selectRequestLogCount(RequestLog requestLog)
+ {
+ return requestLogMapper.selectRequestLogCount(requestLog);
+ }
+
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織鍒楄〃
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 璇锋眰鏃ュ織
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public List<RequestLog> selectRequestLogList(RequestLog requestLog)
+ {
+ return requestLogMapper.selectRequestLogList(requestLog);
+ }
+
+ /**
+ * 鏌ヨ璇锋眰鏃ュ織鍒楄〃 寮傛 瀵煎嚭
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 璇锋眰鏃ュ織闆嗗悎
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Async
+ @Override
+ public void export(RequestLog requestLog,String exportKey) {
+
+ super.export(RequestLog.class,exportKey,"requestLogData",(pageNum)->{
+ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
+ return selectRequestLogList(requestLog);
+ });
+ }
+
+
+ /**
+ * 鏂板璇锋眰鏃ュ織
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertRequestLog(RequestLog requestLog)
+ {
+ requestLog.setCreateTime(DateUtils.getNowDate());
+ return requestLogMapper.insertRequestLog(requestLog);
+ }
+
+ /**
+ * 鏂板璇锋眰鏃ュ織[鎵归噺]
+ *
+ * @param requestLogs 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertRequestLogBatch(List<RequestLog> requestLogs)
+ {
+ int rows = requestLogMapper.insertRequestLogBatch(requestLogs);
+ return rows;
+ }
+
+ /**
+ * 淇敼璇锋眰鏃ュ織
+ *
+ * @param requestLog 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateRequestLog(RequestLog requestLog)
+ {
+ return requestLogMapper.updateRequestLog(requestLog);
+ }
+
+ /**
+ * 淇敼璇锋眰鏃ュ織[鎵归噺]
+ *
+ * @param requestLogs 璇锋眰鏃ュ織
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateRequestLogBatch(List<RequestLog> requestLogs){
+ return requestLogMapper.updateRequestLogBatch(requestLogs);
+ }
+
+ /**
+ * 鍒犻櫎璇锋眰鏃ュ織瀵硅薄
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteRequestLogByIds(String ids)
+ {
+ return deleteRequestLogByIds(Convert.toIntArray(ids));
+ }
+
+ /**
+ * 鍒犻櫎璇锋眰鏃ュ織瀵硅薄
+ *
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteRequestLogByIds(Integer[] ids)
+ {
+ return requestLogMapper.deleteRequestLogByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎璇锋眰鏃ュ織淇℃伅
+ *
+ * @param id 璇锋眰鏃ュ織ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteRequestLogById(Integer id)
+ {
+ return requestLogMapper.deleteRequestLogById(id);
+ }
+}
diff --git a/service/src/main/resources/mapper/cwgl/KeyCollectionInfoMapper.xml b/service/src/main/resources/mapper/cwgl/KeyCollectionInfoMapper.xml
new file mode 100644
index 0000000..85a9bd2
--- /dev/null
+++ b/service/src/main/resources/mapper/cwgl/KeyCollectionInfoMapper.xml
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.cwgl.mapper.KeyCollectionInfoMapper">
+
+ <resultMap type="com.ruoyi.cwgl.domain.KeyCollectionInfo" id="KeyCollectionInfoResult">
+ <result property="id" column="id" />
+ <result property="customerName" column="customer_name" />
+ <result property="carrier" column="carrier" />
+ <result property="dispatchNo" column="dispatch_no" />
+ <result property="driverName" column="driver_name" />
+ <result property="driverMobile" column="driver_mobile" />
+ <result property="licensePlateNumber" column="license_plate_number" />
+ <result property="orderTime" column="order_time" />
+ <result property="orderCreatedTime" column="order_created_time" />
+ <result property="dispatchCreatedTime" column="dispatch_created_time" />
+ <result property="keyCollectionTime" column="key_collection_time" />
+ <result property="estimatedDepartureTime" column="estimated_departure_time" />
+ <result property="requiredArrivalTime" column="required_arrival_time" />
+ <result property="consignorAddress" column="consignor_address" />
+ <result property="consigneeAddress" column="consignee_address" />
+ <result property="mainDriver" column="main_driver" />
+ <result property="pointNum" column="point_num" />
+ <result property="transportMode" column="transport_mode" />
+ <result property="assistantDriver" column="assistant_driver" />
+ <result property="quantity" column="quantity" />
+ <result property="dispatchQuantity" column="dispatch_quantity" />
+ <result property="remark" column="remark" />
+ </resultMap>
+
+ <sql id="selectKeyCollectionInfoVo">
+ select thisTab.id, thisTab.customer_name, thisTab.carrier, thisTab.dispatch_no, thisTab.driver_name, thisTab.driver_mobile, thisTab.license_plate_number, thisTab.order_time, thisTab.order_created_time, thisTab.dispatch_created_time, thisTab.key_collection_time, thisTab.estimated_departure_time, thisTab.required_arrival_time, thisTab.consignor_address, thisTab.consignee_address, thisTab.main_driver, thisTab.point_num, thisTab.transport_mode, thisTab.assistant_driver, thisTab.quantity, thisTab.dispatch_quantity, thisTab.remark from key_collection_info AS thisTab
+ </sql>
+ <sql id="selectKeyCollectionInfoVoCount">
+ select count(0) from key_collection_info as thisTab
+ </sql>
+
+ <sql id="whereCondition">
+ <if test="customerName != null and customerName != ''"> and thisTab.customer_name like concat('%', #{customerName}, '%')</if>
+ <if test="carrier != null and carrier != ''"> and thisTab.carrier = #{carrier}</if>
+ <if test="dispatchNo != null and dispatchNo != ''"> and thisTab.dispatch_no = #{dispatchNo}</if>
+ <if test="driverName != null and driverName != ''"> and thisTab.driver_name like concat('%', #{driverName}, '%')</if>
+ <if test="driverMobile != null and driverMobile != ''"> and thisTab.driver_mobile = #{driverMobile}</if>
+ <if test="licensePlateNumber != null and licensePlateNumber != ''"> and thisTab.license_plate_number = #{licensePlateNumber}</if>
+ <if test="orderTime != null "> and thisTab.order_time = #{orderTime}</if>
+ <if test="orderCreatedTime != null "> and thisTab.order_created_time = #{orderCreatedTime}</if>
+ <if test="dispatchCreatedTime != null "> and thisTab.dispatch_created_time = #{dispatchCreatedTime}</if>
+ <if test="keyCollectionTime != null "> and thisTab.key_collection_time = #{keyCollectionTime}</if>
+ <if test="estimatedDepartureTime != null "> and thisTab.estimated_departure_time = #{estimatedDepartureTime}</if>
+ <if test="requiredArrivalTime != null "> and thisTab.required_arrival_time = #{requiredArrivalTime}</if>
+ <if test="consignorAddress != null and consignorAddress != ''"> and thisTab.consignor_address = #{consignorAddress}</if>
+ <if test="consigneeAddress != null and consigneeAddress != ''"> and thisTab.consignee_address = #{consigneeAddress}</if>
+ <if test="mainDriver != null and mainDriver != ''"> and thisTab.main_driver = #{mainDriver}</if>
+ <if test="pointNum != null "> and thisTab.point_num = #{pointNum}</if>
+ <if test="transportMode != null and transportMode != ''"> and thisTab.transport_mode = #{transportMode}</if>
+ <if test="assistantDriver != null and assistantDriver != ''"> and thisTab.assistant_driver = #{assistantDriver}</if>
+ <if test="quantity != null "> and thisTab.quantity = #{quantity}</if>
+ <if test="dispatchQuantity != null "> and thisTab.dispatch_quantity = #{dispatchQuantity}</if>
+ </sql>
+
+ <!--鏌ヨ-->
+ <select id="selectKeyCollectionInfoById" parameterType="Integer" resultMap="KeyCollectionInfoResult">
+ <include refid="selectKeyCollectionInfoVo"/>
+ where id = #{id}
+ </select>
+
+ <select id="selectKeyCollectionInfoCount" parameterType="com.ruoyi.cwgl.domain.KeyCollectionInfo" resultType="int">
+ <include refid="selectKeyCollectionInfoVoCount"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ </select>
+
+ <select id="selectKeyCollectionInfoList" parameterType="com.ruoyi.cwgl.domain.KeyCollectionInfo" resultMap="KeyCollectionInfoResult">
+ <include refid="selectKeyCollectionInfoVo"/>
+ <where>
+ <include refid="whereCondition"/>
+ </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">
+ insert into key_collection_info
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="customerName != null">customer_name,</if>
+ <if test="carrier != null">carrier,</if>
+ <if test="dispatchNo != null">dispatch_no,</if>
+ <if test="driverName != null">driver_name,</if>
+ <if test="driverMobile != null">driver_mobile,</if>
+ <if test="licensePlateNumber != null">license_plate_number,</if>
+ <if test="orderTime != null">order_time,</if>
+ <if test="orderCreatedTime != null">order_created_time,</if>
+ <if test="dispatchCreatedTime != null">dispatch_created_time,</if>
+ <if test="keyCollectionTime != null">key_collection_time,</if>
+ <if test="estimatedDepartureTime != null">estimated_departure_time,</if>
+ <if test="requiredArrivalTime != null">required_arrival_time,</if>
+ <if test="consignorAddress != null">consignor_address,</if>
+ <if test="consigneeAddress != null">consignee_address,</if>
+ <if test="mainDriver != null">main_driver,</if>
+ <if test="pointNum != null">point_num,</if>
+ <if test="transportMode != null">transport_mode,</if>
+ <if test="assistantDriver != null">assistant_driver,</if>
+ <if test="quantity != null">quantity,</if>
+ <if test="dispatchQuantity != null">dispatch_quantity,</if>
+ <if test="remark != null">remark,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="customerName != null">#{customerName},</if>
+ <if test="carrier != null">#{carrier},</if>
+ <if test="dispatchNo != null">#{dispatchNo},</if>
+ <if test="driverName != null">#{driverName},</if>
+ <if test="driverMobile != null">#{driverMobile},</if>
+ <if test="licensePlateNumber != null">#{licensePlateNumber},</if>
+ <if test="orderTime != null">#{orderTime},</if>
+ <if test="orderCreatedTime != null">#{orderCreatedTime},</if>
+ <if test="dispatchCreatedTime != null">#{dispatchCreatedTime},</if>
+ <if test="keyCollectionTime != null">#{keyCollectionTime},</if>
+ <if test="estimatedDepartureTime != null">#{estimatedDepartureTime},</if>
+ <if test="requiredArrivalTime != null">#{requiredArrivalTime},</if>
+ <if test="consignorAddress != null">#{consignorAddress},</if>
+ <if test="consigneeAddress != null">#{consigneeAddress},</if>
+ <if test="mainDriver != null">#{mainDriver},</if>
+ <if test="pointNum != null">#{pointNum},</if>
+ <if test="transportMode != null">#{transportMode},</if>
+ <if test="assistantDriver != null">#{assistantDriver},</if>
+ <if test="quantity != null">#{quantity},</if>
+ <if test="dispatchQuantity != null">#{dispatchQuantity},</if>
+ <if test="remark != null">#{remark},</if>
+ </trim>
+ </insert>
+
+ <insert id="insertKeyCollectionInfoBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+ insert into key_collection_info
+ <trim prefix="(" suffix=") values" suffixOverrides=",">
+ id,customer_name,carrier,dispatch_no,driver_name,driver_mobile,license_plate_number,order_time,order_created_time,dispatch_created_time,key_collection_time,estimated_departure_time,required_arrival_time,consignor_address,consignee_address,main_driver,point_num,transport_mode,assistant_driver,quantity,dispatch_quantity,remark,
+ </trim>
+ <foreach item="item" index="index" collection="list" separator=",">
+ <trim prefix="(" suffix=") " suffixOverrides=",">
+ #{item.id},#{item.customerName},#{item.carrier},#{item.dispatchNo},#{item.driverName},#{item.driverMobile},#{item.licensePlateNumber},#{item.orderTime},#{item.orderCreatedTime},#{item.dispatchCreatedTime},#{item.keyCollectionTime},#{item.estimatedDepartureTime},#{item.requiredArrivalTime},#{item.consignorAddress},#{item.consigneeAddress},#{item.mainDriver},#{item.pointNum},#{item.transportMode},#{item.assistantDriver},#{item.quantity},#{item.dispatchQuantity},#{item.remark},
+ </trim>
+ </foreach>
+ </insert>
+
+ <!-- 淇敼 -->
+ <update id="updateKeyCollectionInfo" parameterType="com.ruoyi.cwgl.domain.KeyCollectionInfo">
+ update key_collection_info
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="customerName != null">customer_name = #{customerName},</if>
+ <if test="carrier != null">carrier = #{carrier},</if>
+ <if test="dispatchNo != null">dispatch_no = #{dispatchNo},</if>
+ <if test="driverName != null">driver_name = #{driverName},</if>
+ <if test="driverMobile != null">driver_mobile = #{driverMobile},</if>
+ <if test="licensePlateNumber != null">license_plate_number = #{licensePlateNumber},</if>
+ <if test="orderTime != null">order_time = #{orderTime},</if>
+ <if test="orderCreatedTime != null">order_created_time = #{orderCreatedTime},</if>
+ <if test="dispatchCreatedTime != null">dispatch_created_time = #{dispatchCreatedTime},</if>
+ <if test="keyCollectionTime != null">key_collection_time = #{keyCollectionTime},</if>
+ <if test="estimatedDepartureTime != null">estimated_departure_time = #{estimatedDepartureTime},</if>
+ <if test="requiredArrivalTime != null">required_arrival_time = #{requiredArrivalTime},</if>
+ <if test="consignorAddress != null">consignor_address = #{consignorAddress},</if>
+ <if test="consigneeAddress != null">consignee_address = #{consigneeAddress},</if>
+ <if test="mainDriver != null">main_driver = #{mainDriver},</if>
+ <if test="pointNum != null">point_num = #{pointNum},</if>
+ <if test="transportMode != null">transport_mode = #{transportMode},</if>
+ <if test="assistantDriver != null">assistant_driver = #{assistantDriver},</if>
+ <if test="quantity != null">quantity = #{quantity},</if>
+ <if test="dispatchQuantity != null">dispatch_quantity = #{dispatchQuantity},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ </trim>
+ where id = #{id}
+ </update>
+ <!-- 淇敼 -->
+ <update id="updateKeyCollectionInfoBatch" parameterType="java.util.List">
+ <foreach collection="list" item="item" index="index" separator=";">
+ update key_collection_info
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="item.customerName != null">customer_name = #{item.customerName},</if>
+ <if test="item.carrier != null">carrier = #{item.carrier},</if>
+ <if test="item.dispatchNo != null">dispatch_no = #{item.dispatchNo},</if>
+ <if test="item.driverName != null">driver_name = #{item.driverName},</if>
+ <if test="item.driverMobile != null">driver_mobile = #{item.driverMobile},</if>
+ <if test="item.licensePlateNumber != null">license_plate_number = #{item.licensePlateNumber},</if>
+ <if test="item.orderTime != null">order_time = #{item.orderTime},</if>
+ <if test="item.orderCreatedTime != null">order_created_time = #{item.orderCreatedTime},</if>
+ <if test="item.dispatchCreatedTime != null">dispatch_created_time = #{item.dispatchCreatedTime},</if>
+ <if test="item.keyCollectionTime != null">key_collection_time = #{item.keyCollectionTime},</if>
+ <if test="item.estimatedDepartureTime != null">estimated_departure_time = #{item.estimatedDepartureTime},</if>
+ <if test="item.requiredArrivalTime != null">required_arrival_time = #{item.requiredArrivalTime},</if>
+ <if test="item.consignorAddress != null">consignor_address = #{item.consignorAddress},</if>
+ <if test="item.consigneeAddress != null">consignee_address = #{item.consigneeAddress},</if>
+ <if test="item.mainDriver != null">main_driver = #{item.mainDriver},</if>
+ <if test="item.pointNum != null">point_num = #{item.pointNum},</if>
+ <if test="item.transportMode != null">transport_mode = #{item.transportMode},</if>
+ <if test="item.assistantDriver != null">assistant_driver = #{item.assistantDriver},</if>
+ <if test="item.quantity != null">quantity = #{item.quantity},</if>
+ <if test="item.dispatchQuantity != null">dispatch_quantity = #{item.dispatchQuantity},</if>
+ <if test="item.remark != null">remark = #{item.remark},</if>
+ </trim>
+ where id = #{item.id}
+ </foreach>
+ </update>
+
+ <!--鍒犻櫎-->
+ <delete id="deleteKeyCollectionInfoById" parameterType="Integer">
+ delete from key_collection_info where id = #{id}
+ </delete>
+ <delete id="deleteKeyCollectionInfoByIds" parameterType="Integer">
+ delete from key_collection_info where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/service/src/main/resources/mapper/cwgl/PendingSettlementBusinessMapper.xml b/service/src/main/resources/mapper/cwgl/PendingSettlementBusinessMapper.xml
index 4864194..5015b18 100644
--- a/service/src/main/resources/mapper/cwgl/PendingSettlementBusinessMapper.xml
+++ b/service/src/main/resources/mapper/cwgl/PendingSettlementBusinessMapper.xml
@@ -561,11 +561,7 @@
</update>
<update id="updateEstimatedReceivableBillStatus">
UPDATE pending_settlement_business
- SET
- is_create = 1,
- bill_id = #{id},
- bill_name = #{billName},
- related_bill_status = 1,
+ SET related_bill_status = #{status}
WHERE dispatch_no IN
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
diff --git a/service/src/main/resources/mapper/cwgl/RequestLogMapper.xml b/service/src/main/resources/mapper/cwgl/RequestLogMapper.xml
new file mode 100644
index 0000000..83062d9
--- /dev/null
+++ b/service/src/main/resources/mapper/cwgl/RequestLogMapper.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.cwgl.mapper.RequestLogMapper">
+
+ <resultMap type="com.ruoyi.cwgl.domain.RequestLog" id="RequestLogResult">
+ <result property="id" column="id" />
+ <result property="driverCode" column="driver_code" />
+ <result property="driverName" column="driver_name" />
+ <result property="boxNum" column="box_num" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="reqTime" column="req_time" />
+ <result property="type" column="type" />
+ <result property="operation" column="operation" />
+ </resultMap>
+
+ <sql id="selectRequestLogVo">
+ select thisTab.id, thisTab.driver_code, thisTab.driver_name, thisTab.box_num, thisTab.create_by, thisTab.create_time, thisTab.req_time, thisTab.type, thisTab.operation from request_log AS thisTab
+ </sql>
+ <sql id="selectRequestLogVoCount">
+ select count(0) from request_log as thisTab
+ </sql>
+
+ <sql id="whereCondition">
+ <if test="driverCode != null and driverCode != ''"> and thisTab.driver_code = #{driverCode}</if>
+ <if test="driverName != null and driverName != ''"> and thisTab.driver_name like concat('%', #{driverName}, '%')</if>
+ <if test="boxNum != null and boxNum != ''"> and thisTab.box_num = #{boxNum}</if>
+ <if test="reqTime != null "> and thisTab.req_time = #{reqTime}</if>
+ <if test="type != null "> and thisTab.type = #{type}</if>
+ <if test="operation != null and operation != ''"> and thisTab.operation = #{operation}</if>
+ </sql>
+
+ <!--鏌ヨ-->
+ <select id="selectRequestLogById" parameterType="Integer" resultMap="RequestLogResult">
+ <include refid="selectRequestLogVo"/>
+ where id = #{id}
+ </select>
+
+ <select id="selectRequestLogCount" parameterType="com.ruoyi.cwgl.domain.RequestLog" resultType="int">
+ <include refid="selectRequestLogVoCount"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ </select>
+
+ <select id="selectRequestLogList" parameterType="com.ruoyi.cwgl.domain.RequestLog" resultMap="RequestLogResult">
+ <include refid="selectRequestLogVo"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ order by thisTab.id desc
+ </select>
+
+ <!-- 鏂板 -->
+ <insert id="insertRequestLog" parameterType="com.ruoyi.cwgl.domain.RequestLog" useGeneratedKeys="true" keyProperty="id">
+ insert into request_log
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="driverCode != null">driver_code,</if>
+ <if test="driverName != null">driver_name,</if>
+ <if test="boxNum != null">box_num,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="reqTime != null">req_time,</if>
+ <if test="type != null">type,</if>
+ <if test="operation != null">operation,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="driverCode != null">#{driverCode},</if>
+ <if test="driverName != null">#{driverName},</if>
+ <if test="boxNum != null">#{boxNum},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="reqTime != null">#{reqTime},</if>
+ <if test="type != null">#{type},</if>
+ <if test="operation != null">#{operation},</if>
+ </trim>
+ </insert>
+
+ <insert id="insertRequestLogBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+ insert into request_log
+ <trim prefix="(" suffix=") values" suffixOverrides=",">
+ id,driver_code,driver_name,box_num,create_by,create_time,req_time,type,operation,
+ </trim>
+ <foreach item="item" index="index" collection="list" separator=",">
+ <trim prefix="(" suffix=") " suffixOverrides=",">
+ #{item.id},#{item.driverCode},#{item.driverName},#{item.boxNum},#{item.createBy},#{item.createTime},#{item.reqTime},#{item.type},#{item.operation},
+ </trim>
+ </foreach>
+ </insert>
+
+ <!-- 淇敼 -->
+ <update id="updateRequestLog" parameterType="com.ruoyi.cwgl.domain.RequestLog">
+ update request_log
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="driverCode != null">driver_code = #{driverCode},</if>
+ <if test="driverName != null">driver_name = #{driverName},</if>
+ <if test="boxNum != null">box_num = #{boxNum},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="reqTime != null">req_time = #{reqTime},</if>
+ <if test="type != null">type = #{type},</if>
+ <if test="operation != null">operation = #{operation},</if>
+ </trim>
+ where id = #{id}
+ </update>
+ <!-- 淇敼 -->
+ <update id="updateRequestLogBatch" parameterType="java.util.List">
+ <foreach collection="list" item="item" index="index" separator=";">
+ update request_log
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="item.driverCode != null">driver_code = #{item.driverCode},</if>
+ <if test="item.driverName != null">driver_name = #{item.driverName},</if>
+ <if test="item.boxNum != null">box_num = #{item.boxNum},</if>
+ <if test="item.createBy != null">create_by = #{item.createBy},</if>
+ <if test="item.createTime != null">create_time = #{item.createTime},</if>
+ <if test="item.reqTime != null">req_time = #{item.reqTime},</if>
+ <if test="item.type != null">type = #{item.type},</if>
+ <if test="item.operation != null">operation = #{item.operation},</if>
+ </trim>
+ where id = #{item.id}
+ </foreach>
+ </update>
+
+ <!--鍒犻櫎-->
+ <delete id="deleteRequestLogById" parameterType="Integer">
+ delete from request_log where id = #{id}
+ </delete>
+ <delete id="deleteRequestLogByIds" parameterType="Integer">
+ delete from request_log where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ui/admin-ui3/src/api/cwgl/keyCollectionInfo.ts b/ui/admin-ui3/src/api/cwgl/keyCollectionInfo.ts
new file mode 100644
index 0000000..7e61e6e
--- /dev/null
+++ b/ui/admin-ui3/src/api/cwgl/keyCollectionInfo.ts
@@ -0,0 +1,67 @@
+import request,{download,requestType} from "@/utils/request";
+import {BaseEntityInterface} from "@/utils/globalInterface";
+export interface KeyCollectionInfoI extends BaseEntityInterface{
+ id ?: number , customerName ?: string , carrier ?: string , dispatchNo ?: string , driverName ?: string , driverMobile ?: string , licensePlateNumber ?: string , orderTime ?: string , orderCreatedTime ?: string , dispatchCreatedTime ?: string , keyCollectionTime ?: string , estimatedDepartureTime ?: string , requiredArrivalTime ?: string , consignorAddress ?: string , consigneeAddress ?: string , mainDriver ?: string , pointNum ?: number , transportMode ?: string , assistantDriver ?: string , quantity ?: number , dispatchQuantity ?: number , remark ?: string }
+
+
+/**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅鍒楄〃
+ */
+export const listKeyCollectionInfo:requestType = (query) => {
+ return request({
+ url: '/cwgl/keyCollectionInfo/list',
+ method:'get',
+ params:query
+ })
+}
+/**
+ * 鏌ヨ閽ュ寵棰嗗彇淇℃伅璇︾粏
+ */
+export const getKeyCollectionInfo:requestType = (id) => {
+ return request({
+ url: '/cwgl/keyCollectionInfo/' + id,
+ method:'get'
+ })
+}
+
+/**
+ * 鏂板閽ュ寵棰嗗彇淇℃伅
+ */
+export const addKeyCollectionInfo:requestType = (data) => {
+ return request({
+ url: '/cwgl/keyCollectionInfo',
+ method: 'post',
+ data
+ })
+}
+
+/**
+ * 淇敼閽ュ寵棰嗗彇淇℃伅
+ */
+export const updateKeyCollectionInfo:requestType = (data) => {
+ return request({
+ url: '/cwgl/keyCollectionInfo',
+ method: 'put',
+ data
+ })
+}
+
+/**
+ * 鍒犻櫎閽ュ寵棰嗗彇淇℃伅
+ */
+export const delKeyCollectionInfo:requestType = (id) => {
+ return request({
+ url: '/cwgl/keyCollectionInfo/' + id,
+ method: 'delete'
+ })
+}
+
+
+/**
+ * 瀵煎嚭閽ュ寵棰嗗彇淇℃伅
+ */
+export const exportKeyCollectionInfo:requestType = (query) => {
+ return new Promise<any>(()=>{
+ download('/cwgl/keyCollectionInfo/export',query);
+ })
+}
diff --git a/ui/admin-ui3/src/api/cwgl/requestLog.ts b/ui/admin-ui3/src/api/cwgl/requestLog.ts
new file mode 100644
index 0000000..5dcbbcd
--- /dev/null
+++ b/ui/admin-ui3/src/api/cwgl/requestLog.ts
@@ -0,0 +1,67 @@
+import request,{download,requestType} from "@/utils/request";
+import {BaseEntityInterface} from "@/utils/globalInterface";
+export interface RequestLogI extends BaseEntityInterface{
+ id ?: number , driverCode ?: string , driverName ?: string , boxNum ?: string , createBy ?: string , createTime ?: string , reqTime ?: string , type ?: number , operation ?: string }
+
+
+/**
+ * 鏌ヨ璇锋眰鏃ュ織鍒楄〃
+ */
+export const listRequestLog:requestType = (query) => {
+ return request({
+ url: '/cwgl/requestLog/list',
+ method:'get',
+ params:query
+ })
+}
+/**
+ * 鏌ヨ璇锋眰鏃ュ織璇︾粏
+ */
+export const getRequestLog:requestType = (id) => {
+ return request({
+ url: '/cwgl/requestLog/' + id,
+ method:'get'
+ })
+}
+
+/**
+ * 鏂板璇锋眰鏃ュ織
+ */
+export const addRequestLog:requestType = (data) => {
+ return request({
+ url: '/cwgl/requestLog',
+ method: 'post',
+ data
+ })
+}
+
+/**
+ * 淇敼璇锋眰鏃ュ織
+ */
+export const updateRequestLog:requestType = (data) => {
+ return request({
+ url: '/cwgl/requestLog',
+ method: 'put',
+ data
+ })
+}
+
+/**
+ * 鍒犻櫎璇锋眰鏃ュ織
+ */
+export const delRequestLog:requestType = (id) => {
+ return request({
+ url: '/cwgl/requestLog/' + id,
+ method: 'delete'
+ })
+}
+
+
+/**
+ * 瀵煎嚭璇锋眰鏃ュ織
+ */
+export const exportRequestLog:requestType = (query) => {
+ return new Promise<any>(()=>{
+ download('/cwgl/requestLog/export',query);
+ })
+}
diff --git a/ui/admin-ui3/src/views/cwgl/keyCollectionInfo/index.vue b/ui/admin-ui3/src/views/cwgl/keyCollectionInfo/index.vue
new file mode 100644
index 0000000..aca7e9f
--- /dev/null
+++ b/ui/admin-ui3/src/views/cwgl/keyCollectionInfo/index.vue
@@ -0,0 +1,181 @@
+<template>
+ <basicContainer >
+ <avue-crud
+ :option="option"
+ :table-loading="pageF.loading"
+ :data="tableData"
+ :page="page"
+ :permission="permissionList"
+ :before-open="beforeOpen"
+ v-model="form"
+ ref="crudRef"
+ @row-update="rowUpdate"
+ @row-save="rowSave"
+ @refresh-change="refreshChange"
+ @row-del="rowDel"
+ @search-change="searchChange"
+ @search-reset="searchReset"
+ @selection-change="selectionChange"
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ @on-load="onLoad"
+ >
+ <template #menu-left>
+ <el-button
+ type="success"
+ icon="Edit"
+ :disabled="pageF.single"
+ v-hasPermi="['cwgl:keyCollectionInfo:edit']"
+ @click="handleUpdate">淇敼
+ </el-button>
+ <el-button
+ type="danger"
+ icon="Delete"
+ :disabled="pageF.multiple"
+ @click="handleDelete"
+ v-hasPermi="['cwgl:keyCollectionInfo:remove']"
+ >鍒犻櫎
+ </el-button>
+ <el-button
+ type="warning"
+ plain
+ icon="Download"
+ @click="handleExport"
+ v-hasPermi="['cwgl:keyCollectionInfo:export']"
+ >瀵煎嚭
+ </el-button>
+ </template>
+ </avue-crud>
+ </basicContainer>
+</template>
+
+<script setup name="keyCollectionInfo" lang="ts">
+ import {KeyCollectionInfoI,addKeyCollectionInfo, delKeyCollectionInfo, exportKeyCollectionInfo, getKeyCollectionInfo, listKeyCollectionInfo, updateKeyCollectionInfo} from "@/api/cwgl/keyCollectionInfo";
+ import useCurrentInstance from "@/utils/useCurrentInstance";
+ import {computed,reactive, ref, toRefs} from "vue";
+ import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
+ import {usePagePlus} from "@/hooks/usePagePlus";
+ import {hasPermission} from "@/utils/permissionUtils";
+
+ const { proxy } = useCurrentInstance();
+ const crudRef = ref();
+
+ const permissionList = computed(()=>{
+ return {
+ addBtn: hasPermission(["cwgl:keyCollectionInfo:add"]),
+ delBtn: hasPermission(["cwgl:keyCollectionInfo:remove"]),
+ editBtn: hasPermission(["cwgl:keyCollectionInfo:edit"]),
+ viewBtn: hasPermission(["cwgl:keyCollectionInfo:query"]),
+ }
+ })
+
+ const data = reactive({
+ form:<KeyCollectionInfoI>{},
+ queryParams:<KeyCollectionInfoI&PageQueryInterface>{},
+ page: <PagesInterface>{
+ pageSize: 10,
+ total: 0,
+ currentPage: 1,
+ },
+ selectionList:[],
+ })
+ const {queryParams,form,page,selectionList} = toRefs(data);
+ const option = ref({
+ pageKey: 'KeyCollectionInfo',
+ rowKey: 'id',
+ column: {
+ id: {
+ label: 'ID',
+ },
+ customerName: {
+ label: '瀹㈡埛鍚嶇О',
+ },
+ carrier: {
+ label: '鎵胯繍鍟�',
+ },
+ dispatchNo: {
+ label: '璋冨害鍗曞彿',
+ },
+ driverName: {
+ label: '鍙告満鍚嶇О',
+ },
+ driverMobile: {
+ label: '鍙告満鎵嬫満鍙�',
+ },
+ licensePlateNumber: {
+ label: '杞︾墝鍙�',
+ },
+ orderTime: {
+ label: '璁㈠崟涓嬪崟鏃堕棿',
+ },
+ orderCreatedTime: {
+ label: '璁㈠崟鍒涘缓鏃堕棿',
+ },
+ dispatchCreatedTime: {
+ label: '璋冨害鍗曞垱寤烘椂闂�',
+ },
+ keyCollectionTime: {
+ label: '閽ュ寵棰嗗彇鏃堕棿',
+ },
+ estimatedDepartureTime: {
+ label: '棰勮鍑哄彂鏃堕棿',
+ },
+ requiredArrivalTime: {
+ label: '瑕佹眰鍒拌揪鏃堕棿',
+ },
+ consignorAddress: {
+ label: '鍑哄彂鍦板湴鍧�',
+ type: 'textarea', minRows: 3, maxRows: 5,
+ },
+ consigneeAddress: {
+ label: '鐩殑鍦板湴鍧�',
+ type: 'textarea', minRows: 3, maxRows: 5,
+ },
+ mainDriver: {
+ label: '涓婚┚椹跺憳',
+ },
+ pointNum: {
+ label: '鎻愰�佽揣鐐规暟',
+ },
+ transportMode: {
+ label: '杩愯緭鏂瑰紡',
+ },
+ assistantDriver: {
+ label: '鍓┚椹跺憳',
+ },
+ quantity: {
+ label: '浠舵暟',
+ },
+ dispatchQuantity: {
+ label: '瀹炲彂浠舵暟',
+ },
+ remark: {
+ label: '澶囨敞',
+ type: 'textarea', minRows: 3, maxRows: 5,
+ },
+ }
+ })
+
+ const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
+ searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
+ form:form,
+ option:option,
+ queryParams:queryParams,
+ idKey:'id',
+ page:page.value,
+ getListApi:listKeyCollectionInfo,
+ getDetailApi:getKeyCollectionInfo,
+ exportApi:exportKeyCollectionInfo,
+ deleteApi:delKeyCollectionInfo,
+ addApi:addKeyCollectionInfo,
+ updateApi:updateKeyCollectionInfo,
+ handleUpdateFunc:()=>{
+ crudRef.value.rowEdit(selectionList.value[0]);
+ },
+ handleSelectionChangeFunc:(selection:any)=>{
+ selectionList.value = selection;
+ }
+ })
+
+
+</script>
diff --git a/ui/admin-ui3/src/views/cwgl/requestLog/index.vue b/ui/admin-ui3/src/views/cwgl/requestLog/index.vue
new file mode 100644
index 0000000..26942fe
--- /dev/null
+++ b/ui/admin-ui3/src/views/cwgl/requestLog/index.vue
@@ -0,0 +1,139 @@
+<template>
+ <basicContainer >
+ <avue-crud
+ :option="option"
+ :table-loading="pageF.loading"
+ :data="tableData"
+ :page="page"
+ :permission="permissionList"
+ :before-open="beforeOpen"
+ v-model="form"
+ ref="crudRef"
+ @row-update="rowUpdate"
+ @row-save="rowSave"
+ @refresh-change="refreshChange"
+ @row-del="rowDel"
+ @search-change="searchChange"
+ @search-reset="searchReset"
+ @selection-change="selectionChange"
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ @on-load="onLoad"
+ >
+ <template #menu-left>
+ <el-button
+ type="success"
+ icon="Edit"
+ :disabled="pageF.single"
+ v-hasPermi="['cwgl:requestLog:edit']"
+ @click="handleUpdate">淇敼
+ </el-button>
+ <el-button
+ type="danger"
+ icon="Delete"
+ :disabled="pageF.multiple"
+ @click="handleDelete"
+ v-hasPermi="['cwgl:requestLog:remove']"
+ >鍒犻櫎
+ </el-button>
+ <el-button
+ type="warning"
+ plain
+ icon="Download"
+ @click="handleExport"
+ v-hasPermi="['cwgl:requestLog:export']"
+ >瀵煎嚭
+ </el-button>
+ </template>
+ </avue-crud>
+ </basicContainer>
+</template>
+
+<script setup name="requestLog" lang="ts">
+ import {RequestLogI,addRequestLog, delRequestLog, exportRequestLog, getRequestLog, listRequestLog, updateRequestLog} from "@/api/cwgl/requestLog";
+ import useCurrentInstance from "@/utils/useCurrentInstance";
+ import {computed,reactive, ref, toRefs} from "vue";
+ import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
+ import {usePagePlus} from "@/hooks/usePagePlus";
+ import {hasPermission} from "@/utils/permissionUtils";
+
+ const { proxy } = useCurrentInstance();
+ const crudRef = ref();
+
+ const permissionList = computed(()=>{
+ return {
+ addBtn: hasPermission(["cwgl:requestLog:add"]),
+ delBtn: hasPermission(["cwgl:requestLog:remove"]),
+ editBtn: hasPermission(["cwgl:requestLog:edit"]),
+ viewBtn: hasPermission(["cwgl:requestLog:query"]),
+ }
+ })
+
+ const data = reactive({
+ form:<RequestLogI>{},
+ queryParams:<RequestLogI&PageQueryInterface>{},
+ page: <PagesInterface>{
+ pageSize: 10,
+ total: 0,
+ currentPage: 1,
+ },
+ selectionList:[],
+ })
+ const {queryParams,form,page,selectionList} = toRefs(data);
+ const option = ref({
+ pageKey: 'RequestLog',
+ rowKey: 'id',
+ column: {
+ id: {
+ label: '涓婚敭',
+ },
+ driverCode: {
+ label: '鍙告満鍞竴缂栧彿',
+ },
+ driverName: {
+ label: '鍙告満濮撳悕',
+ },
+ boxNum: {
+ label: '鏌滈棬缂栧彿',
+ },
+ createBy: {
+ label: '鍒涘缓鑰�',
+ },
+ createTime: {
+ label: '鍒涘缓鏃堕棿',
+ },
+ reqTime: {
+ label: '璇锋眰鏃堕棿',
+ },
+ type: {
+ label: '0涓婃姤鍙栧嚭1褰掕繕涓婃姤',
+ },
+ operation: {
+ label: '鎿嶄綔璇存槑',
+ },
+ }
+ })
+
+ const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
+ searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
+ form:form,
+ option:option,
+ queryParams:queryParams,
+ idKey:'id',
+ page:page.value,
+ getListApi:listRequestLog,
+ getDetailApi:getRequestLog,
+ exportApi:exportRequestLog,
+ deleteApi:delRequestLog,
+ addApi:addRequestLog,
+ updateApi:updateRequestLog,
+ handleUpdateFunc:()=>{
+ crudRef.value.rowEdit(selectionList.value[0]);
+ },
+ handleSelectionChangeFunc:(selection:any)=>{
+ selectionList.value = selection;
+ }
+ })
+
+
+</script>
--
Gitblit v1.8.0