From 374ec166a253a4fa8d9fa28ad548d0f380f7d8da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 8 Aug 2025 14:04:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InProduceOrderController.java | 4 + .../admin/controller/InventoryController.java | 218 ++++++++++++++++++ .../admin/controller/WarehouseController.java | 8 + .../InventoryCheckTaskScanRecord.java | 70 ++++++ .../InventoryCheckTaskScanRecordResitory.java | 19 ++ .../PackageMaterialScanRecordRepository.java | 2 + .../service/WarehouseControllerService.java | 4 + .../qo/InventoryCheckTaskMaterialsQO.java | 12 + .../pojo/qo/InventoryCheckTaskSaveItemQO.java | 27 +++ .../pojo/qo/InventoryCheckTaskSaveQO.java | 43 ++++ .../pojo/qo/InventoryCheckTaskScanQO.java | 18 ++ .../pojo/qo/InventoryCheckTaskScanSaveQO.java | 20 ++ .../pojo/qo/InventoryCheckTaskSearchQO.java | 17 ++ .../pojo/vo/InventoryCheckTaskItemVO.java | 46 ++++ .../common/pojo/vo/InventoryCheckTaskVO.java | 67 ++++++ .../pojo/vo/WmsInProduceOrderItemVO.java | 2 + .../WmsInventoryCheckTaskItemMaterialVO.java | 61 +++++ .../entity/WmsInProduceOrderItem.java | 5 + .../entity/WmsInventoryCheckTask.java | 83 +++++++ .../entity/WmsInventoryCheckTaskItem.java | 51 ++++ .../WmsInventoryCheckTaskItemMaterial.java | 62 +++++ .../WmsInventoryCheckTaskItemMapper.java | 21 ++ ...sInventoryCheckTaskItemMaterialMapper.java | 15 ++ .../mapper/WmsInventoryCheckTaskMapper.java | 23 ++ .../repository/mapper/WmsWarehouseMapper.java | 4 + ...InventoryCheckTaskItemMaterialService.java | 15 ++ .../IWmsInventoryCheckTaskItemService.java | 25 ++ .../IWmsInventoryCheckTaskService.java | 34 +++ .../service/IWmsWarehouseService.java | 4 + ...ntoryCheckTaskItemMaterialServiceImpl.java | 19 ++ .../WmsInventoryCheckTaskItemServiceImpl.java | 37 +++ .../WmsInventoryCheckTaskServiceImpl.java | 135 +++++++++++ .../service/impl/WmsWarehouseServiceImpl.java | 10 + .../WmsInventoryCheckTaskItemMapper.xml | 25 ++ ...msInventoryCheckTaskItemMaterialMapper.xml | 5 + .../mapper/WmsInventoryCheckTaskMapper.xml | 34 +++ .../resources/mapper/WmsWarehouseMapper.xml | 17 ++ .../wms/repository/CodeGeneratorTest.java | 2 +- 38 files changed, 1263 insertions(+), 1 deletion(-) create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/InventoryCheckTaskScanRecord.java create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/InventoryCheckTaskScanRecordResitory.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskMaterialsQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSaveItemQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSaveQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskScanQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskScanSaveQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSearchQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InventoryCheckTaskItemVO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InventoryCheckTaskVO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInventoryCheckTaskItemMaterialVO.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTask.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTaskItem.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTaskItemMaterial.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskItemMapper.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskItemMaterialMapper.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskMapper.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskItemMaterialService.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskItemService.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskService.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskItemMaterialServiceImpl.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskItemServiceImpl.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskServiceImpl.java create mode 100644 nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskItemMapper.xml create mode 100644 nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskItemMaterialMapper.xml create mode 100644 nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskMapper.xml 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 c7717787..7717bb49 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 @@ -422,6 +422,10 @@ public class InProduceOrderController extends BaseController { } private void syncStorage(WmsInProduceOrderItemVO it,Set binNos){ + produceOrderItemService.lambdaUpdate() + .set(WmsInProduceOrderItem::getBinNos, StrUtil.join(",", binNos)) + .eq(WmsInProduceOrderItem::getId, it.getId()) + .update(); Set dbMapBins = storageService.getBinNos(it.getMaterialNo(), it.getFactoryNo(), it.getWarehouseNo()); if (!binNos.equals(dbMapBins)) { //调用SAP接口保存库位信息 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 new file mode 100644 index 00000000..eeadf010 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java @@ -0,0 +1,218 @@ +package com.nflg.wms.admin.controller; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.nflg.wms.admin.pojo.document.InventoryCheckTaskScanRecord; +import com.nflg.wms.admin.repository.InventoryCheckTaskScanRecordResitory; +import com.nflg.wms.admin.util.NoUtil; +import com.nflg.wms.common.pojo.ApiResult; +import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.dto.MaterialQRCodeContentDTO; +import com.nflg.wms.common.pojo.qo.*; +import com.nflg.wms.common.pojo.vo.InventoryCheckTaskItemVO; +import com.nflg.wms.common.pojo.vo.InventoryCheckTaskVO; +import com.nflg.wms.common.pojo.vo.WmsInventoryCheckTaskItemMaterialVO; +import com.nflg.wms.common.util.UserUtil; +import com.nflg.wms.common.util.VUtil; +import com.nflg.wms.repository.entity.WmsInventoryCheckTask; +import com.nflg.wms.repository.entity.WmsInventoryCheckTaskItem; +import com.nflg.wms.repository.entity.WmsInventoryCheckTaskItemMaterial; +import com.nflg.wms.repository.service.IWmsInventoryCheckTaskItemMaterialService; +import com.nflg.wms.repository.service.IWmsInventoryCheckTaskItemService; +import com.nflg.wms.repository.service.IWmsInventoryCheckTaskService; +import com.nflg.wms.starter.BaseController; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + * 库存相关 + */ +@Slf4j +@RestController +@RequestMapping("/inventory") +public class InventoryController extends BaseController { + + @Resource + private IWmsInventoryCheckTaskService inventoryCheckTaskService; + + @Resource + private IWmsInventoryCheckTaskItemService inventoryCheckTaskItemService; + + @Resource + private InventoryCheckTaskScanRecordResitory inventoryCheckTaskScanRecordResitory; + + @Resource + private IWmsInventoryCheckTaskItemMaterialService inventoryCheckTaskItemMaterialService; + + /** + * 保存库存盘点任务 + * @param request 请求参数 + */ + @PostMapping("save") + public ApiResult save(@Valid @RequestBody InventoryCheckTaskSaveQO request) { + inventoryCheckTaskService.save(request); + return ApiResult.success(); + } + + /** + * 查询库存盘点任务 + * @param request 请求参数 + */ + @PostMapping("search") + public ApiResult> search(@Valid @RequestBody InventoryCheckTaskSearchQO request) { + return ApiResult.success(inventoryCheckTaskService.search(request)); + } + + /** + * 发布库存盘点任务 + * @param id 任务id + */ + @PostMapping("publish") + public ApiResult publish(@Valid @RequestParam @NotNull Long id) { + inventoryCheckTaskService.publish(id); + return ApiResult.success(); + } + + /** + * 删除库存盘点任务 + * @param id ID + */ + @PostMapping("delete") + public ApiResult delete(@Valid @RequestParam @NotNull Long id) { + inventoryCheckTaskService.delete(id); + return ApiResult.success(); + } + + /** + * 获取用户的盘点任务(PDA使用) + * @param no 任务编号 + */ + @GetMapping("getTaskByUser") + public ApiResult> getTaskByUser(@Valid @RequestParam(required = false) String no) { + return ApiResult.success(inventoryCheckTaskItemService.getTaskByUser(UserUtil.getUserId(), no)); + } + + /** + * 盘点任务扫码(PDA使用) + * @param request 请求参数 + */ + @PostMapping("scan") + public ApiResult scan(@Valid @RequestBody InventoryCheckTaskScanQO request) { + WmsInventoryCheckTaskItem item = inventoryCheckTaskItemService.getById(request.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("未找到数据"); + WmsInventoryCheckTask task = inventoryCheckTaskService.getById(item.getTaskId()); + VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("未找到任务"); + VUtil.trueThrowBusinessError(!Objects.equals(task.getState(), 2)).throwMessage("任务未开始或已完成"); + MaterialQRCodeContentDTO qrCode = NoUtil.getMaterialQRCodeContent(request.getQrCode()); + VUtil.trueThrowBusinessError(inventoryCheckTaskScanRecordResitory.existsByTaskIdAndUniqNo(item.getTaskId(), qrCode.getUniqNo())) + .throwMessage("该二维码已盘点过了"); + inventoryCheckTaskScanRecordResitory.save(InventoryCheckTaskScanRecord.builder() + .taskId(item.getTaskId()) + .itemId(item.getId()) + .uniqNo(qrCode.getUniqNo()) + .batchNo(qrCode.getBatchNo()) + .serialNo(qrCode.getSerialNo()) + .num(qrCode.getNum()) + .createBy(UserUtil.getUserName()) + .createTime(Instant.now()) + .build() + ); + return ApiResult.success(); + } + + /** + * 批量保存盘点结果(PDA使用) + * @param request 请求参数 + */ + @PostMapping("saveScan") + public ApiResult saveScan(@Valid @RequestBody InventoryCheckTaskScanSaveQO request) { + InventoryCheckTaskItemVO item = inventoryCheckTaskItemService.getInfo(request.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("未找到数据"); + WmsInventoryCheckTask task = inventoryCheckTaskService.getById(item.getTaskId()); + VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("未找到任务"); + VUtil.trueThrowBusinessError(!Objects.equals(task.getState(), 2)).throwMessage("任务未开始或已完成"); + List records = inventoryCheckTaskScanRecordResitory.findByTaskId(item.getTaskId()); +// request.getQrCodes().removeIf(qrCode -> records.stream().anyMatch(record -> StrUtil.equals(record.getUniqNo(), NoUtil.getMaterialQRCodeContent(qrCode).getUniqNo()))); + List newRecords = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(request.getQrCodes())) { + List materials = new ArrayList<>(); + request.getQrCodes().forEach(qrCode -> { + MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode); + if (records.stream().noneMatch(record -> StrUtil.equals(record.getUniqNo(), qrCodeContent.getUniqNo()))) { + WmsInventoryCheckTaskItemMaterial material = materials.stream().filter(mit -> StrUtil.equals(mit.getMaterialNo(), qrCodeContent.getMaterialNo())).findFirst().orElse(null); + if (Objects.isNull(material)) { + material = new WmsInventoryCheckTaskItemMaterial() + .setId(IdUtil.getSnowflakeNextId()) + .setMaterialNo(qrCodeContent.getMaterialNo()) + .setMaterialDesc(qrCodeContent.getMaterialDesc()) + .setBatchNo(qrCodeContent.getBatchNo()) + .setItemId(item.getId()) + .setTaskId(item.getTaskId()) + .setNum(qrCodeContent.getNum()); + materials.add(material); + } else { + material.setNum(material.getNum().add(qrCodeContent.getNum())); + } + newRecords.add(InventoryCheckTaskScanRecord.builder() + .taskId(item.getTaskId()) + .itemId(item.getId()) + .uniqNo(qrCodeContent.getUniqNo()) + .materialNo(qrCodeContent.getMaterialNo()) + .materialId(material.getId()) + .batchNo(qrCodeContent.getBatchNo()) + .serialNo(qrCodeContent.getSerialNo()) + .num(qrCodeContent.getNum()) + .createBy(UserUtil.getUserName()) + .createTime(Instant.now()) + .build() + ); + } + }); + if (CollectionUtil.isNotEmpty(materials)) { + inventoryCheckTaskItemMaterialService.saveBatch(materials); + } + if (CollectionUtil.isNotEmpty(newRecords)) { + inventoryCheckTaskScanRecordResitory.saveAll(newRecords); + } + } + return ApiResult.success("保存" + newRecords.size() + "条数据成功"); + } + + /** + * 完成盘点任务(PDA使用) + * @param taskId 任务ID + */ + @PostMapping("complete") + public ApiResult complete(@Valid @RequestParam @NotNull Long taskId) { + inventoryCheckTaskService.complete(taskId); + return ApiResult.success(); + } + + /** + * 查看盘点结果 + * @param request 请求参数 + */ + @PostMapping("getMatrials") + public ApiResult> getMatrials(@Valid @RequestBody InventoryCheckTaskMaterialsQO request) { + return ApiResult.success(inventoryCheckTaskService.getMatrials(request)); + } + + /** + * 查询物料扫码记录 + * @param materialId 物料记录id + * @return 扫码记录列表 + */ + @GetMapping("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/WarehouseController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/WarehouseController.java index 3afd6e55..20d14277 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/WarehouseController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/WarehouseController.java @@ -112,4 +112,12 @@ public class WarehouseController extends BaseController { public void exportSearch(HttpServletResponse response,@Valid @RequestBody WarehouseSearchQO request) throws Exception { warehouseControllerService.exportSearch(response,request); } + + /** + * 获取启用的仓库列表 + */ + @GetMapping("getEnableList") + public ApiResult> getEnableList() { + return ApiResult.success(warehouseControllerService.getEnableList()); + } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/InventoryCheckTaskScanRecord.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/InventoryCheckTaskScanRecord.java new file mode 100644 index 00000000..affc965a --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/InventoryCheckTaskScanRecord.java @@ -0,0 +1,70 @@ +package com.nflg.wms.admin.pojo.document; + +import lombok.Builder; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.math.BigDecimal; +import java.time.Instant; + +@Data +@Builder +@Accessors(chain = true) +@Document(collection = "InventoryCheckTaskScanRecord") +public class InventoryCheckTaskScanRecord { + + @Id + private String id; + + /** + * 任务ID + */ + private Long taskId; + + /** + * 任务项ID + */ + private Long itemId; + + /** + * 唯一编号 + */ + private String uniqNo; + + /** + * 物料id + */ + private Long materialId; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 序列号 + */ + private String serialNo; + + /** + * 数量 + */ + private BigDecimal num; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private Instant createTime; +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/InventoryCheckTaskScanRecordResitory.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/InventoryCheckTaskScanRecordResitory.java new file mode 100644 index 00000000..3493ad71 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/InventoryCheckTaskScanRecordResitory.java @@ -0,0 +1,19 @@ +package com.nflg.wms.admin.repository; + +import com.nflg.wms.admin.pojo.document.InventoryCheckTaskScanRecord; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface InventoryCheckTaskScanRecordResitory extends MongoRepository { + + boolean existsByTaskIdAndUniqNo(Long taskId, String uniqNo); + + List findByTaskId(Long taskId); + + List findByMaterialId(@Valid @NotNull Long materialId); +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/PackageMaterialScanRecordRepository.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/PackageMaterialScanRecordRepository.java index 4184e7e0..c81fa994 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/PackageMaterialScanRecordRepository.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/PackageMaterialScanRecordRepository.java @@ -2,7 +2,9 @@ package com.nflg.wms.admin.repository; import com.nflg.wms.admin.pojo.document.PackageMaterialScanRecord; import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; +@Repository public interface PackageMaterialScanRecordRepository extends MongoRepository { } \ No newline at end of file diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/WarehouseControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/WarehouseControllerService.java index 4ab60c7a..2bf7837c 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/WarehouseControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/WarehouseControllerService.java @@ -199,4 +199,8 @@ public class WarehouseControllerService { .addSheet(new ListSheet<>(datas)) .writeTo(response.getOutputStream()); } + + public List getEnableList() { + return warehouseService.getEnableList(); + } } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskMaterialsQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskMaterialsQO.java new file mode 100644 index 00000000..b8d63929 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskMaterialsQO.java @@ -0,0 +1,12 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; + +@Data +public class InventoryCheckTaskMaterialsQO extends SearchBaseQO { + + /** + * 盘点任务ID + */ + private Long taskId; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSaveItemQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSaveItemQO.java new file mode 100644 index 00000000..862bb260 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSaveItemQO.java @@ -0,0 +1,27 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class InventoryCheckTaskSaveItemQO { + + /** + * 仓库id + */ + @NotNull + private Long warehouseId; + + /** + * 盘点负责人 + */ + @NotBlank + private String chargeUserName; + + /** + * 盘点负责人id + */ + @NotNull + private Integer chargeUserId; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSaveQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSaveQO.java new file mode 100644 index 00000000..9235a66a --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSaveQO.java @@ -0,0 +1,43 @@ +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 java.time.LocalDate; +import java.util.List; + +@Data +public class InventoryCheckTaskSaveQO { + + private Long id; + + /** + * 任务开始时间 + */ + @NotNull + private LocalDate startTime; + + /** + * 任务结束时间 + */ + @NotNull + private LocalDate endTime; + + /** + * 财务负责人 + */ + @NotBlank + private String financeUserName; + + /** + * 任务说明 + */ + private String remark; + + @Valid + @NotEmpty + private List items; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskScanQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskScanQO.java new file mode 100644 index 00000000..75963074 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskScanQO.java @@ -0,0 +1,18 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class InventoryCheckTaskScanQO { + + @NotNull + private Long id; + + /** + * 二维码内容 + */ + @NotBlank + private String qrCode; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskScanSaveQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskScanSaveQO.java new file mode 100644 index 00000000..e4451d22 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskScanSaveQO.java @@ -0,0 +1,20 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +@Data +public class InventoryCheckTaskScanSaveQO { + + @NotNull + private Long id; + + /** + * 二维码列表 + */ + @NotEmpty + private List qrCodes; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSearchQO.java new file mode 100644 index 00000000..7c84a505 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryCheckTaskSearchQO.java @@ -0,0 +1,17 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; + +@Data +public class InventoryCheckTaskSearchQO extends SearchBaseQO { + + /** + * 盘点任务号 + */ + private String no; + + /** + * 任务状态:0:未发布;1:已发布;2:进行中;3:已完成 + */ + private Integer state; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InventoryCheckTaskItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InventoryCheckTaskItemVO.java new file mode 100644 index 00000000..2e13f2a7 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InventoryCheckTaskItemVO.java @@ -0,0 +1,46 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class InventoryCheckTaskItemVO { + + private Long id; + + /** + * 盘点任务id + */ + private Long taskId; + + /** + * 盘点任务号 + */ + private String taskNo; + + /** + * 任务开始时间 + */ + private LocalDate startTime; + + /** + * 任务结束时间 + */ + private LocalDate endTime; + + /** + * 财务负责人 + */ + private String financeUserName; + + /** + * 工厂编号 + */ + private String factoryNo; + + /** + * 仓库名称 + */ + private String warehouseName; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InventoryCheckTaskVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InventoryCheckTaskVO.java new file mode 100644 index 00000000..f28e6db6 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InventoryCheckTaskVO.java @@ -0,0 +1,67 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +public class InventoryCheckTaskVO { + + private Long id; + + /** + * 盘点任务号 + */ + private String taskNo; + + /** + * 仓库编号 + */ + private String warehouseNos; + + /** + * 任务状态:0:未发布;1:已发布;2:进行中;3:已完成 + */ + private Integer state; + + /** + * 任务开始时间 + */ + private LocalDate startTime; + + /** + * 任务结束时间 + */ + private LocalDate endTime; + + /** + * 财务负责人 + */ + private String financeUserName; + + /** + * 任务说明 + */ + private String remark; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 最后更新人 + */ + private String updateBy; + + /** + * 最后更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInProduceOrderItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInProduceOrderItemVO.java index f40a0d94..8986bf1a 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInProduceOrderItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInProduceOrderItemVO.java @@ -9,6 +9,8 @@ import java.math.BigDecimal; @Accessors(chain = true) public class WmsInProduceOrderItemVO { + private Long id; + /** * 父级id */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInventoryCheckTaskItemMaterialVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInventoryCheckTaskItemMaterialVO.java new file mode 100644 index 00000000..c615672f --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/WmsInventoryCheckTaskItemMaterialVO.java @@ -0,0 +1,61 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class WmsInventoryCheckTaskItemMaterialVO { + + private Long id; + + /** + * 盘点任务id + */ + private Long taskId; + + /** + * 盘点任务项id + */ + private Long itemId; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 物料描述 + */ + private String materialDesc; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 数量 + */ + private BigDecimal num; + + /** + * 工厂编号 + */ + private String factoryNo; + + /** + * 仓库编号 + */ + private String warehouseNo; + + /** + * 储位编号 + */ + private String binNos; + + /** + * 库存数量 + */ + private BigDecimal inventoryNum; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInProduceOrderItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInProduceOrderItem.java index 06751c6d..753c2430 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInProduceOrderItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInProduceOrderItem.java @@ -76,6 +76,11 @@ public class WmsInProduceOrderItem implements Serializable { */ private String warehouseNo; + /** + * 储位 + */ + private String binNos; + /** * 批次号 */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTask.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTask.java new file mode 100644 index 00000000..e3d65855 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTask.java @@ -0,0 +1,83 @@ +package com.nflg.wms.repository.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("wms_inventory_check_task") +public class WmsInventoryCheckTask implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 盘点任务号 + */ + private String taskNo; + + /** + * 任务状态:0:未发布;1:已发布;2:进行中;3:已完成 + */ + private Integer state; + + /** + * 任务开始时间 + */ + private LocalDate startTime; + + /** + * 任务结束时间 + */ + private LocalDate endTime; + + /** + * 财务负责人 + */ + private String financeUserName; + + /** + * 任务说明 + */ + private String remark; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 最后更新人 + */ + private String updateBy; + + /** + * 最后更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTaskItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTaskItem.java new file mode 100644 index 00000000..47354dc9 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTaskItem.java @@ -0,0 +1,51 @@ +package com.nflg.wms.repository.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * + *

+ * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("wms_inventory_check_task_item") +public class WmsInventoryCheckTaskItem implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 盘点任务id + */ + private Long taskId; + + /** + * 仓库id + */ + private Long warehouseId; + + /** + * 盘点负责人 + */ + private String chargeUserName; + + /** + * 盘点负责人id + */ + private Integer chargeUserId; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTaskItemMaterial.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTaskItemMaterial.java new file mode 100644 index 00000000..f68d79b3 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsInventoryCheckTaskItemMaterial.java @@ -0,0 +1,62 @@ +package com.nflg.wms.repository.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * + *

+ * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("wms_inventory_check_task_item_material") +public class WmsInventoryCheckTaskItemMaterial implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 盘点任务id + */ + private Long taskId; + + /** + * 盘点任务项id + */ + private Long itemId; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 物料描述 + */ + private String materialDesc; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 数量 + */ + private BigDecimal num; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskItemMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskItemMapper.java new file mode 100644 index 00000000..270188af --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskItemMapper.java @@ -0,0 +1,21 @@ +package com.nflg.wms.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.wms.common.pojo.vo.InventoryCheckTaskItemVO; +import com.nflg.wms.repository.entity.WmsInventoryCheckTaskItem; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * @author 代码生成器生成 + * @since 2025 + */ +public interface WmsInventoryCheckTaskItemMapper extends BaseMapper { + + List getTaskByUser(Long userId, String no); + + InventoryCheckTaskItemVO getInfo(Long id); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskItemMaterialMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskItemMaterialMapper.java new file mode 100644 index 00000000..485e7cbb --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskItemMaterialMapper.java @@ -0,0 +1,15 @@ +package com.nflg.wms.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.wms.repository.entity.WmsInventoryCheckTaskItemMaterial; + +/** + *

+ * Mapper 接口 + *

+ * @author 代码生成器生成 + * @since 2025 + */ +public interface WmsInventoryCheckTaskItemMaterialMapper extends BaseMapper { + +} 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 new file mode 100644 index 00000000..c4e385e9 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsInventoryCheckTaskMapper.java @@ -0,0 +1,23 @@ +package com.nflg.wms.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.wms.common.pojo.qo.InventoryCheckTaskMaterialsQO; +import com.nflg.wms.common.pojo.qo.InventoryCheckTaskSearchQO; +import com.nflg.wms.common.pojo.vo.InventoryCheckTaskVO; +import com.nflg.wms.common.pojo.vo.WmsInventoryCheckTaskItemMaterialVO; +import com.nflg.wms.repository.entity.WmsInventoryCheckTask; + +/** + *

+ * Mapper 接口 + *

+ * @author 代码生成器生成 + * @since 2025 + */ +public interface WmsInventoryCheckTaskMapper extends BaseMapper { + IPage search(InventoryCheckTaskSearchQO request, Page objectPage); + + IPage getMatrials(InventoryCheckTaskMaterialsQO request, Page objectPage); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsWarehouseMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsWarehouseMapper.java index 9c70f4e7..113b8b4c 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsWarehouseMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsWarehouseMapper.java @@ -25,4 +25,8 @@ public interface WmsWarehouseMapper extends BaseMapper { List getList(List ids); List searchNonPage(@Param("request") WarehouseSearchQO request); + + List getEnableList(); + + List getListByIds(List list); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskItemMaterialService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskItemMaterialService.java new file mode 100644 index 00000000..43e10ba7 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskItemMaterialService.java @@ -0,0 +1,15 @@ +package com.nflg.wms.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.wms.repository.entity.WmsInventoryCheckTaskItemMaterial; + +/** + *

+ * 服务类 + *

+ * @author 代码生成器生成 + * @since 2025 + */ +public interface IWmsInventoryCheckTaskItemMaterialService extends IService { + +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskItemService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskItemService.java new file mode 100644 index 00000000..0895a996 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskItemService.java @@ -0,0 +1,25 @@ +package com.nflg.wms.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.wms.common.pojo.vo.InventoryCheckTaskItemVO; +import com.nflg.wms.repository.entity.WmsInventoryCheckTaskItem; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * @author 代码生成器生成 + * @since 2025 + */ +public interface IWmsInventoryCheckTaskItemService extends IService { + + void deleteByTaskId(Long id); + + List getTaskByUser(Long userId, @Valid String no); + + InventoryCheckTaskItemVO getInfo(@NotNull Long id); +} 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 new file mode 100644 index 00000000..cc08a37e --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsInventoryCheckTaskService.java @@ -0,0 +1,34 @@ +package com.nflg.wms.repository.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.wms.common.pojo.qo.InventoryCheckTaskMaterialsQO; +import com.nflg.wms.common.pojo.qo.InventoryCheckTaskSaveQO; +import com.nflg.wms.common.pojo.qo.InventoryCheckTaskSearchQO; +import com.nflg.wms.common.pojo.vo.InventoryCheckTaskVO; +import com.nflg.wms.common.pojo.vo.WmsInventoryCheckTaskItemMaterialVO; +import com.nflg.wms.repository.entity.WmsInventoryCheckTask; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; + +/** + *

+ * 服务类 + *

+ * @author 代码生成器生成 + * @since 2025 + */ +public interface IWmsInventoryCheckTaskService extends IService { + + void save(InventoryCheckTaskSaveQO request); + + IPage search(@Valid InventoryCheckTaskSearchQO request); + + void delete(Long id); + + void publish(@Valid @NotNull Long id); + + void complete(@Valid @NotNull Long taskId); + + IPage getMatrials(@Valid InventoryCheckTaskMaterialsQO request); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsWarehouseService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsWarehouseService.java index 8d36bf89..ec462c7a 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsWarehouseService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsWarehouseService.java @@ -36,4 +36,8 @@ public interface IWmsWarehouseService extends IService { List getList(); List searchNonPage(@Valid WarehouseSearchQO request); + + List getEnableList(); + + List getListByIds(List list); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskItemMaterialServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskItemMaterialServiceImpl.java new file mode 100644 index 00000000..32c165d9 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskItemMaterialServiceImpl.java @@ -0,0 +1,19 @@ +package com.nflg.wms.repository.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.wms.repository.entity.WmsInventoryCheckTaskItemMaterial; +import com.nflg.wms.repository.mapper.WmsInventoryCheckTaskItemMaterialMapper; +import com.nflg.wms.repository.service.IWmsInventoryCheckTaskItemMaterialService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class WmsInventoryCheckTaskItemMaterialServiceImpl extends ServiceImpl implements IWmsInventoryCheckTaskItemMaterialService { + +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskItemServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskItemServiceImpl.java new file mode 100644 index 00000000..3cc10381 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskItemServiceImpl.java @@ -0,0 +1,37 @@ +package com.nflg.wms.repository.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.wms.common.pojo.vo.InventoryCheckTaskItemVO; +import com.nflg.wms.repository.entity.WmsInventoryCheckTaskItem; +import com.nflg.wms.repository.mapper.WmsInventoryCheckTaskItemMapper; +import com.nflg.wms.repository.service.IWmsInventoryCheckTaskItemService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class WmsInventoryCheckTaskItemServiceImpl extends ServiceImpl implements IWmsInventoryCheckTaskItemService { + + @Override + public void deleteByTaskId(Long id) { + remove(new LambdaQueryWrapper().eq(WmsInventoryCheckTaskItem::getTaskId, id)); + } + + @Override + public List getTaskByUser(Long userId, String no) { + return baseMapper.getTaskByUser(userId, no); + } + + @Override + public InventoryCheckTaskItemVO getInfo(Long id) { + return baseMapper.getInfo(id); + } +} 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 new file mode 100644 index 00000000..f078b29b --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsInventoryCheckTaskServiceImpl.java @@ -0,0 +1,135 @@ +package com.nflg.wms.repository.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.wms.common.pojo.qo.InventoryCheckTaskMaterialsQO; +import com.nflg.wms.common.pojo.qo.InventoryCheckTaskSaveQO; +import com.nflg.wms.common.pojo.qo.InventoryCheckTaskSearchQO; +import com.nflg.wms.common.pojo.vo.InventoryCheckTaskVO; +import com.nflg.wms.common.pojo.vo.WarehouseVO; +import com.nflg.wms.common.pojo.vo.WmsInventoryCheckTaskItemMaterialVO; +import com.nflg.wms.common.util.DateTimeUtil; +import com.nflg.wms.common.util.UserUtil; +import com.nflg.wms.common.util.VUtil; +import com.nflg.wms.repository.entity.WmsInventoryCheckTask; +import com.nflg.wms.repository.entity.WmsInventoryCheckTaskItem; +import com.nflg.wms.repository.mapper.WmsInventoryCheckTaskMapper; +import com.nflg.wms.repository.service.IWmsInventoryCheckTaskItemService; +import com.nflg.wms.repository.service.IWmsInventoryCheckTaskService; +import com.nflg.wms.repository.service.IWmsWarehouseService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 服务实现类 + *

+ * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class WmsInventoryCheckTaskServiceImpl extends ServiceImpl implements IWmsInventoryCheckTaskService { + + @Resource + private IWmsInventoryCheckTaskItemService inventoryCheckTaskItemService; + + @Resource + private IWmsWarehouseService warehouseService; + + @Transactional + @Override + public void save(InventoryCheckTaskSaveQO request) { + WmsInventoryCheckTask task; + if (Objects.isNull(request.getId())) { + task = new WmsInventoryCheckTask() + .setTaskNo("ICT" + DateTimeUtil.format(LocalDateTime.now(), "yyyyMMddHHmmss")) + .setRemark(request.getRemark()) + .setStartTime(request.getStartTime()) + .setEndTime(request.getEndTime()) + .setFinanceUserName(request.getFinanceUserName()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + save(task); + } else { + task = getById(request.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("未找到盘点任务"); + VUtil.trueThrowBusinessError(!Objects.equals(task.getState(), 0)).throwMessage("未发布状态才能修改"); + task.setRemark(request.getRemark()) + .setStartTime(request.getStartTime()) + .setEndTime(request.getEndTime()) + .setFinanceUserName(request.getFinanceUserName()) + .setUpdateBy(UserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()); + updateById(task); + inventoryCheckTaskItemService.remove(new LambdaQueryWrapper().eq(WmsInventoryCheckTaskItem::getTaskId, request.getId())); + } + inventoryCheckTaskItemService.saveBatch(request.getItems().stream().map(item -> + new WmsInventoryCheckTaskItem() + .setTaskId(task.getId()) + .setWarehouseId(item.getWarehouseId()) + .setChargeUserName(item.getChargeUserName()) + .setChargeUserId(item.getChargeUserId()) + ).toList() + ); + } + + @Override + public IPage search(InventoryCheckTaskSearchQO request) { + IPage datas = baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); + datas.getRecords().forEach(it -> { + List items = inventoryCheckTaskItemService.lambdaQuery().eq(WmsInventoryCheckTaskItem::getTaskId, it.getId()).list(); + List warehouseVOS = warehouseService.getListByIds(items.stream().map(WmsInventoryCheckTaskItem::getWarehouseId).toList()); + it.setWarehouseNos(StrUtil.join(",", warehouseVOS.stream().map(w -> w.getNo() + "【" + w.getFactoryName() + "】").toList())); + }); + return datas; + } + + @Transactional + @Override + public void delete(Long id) { + removeById(id); + inventoryCheckTaskItemService.deleteByTaskId(id); + } + + @Override + public void publish(Long id) { + WmsInventoryCheckTask task = getById(id); + VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("未找到盘点任务"); + VUtil.trueThrowBusinessError(!Objects.equals(task.getState(), 0)).throwMessage("请勿重复发布"); + Integer state = task.getStartTime().isAfter(LocalDate.now()) ? 1 : 2; + lambdaUpdate() + .set(WmsInventoryCheckTask::getState, state) + .set(WmsInventoryCheckTask::getUpdateBy, UserUtil.getUserName()) + .set(WmsInventoryCheckTask::getUpdateTime, LocalDateTime.now()) + .eq(WmsInventoryCheckTask::getId, id) + .update(); + } + + @Override + public void complete(Long taskId) { + WmsInventoryCheckTask task = getById(taskId); + VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("未找到任务"); + VUtil.trueThrowBusinessError(!Objects.equals(task.getState(), 2)).throwMessage("任务未开始或已完成"); + lambdaUpdate() + .set(WmsInventoryCheckTask::getState, 3) + .set(WmsInventoryCheckTask::getUpdateBy, UserUtil.getUserName()) + .set(WmsInventoryCheckTask::getUpdateTime, LocalDateTime.now()) + .eq(WmsInventoryCheckTask::getId, taskId) + .eq(WmsInventoryCheckTask::getState, 2) + .update(); + } + + @Override + public IPage getMatrials(InventoryCheckTaskMaterialsQO request) { + return baseMapper.getMatrials(request, new Page<>(request.getPage(), request.getPageSize())); + } +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsWarehouseServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsWarehouseServiceImpl.java index 925aacef..4945fbbc 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsWarehouseServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsWarehouseServiceImpl.java @@ -104,4 +104,14 @@ public class WmsWarehouseServiceImpl extends ServiceImpl searchNonPage(WarehouseSearchQO request) { return baseMapper.searchNonPage(request); } + + @Override + public List getEnableList() { + return baseMapper.getEnableList(); + } + + @Override + public List getListByIds(List list) { + return baseMapper.getListByIds(list); + } } diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskItemMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskItemMapper.xml new file mode 100644 index 00000000..a92a7697 --- /dev/null +++ b/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskItemMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskItemMaterialMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskItemMaterialMapper.xml new file mode 100644 index 00000000..f9b92c35 --- /dev/null +++ b/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskItemMaterialMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskMapper.xml new file mode 100644 index 00000000..58122461 --- /dev/null +++ b/nflg-wms-repository/src/main/resources/mapper/WmsInventoryCheckTaskMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsWarehouseMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsWarehouseMapper.xml index 35dd3cbf..0f312076 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsWarehouseMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsWarehouseMapper.xml @@ -39,4 +39,21 @@ + + + + diff --git a/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java b/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java index 1e446cd5..b287b7f6 100644 --- a/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java +++ b/nflg-wms-repository/src/test/java/com/nflg/wms/repository/CodeGeneratorTest.java @@ -33,7 +33,7 @@ public class CodeGeneratorTest { ) .strategyConfig(builder -> { builder - .addInclude("wms_in_produce_order_item") //只生成指定表 + .addInclude("wms_inventory_check_task_item_material") //只生成指定表 .entityBuilder().idType(IdType.ASSIGN_ID) .enableLombok() .enableChainModel()