From 97db9d11ff425583d2dece82a842a7766bb5e7e4 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期五, 26 九月 2025 21:43:39 +0800
Subject: [PATCH] feat: 添加map
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 105 insertions(+), 5 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
index 093a6a4..386cf99 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
@@ -5,6 +5,8 @@
import java.util.ArrayList;
import java.io.File;
import java.io.IOException;
+
+import com.ruoyi.system.utils.TaskCodeGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -12,6 +14,7 @@
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.GpsDistanceUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.system.domain.SysTask;
@@ -27,6 +30,8 @@
import com.ruoyi.system.mapper.SysTaskVehicleMapper;
import com.ruoyi.system.mapper.SysTaskAttachmentMapper;
import com.ruoyi.system.mapper.SysTaskLogMapper;
+import com.ruoyi.system.mapper.VehicleInfoMapper;
+import com.ruoyi.system.domain.VehicleInfo;
import com.ruoyi.system.service.ISysTaskService;
/**
@@ -49,6 +54,9 @@
@Autowired
private SysTaskLogMapper sysTaskLogMapper;
+
+ @Autowired
+ private VehicleInfoMapper vehicleInfoMapper;
/**
* 鏌ヨ浠诲姟绠$悊
@@ -88,6 +96,10 @@
task.setTaskDescription(createVO.getTaskDescription());
task.setDepartureAddress(createVO.getDepartureAddress());
task.setDestinationAddress(createVO.getDestinationAddress());
+ task.setDepartureLongitude(createVO.getDepartureLongitude());
+ task.setDepartureLatitude(createVO.getDepartureLatitude());
+ task.setDestinationLongitude(createVO.getDestinationLongitude());
+ task.setDestinationLatitude(createVO.getDestinationLatitude());
task.setPlannedStartTime(createVO.getPlannedStartTime());
task.setPlannedEndTime(createVO.getPlannedEndTime());
task.setAssigneeId(createVO.getAssigneeId());
@@ -95,10 +107,33 @@
task.setDeptId(SecurityUtils.getDeptId());
task.setCreateBy(SecurityUtils.getUsername());
task.setCreateTime(DateUtils.getNowDate());
+ task.setUpdateBy(SecurityUtils.getUsername());
+ task.setUpdateTime(DateUtils.getNowDate());
task.setRemark(createVO.getRemark());
task.setDelFlag("0");
+ // 璁$畻棰勮鍏噷鏁�
+ calculateEstimatedDistance(task);
+
int result = sysTaskMapper.insertSysTask(task);
+
+ // 淇濆瓨杞﹁締鍏宠仈淇℃伅
+ if (result > 0 && createVO.getVehicleIds() != null && !createVO.getVehicleIds().isEmpty()) {
+ for (Long vehicleId : createVO.getVehicleIds()) {
+ SysTaskVehicle taskVehicle = new SysTaskVehicle();
+ taskVehicle.setTaskId(task.getTaskId());
+ taskVehicle.setVehicleId(vehicleId);
+ taskVehicle.setAssignTime(DateUtils.getNowDate());
+ taskVehicle.setAssignBy(SecurityUtils.getUsername());
+ taskVehicle.setStatus("ASSIGNED");
+ taskVehicle.setCreateBy(SecurityUtils.getUsername());
+ taskVehicle.setCreateTime(DateUtils.getNowDate());
+ taskVehicle.setUpdateBy(SecurityUtils.getUsername());
+ taskVehicle.setUpdateTime(DateUtils.getNowDate());
+
+ sysTaskVehicleMapper.insertSysTaskVehicle(taskVehicle);
+ }
+ }
// 璁板綍鎿嶄綔鏃ュ織
if (result > 0) {
@@ -128,12 +163,19 @@
task.setTaskDescription(updateVO.getTaskDescription());
task.setDepartureAddress(updateVO.getDepartureAddress());
task.setDestinationAddress(updateVO.getDestinationAddress());
+ task.setDepartureLongitude(updateVO.getDepartureLongitude());
+ task.setDepartureLatitude(updateVO.getDepartureLatitude());
+ task.setDestinationLongitude(updateVO.getDestinationLongitude());
+ task.setDestinationLatitude(updateVO.getDestinationLatitude());
task.setPlannedStartTime(updateVO.getPlannedStartTime());
task.setPlannedEndTime(updateVO.getPlannedEndTime());
task.setAssigneeId(updateVO.getAssigneeId());
task.setUpdateBy(SecurityUtils.getUsername());
task.setUpdateTime(DateUtils.getNowDate());
task.setRemark(updateVO.getRemark());
+
+ // 閲嶆柊璁$畻棰勮鍏噷鏁�
+ calculateEstimatedDistance(task);
int result = sysTaskMapper.updateSysTask(task);
@@ -181,6 +223,7 @@
task.setTaskId(taskId);
task.setAssigneeId(assigneeId);
task.setUpdateBy(SecurityUtils.getUsername());
+ task.setUpdateTime(DateUtils.getNowDate());
int result = sysTaskMapper.assignTask(task);
@@ -220,6 +263,7 @@
task.setTaskId(taskId);
task.setTaskStatus(newStatus.getCode());
task.setUpdateBy(SecurityUtils.getUsername());
+ task.setUpdateTime(DateUtils.getNowDate());
// 鏍规嵁鐘舵�佽缃浉搴旂殑鏃堕棿
if (newStatus == TaskStatus.IN_PROGRESS && oldTask.getActualStartTime() == null) {
@@ -437,9 +481,33 @@
*/
@Override
public List<SysTaskVehicle> getAvailableVehicles(Long deptId, String taskType) {
- // 杩欓噷闇�瑕佹牴鎹笟鍔¢�昏緫鏌ヨ鍙敤杞﹁締
- // 鏆傛椂杩斿洖绌哄垪琛紝瀹為檯瀹炵幇闇�瑕佹煡璇㈣溅杈嗚〃
- return new ArrayList<>();
+ List<SysTaskVehicle> availableVehicles = new ArrayList<>();
+
+ try {
+ // 鏌ヨ鎵�鏈夌姸鎬佷负姝e父鐨勮溅杈嗭紙涓嶉檺鍒堕儴闂級
+ VehicleInfo queryParam = new VehicleInfo();
+ queryParam.setStatus("0"); // 0琛ㄧず姝e父鐘舵��
+ // 涓嶈缃甦eptId锛屾煡璇㈡墍鏈夐儴闂ㄧ殑杞﹁締
+
+ List<VehicleInfo> vehicles = vehicleInfoMapper.selectVehicleInfoList(queryParam);
+
+ // 杞崲涓篠ysTaskVehicle瀵硅薄
+ for (VehicleInfo vehicle : vehicles) {
+ SysTaskVehicle taskVehicle = new SysTaskVehicle();
+ taskVehicle.setVehicleId(vehicle.getVehicleId());
+ taskVehicle.setVehicleNo(vehicle.getVehicleNo());
+ taskVehicle.setVehicleType(vehicle.getVehicleType());
+ taskVehicle.setVehicleBrand(vehicle.getVehicleBrand());
+ taskVehicle.setVehicleModel(vehicle.getVehicleModel());
+ taskVehicle.setDeptName(vehicle.getDeptName()); // 娣诲姞閮ㄩ棬鍚嶇О
+ availableVehicles.add(taskVehicle);
+ }
+ } catch (Exception e) {
+ // 濡傛灉鏌ヨ澶辫触锛岃褰曟棩蹇楀苟杩斿洖绌哄垪琛�
+ System.err.println("鏌ヨ鍙敤杞﹁締澶辫触: " + e.getMessage());
+ }
+
+ return availableVehicles;
}
/**
@@ -493,14 +561,16 @@
return task;
}
+ @Autowired
+ private TaskCodeGenerator taskCodeGenerator;
+
/**
* 鐢熸垚浠诲姟缂栧彿
*
* @return 浠诲姟缂栧彿
*/
private String generateTaskCode() {
- String dateStr = DateUtils.dateTimeNow("yyyyMMdd");
- return "TASK" + dateStr + "0001";
+ return taskCodeGenerator.generateTaskCode();
}
/**
@@ -564,4 +634,34 @@
}
return "";
}
+
+ /**
+ * 璁$畻棰勮鍏噷鏁�
+ *
+ * @param task 浠诲姟瀵硅薄
+ */
+ private void calculateEstimatedDistance(SysTask task) {
+ if (task.getDepartureLongitude() != null && task.getDepartureLatitude() != null &&
+ task.getDestinationLongitude() != null && task.getDestinationLatitude() != null) {
+
+ // 楠岃瘉GPS鍧愭爣鏄惁鏈夋晥
+ if (GpsDistanceUtils.isValidCoordinate(task.getDepartureLatitude(), task.getDepartureLongitude()) &&
+ GpsDistanceUtils.isValidCoordinate(task.getDestinationLatitude(), task.getDestinationLongitude())) {
+
+ // 璁$畻璺濈
+ java.math.BigDecimal distance = GpsDistanceUtils.calculateDistance(
+ task.getDepartureLatitude(), task.getDepartureLongitude(),
+ task.getDestinationLatitude(), task.getDestinationLongitude()
+ );
+
+ task.setEstimatedDistance(distance);
+ } else {
+ // 鍧愭爣鏃犳晥锛岃缃负0
+ task.setEstimatedDistance(java.math.BigDecimal.ZERO);
+ }
+ } else {
+ // 鍧愭爣涓嶅畬鏁达紝璁剧疆涓�0
+ task.setEstimatedDistance(java.math.BigDecimal.ZERO);
+ }
+ }
}
--
Gitblit v1.9.1