From 7ed2a032d0724e68aec8af940f2ce0023a9f0eb7 Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期三, 15 四月 2026 09:27:51 +0800
Subject: [PATCH] 修改调度单年月日
---
api/src/main/java/com/ruoyi/api/third/controller/TmsAiDispatchController.java | 227 ++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 163 insertions(+), 64 deletions(-)
diff --git a/api/src/main/java/com/ruoyi/api/third/controller/TmsAiDispatchController.java b/api/src/main/java/com/ruoyi/api/third/controller/TmsAiDispatchController.java
index f7ca95c..be48999 100644
--- a/api/src/main/java/com/ruoyi/api/third/controller/TmsAiDispatchController.java
+++ b/api/src/main/java/com/ruoyi/api/third/controller/TmsAiDispatchController.java
@@ -90,7 +90,9 @@
public AjaxResult getVehicleData(
@RequestParam(value = "licensePlate", required = false) String licensePlate,
@RequestParam(value = "licenseHk", required = false) String licenseHk,
- @RequestParam(value = "licenseMo", required = false) String licenseMo
+ @RequestParam(value = "licenseMo", required = false) String licenseMo,
+ @RequestParam(value = "serviceProviderId", required = false) Integer serviceProviderId
+
){
logger.info("getVehicleData:{},{},{}",licensePlate,licenseHk,licenseMo);
@@ -98,6 +100,7 @@
.like(StringUtils.isNotEmpty(licensePlate),TmsVehicle::getLicensePlate, licensePlate)
.like(StringUtils.isNotEmpty(licenseHk),TmsVehicle::getLicenseHk, licenseHk)
.like(StringUtils.isNotEmpty(licenseMo),TmsVehicle::getLicenseMo, licenseMo)
+ .like(serviceProviderId != null,TmsVehicle::getServiceProviderId, serviceProviderId)
.last("limit 1")
);
if (tmsCustomerInfo == null){
@@ -118,12 +121,15 @@
*/
@GetMapping("/getDriverData")
public AjaxResult getDriverData(
- @RequestParam(value = "driverName", required = true) String driverName)
+ @RequestParam(value = "driverName", required = true) String driverName,
+ @RequestParam(value = "vehicleProviderId", required = false) Integer vehicleProviderId
+ )
{
logger.info("getVehicleData:{}",driverName);
TmsDriver tmsDriver = tmsDriverMapper.selectOne(new LambdaQueryWrapper<TmsDriver>()
.like(TmsDriver::getDriverName, driverName)
+ .eq(vehicleProviderId !=null,TmsDriver::getVehicleProviderId, vehicleProviderId)
.last("limit 1")
);
@@ -241,7 +247,7 @@
/**
* 鍒涘缓璋冨害鍗曟帴鍙� (AI浼樺寲鐗�, 闇�瑕乤ppId/secret璁よ瘉)
*
- * @param vo AI璋冨害鍗曡姹傚璞�
+ * @param order AI璋冨害鍗曡姹傚璞�
* @param request HTTP璇锋眰
* @return 鍒涘缓缁撴灉
*/
@@ -254,10 +260,154 @@
}
try {
- // 楠岃瘉蹇呭~瀛楁
- if (order.getMainDriverId() == null || order.getLicensePlate() == null) {
- return error("娲捐溅淇℃伅涓嶈兘涓虹┖");
+ // ========== 1. 瀹㈡埛楠岃瘉 ==========
+ if (StringUtils.isEmpty(order.getCustomerName())) {
+ return error("瀹㈡埛鍚嶇О涓嶈兘涓虹┖");
}
+ TmsCustomerInfo customer = tmsCustomerInfoMapper.selectOne(new LambdaQueryWrapper<TmsCustomerInfo>()
+ .like(TmsCustomerInfo::getCustomerFullName, order.getCustomerName())
+ .last("limit 1")
+ );
+ if (customer == null) {
+ return error("瀹㈡埛涓嶅瓨鍦紝璇风‘璁ゅ鎴峰悕绉版垨鍏堝湪绯荤粺涓淮鎶ゅ鎴蜂俊鎭�");
+ }
+ order.setCustomerId(customer.getId());
+
+ // ========== 2. 杞﹀瀷楠岃瘉 ==========
+ if (StringUtils.isEmpty(order.getRequiredVehicleTypes())) {
+ return error("杞﹀瀷涓嶈兘涓虹┖");
+ }
+ List<SysDictData> vehicleTypes = sysDictDataMapper.selectDictDataByType("vehicle_type");
+ boolean vehicleTypeValid = vehicleTypes.stream()
+ .anyMatch(dict -> dict.getDictValue().equals(order.getRequiredVehicleTypes()));
+ if (!vehicleTypeValid) {
+ return error("杞﹀瀷涓嶅瓨鍦紝璇风‘璁よ溅鍨嬫垨鍏堝湪瀛楀吀涓淮鎶よ溅鍨嬫暟鎹�");
+ }
+
+ // ========== 3. 瑁呰揣鐐归獙璇侊紙濡傛灉鎻愪緵浜嗚璐х偣鍚嶇О锛�==========
+ if (StringUtils.isNotEmpty(order.getShipperName())) {
+ TmsConsignor shipper = tmsConsignorMapper.selectOne(new LambdaQueryWrapper<TmsConsignor>()
+ .like(TmsConsignor::getConsignorName, order.getShipperName())
+ .eq(TmsConsignor::getCustomerName, order.getCustomerName())
+ .last("limit 1")
+ );
+ if (shipper == null) {
+ return error("瑁呰揣鐐逛笉瀛樺湪锛岃纭瑁呰揣鐐瑰悕绉版垨鍏堝湪绯荤粺涓淮鎶よ璐х偣淇℃伅");
+ }
+ order.setShipperId(shipper.getId());
+ }
+
+ // ========== 4. 鍗歌揣鐐归獙璇侊紙濡傛灉鎻愪緵浜嗗嵏璐х偣鍚嶇О锛�==========
+ if (StringUtils.isNotEmpty(order.getReceiverName())) {
+ TmsConsignor receiver = tmsConsignorMapper.selectOne(new LambdaQueryWrapper<TmsConsignor>()
+ .like(TmsConsignor::getConsignorName, order.getReceiverName())
+ .eq(TmsConsignor::getCustomerName, order.getCustomerName())
+ .last("limit 1")
+ );
+ if (receiver == null) {
+ return error("鍗歌揣鐐逛笉瀛樺湪锛岃纭鍗歌揣鐐瑰悕绉版垨鍏堝湪绯荤粺涓淮鎶ゅ嵏璐х偣淇℃伅");
+ }
+ order.setReceiverId(receiver.getId());
+ }
+
+ // ========== 5. 璺嚎楠岃瘉锛圓I蹇呴』浼爍uoteDetailId锛�==========
+ if (order.getQuoteDetailId() == null) {
+ return error("鎶ヤ环鏄庣粏ID涓嶈兘涓虹┖锛岃鍏堣皟鐢╲alidateRoute鎺ュ彛鑾峰彇鍙敤璺嚎骞堕�夋嫨涓�鏉�");
+ }
+
+ // 鏍规嵁quoteDetailId鏌ヨ璺嚎淇℃伅
+ TransportRouteVi route = transportRouteViMapper.selectById(order.getQuoteDetailId());
+ if (route == null) {
+ return error("鎶ヤ环鏄庣粏涓嶅瓨鍦紝璇风‘璁ゆ姤浠锋槑缁咺D鏄惁姝g‘");
+ }
+
+ // 楠岃瘉璺嚎鏄惁鍖归厤瀹㈡埛
+ if (!route.getCustomerFullName().equals(order.getCustomerName())) {
+ return error("鎶ヤ环鏄庣粏涓庡鎴蜂笉鍖归厤锛岃纭閫夋嫨鐨勮矾绾挎槸鍚﹀睘浜庤瀹㈡埛");
+ }
+
+ // 楠岃瘉璺嚎鏄惁鍖归厤杞﹀瀷
+ Integer vehicleTypeInt = null;
+ try {
+ vehicleTypeInt = Integer.parseInt(order.getRequiredVehicleTypes());
+ } catch (NumberFormatException e) {
+ return error("杞﹀瀷鏍煎紡閿欒");
+ }
+ if (!route.getVehicleType().equals(vehicleTypeInt)) {
+ return error("鎶ヤ环鏄庣粏涓庤溅鍨嬩笉鍖归厤锛岃纭閫夋嫨鐨勮矾绾胯溅鍨嬫槸鍚︽纭�");
+ }
+
+ // 浣跨敤璺嚎淇℃伅濉厖璁㈠崟
+ order.setTransportLine(route.getTransportRoute());
+ order.setStartRegionCode(route.getStartRegionCode());
+ order.setEndRegionCode(route.getEndRegionCode());
+ order.setProjectId(route.getProjectId());
+ order.setProjectName(route.getProjectName());
+ order.setContractId(route.getContractId());
+ order.setContractName(route.getContractName());
+
+ // ========== 6. 璁㈠崟绫诲瀷鍒ゆ柇 & 蹇呭~鏍¢獙 ==========
+ Integer orderType = order.getOrderType();
+ if (orderType == null) {
+ return error("璁㈠崟绫诲瀷涓嶈兘涓虹┖");
+ }
+
+ // 鍩虹璁㈠崟(0)锛氳璐у湴+鍗歌揣鍦板繀椤婚綈鍏�
+ if (orderType == 0) {
+ if (StringUtils.isEmpty(order.getShipperRegionLabel()) || StringUtils.isEmpty(order.getReceiverRegionLabel())) {
+ return error("鍩虹璁㈠崟鐨勮璐у湴鍜屽嵏璐у湴涓嶈兘涓虹┖");
+ }
+ }
+ // 棰勯厤璁㈠崟(1)锛氬嵏璐у湴鍙负绌猴紝浣嗚璐у湴蹇呴』鏈�
+ else if (orderType == 1) {
+ if (StringUtils.isEmpty(order.getShipperRegionLabel())) {
+ return error("棰勯厤璁㈠崟鐨勮璐у湴涓嶈兘涓虹┖");
+ }
+ }
+
+ // ========== 7. 娲捐溅淇℃伅楠岃瘉 ==========
+ // 7.1 鍙告満楠岃瘉锛堝繀濉級
+ if (order.getMainDriverId() == null) {
+ return error("鍙告満淇℃伅涓嶈兘涓虹┖");
+ }
+ TmsDriver driver = tmsDriverMapper.selectById(order.getMainDriverId());
+ if (driver == null) {
+ return error("鍙告満涓嶅瓨鍦紝璇风‘璁ゅ徃鏈轰俊鎭�");
+ }
+ order.setMainDriverName(driver.getDriverName());
+
+ // 7.2 杞﹁締楠岃瘉锛堝繀濉級
+ if (StringUtils.isEmpty(order.getLicensePlate())) {
+ return error("杞︾墝鍙蜂笉鑳戒负绌�");
+ }
+ TmsVehicle vehicle = tmsVehicleMapper.selectOne(new LambdaQueryWrapper<TmsVehicle>()
+ .eq(TmsVehicle::getLicensePlate, order.getLicensePlate())
+ .last("limit 1")
+ );
+ if (vehicle == null) {
+ return error("杞﹁締涓嶅瓨鍦紝璇风‘璁よ溅鐗屽彿");
+ }
+ order.setVehicleId(vehicle.getId());
+ order.setActualVehicleType(vehicle.getVehicleType());
+
+ // 7.3 杩愯惀妯″紡楠岃瘉
+ Integer operationMode = order.getOperationMode();
+ if (operationMode == null) {
+ return error("杩愯惀妯″紡涓嶈兘涓虹┖锛�1=鑷惀杞﹂槦锛�0=澶栧崗锛�");
+ }
+
+ // 7.4 澶栧崗妯″紡锛氬繀椤绘彁渚涜溅杈嗘湇鍔″晢
+ if (operationMode == 0) {
+ if (order.getVehicleProviderId() == null) {
+ return error("澶栧崗妯″紡涓嬶紝杞﹁締鏈嶅姟鍟嗕笉鑳戒负绌�");
+ }
+ TmsServiceProvider provider = tmsServiceProviderMapper.selectById(order.getVehicleProviderId());
+ if (provider == null) {
+ return error("杞﹁締鏈嶅姟鍟嗕笉瀛樺湪锛岃纭鏈嶅姟鍟嗕俊鎭�");
+ }
+ order.setVehicleProviderName(provider.getServiceName());
+ }
+
// 璁剧疆鍒濆鐘舵�佷负寰呭垎閰� (0)
order.setStatus(0);
@@ -268,10 +418,16 @@
// 杩斿洖鏂板垱寤虹殑璁㈠崟淇℃伅
Map<String, Object> data = new HashMap<>();
data.put("orderNo", order.getDispatchNo());
+ data.put("customerId", order.getCustomerId());
data.put("customerName", order.getCustomerName());
data.put("originCity", order.getShipperRegionLabel());
data.put("destCity", order.getReceiverRegionLabel());
- data.put("cargoName", order.getCargoName());
+ data.put("transportLine", order.getTransportLine());
+ data.put("vehicleType", order.getRequiredVehicleTypes());
+ data.put("mainDriverName", order.getMainDriverName());
+ data.put("licensePlate", order.getLicensePlate());
+ data.put("operationMode", order.getOperationMode());
+ data.put("vehicleProviderName", order.getVehicleProviderName());
data.put("status", order.getStatus());
return success(data);
} else {
@@ -324,62 +480,5 @@
- /**
- * 鎵归噺楠岃瘉璁㈠崟鏁版嵁鎺ュ彛 (闇�瑕乤ppId/secret璁よ瘉)
- *
- * @param orders 璋冨害鍗曞垪琛�
- * @param request HTTP璇锋眰
- * @return 楠岃瘉缁撴灉
- */
- @PostMapping("/batchValidateOrders")
- public AjaxResult batchValidateOrders(@RequestBody List<AiDispatchOrderVO> orders, HttpServletRequest request)
- {
- // appId/secret 璁よ瘉
- if (!apiAuthUtil.validateAppAuth(request)) {
- return apiAuthUtil.getUnauthorizedResult();
- }
- List<Map<String, Object>> validationResults = new ArrayList<>();
-
- for (int i = 0; i < orders.size(); i++) {
- AiDispatchOrderVO order = orders.get(i);
- Map<String, Object> result = new HashMap<>();
-
- result.put("index", i);
- result.put("customerName", order.getCustomerName());
-
- List<String> errors = new ArrayList<>();
-
- // 楠岃瘉蹇呭~瀛楁
- if (StringUtils.isEmpty(order.getCustomerName())) {
- errors.add("瀹㈡埛鍚嶇О涓嶈兘涓虹┖");
- }
- if (StringUtils.isEmpty(order.getOriginCity())) {
- errors.add("璧峰鍩庡競涓嶈兘涓虹┖");
- }
- if (StringUtils.isEmpty(order.getDestCity())) {
- errors.add("鐩殑鍦板煄甯備笉鑳戒负绌�");
- }
- if (StringUtils.isEmpty(order.getLoadingDate())) {
- errors.add("瑁呰溅鏃ユ湡涓嶈兘涓虹┖");
- }
-
- result.put("isValid", errors.isEmpty());
- result.put("errors", errors);
-
- validationResults.add(result);
- }
-
- Map<String, Object> response = new HashMap<>();
- response.put("totalCount", orders.size());
- response.put("validCount", validationResults.stream()
- .filter(r -> (Boolean) r.get("isValid"))
- .count());
- response.put("invalidCount", validationResults.stream()
- .filter(r -> !(Boolean) r.get("isValid"))
- .count());
- response.put("details", validationResults);
-
- return success(response);
- }
}
--
Gitblit v1.8.0