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