Commit ee3078b8 sunke

锡膏料仓

1 个父辈 230d8423
......@@ -132,6 +132,13 @@ public class BoxStatusBean {
return data.get("posId");
}
/**
* 从data中获取值
*/
public String getData(String key){
return data.get(key);
}
/**
* 获取客户端发送上来的出入库完成的库位信息
......
......@@ -77,11 +77,15 @@ public class SpBoxHandler extends BaseDeviceHandler {
if(queueTask.getBarcode().equals(barcode)){
continue;
}
if(queueTask.getCid().equals(cid) && queueTask.isMixTask() && mixTime == queueTask.getMixTime()){
if(queueTask.getCid().equals(cid) && queueTask.isWait() && queueTask.isMixTask() && mixTime == queueTask.getMixTime()){
//搅拌时间相同, 重量相差在10%以内
float diffWeight = Math.abs(queueTask.getNum() - weight);
float diffRate = diffWeight/ weight;
if(diffRate <= 0.1){
log.info("为["+barcode+"]匹配到搅拌任务["+queueTask.getBarcode()+"]");
queueTask.setStatus(OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(queueTask);
Map<String,Object> resultMap = new HashMap<>();
resultMap.put("posId",queueTask.getPosName());
resultMap.put("barcode",queueTask.getBarcode());
......@@ -293,6 +297,11 @@ public class SpBoxHandler extends BaseDeviceHandler {
return statusBean;
} else if (task.isMixTask()) {
//已有正在执行的搅拌任务,先不发送
boolean hasExecutingMixTask = hasExcecutingMixTask(cid);
if(hasExecutingMixTask){
continue;
}
//搅拌任务
statusBean.setOp(OP.MIX);
statusBean.addData("posId", task.getPosName());
......@@ -310,6 +319,18 @@ public class SpBoxHandler extends BaseDeviceHandler {
return null;
}
private boolean hasExcecutingMixTask(String cid){
Collection<DataLog> tasks = taskService.getQueueTasks();
for (DataLog t : tasks) {
if(t.getCid().equals(cid)){
if(t.isMixTask() && t.isExecuting()){
return true;
}
}
}
return false;
}
/**
* 根据回温取料任务查找回温放料任务
*
......@@ -361,10 +382,10 @@ public class SpBoxHandler extends BaseDeviceHandler {
}
if (takingTask != null) {
if (takingTask.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
log.warn(statusBean.getCid() + "回温取料[" + boxStatus.getPosId() + "]完成时任务不存在");
log.warn(statusBean.getCid() + "回温取料[" + boxStatus.getPosId() + "]完成时任务已取消");
}
DataLog puttingTask = null;
List<DataLog> allTasks=taskService.getAllTasks();
Collection<DataLog> allTasks=taskService.getQueueTasks();
for (DataLog dataLog : allTasks) {
if (dataLog.getCid().equals(statusBean.getCid())) {
if (dataLog.getBarcode().equals(takingTask.getBarcode())) {
......@@ -377,15 +398,11 @@ public class SpBoxHandler extends BaseDeviceHandler {
rewarmTakingEnd(takingTask);
if (puttingTask != null) {
puttingTask.setStatus(OP_STATUS.EXECUTING.name());
//dataLog.setSourceType();
// dataLogDao.save(puttingTask);
// taskMap.put(puttingTask.getId(), puttingTask);
taskService.addTaskToExecute(puttingTask);;
taskService.updateQueueTask(puttingTask);
statusBean.addData("secondPosId", puttingTask.getPosName());
}
} else {
log.warn(statusBean.getCid() + "出仓位[" + boxStatus.getPosId() + "]完成时任务不存在");
log.warn(statusBean.getCid() + "回温取料[" + boxStatus.getPosId() + "]完成时任务不存在");
}
} else if (BOX_STATUS.REWARM_PUTTING_END == status) {
//回温放料结束
......@@ -409,7 +426,11 @@ public class SpBoxHandler extends BaseDeviceHandler {
} else if (BOX_STATUS.MIXING == status) {
//搅拌中
changeSolderStatus(boxStatus.getPosId(), SOLDER_STATUS.MIXING);
// changeSolderStatus(boxStatus.getPosId(), SOLDER_STATUS.MIXING);
// String secondPosId = boxStatus.getData("secondPosId");
// if(!Strings.isNullOrEmpty(secondPosId)){
// changeSolderStatus(secondPosId, SOLDER_STATUS.MIXING);
// }
} else if (BOX_STATUS.MIX_PUTTING == status) {
//搅拌完成
......@@ -511,7 +532,7 @@ public class SpBoxHandler extends BaseDeviceHandler {
}
private void mixEnd(DataLog mixTask) throws ValidateException {
if (mixTask != null) {
log.info(mixTask.getBarcode() + "搅拌完成,送回原库位,更改状态为待出库");
log.info(mixTask.getBarcode() + "搅拌完成,送回原库位["+mixTask.getPosName()+"],更改状态为待出库");
taskService.removeQueueTask(mixTask);
mixTask.setStatus(OP_STATUS.FINISHED.name());
......
......@@ -212,15 +212,15 @@ public class SolderBoxCache {
StoragePos warmPos = storagePosManager.getEmptyWarmPos(storage, barcode, excludePosIds);
if(warmPos != null){
log.info(barcode.getBarcode() + "创建回温移库任务["+storagePos.getPosName()+"]=>" + warmPos.getPosName());
DataLog puttingTask = newTask(storage, warmPos,barcode);
puttingTask.setType(OP.REWARM_PUTTING);
puttingTask = dataLogDao.save(puttingTask);
taskService.addTaskToExecute(puttingTask);
DataLog takingTask = newTask(storage, storagePos,barcode);
takingTask.setType(OP.REWARM_TAKING);
takingTask = dataLogDao.save(takingTask);
taskService.addTaskToExecute(takingTask);
DataLog puttingTask = newTask(storage, warmPos,barcode);
puttingTask.setType(OP.REWARM_PUTTING);
puttingTask = dataLogDao.save(puttingTask);
taskService.addTaskToExecute(puttingTask);
}
} catch (ValidateException e) {
log.info(barcode.getBarcode() + "查找回温库位失败");
......
......@@ -340,7 +340,7 @@ public class TaskService {
log.error("cid[" + cid + "]已有入库任务,不可再分配出库任务");
return null;
} else if (task.needReSendToClient() && task.isCheckOutTask()) {//超过30秒仍未完成的出库再次发送到客户端
log.error("cid[" + cid + "]的出库任务[" + task.getPosName() + "]超过60秒仍未完成,重新发送到客户端!");
log.error("cid[" + cid + "]的出库任务[" + task.getPosName() + "]"+task.getBarcode()+"超过60秒仍未完成,重新发送到客户端!");
task.setUpdateDate(new Date());
return task;
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!