Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
yf001217 2026-03-20 17:06:23 +08:00
commit bdfd9e8844
14 changed files with 481 additions and 202 deletions

View File

@ -220,31 +220,32 @@ public class ComponentOutboundController extends BaseController {
if (item.isQiTao()) { if (item.isQiTao()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getBatchs())) VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getBatchs()))
.throwMessage("齐套物料需要提供批次信息"); .throwMessage("齐套物料需要提供批次信息");
item.getBatchs() item.getBatchs().forEach(it -> {
.forEach(it -> { records.add(new OutMaterialScanRecord()
records.add(new OutMaterialScanRecord() .setSource(7)
.setSource(7) .setSourceId(packing.getId())
.setSourceId(packing.getId()) .setSourceItemId(outboundItem.getPackingItemId())
.setSourceItemId(outboundItem.getPackingItemId()) .setTicketId(outbound.getId())
.setTicketId(outbound.getId()) .setTicketItemId(outboundItem.getId())
.setTicketItemId(outboundItem.getId()) .setMaterialNo(outboundItem.getIdnrk())
.setMaterialNo(outboundItem.getIdnrk()) .setContent("")
.setContent("") .setBatchNo(it.getBatchNo())
.setBatchNo(it.getBatchNo()) .setSerialNo(it.getSerialNo())
.setSerialNo(it.getSerialNo()) .setUniqNo("")
.setUniqNo("") .setQiTao(true)
.setFactoryNo(packing.getFactoryNo()) .setFactoryNo(packing.getFactoryNo())
.setWarehouseNo(outboundItem.getLgort()) .setWarehouseNo(outboundItem.getLgort())
// .setUnit(item.getMeins()) // .setUnit(item.getMeins())
.setNum(it.getNum()) .setNum(it.getNum())
.setCreateBy(UserUtil.getUserName()) .setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now()) .setCreateTime(Instant.now())
); );
}); });
VUtil.trueThrowBusinessError(outboundItem.getOutQty() VUtil.trueThrowBusinessError(outboundItem.getOutQty()
.compareTo(records.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) != 0) .compareTo(records.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) != 0)
.throwMessage("物料" + outboundItem.getIdnrk() + "的领取数量不等于装箱数量"); .throwMessage("物料" + outboundItem.getIdnrk() + "的领取数量不等于装箱数量");
} else { }
if (item.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes())) VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes()))
.throwMessage("需要提供扫码信息"); .throwMessage("需要提供扫码信息");
if (CollectionUtil.isNotEmpty(item.getScanCodes())) { if (CollectionUtil.isNotEmpty(item.getScanCodes())) {
@ -284,28 +285,31 @@ public class ComponentOutboundController extends BaseController {
// .setLgpbe(outboundItem.getLgpbe()); // .setLgpbe(outboundItem.getLgpbe());
// outboundScanCodes.add(scanCodes); // outboundScanCodes.add(scanCodes);
WmsQrCodeMaster qrCodeContent = qrCodeMasterService.getByCode(code.getCodeId()); WmsQrCodeMaster qrCodeContent = qrCodeMasterService.getByCode(code.getCodeId());
records.add(new OutMaterialScanRecord() if (!item.isQiTao()) {
.setSource(7) records.add(new OutMaterialScanRecord()
.setSourceId(packing.getId()) .setSource(7)
.setSourceItemId(outboundItem.getPackingItemId()) .setSourceId(packing.getId())
.setTicketId(outbound.getId()) .setSourceItemId(outboundItem.getPackingItemId())
.setTicketItemId(outboundItem.getId()) .setTicketId(outbound.getId())
.setMaterialNo(outboundItem.getIdnrk()) .setTicketItemId(outboundItem.getId())
.setContent(qrCodeContent.getBarcodeCode()) .setMaterialNo(outboundItem.getIdnrk())
.setBatchNo(qrCodeContent.getBatchNo()) .setContent(qrCodeContent.getBarcodeCode())
.setSerialNo(qrCodeContent.getSerialNo()) .setBatchNo(qrCodeContent.getBatchNo())
.setUniqNo(code.getCodeId()) .setSerialNo(qrCodeContent.getSerialNo())
.setFactoryNo(qrCodeContent.getFactoryCode()) .setUniqNo(code.getCodeId())
.setWarehouseNo(qrCodeContent.getStorageLocation()) .setQiTao(false)
.setBinNo(qrCodeContent.getBinLocation()) .setFactoryNo(qrCodeContent.getFactoryCode())
.setWarehouseNo(qrCodeContent.getStorageLocation())
.setBinNo(qrCodeContent.getBinLocation())
// .setUnit(item.getMeins()) // .setUnit(item.getMeins())
.setNum(code.getCodeNum()) .setNum(code.getCodeNum())
.setCreateBy(UserUtil.getUserName()) .setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now()) .setCreateTime(Instant.now())
); );
}
//组装下库存信息 //组装下库存信息
setInventoryOutDTO(inventories, outboundItem.getIdnrk(), packing.getFactoryNo() setInventoryOutDTO(inventories, outboundItem.getIdnrk(), packing.getFactoryNo()
, qrCodeContent.getStorageLocation(), qrCodeContent.getBinLocation(),qrCodeContent.getBatchNo() , qrCodeContent.getStorageLocation(), qrCodeContent.getBinLocation(), qrCodeContent.getBatchNo()
, qrCodeContent.getSerialNo(), code.getCodeNum()); , qrCodeContent.getSerialNo(), code.getCodeNum());
} }
@ -405,11 +409,11 @@ public class ComponentOutboundController extends BaseController {
.setSerialNo(list.get(0).getSerialNo()) .setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo()) .setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo()) .setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream() .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() :qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst() .findFirst()
.get() .map(WmsQrCodeMaster::getBinLocation)
.getBinLocation() .orElse("")
) )
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList() ).toList()
@ -438,11 +442,11 @@ public class ComponentOutboundController extends BaseController {
.orElse(null); .orElse(null);
if (Objects.isNull(codeItem)) { if (Objects.isNull(codeItem)) {
scanCodesGroup.add(new ScanCodeQO() scanCodesGroup.add(new ScanCodeQO()
.setCodeId(record.getId()) .setCodeId(record.getId())
.setBatchNumber(record.getBatchNo()) .setBatchNumber(record.getBatchNo())
.setSerialNumbers(record.getSerialNo()) .setSerialNumbers(record.getSerialNo())
// .setCodeContent(record.getContent()) // .setCodeContent(record.getContent())
.setCodeNum(record.getNum()) .setCodeNum(record.getNum())
); );
} else { } else {
codeItem.setCodeNum(codeItem.getCodeNum().add(record.getNum())); codeItem.setCodeNum(codeItem.getCodeNum().add(record.getNum()));
@ -573,7 +577,7 @@ public class ComponentOutboundController extends BaseController {
组装库存信息 组装库存信息
*/ */
private void setInventoryOutDTO(List<InventoryOutDTO> inventories, String materialNo, private void setInventoryOutDTO(List<InventoryOutDTO> inventories, String materialNo,
String factoryNo, String warehouseNo,String binNo, String batchNumber, String serialNo, BigDecimal outQty String factoryNo, String warehouseNo, String binNo, String batchNumber, String serialNo, BigDecimal outQty
) { ) {
InventoryOutDTO inventory = inventories.stream() InventoryOutDTO inventory = inventories.stream()
.filter(it -> StrUtil.equals(it.getMaterialNo(), materialNo) .filter(it -> StrUtil.equals(it.getMaterialNo(), materialNo)

View File

@ -262,6 +262,7 @@ public class OutAssistanceController extends BaseController {
.setBatchNo(it.getBatchNo()) .setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo()) .setSerialNo(it.getSerialNo())
.setUniqNo("") .setUniqNo("")
.setQiTao(true)
.setFactoryNo(order.getWerks()) .setFactoryNo(order.getWerks())
.setWarehouseNo(order.getLgort1()) .setWarehouseNo(order.getLgort1())
.setUnit(item.getMeins()) .setUnit(item.getMeins())
@ -276,7 +277,8 @@ public class OutAssistanceController extends BaseController {
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制"); .throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制");
}); });
} else { }
if (qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes())) VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes()))
.throwMessage("需要提供扫码信息"); .throwMessage("需要提供扫码信息");
qitem.getQrCodes().forEach(qrCode -> { qitem.getQrCodes().forEach(qrCode -> {
@ -299,27 +301,30 @@ public class OutAssistanceController extends BaseController {
qrCodeMaster.setLastScanBy(UserUtil.getUserId()); qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName()); qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now()); qrCodeMaster.setLastScanTime(LocalDateTime.now());
records.add(new OutMaterialScanRecord() if (!qitem.isQiTao()) {
.setSource(3) records.add(new OutMaterialScanRecord()
.setSourceId(order.getId()) .setSource(3)
.setSourceItemId(item.getId()) .setSourceId(order.getId())
.setTicketId(ticket.getId()) .setSourceItemId(item.getId())
.setTicketItemId(pti.getId()) .setTicketId(ticket.getId())
.setMaterialNo(materialNo) .setTicketItemId(pti.getId())
.setContent(qrCodeMaster.getBarcodeCode()) .setMaterialNo(materialNo)
.setBatchNo(qrCodeMaster.getBatchNo()) .setContent(qrCodeMaster.getBarcodeCode())
.setSerialNo(qrCodeMaster.getSerialNo()) .setBatchNo(qrCodeMaster.getBatchNo())
.setUniqNo(qrCodeMaster.getBarcodeCode()) .setSerialNo(qrCodeMaster.getSerialNo())
.setFactoryNo(qrCodeMaster.getFactoryCode()) .setUniqNo(qrCodeMaster.getBarcodeCode())
.setWarehouseNo(qrCodeMaster.getStorageLocation()) .setFactoryNo(qrCodeMaster.getFactoryCode())
.setBinNo(qrCodeMaster.getBinLocation()) .setWarehouseNo(qrCodeMaster.getStorageLocation())
.setUnit(item.getMeins()) .setBinNo(qrCodeMaster.getBinLocation())
.setNum(qrCodeMaster.getQuantity()) .setUnit(item.getMeins())
.setEbeln(order.getEbeln()) .setQiTao(false)
.setEbelp(item.getEbelp()) .setNum(qrCodeMaster.getQuantity())
.setCreateBy(UserUtil.getUserName()) .setEbeln(order.getEbeln())
.setCreateTime(Instant.now()) .setEbelp(item.getEbelp())
); .setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
}); });
} }
}); });
@ -377,11 +382,11 @@ public class OutAssistanceController extends BaseController {
.setSerialNo(list.get(0).getSerialNo()) .setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo()) .setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo()) .setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream() .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst() .findFirst()
.get() .map(WmsQrCodeMaster::getBinLocation)
.getBinLocation() .orElse("")
) )
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList() ).toList()
@ -462,8 +467,7 @@ public class OutAssistanceController extends BaseController {
.eq(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState()) .eq(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
.in(WmsQrCodeMaster::getBarcodeCode, records.stream().map(OutMaterialScanRecord::getUniqNo).toList()) .in(WmsQrCodeMaster::getBarcodeCode, records.stream().map(OutMaterialScanRecord::getUniqNo).toList())
.list(); .list();
qrCodeMasters.stream() qrCodeMasters.forEach(p -> {
.forEach(p -> {
OutMaterialScanRecord record = records.stream() OutMaterialScanRecord record = records.stream()
.filter(r -> r.getUniqNo().equals(p.getBarcodeCode())) .filter(r -> r.getUniqNo().equals(p.getBarcodeCode()))
.findFirst() .findFirst()

View File

@ -259,6 +259,7 @@ public class OutCostCenterController extends BaseController {
.setBatchNo(it.getBatchNo()) .setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo()) .setSerialNo(it.getSerialNo())
.setUniqNo("") .setUniqNo("")
.setQiTao(true)
.setFactoryNo(order.getWerks()) .setFactoryNo(order.getWerks())
.setWarehouseNo(request.getLgort()) .setWarehouseNo(request.getLgort())
.setNum(it.getNum()) .setNum(it.getNum())
@ -270,7 +271,8 @@ public class OutCostCenterController extends BaseController {
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制"); .throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制");
}); });
} else { }
if (qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes())) VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes()))
.throwMessage("需要提供扫码信息"); .throwMessage("需要提供扫码信息");
qitem.getQrCodes().forEach(qrCode -> { qitem.getQrCodes().forEach(qrCode -> {
@ -293,24 +295,27 @@ public class OutCostCenterController extends BaseController {
qrCodeMaster.setLastScanBy(UserUtil.getUserId()); qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName()); qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now()); qrCodeMaster.setLastScanTime(LocalDateTime.now());
records.add(new OutMaterialScanRecord() if (!qitem.isQiTao()) {
.setSource(2) records.add(new OutMaterialScanRecord()
.setSourceId(order.getId()) .setSource(2)
.setSourceItemId(item.getId()) .setSourceId(order.getId())
.setTicketId(ticket.getId()) .setSourceItemId(item.getId())
.setTicketItemId(pti.getId()) .setTicketId(ticket.getId())
.setMaterialNo(materialNo) .setTicketItemId(pti.getId())
.setContent(qrCodeMaster.getBarcodeCode()) .setMaterialNo(materialNo)
.setBatchNo(qrCodeMaster.getBatchNo()) .setQiTao(false)
.setSerialNo(qrCodeMaster.getSerialNo()) .setContent(qrCodeMaster.getBarcodeCode())
.setUniqNo(qrCodeMaster.getBarcodeCode()) .setBatchNo(qrCodeMaster.getBatchNo())
.setFactoryNo(qrCodeMaster.getFactoryCode()) .setSerialNo(qrCodeMaster.getSerialNo())
.setWarehouseNo(qrCodeMaster.getStorageLocation()) .setUniqNo(qrCodeMaster.getBarcodeCode())
.setBinNo(qrCodeMaster.getBinLocation()) .setFactoryNo(qrCodeMaster.getFactoryCode())
.setNum(qrCodeMaster.getQuantity()) .setWarehouseNo(qrCodeMaster.getStorageLocation())
.setCreateBy(UserUtil.getUserName()) .setBinNo(qrCodeMaster.getBinLocation())
.setCreateTime(Instant.now()) .setNum(qrCodeMaster.getQuantity())
); .setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
}); });
} }
}); });
@ -339,7 +344,7 @@ public class OutCostCenterController extends BaseController {
} }
}); });
qrCodeMasterService.updateBarCode(qrCodeMasters); qrCodeMasterService.updateBarCode(qrCodeMasters);
submitSap(order, ticket, records, datas,qrCodeMasters); submitSap(order, ticket, records, datas, qrCodeMasters);
} else { } else {
inventoryForOutRepository.saveAll(request.getRecommendBatch() inventoryForOutRepository.saveAll(request.getRecommendBatch()
.stream() .stream()
@ -357,7 +362,7 @@ public class OutCostCenterController extends BaseController {
} }
private void submitSap(WmsOutCostcenter order, WmsOutCostcenterTicket ticket, List<OutMaterialScanRecord> records private void submitSap(WmsOutCostcenter order, WmsOutCostcenterTicket ticket, List<OutMaterialScanRecord> records
, List<WmsOutCostcenterItem> datas,List<WmsQrCodeMaster> qrCodeMasters) { , List<WmsOutCostcenterItem> datas, List<WmsQrCodeMaster> qrCodeMasters) {
inventoryService.out(records.stream() inventoryService.out(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey)) .collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
.values() .values()
@ -368,11 +373,11 @@ public class OutCostCenterController extends BaseController {
.setSerialNo(list.get(0).getSerialNo()) .setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo()) .setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo()) .setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream() .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst() .findFirst()
.get() .map(WmsQrCodeMaster::getBinLocation)
.getBinLocation() .orElse("")
) )
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList() ).toList()
@ -455,7 +460,7 @@ public class OutCostCenterController extends BaseController {
.list(); .list();
qrCodeMasters.stream() qrCodeMasters.stream()
.forEach(p -> { .forEach(p -> {
OutMaterialScanRecord record=records.stream() OutMaterialScanRecord record = records.stream()
.filter(r -> r.getUniqNo().equals(p.getBarcodeCode())) .filter(r -> r.getUniqNo().equals(p.getBarcodeCode()))
.findFirst() .findFirst()
.get(); .get();
@ -466,7 +471,7 @@ public class OutCostCenterController extends BaseController {
p.setLastScanBy(UserUtil.getUserId()); p.setLastScanBy(UserUtil.getUserId());
p.setLastScanByname(UserUtil.getUserName()); p.setLastScanByname(UserUtil.getUserName());
p.setLastScanTime(LocalDateTime.now()); p.setLastScanTime(LocalDateTime.now());
if (p.getPackagingType() == 1){ if (p.getPackagingType() == 1) {
List<WmsQrCodeMaster> children = qrCodeMasterService.lambdaQuery() List<WmsQrCodeMaster> children = qrCodeMasterService.lambdaQuery()
.eq(WmsQrCodeMaster::getParentBarcodeId, p.getId()) .eq(WmsQrCodeMaster::getParentBarcodeId, p.getId())
.list(); .list();
@ -485,7 +490,7 @@ public class OutCostCenterController extends BaseController {
} }
}); });
qrCodeMasterService.updateBarCode(qrCodeMasters); qrCodeMasterService.updateBarCode(qrCodeMasters);
submitSap(order, ticket, records, outCostcenterItemService.getList(order.getId()),qrCodeMasters); submitSap(order, ticket, records, outCostcenterItemService.getList(order.getId()), qrCodeMasters);
} else { } else {
List<OutCostcenterInfoItemVO> items = outCostcenterTicketItemService.getList(qo.getId()); List<OutCostcenterInfoItemVO> items = outCostcenterTicketItemService.getList(qo.getId());
items.forEach(it -> { items.forEach(it -> {

View File

@ -373,6 +373,7 @@ public class OutProduceController extends BaseController {
.setBatchNo(it.getBatchNo()) .setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo()) .setSerialNo(it.getSerialNo())
.setUniqNo("") .setUniqNo("")
.setQiTao(true)
.setFactoryNo(order.getDwerk()) .setFactoryNo(order.getDwerk())
.setWarehouseNo(ticket.getLgort()) .setWarehouseNo(ticket.getLgort())
.setUnit(item.getMeins()) .setUnit(item.getMeins())
@ -389,7 +390,8 @@ public class OutProduceController extends BaseController {
}); });
VUtil.trueThrowBusinessError(item.getNum().compareTo(item.getSqsl()) > 0) VUtil.trueThrowBusinessError(item.getNum().compareTo(item.getSqsl()) > 0)
.throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制"); .throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制");
} else { }
if (qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes())) VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes()))
.throwMessage("需要提供扫码信息"); .throwMessage("需要提供扫码信息");
qitem.getQrCodes().forEach(qrCode -> { qitem.getQrCodes().forEach(qrCode -> {
@ -415,26 +417,29 @@ public class OutProduceController extends BaseController {
qrCodeMaster.setLastScanBy(UserUtil.getUserId()); qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName()); qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now()); qrCodeMaster.setLastScanTime(LocalDateTime.now());
records.add(new OutMaterialScanRecord() if (!qitem.isQiTao()) {
.setSource(1) records.add(new OutMaterialScanRecord()
.setSourceId(order.getId()) .setSource(1)
.setSourceItemId(item.getId()) .setSourceId(order.getId())
.setTicketId(ticket.getId()) .setSourceItemId(item.getId())
.setTicketItemId(pti.getId()) .setTicketId(ticket.getId())
.setMaterialNo(materialNo) .setTicketItemId(pti.getId())
.setContent(qrCodeMaster.getBarcodeCode()) .setMaterialNo(materialNo)
.setBatchNo(qrCodeMaster.getBatchNo()) .setQiTao(false)
.setSerialNo(qrCodeMaster.getSerialNo()) .setContent(qrCodeMaster.getBarcodeCode())
.setUniqNo(qrCodeMaster.getBarcodeCode()) .setBatchNo(qrCodeMaster.getBatchNo())
.setFactoryNo(qrCodeMaster.getFactoryCode()) .setSerialNo(qrCodeMaster.getSerialNo())
.setWarehouseNo(qrCodeMaster.getStorageLocation()) .setUniqNo(qrCodeMaster.getBarcodeCode())
.setBinNo(qrCodeMaster.getBinLocation()) .setFactoryNo(qrCodeMaster.getFactoryCode())
.setUnit(item.getMeins()) .setWarehouseNo(qrCodeMaster.getStorageLocation())
.setRspos(item.getRspos()) .setBinNo(qrCodeMaster.getBinLocation())
.setNum(qrCodeMaster.getQuantity()) .setUnit(item.getMeins())
.setCreateBy(UserUtil.getUserName()) .setRspos(item.getRspos())
.setCreateTime(Instant.now()) .setNum(qrCodeMaster.getQuantity())
); .setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
}); });
} }
}); });
@ -463,7 +468,7 @@ public class OutProduceController extends BaseController {
} }
}); });
qrCodeMasterService.updateBarCode(qrCodeMasters); qrCodeMasterService.updateBarCode(qrCodeMasters);
submitSap(order, ticket, records, datas,qrCodeMasters); submitSap(order, ticket, records, datas, qrCodeMasters);
} else { } else {
inventoryForOutRepository.saveAll(request.getRecommendBatch() inventoryForOutRepository.saveAll(request.getRecommendBatch()
.stream() .stream()
@ -481,7 +486,7 @@ public class OutProduceController extends BaseController {
} }
private void submitSap(WmsOutProduce order, WmsOutProduceTicket ticket, List<OutMaterialScanRecord> records private void submitSap(WmsOutProduce order, WmsOutProduceTicket ticket, List<OutMaterialScanRecord> records
, List<WmsOutProduceItem> datas,List<WmsQrCodeMaster> qrCodeMasters) { , List<WmsOutProduceItem> datas, List<WmsQrCodeMaster> qrCodeMasters) {
inventoryService.out(records.stream() inventoryService.out(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey)) .collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
.values() .values()
@ -492,11 +497,11 @@ public class OutProduceController extends BaseController {
.setSerialNo(list.get(0).getSerialNo()) .setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo()) .setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo()) .setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream() .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst() .findFirst()
.get() .map(WmsQrCodeMaster::getBinLocation)
.getBinLocation() .orElse("")
) )
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList() ).toList()
@ -606,7 +611,7 @@ public class OutProduceController extends BaseController {
} }
}); });
qrCodeMasterService.updateBarCode(qrCodeMasters); qrCodeMasterService.updateBarCode(qrCodeMasters);
submitSap(order, ticket, records, outProduceItemService.getList(order.getId()),qrCodeMasters); submitSap(order, ticket, records, outProduceItemService.getList(order.getId()), qrCodeMasters);
} else { } else {
List<OutProduceInfoItemVO> items = outProduceTicketItemService.getList(qo.getId()); List<OutProduceInfoItemVO> items = outProduceTicketItemService.getList(qo.getId());
items.forEach(it -> { items.forEach(it -> {

View File

@ -283,8 +283,8 @@ public class OutPurchaseController extends BaseController {
.setBinLocation(qrCodeMasters.stream() .setBinLocation(qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst() .findFirst()
.get() .map(WmsQrCodeMaster::getBinLocation)
.getBinLocation() .orElse("")
) )
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList() ).toList()

View File

@ -2,12 +2,17 @@ package com.nflg.wms.admin.controller;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
import com.nflg.wms.admin.service.SapService; import com.nflg.wms.admin.service.SapService;
import com.nflg.wms.admin.util.PdfGeneratorUtil;
import com.nflg.wms.admin.util.QRCodeUtil;
import com.nflg.wms.admin.util.ThymeleafUtil;
import com.nflg.wms.common.constant.BarCodeProcessStage; import com.nflg.wms.common.constant.BarCodeProcessStage;
import com.nflg.wms.common.constant.UserType; import com.nflg.wms.common.constant.UserType;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
@ -22,20 +27,16 @@ import com.nflg.wms.repository.service.*;
import com.nflg.wms.starter.BaseController; import com.nflg.wms.starter.BaseController;
import com.nflg.wms.starter.annotation.ApiMark; import com.nflg.wms.starter.annotation.ApiMark;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -66,6 +67,9 @@ public class PurchaseReturnController extends BaseController {
@Resource @Resource
private IUserService userService; private IUserService userService;
@Resource
private IUserSupplierService userSupplierService;
/** /**
* 获取送货单的入库信息 * 获取送货单的入库信息
@ -452,4 +456,28 @@ public class PurchaseReturnController extends BaseController {
return ApiResult.success(qrCodeVO); return ApiResult.success(qrCodeVO);
} }
/**
* 导出采购退货申请单
*/
@GetMapping("exportTicket")
public void exportTicket(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
WmsReturnRequest order = returnRequestService.getById(id);
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("申请单不存在");
VUtil.trueThrowBusinessError(order.getApprovalStatus()!=1).throwMessage("申请单未审核通过");
UserSupplier supplier=userSupplierService.getByCode(order.getSupplierCode());
List<WmsReturnRequestItem> list = returnRequestItemService.lambdaQuery()
.eq(WmsReturnRequestItem::getApplicationId, id)
.list();
Map<String, String> base = new HashMap<>();
base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd"));
base.put("qrcode", QRCodeUtil.generateQRCodeBase64(order.getApplicationNo(), 100, 100));
base.put("supplier", supplier.getSupplierName());
Map<String, Object> variables = new HashMap<>();
variables.put("info", order);
variables.put("base", base);
variables.put("pages", PdfPageDTO.create(list, 11, new WmsReturnRequestItem()));
String html = ThymeleafUtil.generator("/template/", "采购退货申请单", ".html", variables);
PdfGeneratorUtil.generatePdf("采购入(退)库单" + order.getApplicationNo(), html, response);
}
} }

View File

@ -292,7 +292,9 @@ public class TransferCompanyController extends BaseController {
.setContent("") .setContent("")
.setBatchNo(it.getBatchNo()) .setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo()) .setSerialNo(it.getSerialNo())
.setBinNo(it.getBinNo())
.setUniqNo("") .setUniqNo("")
.setQiTao(true)
.setFactoryNo(order.getReswk()) .setFactoryNo(order.getReswk())
.setWarehouseNo(request.getLgort()) .setWarehouseNo(request.getLgort())
.setNum(it.getNum()) .setNum(it.getNum())
@ -307,7 +309,8 @@ public class TransferCompanyController extends BaseController {
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制"); .throwMessage("物料" + item.getMatnr() + "的领取数量超出申请限制");
}); });
} else { }
if (qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes())) VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes()))
.throwMessage("需要提供扫码信息"); .throwMessage("需要提供扫码信息");
qitem.getQrCodes().forEach(qrCode -> { qitem.getQrCodes().forEach(qrCode -> {
@ -329,28 +332,31 @@ public class TransferCompanyController extends BaseController {
qrCodeMaster.setLastScanBy(UserUtil.getUserId()); qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName()); qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now()); qrCodeMaster.setLastScanTime(LocalDateTime.now());
records.add(new OutMaterialScanRecord() if (!qitem.isQiTao()) {
.setSource(5) records.add(new OutMaterialScanRecord()
.setSourceId(order.getId()) .setSource(5)
.setSourceItemId(item.getId()) .setSourceId(order.getId())
.setTicketId(ticket.getId()) .setSourceItemId(item.getId())
.setTicketItemId(pti.getId()) .setTicketId(ticket.getId())
.setMaterialNo(materialNo) .setTicketItemId(pti.getId())
.setUnit(item.getMeins()) .setMaterialNo(materialNo)
.setContent(qrCodeMaster.getBarcodeCode()) .setUnit(item.getMeins())
.setBatchNo(qrCodeMaster.getBatchNo()) .setQiTao(false)
.setSerialNo(qrCodeMaster.getSerialNo()) .setContent(qrCodeMaster.getBarcodeCode())
.setUniqNo(qrCodeMaster.getBarcodeCode()) .setBatchNo(qrCodeMaster.getBatchNo())
.setFactoryNo(qrCodeMaster.getFactoryCode()) .setSerialNo(qrCodeMaster.getSerialNo())
.setWarehouseNo(qrCodeMaster.getStorageLocation()) .setUniqNo(qrCodeMaster.getBarcodeCode())
.setBinNo(qrCodeMaster.getBinLocation()) .setFactoryNo(qrCodeMaster.getFactoryCode())
.setNum(qrCodeMaster.getQuantity()) .setWarehouseNo(qrCodeMaster.getStorageLocation())
.setEbelp(item.getEbelp()) .setBinNo(qrCodeMaster.getBinLocation())
.setEbeln(order.getEbeln()) .setNum(qrCodeMaster.getQuantity())
.setExt(item.getEbelp()) .setEbelp(item.getEbelp())
.setCreateBy(UserUtil.getUserName()) .setEbeln(order.getEbeln())
.setCreateTime(Instant.now()) .setExt(item.getEbelp())
); .setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
}); });
} }
}); });
@ -384,7 +390,7 @@ public class TransferCompanyController extends BaseController {
} }
}); });
qrCodeMasterService.updateBarCode(qrCodeMasters); qrCodeMasterService.updateBarCode(qrCodeMasters);
submitSap(order, ticket, records, datas, ticketItems,qrCodeMasters); submitSap(order, ticket, records, datas, ticketItems, qrCodeMasters);
} else { } else {
inventoryForOutRepository.saveAll(request.getRecommendBatch() inventoryForOutRepository.saveAll(request.getRecommendBatch()
.stream() .stream()
@ -402,7 +408,7 @@ public class TransferCompanyController extends BaseController {
} }
private void submitSap(WmsTransferCompany order, WmsTransferCompanyTicket ticket, List<OutMaterialScanRecord> records private void submitSap(WmsTransferCompany order, WmsTransferCompanyTicket ticket, List<OutMaterialScanRecord> records
, List<WmsTransferCompanyItem> datas, List<WmsTransferCompanyTicketItem> ticketItems,List<WmsQrCodeMaster> qrCodeMasters) { , List<WmsTransferCompanyItem> datas, List<WmsTransferCompanyTicketItem> ticketItems, List<WmsQrCodeMaster> qrCodeMasters) {
inventoryService.out(records.stream() inventoryService.out(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey)) .collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
.values() .values()
@ -413,11 +419,11 @@ public class TransferCompanyController extends BaseController {
.setSerialNo(list.get(0).getSerialNo()) .setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo()) .setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo()) .setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream() .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst() .findFirst()
.get() .map(WmsQrCodeMaster::getBinLocation)
.getBinLocation() .orElse("")
) )
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList() ).toList()
@ -484,14 +490,14 @@ public class TransferCompanyController extends BaseController {
) { ) {
if (qo.isPass()) { if (qo.isPass()) {
WmsTransferCompany order = transferCompanyService.getById(ticket.getOrderId()); WmsTransferCompany order = transferCompanyService.getById(ticket.getOrderId());
List<OutMaterialScanRecord> records =outMaterialScanRecordRespository.findByTicketId(ticket.getId()); List<OutMaterialScanRecord> records = outMaterialScanRecordRespository.findByTicketId(ticket.getId());
List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.lambdaQuery() List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.lambdaQuery()
.eq(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState()) .eq(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
.in(WmsQrCodeMaster::getBarcodeCode, records.stream().map(OutMaterialScanRecord::getUniqNo).toList()) .in(WmsQrCodeMaster::getBarcodeCode, records.stream().map(OutMaterialScanRecord::getUniqNo).toList())
.list(); .list();
qrCodeMasters.stream() qrCodeMasters.stream()
.forEach(p -> { .forEach(p -> {
OutMaterialScanRecord record=records.stream() OutMaterialScanRecord record = records.stream()
.filter(r -> r.getUniqNo().equals(p.getBarcodeCode())) .filter(r -> r.getUniqNo().equals(p.getBarcodeCode()))
.findFirst() .findFirst()
.get(); .get();
@ -502,7 +508,7 @@ public class TransferCompanyController extends BaseController {
p.setLastScanBy(UserUtil.getUserId()); p.setLastScanBy(UserUtil.getUserId());
p.setLastScanByname(UserUtil.getUserName()); p.setLastScanByname(UserUtil.getUserName());
p.setLastScanTime(LocalDateTime.now()); p.setLastScanTime(LocalDateTime.now());
if (p.getPackagingType() == 1){ if (p.getPackagingType() == 1) {
List<WmsQrCodeMaster> children = qrCodeMasterService.lambdaQuery() List<WmsQrCodeMaster> children = qrCodeMasterService.lambdaQuery()
.eq(WmsQrCodeMaster::getParentBarcodeId, p.getId()) .eq(WmsQrCodeMaster::getParentBarcodeId, p.getId())
.list(); .list();
@ -525,7 +531,7 @@ public class TransferCompanyController extends BaseController {
, records , records
, transferCompanyItemService.getList(order.getId()) , transferCompanyItemService.getList(order.getId())
, transferCompanyTicketItemService.lambdaQuery().eq(WmsTransferCompanyTicketItem::getTicketId, ticket.getId()).list() , transferCompanyTicketItemService.lambdaQuery().eq(WmsTransferCompanyTicketItem::getTicketId, ticket.getId()).list()
,qrCodeMasters , qrCodeMasters
); );
} else { } else {
List<TransferCompanyItemVO> items = transferCompanyTicketItemService.getList(qo.getId()); List<TransferCompanyItemVO> items = transferCompanyTicketItemService.getList(qo.getId());

View File

@ -275,7 +275,6 @@ public class TransferFactoryController extends BaseController {
.list(); .list();
qrCodeMasters.addAll(tempList); qrCodeMasters.addAll(tempList);
} }
request.getItems().forEach(qitem -> { request.getItems().forEach(qitem -> {
WmsTransferFactoryItem item = datas.stream().filter(d -> Objects.equals(d.getId(), qitem.getItemId())).findFirst().orElse(null); WmsTransferFactoryItem item = datas.stream().filter(d -> Objects.equals(d.getId(), qitem.getItemId())).findFirst().orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + qitem.getMaterialNo() + "不需要出库"); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + qitem.getMaterialNo() + "不需要出库");
@ -310,6 +309,7 @@ public class TransferFactoryController extends BaseController {
.setBatchNo(it.getBatchNo()) .setBatchNo(it.getBatchNo())
.setSerialNo(it.getSerialNo()) .setSerialNo(it.getSerialNo())
.setUniqNo("") .setUniqNo("")
.setQiTao(true)
.setFactoryNo(order.getWerks()) .setFactoryNo(order.getWerks())
.setWarehouseNo(request.getLgort()) .setWarehouseNo(request.getLgort())
.setNum(it.getNum()) .setNum(it.getNum())
@ -321,7 +321,8 @@ public class TransferFactoryController extends BaseController {
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + materialNo + "的领取数量超出申请限制"); .throwMessage("物料" + materialNo + "的领取数量超出申请限制");
}); });
} else { }
if (qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes())) VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getQrCodes()))
.throwMessage("需要提供扫码信息"); .throwMessage("需要提供扫码信息");
qitem.getQrCodes().forEach(qrCode -> { qitem.getQrCodes().forEach(qrCode -> {
@ -342,26 +343,29 @@ public class TransferFactoryController extends BaseController {
qrCodeMaster.setLastScanBy(UserUtil.getUserId()); qrCodeMaster.setLastScanBy(UserUtil.getUserId());
qrCodeMaster.setLastScanByname(UserUtil.getUserName()); qrCodeMaster.setLastScanByname(UserUtil.getUserName());
qrCodeMaster.setLastScanTime(LocalDateTime.now()); qrCodeMaster.setLastScanTime(LocalDateTime.now());
records.add(new OutMaterialScanRecord() if (!qitem.isQiTao()) {
.setSource(4) records.add(new OutMaterialScanRecord()
.setSourceId(order.getId()) .setSource(4)
.setSourceItemId(item.getId()) .setSourceId(order.getId())
.setTicketId(ticket.getId()) .setSourceItemId(item.getId())
.setTicketItemId(pti.getId()) .setTicketId(ticket.getId())
.setMaterialNo(materialNo) .setTicketItemId(pti.getId())
.setUnit(item.getMeins()) .setMaterialNo(materialNo)
.setRspos(item.getRspos()) .setUnit(item.getMeins())
.setContent(qrCodeMaster.getBarcodeCode()) .setQiTao(false)
.setBatchNo(qrCodeMaster.getBatchNo()) .setRspos(item.getRspos())
.setSerialNo(qrCodeMaster.getSerialNo()) .setContent(qrCodeMaster.getBarcodeCode())
.setUniqNo(qrCodeMaster.getBarcodeCode()) .setBatchNo(qrCodeMaster.getBatchNo())
.setFactoryNo(qrCodeMaster.getFactoryCode()) .setSerialNo(qrCodeMaster.getSerialNo())
.setWarehouseNo(qrCodeMaster.getStorageLocation()) .setUniqNo(qrCodeMaster.getBarcodeCode())
.setBinNo(qrCodeMaster.getBinLocation()) .setFactoryNo(qrCodeMaster.getFactoryCode())
.setNum(qrCodeMaster.getQuantity()) .setWarehouseNo(qrCodeMaster.getStorageLocation())
.setCreateBy(UserUtil.getUserName()) .setBinNo(qrCodeMaster.getBinLocation())
.setCreateTime(Instant.now()) .setNum(qrCodeMaster.getQuantity())
); .setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
}
}); });
} }
}); });
@ -405,11 +409,11 @@ public class TransferFactoryController extends BaseController {
.setSerialNo(list.get(0).getSerialNo()) .setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo()) .setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo()) .setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream() .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst() .findFirst()
.get() .map(WmsQrCodeMaster::getBinLocation)
.getBinLocation() .orElse("")
) )
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList() ).toList()
@ -457,7 +461,7 @@ public class TransferFactoryController extends BaseController {
.list(); .list();
qrCodeMasters.stream() qrCodeMasters.stream()
.forEach(p -> { .forEach(p -> {
OutMaterialScanRecord record=records.stream() OutMaterialScanRecord record = records.stream()
.filter(r -> r.getUniqNo().equals(p.getBarcodeCode())) .filter(r -> r.getUniqNo().equals(p.getBarcodeCode()))
.findFirst() .findFirst()
.get(); .get();
@ -468,7 +472,7 @@ public class TransferFactoryController extends BaseController {
p.setLastScanBy(UserUtil.getUserId()); p.setLastScanBy(UserUtil.getUserId());
p.setLastScanByname(UserUtil.getUserName()); p.setLastScanByname(UserUtil.getUserName());
p.setLastScanTime(LocalDateTime.now()); p.setLastScanTime(LocalDateTime.now());
if (p.getPackagingType() == 1){ if (p.getPackagingType() == 1) {
List<WmsQrCodeMaster> children = qrCodeMasterService.lambdaQuery() List<WmsQrCodeMaster> children = qrCodeMasterService.lambdaQuery()
.eq(WmsQrCodeMaster::getParentBarcodeId, p.getId()) .eq(WmsQrCodeMaster::getParentBarcodeId, p.getId())
.list(); .list();
@ -497,11 +501,11 @@ public class TransferFactoryController extends BaseController {
.setSerialNo(list.get(0).getSerialNo()) .setSerialNo(list.get(0).getSerialNo())
.setFactoryNo(list.get(0).getFactoryNo()) .setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo()) .setWarehouseNo(list.get(0).getWarehouseNo())
.setBinLocation(qrCodeMasters.stream() .setBinLocation(list.get(0).isQiTao() ? list.get(0).getBinNo() : qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo())) .filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst() .findFirst()
.get() .map(WmsQrCodeMaster::getBinLocation)
.getBinLocation() .orElse("")
) )
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList() ).toList()

View File

@ -107,7 +107,7 @@
} }
.package-logo { .package-logo {
width: 150px; width: 250px;
margin: 0 auto; margin: 0 auto;
margin-bottom: 20px; margin-bottom: 20px;
} }

View File

@ -0,0 +1,202 @@
<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>采购退货申请单</title>
<style>
@page {
size: A4 landscape; /* 横向 A4 */
margin: 10mm; /* 页边距 */
}
body {
font-family: SimSun, serif;
font-size: 12px;
margin: 10px;
}
.container {
max-width: 100%;
margin: 0 auto;
background-color: white;
padding: 10px;
border: 1px solid #ccc;
page-break-after: always;
}
.container:last-child {
page-break-after: auto;
}
.company-name {
text-align: center;
font-size: 18px;
margin: 10px 0;
}
.title {
text-align: center;
font-size: 25px;
font-weight: bold;
margin: 20px 0;
}
.info-item label {
display: inline-block;
width: 80px;
font-weight: bold;
}
.table-data {
clear: both;
margin: 5px 0;
}
.table-data table {
width: 100%;
border-collapse: collapse;
border: 1px solid #000;
}
.table-desc table {
width: 100%;
border: 0;
}
.table-desc td {
text-align: left;
border: 0;
}
th, td {
border: 1px solid #000;
padding: 5px;
text-align: center;
font-size: 12px;
}
th {
background-color: #f0f0f0;
font-weight: bold;
height: 20px;
}
td {
height: 15px;
}
.footer {
margin-top: 10px;
overflow: hidden;
}
.footer-item {
float: left;
width: 33%;
font-size: 12px;
text-align: center;
}
.footer-item label {
margin-right: 10px;
}
.filled-row {
background-color: #fff;
}
.package-logo {
width: 250px;
margin: 0 auto;
margin-bottom: 20px;
}
.package-logo img {
width: 100%;
}
.qrcode {
width: 100px;
position: absolute;
right: 0;
top: 0;
}
.qrcode img {
width: 100%;
}
.col-left {
text-align: left;
}
</style>
</head>
<body>
<div class="container" th:each="page,pageStat : ${pages}">
<div style="position:relative;">
<div class="package-logo" style="margin: 5px;position:absolute;"><img src="../img/logo1.png"/></div>
<div class="qrcode"><img th:src="${base.qrcode}" src="../img/qrcode.png"/></div>
<div>
<div class="company-name">福建南方路面机械股份有限公司</div>
<div class="title">采购入(退)库单</div>
</div>
</div>
<div class="table-desc">
<table>
<tr>
<td style="width: 30%;">采购订单号:<span th:text="${info.poNum}"></span></td>
<td style="text-align: center">过账日期:<span th:text="${base.date}"></span></td>
<td style="width: 25%;">页码:<span th:text="${pageStat.count}">1</span>/<span
th:text="${pageStat.size}">1</span></td>
</tr>
<tr>
<td colspan="2">&nbsp;&nbsp;商:<span th:text="${base.supplier}"></span></td>
<td>物料凭证号:<span></span></td>
</tr>
</table>
</div>
<div style="clear: both;"></div>
<div class="table-data">
<table>
<tr>
<td style="width: 30px">订单<br/>项次</td>
<td style="width: 70px">移动<br/>类型</td>
<td style="width: 70px">物料号</td>
<td>物料描述</td>
<td style="width: 30px">单位</td>
<td style="width: 50px">数量</td>
<td style="width: 60px">工厂</td>
<td style="width: 60px">仓库</td>
<td style="width: 50px">仓位</td>
</tr>
<tr class="filled-row" th:each="item,iterStat : ${page.datas}">
<td th:text="${iterStat.count}">1</td>
<td></td>
<td th:text="${item.materialCode}">物料号</td>
<td th:text="${item.materialDescription}" class="col-left">非金属联件和紧固件等 M6 DIN 982 不锈钢304</td>
<td th:text="${item.unit}">PC</td>
<td th:text="${item.requestQuantity}">10.00</td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</div>
<div class="footer">
<div class="footer-item">
<label>品质检验:</label>
</div>
<div class="footer-item">
<label>收料部门主管:</label>
</div>
<div class="footer-item">
<label>收料经办人:</label>
</div>
</div>
</div>
</body>
</html>

View File

@ -123,6 +123,11 @@ public class OutMaterialScanRecord {
*/ */
private String ext; private String ext;
/**
* 是否是齐套物料
*/
private boolean isQiTao = false;
/** /**
* 创建人 * 创建人
*/ */

View File

@ -35,6 +35,11 @@ public class ComponentOutboundItemInputQO {
@JsonProperty("isQiTao") @JsonProperty("isQiTao")
private boolean isQiTao; private boolean isQiTao;
/**
* 是否扫码子项
*/
private boolean useChildren = true;
/** /**
* 批次列表 * 批次列表
*/ */

View File

@ -3,6 +3,8 @@ package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.Data; import lombok.Data;
import java.util.Objects;
@Data @Data
public class InventoryInItemQRCodeQO { public class InventoryInItemQRCodeQO {
@ -16,4 +18,8 @@ public class InventoryInItemQRCodeQO {
* 储位编号 * 储位编号
*/ */
private String binNo; private String binNo;
public String getBinNo() {
return Objects.isNull(binNo) ? "" : binNo;
}
} }

View File

@ -30,6 +30,11 @@ public class OutProduceSubmitItemQO {
@JsonProperty("isQiTao") @JsonProperty("isQiTao")
private boolean isQiTao; private boolean isQiTao;
/**
* 是否扫码子项
*/
private boolean useChildren;
/** /**
* 批次列表 * 批次列表
*/ */