|
@@ -1,5 +1,7 @@
|
|
|
package com.ruoyi.ams.order.service.impl;
|
|
|
|
|
|
+import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
|
|
|
+import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
|
|
|
import com.ruoyi.ams.box.domain.WmsBoxInfo;
|
|
|
import com.ruoyi.ams.box.mapper.WmsBoxInfoMapper;
|
|
|
import com.ruoyi.ams.box.service.IWmsBoxInfoService;
|
|
@@ -20,6 +22,7 @@ import com.ruoyi.ams.inv.domain.vo.InvLotLocIdLotattVO;
|
|
|
import com.ruoyi.ams.inv.mapper.InvLotAttMapper;
|
|
|
import com.ruoyi.ams.inv.mapper.InvLotLocIdMapper;
|
|
|
import com.ruoyi.ams.inv.service.IActTransactionLogService;
|
|
|
+import com.ruoyi.ams.inv.service.IInvLotAttService;
|
|
|
import com.ruoyi.ams.inv.service.IInvLotLocIdService;
|
|
|
import com.ruoyi.ams.order.domain.ActAllocationDetails;
|
|
|
import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
|
|
@@ -96,6 +99,8 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
|
|
|
private IBaseLocationInfoService baseLocationInfoService;
|
|
|
@Autowired
|
|
|
private IErpBarcodesService erpBarcodesService;
|
|
|
+ @Autowired
|
|
|
+ private IInvLotAttService invLotAttService;
|
|
|
|
|
|
/**
|
|
|
* 查询出库单头
|
|
@@ -683,6 +688,8 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
|
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
|
@Override
|
|
|
public AjaxResult doCheckout(CheckOutInfoForm check) {
|
|
|
+ String orderNo = check.getOrderNo();
|
|
|
+ String palletNo = check.getPalletNo();
|
|
|
//生成任务呼叫到接驳位
|
|
|
BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(check.getLocationNo(), Constant.WAREHOUSE_ID);
|
|
|
FlowConfigHeaderVO flowConfigHeaderVO = flowConfigHeaderService.selectFlowConfigHeaderById(6L);
|
|
@@ -690,73 +697,16 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
|
|
|
agvCallDTO.setId(flowConfigHeaderVO.getId());
|
|
|
agvCallDTO.setLocationFrom(baseLocationInfo.getId().toString());
|
|
|
agvCallDTO.setLocationTo(null);
|
|
|
- agvCallDTO.setPalletNo(check.getPalletNo());
|
|
|
+ agvCallDTO.setPalletNo(palletNo);
|
|
|
agvCallDTO.setWarehouseId(Constant.WAREHOUSE_ID);
|
|
|
// 参数内容过长无法添加
|
|
|
agvCallDTO.setExtParam("");
|
|
|
+ agvCallDTO.setOrderNo(orderNo);
|
|
|
+ agvCallDTO.setTaskType(Constant.FLOW_ID_SO + "");
|
|
|
AjaxResult result = businessService.agvCall(flowConfigHeaderVO, agvCallDTO);
|
|
|
if ((int) result.get(AjaxResult.CODE_TAG) == 500) {
|
|
|
throw new ServiceException("任务生成失败:" + result.getMsg() + ",库位:" + baseLocationInfo.getLocationNo());
|
|
|
}
|
|
|
-
|
|
|
- // 将分配明细由分配完成改为任务生成
|
|
|
- ActAllocationDetails actAllocationDetails = new ActAllocationDetails();
|
|
|
- actAllocationDetails.setOrderNo(check.getOrderNo());
|
|
|
- actAllocationDetails.setLocationId(baseLocationInfo.getId());
|
|
|
- actAllocationDetails.setStatus(Constant.ORDER_STS.STS20.getValue());
|
|
|
- List<ActAllocationDetails> actAllocationDetailsList = actAllocationDetailsService.selectActAllocationDetailsList(actAllocationDetails);
|
|
|
- for (ActAllocationDetails allocationDetails : actAllocationDetailsList) {
|
|
|
- ActAllocationDetails allocationDetailsUpdate = new ActAllocationDetails();
|
|
|
- allocationDetailsUpdate.setAllocationId(allocationDetails.getAllocationId());
|
|
|
- allocationDetailsUpdate.setStatus(Constant.ORDER_STS.STS21.getValue());
|
|
|
- actAllocationDetailsService.updateActAllocationDetails(allocationDetailsUpdate);
|
|
|
- }
|
|
|
- // 库内理货 修改出库单为完成
|
|
|
- WmsDocOrderHeader header = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(check.getOrderNo());
|
|
|
- if (header != null && header.getOrderType().equals(Constant.ORDER_TYP.LH.getValue())) {
|
|
|
- WmsDocOrderHeader docOrderHeader = new WmsDocOrderHeader();
|
|
|
- docOrderHeader.setOrderNo(check.getOrderNo());
|
|
|
- docOrderHeader.setOrderStatus(Constant.ORDER_STS.STS99.getValue());
|
|
|
- wmsDocOrderHeaderMapper.updateWmsDocOrderHeader(docOrderHeader);
|
|
|
- // 明细
|
|
|
- List<WmsDocOrderDetails> wmsDocOrderDetailsList = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByOrderNo(header.getOrderNo());
|
|
|
- for (WmsDocOrderDetails d : wmsDocOrderDetailsList) {
|
|
|
- WmsDocOrderDetails wmsDocOrderDetails = new WmsDocOrderDetails();
|
|
|
- wmsDocOrderDetails.setOrderNo(d.getOrderNo());
|
|
|
- wmsDocOrderDetails.setOrderLineNo(d.getOrderLineNo());
|
|
|
- wmsDocOrderDetails.setLineStatus(Constant.ORDER_STS.STS99.getValue());
|
|
|
- wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(wmsDocOrderDetails);
|
|
|
- }
|
|
|
- // todo 分配明细为拣货完成
|
|
|
- }
|
|
|
- // 备货 修改出库单为备货状态
|
|
|
-// if (header != null && header.getOrderType().equals(Constant.ORDER_TYP.BH.getValue())) {
|
|
|
-// if (!header.getOrderStatus().equals(Constant.ORDER_STS.STS23)) {
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// // 是否已经生成分配明细
|
|
|
-// ActAllocationDetails allocationDetailsQuery = new ActAllocationDetails();
|
|
|
-// allocationDetailsQuery.setOrderNo(header.getOrderNo());
|
|
|
-// allocationDetailsQuery.setStatus(Constant.ORDER_STS.STS20.getValue());
|
|
|
-// List<ActAllocationDetails> allocationDetails = actAllocationDetailsService.selectActAllocationDetailsList(allocationDetailsQuery);
|
|
|
-// if (allocationDetails.size() > 1) {
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// WmsDocOrderHeader docOrderHeader = new WmsDocOrderHeader();
|
|
|
-// docOrderHeader.setOrderNo(check.getOrderNo());
|
|
|
-// docOrderHeader.setOrderStatus(Constant.ORDER_STS.STS99.getValue());
|
|
|
-// wmsDocOrderHeaderMapper.updateWmsDocOrderHeader(docOrderHeader);
|
|
|
-// // 明细
|
|
|
-// List<WmsDocOrderDetails> wmsDocOrderDetailsList = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByOrderNo(header.getOrderNo());
|
|
|
-// for (WmsDocOrderDetails d : wmsDocOrderDetailsList) {
|
|
|
-// WmsDocOrderDetails wmsDocOrderDetails = new WmsDocOrderDetails();
|
|
|
-// wmsDocOrderDetails.setOrderNo(d.getOrderNo());
|
|
|
-// wmsDocOrderDetails.setOrderLineNo(d.getOrderLineNo());
|
|
|
-// wmsDocOrderDetails.setLineStatus(Constant.ORDER_STS.STS99.getValue());
|
|
|
-// wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(wmsDocOrderDetails);
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
return AjaxResult.success("操作成功");
|
|
|
}
|
|
|
|
|
@@ -1332,4 +1282,112 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
|
|
|
}
|
|
|
return AjaxResult.success("出库-条码扫描记录表插入成功");
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AjaxResult modifyTheTallyStatusInTheWarehouse(String orderNo,Long locationId,String palletNo) {
|
|
|
+ WmsDocOrderHeader header = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
|
|
|
+ if (header != null && header.getOrderType().equals(Constant.ORDER_TYP.LH.getValue())) {
|
|
|
+ // 分配明细为拣货完成
|
|
|
+ ActAllocationDetailsFrom actAllocationQuery = new ActAllocationDetailsFrom();
|
|
|
+ actAllocationQuery.setOrderNo(orderNo);
|
|
|
+ actAllocationQuery.setLocationId(locationId);
|
|
|
+ actAllocationQuery.setLotatt07(palletNo);
|
|
|
+ actAllocationQuery.setStatus(Constant.ORDER_STS.STS20.getValue());
|
|
|
+ List<ActAllocationDetailsFrom> actAllocationDetailsFromList = actAllocationDetailsService.selectActAllocationDetailsInvLotAttList(actAllocationQuery);
|
|
|
+ for (ActAllocationDetailsFrom allocationDetails : actAllocationDetailsFromList) {
|
|
|
+ ActAllocationDetails allocationDetailsUpdate = new ActAllocationDetails();
|
|
|
+ allocationDetailsUpdate.setAllocationId(allocationDetails.getAllocationId());
|
|
|
+ allocationDetailsUpdate.setStatus(Constant.ORDER_STS.STS30.getValue());
|
|
|
+ actAllocationDetailsService.updateActAllocationDetails(allocationDetailsUpdate);
|
|
|
+ // 出库单明细改为完成
|
|
|
+ WmsDocOrderDetails wmsDocOrderDetails = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByNoLineNo(allocationDetails.getOrderNo(), allocationDetails.getLineNo());
|
|
|
+ WmsDocOrderDetails wmsDocOrderDetailsUpdate = new WmsDocOrderDetails();
|
|
|
+ wmsDocOrderDetailsUpdate.setOrderNo(wmsDocOrderDetails.getOrderNo());
|
|
|
+ wmsDocOrderDetailsUpdate.setOrderLineNo(wmsDocOrderDetails.getOrderLineNo());
|
|
|
+ wmsDocOrderDetailsUpdate.setLineStatus(Constant.ORDER_STS.STS99.getValue());
|
|
|
+ wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(wmsDocOrderDetailsUpdate);
|
|
|
+ }
|
|
|
+ // 出库单头
|
|
|
+ String orderSts = Constant.ORDER_STS.STS99.getValue();
|
|
|
+ WmsDocOrderHeader wmsDocOrderHeader = new WmsDocOrderHeader();
|
|
|
+ wmsDocOrderHeader.setOrderNo(orderNo);
|
|
|
+ List<WmsDocOrderDetails> wmsDocOrderDetailsList = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByOrderNo(orderNo);
|
|
|
+ for (WmsDocOrderDetails details : wmsDocOrderDetailsList) {
|
|
|
+ if (!details.getLineStatus().equals(Constant.ORDER_STS.STS99.getValue())) {
|
|
|
+ orderSts = Constant.ORDER_STS.STS98.getValue();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ wmsDocOrderHeader.setOrderStatus(orderSts);
|
|
|
+ wmsDocOrderHeaderService.updateWmsDocOrderHeader(wmsDocOrderHeader);
|
|
|
+
|
|
|
+ }
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AjaxResult modifystockCompletionStatus(String palletNo) {
|
|
|
+ //获取库存当前的托盘位置
|
|
|
+ InvLotAtt lotAtt = new InvLotAtt();
|
|
|
+ lotAtt.setLotatt07(palletNo);
|
|
|
+ List<InvLotLocId> invLotLocIdList = invLotLocIdService.queryInvByInvLotatt(lotAtt);
|
|
|
+ for (InvLotLocId inv : invLotLocIdList) {
|
|
|
+
|
|
|
+ InvLotAtt invLotAtt = invLotAttService.selectInvLotAttByLotnum(inv.getLotnum());
|
|
|
+ invLotAtt.setLotatt12("Y");
|
|
|
+ invLotAttService.updateInvLotAtt(invLotAtt);
|
|
|
+ // 修改备货状态
|
|
|
+ if (StringUtils.isNotEmpty(invLotAtt.getLotatt14())) {
|
|
|
+ String orderNo = invLotAtt.getLotatt14();
|
|
|
+ WmsDocOrderHeader docOrderHeader = wmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
|
|
|
+ if (docOrderHeader == null || !docOrderHeader.getOrderType().equals(Constant.ORDER_TYP.BH.getValue())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String sku = inv.getSku();
|
|
|
+ BigDecimal qty = inv.getQty();
|
|
|
+ // 明细
|
|
|
+ List<WmsDocOrderDetails> wmsDocOrderDetails = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByOrderNo(orderNo);
|
|
|
+ for (WmsDocOrderDetails wmsDocOrderDetail : wmsDocOrderDetails) {
|
|
|
+ if (wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS10.getValue())
|
|
|
+ || wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS20.getValue())
|
|
|
+ || wmsDocOrderDetail.getLineStatus().equals(Constant.ORDER_STS.STS22.getValue())) {
|
|
|
+ if (sku.equals(wmsDocOrderDetail.getSku())) {
|
|
|
+ BigDecimal toQty = wmsDocOrderDetail.getQtyAllocated().subtract(wmsDocOrderDetail.getQtySoftAllocated());
|
|
|
+ WmsDocOrderDetails detailsUpdate = new WmsDocOrderDetails();
|
|
|
+ detailsUpdate.setOrderNo(wmsDocOrderDetail.getOrderNo());
|
|
|
+ detailsUpdate.setOrderLineNo(wmsDocOrderDetail.getOrderLineNo());
|
|
|
+ if (qty.compareTo(toQty) == 0) {
|
|
|
+ detailsUpdate.setQtySoftAllocated(wmsDocOrderDetail.getQtyAllocated());
|
|
|
+ detailsUpdate.setLineStatus(Constant.ORDER_STS.STS23.getValue());
|
|
|
+ } else if (qty.compareTo(toQty) == 1) {
|
|
|
+ qty = qty.subtract(toQty);
|
|
|
+ detailsUpdate.setQtySoftAllocated(wmsDocOrderDetail.getQtyAllocated());
|
|
|
+ detailsUpdate.setLineStatus(Constant.ORDER_STS.STS23.getValue());
|
|
|
+ } else {
|
|
|
+ detailsUpdate.setQtySoftAllocated(wmsDocOrderDetail.getQtySoftAllocated().add(qty));
|
|
|
+ detailsUpdate.setLineStatus(Constant.ORDER_STS.STS22.getValue());
|
|
|
+ }
|
|
|
+ wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(detailsUpdate);
|
|
|
+ //修改头单状态
|
|
|
+ String soStatus = Constant.ORDER_STS.STS23.getValue();
|
|
|
+ List<WmsDocOrderDetails> wmsDocOrderDetailsList = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByOrderNo(orderNo);
|
|
|
+ for (WmsDocOrderDetails d : wmsDocOrderDetailsList) {
|
|
|
+ if (!d.getLineStatus().equals(Constant.ORDER_STS.STS23.getValue())) {
|
|
|
+ soStatus = Constant.ORDER_STS.STS22.getValue();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ WmsDocOrderHeader headerUpdate = new WmsDocOrderHeader();
|
|
|
+ headerUpdate.setOrderNo(orderNo);
|
|
|
+ headerUpdate.setOrderStatus(soStatus);
|
|
|
+ headerUpdate.setUpdateTime(new Date());
|
|
|
+ wmsDocOrderHeaderMapper.updateWmsDocOrderHeader(headerUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
}
|