|
@@ -1,13 +1,10 @@
|
|
|
package com.ruoyi.ams.xuankuang.service;
|
|
|
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
|
|
|
-import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
|
|
|
import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService;
|
|
|
import com.ruoyi.ams.config.domain.dto.LotattDTO;
|
|
|
-import com.ruoyi.ams.inv.domain.InvLotLocId;
|
|
|
-import com.ruoyi.ams.inv.domain.form.InvLocIdSearchFrom;
|
|
|
-import com.ruoyi.ams.inv.domain.vo.InvLotLocIdLotattVO;
|
|
|
import com.ruoyi.ams.inv.mapper.InvLotLocIdMapper;
|
|
|
import com.ruoyi.ams.inv.service.IInvLotLocIdService;
|
|
|
import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
|
|
@@ -15,13 +12,9 @@ import com.ruoyi.ams.order.domain.WmsDocOrderHeader;
|
|
|
import com.ruoyi.ams.order.mapper.WmsDocOrderHeaderMapper;
|
|
|
import com.ruoyi.ams.order.service.IWmsDocOrderDetailsService;
|
|
|
import com.ruoyi.ams.order.service.IWmsDocOrderHeaderService;
|
|
|
-import com.ruoyi.ams.order.vo.StockOrderVO;
|
|
|
-import com.ruoyi.ams.task.domain.WcsTask;
|
|
|
-import com.ruoyi.ams.xuankuang.domain.form.BillTaskForm;
|
|
|
import com.ruoyi.ams.xuankuang.domain.form.OutTaskForm;
|
|
|
import com.ruoyi.ams.xuankuang.domain.vo.WcsResponseVo;
|
|
|
import com.ruoyi.base.constant.Constant;
|
|
|
-import com.ruoyi.base.domain.BaseLocationInfo;
|
|
|
import com.ruoyi.base.domain.BaseSku;
|
|
|
import com.ruoyi.base.domain.vo.BaseLocationLotattVO;
|
|
|
import com.ruoyi.base.service.IBaseLocationInfoService;
|
|
@@ -33,11 +26,13 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.Assert;
|
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
|
|
|
import static com.ruoyi.ams.xuankuang.service.BaseLocationInfoSubService.OUT_ZONES;
|
|
|
|
|
@@ -155,6 +150,7 @@ public class WmsDocOrderSubService {
|
|
|
dests.add(dest);
|
|
|
outTaskForm.setDests(dests);
|
|
|
}
|
|
|
+
|
|
|
WcsResponseVo wcsResponseVo = wmsToWcsApiService.wmsOutTask(outTaskForm);
|
|
|
if (!wcsResponseVo.isSuccess()) {
|
|
|
con = false;
|
|
@@ -165,7 +161,10 @@ public class WmsDocOrderSubService {
|
|
|
}
|
|
|
if (con == true) {
|
|
|
// 修改 明细行状态为10
|
|
|
- list.get(0).setLineStatus(Constant.ORDER_STS.STS10.getValue());
|
|
|
+ WmsDocOrderDetails wmsDocOrderDetail = list.get(0);
|
|
|
+ wmsDocOrderDetail.setLineStatus(Constant.ORDER_STS.STS10.getValue());
|
|
|
+ wmsDocOrderDetail.setQtyAllocated(wmsDocOrderDetail.getQtyOrderedEach());
|
|
|
+ wmsDocOrderDetail.setQtyAllocatedEach(wmsDocOrderDetail.getQtyOrderedEach());
|
|
|
iWmsDocOrderDetailsService.updateWmsDocOrderDetails(list.get(0));
|
|
|
// 修改 单头10
|
|
|
wmsDocOrderHeader.setRemark("");
|
|
@@ -182,45 +181,28 @@ public class WmsDocOrderSubService {
|
|
|
* @return
|
|
|
*/
|
|
|
public List<BaseLocationLotattVO> addConfirmAllocationAuto(String orderNo) {
|
|
|
- List<WmsDocOrderDetails> detailslist = null;
|
|
|
+
|
|
|
// 查询出库单头
|
|
|
WmsDocOrderHeader wmsDocOrderHeader = iWmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
|
|
|
- if (wmsDocOrderHeader != null) {
|
|
|
- if (wmsDocOrderHeader.getOrderStatus().equals(Constant.ORDER_STS.STS00.getValue())) {
|
|
|
- //根据出库单头查询出库单明细
|
|
|
- detailslist = iWmsDocOrderDetailsService.selectWmsDocOrderDetailsByOrderNo(orderNo);
|
|
|
- if (detailslist.size() == 0) {
|
|
|
- log.error("单据没有可匹配明细");
|
|
|
- }
|
|
|
- } else {
|
|
|
- log.error("只有新建单据才可分配");
|
|
|
- }
|
|
|
- } else {
|
|
|
- log.error("单号不存在");
|
|
|
- }
|
|
|
+ Assert.isTrue(ObjectUtil.isNotNull(wmsDocOrderHeader),"单号不存在");
|
|
|
+ Assert.isTrue(StringUtils.equals(wmsDocOrderHeader.getOrderStatus(), Constant.ORDER_STS.STS00.getValue()),"只有新建单据才可分配");
|
|
|
+ List<WmsDocOrderDetails> detailslist = iWmsDocOrderDetailsService.selectWmsDocOrderDetailsByOrderNo(orderNo);
|
|
|
+ Assert.isTrue(CollectionUtil.isNotEmpty(detailslist),"单据没有可匹配明细");
|
|
|
|
|
|
- List<InvLotLocId> list = new ArrayList<>();
|
|
|
+ //TODO 镍盐项目中,一个出库单头对应的物料号明细只有一个sku,其他项目中若存在多个需要获取的是物料号编码列表;
|
|
|
+ //List<String> skuList = detailslist.stream().map(item -> item.getSku()).collect(Collectors.toList());
|
|
|
+ String sku = detailslist.get(0).getSku();
|
|
|
+ Assert.isTrue(StringUtils.isNotNull(sku),"存在无物料号的出库单");
|
|
|
+ List<BaseLocationLotattVO> baseLocationLotattVOS
|
|
|
+ = baseLocationInfoSubService.selectAllocatingInventoryAccordingConditionsOrderBy(OUT_ZONES, new LotattDTO(), sku, null);
|
|
|
+ Assert.isTrue(CollectionUtil.isNotEmpty(baseLocationLotattVOS),"仓库中无库存");
|
|
|
|
|
|
- String sku = null;
|
|
|
- LotattDTO lotattDTO = new LotattDTO();
|
|
|
- String orderBy = null;
|
|
|
- List<String> outZones = OUT_ZONES;
|
|
|
-
|
|
|
- //分配
|
|
|
- for (WmsDocOrderDetails o : detailslist) {
|
|
|
- sku = o.getSku();
|
|
|
- }
|
|
|
- List<BaseLocationLotattVO> baseLocationLotattVOS = baseLocationInfoSubService.selectAllocatingInventoryAccordingConditionsOrderBy(outZones, lotattDTO, sku, orderBy);
|
|
|
- if (baseLocationLotattVOS.size() == 0) {
|
|
|
- log.info("仓库中无库存");
|
|
|
- }
|
|
|
return baseLocationLotattVOS;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 筛选库存
|
|
|
*
|
|
|
- * @param baseLocationLotattVO
|
|
|
* @param orderNo
|
|
|
* @return
|
|
|
*/
|
|
@@ -249,7 +231,7 @@ public class WmsDocOrderSubService {
|
|
|
BigDecimal qtyAllocatedEach = wmsDocOrderDetails1.getQtyOrderedEach();
|
|
|
|
|
|
for (BaseLocationLotattVO baseLocationLotattVO1 : baseLocationLotattVOS2) {
|
|
|
- if (qtyAllocatedEach.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ if (qtyAllocatedEach.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
return baseLocationLotattVOS1;
|
|
|
}
|
|
|
//库存数量
|
|
@@ -260,10 +242,7 @@ public class WmsDocOrderSubService {
|
|
|
continue;
|
|
|
}
|
|
|
int i = qty.compareTo(qtyAllocatedEach);
|
|
|
- if (i == 0) {
|
|
|
- baseLocationLotattVOS1.add(baseLocationLotattVO1);
|
|
|
- return baseLocationLotattVOS1;
|
|
|
- } else if (i > 0) {
|
|
|
+ if (i >= 0) {
|
|
|
baseLocationLotattVOS1.add(baseLocationLotattVO1);
|
|
|
return baseLocationLotattVOS1;
|
|
|
} else if (i < 0) {
|
|
@@ -326,7 +305,6 @@ public class WmsDocOrderSubService {
|
|
|
/**
|
|
|
* 生成出库单方法
|
|
|
*
|
|
|
- * @param asnNo
|
|
|
* @return
|
|
|
*/
|
|
|
public String generateAnOutboundOrder(String sku, BigDecimal qty) {
|