From 4ff99af978a54d9d818f83d57e9a7422fc5dfe43 Mon Sep 17 00:00:00 2001 From: Tom Li Date: Tue, 30 Dec 2025 23:50:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E8=AF=95=20=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=A8=A1=E6=9D=BF=20=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resource/feign/AttachClient.java | 3 + .../desk/basic/constant/BAModuleConst.java | 11 + .../desk/basic/constant/BaseCol.java | 6 +- .../desk/basic/pojo/vo/BaseEntityVO.java | 41 +++ .../quality/constant/ProReTemplateConst.java | 16 ++ .../ProReTemplateDetailController.java | 240 ++++++++++++++++++ .../ProReTemplateTankController.java | 240 ++++++++++++++++++ .../excel/ProReTemplateDetailExcel.java | 89 +++++++ .../quality/excel/ProReTemplateTankExcel.java | 64 +++++ .../mapper/ProReTemplateDetailMapper.java | 39 +++ .../mapper/ProReTemplateDetailMapper.xml | 25 ++ .../mapper/ProReTemplateTankMapper.java | 39 +++ .../mapper/ProReTemplateTankMapper.xml | 21 ++ .../pojo/dto/ProReTemplateDetailDTO.java | 23 ++ .../pojo/dto/ProReTemplateTankDTO.java | 23 ++ .../pojo/entity/ProReTemplateDetail.java | 112 ++++++++ .../pojo/entity/ProReTemplateTank.java | 75 ++++++ .../pojo/vo/ProReTemplateDetailVO.java | 23 ++ .../quality/pojo/vo/ProReTemplateTankVO.java | 29 +++ .../desk/quality/pojo/vo/ProReTemplateVO.java | 20 +- .../service/IProReTemplateDetailService.java | 47 ++++ .../service/IProReTemplateService.java | 38 +-- .../service/IProReTemplateTankService.java | 47 ++++ .../impl/ProReTemplateDetailServiceImpl.java | 72 ++++++ .../impl/ProReTemplateServiceImpl.java | 69 +++-- .../impl/ProReTemplateTankServiceImpl.java | 72 ++++++ .../wrapper/ProReTemplateDetailWrapper.java | 35 +++ .../wrapper/ProReTemplateTankWrapper.java | 35 +++ 28 files changed, 1511 insertions(+), 43 deletions(-) create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BAModuleConst.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/pojo/vo/BaseEntityVO.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/constant/ProReTemplateConst.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateDetailController.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateTankController.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateDetailExcel.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateTankExcel.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.xml create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.xml create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateDetailDTO.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateTankDTO.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateDetail.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateTank.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateDetailVO.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateTankVO.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateDetailService.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateTankService.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateDetailServiceImpl.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateTankServiceImpl.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateDetailWrapper.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateTankWrapper.java diff --git a/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/AttachClient.java b/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/AttachClient.java index 460ef125..2fdb059c 100644 --- a/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/AttachClient.java +++ b/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/AttachClient.java @@ -9,6 +9,9 @@ import org.springblade.resource.service.IAttachService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; +/** + * todo:有temp桶,成功以后移动到具体业务桶中. + */ @RestController @Data public class AttachClient implements IAttachClient { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BAModuleConst.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BAModuleConst.java new file mode 100644 index 00000000..a52982fc --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BAModuleConst.java @@ -0,0 +1,11 @@ +package org.springblade.desk.basic.constant; + +public interface BAModuleConst { + + /** + * 模块前缀 + */ + String PREFIX = "BA"; + + String CONTROLLER_PREFIX = "/BA"; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BaseCol.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BaseCol.java index 57bbb04f..31b41584 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BaseCol.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/constant/BaseCol.java @@ -1,7 +1,7 @@ package org.springblade.desk.basic.constant; /** - * 通用字段字段名 + * BaseEntity 通用字段字段名 */ public interface BaseCol { @@ -19,9 +19,9 @@ public interface BaseCol { String STATUS = "STATUS"; + String IS_DELETED = "IS_DELETED"; + String SORT = "SORT"; String TENANT_ID = "TENANT_ID"; - - String IS_DELETED = "IS_DELETED"; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/pojo/vo/BaseEntityVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/pojo/vo/BaseEntityVO.java new file mode 100644 index 00000000..21a119cf --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/pojo/vo/BaseEntityVO.java @@ -0,0 +1,41 @@ +package org.springblade.desk.basic.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * todo: + */ +@Data +@EqualsAndHashCode() +public class BaseEntityVO { + + /** + * 创建[用户]-真名 + */ + @Schema(description = "创建[用户]-真名") + private String createUserRealName = "创建[用户]-真名"; + /** + * 创建[部门]-部门名 + */ + @Schema(description = "创建[部门]-部门名") + private String createDeptName = ""; + /** + * 更新[用户]-真名 + */ + @Schema(description = "更新用户-真名") + private String updateUserRealName = "更新用户-真名"; + /** + * 维护[用户]id + */ + @Schema(description = "维护[用户]id") + private Long keepUser = 0L; + /** + * + */ + @Schema(description = "维护[用户]-真名") + private String keepUserRealName = "维护[用户]-真名"; + @Schema(description = "业务状态 名称") + private String statusName; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/constant/ProReTemplateConst.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/constant/ProReTemplateConst.java new file mode 100644 index 00000000..61164b6a --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/constant/ProReTemplateConst.java @@ -0,0 +1,16 @@ +package org.springblade.desk.quality.constant; + +public interface ProReTemplateConst { + /** + * 新建 + */ + Integer STATUS_NEW = 1; + /** + * 正常使用 + */ + Integer STATUS_OK = 2; + /** + * 废弃 + */ + Integer STATUS_NO = 3; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateDetailController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateDetailController.java new file mode 100644 index 00000000..fa86dc18 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateDetailController.java @@ -0,0 +1,240 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; + +import lombok.Data; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.desk.basic.util.ExcelExtUtil; +import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail; +import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO; +import org.springblade.desk.quality.excel.ProReTemplateDetailExcel; +import org.springblade.desk.quality.wrapper.ProReTemplateDetailWrapper; +import org.springblade.desk.quality.service.IProReTemplateDetailService; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.tool.constant.BladeConstant; +import java.util.Map; +import java.util.List; +import java.util.stream.Collectors; + +import jakarta.servlet.http.HttpServletResponse; + +/** + * [过程记录模板-明细] 控制器 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@RestController +@RequestMapping("/ProReTemplateDetail") +@Data +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Slf4j +@Tag(name = "[过程记录模板-明细]", description = "[过程记录模板-明细]接口") +public class ProReTemplateDetailController extends BladeController { + + @Resource + private IProReTemplateDetailService service; + + /** + * [过程记录模板-明细] 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 10) + @Operation(summary = "详情", description = "传入ProReTemplateDetail Obj") + public R detail(ProReTemplateDetail proReTemplateDetail) { + QueryWrapper qw = Condition.getQueryWrapper(proReTemplateDetail); + ProReTemplateDetail detail = service.getOne(qw); + ProReTemplateDetailVO detailVO = ProReTemplateDetailWrapper.build().entityVO(detail); + service.setVOValue(detailVO); + return R.data(detailVO); + } + + /** + * [过程记录模板-明细] list分页 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 20) + @Operation(summary = "list分页", description = "传入ProReTemplateDetail Obj") + public R> list(@Parameter(hidden = true) @RequestParam Map proReTemplateDetail, + Query query) { + QueryWrapper qw = Condition.getQueryWrapper(proReTemplateDetail, ProReTemplateDetail.class); + IPage pages = service.page(Condition.getPage(query), qw); + IPage pagesVO = ProReTemplateDetailWrapper.build().pageVO(pages); + pagesVO.getRecords() + .stream() + .peek(service::setVOValue) + .collect(Collectors.toList()); + return R.data(pagesVO); + } + + + /** + * [过程记录模板-明细] page分页 + */ + @GetMapping("/page") + @ApiOperationSupport(order = 21) + @Operation(summary = "page分页", description = "传入ProReTemplateDetail Obj") + public R> page(ProReTemplateDetailVO proReTemplateDetail, Query query) { + IPage pagesVO = service.selectProReTemplateDetailPage( + Condition.getPage(query), proReTemplateDetail + ); + return R.data(pagesVO); + } + + /** + * [过程记录模板-明细] list下拉选择 + */ + @GetMapping("/listForSelect") + @ApiOperationSupport(order = 22) + @Operation(summary = "list下拉选择", description = "") + public R> listForSelect() { + List list = service.list(); + List listVO = ProReTemplateDetailWrapper.build().listVO(list); + return R.data(listVO); + } + + /** + * [过程记录模板-明细] 新增一条 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 30) + @Operation(summary = "新增一条", description = "传入ProReTemplateDetail Obj") + public R save(@Valid @RequestBody ProReTemplateDetail addOne) { + addOne.setId(null); + return R.status(service.save(addOne)); + } + + /** + * [过程记录模板-明细] 新增批量 + */ + @PostMapping("/saveBat") + @ApiOperationSupport(order = 31) + @Operation(summary = "新增批量", description = "传入ProReTemplateDetail List") + public R saveBat(@Valid @RequestBody List addList) { + addList.forEach(one -> { + one.setId(null); + }); + return R.status(service.saveBatch(addList)); + } + + /** + * [过程记录模板-明细] 修改一条 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 40) + @Operation(summary = "修改一条", description = "传入ProReTemplateDetail Obj") + public R update(@Valid @RequestBody ProReTemplateDetail updateOne) { + return R.status(service.updateById(updateOne)); + } + + /** + * [过程记录模板-明细] 修改批量 + */ + @PostMapping("/updateBat") + @ApiOperationSupport(order = 41) + @Operation(summary = "修改批量", description = "传入ProReTemplateDetail List") + public R updateBat(@Valid @RequestBody List updateList) { + return R.status(service.updateBatchById(updateList)); + } + + /** + * [过程记录模板-明细] 新增或修改一条 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 50) + @Operation(summary = "新增或修改一条", description = "传入ProReTemplateDetail Obj") + public R submit(@Valid @RequestBody ProReTemplateDetail mergeOne) { + return R.status(service.saveOrUpdate(mergeOne)); + } + + /** + * [过程记录模板-明细] 新增或修改批量 + */ + @PostMapping("/submitBat") + @ApiOperationSupport(order = 51) + @Operation(summary = "新增或修改批量", description = "传入ProReTemplateDetail List") + public R submitBat(@Valid @RequestBody List mergeList) { + return R.status(service.saveOrUpdateBatch(mergeList)); + } + + /** + * [过程记录模板-明细] 逻辑删除 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 61) + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(service.deleteLogic(Func.toLongList(ids))); + } + + /** + * [过程记录模板-明细] 导出Excel + */ + @GetMapping("/exportExcel") + @ApiOperationSupport(order = 70) + @Operation(summary = "导出Excel", description = "传入ProReTemplateDetail") + public void exportExcel(@Parameter(hidden = true) @RequestParam Map proReTemplateDetail, + BladeUser bladeUser, HttpServletResponse response) { + QueryWrapper qw = Condition.getQueryWrapper(proReTemplateDetail, ProReTemplateDetail.class); + //if (!AuthUtil.isAdministrator()) { + // queryWrapper.lambda().eq(ProReTemplateDetail::getTenantId, bladeUser.getTenantId()); + //} + //queryWrapper.lambda().eq(ProReTemplateDetailEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); + List list = service.exportProReTemplateDetail(qw); + ExcelUtil.export(response, "[过程记录模板-明细]数据" + org.springblade.core.tool.utils.DateUtil.time(), + "[过程记录模板-明细]数据表", list, ProReTemplateDetailExcel.class); + } + + /** + * [过程记录模板-明细] 下载Excel模板 + */ + @GetMapping("/downloadExcelTemplate") + @ApiOperationSupport(order = 71) + @Operation(summary = "下载Excel模板", description = "") + public ResponseEntity downloadExcelTemplate() { + return ExcelExtUtil.downloadXlsTemplate( + "Excel/QA/ImportTemplate-CycleTestItem.xls", + "导入模版-周期试验项目.xls"); + } + + /** + * [过程记录模板-明细] 导入Excel + */ + @PostMapping("/importExcel") + @ApiOperationSupport(order = 72) + @Operation(summary = "导入Excel", description = "MultipartFile") + public R importExcel(@RequestParam("file") MultipartFile file) { + R checkR = ExcelExtUtil.importExcelCheck(file); + if (checkR != null) { + return checkR; + } + List importList = ExcelUtil.read( + file, 0, 1, ProReTemplateDetail.class + ); + return R.status(service.saveBatch(importList)); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateTankController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateTankController.java new file mode 100644 index 00000000..905fa26d --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateTankController.java @@ -0,0 +1,240 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; + +import lombok.Data; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.desk.basic.util.ExcelExtUtil; +import org.springblade.desk.quality.pojo.entity.ProReTemplateTank; +import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO; +import org.springblade.desk.quality.excel.ProReTemplateTankExcel; +import org.springblade.desk.quality.wrapper.ProReTemplateTankWrapper; +import org.springblade.desk.quality.service.IProReTemplateTankService; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.excel.util.ExcelUtil; +import org.springblade.core.tool.constant.BladeConstant; +import java.util.Map; +import java.util.List; +import java.util.stream.Collectors; + +import jakarta.servlet.http.HttpServletResponse; + +/** + * [过程记录模板-槽-明细] 控制器 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@RestController +@RequestMapping("/ProReTemplateTank") +@Data +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Slf4j +@Tag(name = "[过程记录模板-槽-明细]", description = "[过程记录模板-槽-明细]接口") +public class ProReTemplateTankController extends BladeController { + + @Resource + private IProReTemplateTankService service; + + /** + * [过程记录模板-槽-明细] 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 10) + @Operation(summary = "详情", description = "传入ProReTemplateTank Obj") + public R detail(ProReTemplateTank proReTemplateTank) { + QueryWrapper qw = Condition.getQueryWrapper(proReTemplateTank); + ProReTemplateTank detail = service.getOne(qw); + ProReTemplateTankVO detailVO = ProReTemplateTankWrapper.build().entityVO(detail); + service.setVOValue(detailVO); + return R.data(detailVO); + } + + /** + * [过程记录模板-槽-明细] list分页 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 20) + @Operation(summary = "list分页", description = "传入ProReTemplateTank Obj") + public R> list(@Parameter(hidden = true) @RequestParam Map proReTemplateTank, + Query query) { + QueryWrapper qw = Condition.getQueryWrapper(proReTemplateTank, ProReTemplateTank.class); + IPage pages = service.page(Condition.getPage(query), qw); + IPage pagesVO = ProReTemplateTankWrapper.build().pageVO(pages); + pagesVO.getRecords() + .stream() + .peek(service::setVOValue) + .collect(Collectors.toList()); + return R.data(pagesVO); + } + + + /** + * [过程记录模板-槽-明细] page分页 + */ + @GetMapping("/page") + @ApiOperationSupport(order = 21) + @Operation(summary = "page分页", description = "传入ProReTemplateTank Obj") + public R> page(ProReTemplateTankVO proReTemplateTank, Query query) { + IPage pagesVO = service.selectProReTemplateTankPage( + Condition.getPage(query), proReTemplateTank + ); + return R.data(pagesVO); + } + + /** + * [过程记录模板-槽-明细] list下拉选择 + */ + @GetMapping("/listForSelect") + @ApiOperationSupport(order = 22) + @Operation(summary = "list下拉选择", description = "") + public R> listForSelect() { + List list = service.list(); + List listVO = ProReTemplateTankWrapper.build().listVO(list); + return R.data(listVO); + } + + /** + * [过程记录模板-槽-明细] 新增一条 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 30) + @Operation(summary = "新增一条", description = "传入ProReTemplateTank Obj") + public R save(@Valid @RequestBody ProReTemplateTank addOne) { + addOne.setId(null); + return R.status(service.save(addOne)); + } + + /** + * [过程记录模板-槽-明细] 新增批量 + */ + @PostMapping("/saveBat") + @ApiOperationSupport(order = 31) + @Operation(summary = "新增批量", description = "传入ProReTemplateTank List") + public R saveBat(@Valid @RequestBody List addList) { + addList.forEach(one -> { + one.setId(null); + }); + return R.status(service.saveBatch(addList)); + } + + /** + * [过程记录模板-槽-明细] 修改一条 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 40) + @Operation(summary = "修改一条", description = "传入ProReTemplateTank Obj") + public R update(@Valid @RequestBody ProReTemplateTank updateOne) { + return R.status(service.updateById(updateOne)); + } + + /** + * [过程记录模板-槽-明细] 修改批量 + */ + @PostMapping("/updateBat") + @ApiOperationSupport(order = 41) + @Operation(summary = "修改批量", description = "传入ProReTemplateTank List") + public R updateBat(@Valid @RequestBody List updateList) { + return R.status(service.updateBatchById(updateList)); + } + + /** + * [过程记录模板-槽-明细] 新增或修改一条 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 50) + @Operation(summary = "新增或修改一条", description = "传入ProReTemplateTank Obj") + public R submit(@Valid @RequestBody ProReTemplateTank mergeOne) { + return R.status(service.saveOrUpdate(mergeOne)); + } + + /** + * [过程记录模板-槽-明细] 新增或修改批量 + */ + @PostMapping("/submitBat") + @ApiOperationSupport(order = 51) + @Operation(summary = "新增或修改批量", description = "传入ProReTemplateTank List") + public R submitBat(@Valid @RequestBody List mergeList) { + return R.status(service.saveOrUpdateBatch(mergeList)); + } + + /** + * [过程记录模板-槽-明细] 逻辑删除 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 61) + @Operation(summary = "逻辑删除", description = "传入ids") + public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { + return R.status(service.deleteLogic(Func.toLongList(ids))); + } + + /** + * [过程记录模板-槽-明细] 导出Excel + */ + @GetMapping("/exportExcel") + @ApiOperationSupport(order = 70) + @Operation(summary = "导出Excel", description = "传入ProReTemplateTank") + public void exportExcel(@Parameter(hidden = true) @RequestParam Map proReTemplateTank, + BladeUser bladeUser, HttpServletResponse response) { + QueryWrapper qw = Condition.getQueryWrapper(proReTemplateTank, ProReTemplateTank.class); + //if (!AuthUtil.isAdministrator()) { + // queryWrapper.lambda().eq(ProReTemplateTank::getTenantId, bladeUser.getTenantId()); + //} + //queryWrapper.lambda().eq(ProReTemplateTankEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); + List list = service.exportProReTemplateTank(qw); + ExcelUtil.export(response, "[过程记录模板-槽-明细]数据" + org.springblade.core.tool.utils.DateUtil.time(), + "[过程记录模板-槽-明细]数据表", list, ProReTemplateTankExcel.class); + } + + /** + * [过程记录模板-槽-明细] 下载Excel模板 + */ + @GetMapping("/downloadExcelTemplate") + @ApiOperationSupport(order = 71) + @Operation(summary = "下载Excel模板", description = "") + public ResponseEntity downloadExcelTemplate() { + return ExcelExtUtil.downloadXlsTemplate( + "Excel/QA/ImportTemplate-CycleTestItem.xls", + "导入模版-周期试验项目.xls"); + } + + /** + * [过程记录模板-槽-明细] 导入Excel + */ + @PostMapping("/importExcel") + @ApiOperationSupport(order = 72) + @Operation(summary = "导入Excel", description = "MultipartFile") + public R importExcel(@RequestParam("file") MultipartFile file) { + R checkR = ExcelExtUtil.importExcelCheck(file); + if (checkR != null) { + return checkR; + } + List importList = ExcelUtil.read( + file, 0, 1, ProReTemplateTank.class + ); + return R.status(service.saveBatch(importList)); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateDetailExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateDetailExcel.java new file mode 100644 index 00000000..bd52cf94 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateDetailExcel.java @@ -0,0 +1,89 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.excel; + + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import org.springblade.core.mp.base.BaseEntity; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import java.io.Serial; + + +/** + * [过程记录模板-明细] Excel实体类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class ProReTemplateDetailExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 明细名称 + */ + @ColumnWidth(20) + @ExcelProperty("明细名称") + private String detailName; + /** + * 工艺要求 + */ + @ColumnWidth(20) + @ExcelProperty("工艺要求") + private String ask; + /** + * 是否合格 + */ + @ColumnWidth(20) + @ExcelProperty("是否合格") + private Short qualified; + /** + * [过程记录模板-槽-明细]id + */ + @ColumnWidth(20) + @ExcelProperty("[过程记录模板-槽-明细]id") + private BigDecimal templateTankId; + /** + * 明细序号 + */ + @ColumnWidth(20) + @ExcelProperty("明细序号") + private Short detailIndex; + /** + * 时间 + */ + @ColumnWidth(20) + @ExcelProperty("时间") + private LocalDateTime rfpdTime; + /** + * 参数名称 + */ + @ColumnWidth(20) + @ExcelProperty("参数名称") + private String paramName; + /** + * 参数值 + */ + @ColumnWidth(20) + @ExcelProperty("参数值") + private String paramValue; + /** + * 备注 + */ + @ColumnWidth(20) + @ExcelProperty("备注") + private String remark; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateTankExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateTankExcel.java new file mode 100644 index 00000000..6f44dc88 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/ProReTemplateTankExcel.java @@ -0,0 +1,64 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.excel; + + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import org.springblade.core.mp.base.BaseEntity; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import java.io.Serial; + + +/** + * [过程记录模板-槽-明细] Excel实体类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class ProReTemplateTankExcel implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * [过程记录模板]id + */ + @ColumnWidth(20) + @ExcelProperty("[过程记录模板]id") + private BigDecimal templateId; + /** + * 槽号名称 + */ + @ColumnWidth(20) + @ExcelProperty("槽号名称") + private String slotName; + /** + * 插入序号 + */ + @ColumnWidth(20) + @ExcelProperty("插入序号") + private Short insertIndex; + /** + * 模板类型 + */ + @ColumnWidth(20) + @ExcelProperty("模板类型") + private Short rfpsType; + /** + * 槽号序号 + */ + @ColumnWidth(20) + @ExcelProperty("槽号序号") + private BigDecimal slotIndex; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.java new file mode 100644 index 00000000..7facf62e --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.java @@ -0,0 +1,39 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.mapper; + +import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail; +import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO; +import org.springblade.desk.quality.excel.ProReTemplateDetailExcel; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * [过程记录模板-明细] Mapper 接口 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +public interface ProReTemplateDetailMapper extends BaseMapper { + + /** + * 自定义分页 + * + * @param page 分页参数 + * @param proReTemplateDetail 查询参数 + * @return List + */ + List selectProReTemplateDetailPage(IPage page, ProReTemplateDetailVO proReTemplateDetail); + + /** + * 获取导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List exportProReTemplateDetail(@Param("ew") Wrapper queryWrapper); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.xml new file mode 100644 index 00000000..86704e55 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateDetailMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.java new file mode 100644 index 00000000..8a5eeb68 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.java @@ -0,0 +1,39 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.mapper; + +import org.springblade.desk.quality.pojo.entity.ProReTemplateTank; +import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO; +import org.springblade.desk.quality.excel.ProReTemplateTankExcel; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * [过程记录模板-槽-明细] Mapper 接口 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +public interface ProReTemplateTankMapper extends BaseMapper { + + /** + * 自定义分页 + * + * @param page 分页参数 + * @param proReTemplateTank 查询参数 + * @return List + */ + List selectProReTemplateTankPage(IPage page, ProReTemplateTankVO proReTemplateTank); + + /** + * 获取导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List exportProReTemplateTank(@Param("ew") Wrapper queryWrapper); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.xml new file mode 100644 index 00000000..68f7091a --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ProReTemplateTankMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateDetailDTO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateDetailDTO.java new file mode 100644 index 00000000..523e2e79 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateDetailDTO.java @@ -0,0 +1,23 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.pojo.dto; + +import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serial; + +/** + * [过程记录模板-明细] 数据传输对象实体类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ProReTemplateDetailDTO extends ProReTemplateDetail { + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateTankDTO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateTankDTO.java new file mode 100644 index 00000000..414abe42 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/dto/ProReTemplateTankDTO.java @@ -0,0 +1,23 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.pojo.dto; + +import org.springblade.desk.quality.pojo.entity.ProReTemplateTank; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serial; + +/** + * [过程记录模板-槽-明细] 数据传输对象实体类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ProReTemplateTankDTO extends ProReTemplateTank { + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateDetail.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateDetail.java new file mode 100644 index 00000000..208ec95f --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateDetail.java @@ -0,0 +1,112 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.pojo.entity; + +import lombok.Data; +import io.swagger.v3.oas.annotations.media.Schema; +import com.baomidou.mybatisplus.annotation.TableName; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import org.springblade.core.mp.base.BaseEntity; +import lombok.EqualsAndHashCode; +import java.io.Serial; + +/** + * [过程记录模板-明细] 实体类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@Data +@TableName("QA_PRO_RE_TEMPLATE_DETAIL") +@Schema(description = "ProReTemplateDetail Entity对象") +@EqualsAndHashCode(callSuper = true) +public class ProReTemplateDetail extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 明细名称 + */ + public static final String COL_DETAIL_NAME = "DETAIL_NAME"; + /** + * 工艺要求 + */ + public static final String COL_ASK = "ASK"; + /** + * 是否合格 + */ + public static final String COL_QUALIFIED = "QUALIFIED"; + /** + * [过程记录模板-槽-明细]id + */ + public static final String COL_TEMPLATE_TANK_ID = "TEMPLATE_TANK_ID"; + /** + * 明细序号 + */ + public static final String COL_DETAIL_INDEX = "DETAIL_INDEX"; + /** + * 时间 + */ + public static final String COL_RFPD_TIME = "RFPD_TIME"; + /** + * 参数名称 + */ + public static final String COL_PARAM_NAME = "PARAM_NAME"; + /** + * 参数值 + */ + public static final String COL_PARAM_VALUE = "PARAM_VALUE"; + /** + * 备注 + */ + public static final String COL_REMARK = "REMARK"; + + /** + * 明细名称 + */ + @Schema(description = "明细名称") + private String detailName; + /** + * 工艺要求 + */ + @Schema(description = "工艺要求") + private String ask; + /** + * 是否合格 + */ + @Schema(description = "是否合格") + private Short qualified; + /** + * [过程记录模板-槽-明细]id + */ + @Schema(description = "[过程记录模板-槽-明细]id") + private BigDecimal templateTankId; + /** + * 明细序号 + */ + @Schema(description = "明细序号") + private Short detailIndex; + /** + * 时间 + */ + @Schema(description = "时间") + private LocalDateTime rfpdTime; + /** + * 参数名称 + */ + @Schema(description = "参数名称") + private String paramName; + /** + * 参数值 + */ + @Schema(description = "参数值") + private String paramValue; + /** + * 备注 + */ + @Schema(description = "备注") + private String remark; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateTank.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateTank.java new file mode 100644 index 00000000..ae744d99 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplateTank.java @@ -0,0 +1,75 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.pojo.entity; + +import lombok.Data; +import io.swagger.v3.oas.annotations.media.Schema; +import com.baomidou.mybatisplus.annotation.TableName; +import java.math.BigDecimal; +import org.springblade.core.mp.base.BaseEntity; +import lombok.EqualsAndHashCode; +import java.io.Serial; + +/** + * [过程记录模板-槽-明细] 实体类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@Data +@TableName("QA_PRO_RE_TEMPLATE_TANK") +@Schema(description = "ProReTemplateTank Entity对象") +@EqualsAndHashCode(callSuper = true) +public class ProReTemplateTank extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * [过程记录模板]id + */ + public static final String COL_TEMPLATE_ID = "TEMPLATE_ID"; + /** + * 槽号名称 + */ + public static final String COL_SLOT_NAME = "SLOT_NAME"; + /** + * 插入序号 + */ + public static final String COL_INSERT_INDEX = "INSERT_INDEX"; + /** + * 模板类型 + */ + public static final String COL_RFPS_TYPE = "RFPS_TYPE"; + /** + * 槽号序号 + */ + public static final String COL_SLOT_INDEX = "SLOT_INDEX"; + + /** + * [过程记录模板]id + */ + @Schema(description = "[过程记录模板]id") + private BigDecimal templateId; + /** + * 槽号名称 + */ + @Schema(description = "槽号名称") + private String slotName; + /** + * 插入序号 + */ + @Schema(description = "插入序号") + private Short insertIndex; + /** + * 模板类型 + */ + @Schema(description = "模板类型") + private Short rfpsType; + /** + * 槽号序号 + */ + @Schema(description = "槽号序号") + private BigDecimal slotIndex; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateDetailVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateDetailVO.java new file mode 100644 index 00000000..e56f726c --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateDetailVO.java @@ -0,0 +1,23 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.pojo.vo; + +import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serial; + +/** + * [过程记录模板-明细] 视图实体类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ProReTemplateDetailVO extends ProReTemplateDetail { + @Serial + private static final long serialVersionUID = 1L; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateTankVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateTankVO.java new file mode 100644 index 00000000..50836b02 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateTankVO.java @@ -0,0 +1,29 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import org.springblade.desk.quality.pojo.entity.ProReTemplateTank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.util.List; + +/** + * [过程记录模板-槽-明细] 视图实体类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ProReTemplateTankVO extends ProReTemplateTank { + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "detail 具体明细") + List childrenList; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateVO.java index a1aa60c4..e765994c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateVO.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/ProReTemplateVO.java @@ -6,9 +6,11 @@ package org.springblade.desk.quality.pojo.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springblade.desk.basic.pojo.vo.BaseEntityVO; import org.springblade.desk.quality.pojo.entity.ProReTemplate; import java.io.Serial; +import java.util.List; /** * [过程记录模板] 视图实体类 @@ -19,13 +21,15 @@ import java.io.Serial; @Data @EqualsAndHashCode(callSuper = true) public class ProReTemplateVO extends ProReTemplate { - @Serial - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; + @Schema(description = "基本信息字段") + private BaseEntityVO base; - @Schema(description = "[作业中心]name") - private String wcName; - @Schema(description = "[工序]name") - private String ppsName; - @Schema(description = "维护人") - private String updateUserRealName; + @Schema(description = "[作业中心]name") + private String wcName; + @Schema(description = "[工序]name") + private String ppsName; + @Schema(description = "tank 槽明细") + private List preserveSlotList; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateDetailService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateDetailService.java new file mode 100644 index 00000000..5697b9eb --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateDetailService.java @@ -0,0 +1,47 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.service; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail; +import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO; +import org.springblade.desk.quality.excel.ProReTemplateDetailExcel; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; + +import java.util.List; + +/** + * [过程记录模板-明细] 服务类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +public interface IProReTemplateDetailService extends BaseService { + /** + * 自定义分页 + * + * @param page 分页参数 + * @param proReTemplateDetail 查询参数 + * @return IPage + */ + IPage selectProReTemplateDetailPage(IPage page, ProReTemplateDetailVO proReTemplateDetail); + + /** + * 导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List exportProReTemplateDetail(Wrapper queryWrapper); + + /** + * VO + * + * @param vo + */ + void setVOValue(ProReTemplateDetailVO vo); + + List getListByTemplateTankId(Long templateTankId); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java index 60b9144a..76a10437 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateService.java @@ -6,6 +6,7 @@ package org.springblade.desk.quality.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; +import org.springblade.core.tool.api.R; import org.springblade.desk.quality.excel.ProReTemplateExcel; import org.springblade.desk.quality.pojo.entity.ProReTemplate; import org.springblade.desk.quality.pojo.vo.InspectionTemplateVO; @@ -20,26 +21,31 @@ import java.util.List; * @since 2025-12-22 */ public interface IProReTemplateService extends BaseService { - /** - * 自定义分页 - * - * @param page 分页参数 - * @param proReTemplate 查询参数 - * @return IPage - */ - IPage selectProReTemplatePage(IPage page, ProReTemplateVO proReTemplate); + /** + * 自定义分页 + * + * @param page 分页参数 + * @param proReTemplate 查询参数 + * @return IPage + */ + IPage selectProReTemplatePage(IPage page, ProReTemplateVO proReTemplate); - /** - * 导出数据 - * - * @param queryWrapper 查询条件 - * @return List - */ - List exportProReTemplate(Wrapper queryWrapper); + /** + * 导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List exportProReTemplate(Wrapper queryWrapper); /** * VO + * * @param vo */ - void setVOValue(ProReTemplateVO vo); + void setVOValue(ProReTemplateVO vo); + + R copy(Long id); + + R upgradeVer(Long id); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateTankService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateTankService.java new file mode 100644 index 00000000..37227404 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IProReTemplateTankService.java @@ -0,0 +1,47 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.service; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import org.springblade.desk.quality.pojo.entity.ProReTemplateTank; +import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO; +import org.springblade.desk.quality.excel.ProReTemplateTankExcel; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; + +import java.util.List; + +/** + * [过程记录模板-槽-明细] 服务类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +public interface IProReTemplateTankService extends BaseService { + /** + * 自定义分页 + * + * @param page 分页参数 + * @param proReTemplateTank 查询参数 + * @return IPage + */ + IPage selectProReTemplateTankPage(IPage page, ProReTemplateTankVO proReTemplateTank); + + /** + * 导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List exportProReTemplateTank(Wrapper queryWrapper); + + /** + * VO + * + * @param vo + */ + void setVOValue(ProReTemplateTankVO vo); + + List getListByTemplateId(Long templateId); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateDetailServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateDetailServiceImpl.java new file mode 100644 index 00000000..7bf92438 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateDetailServiceImpl.java @@ -0,0 +1,72 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.service.impl; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import jakarta.annotation.Resource; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.desk.quality.excel.ProReTemplateDetailExcel; +import org.springblade.desk.quality.mapper.ProReTemplateDetailMapper; +import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail; +import org.springblade.desk.quality.pojo.entity.ProReTemplateTank; +import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO; +import org.springblade.desk.quality.service.IProReTemplateDetailService; +import org.springblade.desk.quality.wrapper.ProReTemplateDetailWrapper; +import org.springblade.desk.quality.wrapper.ProReTemplateTankWrapper; +import org.springblade.system.feign.IUserClient; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * [过程记录模板-明细] 服务实现类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@Service +@Data +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Slf4j +public class ProReTemplateDetailServiceImpl extends BaseServiceImpl + implements IProReTemplateDetailService { + + @Resource + private IUserClient userClient; + + @Override + public IPage selectProReTemplateDetailPage(IPage page, ProReTemplateDetailVO proReTemplateDetail) { + return page.setRecords(baseMapper.selectProReTemplateDetailPage(page, proReTemplateDetail)); + } + + @Override + public List exportProReTemplateDetail(Wrapper queryWrapper) { + List proReTemplateDetailList = baseMapper.exportProReTemplateDetail(queryWrapper); + //proReTemplateDetailList.forEach(proReTemplateDetail -> { + // proReTemplateDetail.setTypeName(DictCache.getValue(DictEnum.YES_NO, ProReTemplateDetail.getType())); + //}); + return proReTemplateDetailList; + } + + @Override + public void setVOValue(ProReTemplateDetailVO vo) { + + } + + @Override + public List getListByTemplateTankId(Long templateTankId) { + LambdaQueryWrapper qw = Wrappers.lambdaQuery(ProReTemplateDetail.class); + qw.eq(ProReTemplateDetail::getTemplateTankId, templateTankId); + List list = list(qw); + return ProReTemplateDetailWrapper.build().listVO(list); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java index 354ca69a..da186583 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateServiceImpl.java @@ -3,6 +3,7 @@ */ package org.springblade.desk.quality.service.impl; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.annotation.Resource; @@ -11,16 +12,24 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.api.R; +import org.springblade.desk.quality.constant.ProReTemplateConst; import org.springblade.desk.quality.excel.ProReTemplateExcel; import org.springblade.desk.quality.mapper.ProReTemplateMapper; import org.springblade.desk.quality.pojo.entity.ProReTemplate; import org.springblade.desk.quality.pojo.vo.InspectionTemplateVO; +import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO; +import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO; import org.springblade.desk.quality.pojo.vo.ProReTemplateVO; +import org.springblade.desk.quality.service.IProReTemplateDetailService; import org.springblade.desk.quality.service.IProReTemplateService; +import org.springblade.desk.quality.service.IProReTemplateTankService; import org.springblade.system.feign.IUserClient; import org.springframework.stereotype.Service; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; /** * [过程记录模板] 服务实现类 @@ -34,27 +43,55 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) @Slf4j public class ProReTemplateServiceImpl extends BaseServiceImpl - implements IProReTemplateService { + implements IProReTemplateService { @Resource private IUserClient userClient; + @Resource + private IProReTemplateTankService tankService; + @Resource + private IProReTemplateDetailService detailService; + + @Override + public IPage selectProReTemplatePage(IPage page, ProReTemplateVO proReTemplate) { + return page.setRecords(baseMapper.selectProReTemplatePage(page, proReTemplate)); + } - @Override - public IPage selectProReTemplatePage(IPage page, ProReTemplateVO proReTemplate) { - return page.setRecords(baseMapper.selectProReTemplatePage(page, proReTemplate)); - } + @Override + public List exportProReTemplate(Wrapper queryWrapper) { + List proReTemplateList = baseMapper.exportProReTemplate(queryWrapper); + //proReTemplateList.forEach(proReTemplate -> { + // proReTemplate.setTypeName(DictCache.getValue(DictEnum.YES_NO, ProReTemplate.getType())); + //}); + return proReTemplateList; + } - @Override - public List exportProReTemplate(Wrapper queryWrapper) { - List proReTemplateList = baseMapper.exportProReTemplate(queryWrapper); - //proReTemplateList.forEach(proReTemplate -> { - // proReTemplate.setTypeName(DictCache.getValue(DictEnum.YES_NO, ProReTemplate.getType())); - //}); - return proReTemplateList; - } + @Override + public void setVOValue(ProReTemplateVO vo) { + List tankVOList = tankService.getListByTemplateId(vo.getId()); + // 根据插入序号 getInsertIndex 排序 生成新的list + tankVOList = tankVOList.stream() + .sorted(Comparator.comparingInt(ProReTemplateTankVO::getInsertIndex)) + .collect(Collectors.toList()); + vo.setPreserveSlotList(tankVOList); + for (ProReTemplateTankVO tankVO : vo.getPreserveSlotList()) { + List detailVOList = detailService.getListByTemplateTankId(tankVO.getId()); + tankVO.setChildrenList(detailVOList); + } + } - @Override - public void setVOValue(ProReTemplateVO vo) { + @Override + public R copy(Long id) { + ProReTemplate find = getById(id); + ProReTemplate copy = new ProReTemplate(); + BeanUtil.copyProperties(find, copy, true); + copy.setId(null); + copy.setStatus(ProReTemplateConst.STATUS_NEW); + return R.status(save(copy)); + } - } + @Override + public R upgradeVer(Long id) { + return null; + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateTankServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateTankServiceImpl.java new file mode 100644 index 00000000..ab22ddac --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ProReTemplateTankServiceImpl.java @@ -0,0 +1,72 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.service.impl; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import jakarta.annotation.Resource; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.desk.quality.excel.ProReTemplateTankExcel; +import org.springblade.desk.quality.mapper.ProReTemplateTankMapper; +import org.springblade.desk.quality.pojo.entity.ProReTemplateTank; +import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO; +import org.springblade.desk.quality.service.IProReTemplateTankService; +import org.springblade.desk.quality.wrapper.ProReTemplateTankWrapper; +import org.springblade.system.feign.IUserClient; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * [过程记录模板-槽-明细] 服务实现类 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +@Service +@Data +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Slf4j +public class ProReTemplateTankServiceImpl extends BaseServiceImpl + implements IProReTemplateTankService { + + @Resource + private IUserClient userClient; + + @Override + public IPage selectProReTemplateTankPage(IPage page, ProReTemplateTankVO proReTemplateTank) { + return page.setRecords(baseMapper.selectProReTemplateTankPage(page, proReTemplateTank)); + } + + @Override + public List exportProReTemplateTank(Wrapper queryWrapper) { + List proReTemplateTankList = baseMapper.exportProReTemplateTank(queryWrapper); + //proReTemplateTankList.forEach(proReTemplateTank -> { + // proReTemplateTank.setTypeName(DictCache.getValue(DictEnum.YES_NO, ProReTemplateTank.getType())); + //}); + return proReTemplateTankList; + } + + @Override + public void setVOValue(ProReTemplateTankVO vo) { + + } + + @Override + public List getListByTemplateId(Long templateId) { + LambdaQueryWrapper qw = Wrappers.lambdaQuery(ProReTemplateTank.class); + qw.eq(ProReTemplateTank::getTemplateId, templateId); + List list = list(qw); + return ProReTemplateTankWrapper.build().listVO(list); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateDetailWrapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateDetailWrapper.java new file mode 100644 index 00000000..7803c329 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateDetailWrapper.java @@ -0,0 +1,35 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.wrapper; + +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.desk.quality.pojo.entity.ProReTemplateDetail; +import org.springblade.desk.quality.pojo.vo.ProReTemplateDetailVO; +import java.util.Objects; + +/** + * [过程记录模板-明细] 包装类,返回视图层所需的字段 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +public class ProReTemplateDetailWrapper extends BaseEntityWrapper { + + public static ProReTemplateDetailWrapper build() { + return new ProReTemplateDetailWrapper(); + } + + @Override + public ProReTemplateDetailVO entityVO(ProReTemplateDetail proReTemplateDetail) { + ProReTemplateDetailVO VO = Objects.requireNonNull(BeanUtil.copyProperties(proReTemplateDetail, ProReTemplateDetailVO.class)); + + //User createUser = UserCache.getUser(proReTemplateDetail.getCreateUser()); + //User updateUser = UserCache.getUser(proReTemplateDetail.getUpdateUser()); + //proReTemplateDetailVO.setCreateUserName(createUser.getName()); + //proReTemplateDetailVO.setUpdateUserName(updateUser.getName()); + + return VO; + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateTankWrapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateTankWrapper.java new file mode 100644 index 00000000..7e7578ea --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/wrapper/ProReTemplateTankWrapper.java @@ -0,0 +1,35 @@ +/** + * Author: Tom Shuo + */ +package org.springblade.desk.quality.wrapper; + +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.desk.quality.pojo.entity.ProReTemplateTank; +import org.springblade.desk.quality.pojo.vo.ProReTemplateTankVO; +import java.util.Objects; + +/** + * [过程记录模板-槽-明细] 包装类,返回视图层所需的字段 + * + * @author Tom Shuo + * @since 2025-12-30 + */ +public class ProReTemplateTankWrapper extends BaseEntityWrapper { + + public static ProReTemplateTankWrapper build() { + return new ProReTemplateTankWrapper(); + } + + @Override + public ProReTemplateTankVO entityVO(ProReTemplateTank proReTemplateTank) { + ProReTemplateTankVO VO = Objects.requireNonNull(BeanUtil.copyProperties(proReTemplateTank, ProReTemplateTankVO.class)); + + //User createUser = UserCache.getUser(proReTemplateTank.getCreateUser()); + //User updateUser = UserCache.getUser(proReTemplateTank.getUpdateUser()); + //proReTemplateTankVO.setCreateUserName(createUser.getName()); + //proReTemplateTankVO.setUpdateUserName(updateUser.getName()); + + return VO; + } +}