package com.zy.asrs.task.handler;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
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<String> {
|
@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 ReturnT<String> 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<WorkIssuedResult.Tasks> tasks = new ArrayList<>();
|
WorkIssuedResult.Tasks task = new WorkIssuedResult.Tasks();
|
task.setTaskId(wrkMast.getWrkNo().toString()+"-"+new Date().getTime());
|
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;
|
}
|
}
|