diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/NoScanningItemRequest.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/NoScanningItemRequest.java new file mode 100644 index 00000000..d797b7b6 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/NoScanningItemRequest.java @@ -0,0 +1,31 @@ +package com.nflg.wms.admin.pojo.request; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class NoScanningItemRequest { + + /** + * 数量 + */ + @NotNull + private BigDecimal num; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 序列号 + */ + private String serialNo; + + /** + * 库位 + */ + private String binNo; +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/NoScanningRequest.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/NoScanningRequest.java new file mode 100644 index 00000000..22dde3d6 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/NoScanningRequest.java @@ -0,0 +1,32 @@ +package com.nflg.wms.admin.pojo.request; + +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 NoScanningRequest { + + /** + * 订单项ID + */ + @NotNull + private Long orderItemId; + + /** + * 物料编号 + */ + @NotBlank + private String materialNo; + + /** + * 明细列表 + */ + @Valid + @NotEmpty + private List items; +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BaseControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BaseControllerService.java new file mode 100644 index 00000000..5c3005ed --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BaseControllerService.java @@ -0,0 +1,68 @@ +package com.nflg.wms.admin.service; + +import com.nflg.wms.common.constant.BarCodeProcessStage; +import com.nflg.wms.repository.entity.WmsInventory; +import com.nflg.wms.repository.entity.WmsQrCodeMaster; +import com.nflg.wms.repository.service.IWmsInventoryService; +import com.nflg.wms.repository.service.IWmsQrCodeMasterService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; + +@Component +public class BaseControllerService { + + @Resource + private IWmsQrCodeMasterService qrCodeMasterService; + + @Resource + private IWmsInventoryService inventoryService; + + /** + * 物料是否生成过二维码 + * @param materialNo 物料编号 + * @return 是否生成过二维码 + */ + protected boolean existsQrCode(String materialNo) { + return qrCodeMasterService.lambdaQuery() + .eq(WmsQrCodeMaster::getMaterialCode, materialNo) + .exists(); + } + + /** + * 物料库存和物料二维码数量一致性检查 + * @param materialNo 物料编号 + * @param factoryNo 工厂编号 + * @param warehouseNo 仓库编号 + * @return 数量是否一致 + */ + private boolean quantityConsistencyCheck(String materialNo, String factoryNo, String warehouseNo) { + BigDecimal quantityQr = qrCodeMasterService.lambdaQuery() + .select(WmsQrCodeMaster::getQuantity) + .eq(WmsQrCodeMaster::getMaterialCode, materialNo) + .eq(WmsQrCodeMaster::getFactoryCode, factoryNo) + .eq(WmsQrCodeMaster::getStorageLocation, warehouseNo) + .eq(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState()) + .list() + .stream() + .map(WmsQrCodeMaster::getQuantity) + .reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal quantityInventory = inventoryService.lambdaQuery() + .select(WmsInventory::getNum) + .eq(WmsInventory::getMaterialNo, materialNo) + .eq(WmsInventory::getFactoryNo, factoryNo) + .eq(WmsInventory::getWarehouseNo, warehouseNo) + .list() + .stream() + .map(WmsInventory::getNum) + .reduce(BigDecimal.ZERO, BigDecimal::add); + return quantityQr.compareTo(quantityInventory) == 0; + } + + protected void qrCodeCreateTask(String materialNo,String factoryNo, String warehouseNo){ + if (!quantityConsistencyCheck(materialNo, factoryNo, warehouseNo)) { + //TODO 给仓库负责人创建补码的待办任务 + } + } +}