From 37de2f4b0f732ca5c19582d4a340ad7c987925b5 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期三, 05 十一月 2025 22:40:47 +0800
Subject: [PATCH] feat: 部门管理多个车辆
---
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | 282 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 282 insertions(+), 0 deletions(-)
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index 853243b..866ba08 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -1,7 +1,24 @@
package com.ruoyi.quartz.task;
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.utils.HttpUtil;
+import com.ruoyi.system.domain.*;
+import com.ruoyi.system.service.*;
+import com.ruoyi.system.service.impl.SysUserServiceImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ruoyi.common.utils.StringUtils;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* 瀹氭椂浠诲姟璋冨害娴嬭瘯
@@ -11,6 +28,50 @@
@Component("ryTask")
public class RyTask
{
+ private static final Logger log = LoggerFactory.getLogger(RyTask.class);
+
+
+
+ // 娣诲姞鐘舵�佹槧灏勫瓧鍏�
+ private static final Map<String, String> ORDER_STATUS_MAP = new HashMap<String, String>() {{
+ put("-1", "鏃犳晥鍙栨秷");
+ put("1", "鏈姤浠�");
+ put("2", "宸叉姤浠�");
+ put("3", "1 - 瀹屽叏鏈‘璁�");
+ put("4", "2 - 閮ㄥ垎宸茬‘璁�");
+ put("5", "鏈嚭杞�");
+ put("6", "3 - 宸插嚭杞︼紙鍘绘帴鎮h�呴�斾腑锛�");
+ put("7", "宸插嚭杞︼紙绛夊緟鎮h�咃級");
+ put("8", "4 - 宸插嚭杞︼紙鏈嶅姟涓級");
+ put("9", "5 - 宸查�佽揪锛堝洖绋嬩腑锛�");
+ put("10", "宸茶繑鍥�");
+ put("11", "璺戠┖鍗曪紝宸茶繑鍥�");
+ put("12", "鍙栨秷");
+ put("13", "0 - 鏂拌皟搴﹀崟锛堟湭涓嬪彂锛�");
+ put("14", "宸叉彁浜わ紝绛夊緟瀹℃牳");
+ put("15", "瀹℃牳瀹屾垚");
+ put("16", "瀹℃牳涓嶉�氳繃");
+ put("17", "宸茬珯鐐�");
+ }};
+
+ @Autowired
+ private IAOrderStatusService orderStatusService;
+
+ @Autowired
+ private ITbOrdersService tbOrdersService;
+
+ @Autowired
+ private IDispatchOrdService dispatchOrdService;
+
+ @Autowired
+ private ISysClientAppService sysClientAppService;
+
+ @Autowired
+ private ITbCallbackLogService tbCallbackLogService;
+
+ @Autowired
+ private ITbVehicleOrderService tbVehicleOrderService;
+
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
{
System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i));
@@ -25,4 +86,225 @@
{
System.out.println("鎵ц鏃犲弬鏂规硶");
}
+
+
+
+
+ /**
+ * 鍥炶皟鎺ㄩ�佺姸鎬�
+ */
+ public void ryOrderStatus() {
+ try {
+ List<AOrderStatus> orderStatusList = orderStatusService.selectAOrderStatusList();
+ if (orderStatusList.size() < 0) {
+ System.out.println("娌℃湁鏁版嵁");
+ return;
+ }
+ for (AOrderStatus orderStatus : orderStatusList) {
+ int count = tbOrdersService.checkServiceOrdIDExists(orderStatus.getServiceOrdID());
+ if (count > 0) {
+ log.info("鏈嶅姟璁㈠崟ID瀛樺湪锛�" + orderStatus.getServiceOrdID());
+
+ TbOrders tbOrders = tbOrdersService.selectTbOrdersByServiceOrdID(orderStatus.getServiceOrdID());
+
+
+
+ //鑾峰彇杞︾墝鍙�
+ String carLicense = "-";
+ StringBuilder driverNames = new StringBuilder();
+ StringBuilder driverMobiles = new StringBuilder();
+ try{
+ DispatchOrd dispatchOrd = dispatchOrdService.selectDispatchOrdByServiceOrdIDDt(orderStatus.getServiceOrdID());
+ if(dispatchOrd!=null){
+ carLicense = dispatchOrdService.selectCarLicenseByCarId(Integer.valueOf(dispatchOrd.getDispatchOrdCarID()));
+
+ String dispatchOAEntourage = dispatchOrd.getDispatchOrd_OAEntourage();
+ String dispatchOAName = dispatchOrd.getDispatchOrd_OAName();
+
+ if (dispatchOAEntourage != null && dispatchOAName != null) {
+
+ String[] entourages = dispatchOAEntourage.split(",");
+ String[] names = dispatchOAName.split(",");
+
+ // 鏌ユ壘鎵�鏈夊徃鏈轰俊鎭�
+ for (int i = 0; i < Math.min(entourages.length, names.length); i++) {
+ if ("鍙告満".equals(entourages[i].trim())) {
+ String driverMobile = dispatchOrdService.selectDriverMobileByName(names[i].trim());
+ if (driverNames.length() > 0) {
+ driverNames.append(",");
+ }
+ driverNames.append(names[i].trim());
+ if (driverMobiles.length() > 0) {
+ driverMobiles.append(",");
+ }
+ driverMobiles.append(driverMobile);
+ }
+ }
+ }
+
+ //濡傛灉杞︾墝鍙蜂笉涓虹┖
+ if(carLicense!=null && carLicense.length()>0){
+ log.info("鏇存柊璁㈠崟-杞︾墝鍙峰叧鑱旇〃锛屻��" + tbOrders.getOrderID() + "銆戣溅鐗屽彿锛�" + carLicense);
+
+ //鏌ヨ鏄惁瀛樺湪鍏宠仈璁板綍
+ TbVehicleOrder tbVehicleOrder = tbVehicleOrderService.selectTbVehicleOrderById(tbOrders.getOrderID());
+ if(tbVehicleOrder==null){
+ //涓嶅瓨鍦ㄥ叧鑱旇褰�
+ //鍒涘缓鍏宠仈璁板綍
+ tbVehicleOrder = new TbVehicleOrder();
+ tbVehicleOrder.setOrderId(tbOrders.getOrderID());
+ tbVehicleOrder.setServiceOrdId(tbOrders.getServiceOrdID());
+ tbVehicleOrder.setVehicle(carLicense);
+ tbVehicleOrder.setStatus("0");
+ tbVehicleOrderService.insertTbVehicleOrder(tbVehicleOrder);
+ }
+ else{
+ //瀛樺湪鍏宠仈璁板綍
+ //鏇存柊鍏宠仈璁板綍
+ if(orderStatus.getMsg().contains("宸茶繑鍥�"))
+ {
+ tbVehicleOrder.setStatus("1");
+ tbVehicleOrderService.updateTbVehicleOrder(tbVehicleOrder);
+ }
+ else if(orderStatus.getMsg().contains("鍙栨秷"))
+ {
+ tbVehicleOrder.setStatus("2");
+ tbVehicleOrderService.updateTbVehicleOrder(tbVehicleOrder);
+ }
+ }
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ log.error("鑾峰彇璋冨害鍗曞紓甯革細"+e.getMessage());
+ }
+
+ SysClientApp clientApp = sysClientAppService.selectSysClientAppByAppKey(tbOrders.getAppId());
+ if(clientApp==null){
+ log.error("鍥炶皟鍦板潃涓嶅瓨鍦�");
+ orderStatusService.updateAOrderStatusFlag(orderStatus.getId());
+ continue;
+ }
+
+ String callbackUrl = clientApp.getCallbackUrl();
+ try {
+
+ String carLicenseStr = "-";
+ if(carLicense!=null && carLicense.length()>0){
+ carLicenseStr = carLicense;
+ }
+
+
+ // 鏋勫缓璇锋眰鍙傛暟
+ Map<String, String> map = new HashMap<>();
+ map.put("orderID", tbOrders.getOrderID().toString());
+ map.put("thirdOrderNo", orderStatus.getServiceOrdID());
+ map.put("orderStatus", ORDER_STATUS_MAP.entrySet()
+ .stream()
+ .filter(entry -> entry.getValue().equals(orderStatus.getMsg()))
+ .map(Map.Entry::getKey)
+ .findFirst()
+ .orElse("0"));
+ map.put("orderRemark", orderStatus.getMsg());
+ map.put("plateNo",carLicenseStr);
+ map.put("driverMobile",driverMobiles.toString());
+ map.put("driverName", driverNames.toString());
+
+ //鏍煎紡鍖栨洿鏂版椂闂�
+ try {
+
+ // 2. 瀹氫箟鐩爣鏍煎紡锛�24灏忔椂鍒� "HH"锛�
+ DateTimeFormatter targetFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ String formattedTime = orderStatus.getUpdateTime().format(targetFormat);
+ map.put("updateTime", formattedTime);
+ }
+ catch (Exception ex)
+ {
+ log.error("鏃堕棿鏍煎紡杞寲鍑洪敊");
+ }
+
+
+
+
+ log.info("銆愮洃娴嬨�慬" + tbOrders.getOrderID() + "]杞︾墝鍙凤細" + carLicenseStr);
+ //鎵撳嵃map
+ log.info("銆愮洃娴嬨�慬" + tbOrders.getOrderID() + "]鍥炶皟璇锋眰鍙傛暟锛�" + map);
+
+ // 绗竴娆″皾璇�
+ String response = sendCallback(callbackUrl, map);
+
+ if (response == null) {
+ // 濡傛灉绗竴娆″け璐ワ紝绛夊緟3绉掑悗閲嶈瘯
+ Thread.sleep(3000);
+ log.info("绗竴娆″洖璋冨け璐ワ紝鍑嗗閲嶈瘯");
+ response = sendCallback(callbackUrl, map);
+ }
+
+ if (response != null) {
+ // 鏇存柊鐘舵��
+ log.info("鍥炶皟鎺ㄩ�佹垚鍔燂紝鍙傛暟濡備笅锛�");
+ map.forEach((key, value) -> log.info(" {} : {}", key, value));
+ orderStatusService.updateAOrderStatusFlag(orderStatus.getId());
+
+
+
+ } else {
+ log.error("鍥炶皟璇锋眰閲嶈瘯鍚庝粛鐒跺け璐�");
+ orderStatusService.updateAOrderStatusFlag(orderStatus.getId());
+ }
+ } catch (Exception e) {
+ log.error("鍥炶皟璇锋眰澶辫触: " + e.getMessage());
+ orderStatusService.updateAOrderStatusFlag(orderStatus.getId());
+ }
+ }
+ else {
+ log.info("鏈嶅姟璁㈠崟ID涓嶅瓨鍦細" + orderStatus.getServiceOrdID());
+ orderStatusService.updateAOrderStatusFlag(orderStatus.getId());
+ }
+ }
+ } catch (Exception e) {
+ log.error("鎵ц澶辫触: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ // 鏂板鍙戦�佸洖璋冪殑鏂规硶
+ private String sendCallback(String callbackUrl, Map<String, String> params) {
+ TbCallbackLog callbackLog = new TbCallbackLog();
+ callbackLog.setCallbackUrl(callbackUrl);
+ callbackLog.setRequestParams(JSON.toJSONString(params));
+ callbackLog.setCreateTime(new Date());
+ callbackLog.setStatus("0"); // 榛樿澶辫触
+ callbackLog.setRetryCount(0);
+ callbackLog.setServiceOrdId(params.get("thirdOrderNo"));
+ callbackLog.setOrderId(Long.valueOf(params.get("orderID")));
+ callbackLog.setAppId(params.get("appId"));
+
+ try {
+ // 鎵撳嵃璇锋眰鍙傛暟
+ log.info("鍙戦�佸洖璋冭姹傦紝URL: " + callbackUrl);
+ log.info("璇锋眰鍙傛暟: " + params);
+
+ // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
+ String response = HttpUtil.post(callbackUrl, params);
+
+ // 鎵撳嵃鍝嶅簲缁撴灉
+ log.info("鍥炶皟鍝嶅簲缁撴灉: " + response);
+
+ // 鏇存柊鏃ュ織鐘舵��
+ callbackLog.setResponseResult(response);
+ callbackLog.setStatus("1"); // 鎴愬姛
+
+ tbCallbackLogService.insertTbCallbackLog(callbackLog);
+ return response;
+ } catch (Exception e) {
+ log.error("鍥炶皟璇锋眰寮傚父: " + e.getMessage());
+ // 璁板綍閿欒淇℃伅
+ callbackLog.setErrorMsg(e.getMessage());
+ callbackLog.setRetryCount(1); // 濡傛灉鏄噸璇曠殑鎯呭喌涓嬮渶瑕�+1
+ tbCallbackLogService.insertTbCallbackLog(callbackLog);
+ return null;
+ }
+ }
}
--
Gitblit v1.9.1