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 3b16a8c2..2c79307a 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 @@ -3,7 +3,6 @@ package com.nflg.wms.admin.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.nflg.wms.admin.pojo.dto.PdfPageDTO; import com.nflg.wms.admin.service.BinService; @@ -300,18 +299,18 @@ public class InProduceOrderController extends BaseController { */ @GetMapping("exportOrderPdf") public void exportDeliverOrder(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception { -// WmsInProduceOrder order = produceOrderService.getById(id); -// VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); -// List list = produceOrderItemService.getVOByOrderId(id); -// if (order.getList()) { -// list.removeIf(item -> Objects.equals(item.getParentId(), 0L)); -// } - WmsInProduceOrder order = new WmsInProduceOrder() - .setNo(NoUtil.getInProduceNo()); - List list = new ArrayList<>(); - for (int i = 0, count = RandomUtil.randomInt(1, 100); i < count; i++) { - list.add(new InProduceOrderItemVO().setMaterialNo(RandomUtil.randomNumbers(10)).setMaterialDesc("非金属联件和紧固件等 M6 DIN 982 不锈钢304")); + WmsInProduceOrder order = produceOrderService.getById(id); + VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); + List list = produceOrderItemService.getVOByOrderId(id); + if (order.getList()) { + list.removeIf(item -> Objects.equals(item.getParentId(), 0L)); } +// WmsInProduceOrder order = new WmsInProduceOrder() +// .setNo(NoUtil.getInProduceNo()); +// List list = new ArrayList<>(); +// for (int i = 0, count = RandomUtil.randomInt(1, 100); i < count; i++) { +// list.add(new InProduceOrderItemVO().setMaterialNo(RandomUtil.randomNumbers(10)).setMaterialDesc("非金属联件和紧固件等 M6 DIN 982 不锈钢304")); +// } InProduceOrderItemVO first = list.get(0); Map base = new HashMap<>(); base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd")); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java index f75602bc..89eba6b1 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java @@ -70,7 +70,7 @@ public class InventoryController extends BaseController { * 保存库存盘点任务 * @param request 请求参数 */ - @PostMapping("save") + @PostMapping("check/save") public ApiResult save(@Valid @RequestBody InventoryCheckTaskSaveQO request) { inventoryCheckTaskService.save(request); return ApiResult.success(); @@ -80,7 +80,7 @@ public class InventoryController extends BaseController { * 查询库存盘点任务 * @param request 请求参数 */ - @PostMapping("/check/search") + @PostMapping("check/search") public ApiResult> searchCheckTask(@Valid @RequestBody InventoryCheckTaskSearchQO request) { return ApiResult.success(inventoryCheckTaskService.search(request)); } @@ -90,7 +90,7 @@ public class InventoryController extends BaseController { * @param id 任务ID * @return 仓库列表 */ - @GetMapping("getTaskItems") + @GetMapping("check/getTaskItems") public ApiResult> getTaskItems(@Valid @RequestParam(required = false) Long id) { List taskItems = Objects.isNull(id) ? Collections.emptyList() : inventoryCheckTaskItemService.lambdaQuery().eq(WmsInventoryCheckTaskItem::getTaskId, id).list(); List warehouseVOS = warehouseService.getEnableList(); @@ -118,7 +118,7 @@ public class InventoryController extends BaseController { * 发布库存盘点任务 * @param id 任务id */ - @PostMapping("publish") + @PostMapping("check/publish") public ApiResult publish(@Valid @RequestParam @NotNull Long id) { inventoryCheckTaskService.publish(id); return ApiResult.success(); @@ -128,7 +128,7 @@ public class InventoryController extends BaseController { * 删除库存盘点任务 * @param id ID */ - @PostMapping("delete") + @PostMapping("check/delete") public ApiResult delete(@Valid @RequestParam @NotNull Long id) { inventoryCheckTaskService.delete(id); return ApiResult.success(); @@ -137,7 +137,7 @@ public class InventoryController extends BaseController { /** * 获取用户的盘点任务(PDA使用) */ - @GetMapping("getTaskByUser") + @GetMapping("check/getTaskByUser") public ApiResult> getTaskByUser() { return ApiResult.success(inventoryCheckTaskItemService.getTaskByUser(UserUtil.getUserId())); } @@ -146,7 +146,7 @@ public class InventoryController extends BaseController { * 盘点任务扫码(PDA使用) * @param request 请求参数 */ - @PostMapping("scan") + @PostMapping("check/scan") public ApiResult scan(@Valid @RequestBody InventoryCheckTaskScanQO request) { WmsInventoryCheckTaskItem item = inventoryCheckTaskItemService.getById(request.getId()); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("未找到数据"); @@ -186,7 +186,7 @@ public class InventoryController extends BaseController { * 批量保存盘点结果(PDA使用) * @param request 请求参数 */ - @PostMapping("saveScan") + @PostMapping("check/saveScan") public ApiResult saveScan(@Valid @RequestBody InventoryCheckTaskScanSaveQO request) { InventoryCheckTaskItemVO item = inventoryCheckTaskItemService.getInfo(request.getId()); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("未找到数据"); @@ -244,7 +244,7 @@ public class InventoryController extends BaseController { * 完成盘点任务(PDA使用) * @param taskId 任务ID */ - @PostMapping("complete") + @PostMapping("check/complete") public ApiResult complete(@Valid @RequestParam @NotNull Long taskId) { inventoryCheckTaskService.complete(taskId); return ApiResult.success(); @@ -254,9 +254,9 @@ public class InventoryController extends BaseController { * 查看盘点结果 * @param request 请求参数 */ - @PostMapping("getMatrials") - public ApiResult> getMatrials(@Valid @RequestBody InventoryCheckTaskMaterialsQO request) { - return ApiResult.success(inventoryCheckTaskService.getMatrials(request)); + @PostMapping("check/getMaterials") + public ApiResult> getMaterials(@Valid @RequestBody InventoryCheckTaskMaterialsQO request) { + return ApiResult.success(inventoryCheckTaskService.getMaterials(request)); } /** @@ -264,7 +264,7 @@ public class InventoryController extends BaseController { * @param materialId 物料记录id * @return 扫码记录列表 */ - @GetMapping("getScanRecords") + @GetMapping("check/getScanRecords") public ApiResult> getScanRecords(@Valid @RequestParam @NotNull Long materialId) { return ApiResult.success(inventoryCheckTaskScanRecordResitory.findByMaterialId(materialId)); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java index 776b275e..84fa394e 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java @@ -2,7 +2,6 @@ package com.nflg.wms.admin.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; -import cn.hutool.core.lang.Pair; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; @@ -16,16 +15,14 @@ import cn.idev.excel.write.metadata.WriteSheet; import cn.idev.excel.write.metadata.fill.FillConfig; import com.nflg.wms.admin.pojo.document.PackageMaterialScanRecord; import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO; -import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO; -import com.nflg.wms.admin.pojo.dto.ZWM3A17Item1DTO; import com.nflg.wms.admin.repository.PackageMaterialScanRecordRepository; import com.nflg.wms.admin.service.BinService; import com.nflg.wms.admin.service.SapService; +import com.nflg.wms.admin.service.StructuralPackageControllerService; 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; -import com.nflg.wms.common.constant.Constant; import com.nflg.wms.common.constant.OrderState; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; @@ -51,8 +48,6 @@ import org.springframework.core.io.ClassPathResource; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.retry.annotation.Backoff; -import org.springframework.retry.annotation.Retryable; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; @@ -123,21 +118,12 @@ public class StructuralPackageOrderController extends BaseController { @Resource private IWmsStorageService storageService; - @Resource - private IWmsWarehouseService warehouseService; - - @Resource - private IDictionaryService dictionaryService; - - @Resource - private IWmsStorageBinService storageBinService; - - @Resource - private IWmsBinService wmsBinService; - @Resource private BinService binService; + @Resource + private StructuralPackageControllerService structuralPackageControllerService; + /** * 搜索SAP订单 * @param request 请求参数 @@ -541,7 +527,7 @@ public class StructuralPackageOrderController extends BaseController { } /** - * 打包托盘 + * 打包托盘(PDA使用) * @param request 请求参数 */ @Transactional @@ -789,6 +775,7 @@ public class StructuralPackageOrderController extends BaseController { .setItemName(order.getPackageDesc()) .setUnit(order.getUnit()) .setIsQuality(false) + .setKzkri(order.getKzkri()) .setUnqualifiedQty(BigDecimal.ZERO) .setQualifiedQty(BigDecimal.valueOf(order.getNum())) .setFactory("1010") @@ -805,11 +792,11 @@ public class StructuralPackageOrderController extends BaseController { /** * 搜索上架任务列表(PDA使用) - * @param request 请求参数 + * @param no 任务单号或原始单号 */ @PostMapping("searchIn") - public ApiResult> searchIn(@Valid @RequestBody @NotNull InTaskSearchQO request) { - return ApiResult.success(inTaskService.searchForIn(request)); + public ApiResult> searchIn(@Valid @RequestParam @NotBlank String no) { + return ApiResult.success(inTaskService.searchForIn(no)); } /** @@ -817,8 +804,10 @@ public class StructuralPackageOrderController extends BaseController { * @param taskNo 上架任务单号 */ @GetMapping("getInTaskInfo") - public ApiResult> getInTaskInfo(@Valid @RequestParam @NotNull String taskNo) { + public ApiResult> getInTaskInfo(@Valid @RequestParam @NotBlank String taskNo) { WmsInTask task = inTaskService.getByNo(taskNo); + VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在"); + VUtil.trueThrowBusinessError(!Objects.equals(task.getTaskStatus(), (short) 0)).throwMessage("请勿重复上架"); List list = inTaskItemService.getListForStorage(taskNo); List datas = Convert.toList(InTaskInfoVO.class, list); for (InTaskInfoVO item : datas) { @@ -835,183 +824,38 @@ public class StructuralPackageOrderController extends BaseController { * 上架(PDA使用) * @param request 请求参数 */ - @Transactional @PostMapping("materialStorage") public ApiResult materialStorage(@Valid @RequestBody @NotNull MaterialStorageQO request) { - WmsInTask task = inTaskService.lambdaQuery().eq(WmsInTask::getTaskNumber, request.getTaskNo()).one(); + WmsInTask task = inTaskService.getByNo(request.getTaskNo()); VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在"); - inTaskService.storage(request.getTaskNo()); + VUtil.trueThrowBusinessError(!Objects.equals(task.getTaskStatus(), (short) 0)).throwMessage("请勿重复上架"); List datas = inTaskItemService.getForIn(request); if (CollectionUtil.isNotEmpty(datas)) { - for (WmsInTaskItem item : datas) { - materialStorageItem(task, item, request.getItems().stream() - .filter(it -> StrUtil.equals(it.getMaterialNo(), item.getItemCode())) - .findFirst() - .get()); - } + datas.stream() + .filter(it -> request.getItems().stream().anyMatch(r -> StrUtil.equals(r.getMaterialNo(), it.getItemCode()))) + .collect(Collectors.groupingBy(WmsInTaskItem::getPoNum)) + .values() + .forEach(it -> structuralPackageControllerService.materialStorage(it, request.getItems())); + inTaskService.updateState(request.getTaskNo()); } return ApiResult.success(); } - @Transactional - public void materialStorageItem(WmsInTask task, WmsInTaskItem item, MaterialStorageItemQO iqo) { - //判断是否更改了储位 - syncStorage(iqo); - BigDecimal num = iqo.getNum(); - if (Objects.nonNull(num) && num.compareTo(BigDecimal.ZERO) > 0) { - //TODO 调用SAP的越库接口 - } - BigDecimal total = Objects.isNull(num) ? item.getQualifiedQty() : item.getQualifiedQty().subtract(num); - //同步入库信息到SAP - Pair, Pair> pair = syncInToSAP(task, item, total); - item.setMatDoc101(pair.getKey().getKey()); - item.setDocYear101(pair.getKey().getValue()); - item.setMatDoc103(pair.getValue().getKey()); - item.setDocYear103(pair.getValue().getValue()); - //保存库存信息 - saveInventory(item, total); - item.setDataStatus((short) 3); - item.setFailResult(""); - item.setStorageLocation(StrUtil.join(",", iqo.getBinNos())); - inTaskItemService.updateById(item); - } - - @Retryable( - maxAttempts = 5, // 最大重试次数(包括第一次调用) - backoff = @Backoff(delay = 1000) // 重试间隔1秒 - ) - public void saveInventory(WmsInTaskItem item, BigDecimal total) { - WmsInventory inventory = inventoryService.lambdaQuery() - .eq(WmsInventory::getMaterialNo, item.getItemCode()) - .eq(WmsInventory::getBatchNumber, item.getBatchNumber()) - .one(); - if (Objects.isNull(inventory)) { - inventory = new WmsInventory() - .setMaterialNo(item.getItemCode()) - .setNum(total) - .setFactoryNo(item.getFactory()) - .setWarehouseNo(item.getReceivedWarehouse()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(LocalDateTime.now()); - inventoryService.save(inventory); - } else { - inventory.setNum(inventory.getNum().add(total)) - .setUpdateBy(UserUtil.getUserName()) - .setUpdateTime(LocalDateTime.now()); - inventoryService.updateById(inventory); - } + /** + * 搜索上架任务列表 + * @param request 请求参数 + */ + @PostMapping("searchTicket") + public ApiResult> searchTicket(@Valid @RequestBody @NotNull InTaskSearchQO request) { + return ApiResult.success(inTaskService.search(request)); } /** - * 同步入库信息到SAP - * @param item 入库信息 + * 获取上架任务明细 + * @param taskNo 上架任务单号 */ - private Pair, Pair> syncInToSAP(WmsInTask task, WmsInTaskItem item, BigDecimal total) { - SAPMaterialInfoInOrderDTO zim004dto = sapService.zim004(item.getPoNum(), item.getSupplierNum(), item.getItemCode()).get(0); -// if (Objects.equals(task.getTaskFrom(), (short) 2) && item.getIsQuality()) { -// List qualityInspections = srmQualityInspectionService.lambdaQuery() -// .eq(WmsSrmQualityInspection::getItemCode, item.getItemCode()) -// .eq(WmsSrmQualityInspection::getPoNum, item.getPoNum()) -// .list(); -// VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qualityInspections)).throwMessage("未找到" + item.getItemCode() + "的质检报告"); -// ZWM3A18DTO ZWM3A18DTO = new ZWM3A18DTO() -// .setEbeln(zim004dto.getEbeln()) -// .setUsnam(UserUtil.getUserName()) -// .setMblnr(qualityInspections.get(0).getReceiveNum()) -// .setMjahr(DateTimeUtil.format(qualityInspections.get(0).getAcceptTime(), "yyyy")) -// .setItem1(new ZWM3A18Item1DTO() -// .setEbelp(zim004dto.getEbelp()) -// .setErfmg(String.valueOf(qualityInspections.stream().map(WmsSrmQualityInspection::getInspectionQty).reduce(BigDecimal.ZERO, BigDecimal::add))) -// .setErfmg1(String.valueOf(qualityInspections.stream().map(WmsSrmQualityInspection::getQualifiedQty).reduce(BigDecimal.ZERO, BigDecimal::add))) -// .setErfmg2(String.valueOf(qualityInspections.stream().map(WmsSrmQualityInspection::getUnqualifiedQty).reduce(BigDecimal.ZERO, BigDecimal::add))) -// .setMatnr(item.getItemCode()) -// .setMeins(item.getUnit()) -// .setCharg(item.getBatchNumber()) -// .setLgort(item.getReceivedWarehouse()) -// .setWerks(item.getFactory()) -// ) -// .setItem2(qualityInspections.stream().map(q -> new ZWM3A17Item2DTO() -// .setEBELP(zim004dto.getEbelp()) -// .setSERNR(q.getSerialNum()) -// .setFLAG(q.getUnqualifiedQty().compareTo(BigDecimal.ZERO) > 0 ? "" : "X") -// ).toList() -// ); -// return Pair.of(sapService.zwm3a18(ZWM3A18DTO), null); -// } else { - ZWM3A17DTO ZWM3A17DTO = new ZWM3A17DTO() - .setEbeln(zim004dto.getEbeln()) - .setUsnam(UserUtil.getUserName()) - .setItem1(List.of(new ZWM3A17Item1DTO() - .setEBELP(zim004dto.getEbelp()) - .setMATNR(item.getItemCode()) - .setERFMG(total) - .setMEINS(item.getUnit()) - .setCHARG(item.getBatchNumber()) - .setWERKS(item.getFactory()) - .setLGORT(item.getReceivedWarehouse()) - .setKZKRI(zim004dto.getKzkri())) - ); -// if (Objects.equals(task.getTaskFrom(), (short) 2)){ -// List item2s = new ArrayList<>(); -// StrUtil.split(item.getSerialNumber(), ";").forEach(serialNumber -> { -// item2s.add(new ZWM3A17Item2DTO() -// .setEBELP(zim004dto.getEbelp()) -// .setSERNR(serialNumber) -// .setFLAG("X")); -// }); -// ZWM3A17DTO.setItem2(item2s); -// } - return sapService.zwm3a17(ZWM3A17DTO); -// } - } - - private void syncStorage(MaterialStorageItemQO qo) { - Set dbMapBins = storageService.getBinNos(qo.getMaterialNo(), qo.getFactory(), qo.getReceivedWarehouse()); - if (!qo.getBinNos().equals(dbMapBins)) { - //保存库位信息到数据库 - DictionaryItem factory = dictionaryService.getItemByCode(Constant.DICTIONARY_FACTORY, qo.getFactory()); - VUtil.trueThrowBusinessError(Objects.isNull(factory)).throwMessage("工厂(" + qo.getFactory() + ")不存在"); - WmsWarehouse warehouse = warehouseService.lambdaQuery() - .eq(WmsWarehouse::getFactoryId, factory.getId()) - .eq(WmsWarehouse::getNo, qo.getReceivedWarehouse()) - .one(); - VUtil.trueThrowBusinessError(Objects.isNull(warehouse)).throwMessage("仓库(" + qo.getReceivedWarehouse() + ")不存在"); - WmsStorage storage = storageService.lambdaQuery() - .eq(WmsStorage::getMaterialNo, qo.getMaterialNo()) - .eq(WmsStorage::getWarehouseId, warehouse.getId()) - .one(); - if (Objects.isNull(storage)) { - storage = new WmsStorage() - .setWarehouseId(warehouse.getId()) - .setMaterialNo(qo.getMaterialNo()) - .setMaterialDesc(qo.getMaterialDesc()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(LocalDateTime.now()); - storageService.save(storage); - } else { - storageBinService.deleteByStorageId(storage.getId()); - } - List dbBins = wmsBinService.lambdaQuery().in(WmsBin::getNo, qo.getBinNos()).list(); - qo.getBinNos().forEach(binNo -> { - if (dbBins.stream().noneMatch(it -> StrUtil.equals(it.getNo(), binNo))) { - WmsBin bin = new WmsBin() - .setNo(binNo) - .setName(binNo) - .setWarehouseId(warehouse.getId()) - .setCreateBy(UserUtil.getUserName()) - .setCreateTime(LocalDateTime.now()); - wmsBinService.save(bin); - dbBins.add(bin); - } - }); - WmsStorage finalStorage = storage; - storageBinService.saveBatch(dbBins.stream().map(bin -> new WmsStorageBin() - .setStorageId(finalStorage.getId()) - .setBinId(bin.getId())) - .toList() - ); - //调用SAP接口保存库位信息 - sapService.zwm3A02(qo.getFactory(), qo.getMaterialNo(), qo.getReceivedWarehouse(), qo.getBinNos()); - } + @GetMapping("getTicketItems") + public ApiResult> getTicketItems(@Valid @RequestParam @NotBlank String taskNo) { + return ApiResult.success(inTaskItemService.getByNo(taskNo)); } } \ No newline at end of file diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java index b927d941..2b106273 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java @@ -2,33 +2,30 @@ package com.nflg.wms.admin.service; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Pair; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO; +import com.nflg.wms.admin.pojo.dto.ZWM3A17Item1DTO; 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.Constant; import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; -import com.nflg.wms.common.pojo.dto.BomMaterialDTO; -import com.nflg.wms.common.pojo.dto.PackageMaterialDTO; -import com.nflg.wms.common.pojo.dto.PackageMaterialExcelExportDTO; -import com.nflg.wms.common.pojo.dto.PackageMaterialExcelImportDTO; +import com.nflg.wms.common.pojo.dto.*; import com.nflg.wms.common.pojo.qo.*; import com.nflg.wms.common.pojo.vo.PackageVO; import com.nflg.wms.common.util.DateTimeUtil; import com.nflg.wms.common.util.EecExcelUtil; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.VUtil; -import com.nflg.wms.repository.entity.WmsMaterial; -import com.nflg.wms.repository.entity.WmsModel; -import com.nflg.wms.repository.entity.WmsStructuralPackage; -import com.nflg.wms.repository.service.IWmsMaterialService; -import com.nflg.wms.repository.service.IWmsModelService; -import com.nflg.wms.repository.service.IWmsStructuralPackageService; +import com.nflg.wms.repository.entity.*; +import com.nflg.wms.repository.service.*; import com.nflg.wms.starter.service.BomMaterialService; import com.nflg.wms.starter.service.FileUploadService; import jakarta.annotation.Resource; @@ -43,6 +40,7 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import org.ttzero.excel.entity.ListSheet; @@ -81,8 +79,34 @@ public class StructuralPackageControllerService { @Resource private StringRedisTemplate stringRedisTemplate; + + @Resource private BomMaterialService bomMaterialService; + @Resource + private IWmsStorageService storageService; + + @Resource + private IWmsWarehouseService warehouseService; + + @Resource + private IDictionaryService dictionaryService; + + @Resource + private IWmsStorageBinService storageBinService; + + @Resource + private IWmsBinService wmsBinService; + + @Resource + private SapService sapService; + + @Resource + private IWmsInTaskItemService inTaskItemService; + + @Resource + private IWmsInventoryService inventoryService; + @Transactional public void add(@Valid PackageAddQO request) { WmsStructuralPackage structuralPackage = Convert.convert(WmsStructuralPackage.class, request); @@ -90,7 +114,7 @@ public class StructuralPackageControllerService { structuralPackage.setCreateBy(UserUtil.getUserName()); structuralPackage.setCreateTime(LocalDateTime.now()); structuralPackage.setModelIds(StrUtil.join(",", request.getModelIds())); - request.getMaterials().forEach(it->{ + request.getMaterials().forEach(it -> { it.setCreateBy(UserUtil.getUserName()); it.setCreateTime(DateTimeUtil.format(LocalDateTime.now())); }); @@ -107,23 +131,23 @@ public class StructuralPackageControllerService { } public void update(@Valid PackageUpdateQO request) { - WmsStructuralPackage p=packageService.lambdaQuery().eq(WmsStructuralPackage::getId, request.getId()).one(); + WmsStructuralPackage p = packageService.lambdaQuery().eq(WmsStructuralPackage::getId, request.getId()).one(); VUtil.trueThrowBusinessError(Objects.isNull(p)).throwMessage("无效的数据"); - List materials=JSONUtil.toList(p.getMaterials(), PackageMaterialDTO.class); + List materials = JSONUtil.toList(p.getMaterials(), PackageMaterialDTO.class); WmsStructuralPackage structuralPackage = Convert.convert(WmsStructuralPackage.class, request); structuralPackage.setId(null); structuralPackage.setOrderNo(p.getOrderNo()); structuralPackage.setCreateBy(UserUtil.getUserName()); structuralPackage.setCreateTime(LocalDateTime.now()); structuralPackage.setModelIds(StrUtil.join(",", request.getModelIds())); - request.getMaterials().forEach(it->{ - PackageMaterialDTO dto=materials.stream().filter(m->m.getNo().equals(it.getNo())).findFirst().orElse(null); - if (Objects.nonNull(dto)){ + request.getMaterials().forEach(it -> { + PackageMaterialDTO dto = materials.stream().filter(m -> m.getNo().equals(it.getNo())).findFirst().orElse(null); + if (Objects.nonNull(dto)) { it.setCreateBy(dto.getCreateBy()); it.setCreateTime(dto.getCreateTime()); it.setUpdateBy(UserUtil.getUserName()); it.setUpdateTime(DateTimeUtil.format(LocalDateTime.now())); - }else { + } else { it.setCreateBy(UserUtil.getUserName()); it.setCreateTime(DateTimeUtil.format(LocalDateTime.now())); } @@ -152,12 +176,12 @@ public class StructuralPackageControllerService { return packageService.getMaterials(request); } - public void exportMaterials(HttpServletResponse response,Long packageId) throws IOException { + public void exportMaterials(HttpServletResponse response, Long packageId) throws IOException { PackageVO vo = packageService.getInfo(packageId); List datas = vo.getMaterialList().stream().map(info -> Convert.convert(PackageMaterialExcelExportDTO.class, info)).collect(Collectors.toList()); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(vo.getNo()+"零件清单导出.xlsx", StandardCharsets.UTF_8)); - if (CollectionUtil.isEmpty(datas)){ + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(vo.getNo() + "零件清单导出.xlsx", StandardCharsets.UTF_8)); + if (CollectionUtil.isEmpty(datas)) { datas.add(new PackageMaterialExcelExportDTO() .setNo("(必填)零件编码") .setName("(必填)零件名称") @@ -195,7 +219,7 @@ public class StructuralPackageControllerService { } @Transactional - public boolean checkAndImport(PackageVO vo,List data) { + public boolean checkAndImport(PackageVO vo, List data) { List materialDTOS = new ArrayList<>(); for (PackageMaterialExcelImportDTO dto : data) { PackageMaterialDTO materialDTO = new PackageMaterialDTO(); @@ -222,23 +246,21 @@ public class StructuralPackageControllerService { } if (StrUtil.isBlank(dto.getNum())) { sb.append("数量不能为空;"); - }else if(!NumberUtils.isCreatable(dto.getNum())){ + } else if (!NumberUtils.isCreatable(dto.getNum())) { sb.append("数量无效;"); - } - else { + } else { materialDTO.setNum(new BigDecimal(dto.getNum())); } if (StrUtil.isBlank(dto.getWeight())) { sb.append("重量不能为空;"); - }else if(!NumberUtils.isCreatable(dto.getWeight())){ + } else if (!NumberUtils.isCreatable(dto.getWeight())) { sb.append("重量无效;"); - } - else { + } else { materialDTO.setWeight(new BigDecimal(dto.getWeight())); } if (StrUtil.isBlank(dto.getVersion())) { sb.append("图纸版本不能为空;"); - }else if (!NumberUtils.isCreatable(dto.getVersion())){ + } else if (!NumberUtils.isCreatable(dto.getVersion())) { sb.append("图纸版本无效;"); } else { materialDTO.setVersion(Integer.valueOf(dto.getVersion())); @@ -266,25 +288,25 @@ public class StructuralPackageControllerService { .setCreateBy(UserUtil.getUserName()) .setCreateTime(LocalDateTime.now()); List materials = new ArrayList<>(); - StringBuilder sb=new StringBuilder(); + StringBuilder sb = new StringBuilder(); Sheet sheet = ExcelReader.read(file.getInputStream()).sheet(0); sheet.rows().forEach(row -> { switch (row.getRowNum()) { case 2: String no = row.getString(1); VUtil.trueThrowBusinessError(StrUtil.isBlank(no)).throwMessage("钢构包编码不能为空"); - BomMaterialDTO material=bomMaterialService.getMaterialInfo(no); + BomMaterialDTO material = bomMaterialService.getMaterialInfo(no); VUtil.trueThrowBusinessError(Objects.isNull(material)).throwMessage("钢构包编码无效"); packageInfo.setNo(no); packageInfo.setName(material.getMaterialDesc()); packageInfo.setDrawingNo(material.getDrawingNo()); - String modelNo= row.getString(3); + String modelNo = row.getString(3); VUtil.trueThrowBusinessError(StrUtil.isBlank(modelNo)).throwMessage("机型编号不能为空"); - List modelNos=StrUtil.split(modelNo, ","); - List models=modelService.lambdaQuery().select(WmsModel::getId, WmsModel::getNo).eq(WmsModel::getEnable,true).in(WmsModel::getNo, modelNos).list(); + List modelNos = StrUtil.split(modelNo, ","); + List models = modelService.lambdaQuery().select(WmsModel::getId, WmsModel::getNo).eq(WmsModel::getEnable, true).in(WmsModel::getNo, modelNos).list(); modelNos.removeIf(mno -> models.stream().anyMatch(model -> model.getNo().equals(mno))); - VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(modelNos)).throwMessage("以下机型编号无效:"+StrUtil.join(",", modelNos)); - packageInfo.setModelIds(StrUtil.join(",",models.stream().map(WmsModel::getId).toList())); + VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(modelNos)).throwMessage("以下机型编号无效:" + StrUtil.join(",", modelNos)); + packageInfo.setModelIds(StrUtil.join(",", models.stream().map(WmsModel::getId).toList())); break; case 3: String cate = row.getString(1); @@ -292,7 +314,7 @@ public class StructuralPackageControllerService { packageInfo.setCate(cate); String eco = row.getString(3); VUtil.trueThrowBusinessError(StrUtil.isBlank(eco)).throwMessage("ECO不能为空"); - packageInfo.setEco( eco); + packageInfo.setEco(eco); break; case 4: String remark = row.getString(3); @@ -302,18 +324,18 @@ public class StructuralPackageControllerService { VUtil.trueThrowBusinessError(!NumberUtils.isCreatable(version)).throwMessage("版本号无效"); packageInfo.setVersion(new BigDecimal(version)); VUtil.trueThrowBusinessError(packageService.lambdaQuery() - .eq(WmsStructuralPackage::getNo, packageInfo.getNo()) - .eq(WmsStructuralPackage::getVersion, packageInfo.getVersion()) - .exists()) + .eq(WmsStructuralPackage::getNo, packageInfo.getNo()) + .eq(WmsStructuralPackage::getVersion, packageInfo.getVersion()) + .exists()) .throwMessage("该版本已存在"); VUtil.trueThrowBusinessError(StrUtil.isBlank(packageInfo.getRemark()) - && packageService.lambdaQuery().eq(WmsStructuralPackage::getNo, packageInfo.getNo()).exists()) + && packageService.lambdaQuery().eq(WmsStructuralPackage::getNo, packageInfo.getNo()).exists()) .throwMessage("修改日志不能为空"); break; default: - if (row.getRowNum() > 6){ + if (row.getRowNum() > 6) { String mno = row.getString(0); - if (StrUtil.isBlank(mno)){ + if (StrUtil.isBlank(mno)) { sb.append(StrUtil.format("第{}行零件编码不能为空;", row.getRowNum())); break; } @@ -328,20 +350,20 @@ public class StructuralPackageControllerService { dto.setVersion(material1.getVersion()); dto.setStation(row.getString(1)); dto.setTray(row.getString(2)); - String num=row.getString(3); - if (StrUtil.isBlank(num)){ + String num = row.getString(3); + if (StrUtil.isBlank(num)) { sb.append(StrUtil.format("第{}行数量不能为空;", row.getRowNum())); - }else if (!NumberUtils.isCreatable(num)){ + } else if (!NumberUtils.isCreatable(num)) { sb.append(StrUtil.format("第{}行数量无效;", row.getRowNum())); - }else { + } else { dto.setNum(new BigDecimal(num)); } - num=row.getString(4); - if (StrUtil.isBlank(num)){ + num = row.getString(4); + if (StrUtil.isBlank(num)) { sb.append(StrUtil.format("第{}行重量不能为空;", row.getRowNum())); - }else if (!NumberUtils.isCreatable(num)){ + } else if (!NumberUtils.isCreatable(num)) { sb.append(StrUtil.format("第{}行重量无效;", row.getRowNum())); - }else { + } else { dto.setWeight(new BigDecimal(num)); } dto.setCreateBy(UserUtil.getUserName()); @@ -351,7 +373,7 @@ public class StructuralPackageControllerService { break; } }); - VUtil.trueThrowBusinessError(!sb.isEmpty()).throwMessage("数据校验失败:"+ sb); + VUtil.trueThrowBusinessError(!sb.isEmpty()).throwMessage("数据校验失败:" + sb); packageInfo.setWeight(materials.stream() .map(m -> m.getWeight().multiply(m.getNum())) .reduce(BigDecimal.ZERO, BigDecimal::add)); @@ -392,6 +414,116 @@ public class StructuralPackageControllerService { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); PdfGeneratorUtil.generatePdf(vo.getNo() + "老鼠图", html, outputStream); InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); - return fileUploadService.upload("tmp/sp/"+ RandomUtil.randomString(10)+".pdf",inputStream); + return fileUploadService.upload("tmp/sp/" + RandomUtil.randomString(10) + ".pdf", inputStream); + } + + @Transactional + public void materialStorage(List list, List items) { + items.forEach(this::syncStorage); + try { + inventoryService.in(list.stream().map(it -> new InventoryDTO() + .setMaterialNo(it.getItemCode()) + .setBatchNumber(it.getBatchNumber()) + .setFactoryNo(it.getFactory()) + .setWarehouseNo(it.getReceivedWarehouse()) + .setNum(it.getInspectionQty())) + .toList() + ); + Pair, Pair> pair = syncInToSAP(list); + list.forEach(it -> { + it.setMatDoc101(pair.getKey().getKey()); + it.setDocYear101(pair.getKey().getValue()); + it.setMatDoc103(pair.getValue().getKey()); + it.setDocYear103(pair.getValue().getValue()); + it.setDataStatus((short) 1); + it.setStorageLocation(StrUtil.join(",", items.stream() + .filter(f -> f.getMaterialNo().equals(it.getItemCode())) + .findFirst() + .get() + .getBinNos())); + }); + inTaskItemService.saveBatch(list); + } catch (Exception ex) { + saveSapError(list, ex.getMessage()); + } + } + + @Transactional(propagation = Propagation.REQUIRES_NEW) + public void saveSapError(List list, String msg) { + list.forEach(it -> { + it.setFailResult(msg); + }); + inTaskItemService.saveBatch(list); + } + + /** + * 同步入库信息到SAP + */ + private Pair, Pair> syncInToSAP(List list) { + ZWM3A17DTO ZWM3A17DTO = new ZWM3A17DTO() + .setEbeln(list.get(0).getPoNum()) + .setUsnam(UserUtil.getUserName()) + .setItem1(list.stream().map(it -> new ZWM3A17Item1DTO() + .setEBELP(it.getPoLineNumber()) + .setMATNR(it.getItemCode()) + .setERFMG(it.getInspectionQty()) + .setMEINS(it.getUnit()) + .setCHARG(it.getBatchNumber()) + .setWERKS(it.getFactory()) + .setLGORT(it.getReceivedWarehouse()) + .setKZKRI(it.getKzkri()) + ).toList() + ); + return sapService.zwm3a17(ZWM3A17DTO); + } + + private void syncStorage(MaterialStorageItemQO qo) { + Set dbMapBins = storageService.getBinNos(qo.getMaterialNo(), qo.getFactory(), qo.getReceivedWarehouse()); + if (!qo.getBinNos().equals(dbMapBins)) { + //保存库位信息到数据库 + DictionaryItem factory = dictionaryService.getItemByCode(Constant.DICTIONARY_FACTORY, qo.getFactory()); + VUtil.trueThrowBusinessError(Objects.isNull(factory)).throwMessage("工厂(" + qo.getFactory() + ")不存在"); + WmsWarehouse warehouse = warehouseService.lambdaQuery() + .eq(WmsWarehouse::getFactoryId, factory.getId()) + .eq(WmsWarehouse::getNo, qo.getReceivedWarehouse()) + .one(); + VUtil.trueThrowBusinessError(Objects.isNull(warehouse)).throwMessage("仓库(" + qo.getReceivedWarehouse() + ")不存在"); + WmsStorage storage = storageService.lambdaQuery() + .eq(WmsStorage::getMaterialNo, qo.getMaterialNo()) + .eq(WmsStorage::getWarehouseId, warehouse.getId()) + .one(); + if (Objects.isNull(storage)) { + storage = new WmsStorage() + .setWarehouseId(warehouse.getId()) + .setMaterialNo(qo.getMaterialNo()) + .setMaterialDesc(qo.getMaterialDesc()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + storageService.save(storage); + } else { + storageBinService.deleteByStorageId(storage.getId()); + } + List dbBins = wmsBinService.lambdaQuery().in(WmsBin::getNo, qo.getBinNos()).list(); + qo.getBinNos().forEach(binNo -> { + if (dbBins.stream().noneMatch(it -> StrUtil.equals(it.getNo(), binNo))) { + WmsBin bin = new WmsBin() + .setNo(binNo) + .setName(binNo) + .setWarehouseId(warehouse.getId()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + wmsBinService.save(bin); + dbBins.add(bin); + } + }); + WmsStorage finalStorage = storage; + storageBinService.saveBatch(dbBins.stream().map(bin -> new WmsStorageBin() + .setStorageId(finalStorage.getId()) + .setBinId(bin.getId())) + .toList() + ); + //调用SAP接口保存库位信息 + sapService.zwm3A02(qo.getFactory(), qo.getMaterialNo(), qo.getReceivedWarehouse(), qo.getBinNos()); + } } } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPOrderDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPOrderDTO.java index fa252a02..aca9edff 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPOrderDTO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPOrderDTO.java @@ -81,4 +81,9 @@ public class SAPOrderDTO { * 单位 */ private String unit; + + /** + * 标志:关键部件 + */ + private String kzkri; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/MaterialStorageItemQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/MaterialStorageItemQO.java index da5fcbb4..1c430380 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/MaterialStorageItemQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/MaterialStorageItemQO.java @@ -25,8 +25,7 @@ public class MaterialStorageItemQO { /** * 工厂 */ - @NotBlank - private String factory; + private String factory = "1010"; /** * 上架仓库 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageDeliverOrderSaveItemQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageDeliverOrderSaveItemQO.java index c9cb27a8..062b0a87 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageDeliverOrderSaveItemQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageDeliverOrderSaveItemQO.java @@ -74,6 +74,12 @@ public class PackageDeliverOrderSaveItemQO { @NotBlank private String unit; + /** + * 标志:关键部件 + */ + @NotBlank + private String kzkri; + @JsonIgnore private String key1; diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderVO.java index 1ac35454..d2e7d7da 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderVO.java @@ -149,4 +149,9 @@ public class DeliverStructuralPackageOrderVO { * 最后更新时间 */ private LocalDateTime updateTime; + + /** + * 标志:关键部件 + */ + private String kzkri; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InTaskInfoVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InTaskInfoVO.java index 367d3530..825feb81 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InTaskInfoVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InTaskInfoVO.java @@ -4,20 +4,15 @@ import com.nflg.wms.common.pojo.dto.TrayScanInfoDTO; import lombok.Data; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.List; @Data public class InTaskInfoVO { - /** - * 子任务id - */ private Long id; - /** - * 采购订单号 - */ - private String poNum; + private String taskNumber; /** * 采购订单行号 @@ -25,9 +20,14 @@ public class InTaskInfoVO { private String poLineNumber; /** - * 工厂 + * 采购订单号 */ - private String factory; + private String poNum; + + /** + * 送货单行号 + */ + private String lineNumber; /** * 送货单号 @@ -45,25 +45,112 @@ public class InTaskInfoVO { private String itemName; /** - * 上架数量 + * 物料单位 */ - private BigDecimal qualifiedQty; + private String unit; /** - * 上架仓库 + * 仓库编号 */ private String receivedWarehouse; /** - * 上架储位 + * 储位 */ - private String binNos; + private String storageLocation; + + /** + * 标志位 + */ + private Short signPosition; + + /** + * 是否质检 + */ + private Boolean isQuality; + + /** + * 不合格数量 + */ + private BigDecimal unqualifiedQty; + + /** + * 合格数量 + */ + private BigDecimal qualifiedQty; + + /** + * 工厂 + */ + private String factory; + + /** + * 数据状态 0 待上架;1 已上架 + */ + private Short dataStatus; + + /** + * sap 同步失败原因 + */ + private String failResult; + + /** + * 上架操作人 + */ + private Long operationUserId; + + /** + * 上架操作人 + */ + private String operationUserName; /** * 批次号 */ private String batchNumber; + /** + * 总数量 + */ + private BigDecimal inspectionQty; + + /** + * 101物料凭证编号 + */ + private String matDoc101; + + /** + * 101物料凭证年度 + */ + private String docYear101; + + /** + * 103物料凭证编号 + */ + private String matDoc103; + + /** + * 103物料凭证年度 + */ + private String docYear103; + + /** + * 物料有效期 + */ + private LocalDateTime periodTime; + + private String inspectionOrder; + + /** + * 供应商编码 + */ + private String supplierNum; + + /** + * 上架储位 + */ + private String binNos; + /** * 该订单下包含的托盘 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InTaskVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InTaskVO.java index 4f89e144..8038e7bb 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InTaskVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InTaskVO.java @@ -14,11 +14,6 @@ public class InTaskVO { */ private String taskNumber; - /** - * 任务来源 1、钢构包送货单 2、普通物料送货单 - */ - private Short taskFrom; - /** * 任务源单号 */ @@ -30,7 +25,7 @@ public class InTaskVO { private LocalDateTime updateTime; /** - * 0 待上架 1 上架中 2 已上架 + * 0 待上架 1 已上架 */ private Short taskStatus; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInTask.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInTask.java index 0114c930..9fb1fd4b 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInTask.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInTask.java @@ -55,9 +55,4 @@ public class WmsInTask implements Serializable { * 0 待上架 1 已上架 */ private Short taskStatus; - - /** - * SAP 同步成功或失败 - */ - private Boolean sapStatus; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInTaskItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInTaskItem.java index e53b54f6..befbc72a 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInTaskItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInTaskItem.java @@ -106,7 +106,7 @@ public class WmsInTaskItem implements Serializable { private String factory; /** - * 数据状态 0 待上架;1 已上架;2 sap同步失败 + * 数据状态 0 待上架;1 已上架 */ private Short dataStatus; @@ -170,4 +170,9 @@ public class WmsInTaskItem implements Serializable { * 供应商编码 */ private String supplierNum; + + /** + * 标志:关键部件 + */ + private String kzkri; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrder.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrder.java index 4252475f..e76bfc02 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrder.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrder.java @@ -111,4 +111,9 @@ public class WmsStructuralPackageOrder implements Serializable { * 最后更新时间 */ private LocalDateTime updateTime; + + /** + * 标志:关键部件 + */ + private String kzkri; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInTaskMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInTaskMapper.java index 3c3107e3..a748b29d 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInTaskMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInTaskMapper.java @@ -7,6 +7,8 @@ import com.nflg.wms.common.pojo.qo.InTaskSearchQO; import com.nflg.wms.common.pojo.vo.InTaskVO; import com.nflg.wms.repository.entity.WmsInTask; +import java.util.List; + /** *

* Mapper 接口 @@ -17,5 +19,7 @@ import com.nflg.wms.repository.entity.WmsInTask; */ public interface WmsInTaskMapper extends BaseMapper { - IPage searchForIn(InTaskSearchQO request, Page page); + List searchForIn(String no); + + IPage search(InTaskSearchQO request, Page objectPage); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskMapper.java index 2fef1f12..4b40ca4f 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskMapper.java @@ -19,5 +19,5 @@ import com.nflg.wms.repository.entity.WmsInventoryCheckTask; public interface WmsInventoryCheckTaskMapper extends BaseMapper { IPage search(InventoryCheckTaskSearchQO request, Page objectPage); - IPage getMatrials(InventoryCheckTaskMaterialsQO request, Page objectPage); + IPage getMaterials(InventoryCheckTaskMaterialsQO request, Page objectPage); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInTaskItemService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInTaskItemService.java index d14050e6..c1be666c 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInTaskItemService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInTaskItemService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.nflg.wms.common.pojo.qo.MaterialStorageQO; import com.nflg.wms.repository.entity.WmsInTaskItem; import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import java.util.List; @@ -21,4 +22,6 @@ public interface IWmsInTaskItemService extends IService { List getListForStorage(@Valid @NotNull String taskNo); List getForIn(@Valid @NotNull MaterialStorageQO request); + + List getByNo(@Valid @NotBlank String taskNo); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInTaskService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInTaskService.java index 1d476279..adf44a66 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInTaskService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInTaskService.java @@ -30,9 +30,13 @@ public interface IWmsInTaskService extends IService { */ boolean generateTask(List tasks, short taskSource) ; - IPage searchForIn(@Valid @NotNull InTaskSearchQO request); + List searchForIn(@Valid @NotBlank String no); void storage(@NotBlank String taskNo); WmsInTask getByNo(@Valid @NotNull String taskNo); + + void updateState(@NotBlank String taskNo); + + IPage search(@Valid @NotNull InTaskSearchQO request); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskService.java index fa67084a..3a2a5111 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskService.java @@ -30,5 +30,5 @@ public interface IWmsInventoryCheckTaskService extends IService getMatrials(@Valid InventoryCheckTaskMaterialsQO request); + IPage getMaterials(@Valid InventoryCheckTaskMaterialsQO request); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskItemServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskItemServiceImpl.java index c55a1ab4..fc69d126 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskItemServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskItemServiceImpl.java @@ -39,4 +39,11 @@ public class WmsInTaskItemServiceImpl extends ServiceImpl getByNo(String taskNo) { + return lambdaQuery() + .eq(WmsInTaskItem::getTaskNumber, taskNo) + .list(); + } } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskServiceImpl.java index b314aeb0..25aac54f 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInTaskServiceImpl.java @@ -88,8 +88,8 @@ public class WmsInTaskServiceImpl extends ServiceImpl searchForIn(InTaskSearchQO request) { - return baseMapper.searchForIn(request, new Page<>(request.getPage(), request.getPageSize())); + public List searchForIn(String no) { + return baseMapper.searchForIn(no); } @Override @@ -106,4 +106,24 @@ public class WmsInTaskServiceImpl extends ServiceImpl search(InTaskSearchQO request) { + return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); + } } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskServiceImpl.java index fbfc171b..7d7eeef3 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskServiceImpl.java @@ -146,7 +146,7 @@ public class WmsInventoryCheckTaskServiceImpl extends ServiceImpl getMatrials(InventoryCheckTaskMaterialsQO request) { - return baseMapper.getMatrials(request, new Page<>(request.getPage(), request.getPageSize())); + public IPage getMaterials(InventoryCheckTaskMaterialsQO request) { + return baseMapper.getMaterials(request, new Page<>(request.getPage(), request.getPageSize())); } } diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsInTaskMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsInTaskMapper.xml index 9de5eaa1..7406e6a9 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsInTaskMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsInTaskMapper.xml @@ -5,15 +5,25 @@ + + diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskMapper.xml index 36193d42..d55ffde1 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskMapper.xml @@ -21,7 +21,7 @@ - SELECT ictim.*,di."name" AS "factory_no",wh."no" AS "warehouse_no",get_binnos(s.id) AS "bin_nos",i.num AS "inventory_num" FROM wms_inventory_check_task_item_material ictim LEFT JOIN wms_inventory_check_task_item icti ON ictim.item_id=icti."id"