Commit f1c56fda zshaohui

1如果有入库任务,不允许清空库位

2.出入库报表查询修改
3.出库时返回尺寸信息给客户端
4.更改任务状态,如果没有任务 就新创建一个任务
5.解除绑定料串目的地信息
1 个父辈 fb733c02
...@@ -199,7 +199,7 @@ public class BoxKanbanController { ...@@ -199,7 +199,7 @@ public class BoxKanbanController {
} }
if (blurryOk) break; if (blurryOk) break;
}catch (Exception ex){ }catch (Exception ex){
log.error(ex.toString()); //log.error(ex.toString());
} }
} }
if (blurryOk) break; if (blurryOk) break;
......
...@@ -225,6 +225,7 @@ public class StoragePosController { ...@@ -225,6 +225,7 @@ public class StoragePosController {
} }
} }
} }
// QisdaApi.ClearStockBy(storagePos.getPosName()); // QisdaApi.ClearStockBy(storagePos.getPosName());
Barcode barcode = storagePos.getBarcode(); Barcode barcode = storagePos.getBarcode();
if (barcode != null) { if (barcode != null) {
...@@ -232,6 +233,19 @@ public class StoragePosController { ...@@ -232,6 +233,19 @@ public class StoragePosController {
if (barcode == null){ if (barcode == null){
barcode = storagePos.getBarcode(); barcode = storagePos.getBarcode();
} }
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog dataLog : allTasks) {
if (dataLog.isPutInTask()){
if (!dataLog.isCancel() && !dataLog.isFinished()){
if (dataLog.getBarcode().equals(barcode.getBarcode()) || posName.equals(dataLog.getPosName())){
throw new ValidateException("", "库位:"+posName+"或者料箱:"+barcode.getBarcode()+"有正在执行的入库任务,不允许清空");
}
}
}
}
log.info("清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode()); log.info("清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode());
String opUser = SecurityUtils.getCurrentUsername(); String opUser = SecurityUtils.getCurrentUsername();
log.info(opUser + "清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode()); log.info(opUser + "清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode());
......
...@@ -82,6 +82,8 @@ public class DataLogManagerImpl implements IDataLogManager { ...@@ -82,6 +82,8 @@ public class DataLogManagerImpl implements IDataLogManager {
criteria.and("status").in(OP_STATUS.END.name(), OP_STATUS.FINISHED.name()); criteria.and("status").in(OP_STATUS.END.name(), OP_STATUS.FINISHED.name());
if (Strings.isNotBlank(partNumber)) { if (Strings.isNotBlank(partNumber)) {
criteria.and("partNumber").is(partNumber); criteria.and("partNumber").is(partNumber);
} else {
criteria.and("partNumber").nin("C07", "C15", "C13");
} }
if (-1 != extendType){ if (-1 != extendType){
criteria.and("extendType").is(extendType); criteria.and("extendType").is(extendType);
......
...@@ -720,6 +720,8 @@ public class CDeviceController { ...@@ -720,6 +720,8 @@ public class CDeviceController {
resultMap.put("seq",seq+""); resultMap.put("seq",seq+"");
resultMap.put("barcode",barcode.getBarcode()); resultMap.put("barcode",barcode.getBarcode());
resultMap.put("pickingId",orderNo); resultMap.put("pickingId",orderNo);
resultMap.put("platSize",barcode.getPlateSize()+"");
resultMap.put("height",barcode.getHeight()+"");
kafkaService.sendMachineParameterStackerAndBox(materialStr,currentLoc,0,boxBarcode.getBarcode(),barcode.getAmount(),4); kafkaService.sendMachineParameterStackerAndBox(materialStr,currentLoc,0,boxBarcode.getBarcode(),barcode.getAmount(),4);
......
...@@ -124,6 +124,8 @@ public class CtuDeviceController { ...@@ -124,6 +124,8 @@ public class CtuDeviceController {
|| TaskCurrentLoc.In_FeedingInlet.equals(dataLog.getLoc()) || TaskCurrentLoc.In_FeedingInlet.equals(dataLog.getLoc())
|| TaskCurrentLoc.In3_FeedingInlet.equals(dataLog.getLoc()) || TaskCurrentLoc.In3_FeedingInlet.equals(dataLog.getLoc())
|| TaskCurrentLoc.In4_FeedingInlet.equals(dataLog.getLoc()) || TaskCurrentLoc.In4_FeedingInlet.equals(dataLog.getLoc())
|| TaskCurrentLoc.In5_FeedingInlet.equals(dataLog.getLoc())
|| TaskCurrentLoc.In6_FeedingInlet.equals(dataLog.getLoc())
) { ) {
} else { } else {
...@@ -145,6 +147,13 @@ public class CtuDeviceController { ...@@ -145,6 +147,13 @@ public class CtuDeviceController {
if (Strings.isBlank(toLoc)) { if (Strings.isBlank(toLoc)) {
toLoc = TaskCurrentLoc.Out_FeedingInlet; toLoc = TaskCurrentLoc.Out_FeedingInlet;
} }
if (StringUtils.isNotEmpty(dataLog.getSourceName())){
if (dataLog.getBarcode().startsWith("C13") || dataLog.getBarcode().startsWith("C15")){
toLoc = TaskCurrentLoc.Manual_FeedingInlet;
}
}
ctuTask.setToLoc(toLoc); ctuTask.setToLoc(toLoc);
ctuTask.setCreateDate(dataLog.getCreateDate()); ctuTask.setCreateDate(dataLog.getCreateDate());
ctuTask.setPriority(dataLog.getPriority()); ctuTask.setPriority(dataLog.getPriority());
...@@ -219,16 +228,34 @@ public class CtuDeviceController { ...@@ -219,16 +228,34 @@ public class CtuDeviceController {
} }
} }
} }
//如果task不为空,并且type为1时,有出库任务,就给完成
if (task != null){
if ("1".equals(type)){
if (task.isCheckOutTask()){
if (!task.isOutFromPos()){
log.info("type为1是入库,当前料箱:"+task.getBarcode()+"任务为出库,完成出库任务");
BoxHandleUtil.outFromPos(task);
}
task.setStatus(OP_STATUS.FINISHED.name());
taskService.moveTaskToFinished(task);
taskService.updateFinishedTask(task);
task = null;
}
}
}
if (task == null) { if (task == null) {
if (StringUtils.isNotEmpty(type) && OP_STATUS.FINISHED.name().equals(statusStr)) { if (StringUtils.isNotEmpty(type) && OP_STATUS.FINISHED.name().equals(statusStr)) {
log.info(task.getBarcode() + "对应的任务不存在,任务类型为:" + type); log.info(boxStr + "对应的任务不存在,任务类型为:" + type);
StoragePos pos = storagePosManager.findOne(new Query(Criteria.where("barcode.barcode").is(task.getBarcode()))); StoragePos pos = storagePosManager.findOne(new Query(Criteria.where("barcode.barcode").is(boxStr)));
if (pos == null) { if (pos == null) {
return ResultBean.newErrorResult(-1, "", task.getBarcode() + "对应的库位不存在,请在库位管理里查看"); return ResultBean.newErrorResult(-1, "", boxStr + "对应的库位不存在,请在库位管理里查看");
} }
Barcode barcode = pos.getBarcode(); Barcode barcode = pos.getBarcode();
Storage storage = dataCache.getStorageById(pos.getStorageId()); Storage storage = dataCache.getStorageById(pos.getStorageId());
log.info(task.getBarcode() + "对应的库位为:" + pos.getPosName(), "是否在库:" + barcode.getStatus()); log.info(boxStr + "对应的库位为:" + pos.getPosName(), "是否在库:" + barcode.getStatus());
if ("1".equals(type)) { if ("1".equals(type)) {
if (barcode.getStatus() != BARCODE_STATUS.IN_STORE) { if (barcode.getStatus() != BARCODE_STATUS.IN_STORE) {
barcode.setStatus(BARCODE_STATUS.IN_STORE); barcode.setStatus(BARCODE_STATUS.IN_STORE);
...@@ -563,20 +590,7 @@ public class CtuDeviceController { ...@@ -563,20 +590,7 @@ public class CtuDeviceController {
log.info(barcode.getBarcode() + "料箱中有要出库的物料,跳过"); log.info(barcode.getBarcode() + "料箱中有要出库的物料,跳过");
continue; continue;
} }
//判断有没有任务
boolean boxHasTask = false;
for (DataLog task : allTasks) {
if (!task.isFinished() && !task.isCancel()) {
if (barcode.getBarcode().equals(task.getBarcode())) {
boxHasTask = true;
break;
}
}
}
if (boxHasTask) {
log.info(barcode.getBarcode() + "料箱有正在执行的任务,跳过");
continue;
}
//生成出库任务 //生成出库任务
String storageId = pos.getStorageId(); String storageId = pos.getStorageId();
Storage storage = dataCache.getStorageById(storageId); Storage storage = dataCache.getStorageById(storageId);
...@@ -585,16 +599,42 @@ public class CtuDeviceController { ...@@ -585,16 +599,42 @@ public class CtuDeviceController {
continue; continue;
} }
DataLog dataLog = new DataLog(storage, barcode, pos); //判断有没有任务
dataLog.setLoc(TaskCurrentLoc.In_FeedingInlet); DataLog boxTask = null;
dataLog.setType(OP.CHECKOUT); for (DataLog task : allTasks) {
dataLog.setCallEmptyBox(true); if (!task.isFinished() && !task.isCancel()) {
dataLog.setOperator("CTU呼叫到入料机构"); if (barcode.getBarcode().equals(task.getBarcode())) {
taskService.addTaskToExecute(dataLog); boxTask = task;
break;
}
}
}
Map<String, String> resultMap = new HashMap<>(); Map<String, String> resultMap = new HashMap<>();
if (boxTask != null) {
if (TaskCurrentLoc.In_FeedingInlet.equals(boxTask.getLoc())
||TaskCurrentLoc.In1_FeedingInlet.equals(boxTask.getLoc())
||TaskCurrentLoc.In2_FeedingInlet.equals(boxTask.getLoc())
||TaskCurrentLoc.In3_FeedingInlet.equals(boxTask.getLoc())
||TaskCurrentLoc.In4_FeedingInlet.equals(boxTask.getLoc())
||TaskCurrentLoc.In5_FeedingInlet.equals(boxTask.getLoc())
||TaskCurrentLoc.In6_FeedingInlet.equals(boxTask.getLoc())
){
log.info(barcode.getBarcode()+"有正在执行的出库任务,目的地为:"+boxTask.getLoc()+",库位号为:"+boxTask.getPosName());
} else {
log.info(barcode.getBarcode() + "料箱有正在执行的任务,跳过");
continue;
}
} else {
boxTask = new DataLog(storage, barcode, pos);
boxTask.setLoc(TaskCurrentLoc.In_FeedingInlet);
boxTask.setType(OP.CHECKOUT);
boxTask.setCallEmptyBox(true);
boxTask.setOperator("CTU呼叫到入料机构");
taskService.addTaskToExecute(boxTask);
}
resultMap.put("box", barcode.getBarcode()); resultMap.put("box", barcode.getBarcode());
resultMap.put("posName", pos.getPosName()); resultMap.put("posName", boxTask.getPosName());
resultList.add(resultMap); resultList.add(resultMap);
} }
} }
...@@ -658,17 +698,18 @@ public class CtuDeviceController { ...@@ -658,17 +698,18 @@ public class CtuDeviceController {
return ResultBean.newErrorResult(-1, "", "料箱信息不能为空"); return ResultBean.newErrorResult(-1, "", "料箱信息不能为空");
} }
List<Map<String, String>> resultList = new ArrayList<>(); List<Map<String, String>> resultList = new ArrayList<>();
for (String boxStr : boxList) {
Criteria c = Criteria.where("barcode.barcode").in(boxList); Barcode barcode = codeResolve.resolveOneValideBarcode(boxStr);
Query q = new Query(); if (barcode == null){
q.addCriteria(c); return ResultBean.newErrorResult(-1,"",boxStr+"不是有效的条码");
}
List<StoragePos> storagePosList = storagePosManager.findByQuery(q); StoragePos pos = BoxHandleUtil.locOnePos(barcode);
for (StoragePos pos : storagePosList) { if (pos == null){
Barcode barcode = pos.getBarcode(); return ResultBean.newErrorResult(-1,"",barcode.getBarcode()+"未找到对应的库位");
}
Map<String, String> resultMap = new HashMap<>(); Map<String, String> resultMap = new HashMap<>();
resultMap.put("posName", pos.getPosName()); resultMap.put("posName", pos.getPosName());
resultMap.put("box", barcode.getBarcode()); resultMap.put("box", boxStr);
resultList.add(resultMap); resultList.add(resultMap);
} }
return ResultBean.newOkResult(resultList); return ResultBean.newOkResult(resultList);
......
...@@ -233,7 +233,7 @@ public class GrPutInController { ...@@ -233,7 +233,7 @@ public class GrPutInController {
if (StringUtils.isEmpty(materialStr)) { if (StringUtils.isEmpty(materialStr)) {
return ResultBean.newErrorResult(-1, "", "料串信息不能为空"); return ResultBean.newErrorResult(-1, "", "料串信息不能为空");
} }
log.info("人工手动移除料串信息"); log.info("人工手动移除料串信息:"+materialStr);
Map<String, BindGrInfo> cacheMap = dataCache.getCache(CacheNameUtil.CACHE_BIND_GR); Map<String, BindGrInfo> cacheMap = dataCache.getCache(CacheNameUtil.CACHE_BIND_GR);
if (cacheMap == null) { if (cacheMap == null) {
cacheMap = new HashMap<>(); cacheMap = new HashMap<>();
......
...@@ -79,4 +79,13 @@ public class MaterialRestController { ...@@ -79,4 +79,13 @@ public class MaterialRestController {
MaterialLocUtil.updateStackerLoc(stackerCode,"", destination); MaterialLocUtil.updateStackerLoc(stackerCode,"", destination);
return ResultBean.newOkResult("绑定成功"); return ResultBean.newOkResult("绑定成功");
} }
@ApiOperation("移除料串信息")
@RequestMapping("/removeStackerInfo")
@AnonymousAccess
public ResultBean removeStackerInfo(String stacker){
MaterialLocUtil.removeStacker(stacker);
return ResultBean.newOkResult("");
}
} }
...@@ -24,6 +24,11 @@ public class MaterialLocUtil { ...@@ -24,6 +24,11 @@ public class MaterialLocUtil {
private static DataCache dataCache; private static DataCache dataCache;
public static void removeStacker(String stacker) {
stackerLocMap.remove(stacker);
dataCache.updateCache(CACHE_STACKER_LOC, stackerLocMap);
}
@PostConstruct @PostConstruct
public void init() { public void init() {
Map<String, MaterialLoc> cacheMap = dataCache.getCache(CACHE_STACKER_LOC); Map<String, MaterialLoc> cacheMap = dataCache.getCache(CACHE_STACKER_LOC);
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!