Commit 5dea1db8 zshaohui

手动出库 通知WMS

1 个父辈 8672a6ba
...@@ -10,6 +10,8 @@ import com.neotel.smfcore.common.utils.*; ...@@ -10,6 +10,8 @@ import com.neotel.smfcore.common.utils.*;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE; import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.language.util.MessageUtils; import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.order.LiteOrderCache; import com.neotel.smfcore.core.order.LiteOrderCache;
...@@ -28,6 +30,7 @@ import com.neotel.smfcore.core.storage.service.po.Storage; ...@@ -28,6 +30,7 @@ import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos; import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService; import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.LizhenApi;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.service.manager.IGroupManager; import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.po.Group; import com.neotel.smfcore.security.service.po.Group;
...@@ -86,6 +89,9 @@ public class MaterialController { ...@@ -86,6 +89,9 @@ public class MaterialController {
@Autowired @Autowired
private LiteOrderCache liteOrderCache; private LiteOrderCache liteOrderCache;
@Autowired
private LizhenApi lizhenApi;
@ApiOperation("导出库存列表") @ApiOperation("导出库存列表")
@GetMapping(value = "/inventory/download") @GetMapping(value = "/inventory/download")
@PreAuthorize("@el.check('tacticsOuput')") @PreAuthorize("@el.check('tacticsOuput')")
...@@ -359,30 +365,63 @@ public class MaterialController { ...@@ -359,30 +365,63 @@ public class MaterialController {
public ResultBean manualOut(@RequestBody Map<String, String> paramMap) { public ResultBean manualOut(@RequestBody Map<String, String> paramMap) {
String code = paramMap.get("barcode"); String code = paramMap.get("barcode");
log.info("手动出库,barcode为:"+code);
Barcode barcode = barcodeManager.findByBarcode(code); Barcode barcode = barcodeManager.findByBarcode(code);
StoragePos storagePos = storagePosManager.getByBarcode(code);
StoragePos storagePos = storagePosManager.getByBarcode(code);
Storage storage = null;
if (storagePos != null) { if (storagePos != null) {
if (!ObjectUtil.isEmpty(storagePos.getBarcode().getLockId())) { storage = dataCache.getStorageById(storagePos.getStorageId());
throw new ValidateException("smfcore.error.barcode.locked", "库位[{0}]已被锁定");
}
try {
if (barcode != null) {
String opUser = SecurityUtils.getCurrentUsername();
log.info(opUser + "清理库位[" + storagePos.getPosName() + "],条码[" + code + "]中的库存" + barcode.getBarcode());
taskService.addTaskToFinished(storagePos, null, opUser + "-manual");
} else { } else {
log.info("清理库位[" + storagePos.getPosName() + "],条码[" + code + "],库位条码为空"); storage = new Storage();
} storagePos = new StoragePos();
}
DataLog task = new DataLog(storage, barcode, storagePos);
task.setItemNo(1);
task.setPickingId("");
task.setType(OP.CHECKOUT);
task.setStatus(OP_STATUS.FINISHED.name());
task.setStorageId(storage.getId());
task.setPutInDate(barcode.getPutInDate());
task.setSingleOut(true);
task.setWarehouseCode(barcode.getWarehouseCode());
task.setDescribe(barcode.getDescribe());
task.setBatchInfo(barcode.getBatch());
task.setDateCode(barcode.getDateCode());
task.setProvider(barcode.getProvider());
task.setProviderNumber(barcode.getProviderNumber());
task.setKeeperCode(barcode.getKeeperCode());
task.setOperator(SecurityUtils.getLoginUsername() + "-手动出库");
String result = lizhenApi.towerIssue(task);
if (StringUtils.isNotEmpty(result)){
return ResultBean.newErrorResult(-1,"",task.getBarcode()+"调用接口,发料失败:"+result);
}
taskService.updateFinishedTask(task);
return ResultBean.newOkResult("smfcore.manualOut.ok", "手动出库成功", code); if (storagePos != null) {
} catch (Exception e) { if (StringUtils.isNotEmpty(storagePos.getPosName())) {
return ResultBean.newErrorResult(1,"smfcore.error", "出错{0}", new String[]{e.getMessage()}, true); log.info(barcode.getBarcode()+"存在库位中:"+storagePos.getPosName()+"开始清理库位信息");
} barcode.setUsed(true);
barcode.setUsedDate(new Date());
//仓位状态
barcode.setCheckOutDate(new Date(), task.getOperator());
barcode.setPosName("");
barcodeManager.save(barcode);
storagePos.setBarcode(null);
storagePos.setUsed(false);
storagePosManager.save(storagePos);
dataCache.updateInventory(storagePos, barcode);
} else { } else {
throw new ValidateException("smfcore.manualOut.notFound", "仓库中未找到料盘信息"); log.info(barcode.getBarcode()+"不在库位中,忽略");
} }
} }
return ResultBean.newOkResult("");
}
@ApiOperation("批量出库") @ApiOperation("批量出库")
......
...@@ -866,9 +866,15 @@ public class StoragePosController { ...@@ -866,9 +866,15 @@ public class StoragePosController {
dto.setHeight(codeBean.getReelHeight()); dto.setHeight(codeBean.getReelHeight());
dto.setPlateSize(codeBean.getReelWidth()); dto.setPlateSize(codeBean.getReelWidth());
if (codeBean.getBarcode() != null) { if (codeBean.getBarcode() != null) {
dto.setBarcode(codeBean.getBarcode().getBarcode()); String barcode = codeBean.getBarcode().getBarcode();
dto.setBarcode(barcode);
dto.setPartNumber(codeBean.getBarcode().getPartNumber()); dto.setPartNumber(codeBean.getBarcode().getPartNumber());
dto.setPosName(codeBean.getBarcode().getPosName()); String posName = codeBean.getBarcode().getPosName();
if (StringUtils.isNotEmpty(posName)){
dto.setPosName(posName);
} else {
dto.setPosName(barcode);
}
dto.setAmount(codeBean.getBarcode().getAmount()); dto.setAmount(codeBean.getBarcode().getAmount());
if (!ObjectUtil.isEmpty(codeBean.getBarcode().getLockId())) { if (!ObjectUtil.isEmpty(codeBean.getBarcode().getLockId())) {
......
...@@ -286,12 +286,12 @@ public class LizhenApi extends DefaultSmfApiListener { ...@@ -286,12 +286,12 @@ public class LizhenApi extends DefaultSmfApiListener {
if (task.isFinished()){ if (task.isFinished()){
Barcode barcode = barcodeManager.findByBarcode(task.getBarcode()); Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
log.info(barcode.getBarcode()+"是否通知过:"+barcode.isAskPutIn()); log.info(barcode.getBarcode()+"是否通知过:"+barcode.isAskPutIn());
if (!barcode.isAskPutIn()){ //if (!barcode.isAskPutIn()){
Storage storage = dataCache.getStorageById(task.getStorageId()); Storage storage = dataCache.getStorageById(task.getStorageId());
BackToWarehouse back = backToWarehouse(barcode.getWarehouseCode(), storage.getName(), barcode.getBarcode()); BackToWarehouse back = backToWarehouse(barcode.getWarehouseCode(), storage.getName(), barcode.getBarcode());
barcode.setLabelId(back.getLABEL_ID()); barcode.setLabelId(back.getLABEL_ID());
barcode.setAmount(back.getLABEL_QTY()); barcode.setAmount(back.getLABEL_QTY());
barcode.setAskPutIn(true); //barcode.setAskPutIn(true);
barcodeManager.save(barcode); barcodeManager.save(barcode);
StoragePos pos = storagePosManager.getByBarcode(barcode.getBarcode()); StoragePos pos = storagePosManager.getByBarcode(barcode.getBarcode());
...@@ -299,7 +299,7 @@ public class LizhenApi extends DefaultSmfApiListener { ...@@ -299,7 +299,7 @@ public class LizhenApi extends DefaultSmfApiListener {
pos.setBarcode(barcode); pos.setBarcode(barcode);
storagePosManager.save(pos); storagePosManager.save(pos);
} }
} //}
} }
} }
......
...@@ -880,7 +880,7 @@ public class InnerBoxRestController { ...@@ -880,7 +880,7 @@ public class InnerBoxRestController {
String resultStr = lizhenApi.towerIssue(opTask); String resultStr = lizhenApi.towerIssue(opTask);
if (StringUtils.isEmpty(resultStr)){ if (StringUtils.isEmpty(resultStr)){
if (barcode != null){ if (barcode != null){
barcode.setAskPutIn(false); //barcode.setAskPutIn(false);
barcodeManager.save(barcode); barcodeManager.save(barcode);
} }
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!