From a87ccea064262881b1bc4f11b476a062c8eef72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 1 Jul 2025 15:18:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=9C=BA=E5=8F=B0?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/admin/controller/ModelController.java | 10 ++ .../admin/controller/WorkbenchController.java | 97 +++++++++++ .../admin/service/ModelControllerService.java | 39 +++-- .../service/WorkbenchControllerService.java | 152 ++++++++++++++++++ .../common/pojo/dto/ModelExcelExportDTO.java | 22 +++ .../pojo/dto/WorkbenchExcelExportDTO.java | 22 +++ .../pojo/dto/WorkbenchExcelImportDTO.java | 28 ++++ .../com/nflg/wms/repository/entity/Model.java | 2 +- .../nflg/wms/repository/entity/Workbench.java | 66 ++++++++ .../repository/mapper/WorkbenchMapper.java | 16 ++ .../repository/service/IWorkbenchService.java | 30 ++++ .../service/impl/ModelServiceImpl.java | 2 + .../service/impl/WorkbenchServiceImpl.java | 84 ++++++++++ .../main/resources/mapper/WorkbenchMapper.xml | 5 + .../wms/repository/CodeGeneratorTest.java | 2 +- 15 files changed, 566 insertions(+), 11 deletions(-) create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/WorkbenchController.java create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/WorkbenchControllerService.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/ModelExcelExportDTO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/WorkbenchExcelExportDTO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/WorkbenchExcelImportDTO.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/Workbench.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WorkbenchMapper.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWorkbenchService.java create mode 100644 nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WorkbenchServiceImpl.java create mode 100644 nflg-wms-repository/src/main/resources/mapper/WorkbenchMapper.xml diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ModelController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ModelController.java index ce74d118..f16731a0 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ModelController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ModelController.java @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.util.List; /** * 机型管理 @@ -85,4 +86,13 @@ public class ModelController extends BaseController { return modelControllerService.importFromExcel(response,file); } + /** + * 导出选中的机型,为空时导出模版 + * @param ids 选中的id集合 + */ + @PostMapping("export") + public void exportSelect(HttpServletResponse response,@RequestBody List ids) throws Exception { + modelControllerService.exportSelect(response,ids); + } + } \ No newline at end of file diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/WorkbenchController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/WorkbenchController.java new file mode 100644 index 00000000..2e690f14 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/WorkbenchController.java @@ -0,0 +1,97 @@ +package com.nflg.wms.admin.controller; + +import com.nflg.wms.admin.service.WorkbenchControllerService; +import com.nflg.wms.common.pojo.ApiResult; +import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.qo.EnableQO; +import com.nflg.wms.common.pojo.qo.ModelAddQO; +import com.nflg.wms.common.pojo.qo.ModelSearchQO; +import com.nflg.wms.common.pojo.qo.ModelUpdateQO; +import com.nflg.wms.repository.entity.Workbench; +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("/workbench") +public class WorkbenchController extends BaseController { + + @Resource + private WorkbenchControllerService workbenchControllerService; + + /** + * 新增机台 + */ + @PostMapping("add") + public ApiResult add(@Valid @RequestBody ModelAddQO request){ + workbenchControllerService.add(request); + return ApiResult.success(); + } + + /** + * 更新机台 + */ + @PostMapping("update") + public ApiResult update(@Valid @RequestBody ModelUpdateQO request){ + workbenchControllerService.update(request); + return ApiResult.success(); + } + + /** + * 删除机台 + */ + @PostMapping("delete") + public ApiResult delete(@Valid @NotNull Long id){ + workbenchControllerService.delete(id); + return ApiResult.success(); + } + + /** + * 启用/禁用机台 + * @param request 请求参数 + */ + @PostMapping("/enable") + public ApiResult enable(@Valid @RequestBody EnableQO request){ + workbenchControllerService.enable(request); + return ApiResult.success(); + } + + /** + * 搜索机台 + * @param request 搜索参数 + */ + @PostMapping("search") + public ApiResult> search(@Valid @RequestBody ModelSearchQO request){ + return ApiResult.success(workbenchControllerService.search(request)); + } + + /** + * 导入机台 + * @param file 文件 + */ + @Transactional + @PostMapping("import") + public ApiResult importFromExcel(HttpServletResponse response, @RequestParam(value = "file") MultipartFile file) throws IOException { + return workbenchControllerService.importFromExcel(response,file); + } + + /** + * 导出选中的机台,为空时导出模板 + * @param ids 选中的id集合 + */ + @PostMapping("export") + public void exportSelect(HttpServletResponse response,@RequestBody List ids) throws Exception { + workbenchControllerService.exportSelect(response,ids); + } +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/ModelControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/ModelControllerService.java index 40e502bd..cfd15bb9 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/ModelControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/ModelControllerService.java @@ -7,6 +7,7 @@ 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.ModelExcelExportDTO; import com.nflg.wms.common.pojo.dto.ModelExcelImportDTO; import com.nflg.wms.common.pojo.qo.EnableQO; import com.nflg.wms.common.pojo.qo.ModelAddQO; @@ -41,6 +42,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; @Component public class ModelControllerService { @@ -77,14 +79,13 @@ public class ModelControllerService { return modelService.search(request); } + @Transactional public ApiResult importFromExcel(HttpServletResponse response, MultipartFile file) throws IOException { List data = EecExcelUtil.getExcelContext(file.getInputStream(), ModelExcelImportDTO.class); VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(data)).throwMessage("导入文件内容为空"); if (updateCheckAndImport(data)) { return ApiResult.success(); } else { - response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(getResultName(file.getOriginalFilename()), StandardCharsets.UTF_8)); try(ByteArrayOutputStream osOut = new ByteArrayOutputStream()) { new Workbook() .addSheet(new ListSheet<>(data)) @@ -98,11 +99,6 @@ public class ModelControllerService { } } - private String getResultName(String name){ - int index=name.lastIndexOf("."); - return name.substring(0,index)+"_结果"+"."+name.substring(index+1); - } - @Transactional public boolean updateCheckAndImport(List data) { List models = new ArrayList<>(); @@ -113,9 +109,14 @@ public class ModelControllerService { sb.append("机型编号不能为空;"); } else { model = modelService.lambdaQuery().eq(Model::getNo, dto.getNo()).one(); - if (Objects.isNull( model)){ + if (Objects.isNull(model)) { model = new Model() - .setNo(dto.getNo()); + .setNo(dto.getNo()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + }else { + model.setUpdateBy(UserUtil.getUserName()); + model.setUpdateTime(LocalDateTime.now()); } } model.setRemark(dto.getRemark()); @@ -128,4 +129,24 @@ public class ModelControllerService { } return false; } + + public void exportSelect(HttpServletResponse response,List ids) throws IOException { + List users = CollectionUtil.isNotEmpty(ids)?modelService.listByIds(ids):new ArrayList<>(); + List datas = users.stream().map(model -> { + ModelExcelExportDTO dto = new ModelExcelExportDTO(); + dto.setNo(model.getNo()); + dto.setRemark(model.getRemark()); + return dto; + }).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 ModelExcelExportDTO() + .setNo("(必填)机型编号") + .setRemark("备注信息,此行为提示信息,导入时请删除")); + } + new Workbook() + .addSheet(new ListSheet<>(datas)) + .writeTo(response.getOutputStream()); + } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/WorkbenchControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/WorkbenchControllerService.java new file mode 100644 index 00000000..8d0c5e76 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/WorkbenchControllerService.java @@ -0,0 +1,152 @@ +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.WorkbenchExcelExportDTO; +import com.nflg.wms.common.pojo.dto.WorkbenchExcelImportDTO; +import com.nflg.wms.common.pojo.qo.EnableQO; +import com.nflg.wms.common.pojo.qo.ModelAddQO; +import com.nflg.wms.common.pojo.qo.ModelSearchQO; +import com.nflg.wms.common.pojo.qo.ModelUpdateQO; +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.Workbench; +import com.nflg.wms.repository.service.IWorkbenchService; +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 WorkbenchControllerService { + + @Resource + private IWorkbenchService workbenchService; + + @Resource + private FileUploadService fileUploadService; + + public void add(@Valid ModelAddQO request) { + Workbench workbench= Convert.convert(Workbench.class, request); + workbench.setCreateBy(UserUtil.getUserName()); + workbench.setCreateTime(LocalDateTime.now()); + workbenchService.add(workbench); + } + + public void update(@Valid ModelUpdateQO request) { + Workbench workbench= Convert.convert(Workbench.class, request); + workbench.setUpdateBy(UserUtil.getUserName()); + workbench.setUpdateTime(LocalDateTime.now()); + workbenchService.update(workbench); + } + + public void delete(@Valid @NotNull Long id) { + workbenchService.delete(id); + } + + public void enable(@Valid EnableQO request) { + workbenchService.enable(request); + } + + public IPage search(@Valid ModelSearchQO request) { + return workbenchService.search(request); + } + + @Transactional + public ApiResult importFromExcel(HttpServletResponse response, MultipartFile file) throws IOException { + List data = EecExcelUtil.getExcelContext(file.getInputStream(), WorkbenchExcelImportDTO.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 workbenches = new ArrayList<>(); + for (WorkbenchExcelImportDTO dto : data) { + Workbench workbench = new Workbench(); + StringBuilder sb = new StringBuilder(); + if (Objects.isNull(dto.getNo())) { + sb.append("机型编号不能为空;"); + } else { + workbench = workbenchService.lambdaQuery().eq(Workbench::getNo, dto.getNo()).one(); + if (Objects.isNull(workbench)) { + workbench = new Workbench() + .setNo(dto.getNo()) + .setCreateBy(UserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + }else { + workbench.setUpdateBy(UserUtil.getUserName()); + workbench.setUpdateTime(LocalDateTime.now()); + } + } + workbench.setRemark(dto.getRemark()); + dto.setError(sb.toString()); + workbenches.add(workbench); + } + if (data.stream().noneMatch(it -> StrUtil.isNotBlank(it.getError()))) { + workbenchService.saveOrUpdateBatch(workbenches); + return true; + } + return false; + } + + public void exportSelect(HttpServletResponse response, List ids) throws IOException { + List users = CollectionUtil.isNotEmpty(ids)?workbenchService.listByIds(ids):new ArrayList<>(); + List datas = users.stream().map(model -> { + WorkbenchExcelExportDTO dto = new WorkbenchExcelExportDTO(); + dto.setNo(model.getNo()); + dto.setRemark(model.getRemark()); + return dto; + }).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 WorkbenchExcelExportDTO() + .setNo("(必填)机台编号") + .setRemark("备注信息,此行为提示信息,导入时请删除")); + } + new Workbook() + .addSheet(new ListSheet<>(datas)) + .writeTo(response.getOutputStream()); + } +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/ModelExcelExportDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/ModelExcelExportDTO.java new file mode 100644 index 00000000..03b87141 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/ModelExcelExportDTO.java @@ -0,0 +1,22 @@ +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 ModelExcelExportDTO { + + /** + * 机型编号 + */ + @ExcelColumn("*机型编号") + private String no; + + /** + * 备注 + */ + @ExcelColumn("备注") + private String remark; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/WorkbenchExcelExportDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/WorkbenchExcelExportDTO.java new file mode 100644 index 00000000..8795ac6f --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/WorkbenchExcelExportDTO.java @@ -0,0 +1,22 @@ +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 WorkbenchExcelExportDTO { + + /** + * 机台编号 + */ + @ExcelColumn("*机台编号") + private String no; + + /** + * 备注 + */ + @ExcelColumn("备注") + private String remark; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/WorkbenchExcelImportDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/WorkbenchExcelImportDTO.java new file mode 100644 index 00000000..20c4eb10 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/WorkbenchExcelImportDTO.java @@ -0,0 +1,28 @@ +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 WorkbenchExcelImportDTO { + + /** + * 机台编号 + */ + @ExcelColumn("*机台编号") + private String no; + + /** + * 备注 + */ + @ExcelColumn("备注") + private String remark; + + /** + * 错误信息 + */ + @ExcelColumn("错误信息") + private String error; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/Model.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/Model.java index b208d86e..dab08e93 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/Model.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/Model.java @@ -26,7 +26,7 @@ public class Model implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "id", type = IdType.AUTO) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; /** diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/Workbench.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/Workbench.java new file mode 100644 index 00000000..2b75fdb6 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/Workbench.java @@ -0,0 +1,66 @@ +package com.nflg.wms.repository.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +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 +@Accessors(chain = true) +public class Workbench implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 机台编号 + */ + private String no; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 备注 + */ + 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/mapper/WorkbenchMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WorkbenchMapper.java new file mode 100644 index 00000000..3a52dcf9 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WorkbenchMapper.java @@ -0,0 +1,16 @@ +package com.nflg.wms.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.wms.repository.entity.Workbench; + +/** + *

+ * 机台 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface WorkbenchMapper extends BaseMapper { + +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWorkbenchService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWorkbenchService.java new file mode 100644 index 00000000..171540c9 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWorkbenchService.java @@ -0,0 +1,30 @@ +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.EnableQO; +import com.nflg.wms.common.pojo.qo.ModelSearchQO; +import com.nflg.wms.repository.entity.Workbench; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; + +/** + *

+ * 机台 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IWorkbenchService extends IService { + + void add(Workbench workbench); + + void update(Workbench workbench); + + void delete(@Valid @NotNull Long id); + + void enable(@Valid EnableQO request); + + IPage search(@Valid ModelSearchQO request); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/ModelServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/ModelServiceImpl.java index b41306e9..499450c1 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/ModelServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/ModelServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.Objects; /** *

@@ -46,6 +47,7 @@ public class ModelServiceImpl extends ServiceImpl implements VUtil.trueThrowBusinessError(lambdaQuery().eq(Model::getNo, model.getNo()).ne(Model::getId, model.getId()).exists()) .throwMessage("机型已存在"); Model old = getById(model.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(old)).throwMessage("机型不存在"); updateById(model); Model newModel = getById(model.getId()); auditLogService.addUpdate(Model.class, old, newModel, model.getUpdateBy()); diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WorkbenchServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WorkbenchServiceImpl.java new file mode 100644 index 00000000..2255cb1e --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WorkbenchServiceImpl.java @@ -0,0 +1,84 @@ +package com.nflg.wms.repository.service.impl; + +import cn.hutool.core.util.StrUtil; +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.EnableQO; +import com.nflg.wms.common.pojo.qo.ModelSearchQO; +import com.nflg.wms.common.util.UserUtil; +import com.nflg.wms.common.util.VUtil; +import com.nflg.wms.repository.entity.Workbench; +import com.nflg.wms.repository.mapper.WorkbenchMapper; +import com.nflg.wms.repository.service.IAuditLogService; +import com.nflg.wms.repository.service.IWorkbenchService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.Objects; + +/** + *

+ * 机台 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class WorkbenchServiceImpl extends ServiceImpl implements IWorkbenchService { + + @Resource + private IAuditLogService auditLogService; + + @Transactional + @Override + public void add(Workbench workbench) { + VUtil.trueThrowBusinessError(lambdaQuery().eq(Workbench::getNo, workbench.getNo()).exists()).throwMessage("机台已存在"); + save(workbench); + auditLogService.addInsert(Workbench.class,workbench,workbench.getCreateBy()); + } + + @Transactional + @Override + public void update(Workbench workbench) { + VUtil.trueThrowBusinessError(lambdaQuery().eq(Workbench::getNo, workbench.getNo()).ne(Workbench::getId, workbench.getId()).exists()) + .throwMessage("机型已存在"); + Workbench old = getById(workbench.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(old)).throwMessage("机台不存在"); + updateById(workbench); + Workbench ninfo = getById(workbench.getId()); + auditLogService.addUpdate(Workbench.class, old, ninfo, workbench.getUpdateBy()); + } + + @Transactional + @Override + public void delete(Long id) { + Workbench old = getById(id); + removeById(id); + auditLogService.addDelete(Workbench.class, old, UserUtil.getUserName()); + } + + @Override + public void enable(EnableQO request) { + Workbench old = getById(request.getId()); + lambdaUpdate() + .set(Workbench::getEnable, request.getEnable()) + .set(Workbench::getUpdateBy, UserUtil.getUserName()) + .set(Workbench::getUpdateTime, LocalDateTime.now()) + .eq(Workbench::getId, request.getId()) + .update(); + Workbench newModel = getById(request.getId()); + auditLogService.addUpdate(Workbench.class, old, newModel, UserUtil.getUserName()); + } + + @Override + public IPage search(ModelSearchQO request) { + return lambdaQuery() + .like(StrUtil.isNotBlank(request.getNo()),Workbench::getNo, request.getNo()) + .orderByDesc(Workbench::getId) + .page(new Page<>(request.getPage(), request.getPageSize())); + } +} diff --git a/nflg-wms-repository/src/main/resources/mapper/WorkbenchMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WorkbenchMapper.xml new file mode 100644 index 00000000..89715178 --- /dev/null +++ b/nflg-wms-repository/src/main/resources/mapper/WorkbenchMapper.xml @@ -0,0 +1,5 @@ + + + + + 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 e2cb8a1f..970849e6 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("model") //只生成指定表 + .addInclude("v_user_supplier") //只生成指定表 .entityBuilder().idType(IdType.ASSIGN_ID) .enableLombok() .enableChainModel()