diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java index 556f6494..8ef3629f 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java @@ -231,7 +231,8 @@ public class InCostCenterBackController extends BaseController { ti.setNum(ti.getNum().add(qrCodeContent.getNum())); records.add(new InMaterialScanRecord() .setSource(2) - .setSourceId(item.getId()) + .setSourceId(order.getId()) + .setSourceItemId(item.getId()) .setTicketItemId(ti.getId()) .setMaterialNo(materialNo) .setContent(qrCode) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceBackController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceBackController.java index 7d12630a..53a06eb0 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceBackController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceBackController.java @@ -3,6 +3,7 @@ package com.nflg.wms.admin.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; @@ -231,7 +232,7 @@ public class InProduceBackController extends BaseController { */ @Transactional @PostMapping("pda/submit") - public ApiResult submit(@Valid @RequestBody OutProduceSubmitQO request) { + public ApiResult submit(@Valid @RequestBody InProduceBackSubmitQO request) { WmsInProduceBack order = inProduceBackService.lambdaQuery().eq(WmsInProduceBack::getNo, request.getNo()).one(); VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); WmsInProduceBackTicket ticket = new WmsInProduceBackTicket() @@ -262,6 +263,7 @@ public class InProduceBackController extends BaseController { .findFirst() .orElseGet(() -> { WmsInProduceBackTicketItem ti = new WmsInProduceBackTicketItem() + .setId(IdUtil.getSnowflakeNextId()) .setTicketId(ticket.getId()) .setProduceBackItemId(item.getId()) .setNum(BigDecimal.ZERO); @@ -275,7 +277,9 @@ public class InProduceBackController extends BaseController { pti.setNum(pti.getNum().add(qrCodeContent.getNum())); records.add(new InMaterialScanRecord() .setSource(1) - .setSourceId(item.getId()) + .setSourceId(order.getId()) + .setSourceItemId(item.getId()) + .setTicketItemId(pti.getId()) .setMaterialNo(materialNo) .setContent(qrCode) .setBatchNo(qrCodeContent.getBatchNo()) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java index acce04c4..cca50249 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java @@ -406,6 +406,7 @@ public class InProduceOrderController extends BaseController { records.add(new InMaterialScanRecord() .setSource(4) .setSourceId(order.getId()) + .setSourceItemId(it.getId()) .setTicketItemId(it.getId()) .setMaterialNo(it.getMaterialNo()) .setContent(qrCode) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java index 5dee93ef..3de88d9e 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java @@ -202,10 +202,13 @@ public class OutAssistanceController extends BaseController { List dtos = new ArrayList<>(); List ticketItems = new ArrayList<>(); request.getQrCodes().forEach(qrCode -> { - MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode); - dtos.add(qrCodeContent); + MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode.getContent()); + BigDecimal qrNum = qrCode.getNum(); String materialNo = qrCodeContent.getMaterialNo(); - WmsOutAssistanceItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr1(), materialNo)).findFirst().orElse(null); + VUtil.trueThrowBusinessError(qrCode.getNum().compareTo(qrCodeContent.getNum()) > 0) + .throwMessage("物料" + materialNo + "的数量不能大于二维码中的数量"); + dtos.add(qrCodeContent); + WmsOutAssistanceItem item = datas.stream().filter(d -> Objects.equals(d.getId(), qrCode.getItemId())).findFirst().orElse(null); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要领料"); WmsOutAssistanceTicketItem pti = ticketItems.stream() .filter(ti -> Objects.equals(ti.getOrderItemId(), item.getId()) @@ -222,25 +225,26 @@ public class OutAssistanceController extends BaseController { return ti; }); BigDecimal num = item.getLeft(); - VUtil.trueThrowBusinessError(num.compareTo(qrCodeContent.getNum()) < 0) + VUtil.trueThrowBusinessError(num.compareTo(qrNum) < 0) .throwMessage("物料" + materialNo + "的领取数量超出申请限制"); - item.setLeft(item.getLeft().subtract(qrCodeContent.getNum())); - pti.setNum(pti.getNum().add(qrCodeContent.getNum())); + item.setLeft(item.getLeft().subtract(qrNum)); + pti.setNum(pti.getNum().add(qrNum)); records.add(new OutMaterialScanRecord() - .setSource(3) -// .setSourceId(item.getId()) - .setTicketId(ticket.getId()) - .setTicketItemId(pti.getId()) - .setMaterialNo(materialNo) - .setContent(qrCode) - .setBatchNo(qrCodeContent.getBatchNo()) - .setSerialNo(qrCodeContent.getSerialNo()) - .setUniqNo(qrCodeContent.getUniqNo()) - .setFactoryNo(order.getWerks()) - .setWarehouseNo(order.getLgort1()) - .setNum(qrCodeContent.getNum()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) + .setSource(3) + .setSourceId(order.getId()) + .setSourceItemId(item.getId()) + .setTicketId(ticket.getId()) + .setTicketItemId(pti.getId()) + .setMaterialNo(materialNo) + .setContent(qrCode.getContent()) + .setBatchNo(qrCodeContent.getBatchNo()) + .setSerialNo(qrCodeContent.getSerialNo()) + .setUniqNo(qrCodeContent.getUniqNo()) + .setFactoryNo(order.getWerks()) + .setWarehouseNo(order.getLgort1()) + .setNum(qrNum) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) ); }); outAssistanceItemService.updateBatchById(datas); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java index 2312f7fb..4c8b6170 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java @@ -195,10 +195,13 @@ public class OutCostCenterController extends BaseController { List dtos = new ArrayList<>(); List ticketItems = new ArrayList<>(); request.getQrCodes().forEach(qrCode -> { - MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode); - dtos.add(qrCodeContent); + MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode.getContent()); + BigDecimal qrNum = qrCode.getNum(); String materialNo = qrCodeContent.getMaterialNo(); - WmsOutCostcenterItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), materialNo)).findFirst().orElse(null); + VUtil.trueThrowBusinessError(qrCode.getNum().compareTo(qrCodeContent.getNum()) > 0) + .throwMessage("物料" + materialNo + "的数量不能大于二维码中的数量"); + dtos.add(qrCodeContent); + WmsOutCostcenterItem item = datas.stream().filter(d -> Objects.equals(d.getId(), qrCode.getItemId())).findFirst().orElse(null); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要领料"); WmsOutCostcenterTicketItem pti = ticketItems.stream() .filter(ti -> Objects.equals(ti.getOrderItemId(), item.getId())) @@ -213,25 +216,26 @@ public class OutCostCenterController extends BaseController { return ti; }); BigDecimal num = item.getLeft(); - VUtil.trueThrowBusinessError(num.compareTo(qrCodeContent.getNum()) < 0) + VUtil.trueThrowBusinessError(num.compareTo(qrNum) < 0) .throwMessage("物料" + materialNo + "的领取数量超出申请限制"); - item.setLeft(item.getLeft().subtract(qrCodeContent.getNum())); - pti.setNum(pti.getNum().add(qrCodeContent.getNum())); + item.setLeft(item.getLeft().subtract(qrNum)); + pti.setNum(pti.getNum().add(qrNum)); records.add(new OutMaterialScanRecord() - .setSource(2) -// .setSourceId(item.getId()) - .setTicketId(ticket.getId()) - .setTicketItemId(pti.getId()) - .setMaterialNo(materialNo) - .setContent(qrCode) - .setBatchNo(qrCodeContent.getBatchNo()) - .setSerialNo(qrCodeContent.getSerialNo()) - .setUniqNo(qrCodeContent.getUniqNo()) - .setFactoryNo(order.getWerks()) - .setWarehouseNo(item.getLgort()) - .setNum(qrCodeContent.getNum()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) + .setSource(2) + .setSourceId(order.getId()) + .setSourceItemId(item.getId()) + .setTicketId(ticket.getId()) + .setTicketItemId(pti.getId()) + .setMaterialNo(materialNo) + .setContent(qrCode.getContent()) + .setBatchNo(qrCodeContent.getBatchNo()) + .setSerialNo(qrCodeContent.getSerialNo()) + .setUniqNo(qrCodeContent.getUniqNo()) + .setFactoryNo(order.getWerks()) + .setWarehouseNo(item.getLgort()) + .setNum(qrNum) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) ); }); outCostcenterItemService.updateBatchById(datas); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java index 18ed3f27..402dcd7b 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java @@ -383,10 +383,13 @@ public class OutProduceController extends BaseController { List dtos = new ArrayList<>(); List ticketItems = new ArrayList<>(); request.getQrCodes().forEach(qrCode -> { - MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode); - dtos.add(qrCodeContent); + MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode.getContent()); String materialNo = qrCodeContent.getMaterialNo(); - WmsOutProduceItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), materialNo)).findFirst().orElse(null); + BigDecimal qrNum = qrCode.getNum(); + VUtil.trueThrowBusinessError(qrCode.getNum().compareTo(qrCodeContent.getNum()) > 0) + .throwMessage("物料" + materialNo + "的数量不能大于二维码中的数量"); + dtos.add(qrCodeContent); + WmsOutProduceItem item = datas.stream().filter(d -> Objects.equals(d.getId(), qrCode.getItemId())).findFirst().orElse(null); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要领料"); WmsOutProduceTicketItem pti = ticketItems.stream() .filter(ti -> Objects.equals(ti.getProduceItemId(), item.getId())) @@ -401,28 +404,29 @@ public class OutProduceController extends BaseController { return ti; }); BigDecimal num = Objects.equals(order.getType(), 0) ? item.getLockNum() : item.getSqsl().subtract(item.getNum()); - VUtil.trueThrowBusinessError(num.compareTo(qrCodeContent.getNum()) < 0) + VUtil.trueThrowBusinessError(num.compareTo(qrNum) < 0) .throwMessage("物料" + materialNo + "的领取数量超出申请限制"); if (Objects.equals(order.getType(), 0)) { - item.setLockNum(item.getLockNum().subtract(qrCodeContent.getNum())); + item.setLockNum(item.getLockNum().subtract(qrNum)); } - item.setNum(item.getNum().add(qrCodeContent.getNum())); - pti.setNum(pti.getNum().add(qrCodeContent.getNum())); + item.setNum(item.getNum().add(qrNum)); + pti.setNum(pti.getNum().add(qrNum)); records.add(new OutMaterialScanRecord() - .setSource(1) -// .setSourceId(item.getId()) - .setTicketId(ticket.getProduceId()) - .setTicketItemId(pti.getId()) - .setMaterialNo(materialNo) - .setContent(qrCode) - .setBatchNo(qrCodeContent.getBatchNo()) - .setSerialNo(qrCodeContent.getSerialNo()) - .setUniqNo(qrCodeContent.getUniqNo()) - .setFactoryNo(order.getDwerk()) - .setWarehouseNo(request.getLgort()) - .setNum(qrCodeContent.getNum()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(Instant.now()) + .setSource(1) + .setSourceId(order.getId()) + .setSourceItemId(item.getId()) + .setTicketId(ticket.getProduceId()) + .setTicketItemId(pti.getId()) + .setMaterialNo(materialNo) + .setContent(qrCode.getContent()) + .setBatchNo(qrCodeContent.getBatchNo()) + .setSerialNo(qrCodeContent.getSerialNo()) + .setUniqNo(qrCodeContent.getUniqNo()) + .setFactoryNo(order.getDwerk()) + .setWarehouseNo(request.getLgort()) + .setNum(qrNum) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(Instant.now()) ); }); outProduceItemService.updateBatchById(datas); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java index 169851e5..fb1a2620 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java @@ -216,9 +216,12 @@ public class TransferCompanyController extends BaseController { .setCreateBy(UserUtil.getUserName()) .setCreateTime(LocalDateTime.now()); request.getQrCodes().forEach(qrCode -> { - MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode); + MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode.getContent()); + BigDecimal qrNum = qrCode.getNum(); String materialNo = qrCodeContent.getMaterialNo(); - WmsTransferCompanyItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), materialNo)).findFirst().orElse(null); + VUtil.trueThrowBusinessError(qrCode.getNum().compareTo(qrCodeContent.getNum()) > 0) + .throwMessage("物料" + materialNo + "的数量不能大于二维码中的数量"); + WmsTransferCompanyItem item = datas.stream().filter(d -> Objects.equals(d.getId(), qrCode.getItemId())).findFirst().orElse(null); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要出库"); VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) .throwMessage("物料" + materialNo + "的出库数量超出申请限制"); @@ -234,7 +237,7 @@ public class TransferCompanyController extends BaseController { ticketItems.add(ti); return ti; }); - pti.setNum(pti.getNum().add(qrCodeContent.getNum())); + pti.setNum(pti.getNum().add(qrNum)); records.add(new OutMaterialScanRecord() .setSource(5) .setSourceId(order.getId()) @@ -243,20 +246,20 @@ public class TransferCompanyController extends BaseController { .setTicketItemId(pti.getId()) .setMaterialNo(materialNo) .setUnit(item.getMeins()) - .setContent(qrCode) + .setContent(qrCode.getContent()) .setBatchNo(qrCodeContent.getBatchNo()) .setSerialNo(qrCodeContent.getSerialNo()) .setUniqNo(qrCodeContent.getUniqNo()) .setFactoryNo(order.getReswk()) .setWarehouseNo(request.getLgort()) - .setNum(qrCodeContent.getNum()) + .setNum(qrNum) .setEbelp(item.getEbelp()) .setEbeln(order.getEbeln()) .setExt(item.getEbelp()) .setCreateBy(UserUtil.getUserName()) .setCreateTime(Instant.now()) ); - item.setLeft(item.getLeft().subtract(qrCodeContent.getNum())); + item.setLeft(item.getLeft().subtract(qrNum)); }); transferCompanyItemService.updateBatchById(datas); transferCompanyService.lambdaUpdate() diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java index 2968a46d..a1a192a1 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferFactoryController.java @@ -226,9 +226,12 @@ public class TransferFactoryController extends BaseController { transferFactoryTicketService.save(ticket); List ticketItems = new ArrayList<>(); request.getQrCodes().forEach(qrCode -> { - MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode); + MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode.getContent()); + BigDecimal qrNum = qrCode.getNum(); String materialNo = qrCodeContent.getMaterialNo(); - WmsTransferFactoryItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), materialNo)).findFirst().orElse(null); + VUtil.trueThrowBusinessError(qrCode.getNum().compareTo(qrCodeContent.getNum()) > 0) + .throwMessage("物料" + materialNo + "的数量不能大于二维码中的数量"); + WmsTransferFactoryItem item = datas.stream().filter(d -> Objects.equals(d.getId(), qrCode.getItemId())).findFirst().orElse(null); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要出库"); WmsTransferFactoryTicketItem pti = ticketItems.stream() .filter(ti -> Objects.equals(ti.getOrderItemId(), item.getId())) @@ -242,8 +245,8 @@ public class TransferFactoryController extends BaseController { ticketItems.add(ti); return ti; }); - pti.setNum(pti.getNum().add(qrCodeContent.getNum())); - item.setLeft(item.getLeft().subtract(qrCodeContent.getNum())); + pti.setNum(pti.getNum().add(qrNum)); + item.setLeft(item.getLeft().subtract(qrNum)); VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) .throwMessage("物料" + materialNo + "的出库数量超出申请限制"); records.add(new OutMaterialScanRecord() @@ -255,13 +258,13 @@ public class TransferFactoryController extends BaseController { .setMaterialNo(materialNo) .setUnit(item.getMeins()) .setRspos(item.getRspos()) - .setContent(qrCode) + .setContent(qrCode.getContent()) .setBatchNo(qrCodeContent.getBatchNo()) .setSerialNo(qrCodeContent.getSerialNo()) .setUniqNo(qrCodeContent.getUniqNo()) .setFactoryNo(order.getWerks()) .setWarehouseNo(request.getLgort()) - .setNum(qrCodeContent.getNum()) + .setNum(qrNum) .setCreateBy(UserUtil.getUserName()) .setCreateTime(Instant.now()) ); diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceBackSubmitQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceBackSubmitQO.java new file mode 100644 index 00000000..667259c9 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InProduceBackSubmitQO.java @@ -0,0 +1,26 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + +@Data +public class InProduceBackSubmitQO { + + @NotBlank + private String no; + + /** + * 仓库编号 + */ + @NotBlank + private String lgort; + + /** + * 二维码列表 + */ + @NotEmpty + private List qrCodes; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OutProduceSubmitQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OutProduceSubmitQO.java index 47d34b38..dc1ab135 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OutProduceSubmitQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/OutProduceSubmitQO.java @@ -22,5 +22,5 @@ public class OutProduceSubmitQO { * 二维码列表 */ @NotEmpty - private List qrCodes; + private List qrCodes; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QRCodeQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QRCodeQO.java new file mode 100644 index 00000000..8246fd33 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QRCodeQO.java @@ -0,0 +1,29 @@ +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 QRCodeQO { + + /** + * 项id + */ + @NotNull + private Long itemId; + + /** + * 二维码内容 + */ + @NotBlank + private String content; + + /** + * 数量 + */ + @NotNull + private BigDecimal num; +}