From 62a079a15b46925283581f6caaf631b5a4558927 Mon Sep 17 00:00:00 2001 From: wlzboy <66905212@qq.com> Date: 星期三, 24 九月 2025 11:00:10 +0800 Subject: [PATCH] feat: 初始化app --- 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