Commit ee3078b8 sunke

锡膏料仓

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