From 10b9d39e53a1e6cccd7d65daddd566b1bbf7e31e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 2 Jul 2025 14:20:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=82=A8=E4=BD=8D?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/admin/controller/BinController.java | 97 ++++++++++ .../admin/service/BinControllerService.java | 169 ++++++++++++++++++ .../service/WarehouseControllerService.java | 2 +- .../common/pojo/dto/BinExcelExportDTO.java | 34 ++++ .../common/pojo/dto/BinExcelImportDTO.java | 38 ++++ .../com/nflg/wms/common/pojo/qo/BinAddQO.java | 36 ++++ .../nflg/wms/common/pojo/qo/BinSearchQO.java | 13 ++ .../nflg/wms/common/pojo/qo/BinUpdateQO.java | 11 ++ .../com/nflg/wms/common/pojo/vo/BinVO.java | 76 ++++++++ .../nflg/wms/repository/entity/WmsBin.java | 88 +++++++++ .../wms/repository/mapper/WmsBinMapper.java | 25 +++ .../repository/service/IWmsBinService.java | 35 ++++ .../service/impl/WmsBinServiceImpl.java | 97 ++++++++++ .../service/impl/WmsWarehouseServiceImpl.java | 8 +- .../main/resources/mapper/WmsBinMapper.xml | 26 +++ .../wms/repository/CodeGeneratorTest.java | 2 +- 16 files changed, 754 insertions(+), 3 deletions(-) create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BinController.java create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BinControllerService.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelExportDTO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelImportDTO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinAddQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinSearchQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinUpdateQO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BinVO.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsBin.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsBinMapper.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBinService.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBinServiceImpl.java create mode 100644 nflg-wms-repository/src/main/resources/mapper/WmsBinMapper.xml diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BinController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BinController.java new file mode 100644 index 00000000..0f296426 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/BinController.java @@ -0,0 +1,97 @@ +package com.nflg.wms.admin.controller; + +import com.nflg.wms.admin.service.BinControllerService; +import com.nflg.wms.common.pojo.ApiResult; +import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.qo.BinAddQO; +import com.nflg.wms.common.pojo.qo.BinSearchQO; +import com.nflg.wms.common.pojo.qo.BinUpdateQO; +import com.nflg.wms.common.pojo.qo.EnableQO; +import com.nflg.wms.common.pojo.vo.BinVO; +import com.nflg.wms.starter.BaseController; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + * 储位管理 + */ +@RestController +@RequestMapping("/bin") +public class BinController extends BaseController { + + @Resource + private BinControllerService binControllerService; + + /** + * 新增储位 + */ + @PostMapping("add") + public ApiResult add(@Valid @RequestBody BinAddQO request){ + binControllerService.add(request); + return ApiResult.success(); + } + + /** + * 更新储位 + */ + @PostMapping("update") + public ApiResult update(@Valid @RequestBody BinUpdateQO request){ + binControllerService.update(request); + return ApiResult.success(); + } + + /** + * 删除储位 + */ + @PostMapping("delete") + public ApiResult delete(@Valid @NotNull Long id){ + binControllerService.delete(id); + return ApiResult.success(); + } + + /** + * 启用/禁用储位 + * @param request 请求参数 + */ + @PostMapping("/enable") + public ApiResult enable(@Valid @RequestBody EnableQO request){ + binControllerService.enable(request); + return ApiResult.success(); + } + + /** + * 搜索储位 + * @param request 搜索参数 + */ + @PostMapping("search") + public ApiResult> search(@Valid @RequestBody BinSearchQO request){ + return ApiResult.success(binControllerService.search(request)); + } + + /** + * 导入储位 + * @param file 文件 + */ + @Transactional + @PostMapping("import") + public ApiResult importFromExcel(HttpServletResponse response, @RequestParam(value = "file") MultipartFile file) throws IOException { + return binControllerService.importFromExcel(response,file); + } + + /** + * 导出选中的仓库,为空时导出模版 + * @param ids 选中的id集合 + */ + @PostMapping("export") + public void exportSelect(HttpServletResponse response,@RequestBody List ids) throws Exception { + binControllerService.exportSelect(response,ids); + } +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BinControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BinControllerService.java new file mode 100644 index 00000000..4a8f805d --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BinControllerService.java @@ -0,0 +1,169 @@ +package com.nflg.wms.admin.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.pojo.ApiResult; +import com.nflg.wms.common.pojo.dto.BinExcelExportDTO; +import com.nflg.wms.common.pojo.dto.BinExcelImportDTO; +import com.nflg.wms.common.pojo.qo.BinAddQO; +import com.nflg.wms.common.pojo.qo.BinSearchQO; +import com.nflg.wms.common.pojo.qo.BinUpdateQO; +import com.nflg.wms.common.pojo.qo.EnableQO; +import com.nflg.wms.common.pojo.vo.BinVO; +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.WmsBin; +import com.nflg.wms.repository.entity.WmsWarehouse; +import com.nflg.wms.repository.service.IWmsBinService; +import com.nflg.wms.repository.service.IWmsWarehouseService; +import com.nflg.wms.starter.service.FileUploadService; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import org.ttzero.excel.entity.ListSheet; +import org.ttzero.excel.entity.Workbook; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +@Component +public class BinControllerService { + + @Resource + private IWmsBinService binService; + + @Resource + private IWmsWarehouseService wmsWarehouseService; + + @Resource + private FileUploadService fileUploadService; + + public void add(@Valid BinAddQO request) { + WmsBin bin = Convert.convert(WmsBin.class, request); + bin.setCreateBy(UserUtil.getUserName()); + bin.setCreateTime(LocalDateTime.now()); + binService.add(bin); + } + + public void update(@Valid BinUpdateQO request) { + WmsBin bin = Convert.convert(WmsBin.class, request); + bin.setUpdateBy(UserUtil.getUserName()); + bin.setUpdateTime(LocalDateTime.now()); + binService.update(bin); + } + + public void delete(@Valid @NotNull Long id) { + binService.delete(id); + } + + public void enable(@Valid EnableQO request) { + binService.enable(request); + } + + public IPage search(@Valid BinSearchQO request) { + return binService.search(request); + } + + @Transactional + public ApiResult importFromExcel(HttpServletResponse response, MultipartFile file) throws IOException { + List data = EecExcelUtil.getExcelContext(file.getInputStream(), BinExcelImportDTO.class); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(data)).throwMessage("导入文件内容为空"); + if (updateCheckAndImport(data)) { + return ApiResult.success(); + } else { + try(ByteArrayOutputStream osOut = new ByteArrayOutputStream()) { + new Workbook() + .addSheet(new ListSheet<>(data)) + .writeTo(osOut); + try(ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) { + return ApiResult.error(STATE.DataNoCheckPass, "导入文件失败",fileUploadService.upload("temp/" + DateTimeUtil.format(LocalDate.now(),"yyyyMMdd")+"/"+ IdUtil.fastUUID() + ".xlsx", isIn)); + } + }catch (Exception e){ + return ApiResult.error(STATE.BusinessError, "保存文件出错"); + } + } + } + + @Transactional + public boolean updateCheckAndImport(List data) { + List bins = new ArrayList<>(); + for (BinExcelImportDTO dto : data) { + WmsBin bin = new WmsBin(); + StringBuilder sb = new StringBuilder(); + if (StrUtil.isBlank(dto.getWarehouseNo())) { + sb.append("仓库编号不能为空;"); + }else if(StrUtil.isBlank(dto.getNo())){ + sb.append("储位编号不能为空;"); + } + else { + WmsWarehouse warehouse=wmsWarehouseService.lambdaQuery().eq(WmsWarehouse::getNo, dto.getWarehouseNo()).one(); + if (Objects.isNull(warehouse)){ + sb.append("仓库编号无效;"); + }else { + bin = binService.lambdaQuery().eq(WmsBin::getNo, dto.getNo()).eq(WmsBin::getWarehouseId, warehouse.getId()).one(); + if (Objects.isNull(bin)) { + bin = new WmsBin() + .setNo(dto.getNo()) + .setWarehouseId(warehouse.getId()) + .setEnable(true) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + }else { + bin.setUpdateBy(UserUtil.getUserName()); + bin.setUpdateTime(LocalDateTime.now()); + } + } + } + if (StrUtil.isBlank(dto.getName())){ + sb.append("仓库名称不能为空;"); + }else { + bin.setName(dto.getName()); + } + bin.setRemark(dto.getRemark()); + dto.setError(sb.toString()); + bins.add(bin); + } + if (data.stream().noneMatch(it -> StrUtil.isNotBlank(it.getError()))) { + binService.saveOrUpdateBatch(bins); + return true; + } + return false; + } + + public void exportSelect(HttpServletResponse response, List ids) throws IOException { + List binVOS = CollectionUtil.isNotEmpty(ids) ? binService.getList(ids) : new ArrayList<>(); + List datas = binVOS.stream().map(bin -> Convert.convert(BinExcelExportDTO.class, bin)).collect(Collectors.toList()); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("储位导出.xlsx", StandardCharsets.UTF_8)); + if (CollectionUtil.isEmpty(datas)) { + datas.add(new BinExcelExportDTO() + .setNo("(必填)储位编号") + .setName("(必填)储位名称") + .setRemark("备注信息,此行为提示信息,导入时请删除")); + } + new Workbook() + .addSheet(new ListSheet<>(datas)) + .writeTo(response.getOutputStream()); + } +} 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 e32b83c5..d14701e1 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 @@ -138,7 +138,7 @@ public class WarehouseControllerService { for (WarehouseExcelImportDTO dto : data) { WmsWarehouse wmsWarehouse = new WmsWarehouse(); StringBuilder sb = new StringBuilder(); - if (Objects.isNull(dto.getNo())) { + if (StrUtil.isBlank(dto.getNo())) { sb.append("仓库编号不能为空;"); } else { wmsWarehouse = warehouseService.lambdaQuery().eq(WmsWarehouse::getNo, dto.getNo()).one(); diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelExportDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelExportDTO.java new file mode 100644 index 00000000..ab2dd489 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelExportDTO.java @@ -0,0 +1,34 @@ +package com.nflg.wms.common.pojo.dto; + +import lombok.Data; +import lombok.experimental.Accessors; +import org.ttzero.excel.annotation.ExcelColumn; + +@Data +@Accessors(chain = true) +public class BinExcelExportDTO { + + /** + * 仓库编码 + */ + @ExcelColumn("*仓库编码") + private String warehouseCode; + + /** + * 储位编码 + */ + @ExcelColumn("*储位编码") + private String no; + + /** + * 储位名称 + */ + @ExcelColumn("*储位名称") + private String name; + + /** + * 备注 + */ + @ExcelColumn("备注") + private String remark; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelImportDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelImportDTO.java new file mode 100644 index 00000000..dad99517 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/BinExcelImportDTO.java @@ -0,0 +1,38 @@ +package com.nflg.wms.common.pojo.dto; + +import lombok.Data; +import org.ttzero.excel.annotation.ExcelColumn; + +@Data +public class BinExcelImportDTO { + + /** + * 仓库编码 + */ + @ExcelColumn("*仓库编码") + private String warehouseNo; + + /** + * 储位编码 + */ + @ExcelColumn("*储位编码") + private String no; + + /** + * 储位名称 + */ + @ExcelColumn("*储位名称") + private String name; + + /** + * 备注 + */ + @ExcelColumn("备注") + private String remark; + + /** + * 错误信息 + */ + @ExcelColumn("错误信息") + private String error; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinAddQO.java new file mode 100644 index 00000000..8bdc8894 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinAddQO.java @@ -0,0 +1,36 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +@Data +public class BinAddQO { + + /** + * 仓库ID + */ + private Long warehouseId; + + /** + * 储位编码 + */ + @NotBlank + private String no; + + /** + * 储位名称 + */ + @NotBlank + private String name; + + /** + * 是否启用 + */ + @NotBlank + private Boolean enable; + + /** + * 备注 + */ + private String remark; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinSearchQO.java new file mode 100644 index 00000000..98bd1e36 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinSearchQO.java @@ -0,0 +1,13 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; + +@Data +public class BinSearchQO extends PageQO{ + + + /** + * 仓库ID + */ + private Long warehouseId; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinUpdateQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinUpdateQO.java new file mode 100644 index 00000000..640069c1 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BinUpdateQO.java @@ -0,0 +1,11 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class BinUpdateQO extends BinAddQO{ + + @NotNull + private Long id; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BinVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BinVO.java new file mode 100644 index 00000000..6a67e0cf --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/BinVO.java @@ -0,0 +1,76 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class BinVO { + + private Long id; + + /** + * 仓库ID + */ + private Long warehouseId; + + /** + * 仓库名称 + */ + private String warehouseName; + + /** + * 仓库编码 + */ + private String warehouseNo; + + /** + * 储位编码 + */ + private String no; + + /** + * 储位名称 + */ + private String name; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 备注 + */ + private String remark; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 最后更新人 + */ + private String updateBy; + + /** + * 最后更新时间 + */ + private LocalDateTime updateTime; + + /** + * SAP同步状态,0:未导入;1:导入成功;2:导入失败 + */ + private Short sapState; + + /** + * SAP同步错误信息 + */ + private String sapError; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsBin.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsBin.java new file mode 100644 index 00000000..75b5fdc9 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsBin.java @@ -0,0 +1,88 @@ +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.LocalDateTime; + +/** + *

+ * 储位 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@ToString +@TableName("wms_bin") +@Accessors(chain = true) +public class WmsBin implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 仓库ID + */ + private Long warehouseId; + + /** + * 储位编码 + */ + private String no; + + /** + * 储位名称 + */ + private String name; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 备注 + */ + private String remark; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 最后更新人 + */ + private String updateBy; + + /** + * 最后更新时间 + */ + private LocalDateTime updateTime; + + /** + * SAP同步状态,0:未导入;1:导入成功;2:导入失败 + */ + private Short sapState; + + /** + * SAP同步错误信息 + */ + private String sapError; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsBinMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsBinMapper.java new file mode 100644 index 00000000..2b278d20 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsBinMapper.java @@ -0,0 +1,25 @@ +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.BinSearchQO; +import com.nflg.wms.common.pojo.vo.BinVO; +import com.nflg.wms.repository.entity.WmsBin; + +import java.util.List; + +/** + *

+ * 储位 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface WmsBinMapper extends BaseMapper { + + IPage search(BinSearchQO request, Page objectPage); + + List getList(List ids); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBinService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBinService.java new file mode 100644 index 00000000..5e56ca50 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsBinService.java @@ -0,0 +1,35 @@ +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.BinSearchQO; +import com.nflg.wms.common.pojo.qo.EnableQO; +import com.nflg.wms.common.pojo.vo.BinVO; +import com.nflg.wms.repository.entity.WmsBin; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; + +import java.util.List; + +/** + *

+ * 储位 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IWmsBinService extends IService { + + void add(WmsBin bin); + + void update(WmsBin bin); + + void delete(@Valid @NotNull Long id); + + void enable(@Valid EnableQO request); + + IPage search(@Valid BinSearchQO request); + + List getList(List ids); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBinServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBinServiceImpl.java new file mode 100644 index 00000000..66c56b1c --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsBinServiceImpl.java @@ -0,0 +1,97 @@ +package com.nflg.wms.repository.service.impl; + +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.BinSearchQO; +import com.nflg.wms.common.pojo.qo.EnableQO; +import com.nflg.wms.common.pojo.vo.BinVO; +import com.nflg.wms.common.util.UserUtil; +import com.nflg.wms.common.util.VUtil; +import com.nflg.wms.repository.entity.WmsBin; +import com.nflg.wms.repository.mapper.WmsBinMapper; +import com.nflg.wms.repository.service.IAuditLogService; +import com.nflg.wms.repository.service.IWmsBinService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 储位 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class WmsBinServiceImpl extends ServiceImpl implements IWmsBinService { + + @Resource + private IAuditLogService auditLogService; + + @Transactional + @Override + public void add(WmsBin bin) { + VUtil.trueThrowBusinessError(lambdaQuery() + .eq(WmsBin::getNo, bin.getNo()) + .eq(WmsBin::getWarehouseId, bin.getWarehouseId()) + .exists()) + .throwMessage("储位编码已存在"); + save(bin); + auditLogService.addInsert(WmsBin.class, bin, bin.getCreateBy()); + } + + @Transactional + @Override + public void update(WmsBin bin) { + VUtil.trueThrowBusinessError(lambdaQuery() + .eq(WmsBin::getNo, bin.getNo()) + .eq(WmsBin::getWarehouseId, bin.getWarehouseId()) + .ne(WmsBin::getId, bin.getId()).exists()) + .throwMessage("储位编码已存在"); + WmsBin old = getById(bin.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(old)).throwMessage("储位不存在"); + updateById(bin); + WmsBin newInfo = getById(bin.getId()); + auditLogService.addUpdate(WmsBin.class, old, newInfo, bin.getUpdateBy()); + } + + @Transactional + @Override + public void delete(Long id) { + // TODO 删除储位,判断是否存储了物料 + WmsBin old = getById(id); + VUtil.trueThrowBusinessError(Objects.isNull(old)).throwMessage("储位不存在"); + removeById(id); + auditLogService.addDelete(WmsBin.class, old, UserUtil.getUserName()); + } + + @Override + public void enable(EnableQO request) { + WmsBin old = getById(request.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(old)).throwMessage("储位不存在"); + lambdaUpdate() + .set(WmsBin::getEnable, request.getEnable()) + .set(WmsBin::getUpdateBy, UserUtil.getUserName()) + .set(WmsBin::getUpdateTime, LocalDateTime.now()) + .eq(WmsBin::getId, request.getId()) + .update(); + WmsBin newInfo = getById(request.getId()); + auditLogService.addUpdate(WmsBin.class, old, newInfo, UserUtil.getUserName()); + } + + @Override + public IPage search(BinSearchQO request) { + return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); + } + + @Override + public List getList(List ids) { + return baseMapper.getList(ids); + } +} 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 3f5c0d46..aa35a6b4 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 @@ -8,9 +8,11 @@ import com.nflg.wms.common.pojo.qo.WarehouseSearchQO; import com.nflg.wms.common.pojo.vo.WarehouseVO; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.VUtil; +import com.nflg.wms.repository.entity.WmsBin; import com.nflg.wms.repository.entity.WmsWarehouse; import com.nflg.wms.repository.mapper.WmsWarehouseMapper; import com.nflg.wms.repository.service.IAuditLogService; +import com.nflg.wms.repository.service.IWmsBinService; import com.nflg.wms.repository.service.IWmsWarehouseService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -34,6 +36,9 @@ public class WmsWarehouseServiceImpl extends ServiceImpl + + + + + + + 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 cedc41b8..63295219 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("warehouse") //只生成指定表 + .addInclude("wms_bin") //只生成指定表 .entityBuilder().idType(IdType.ASSIGN_ID) .enableLombok() .enableChainModel()