From 2f09efc660bf2cc94cbc5291ad25ca06fc9bdadf Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 24 一月 2026 22:03:09 +0800
Subject: [PATCH] feat: 增加OCR测试,车辆
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleSyncController.java | 164 ++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 146 insertions(+), 18 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleSyncController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleSyncController.java
index fc61e22..6280257 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleSyncController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleSyncController.java
@@ -1,37 +1,165 @@
package com.ruoyi.web.controller.system;
+import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.VehicleInfo;
+import com.ruoyi.system.domain.VehicleSyncDTO;
+import com.ruoyi.system.domain.vo.VehicleSyncVO;
+import com.ruoyi.system.mapper.VehicleInfoMapper;
+import com.ruoyi.system.service.IVehicleInfoService;
import com.ruoyi.system.service.IVehicleSyncDataService;
-import com.ruoyi.system.service.IVehicleSyncService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
- * 杞﹁締鍚屾Controller
- *
+ * 杞﹁締鍚屾绠$悊Controller
+ *
* @author ruoyi
- * @date 2025-10-20
*/
@RestController
-@RequestMapping("/system/vehicle/sync")
-public class VehicleSyncController extends BaseController
-{
- @Autowired
- private IVehicleSyncService vehicleSyncService;
+@RequestMapping("/system/vehicleSync")
+public class VehicleSyncController extends BaseController {
+
+ private static final Logger log = LoggerFactory.getLogger(VehicleSyncController.class);
@Autowired
private IVehicleSyncDataService vehicleSyncDataService;
+
+ @Autowired
+ private VehicleInfoMapper vehicleInfoMapper;
+
+ @Autowired
+ private IVehicleInfoService vehicleInfoService;
+
/**
- * 鎵嬪姩鍚屾鏃х郴缁熻溅杈嗘暟鎹�
+ * 鏌ヨ杞﹁締鍚屾鍒楄〃锛堟樉绀烘棫绯荤粺杞﹁締鍙婂悓姝ョ姸鎬侊級
*/
- @PreAuthorize("@ss.hasPermi('system:vehicle:sync')")
- @PostMapping("/legacy")
- public AjaxResult syncLegacyVehicles()
- {
- return vehicleSyncService.syncVehicles(this.vehicleSyncDataService.getVehiclesFromSqlServer());
+ @PreAuthorize("@ss.hasPermi('system:vehicleSync:list')")
+ @GetMapping("/list")
+ public TableDataInfo list() {
+ try {
+ // 1. 浠庢棫绯荤粺鑾峰彇杞﹁締鍒楄〃
+ List<VehicleSyncDTO> oldVehicles = vehicleSyncDataService.getVehiclesFromSqlServer();
+
+ if (oldVehicles == null || oldVehicles.isEmpty()) {
+ return getDataTable(new ArrayList<>());
+ }
+
+ // 2. 杞崲涓篤O骞舵鏌ュ悓姝ョ姸鎬�
+ List<VehicleSyncVO> voList = new ArrayList<>();
+ for (VehicleSyncDTO dto : oldVehicles) {
+ VehicleSyncVO vo = convertToVO(dto);
+
+ // 3. 妫�鏌ヨ杞﹁締鏄惁宸插悓姝ュ埌鏂扮郴缁�
+ VehicleInfo existVehicle = vehicleInfoMapper.selectVehicleInfoByCarId(dto.getCarId());
+ if (existVehicle != null) {
+ vo.setSynced(true);
+ vo.setVehicleId(existVehicle.getVehicleId());
+ vo.setDeptId(existVehicle.getDeptId());
+ if (existVehicle.getDeptName() != null) {
+ vo.setDeptName(existVehicle.getDeptName());
+ }
+ } else {
+ vo.setSynced(false);
+ }
+
+ voList.add(vo);
+ }
+
+ return getDataTable(voList);
+
+ } catch (Exception e) {
+ log.error("鏌ヨ杞﹁締鍚屾鍒楄〃澶辫触", e);
+ return getDataTable(new ArrayList<>());
+ }
+ }
+
+ /**
+ * 鎵嬪姩鍚屾鍗曚釜杞﹁締鍒版柊绯荤粺
+ */
+ @PreAuthorize("@ss.hasPermi('system:vehicleSync:sync')")
+ @Log(title = "杞﹁締鍚屾", businessType = BusinessType.INSERT)
+ @PostMapping("/syncVehicle")
+ public AjaxResult syncVehicle(@RequestBody Map<String, Object> params) {
+ try {
+ Integer carId = (Integer) params.get("carId");
+ String vehicleNo = (String) params.get("vehicleNo");
+ Long deptId = params.get("deptId") != null ? Long.valueOf(params.get("deptId").toString()) : null;
+
+ if (carId == null || vehicleNo == null || deptId == null) {
+ return AjaxResult.error("鍙傛暟涓嶅畬鏁达細carId銆乿ehicleNo銆乨eptId 涓嶈兘涓虹┖");
+ }
+
+ // 1. 妫�鏌ユ槸鍚﹀凡瀛樺湪
+ VehicleInfo existVehicle = vehicleInfoMapper.selectVehicleInfoByCarId(carId);
+ if (existVehicle != null) {
+ return AjaxResult.error("璇ヨ溅杈嗗凡鍚屾锛岃溅杈咺D: " + existVehicle.getVehicleId());
+ }
+
+ // 2. 鍒涘缓鏂拌溅杈嗚褰�
+ VehicleInfo newVehicle = new VehicleInfo();
+ newVehicle.setCarId(carId);
+ newVehicle.setVehicleNo(vehicleNo);
+ newVehicle.setDeptId(deptId);
+ newVehicle.setStatus("0"); // 榛樿姝e父鐘舵��
+ newVehicle.setCreateBy(getUsername());
+
+ // 3. 鎻掑叆杞﹁締淇℃伅
+ int result = vehicleInfoMapper.insertVehicleInfo(newVehicle);
+
+ if (result > 0) {
+ log.info("鎵嬪姩鍚屾杞﹁締鎴愬姛锛歝arId={}, vehicleNo={}, vehicleId={}",
+ carId, vehicleNo, newVehicle.getVehicleId());
+ return AjaxResult.success("鍚屾鎴愬姛", newVehicle.getVehicleId());
+ } else {
+ return AjaxResult.error("鍚屾澶辫触");
+ }
+
+ } catch (Exception e) {
+ log.error("鎵嬪姩鍚屾杞﹁締澶辫触", e);
+ return AjaxResult.error("鍚屾澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 灏� DTO 杞崲涓� VO
+ */
+ private VehicleSyncVO convertToVO(VehicleSyncDTO dto) {
+ VehicleSyncVO vo = new VehicleSyncVO();
+ vo.setCarId(dto.getCarId());
+ vo.setVehicleNo(dto.getCarLicense());
+ vo.setCarOrdClass(dto.getCarOrdClass());
+
+ // 鏍规嵁carOrdClass鏄犲皠鍒嗗叕鍙稿悕绉�
+ String deptName = mapCarOrdClassToDeptName(dto.getCarOrdClass());
+ vo.setDeptName(deptName);
+
+ return vo;
+ }
+
+ /**
+ * 鏍规嵁鍗曟嵁绫诲瀷缂栫爜鏄犲皠鍒嗗叕鍙稿悕绉�
+ * 鍙互浠庨厤缃垨鏁版嵁搴撹鍙栵紝杩欓噷绠�鍖栧鐞�
+ */
+ private String mapCarOrdClassToDeptName(String carOrdClass) {
+ // TODO: 鏍规嵁瀹為檯涓氬姟瑙勫垯鏄犲皠
+ // 鍙互浠� sys_config 鎴栦笓闂ㄧ殑鏄犲皠琛ㄨ鍙�
+ Map<String, String> mapping = new HashMap<>();
+ mapping.put("01", "鎬诲叕鍙�");
+ mapping.put("02", "鍒嗗叕鍙窤");
+ mapping.put("03", "鍒嗗叕鍙窧");
+
+ return mapping.getOrDefault(carOrdClass, "鏈煡鍒嗗叕鍙�");
}
}
--
Gitblit v1.9.1