| | |
| | | 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.IAOrderStatusService; |
| | | import com.ruoyi.system.service.IDispatchOrdService; |
| | | import com.ruoyi.system.service.ISysClientAppService; |
| | | import com.ruoyi.system.service.ITbOrdersService; |
| | | 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; |
| | |
| | | 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 - 已出车(去接患者途中)"); |
| | | put("7", "已出车(等待患者)"); |
| | | 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 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("执行无参方法"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 回调推送状态 |
| | | */ |
| | |
| | | for (AOrderStatus orderStatus : orderStatusList) { |
| | | int count = tbOrdersService.checkServiceOrdIDExists(orderStatus.getServiceOrdID()); |
| | | if (count > 0) { |
| | | System.out.println("服务订单ID存在:" + orderStatus.getServiceOrdID()); |
| | | log.info("服务订单ID存在:" + orderStatus.getServiceOrdID()); |
| | | |
| | | TbOrders tbOrders = tbOrdersService.selectTbOrdersByServiceOrdID(orderStatus.getServiceOrdID()); |
| | | |
| | | |
| | | |
| | | //获取车牌号 |
| | | String carLicense = ""; |
| | | String carLicense = "-"; |
| | | StringBuilder driverNames = new StringBuilder(); |
| | | StringBuilder driverMobiles = new StringBuilder(); |
| | | try{ |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | //如果车牌号不为空 |
| | | 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("appId1"); |
| | | SysClientApp clientApp = sysClientAppService.selectSysClientAppByAppKey(tbOrders.getAppId()); |
| | | if(clientApp==null){ |
| | | log.error("回调地址不存在"); |
| | | return; |
| | | 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","1"); |
| | | 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",carLicense); |
| | | 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); |
| | |
| | | log.info("回调推送成功,参数如下:"); |
| | | map.forEach((key, value) -> log.info(" {} : {}", key, value)); |
| | | orderStatusService.updateAOrderStatusFlag(orderStatus.getId()); |
| | | |
| | | |
| | | |
| | | } else { |
| | | log.error("回调请求重试后仍然失败"); |
| | | orderStatusService.updateAOrderStatusFlag(orderStatus.getId()); |
| | |
| | | |
| | | // 新增发送回调的方法 |
| | | 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("回调响应结果: " + 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; |
| | | } |
| | | } |