Commit e8ed6c32 sunke

增加料仓工单任务数量查询接口,用于设备放料串时不同工单放到不同料串上

刚入库物料出库时无法触发End状态修复
获取库存接口异常处理
天通908接口调试
1 个父辈 4a1baf9a
...@@ -402,7 +402,7 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -402,7 +402,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
} else if (BOX_STATUS.OUT_FINISHED == status) {//出仓完成 } else if (BOX_STATUS.OUT_FINISHED == status) {//出仓完成
finishedOutPos(statusBean.getCid(),posName,executeTime); finishedOutPos(statusBean.getCid(),posName,executeTime);
} else if (BOX_STATUS.OUT_END == status) {//出库完成(放到仓门口 } else if (BOX_STATUS.OUT_END == status) {//出库完成(放到仓门口
endTask(statusBean.getCid(),posName); endOutTask(statusBean.getCid(),posName);
} }
// else if (BOX_STATUS.REWARM_TAKING_END == status) { // else if (BOX_STATUS.REWARM_TAKING_END == status) {
// //回温取料完成, 将库位清空 // //回温取料完成, 将库位清空
...@@ -497,7 +497,7 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -497,7 +497,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
} }
log.info(task.getBarcode() + "入仓位[" + task.getPosName() + "]完成,执行时间["+executeTime+"]秒"); log.info(task.getBarcode() + "入仓位[" + task.getPosName() + "]完成,执行时间["+executeTime+"]秒");
ReelLockPosUtil.removeReelLockPosInfo(task.getBarcode()); ReelLockPosUtil.removeReelLockPosInfo(task.getBarcode());
DataLog cancelTask = taskService.findFinishedTask(cid, posName); DataLog cancelTask = taskService.findFinishedPutInTask(cid, posName);
if (cancelTask != null && cancelTask.isCancel()) { if (cancelTask != null && cancelTask.isCancel()) {
//将相同库位已经取消的任务从完成队列里删除 //将相同库位已经取消的任务从完成队列里删除
taskService.removeFinishedTask(cancelTask); taskService.removeFinishedTask(cancelTask);
...@@ -506,7 +506,7 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -506,7 +506,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
updatePutInData(task); updatePutInData(task);
} else { } else {
//从已完成列表中找,如果还找不到就忽略 //从已完成列表中找,如果还找不到就忽略
task = taskService.findFinishedTask(cid, posName); task = taskService.findFinishedPutInTask(cid, posName);
if (task != null && task.isPutInTask()) { if (task != null && task.isPutInTask()) {
if (task.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成 if (task.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
if(executeTime>0){ if(executeTime>0){
...@@ -527,8 +527,9 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -527,8 +527,9 @@ public class BaseDeviceHandler implements IDeviceHandler {
finishedOutPos(cid,posName,-1); finishedOutPos(cid,posName,-1);
} }
protected void endTask(String cid, String posName){ protected void endOutTask(String cid, String posName){
DataLog task = taskService.findFinishedTask(cid, posName); log.info(cid +"将物料从库位["+posName+"]出库到门口/料串完成");
DataLog task = taskService.findFinishedOutTask(cid, posName);
if(task != null){ if(task != null){
task.setStatus(OP_STATUS.END.name()); task.setStatus(OP_STATUS.END.name());
taskService.updateFinishedTask(task); taskService.updateFinishedTask(task);
...@@ -548,7 +549,7 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -548,7 +549,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
task.setExecuteTime(executeTime); task.setExecuteTime(executeTime);
} }
log.info(task.getBarcode() + "出仓位[" + task.getPosName() + "]完成,执行时间[" + executeTime + "]秒"); log.info(task.getBarcode() + "出仓位[" + task.getPosName() + "]完成,执行时间[" + executeTime + "]秒");
DataLog cancelTask = taskService.findFinishedTask(cid, posName); DataLog cancelTask = taskService.findFinishedOutTask(cid, posName);
if (cancelTask != null && cancelTask.isCancel()) { if (cancelTask != null && cancelTask.isCancel()) {
//将相同库位已经取消的任务从完成队列里删除 //将相同库位已经取消的任务从完成队列里删除
taskService.removeFinishedTask(cancelTask); taskService.removeFinishedTask(cancelTask);
...@@ -558,7 +559,7 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -558,7 +559,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
} else { } else {
//log.error(operationKey + "触发仓位完成时,操作队列中不存在"); //log.error(operationKey + "触发仓位完成时,操作队列中不存在");
//从已完成列表中找,如果还找不到就忽略 //从已完成列表中找,如果还找不到就忽略
task = taskService.findFinishedTask(cid, posName); task = taskService.findFinishedOutTask(cid, posName);
if (task != null && task.isCheckOutTask()) { if (task != null && task.isCheckOutTask()) {
if (task.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成 if (task.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
if (executeTime > 0) { if (executeTime > 0) {
...@@ -844,9 +845,9 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -844,9 +845,9 @@ public class BaseDeviceHandler implements IDeviceHandler {
if (dataLog.getStatus().equals(OP_STATUS.WAIT)) { if (dataLog.getStatus().equals(OP_STATUS.WAIT)) {
if ((ObjectUtil.isNotEmpty(item.getPn()) && item.getPn().equals(dataLog.getPartNumber())) || if ((ObjectUtil.isNotEmpty(item.getPn()) && item.getPn().equals(dataLog.getPartNumber())) ||
(ObjectUtil.isNotEmpty(item.getRi()) && item.getRi().equals(dataLog.getBarcode())) (ObjectUtil.isNotEmpty(item.getRi()) && item.getRi().equals(dataLog.getBarcode()))
) ) {
dataLog.setStatus(OP_STATUS.EXECUTING.name()); dataLog.setStatus(OP_STATUS.EXECUTING.name());
}
taskService.updateQueueTask(dataLog); taskService.updateQueueTask(dataLog);
log.info("ACCSHELF: sourceId=" + sourceId + "的工单[" + order.getOrderNo() + "]开始执行任务:[" + dataLog.getPosName() + "][" + dataLog.getPartNumber() + "][" + dataLog.getBarcode() + "]"); log.info("ACCSHELF: sourceId=" + sourceId + "的工单[" + order.getOrderNo() + "]开始执行任务:[" + dataLog.getPosName() + "][" + dataLog.getPartNumber() + "][" + dataLog.getBarcode() + "]");
......
...@@ -296,7 +296,7 @@ public class SpBoxHandler extends BaseDeviceHandler { ...@@ -296,7 +296,7 @@ public class SpBoxHandler extends BaseDeviceHandler {
DataLog takingTask = taskService.findExecutingTask(statusBean.getCid(), boxStatus.getPosId()); DataLog takingTask = taskService.findExecutingTask(statusBean.getCid(), boxStatus.getPosId());
if (takingTask == null) { if (takingTask == null) {
//从已完成列表中找,如果还找不到就忽略 //从已完成列表中找,如果还找不到就忽略
takingTask = taskService.findFinishedTask(statusBean.getCid(), boxStatus.getPosId()); takingTask = taskService.findFinishedOutTask(statusBean.getCid(), boxStatus.getPosId());
} }
if (takingTask != null) { if (takingTask != null) {
if (takingTask.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成 if (takingTask.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
...@@ -331,7 +331,7 @@ public class SpBoxHandler extends BaseDeviceHandler { ...@@ -331,7 +331,7 @@ public class SpBoxHandler extends BaseDeviceHandler {
DataLog puttingTask =taskService.findExecutingTask(statusBean.getCid(), boxStatus.getPosId()); DataLog puttingTask =taskService.findExecutingTask(statusBean.getCid(), boxStatus.getPosId());
if (puttingTask == null) { if (puttingTask == null) {
//从已完成列表中找,如果还找不到就忽略 //从已完成列表中找,如果还找不到就忽略
puttingTask = taskService.findFinishedTask(statusBean.getCid(), boxStatus.getPosId()); puttingTask = taskService.findFinishedOutTask(statusBean.getCid(), boxStatus.getPosId());
} }
if (puttingTask != null) { if (puttingTask != null) {
if (puttingTask.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成 if (puttingTask.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
......
...@@ -502,4 +502,34 @@ public class DeviceController { ...@@ -502,4 +502,34 @@ public class DeviceController {
return null; return null;
} }
@ApiOperation("客户端获取料仓是否还有未完成的工单出库任务")
@RequestMapping(value = "/service/store/outTaskCount")
@ResponseBody
@AnonymousAccess
public Integer outTaskCount(HttpServletRequest request) {
String cid = request.getParameter("cid");
String hSerial = request.getParameter("hSerial");
int outTaskCount = 0;
if(!Strings.isNullOrEmpty(cid)){
Collection<DataLog> queueTasks = taskService.getQueueTasks(cid);
if(!Strings.isNullOrEmpty(hSerial)){
for (DataLog queueTask : queueTasks) {
if(queueTask.isCheckOutTask()){
if(queueTask.getSourceName().equals(hSerial)){
//单号相同任务数量+1
outTaskCount = outTaskCount + 1;
}
}
}
}else{
for (DataLog queueTask : queueTasks) {
if (queueTask.isCheckOutTask()) {
outTaskCount = outTaskCount + 1;
}
}
}
}
return outTaskCount;
}
} }
...@@ -139,12 +139,14 @@ public class LiteOrder extends BasePo implements Serializable { ...@@ -139,12 +139,14 @@ public class LiteOrder extends BasePo implements Serializable {
* 任务料盘是否已出完 * 任务料盘是否已出完
*/ */
public boolean isTaskFinished(){ public boolean isTaskFinished(){
return status == LITEORDER_STATUS.BOM_FINISHED || status == LITEORDER_STATUS.TAILS_FINISHED || status == LITEORDER_STATUS.ONE_FINISHED; return status == LITEORDER_STATUS.BOM_FINISHED || status == LITEORDER_STATUS.TAILS_FINISHED || status == LITEORDER_STATUS.ONE_FINISHED || status == LITEORDER_STATUS.CLOSED;
} }
public void setTaskReelCount(int taskReelCount) { public void setTaskReelCount(int taskReelCount) {
if(taskReelCount < 0) taskReelCount = 0; if(taskReelCount < 0) {
taskReelCount = 0;
}
this.taskReelCount = taskReelCount; this.taskReelCount = taskReelCount;
} }
......
...@@ -585,7 +585,7 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -585,7 +585,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
//构造查询条件 //构造查询条件
Query query = new Query(); Query query = new Query();
Criteria criteria = Criteria.where("barcode").exists(true); Criteria criteria = Criteria.where("barcode").exists(true);
if(storageIds != null && storageIds.isEmpty()){ if(storageIds != null && !storageIds.isEmpty()){
criteria.and("storageId").in(storageIds); criteria.and("storageId").in(storageIds);
} }
if (reelIds != null && !reelIds.isEmpty()){ if (reelIds != null && !reelIds.isEmpty()){
......
...@@ -284,6 +284,12 @@ public class TaskService { ...@@ -284,6 +284,12 @@ public class TaskService {
return resultTasks; return resultTasks;
} }
public DataLog findFinishedPutInTask(String cid, String posName){
return findFinishedTask(cid,posName,true);
}
public DataLog findFinishedOutTask(String cid, String posName){
return findFinishedTask(cid,posName,false);
}
/** /**
* 根据料仓编号和库位获取已完成/取消的任务 * 根据料仓编号和库位获取已完成/取消的任务
* *
...@@ -291,13 +297,21 @@ public class TaskService { ...@@ -291,13 +297,21 @@ public class TaskService {
* @param posName * @param posName
* @return * @return
*/ */
public DataLog findFinishedTask(String cid, String posName) { private DataLog findFinishedTask(String cid, String posName, boolean putInTask) {
Collection<DataLog> areaFinishedTasks = getFinishedTasks(); Collection<DataLog> areaFinishedTasks = getFinishedTasks();
for (DataLog task : areaFinishedTasks) { for (DataLog task : areaFinishedTasks) {
if (task.getPosName().equals(posName) && task.getCid().equals(cid)) { if (task.getPosName().equals(posName) && task.getCid().equals(cid)) {
if(putInTask){
if(task.isPutInTask()){
return task;
}
}else{
if(task.isCheckOutTask()){
return task; return task;
} }
} }
}
}
return null; return null;
} }
...@@ -429,6 +443,7 @@ public class TaskService { ...@@ -429,6 +443,7 @@ public class TaskService {
} else { } else {
log.warn("出库无料仓位" + storage.getName() + "[" + posName + "]"); log.warn("出库无料仓位" + storage.getName() + "[" + posName + "]");
} }
statusBean.addData("hSerial",task.getSourceName());
statusBean.addPosInfo(task.getBarcode(), posName, plateW, plateH, isSingleOut); statusBean.addPosInfo(task.getBarcode(), posName, plateW, plateH, isSingleOut);
log.info("出库" + storage.getName() + "[" + posName + "]物料[" + task.getBarcode() + "]" + isSingleOut + "发送到客户端" + cid); log.info("出库" + storage.getName() + "[" + posName + "]物料[" + task.getBarcode() + "]" + isSingleOut + "发送到客户端" + cid);
} }
......
...@@ -194,6 +194,9 @@ public class NeotelController { ...@@ -194,6 +194,9 @@ public class NeotelController {
List<Map<String, Object>> results = Lists.newArrayList(); List<Map<String, Object>> results = Lists.newArrayList();
for (Storage storage : storageList) { for (Storage storage : storageList) {
StatusBean statusBean = DevicesStatusUtil.getStatusBean(storage.getCid()); StatusBean statusBean = DevicesStatusUtil.getStatusBean(storage.getCid());
if(statusBean == null){
statusBean = new StatusBean();
}
Map<String, BoxStatusBean> boxStatusMap = statusBean.getBoxStatus(); Map<String, BoxStatusBean> boxStatusMap = statusBean.getBoxStatus();
int status = -1; int status = -1;
if (boxStatusMap != null) { if (boxStatusMap != null) {
......
...@@ -44,9 +44,6 @@ public class TianTongController { ...@@ -44,9 +44,6 @@ public class TianTongController {
protected LiteOrderCache liteOrderCache; protected LiteOrderCache liteOrderCache;
@Autowired @Autowired
private DataCache dataCache;
@Autowired
private IStoragePosManager storagePosManager; private IStoragePosManager storagePosManager;
@Autowired @Autowired
...@@ -56,9 +53,9 @@ public class TianTongController { ...@@ -56,9 +53,9 @@ public class TianTongController {
@ApiOperation("创建需求单") @ApiOperation("创建需求单")
@RequestMapping("/outInfo") @RequestMapping("/outInfo")
@AnonymousAccess @AnonymousAccess
public ResultBean outInfo(@RequestBody List<Map<String, Object>> paramList) { public ResultBean outInfo(@RequestBody Map<String, Object> paramMap) {
log.info("{}收到数据为:{}", "创建需求单outInfo", JsonUtil.toJsonStr(paramList)); log.info("{}收到数据为:{}", "创建需求单outInfo", JsonUtil.toJsonStr(paramMap));
if (!paramList.isEmpty()) { if (!paramMap.isEmpty()) {
/** /**
* { * {
* "TASK_ID":"" * "TASK_ID":""
...@@ -83,7 +80,6 @@ public class TianTongController { ...@@ -83,7 +80,6 @@ public class TianTongController {
* } * }
* } * }
*/ */
for (Map<String, Object> paramMap : paramList) {
if (paramMap.get("TASK_ID") == null) { if (paramMap.get("TASK_ID") == null) {
return ResultBean.newErrorResult(1, "smfcore.valueCanotNull", "{0}不能为空", new String[]{"TASK_ID"}); return ResultBean.newErrorResult(1, "smfcore.valueCanotNull", "{0}不能为空", new String[]{"TASK_ID"});
} }
...@@ -135,7 +131,6 @@ public class TianTongController { ...@@ -135,7 +131,6 @@ public class TianTongController {
if(execute){ if(execute){
liteOrderCache.checkOutLiteOrder(liteOrder.getOrderNo(),false, singleOut); liteOrderCache.checkOutLiteOrder(liteOrder.getOrderNo(),false, singleOut);
} }
}
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
return ResultBean.newErrorResult(1, "smfcore.valueCanotNull", "需求单信息不能为空"); return ResultBean.newErrorResult(1, "smfcore.valueCanotNull", "需求单信息不能为空");
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!