package com.zy.asrs.task.handler; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.result.WorkIssuedResult; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.common.constant.MesConstant; 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.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @Slf4j @Service @Transactional public class WCSReportHandler extends AbstractHandler { @Value("${wcs-slave.url}") private String url; @Value("${wcs-slave.workIssued}") private String workIssued; @Value("${wcs-slave.inDevp}") private String inDevp; @Value("${wcs-slave.outDevp}") private String outDevp; @Autowired private ApiLogService apiLogService; @Autowired private WrkMastService wrkMastService; public synchronized ReturnT start(WrkMast wrkMast,int i) { WorkIssuedResult workIssuedResult = new WorkIssuedResult(); Date date = new Date(); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String groupId = dateFormat.format(date)+"-"+i; workIssuedResult.setGroupId(groupId);//组号 workIssuedResult.setMsgTime(dateFormat.format(date)); workIssuedResult.setWarehouse("wzzy"); List tasks = new ArrayList<>(); WorkIssuedResult.Tasks task = new WorkIssuedResult.Tasks(); if(Cools.isEmpty(wrkMast.getMemo())){ task.setTaskId(wrkMast.getWrkNo().toString()+"-"+new Date().getTime()); wrkMast.setMemo(wrkMast.getWrkNo().toString()+"-"+new Date().getTime()); wrkMastService.updateById(wrkMast); }else { task.setTaskId(wrkMast.getMemo()); } task.setBarCode(wrkMast.getBarcode()); task.setOrder(i); //优先级排序 15.出库>14.入库>13.空板出库>12.空板入库>11.移库 if(wrkMast.getIoType() == 1 ){//入库 workIssuedResult.setPriorityCode(14);//优先级 task.setTaskType(0);//入库 task.setStartNode(inDevp); task.setEndNode(wrkMast.getLocNo());//目标库位 }else if(wrkMast.getIoType() == 10 ){//空板入库 workIssuedResult.setPriorityCode(12);//优先级 task.setTaskType(0);//入库 task.setStartNode("200"); task.setEndNode(wrkMast.getLocNo());//目标库位 }else if(wrkMast.getIoType() == 101 ){//出库 workIssuedResult.setPriorityCode(15);//优先级 task.setTaskType(1);//出库 task.setStartNode(wrkMast.getSourceLocNo());//源库位 task.setEndNode(outDevp); }else if(wrkMast.getIoType() == 11){//移库 workIssuedResult.setPriorityCode(11);//优先级 task.setTaskType(2);//移库 task.setStartNode(wrkMast.getSourceLocNo());//源库位 task.setEndNode(wrkMast.getLocNo());//目标库位 } else {//空板出库 workIssuedResult.setPriorityCode(13);//优先级 task.setTaskType(1);//出库 task.setStartNode(wrkMast.getSourceLocNo());//源库位 task.setEndNode("100"); } tasks.add(task); workIssuedResult.setTasks(tasks); String response = ""; boolean success = false; try { response = new HttpHandler.Builder() .setUri(url) .setPath(workIssued) .setJson(JSON.toJSONString(workIssuedResult)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("returnStatus").equals(0)) { success = true; wrkMast.setWrkSts(1L); wrkMastService.updateById(wrkMast); } else { log.error("wms下发任务给wcs失败!!!url:{};request:{};response:{}", url+"/"+workIssued, JSON.toJSONString(workIssuedResult), response); throw new CoolException("wms下发任务给wcs失败"); } } catch (Exception e) { log.error("fail", e); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } finally { try { // 保存接口日志 apiLogService.save( "wms下发任务给wcs", url+"/"+workIssued, null, "127.0.0.1", JSON.toJSONString(workIssuedResult), response, success ); } catch (Exception e) { log.error("", e); } } return null; } }