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 f033e4e6..3ee838e4 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 @@ -13,6 +13,7 @@ import com.nflg.wms.admin.pojo.request.UpdateItemNumRequest; import com.nflg.wms.admin.repository.InMaterialScanRecordRespository; import com.nflg.wms.admin.repository.InventoryForOutRepository; import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository; +import com.nflg.wms.admin.repository.TransferFactoryNoScanRecordRespository; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; import com.nflg.wms.admin.service.NoScanningBaseControllerService; import com.nflg.wms.admin.service.SapService; @@ -27,6 +28,7 @@ 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.document.OutMaterialScanRecord; +import com.nflg.wms.common.pojo.document.TransferFactoryNoScanRecord; import com.nflg.wms.common.pojo.dto.*; import com.nflg.wms.common.pojo.qo.*; import com.nflg.wms.common.pojo.vo.*; @@ -115,15 +117,17 @@ public class TransferFactoryController extends BaseController { @Resource private NoScanningBaseControllerService noScanningBaseControllerService; + @Resource + private TransferFactoryNoScanRecordRespository transferFactoryNoScanRecordRespository;; /** * 查询SAP领料订单数据 */ @PostMapping("searchSAP") public ApiResult> searchSAP0(@Valid @RequestBody TransferOrderQO request) { List datas = sapService.zwm3a16(request); - if (CollectionUtil.isNotEmpty(datas)){ + if (CollectionUtil.isNotEmpty(datas)) { datas.forEach(dto -> { - dto.setLockedNum(transferFactoryItemService.getLockedNum(dto.getAufnr(),dto.getMatnr())); + dto.setLockedNum(transferFactoryItemService.getLockedNum(dto.getAufnr(), dto.getMatnr())); }); } return ApiResult.success(PageUtil.Page(datas, request.getPage(), request.getPageSize())); @@ -659,6 +663,28 @@ public class TransferFactoryController extends BaseController { .setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) ).toList() ); + if (!Objects.isNull(request) && CollectionUtil.isNotEmpty(request.getItems())) { + List temRecords = new ArrayList<>(); + request.getItems().forEach(item -> { + if (CollectionUtil.isNotEmpty(item.getDatas())) { + item.getDatas().forEach(data -> { + temRecords.add(new TransferFactoryNoScanRecord() + .setId(request.getId()) + .setItemId(item.getOrderItemId()) + .setNum(data.getNum()) + .setBatchNo(data.getBatchNo()) + .setSerialNo(data.getSerialNo()) + .setBinNo(data.getBinNo()) + ); + }); + } }); + if(CollectionUtil.isNotEmpty(temRecords)) + { + transferFactoryNoScanRecordRespository.saveAll(temRecords); + } + + } + return ApiResult.success(); } @@ -758,7 +784,51 @@ public class TransferFactoryController extends BaseController { */ @GetMapping("pda/getTicketForIn") public ApiResult> getTicketForOut(@Valid @RequestParam @NotBlank String no) { - return ApiResult.success(transferFactoryTicketService.getVOByOrderNo(no)); + List vos=transferFactoryTicketService.getVOByOrderNo(no); + if(CollectionUtil.isNotEmpty(vos)) + { + vos.forEach(p -> { + List items = new ArrayList<>(); + List wmsItems=transferFactoryItemService.lambdaQuery() + .eq(WmsTransferFactoryItem::getOrderId, p.getId()) + .list(); + if(CollectionUtil.isNotEmpty(wmsItems)) + { + wmsItems.forEach(wmsItem -> { + List dataQOS=new ArrayList<>(); + List mongoRecords= + transferFactoryNoScanRecordRespository.getTransferFactoryNoScanRecordBy( + p.getId(), + wmsItem.getId()); + if(CollectionUtil.isNotEmpty(mongoRecords)) + { + mongoRecords.forEach(mongoRecord -> { + dataQOS.add(new NoScanningItemDataQO() + .setBinNo(mongoRecord.getBinNo()) + .setNum(mongoRecord.getNum()) + .setSerialNo(mongoRecord.getSerialNo()) + .setBatchNo(mongoRecord.getBatchNo()) + ); + }); + } + items.add(new NoScanningItemQO() + .setOrderItemId(wmsItem.getId()) + .setWarehouseNo(p.getUmlgo()) + .setMaterialNo(wmsItem.getMatnr()) + .setDatas(dataQOS) + ); + }); + } + + + NoScanningQO qo = new NoScanningQO() + .setId(p.getId()) + .setNo(p.getNo()) + .setItems(items); + p.noScannings.add(qo); + }); + } + return ApiResult.success(vos); } /** diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/TransferFactoryNoScanRecordRespository.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/TransferFactoryNoScanRecordRespository.java new file mode 100644 index 00000000..69a76912 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/TransferFactoryNoScanRecordRespository.java @@ -0,0 +1,13 @@ +package com.nflg.wms.admin.repository; + +import com.nflg.wms.common.pojo.document.TransferFactoryNoScanRecord; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface TransferFactoryNoScanRecordRespository + extends MongoRepository { + List getTransferFactoryNoScanRecordBy(Long id, Long itemId); +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/document/TransferFactoryNoScanRecord.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/document/TransferFactoryNoScanRecord.java new file mode 100644 index 00000000..5eab9e96 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/document/TransferFactoryNoScanRecord.java @@ -0,0 +1,47 @@ +package com.nflg.wms.common.pojo.document; + +import cn.hutool.core.util.StrUtil; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.math.BigDecimal; + +@Data +@Accessors(chain = true) +@Document(collection = "TransferFactoryNoScanRecord") +public class TransferFactoryNoScanRecord { + + /** + * 转储单ID + */ + private Long id; + + /** + * 转储单项目Id + */ + private Long ItemId; + + /** + * 数量 + */ + @NotNull + private BigDecimal num; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 序列号 + */ + private String serialNo; + + /** + * 库位 + */ + private String binNo; + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NoScanningItemDataQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NoScanningItemDataQO.java new file mode 100644 index 00000000..e83c699a --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NoScanningItemDataQO.java @@ -0,0 +1,55 @@ +package com.nflg.wms.common.pojo.qo; + +import cn.hutool.core.util.StrUtil; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Data +@Accessors(chain = true) +public class NoScanningItemDataQO { + + /** + * 数量 + */ + @NotNull + private BigDecimal num; + + /** + * 批次号 + */ + private String batchNo; + + public String getBatchNo(){ + if (StrUtil.isBlank(batchNo)){ + return ""; + } + return batchNo; + } + + /** + * 序列号 + */ + private String serialNo; + + public String getSerialNo(){ + if (StrUtil.isBlank(serialNo)){ + return ""; + } + return serialNo; + } + + /** + * 库位 + */ + private String binNo; + + public String getBinNo(){ + if (StrUtil.isBlank(binNo)){ + return ""; + } + return binNo; + } +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NoScanningItemQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NoScanningItemQO.java new file mode 100644 index 00000000..d766e6b4 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NoScanningItemQO.java @@ -0,0 +1,40 @@ +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 lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class NoScanningItemQO { + + /** + * 订单项ID + */ + @NotNull + private Long orderItemId; + + /** + * 物料编号 + */ + @NotBlank + private String materialNo; + + /** + * 库存地点编号 + */ + @NotBlank + private String warehouseNo; + + /** + * 明细列表 + */ + @Valid + @NotEmpty + private List datas; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NoScanningQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NoScanningQO.java new file mode 100644 index 00000000..fd704950 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/NoScanningQO.java @@ -0,0 +1,26 @@ +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.util.List; + +@Data +@Accessors(chain = true) +public class NoScanningQO { + /** + * 订单id + */ + private Long id; + + /** + * 订单号 + */ + private String no; + + @Valid + @NotEmpty + private List items; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferFactoryTicketVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferFactoryTicketVO.java index 8e2b16d5..38384a14 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferFactoryTicketVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TransferFactoryTicketVO.java @@ -1,9 +1,12 @@ package com.nflg.wms.common.pojo.vo; import cn.hutool.core.util.StrUtil; +import com.nflg.wms.common.pojo.document.TransferFactoryNoScanRecord; +import com.nflg.wms.common.pojo.qo.NoScanningQO; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; @Data public class TransferFactoryTicketVO { @@ -133,4 +136,10 @@ public class TransferFactoryTicketVO { * 审核时间 */ public LocalDateTime auditTime; + + + /** + * 未扫描的物料凭证 + */ + public List noScannings; }