From fd047fa7234dc11643dab8ecbf38e8d7a8ba0854 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 22 十一月 2025 23:48:12 +0800
Subject: [PATCH] feat:修改任务
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java | 127 ++++++++++++++++++++++++++++++++---------
1 files changed, 98 insertions(+), 29 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java
index dba60e7..56fc2c2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleSyncServiceImpl.java
@@ -3,8 +3,10 @@
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.system.domain.VehicleInfo;
+import com.ruoyi.system.domain.VehicleDept;
import com.ruoyi.system.domain.VehicleSyncDTO;
import com.ruoyi.system.mapper.SysDeptMapper;
+import com.ruoyi.system.mapper.VehicleInfoMapper;
import com.ruoyi.system.service.IVehicleInfoService;
import com.ruoyi.system.service.IVehicleSyncDataService;
import com.ruoyi.system.service.IVehicleSyncService;
@@ -15,6 +17,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -39,6 +42,9 @@
@Autowired
private SysDeptMapper sysDeptMapper;
+
+ @Autowired
+ private VehicleInfoMapper vehicleInfoMapper;
/**
@@ -82,18 +88,28 @@
// 鏌ヨ杞﹁締鏄惁瀛樺湪
VehicleInfo existingVehicle = findVehicleByPlateNumber(plateNumber);
- // 瑙f瀽閮ㄩ棬淇℃伅
- Long deptId = parseDeptIdFromCarOrdClass(vehicleDTO.getCarOrdClass());
+ // 瑙f瀽鎵�鏈夊垎鍏徃ID锛圕arOrdClass鍙兘鍖呭惈澶氫釜缂栫爜锛屽锛欻B,TI锛�
+ List<VehicleDept> vehicleDepts = parseVehicleDepts(vehicleDTO.getCarOrdClass());
+
+ // 璁剧疆榛樿鐨勪富閮ㄩ棬ID锛堢涓�涓垎鍏徃锛�
+ Long primaryDeptId = null;
+ if (!vehicleDepts.isEmpty()) {
+ primaryDeptId = vehicleDepts.get(0).getDeptId();
+ }
if (existingVehicle != null)
{
// 鏇存柊杞﹁締淇℃伅
existingVehicle.setCarId(vehicleDTO.getCarId());
- existingVehicle.setDeptId(deptId);
- // 鍙互閫夋嫨鏄惁鏇存柊鍏朵粬瀛楁
+ existingVehicle.setDeptId(primaryDeptId); // 璁剧疆涓婚儴闂�
vehicleInfoService.updateVehicleInfo(existingVehicle);
+
+ // 鏇存柊杞﹁締-鍒嗗叕鍙稿叧鑱�
+ syncVehicleDepts(existingVehicle.getVehicleId(), vehicleDepts);
+
updateCount++;
- log.debug("鏇存柊杞﹁締: {} (CarID={}), 閮ㄩ棬ID={}", plateNumber, vehicleDTO.getCarId(), deptId);
+ log.debug("鏇存柊杞﹁締: {} (CarID={}), 鍏宠仈鍒嗗叕鍙告暟: {}",
+ plateNumber, vehicleDTO.getCarId(), vehicleDepts.size());
}
else
{
@@ -101,13 +117,18 @@
VehicleInfo newVehicle = new VehicleInfo();
newVehicle.setVehicleNo(plateNumber);
newVehicle.setCarId(vehicleDTO.getCarId());
- newVehicle.setDeptId(deptId);
+ newVehicle.setDeptId(primaryDeptId); // 璁剧疆涓婚儴闂�
newVehicle.setStatus("0");
newVehicle.setPlatformCode("LEGACY"); // 鏍囪涓烘棫绯荤粺鍚屾
newVehicle.setRemark("浠庢棫绯荤粺鍚屾锛孋arID: " + vehicleDTO.getCarId());
vehicleInfoService.insertVehicleInfo(newVehicle);
+
+ // 鏂板杞﹁締-鍒嗗叕鍙稿叧鑱�
+ syncVehicleDepts(newVehicle.getVehicleId(), vehicleDepts);
+
insertCount++;
- log.debug("鏂板杞﹁締: {} (CarID={}), 閮ㄩ棬ID={}", plateNumber, vehicleDTO.getCarId(), deptId);
+ log.debug("鏂板杞﹁締: {} (CarID={}), 鍏宠仈鍒嗗叕鍙告暟: {}",
+ plateNumber, vehicleDTO.getCarId(), vehicleDepts.size());
}
}
catch (Exception e)
@@ -231,22 +252,23 @@
}
/**
- * 浠嶤arOrdClass瑙f瀽閮ㄩ棬ID
- * CarOrdClass鏍煎紡鍙兘鏄細ZB銆丠B.TI绛�
- * 闇�瑕佹媶鍒嗗苟鍦╯ys_dept涓尮閰峝ispatch_order_class瀛楁
+ * 浠� CarOrdClass 瑙f瀽澶氫釜鍒嗗叕鍙稿叧鑱�
+ * CarOrdClass鏍煎紡鍙兘鏄細HB銆丠B,TI銆丠B.TI绛�
*
* @param carOrdClass 杞﹁締鍗曟嵁绫诲瀷缂栫爜
- * @return 閮ㄩ棬ID锛屽鏋滄湭鎵惧埌杩斿洖null
+ * @return 杞﹁締-鍒嗗叕鍙稿叧鑱斿垪琛�
*/
- private Long parseDeptIdFromCarOrdClass(String carOrdClass)
+ private List<VehicleDept> parseVehicleDepts(String carOrdClass)
{
+ List<VehicleDept> vehicleDepts = new ArrayList<>();
+
if (StringUtils.isBlank(carOrdClass))
{
- log.debug("CarOrdClass涓虹┖锛屾棤娉曡В鏋愰儴闂�");
- return null;
+ log.debug("CarOrdClass涓虹┖锛屾棤娉曡В鏋愬垎鍏徃");
+ return vehicleDepts;
}
- // 鎷嗗垎CarOrdClass锛屽彲鑳界殑鍒嗛殧绗︼細. , 绌烘牸
+ // 鎷嗗垎CarOrdClass锛屽彲鑳界殑鍒嗛殧绗︼細, . 绌烘牸
String[] codes = carOrdClass.split("[.,\\s]+");
for (String code : codes)
@@ -258,48 +280,95 @@
code = code.trim();
- // 鏌ヨ鍖归厤dispatch_order_class鐨勯儴闂�
- SysDept dept = findDeptByDispatchOrderClass(code);
- if (dept != null)
+ // 鏌ヨ鍖归厤dispatch_order_class鎴杝ervice_order_class鐨勯儴闂�
+ SysDept dept = findDeptByOrderClass(code);
+ if (dept != null && dept.getParentId() != null && dept.getParentId() == 100L)
{
- log.debug("閫氳繃dispatch_order_class='{}' 鎵惧埌閮ㄩ棬: {} (ID={})",
+ // 鍙鐞嗗垎鍏徃锛坧arent_id=100锛�
+ VehicleDept vehicleDept = new VehicleDept();
+ vehicleDept.setDeptId(dept.getDeptId());
+ vehicleDept.setOrderClass(code);
+ vehicleDept.setCreateBy("system");
+ vehicleDepts.add(vehicleDept);
+
+ log.debug("閫氳繃order_class='{}' 鎵惧埌鍒嗗叕鍙�: {} (ID={})",
code, dept.getDeptName(), dept.getDeptId());
- return dept.getDeptId();
+ }
+ else
+ {
+ log.debug("鏈壘鍒板尮閰峯rder_class='{}' 鐨勫垎鍏徃", code);
}
}
- log.warn("鏈壘鍒板尮閰岰arOrdClass='{}' 鐨勯儴闂�", carOrdClass);
- return null;
+ return vehicleDepts;
+ }
+
+ /**
+ * 鍚屾杞﹁締-鍒嗗叕鍙稿叧鑱�
+ *
+ * @param vehicleId 杞﹁締ID
+ * @param vehicleDepts 鍒嗗叕鍙稿叧鑱斿垪琛�
+ */
+ private void syncVehicleDepts(Long vehicleId, List<VehicleDept> vehicleDepts)
+ {
+ if (vehicleId == null || vehicleDepts == null)
+ {
+ return;
+ }
+
+ // 鍏堝垹闄ゆ棫鐨勫叧鑱�
+ vehicleInfoMapper.deleteVehicleDeptByVehicleId(vehicleId);
+
+ // 鍐嶆彃鍏ユ柊鐨勫叧鑱�
+ if (!vehicleDepts.isEmpty())
+ {
+ for (VehicleDept vd : vehicleDepts)
+ {
+ vd.setVehicleId(vehicleId);
+ }
+ vehicleInfoMapper.batchInsertVehicleDept(vehicleDepts);
+ log.debug("鍚屾杞﹁締ID={} 鐨勫垎鍏徃鍏宠仈锛屾暟閲�: {}", vehicleId, vehicleDepts.size());
+ }
}
/**
- * 鏍规嵁dispatch_order_class鏌ヨ閮ㄩ棬
+ * 鏍规嵁order_class鏌ヨ閮ㄩ棬锛堝悓鏃跺尮閰峝ispatch_order_class鍜宻ervice_order_class锛�
*
- * @param dispatchOrderClass 璋冨害鍗曠紪鐮�
+ * @param orderClass 缂栫爜
* @return 閮ㄩ棬淇℃伅
*/
- private SysDept findDeptByDispatchOrderClass(String dispatchOrderClass)
+ private SysDept findDeptByOrderClass(String orderClass)
{
- if (StringUtils.isBlank(dispatchOrderClass))
+ if (StringUtils.isBlank(orderClass))
{
return null;
}
try
{
+ // 鍏堝皾璇曞尮閰峝ispatch_order_class
SysDept query = new SysDept();
- query.setDispatchOrderClass(dispatchOrderClass);
+ query.setDispatchOrderClass(orderClass);
List<SysDept> depts = sysDeptMapper.selectDeptList(query);
if (depts != null && !depts.isEmpty())
{
- // 杩斿洖绗竴涓尮閰嶇殑閮ㄩ棬
+ return depts.get(0);
+ }
+
+ // 濡傛灉娌℃湁鎵惧埌锛屽皾璇曞尮閰峴ervice_order_class
+ query = new SysDept();
+ query.setServiceOrderClass(orderClass);
+ depts = sysDeptMapper.selectDeptList(query);
+
+ if (depts != null && !depts.isEmpty())
+ {
return depts.get(0);
}
}
catch (Exception e)
{
- log.error("鏌ヨdispatch_order_class='{}' 鐨勯儴闂ㄥけ璐�", dispatchOrderClass, e);
+ log.error("鏌ヨorder_class='{}' 鐨勯儴闂ㄥけ璐�", orderClass, e);
}
return null;
--
Gitblit v1.9.1