Commit e8ed6c32 sunke

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

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