|
@@ -285,12 +285,11 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
|
|
|
}
|
|
|
|
|
|
if (stockForm.getStockTag().equals("Y")) {
|
|
|
- if (orderQty.compareTo(BigDecimal.ZERO) != 1 || orderQty.compareTo(new BigDecimal(stockForm.getQty())) != 1) {
|
|
|
+ if (orderQty.compareTo(BigDecimal.ZERO) != 1 || orderQty.compareTo(new BigDecimal(stockForm.getQty())) == -1) {
|
|
|
return AjaxResult.error("接收数超出出货单需求数量");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
//判断成品条码
|
|
|
InvLotAtt queryAtt = new InvLotAtt();
|
|
|
queryAtt.setSku(stockForm.getSku());
|
|
@@ -315,10 +314,14 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
|
|
|
if (details.getExpectedQty().compareTo(details.getReceivedQty()) == 1) {
|
|
|
//当前入库单可以接收的数量
|
|
|
BigDecimal current = details.getExpectedQty().subtract(details.getReceivedQty());
|
|
|
+ BigDecimal asnCurrent = current;//当前需要扣减的数量
|
|
|
if (current.compareTo(BigDecimal.ZERO) != 1) {
|
|
|
//如果没有可以接收的数量那么直接跳过
|
|
|
continue;
|
|
|
}
|
|
|
+ if (totalQty.compareTo(current) != 1) { //如果入库数量<=订单数量
|
|
|
+ current = totalQty;
|
|
|
+ }
|
|
|
//判断提交的总数是否已经分配完了
|
|
|
if (totalQty.compareTo(BigDecimal.ZERO) == 1) {
|
|
|
String asnStatus;
|
|
@@ -339,6 +342,18 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
|
|
|
wmsDocAsnDetailsMapper.updateWmsDocAsnDetails(updateDetails);
|
|
|
}
|
|
|
|
|
|
+ //TODO 检查头单状态
|
|
|
+ /*WmsDocAsnDetails detailsQuery = new WmsDocAsnDetails();
|
|
|
+ detailsQuery.setAsnNo(details.getAsnNo());
|
|
|
+ List<WmsDocAsnDetails> detailsCheckList = wmsDocAsnDetailsMapper.selectWmsDocAsnDetailsList(detailsQuery);
|
|
|
+ for (WmsDocAsnDetails d : detailsCheckList) {
|
|
|
+
|
|
|
+ }*/
|
|
|
+ WmsDocAsnHeader headerUpdate = new WmsDocAsnHeader();
|
|
|
+ headerUpdate.setAsnNo(details.getAsnNo());
|
|
|
+ headerUpdate.setAsnStatus(asnStatus);
|
|
|
+ wmsDocAsnHeaderMapper.updateWmsDocAsnHeader(headerUpdate);
|
|
|
+
|
|
|
//生成库存
|
|
|
LotattDTO lotattDTO = new LotattDTO();
|
|
|
lotattDTO.setLotatt02(stockForm.getSkuSn());
|
|
@@ -355,19 +370,29 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
|
|
|
BigDecimal orderCurrent = current;//当前需要扣减的数量
|
|
|
for (WmsDocOrderDTO dto : odList) {
|
|
|
BigDecimal subQty;
|
|
|
+ String soStatus;
|
|
|
//如果当前订单需要的数量大于扣减数,那么就加上所有扣减数
|
|
|
if (dto.getQty().compareTo(orderCurrent) == 1) {
|
|
|
+ soStatus = "10";
|
|
|
subQty = orderCurrent;
|
|
|
- wmsDocOrderHeaderService.updateOrderDetailsStock(dto.getOrderNo(), dto.getOrderLineNo().longValue(), details.getSku(), orderCurrent.doubleValue());
|
|
|
+ wmsDocOrderHeaderService.updateOrderDetailsStock(dto.getOrderNo(), dto.getOrderLineNo().longValue(), details.getSku(), orderCurrent.doubleValue(), soStatus);
|
|
|
break;
|
|
|
} else {
|
|
|
//如果当前订单需求数量小于扣减数那么循环对下一个订单继续扣减
|
|
|
+ soStatus = "20";
|
|
|
subQty = dto.getQty();
|
|
|
orderCurrent = orderCurrent.subtract(dto.getQty());
|
|
|
- wmsDocOrderHeaderService.updateOrderDetailsStock(dto.getOrderNo(), dto.getOrderLineNo().longValue(), details.getSku(), dto.getQty().doubleValue());
|
|
|
+ wmsDocOrderHeaderService.updateOrderDetailsStock(dto.getOrderNo(), dto.getOrderLineNo().longValue(), details.getSku(), dto.getQty().doubleValue(), soStatus);
|
|
|
}
|
|
|
+
|
|
|
+ //TODO 修改头单状态
|
|
|
+ WmsDocOrderHeader odHeaderUpdate = new WmsDocOrderHeader();
|
|
|
+ odHeaderUpdate.setOrderNo(dto.getOrderNo());
|
|
|
+ odHeaderUpdate.setOrderStatus(soStatus);
|
|
|
+ wmsDocOrderHeaderService.updateWmsDocOrderHeader(odHeaderUpdate);
|
|
|
+
|
|
|
//记录分配明细(由于是初始化的库存所以只绑定到对应的托盘)
|
|
|
- ActAllocationDetails actAllocationDetails = new ActAllocationDetails();
|
|
|
+ /*ActAllocationDetails actAllocationDetails = new ActAllocationDetails();
|
|
|
actAllocationDetails.setAllocationId(SnowflakeIdWorker.generateId().toString());
|
|
|
actAllocationDetails.setLineNo(dto.getOrderLineNo());
|
|
|
actAllocationDetails.setOrderNo(dto.getOrderNo());
|
|
@@ -376,7 +401,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
|
|
|
actAllocationDetails.setStatus("00");
|
|
|
actAllocationDetails.setLotnum(lotnum);
|
|
|
actAllocationDetails.setUserdefine1(stockForm.getPalletNo());
|
|
|
- actAllocationDetailsService.insertActAllocationDetails(actAllocationDetails);
|
|
|
+ actAllocationDetailsService.insertActAllocationDetails(actAllocationDetails);*/
|
|
|
}
|
|
|
totalQty = totalQty.subtract(current);
|
|
|
} else {
|