|
@@ -895,6 +895,58 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
|
|
return endCheckOutVOList;
|
|
return endCheckOutVOList;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public List<CheckOutVO> checkOutListBhGx(List<String> orderNoList) {
|
|
|
|
+ List<CheckOutVO> endCheckOutVOList = new ArrayList<>();
|
|
|
|
+ Set<String> locationSet = new HashSet<>();
|
|
|
|
+ for (String orderNo : orderNoList) {
|
|
|
|
+ WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
|
|
|
|
+ if (!wmsDocOrderHeader.getOrderType().equals(Constant.ORDER_TYP.BH.getValue())) {
|
|
|
|
+ log.error("出库单类型必须为备货!" + wmsDocOrderHeader.getSoReference1());
|
|
|
|
+ return endCheckOutVOList;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for (String orderNo : orderNoList) {
|
|
|
|
+ WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
|
|
|
|
+ Set<String> pallets = new HashSet<>();
|
|
|
|
+ InvLocIdSearchFrom invLocIdSearchFrom = new InvLocIdSearchFrom();
|
|
|
|
+ invLocIdSearchFrom.setLotatt14(orderNo);
|
|
|
|
+ List<InvLotLocIdLotattVO> invLotLocIdLotattVOList = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearchFrom);
|
|
|
|
+ for (InvLotLocIdLotattVO invLotLocIdLotattVO : invLotLocIdLotattVOList) {
|
|
|
|
+ pallets.add(invLotLocIdLotattVO.getLotatt07());
|
|
|
|
+ }
|
|
|
|
+ // 生成理货单的库存
|
|
|
|
+ List<InvLotLocIdLotattVO> endLocIdLotattVOList = new ArrayList<>();
|
|
|
|
+ for (String pallet : pallets) {
|
|
|
|
+ InvLocIdSearchFrom invLocIdSearch = new InvLocIdSearchFrom();
|
|
|
|
+ invLocIdSearchFrom.setLotatt07(pallet);
|
|
|
|
+ List<InvLotLocIdLotattVO> invLotLocIdLotattList = invLotLocIdService.selectInvLocIdLotattList(invLocIdSearch);
|
|
|
|
+ for (InvLotLocIdLotattVO v : invLotLocIdLotattList) {
|
|
|
|
+ // 库存数量和分配数量不相等 或者 库存绑定备货单位空 代表更新备货减少影响到的托盘
|
|
|
|
+ if (v.getQty().compareTo(v.getQtyallocated()) != 0 || StringUtils.isEmpty(v.getLotatt14())) {
|
|
|
|
+ // 出库托盘需要位空闲,有货状态并且托盘在仓储区
|
|
|
|
+ if (v.getStockStatus().equals(Constant.STOCK_STATUS.STOCK00.getValue())
|
|
|
|
+ && v.getIsEmpty().equals(Constant.IS_YES.N.name())
|
|
|
|
+ && v.getZoneId().equals(Constant.ZONE_TYPE.ZONE_INV.getValue().toString())) {
|
|
|
|
+ if (!locationSet.contains(v.getLocationNo())) {
|
|
|
|
+ CheckOutVO checkOutVO = new CheckOutVO();
|
|
|
|
+ checkOutVO.setOrderNo(wmsDocOrderHeader.getSoReference1());
|
|
|
|
+ checkOutVO.setLocationNo(v.getLocationNo());
|
|
|
|
+ checkOutVO.setPalletNo(v.getLotatt07());
|
|
|
|
+ endCheckOutVOList.add(checkOutVO);
|
|
|
|
+ locationSet.add(v.getLocationNo());
|
|
|
|
+ }
|
|
|
|
+ endLocIdLotattVOList.add(v);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 生成理货单
|
|
|
|
+ wmsDocOrderHeaderService.invTally(endLocIdLotattVOList, orderNo);
|
|
|
|
+ }
|
|
|
|
+ return endCheckOutVOList;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
@Override
|
|
@Override
|
|
public AjaxResult doCheckout(CheckOutInfoForm check) {
|
|
public AjaxResult doCheckout(CheckOutInfoForm check) {
|
|
@@ -1164,7 +1216,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
|
|
private int judgmentOfGroupPlateType(InvLotLocIdLotattVO locIdLotattVO) {
|
|
private int judgmentOfGroupPlateType(InvLotLocIdLotattVO locIdLotattVO) {
|
|
// 为空说明是备货出库,但是被更新备货流程改变了分配数
|
|
// 为空说明是备货出库,但是被更新备货流程改变了分配数
|
|
if (StringUtils.isEmpty(locIdLotattVO.getLotatt15())
|
|
if (StringUtils.isEmpty(locIdLotattVO.getLotatt15())
|
|
- &&StringUtils.isNotEmpty(locIdLotattVO.getLotatt14())) {
|
|
|
|
|
|
+ && StringUtils.isNotEmpty(locIdLotattVO.getLotatt14())) {
|
|
return 3;
|
|
return 3;
|
|
}
|
|
}
|
|
if (StringUtils.isEmpty(locIdLotattVO.getLotatt15())) {
|
|
if (StringUtils.isEmpty(locIdLotattVO.getLotatt15())) {
|
|
@@ -1491,7 +1543,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
|
|
// 满托不可理货
|
|
// 满托不可理货
|
|
if (StringUtils.isNotEmpty(locIdLotattVO.getIsFull())
|
|
if (StringUtils.isNotEmpty(locIdLotattVO.getIsFull())
|
|
&& locIdLotattVO.getIsFull().equals(Constant.IS_YES.Y.getValue())) {
|
|
&& locIdLotattVO.getIsFull().equals(Constant.IS_YES.Y.getValue())) {
|
|
- return AjaxResult.error("不可选择满托物料!库位号:" + locIdLotattVO.getLocationNo());
|
|
|
|
|
|
+// return AjaxResult.error("不可选择满托物料!库位号:" + locIdLotattVO.getLocationNo());
|
|
}
|
|
}
|
|
// 已经分配的库存不可理货
|
|
// 已经分配的库存不可理货
|
|
if (StringUtils.isNotEmpty(locIdLotattVO.getLotatt15())) {
|
|
if (StringUtils.isNotEmpty(locIdLotattVO.getLotatt15())) {
|
|
@@ -1549,6 +1601,46 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
|
|
return AjaxResult.success("操作成功");
|
|
return AjaxResult.success("操作成功");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public AjaxResult invTally(List<InvLotLocIdLotattVO> invLotLocIdLotattVOList, String orderNoBh) {
|
|
|
|
+ List<InvLotLocIdLotattVO> endInvList = new ArrayList<>(); //最终操作的库存
|
|
|
|
+ // 校验
|
|
|
|
+ for (InvLotLocIdLotattVO invLotLocIdLotattVO : invLotLocIdLotattVOList) {
|
|
|
|
+ endInvList.add(invLotLocIdLotattVO);
|
|
|
|
+ }
|
|
|
|
+ if (endInvList.size() == 0) {
|
|
|
|
+ return AjaxResult.error("可操作库存条数为0!");
|
|
|
|
+ }
|
|
|
|
+ // 判断之前是否已经生成
|
|
|
|
+ String orderNo = "";
|
|
|
|
+ WmsDocOrderHeader wmsDocOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByErpNo(orderNoBh);
|
|
|
|
+ if (wmsDocOrderHeader == null) {
|
|
|
|
+ //生成出库单
|
|
|
|
+ LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
|
+ orderNo = idSequenceUtils.generateId("ORDERNO");
|
|
|
|
+ WmsDocOrderHeader header = new WmsDocOrderHeader();
|
|
|
|
+ header.setCustomerId(Constant.CUSTOMER_ID);
|
|
|
|
+ header.setOrderType(Constant.ORDER_TYP.LH.getValue());
|
|
|
|
+ header.setOrderStatus(Constant.ORDER_STS.STS20.getValue());
|
|
|
|
+ header.setSoReference1(orderNoBh);
|
|
|
|
+ header.setCreateBy(loginUser.getUsername());
|
|
|
|
+ header.setCreateTime(new Date());
|
|
|
|
+ header.setRemark("PDA备货反拣货出库生成的库内理货单,此单据没有明细!");
|
|
|
|
+ int result = wmsDocOrderHeaderService.insertWmsDocOrderHeader(header, orderNo);
|
|
|
|
+ if (result <= 0) {
|
|
|
|
+ return AjaxResult.error("生成出库单头失败!");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ orderNo = wmsDocOrderHeader.getOrderNo();
|
|
|
|
+ }
|
|
|
|
+ for (InvLotLocIdLotattVO inv : endInvList) {
|
|
|
|
+ //库位对应所有库存lotatt15记录分配出库单号
|
|
|
|
+ invLotLocIdService.updateLotatt15ByLocationId(inv.getLocationId().toString(), orderNo);
|
|
|
|
+ }
|
|
|
|
+ return AjaxResult.success("操作成功");
|
|
|
|
+ }
|
|
|
|
+
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
public AjaxResult cancelOrder(WmsDocOrderHeader header) {
|
|
public AjaxResult cancelOrder(WmsDocOrderHeader header) {
|