|  |  | 
 |  |  | package com.zy.asrs.task; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSON; | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.exception.CoolException; | 
 |  |  | import com.zy.asrs.domain.enums.TaskStatusType; | 
 |  |  | import com.zy.asrs.entity.CommandInfo; | 
 |  |  | import com.zy.asrs.entity.TaskWrk; | 
 |  |  | import com.zy.asrs.entity.*; | 
 |  |  | import com.zy.asrs.entity.param.TaskOverToWms; | 
 |  |  | import com.zy.asrs.entity.param.TaskStatusFeedbackParam; | 
 |  |  | import com.zy.asrs.service.CommandInfoService; | 
 |  |  | import com.zy.asrs.service.TaskWrkService; | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | import com.zy.asrs.service.impl.TaskWrkLogServiceImpl; | 
 |  |  | import com.zy.asrs.utils.PostMesDataUtils; | 
 |  |  | import com.zy.common.utils.HttpHandler; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | import org.springframework.scheduling.annotation.Scheduled; | 
 |  |  | import org.springframework.stereotype.Component; | 
 |  |  |  | 
 |  |  | import java.io.IOException; | 
 |  |  | import java.time.LocalDateTime; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.HashMap; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Map; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 定时将任务(完成、取消)转成日志 | 
 |  |  | 
 |  |  |     private TaskWrkService taskWrkService; | 
 |  |  |     @Autowired | 
 |  |  |     private CommandInfoService commandInfoService; | 
 |  |  |     @Autowired | 
 |  |  |     private ApiLogService apiLogService; | 
 |  |  |     @Autowired | 
 |  |  |     private BasDevpService basDevpService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private StaDescService staDescService; | 
 |  |  |     @Autowired | 
 |  |  |     private LocMastService locMastService; | 
 |  |  |     @Autowired | 
 |  |  |     private TaskWrkLogServiceImpl wrkLogService; | 
 |  |  |  | 
 |  |  |     @Value("${wms.url}") | 
 |  |  |     private String wmsUrl; | 
 |  |  |     @Value("${wms.movePath}") | 
 |  |  |     private String movePath; | 
 |  |  |     @Value("${wms.taskStatusFeedbackPath}") | 
 |  |  |     private String taskStatusFeedbackPath; | 
 |  |  |  | 
 |  |  |     @Scheduled(cron = "0/3 * * * * ? ") | 
 |  |  |     public void execute() { | 
 |  |  |         for (TaskWrk taskWrk : taskWrkService.selectToBeHistoryData()) { | 
 |  |  |             TaskStatusFeedbackParam taskStatusFeedbackParam = new TaskStatusFeedbackParam(taskWrk); | 
 |  |  |             if (taskWrk.getStatus().equals(TaskStatusType.COMPLETE.id)) {//完成 | 
 |  |  |                 taskStatusFeedbackParam.setTaskStatus("done"); | 
 |  |  |                 new PostMesDataUtils().postMesData("完成上报",wmsUrl,movePath,taskWrk); | 
 |  |  |             } else if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) { | 
 |  |  |                 taskStatusFeedbackParam.setTaskStatus("cancelled"); | 
 |  |  |                 new PostMesDataUtils().postMesData("取消任务完成",wmsUrl,movePath,taskWrk); | 
 |  |  |             } | 
 |  |  |     public void execute() throws IOException { | 
 |  |  |         List<TaskWrk> taskWrkList = taskWrkService.selectToBeHistoryData(); | 
 |  |  |         for (TaskWrk taskWrk : taskWrkList) { | 
 |  |  |             JSONObject jsonObject = null; | 
 |  |  |             String response = null; | 
 |  |  |             boolean success = false; | 
 |  |  |             HashMap<String, Object> map = new HashMap<>(); | 
 |  |  |             try { | 
 |  |  |                 map.put("taskNo",taskWrk.getTaskNo()); | 
 |  |  |                 map.put("taskStatus",taskWrk.getStatusWms()); | 
 |  |  |                 map.put("ioType",taskWrk.getIoTypeWms()); | 
 |  |  |                 map.put("barCode",taskWrk.getBarcode()); | 
 |  |  |                 map.put("reportTime", LocalDateTime.now()); | 
 |  |  |                 map.put("weight",taskWrk.getScWeight().doubleValue()); | 
 |  |  |                 response = new HttpHandler.Builder() | 
 |  |  |                         .setUri(wmsUrl) | 
 |  |  |                         .setPath(taskStatusFeedbackPath) | 
 |  |  |                         .setJson(JSON.toJSONString(map)) | 
 |  |  |                         .build() | 
 |  |  |                         .doPost(); | 
 |  |  |                 jsonObject = JSON.parseObject(response); | 
 |  |  |  | 
 |  |  |             if (taskWrkService.saveToHistory(taskWrk.getTaskNo()) > 0) { | 
 |  |  |                 //任务已经转日志,将该任务下面的指令转日志 | 
 |  |  |                 commandInfoService.saveToHistory(taskWrk.getTaskNo()); | 
 |  |  |  | 
 |  |  |                 //删除任务 | 
 |  |  |                 taskWrkService.delete(new EntityWrapper<TaskWrk>().eq("task_no", taskWrk.getTaskNo())); | 
 |  |  |                 //删除指令 | 
 |  |  |                 commandInfoService.delete(new EntityWrapper<CommandInfo>().eq("task_no", taskWrk.getTaskNo())); | 
 |  |  |                 if (!Cools.isEmpty(jsonObject.getInteger("code")) && jsonObject.getInteger("code").equals(200)) { | 
 |  |  |                     if (taskWrkService.saveToHistory(taskWrk.getTaskNo()) == 0) { | 
 |  |  |                         log.error("任务档转任务历史档失败" + taskWrk); | 
 |  |  |                         return ; | 
 |  |  |                     } | 
 |  |  |                     success = true; | 
 |  |  |                     //删除任务 | 
 |  |  |                     taskWrkService.delete(new EntityWrapper<TaskWrk>().eq("task_no", taskWrk.getTaskNo())); | 
 |  |  |                 } else { | 
 |  |  |                     log.error("wms入库出库完成上报失败" + taskWrk); | 
 |  |  |                 } | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 log.error("wms通讯失败," + e.getMessage()); | 
 |  |  |             } finally { | 
 |  |  |                 apiLogService.save("wms入库出库完成上报" | 
 |  |  |                         , wmsUrl + taskStatusFeedbackPath | 
 |  |  |                         , null | 
 |  |  |                         , "127.0.0.1" | 
 |  |  |                         , JSON.toJSONString(map) | 
 |  |  |                         , response | 
 |  |  |                         , success | 
 |  |  |                 ); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //清理手动命令 | 
 |  |  |     @Scheduled(cron = "0/3 * * * * ? ") | 
 |  |  |     public void ManualCommandClean() { | 
 |  |  |         List<CommandInfo> commandInfos = commandInfoService.selectCompleteManualCommand(); | 
 |  |  |         for (CommandInfo commandInfo : commandInfos) { | 
 |  |  |             //指令转日志 | 
 |  |  |             commandInfoService.saveToHistory(commandInfo.getId()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  |