feat(inventory): 重构入库功能并优化物料扫描处理
- 移除 NoUtil 和 MaterialQRCodeContentDTO 依赖 - 重命名 InCostcenterBackSubmitItemQO 等类名,统一命名规范 - 添加新的库存入库相关 QO 类 (InventoryInQO, InventoryInItemQO, InventoryInItemQRCodeQO) - 修复 WmsWarehouseService 注入和使用问题 - 更新提交接口参数验证和逻辑处理 - 优化二维码集合处理和物料扫描记录创建 - 添加储位禁用状态判断和设置功能 - 重构物料扫描记录分组逻辑,新增 getKey9 方法支持更精确的分组 - 统一更新多个控制器中的相关实现以保持一致性 - 修复批量更新二维码主数据的方法调用
This commit is contained in:
parent
e8116fe2dd
commit
fa4c26dc10
|
|
@ -9,7 +9,6 @@ import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
|
|||
import com.nflg.wms.admin.repository.InMaterialScanRecordRespository;
|
||||
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
|
||||
import com.nflg.wms.admin.service.SapService;
|
||||
import com.nflg.wms.admin.util.NoUtil;
|
||||
import com.nflg.wms.admin.util.PdfGeneratorUtil;
|
||||
import com.nflg.wms.admin.util.QRCodeUtil;
|
||||
import com.nflg.wms.admin.util.ThymeleafUtil;
|
||||
|
|
@ -20,7 +19,6 @@ import com.nflg.wms.common.pojo.document.InMaterialScanRecord;
|
|||
import com.nflg.wms.common.pojo.dto.C_MaterialReturnDTO;
|
||||
import com.nflg.wms.common.pojo.dto.DepartmentMaterialReturnSlipDTO;
|
||||
import com.nflg.wms.common.pojo.dto.InventoryInDTO;
|
||||
import com.nflg.wms.common.pojo.dto.MaterialQRCodeContentDTO;
|
||||
import com.nflg.wms.common.pojo.qo.*;
|
||||
import com.nflg.wms.common.pojo.vo.*;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
|
|
@ -81,8 +79,8 @@ public class InCostCenterBackController extends BaseController {
|
|||
@Resource
|
||||
private IWmsQrCodeMasterService qrCodeMasterService;
|
||||
|
||||
// @Resource
|
||||
// private IWmsWarehouseService
|
||||
@Resource
|
||||
private IWmsWarehouseService warehouseService;
|
||||
|
||||
/**
|
||||
* 查询SAP领料订单数据
|
||||
|
|
@ -186,7 +184,7 @@ public class InCostCenterBackController extends BaseController {
|
|||
vo.setLgort2(CollectionUtil.get(storageService.getWarehouseNo(order.getWerks(), item.getMatnr()), 0));
|
||||
}
|
||||
vo.setLgpbe(storageService.getBinNo(item.getMatnr(), order.getWerks(), vo.getLgort2()));
|
||||
// vo.setIsDisableLocation();
|
||||
vo.setIsDisableLocation(warehouseService.isEnableLocation(order.getWerks(), order.getLgort()));
|
||||
return vo;
|
||||
}).toList()
|
||||
)
|
||||
|
|
@ -198,80 +196,83 @@ public class InCostCenterBackController extends BaseController {
|
|||
*/
|
||||
@Transactional
|
||||
@PostMapping("pda/submit")
|
||||
public ApiResult<Void> submit(@Valid @RequestBody InCostcenterBackSubmitQO request) {
|
||||
WmsInCostcenterBack order = inCostcenterBackService.lambdaQuery().eq(WmsInCostcenterBack::getNo, request.getNo()).one();
|
||||
public ApiResult<Void> submit(@Valid @RequestBody InventoryInQO request) {//InCostCenterBackSubmitQO
|
||||
WmsInCostcenterBack order = inCostcenterBackService.getById(request.getId());
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
VUtil.trueThrowBusinessError(Objects.equals(order.getState(), 2)).throwMessage("该订单已完成");
|
||||
WmsInCostcenterBackTicket ticket = new WmsInCostcenterBackTicket()
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setNo(serialNumberControllerService.generateSerialNumber(11))
|
||||
.setOrderId(order.getId())
|
||||
.setLgort(request.getLgort())
|
||||
.setLgort(request.getWarehouseNo())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(LocalDateTime.now());
|
||||
List<WmsInCostcenterBackItem> datas = inCostcenterBackItemService.getList(order.getId());
|
||||
List<InMaterialScanRecord> records = new ArrayList<>();
|
||||
List<WmsInCostcenterBackTicketItem> ticketItems = new ArrayList<>();
|
||||
Set<String> allQrCodes = new HashSet<>();
|
||||
request.getItems().forEach(it -> {
|
||||
it.getItems().forEach(item -> {
|
||||
allQrCodes.addAll(item.getQrCodes());
|
||||
});
|
||||
});
|
||||
Set<String> allQrCodes = request.getItems().stream()
|
||||
.map(InventoryInItemQO::getQrCodes)
|
||||
.flatMap(Collection::stream)
|
||||
.map(InventoryInItemQRCodeQO::getQrCode)
|
||||
.collect(Collectors.toSet());
|
||||
List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.lambdaQuery()
|
||||
.ne(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
|
||||
.in(WmsQrCodeMaster::getBarcodeCode, allQrCodes)
|
||||
.list();
|
||||
request.getItems().forEach(it -> {
|
||||
WmsInCostcenterBackItem item = datas.stream().filter(d -> Objects.equals(it.getOrderItemId(), d.getId())).findFirst().orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项无效");
|
||||
WmsInCostcenterBackItem item = datas.stream()
|
||||
.filter(d -> Objects.equals(it.getItemId(), d.getId()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项无效:" + it.getItemId());
|
||||
WmsInCostcenterBackTicketItem ti = new WmsInCostcenterBackTicketItem()
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setTicketId(ticket.getId())
|
||||
.setOrderItemId(item.getId())
|
||||
.setLgpbe(StrUtil.join(",", it.getItems().stream().map(InCostcenterBackSubmitItemQRQO::getBinNo).toList()))
|
||||
.setLgpbe(StrUtil.join(",", it.getQrCodes().stream().map(InventoryInItemQRCodeQO::getBinNo).collect(Collectors.toSet())))
|
||||
.setNum(BigDecimal.ZERO);
|
||||
ticketItems.add(ti);
|
||||
it.getItems().forEach(iit -> {
|
||||
iit.getQrCodes().forEach(qrCode -> {
|
||||
WmsQrCodeMaster qrCodeContent = qrCodeMasterService.getByCode(qrCode);
|
||||
String materialNo = qrCodeContent.getMaterialCode();
|
||||
VUtil.trueThrowBusinessError(!StrUtil.equals(materialNo, item.getMatnr()))
|
||||
.throwMessage("订单项与物料不符");
|
||||
item.setLeft(item.getLeft().subtract(qrCodeContent.getQuantity()));
|
||||
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
|
||||
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
|
||||
ti.setNum(ti.getNum().add(qrCodeContent.getQuantity()));
|
||||
records.add(new InMaterialScanRecord()
|
||||
.setSource(2)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(item.getId())
|
||||
.setTicketItemId(ti.getId())
|
||||
.setMaterialNo(materialNo)
|
||||
.setContent(qrCode)
|
||||
.setBatchNo(qrCodeContent.getBatchNo())
|
||||
.setSerialNo(qrCodeContent.getSerialNo())
|
||||
.setFactoryNo(order.getWerks())
|
||||
.setWarehouseNo(request.getLgort())
|
||||
.setBinNo(iit.getBinNo())
|
||||
.setUniqNo(qrCodeContent.getBarcodeCode())
|
||||
.setNum(qrCodeContent.getQuantity())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream()
|
||||
.filter(q -> StrUtil.equals(q.getBarcodeCode(), qrCode))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("二维码" + qrCode + "无效");
|
||||
qrCodeMaster.setProcessStage(BarCodeProcessStage.InBound.getState());
|
||||
qrCodeMaster.setFactoryCode(order.getWerks());
|
||||
qrCodeMaster.setStorageLocation(request.getLgort());
|
||||
qrCodeMaster.setBinLocation(iit.getBinNo());
|
||||
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
|
||||
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
|
||||
qrCodeMaster.setLastScanTime(LocalDateTime.now());
|
||||
});
|
||||
it.getQrCodes().forEach(iit -> {
|
||||
WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream()
|
||||
.filter(q -> StrUtil.equals(q.getBarcodeCode(), iit.getQrCode()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效的二维码:"+iit.getQrCode());
|
||||
VUtil.trueThrowBusinessError(Objects.equals(qrCodeMaster.getProcessStage(),BarCodeProcessStage.InBound.getState()))
|
||||
.throwMessage("二维码" + iit.getQrCode() + "已入库");
|
||||
String materialNo = qrCodeMaster.getMaterialCode();
|
||||
VUtil.trueThrowBusinessError(!StrUtil.equals(materialNo, item.getMatnr()))
|
||||
.throwMessage("订单项与物料不符");
|
||||
VUtil.trueThrowBusinessError(iit.getNum().compareTo(qrCodeMaster.getQuantity())>0)
|
||||
.throwMessage("二维码" + iit.getQrCode() + "数量"+iit.getNum()+"不能大于实际数量"+qrCodeMaster.getQuantity());
|
||||
item.setLeft(item.getLeft().subtract(iit.getNum()));
|
||||
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
|
||||
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
|
||||
ti.setNum(ti.getNum().add(iit.getNum()));
|
||||
qrCodeMaster.setFactoryCode(order.getWerks());
|
||||
qrCodeMaster.setStorageLocation(request.getWarehouseNo());
|
||||
qrCodeMaster.setBinLocation(iit.getBinNo());
|
||||
qrCodeMaster.setProcessStage(BarCodeProcessStage.InBound.getState());
|
||||
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
|
||||
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
|
||||
qrCodeMaster.setLastScanTime(LocalDateTime.now());
|
||||
records.add(new InMaterialScanRecord()
|
||||
.setSource(2)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(item.getId())
|
||||
.setTicketItemId(ti.getId())
|
||||
.setMaterialNo(materialNo)
|
||||
.setContent(iit.getQrCode())
|
||||
.setBatchNo(qrCodeMaster.getBatchNo())
|
||||
.setSerialNo(qrCodeMaster.getSerialNo())
|
||||
.setFactoryNo(qrCodeMaster.getFactoryCode())
|
||||
.setWarehouseNo(qrCodeMaster.getStorageLocation())
|
||||
.setBinNo(qrCodeMaster.getBinLocation())
|
||||
.setUniqNo(qrCodeMaster.getBarcodeCode())
|
||||
.setNum(iit.getNum())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
});
|
||||
});
|
||||
inCostcenterBackItemService.updateBatchById(datas);
|
||||
|
|
@ -284,9 +285,9 @@ public class InCostCenterBackController extends BaseController {
|
|||
.set(WmsInCostcenterBack::getState, datas.stream().map(WmsInCostcenterBackItem::getLeft).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(BigDecimal.ZERO) > 0 ? 1 : 2)
|
||||
.eq(WmsInCostcenterBack::getId, order.getId())
|
||||
.update();
|
||||
qrCodeMasterService.updateBatchById(qrCodeMasters);
|
||||
qrCodeMasterService.updateBarCode(qrCodeMasters);
|
||||
inventoryService.in(records.stream()
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
|
||||
.values()
|
||||
.stream()
|
||||
.map(list -> new InventoryInDTO()
|
||||
|
|
@ -295,6 +296,7 @@ public class InCostCenterBackController extends BaseController {
|
|||
.setSerialNo(list.get(0).getSerialNo())
|
||||
.setFactoryNo(order.getWerks())
|
||||
.setWarehouseNo(order.getLgort())
|
||||
.setBinLocation(list.get(0).getBinNo())
|
||||
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||
).toList()
|
||||
);
|
||||
|
|
@ -307,7 +309,7 @@ public class InCostCenterBackController extends BaseController {
|
|||
.setResbRspos(item.getRspos())
|
||||
.setResbMatnr(item.getMatnr())
|
||||
.setMaktx(item.getMaktx())
|
||||
.setResbLgort(request.getLgort())
|
||||
.setResbLgort(request.getWarehouseNo())
|
||||
.setResbWerks(order.getWerks())
|
||||
.setResbMeins(item.getMeins())
|
||||
.setErfmg(its.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||
|
|
|
|||
|
|
@ -294,7 +294,7 @@ public class InProduceBackController extends BaseController {
|
|||
qrCodeMasterService.updateBatchById(qrCodeMasters);
|
||||
inProduceBackTicketItemService.saveBatch(ticketItems);
|
||||
inventoryService.in(records.stream()
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
|
||||
.values()
|
||||
.stream()
|
||||
.map(list -> new InventoryInDTO()
|
||||
|
|
@ -303,6 +303,7 @@ public class InProduceBackController extends BaseController {
|
|||
.setSerialNo(list.get(0).getSerialNo())
|
||||
.setFactoryNo(order.getDwerk())
|
||||
.setWarehouseNo(order.getLgort2())
|
||||
.setBinLocation(list.get(0).getBinNo())
|
||||
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||
).toList()
|
||||
);
|
||||
|
|
|
|||
|
|
@ -372,6 +372,7 @@ public class InProduceOrderController extends BaseController {
|
|||
child.setMustScan(false);
|
||||
}
|
||||
child.setBinNo(binService.getBinNo(child.getMaterialNo(), child.getFactoryNo(), child.getWarehouseNo()));
|
||||
child.setIsDisableLocation(warehouseService.isEnableLocation(child.getFactoryNo(), child.getWarehouseNo()));
|
||||
});
|
||||
datas.addAll(children);
|
||||
});
|
||||
|
|
@ -379,6 +380,7 @@ public class InProduceOrderController extends BaseController {
|
|||
} else {
|
||||
list.forEach(it -> {
|
||||
it.setBinNo(binService.getBinNo(it.getMaterialNo(), it.getFactoryNo(), it.getWarehouseNo()));
|
||||
it.setIsDisableLocation(warehouseService.isEnableLocation(it.getFactoryNo(), it.getWarehouseNo()));
|
||||
});
|
||||
return ApiResult.success(list);
|
||||
}
|
||||
|
|
@ -551,6 +553,7 @@ public class InProduceOrderController extends BaseController {
|
|||
.setWarehouseNo(it.getWarehouseNo())
|
||||
.setBatchNo(it.getBatchNo())
|
||||
.setSerialNo(it.getSernr())
|
||||
.setBinLocation(it.getBinNo())
|
||||
).toList()
|
||||
);
|
||||
if (CollectionUtil.isNotEmpty(warehouseNoChange)) {
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import com.nflg.wms.common.pojo.ApiResult;
|
|||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.document.InMaterialScanRecord;
|
||||
import com.nflg.wms.common.pojo.dto.InventoryInDTO;
|
||||
import com.nflg.wms.common.pojo.dto.MaterialQRCodeContentDTO;
|
||||
import com.nflg.wms.common.pojo.dto.QrCodeMasterPrintDTO;
|
||||
import com.nflg.wms.common.pojo.qo.*;
|
||||
import com.nflg.wms.common.pojo.vo.*;
|
||||
|
|
@ -84,6 +83,9 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
@Resource
|
||||
private IWmsQrCodeMasterService qrCodeMasterService;
|
||||
|
||||
@Resource
|
||||
private IWmsWarehouseService warehouseService;
|
||||
|
||||
/**
|
||||
* 从SAP查询订单信息
|
||||
*/
|
||||
|
|
@ -210,7 +212,9 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
.setMaktx2(item.getMaktx2())
|
||||
.setMatnr(item.getMatnr())
|
||||
.setMeins(item.getMeins())
|
||||
.setNum(item.getLeftNum()))
|
||||
.setNum(item.getLeftNum())
|
||||
.setIsDisableLocation(warehouseService.isEnableLocation(order.getDwerk(), order.getLgort2()))
|
||||
)
|
||||
.toList()
|
||||
)
|
||||
);
|
||||
|
|
@ -221,7 +225,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
*/
|
||||
@Transactional
|
||||
@PostMapping("pda/submit")
|
||||
public ApiResult<Void> submit(@Valid @RequestBody InCostcenterBackSubmitQO request) {
|
||||
public ApiResult<Void> submit(@Valid @RequestBody InCostCenterBackSubmitQO request) {
|
||||
WmsInProduceOrderSurplus order = inProduceOrderSurplusService.lambdaQuery().eq(WmsInProduceOrderSurplus::getNo, request.getNo()).one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
WmsInProduceOrderSurplusTicket ticket = new WmsInProduceOrderSurplusTicket()
|
||||
|
|
@ -241,7 +245,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setTicketId(ticket.getId())
|
||||
.setOrderItemId(item.getId())
|
||||
.setLgpbe(StrUtil.join(",", it.getItems().stream().map(InCostcenterBackSubmitItemQRQO::getBinNo).toList()))
|
||||
.setLgpbe(StrUtil.join(",", it.getItems().stream().map(InCostCenterBackSubmitItemQRQO::getBinNo).toList()))
|
||||
.setNum(BigDecimal.ZERO);
|
||||
ticketItems.add(ti);
|
||||
it.getItems().forEach(iit -> {
|
||||
|
|
@ -287,7 +291,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
.eq(WmsInProduceOrderSurplus::getId, order.getId())
|
||||
.update();
|
||||
inventoryService.in(records.stream()
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
|
||||
.values()
|
||||
.stream()
|
||||
.map(list -> new InventoryInDTO()
|
||||
|
|
@ -297,6 +301,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
.setSerialNo(list.get(0).getSerialNo())
|
||||
.setFactoryNo(order.getDwerk())
|
||||
.setWarehouseNo(ticket.getLgort())
|
||||
.setBinLocation(list.get(0).getBinNo())
|
||||
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||
).toList()
|
||||
);
|
||||
|
|
|
|||
|
|
@ -472,7 +472,7 @@ public class NormalPGIController extends BaseController {
|
|||
.setLastScanTime(LocalDateTime.now());
|
||||
qrCodeMasters.add(wmsQrCodeMaster);
|
||||
if (CollectionUtil.isNotEmpty(qo.getItems())) {
|
||||
InCostcenterBackSubmitItemQRQO qrqo = qo.getItems()
|
||||
InCostCenterBackSubmitItemQRQO qrqo = qo.getItems()
|
||||
.stream()
|
||||
.filter(iit -> iit.getQrCodes().contains(code.getCodeId()))
|
||||
.findFirst()
|
||||
|
|
@ -1256,7 +1256,7 @@ public class NormalPGIController extends BaseController {
|
|||
.setItems(
|
||||
new ArrayList<>() {
|
||||
{
|
||||
add(new InCostcenterBackSubmitItemQRQO()
|
||||
add(new InCostCenterBackSubmitItemQRQO()
|
||||
.setBinNo(item.getStorageLocation())
|
||||
.setQrCodes(
|
||||
qrCodeMasters.stream()
|
||||
|
|
|
|||
|
|
@ -516,7 +516,7 @@ public class TransferCompanyController extends BaseController {
|
|||
List<InMaterialScanRecord> records = new ArrayList<>();
|
||||
List<WmsQrCodeMaster> qrCodeMasters = new ArrayList<>();
|
||||
records1.forEach(record -> {
|
||||
InCostcenterBackSubmitItemQRQO qrqo = qo.getItems()
|
||||
InCostCenterBackSubmitItemQRQO qrqo = qo.getItems()
|
||||
.stream()
|
||||
.map(InSubmitItemQO::getItems)
|
||||
.flatMap(Collection::stream)
|
||||
|
|
@ -561,7 +561,7 @@ public class TransferCompanyController extends BaseController {
|
|||
.setBinNos1(
|
||||
StrUtil.join(",", q.getItems()
|
||||
.stream()
|
||||
.map(InCostcenterBackSubmitItemQRQO::getQrCodes)
|
||||
.map(InCostCenterBackSubmitItemQRQO::getQrCodes)
|
||||
.flatMap(Collection::stream)
|
||||
.toList()
|
||||
)
|
||||
|
|
@ -571,7 +571,7 @@ public class TransferCompanyController extends BaseController {
|
|||
transferCompanyTicketItemService.updateBatchById(ticketItems);
|
||||
}
|
||||
inventoryService.in(records.stream()
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
|
||||
.values()
|
||||
.stream()
|
||||
.map(list -> new InventoryInDTO()
|
||||
|
|
@ -580,6 +580,7 @@ public class TransferCompanyController extends BaseController {
|
|||
.setSerialNo(list.get(0).getSerialNo())
|
||||
.setFactoryNo(list.get(0).getFactoryNo())
|
||||
.setWarehouseNo(list.get(0).getWarehouseNo())
|
||||
.setBinLocation(list.get(0).getBinNo())
|
||||
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||
).toList()
|
||||
);
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import com.nflg.wms.admin.repository.InventoryForOutRepository;
|
|||
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
|
||||
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
|
||||
import com.nflg.wms.admin.service.SapService;
|
||||
import com.nflg.wms.admin.util.NoUtil;
|
||||
import com.nflg.wms.admin.util.PdfGeneratorUtil;
|
||||
import com.nflg.wms.admin.util.QRCodeUtil;
|
||||
import com.nflg.wms.admin.util.ThymeleafUtil;
|
||||
|
|
@ -509,7 +508,14 @@ public class TransferFactoryController extends BaseController {
|
|||
.setSerialNo(record.getSerialNo())
|
||||
.setFactoryNo(ticket.getWerks())
|
||||
.setWarehouseNo(qo.getLgort1())
|
||||
.setBinNo("")
|
||||
.setBinNo(qo.getItems().stream()
|
||||
.map(InSubmitItemQO::getItems)
|
||||
.flatMap(Collection::stream)
|
||||
.filter(q -> q.getQrCodes().contains(record.getUniqNo()))
|
||||
.findFirst()
|
||||
.map(InCostCenterBackSubmitItemQRQO::getBinNo)
|
||||
.orElse("")
|
||||
)
|
||||
.setUniqNo(record.getUniqNo())
|
||||
.setRspos(record.getRspos())
|
||||
.setNum(record.getNum())
|
||||
|
|
@ -531,7 +537,7 @@ public class TransferFactoryController extends BaseController {
|
|||
// .setBinNos1(it.getBinNos())
|
||||
// ).toList());
|
||||
inventoryService.in(records.stream()
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey9))
|
||||
.values()
|
||||
.stream()
|
||||
.map(list -> new InventoryInDTO()
|
||||
|
|
@ -540,6 +546,7 @@ public class TransferFactoryController extends BaseController {
|
|||
.setSerialNo(list.get(0).getSerialNo())
|
||||
.setFactoryNo(list.get(0).getFactoryNo())
|
||||
.setWarehouseNo(list.get(0).getWarehouseNo())
|
||||
.setBinLocation(list.get(0).getBinNo())
|
||||
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
|
||||
).toList()
|
||||
);
|
||||
|
|
|
|||
|
|
@ -170,4 +170,11 @@ public class InMaterialScanRecord {
|
|||
public String getKey8() {
|
||||
return batchNo + "|" + factoryNo + "|" + unit + "|" + warehouseNo;
|
||||
}
|
||||
|
||||
@Transient
|
||||
private String key9;
|
||||
|
||||
public String getKey9() {
|
||||
return this.materialNo + "|" + this.batchNo + "|" + this.getSerialNo() + "|" + this.factoryNo + "|" + this.warehouseNo + "|" + this.binNo;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
|
@ -9,7 +8,7 @@ import lombok.Data;
|
|||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class InCostcenterBackSubmitItemQO {
|
||||
public class InCostCenterBackSubmitItemQO {
|
||||
|
||||
/**
|
||||
* 订单项ID
|
||||
|
|
@ -22,5 +21,5 @@ public class InCostcenterBackSubmitItemQO {
|
|||
*/
|
||||
@Valid
|
||||
@NotEmpty
|
||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
||||
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ import java.util.List;
|
|||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class InCostcenterBackSubmitItemQRQO {
|
||||
public class InCostCenterBackSubmitItemQRQO {
|
||||
|
||||
/**
|
||||
* 实际入库储位编号列表
|
||||
|
|
@ -8,7 +8,7 @@ import lombok.Data;
|
|||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class InCostcenterBackSubmitQO {
|
||||
public class InCostCenterBackSubmitQO {
|
||||
|
||||
@NotBlank
|
||||
private String no;
|
||||
|
|
@ -24,5 +24,5 @@ public class InCostcenterBackSubmitQO {
|
|||
*/
|
||||
@Valid
|
||||
@NotEmpty
|
||||
private List<InCostcenterBackSubmitItemQO> items;
|
||||
private List<InCostCenterBackSubmitItemQO> items;
|
||||
}
|
||||
|
|
@ -24,5 +24,5 @@ public class InProduceBackSubmitQO {
|
|||
*/
|
||||
@Valid
|
||||
@NotEmpty
|
||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
||||
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.nflg.wms.common.pojo.qo;
|
|||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -26,5 +25,5 @@ public class InProduceOrderReceiveMaterialQO {
|
|||
* 二维码列表
|
||||
*/
|
||||
@Valid
|
||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
||||
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
|
|
@ -20,5 +19,5 @@ public class InSubmitItemQO {
|
|||
* 二维码列表
|
||||
*/
|
||||
@Valid
|
||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
||||
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class InventoryInItemQO {
|
||||
|
||||
/**
|
||||
* 项id
|
||||
*/
|
||||
@NotNull
|
||||
private Long itemId;
|
||||
|
||||
@Valid
|
||||
private List<InventoryInItemQRCodeQO> qrCodes;
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class InventoryInItemQRCodeQO {
|
||||
|
||||
/**
|
||||
* 二维码唯一码
|
||||
*/
|
||||
@NotBlank
|
||||
private String qrCode;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@NotNull
|
||||
private BigDecimal num;
|
||||
|
||||
/**
|
||||
* 储位编号
|
||||
*/
|
||||
private String binNo;
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class InventoryInQO {
|
||||
|
||||
/**
|
||||
* 单据id
|
||||
*/
|
||||
@NotNull
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 仓库编号
|
||||
*/
|
||||
@NotBlank
|
||||
private String warehouseNo;
|
||||
|
||||
/**
|
||||
* 订单项列表
|
||||
*/
|
||||
@Valid
|
||||
@NotEmpty
|
||||
private List<InventoryInItemQO> items;
|
||||
}
|
||||
|
|
@ -1,11 +1,9 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
|
|
@ -39,5 +37,5 @@ public class PoReceiveTaskItemConfirmQO {
|
|||
* 二维码列表
|
||||
*/
|
||||
@Valid
|
||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
||||
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,9 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
|
|
@ -56,5 +53,5 @@ public class QCReceiveTaskConfirmQO {
|
|||
* 二维码列表
|
||||
*/
|
||||
@Valid
|
||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
||||
private List<InCostCenterBackSubmitItemQRQO> items;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,4 +77,10 @@ public class InProduceOrderItemVO {
|
|||
* 是否必须扫码,如果为false的话可以不扫码
|
||||
*/
|
||||
private boolean mustScan = true;
|
||||
|
||||
/**
|
||||
* 是否启用储位管理,true为启用,false为不启用
|
||||
*/
|
||||
@JsonProperty("isDisableLocation")
|
||||
private Boolean isDisableLocation = true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue