Commit 4b1661ef zshaohui

1.获取需要移动的库位是否有料

2.移动物料到另外一个库位
3.修改barcode数量
4.取消任务禁用库位
与客户通信
1 个父辈 6765600c
package com.neotel.smfcore.core.device.rest;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
......@@ -14,6 +15,7 @@ import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.api.SmfApi;
import com.neotel.smfcore.core.api.bean.CodeValidateParam;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.manager.IComponentManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.service.po.Component;
......@@ -69,6 +71,9 @@ public class DeviceController {
@Autowired
private IComponentManager componentManager;
@Autowired
private IBarcodeManager barcodeManager;
/**
* 权限验证API列表
*/
......@@ -660,4 +665,142 @@ public class DeviceController {
return ResultBean.newErrorResult(-1, "smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"commpont", code});
}
@ApiOperation("获取需要移动的库位是否有料")
@RequestMapping("/service/store/needMovePosHasReel")
@ResponseBody
@AnonymousAccess
public ResultBean needMovePosHasReel(@RequestBody Map<String, String> paramMap) {
String checkOutPosName = paramMap.get("checkOutPosName");
String needMovePosName = paramMap.get("needMovePosName");
log.info("出库的库位为:"+checkOutPosName+",需要移动的库位为:"+needMovePosName);
StoragePos checkOutPos = storagePosManager.getByPosName(checkOutPosName);
if (checkOutPos == null) {
return ResultBean.newErrorResult(-1, "smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"posName", checkOutPosName});
}
StoragePos needMovePos = storagePosManager.getByPosName(needMovePosName);
if (needMovePos == null) {
return ResultBean.newErrorResult(-1, "smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"posName", needMovePosName});
}
//如果barcode不为空,则提前锁定目标库位
boolean hasReel = true;
Barcode barcode = needMovePos.getBarcode();
if (barcode != null) {
Storage storage = dataCache.getStorageById(checkOutPos.getStorageId());
ReelLockPosInfo reelLocInfo = new ReelLockPosInfo();
reelLocInfo.setBarcode(barcode.getBarcode());
reelLocInfo.setCid(storage.getCid());
reelLocInfo.setLockPosName(checkOutPos.getPosName());
reelLocInfo.setLockPosId(checkOutPos.getId());
ReelLockPosUtil.addReelLockPosInfo(reelLocInfo, Arrays.asList(storage.getCid()));
log.info("提前锁定库位:" + checkOutPos.getPosName() + ",barcode为:" + barcode.getBarcode());
} else {
hasReel = false;
}
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("hasReel", hasReel);
if (hasReel){
resultMap.put("barcode", barcode.getBarcode());
resultMap.put("partNumber",barcode.getPartNumber());
}
return ResultBean.newOkResult(resultMap);
}
@ApiOperation("移动物料到另外一个库位")
@RequestMapping("/service/store/moveToOtherPos")
@ResponseBody
@AnonymousAccess
public ResultBean moveToOtherPos(@RequestBody Map<String, String> paramMap) {
String needMovePosName = paramMap.get("needMovePosName"); //需要移动的库位
String targetPosName = paramMap.get("targetPosName"); //目标库位
log.info("需要移动的库位为:" + needMovePosName + ",目标库位为:" + targetPosName);
//判断有没有物料
StoragePos needMovePos = storagePosManager.getByPosName(needMovePosName);
Barcode barcode = needMovePos.getBarcode();
if (barcode == null) {
return ResultBean.newErrorResult(-1, "smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{needMovePosName, "barcode"});
}
//生成一条出库任务
taskService.addTaskToFinished(needMovePos, barcode, "admin-move");
//判断目标库位是否存在
StoragePos targetPos = storagePosManager.getByPosName(targetPosName);
if (targetPos == null) {
return ResultBean.newErrorResult(-1, "smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"posName", targetPosName});
}
taskService.addTaskToFinished(targetPos, barcode, "admin-move");
ReelLockPosUtil.removeReelLockPosInfo(barcode.getBarcode());
return ResultBean.newOkResult("");
}
@ApiOperation("取消任务,禁用库位")
@RequestMapping(value = "/service/store/cancelAndDisable")
@ResponseBody
@AnonymousAccess
public ResultBean cancelAndDisable(HttpServletRequest request) {
String posName = request.getParameter("posName");
if (StringUtils.isNotBlank(posName)) {
DataLog task = null;
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog dataLog : allTasks) {
if (posName.equals(dataLog.getPosName()) && dataLog.isCheckOutTask() && !dataLog.isFinished()) {
task = dataLog;
break;
}
}
if (task != null) {
boolean result = taskService.cancelTask(task.getId());
if (result) {
StoragePos pos = storagePosManager.getByPosName(posName);
if (pos != null) {
pos.setEnabled(false);
storagePosManager.save(pos);
dataCache.updateDisablePos(pos);
log.info("任务[" + task.getId() + "] posName[" + task.getPosName() + "] Reel Id[" + task.getBarcode() + "]取消成功,禁用库位[" + task.getPosName() + "]");
DeviceMessageUtil.addEnabledPosMessage(pos, SecurityUtils.getCurrentUsername());
Storage storage = dataCache.getStorageById(pos.getStorageId());
if (storage != null) {
dataCache.reloadStorage(storage, "");
}
}
return ResultBean.newOkResult("");
}
} else {
return ResultBean.newErrorResult(1, "smfcore.task.notExist", "Task does not exist");
}
}
return ResultBean.newErrorResult(1, "smfcore.cancelOutTask.fail", "客户端取消入库任务[{0}]失败:{1}", new String[]{posName, ""});
}
@ApiOperation("修改barcode数量")
@RequestMapping("/service/store/updateAmount")
@ResponseBody
@AnonymousAccess
public ResultBean updateAmount(HttpServletRequest request) {
String barcodeStr = request.getParameter("barcode");
String amountStr = request.getParameter("amount");
log.info(barcodeStr + "修改数量为:" + amountStr);
//1.判断物料是否存在
Barcode barcode = barcodeManager.findByBarcode(barcodeStr);
if (barcode == null) {
return ResultBean.newErrorResult(-1, "smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"barcode", barcodeStr});
}
int amount = NumberUtil.parseInt(amountStr);
log.info(barcodeStr + "当前数量为:" + barcode.getAmount() + ",新的数量为:" + amount);
barcode.setAmount(amount);
barcodeManager.save(barcode);
return ResultBean.newOkResult(barcode);
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!