app/api/mileageStats.js
app/api/task.js
@@ -141,3 +141,11 @@ method: 'get' }) } // æ£æ¥è½¦è¾æ¯å¦ææ£å¨è¿è¡ä¸çä»»å¡ export function checkVehicleActiveTasks(vehicleId) { return request({ url: '/task/vehicle/' + vehicleId + '/active', method: 'get' }) } app/pages/task/create-emergency.vue
@@ -511,6 +511,7 @@ import { listBranchUsers } from "@/api/system/user" import { searchIcd10 } from "@/api/icd10" import { calculateTransferPrice } from "@/api/price" import { checkVehicleActiveTasks } from "@/api/task" import { getDicts } from "@/api/dict" import { getServiceOrdAreaTypes, getServiceOrderTypes, getHospitalDepartments } from "@/api/dictionary" app/pages/task/detail.vue
@@ -328,6 +328,7 @@ <script> import { getTask, changeTaskStatus } from '@/api/task' import { checkVehicleActiveTasks } from '@/api/task' import { formatDateTime } from '@/utils/common' import AttachmentUpload from '@/components/AttachmentUpload.vue' @@ -504,10 +505,8 @@ handleTaskAction(action) { switch (action) { case 'depart': // åºå -> ç¶æå为åºåä¸ this.$modal.confirm('ç¡®å®è¦åºååï¼').then(() => { this.updateTaskStatus('DEPARTING', 'ä»»å¡å·²åºå') }).catch(() => {}); // åºå -> æ£æ¥è½¦è¾æ¯å¦æå ¶ä»æ£å¨è¿è¡ä¸çä»»å¡ this.checkVehicleAndDepart(); break; case 'cancel': @@ -547,6 +546,82 @@ } }, // æ£æ¥è½¦è¾ç¶æå¹¶åºå checkVehicleAndDepart() { // è·åä»»å¡è½¦è¾ID const vehicleId = this.getVehicleId(); if (!vehicleId) { this.$modal.showToast('æªæ¾å°ä»»å¡è½¦è¾ä¿¡æ¯'); return; } // æ¾ç¤ºå è½½æç¤º uni.showLoading({ title: 'æ£æ¥è½¦è¾ç¶æ...' }); checkVehicleActiveTasks(vehicleId).then(response => { uni.hideLoading(); const activeTasks = response.data || []; // è¿æ»¤æå½å任塿¬èº« const otherActiveTasks = activeTasks.filter(task => task.taskId !== this.taskId); if (otherActiveTasks.length > 0) { // è½¦è¾æå ¶ä»æ£å¨è¿è¡ä¸çä»»å¡ const task = otherActiveTasks[0]; const taskStatus = this.getStatusText(task.taskStatus); const message = `该车è¾å·²ææ£å¨è½¬è¿ä¸çä»»å¡ï¼ ä»»å¡åå·ï¼${task.taskCode} ä»»å¡ç¶æï¼${taskStatus} 请å 宿å½åä»»å¡åååºåæ°ä»»å¡ã`; uni.showModal({ title: 'æç¤º', content: message, showCancel: false, confirmText: 'æç¥éäº' }); return; } // è½¦è¾æ²¡æå ¶ä»æ£å¨è¿è¡ä¸çä»»å¡ï¼å¯ä»¥åºå this.$modal.confirm('ç¡®å®è¦åºååï¼').then(() => { this.updateTaskStatus('DEPARTING', 'ä»»å¡å·²åºå') }).catch(() => {}); }).catch(error => { uni.hideLoading(); console.error('æ£æ¥è½¦è¾ç¶æå¤±è´¥:', error); // æ£æ¥å¤±è´¥æ¶ï¼ä»ç¶å 许åºå this.$modal.confirm('æ£æ¥è½¦è¾ç¶æå¤±è´¥ï¼æ¯å¦ç»§ç»åºåï¼').then(() => { this.updateTaskStatus('DEPARTING', 'ä»»å¡å·²åºå') }).catch(() => {}); }); }, // è·åä»»å¡è½¦è¾ID getVehicleId() { if (!this.taskDetail) { return null; } // ä»è½¦è¾å表ä¸è·å第ä¸ä¸ªè½¦è¾çID if (this.taskDetail.vehicleList && this.taskDetail.vehicleList.length > 0) { return this.taskDetail.vehicleList[0].vehicleId; } // æè ä»å个车è¾å¯¹è±¡è·å if (this.taskDetail.vehicleId) { return this.taskDetail.vehicleId; } return null; }, // æ´æ°ä»»å¡ç¶æ updateTaskStatus(status, remark) { // è·åGPSä½ç½®ä¿¡æ¯ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleMileageStatsController.java
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java
@@ -280,6 +280,16 @@ } /** * æ£æ¥è½¦è¾æ¯å¦ææ£å¨è¿è¡ä¸çä»»å¡ï¼APPç«¯ï¼ * æ£å¨è¿è¡ä¸ç任塿¯æç¶æä¸ä¸ºï¼PENDINGï¼å¾ å¤çï¼ãCOMPLETEDï¼å·²å®æï¼ãCANCELLEDï¼å·²åæ¶ï¼çä»»å¡ */ @GetMapping("/vehicle/{vehicleId}/active") public AjaxResult checkVehicleActiveTasks(@PathVariable Long vehicleId) { List<SysTask> activeTasks = sysTaskService.checkVehicleActiveTasks(vehicleId); return success(activeTasks); } /** * åé ä»»å¡è¯·æ±å¯¹è±¡ */ public static class AssignTaskRequest { ruoyi-common/src/main/java/com/ruoyi/common/config/TiandituMapConfig.java
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleMileageStatsTask.java
ruoyi-system/src/main/java/com/ruoyi/system/domain/TaskTimeInterval.java
ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleMileageStats.java
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTaskMapper.java
@@ -114,4 +114,13 @@ * @return ç»æ */ public int assignTask(SysTask sysTask); /** * æ¥è¯¢è½¦è¾æ£å¨è¿è¡ä¸çä»»å¡ * æ£å¨è¿è¡ä¸ç任塿¯æç¶æä¸ä¸ºï¼PENDINGï¼å¾ å¤çï¼ãCOMPLETEDï¼å·²å®æï¼ãCANCELLEDï¼å·²åæ¶ï¼çä»»å¡ * * @param vehicleId 车è¾ID * @return æ£å¨è¿è¡ä¸çä»»å¡å表 */ public List<SysTask> selectActiveTasksByVehicleId(Long vehicleId); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleMileageStatsMapper.java
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTaskService.java
@@ -205,4 +205,13 @@ * @return ä»»å¡è¯¦æ */ public SysTask getTaskDetail(Long taskId); /** * æ£æ¥è½¦è¾æ¯å¦ææ£å¨è¿è¡ä¸çä»»å¡ * æ£å¨è¿è¡ä¸ç任塿¯æç¶æä¸ä¸ºï¼PENDINGï¼å¾ å¤çï¼ãCOMPLETEDï¼å·²å®æï¼ãCANCELLEDï¼å·²åæ¶ï¼çä»»å¡ * * @param vehicleId 车è¾ID * @return æ£å¨è¿è¡ä¸çä»»å¡å表 */ public List<SysTask> checkVehicleActiveTasks(Long vehicleId); } ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleMileageStatsService.java
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
@@ -961,6 +961,18 @@ return task; } /** * æ£æ¥è½¦è¾æ¯å¦ææ£å¨è¿è¡ä¸çä»»å¡ * æ£å¨è¿è¡ä¸ç任塿¯æç¶æä¸ä¸ºï¼PENDINGï¼å¾ å¤çï¼ãCOMPLETEDï¼å·²å®æï¼ãCANCELLEDï¼å·²åæ¶ï¼çä»»å¡ * * @param vehicleId 车è¾ID * @return æ£å¨è¿è¡ä¸çä»»å¡å表 */ @Override public List<SysTask> checkVehicleActiveTasks(Long vehicleId) { return sysTaskMapper.selectActiveTasksByVehicleId(vehicleId); } @Autowired private TaskCodeGenerator taskCodeGenerator; ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleMileageStatsServiceImpl.java
ruoyi-system/src/main/resources/mapper/system/SysTaskMapper.xml
@@ -268,6 +268,19 @@ where task_id = #{taskId} </update> <select id="selectActiveTasksByVehicleId" parameterType="Long" resultMap="SysTaskResult"> select t.task_id, t.task_code, t.task_type, t.task_status, t.task_description, t.departure_address, t.destination_address, t.planned_start_time, t.actual_start_time, t.create_time, t.update_time from sys_task t inner join sys_task_vehicle tv on t.task_id = tv.task_id where tv.vehicle_id = #{vehicleId} and t.del_flag = '0' and t.task_status not in ('PENDING', 'COMPLETED', 'CANCELLED') order by t.create_time desc </select> <delete id="deleteSysTaskByTaskId" parameterType="Long"> update sys_task set del_flag = '2', update_time = now() where task_id = #{taskId} </delete> ruoyi-system/src/main/resources/mapper/system/VehicleMileageStatsMapper.xml
sql/vehicle_mileage_stats.sql
sql/vehicle_mileage_stats_job.sql
sql/vehicle_mileage_stats_menu.sql
sql/³µÁ¾Àï³Ìͳ¼ÆÊ¹ÓÃ˵Ã÷.md
sql/³µÁ¾Àï³Ìͳ¼ÆÊµÏÖ×ܽá.md