package com.zy.asrs.task; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.baomidou.mybatisplus.mapper.EntityWrapper; 
 | 
import com.zy.asrs.domain.enums.TaskStatusType; 
 | 
import com.zy.asrs.entity.CommandInfo; 
 | 
import com.zy.asrs.entity.StaDesc; 
 | 
import com.zy.asrs.entity.TaskWrk; 
 | 
import com.zy.asrs.entity.param.TaskOverToWms; 
 | 
import com.zy.asrs.entity.param.TaskStatusFeedbackParam; 
 | 
import com.zy.asrs.service.ApiLogService; 
 | 
import com.zy.asrs.service.CommandInfoService; 
 | 
import com.zy.asrs.service.StaDescService; 
 | 
import com.zy.asrs.service.TaskWrkService; 
 | 
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.util.HashMap; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
  
 | 
/** 
 | 
 * 定时将任务(完成、取消)转成日志 
 | 
 */ 
 | 
@Slf4j 
 | 
@Component 
 | 
public class TaskLogScheduler { 
 | 
  
 | 
    @Autowired 
 | 
    private TaskWrkService taskWrkService; 
 | 
    @Autowired 
 | 
    private CommandInfoService commandInfoService; 
 | 
    @Autowired 
 | 
    private ApiLogService apiLogService; 
 | 
  
 | 
    @Autowired 
 | 
    private StaDescService staDescService; 
 | 
  
 | 
    @Value("${wms.url}") 
 | 
    private String wmsUrl; 
 | 
    @Value("${wms.movePath}") 
 | 
    private String movePath; 
 | 
  
 | 
    @Scheduled(cron = "0/3 * * * * ? ") 
 | 
    public void execute() throws IOException { 
 | 
        for (TaskWrk taskWrk : taskWrkService.selectToBeHistoryData()) { 
 | 
            TaskStatusFeedbackParam taskStatusFeedbackParam = new TaskStatusFeedbackParam(taskWrk); 
 | 
            if (taskWrk.getStatus().equals(TaskStatusType.OVER.id)) {//完成 
 | 
                taskStatusFeedbackParam.setTaskStatus("done"); 
 | 
                Map<String, Object> map = new HashMap<>(); 
 | 
                map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); 
 | 
                TaskOverToWms taskOverToWms = new TaskOverToWms(); 
 | 
                taskOverToWms.setFeedbackFrom("WCS"); //来源 
 | 
                taskOverToWms.setWarehouseId("1688469798893297665"); //仓库标识 
 | 
                taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //任务号 
 | 
                taskOverToWms.setTaskType(taskStatusFeedbackParam.getTaskType()); // 任务类型 
 | 
                taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 容器编码 
 | 
                if (taskWrk.getIoType() ==1 ){ 
 | 
                    taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //设备编码 
 | 
                    taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //目标库位 
 | 
                }else if (taskWrk.getIoType() ==2){ 
 | 
                    Map<Integer,String> map1 = new HashMap<>(); 
 | 
                    map1.put(102,"J-1101"); 
 | 
                    map1.put(106,"J-1103"); 
 | 
                    map1.put(110,"J-1105"); 
 | 
                    map1.put(114,"J-1107"); 
 | 
                    map1.put(118,"J-1109"); 
 | 
                    map1.put(122,"J-1111"); 
 | 
                    StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("stn_no", taskWrk.getTargetPoint())); 
 | 
                    taskOverToWms.setEquipmentCode(staDesc.getStnDesc()); //设备编码 
 | 
                    taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //源库位 
 | 
                } 
 | 
  
 | 
                taskOverToWms.setTaskStatus("done"); //任务状态 
 | 
                String response = null; 
 | 
                try { 
 | 
                    response = new HttpHandler.Builder() 
 | 
                            .setHeaders(map) 
 | 
                            .setUri(wmsUrl) 
 | 
                            .setPath("wcsManager/wcsInterface/taskStatusFeedback") 
 | 
                            .setJson(JSON.toJSONString(taskOverToWms)) 
 | 
                            .build() 
 | 
                            .doPost(); 
 | 
                }catch (Exception e){ 
 | 
                    continue; 
 | 
                } 
 | 
                apiLogService.save("Wms任务完成接口" 
 | 
                        ,wmsUrl+"/wcsManager/wcsInterface/taskStatusFeedback" 
 | 
                        ,null 
 | 
                        ,"127.0.0.1" 
 | 
                        ,JSON.toJSONString(taskOverToWms) 
 | 
                        ,response 
 | 
                        ,true 
 | 
                ); 
 | 
  
 | 
                JSONObject jsonObject = JSON.parseObject(response); 
 | 
                if (jsonObject.getInteger("code").equals(200)){ 
 | 
  
 | 
                }else { 
 | 
                    continue; 
 | 
                } 
 | 
  
 | 
                //new PostMesDataUtils().postMesData("完成上报",wmsUrl,movePath,taskWrk); 
 | 
            } else if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) { 
 | 
                taskStatusFeedbackParam.setTaskStatus("cancelled"); 
 | 
                //new PostMesDataUtils().postMesData("取消任务完成",wmsUrl,movePath,taskWrk); 
 | 
            } 
 | 
  
 | 
            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())); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |