From 4ff99af978a54d9d818f83d57e9a7422fc5dfe43 Mon Sep 17 00:00:00 2001 From: Tom Li Date: Tue, 30 Dec 2025 23:50:19 +0800 Subject: [PATCH 1/5] =?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; + } +} From 837f642f526c918f499eff1191944b18de489763 Mon Sep 17 00:00:00 2001 From: Tom Li Date: Wed, 31 Dec 2025 07:48:00 +0800 Subject: [PATCH 2/5] =?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 --- .../springblade/desk/quality/pojo/vo/ProReTemplateVO.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 e765994c..783f6996 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 @@ -23,8 +23,11 @@ import java.util.List; public class ProReTemplateVO extends ProReTemplate { @Serial private static final long serialVersionUID = 1L; + /** + * todo: + */ @Schema(description = "基本信息字段") - private BaseEntityVO base; + private BaseEntityVO base = new BaseEntityVO(); @Schema(description = "[作业中心]name") private String wcName; From 7d3d5592591479bae179491e8fc334b8d30cc86c Mon Sep 17 00:00:00 2001 From: Tom Li Date: Wed, 31 Dec 2025 15:19:42 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0system-api=E5=BC=95?= =?UTF-8?q?=E7=94=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blade-service/blade-desk/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/blade-service/blade-desk/pom.xml b/blade-service/blade-desk/pom.xml index e99c548c..fa110c87 100644 --- a/blade-service/blade-desk/pom.xml +++ b/blade-service/blade-desk/pom.xml @@ -82,6 +82,10 @@ org.springblade blade-resource-api + + org.springblade + blade-system-api + From 01e71425aa87bdb76f4985f7f1ff074f2b34de17 Mon Sep 17 00:00:00 2001 From: Tom Li Date: Wed, 31 Dec 2025 15:33:04 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E7=BB=B4=E6=8A=A4=E4=BA=BA=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/LauncherConstant.java | 406 +++++++++--------- .../src/main/resources/application-dev.yml | 1 + .../desk/basic/pojo/vo/BaseEntityVO.java | 2 +- .../desk/{quality => basic}/util/IdUtil.java | 4 +- .../quality/constant/ProReTemplateConst.java | 7 + .../controller/ProReTemplateController.java | 344 ++++++++------- .../quality/pojo/entity/ProReTemplate.java | 2 +- .../pojo/entity/ProReTemplateDetail.java | 6 +- .../pojo/entity/ProReTemplateTank.java | 8 +- .../desk/quality/pojo/vo/AuditFileVO.java | 13 +- .../quality/pojo/vo/ProReTemplateTankVO.java | 1 - .../desk/quality/pojo/vo/ProReTemplateVO.java | 6 +- .../service/CycleTestItemService2.java | 2 +- .../service/CycleTestStandardService2.java | 2 +- .../quality/service/IAuditFileService.java | 3 + .../service/IProReTemplateService.java | 6 + .../service/LiquidTankTaskService222.java | 2 +- .../service/LiquidTankTaskSetVoService.java | 2 +- .../service/impl/AuditFileServiceImpl.java | 6 + .../service/impl/LiquidTankServiceImpl.java | 2 +- .../impl/LiquidTankTaskServiceImpl.java | 2 +- .../impl/ProReTemplateServiceImpl.java | 116 ++++- .../service/impl/StandardServiceImpl.java | 2 +- .../desk/quality/util/BaseEntityUtil.java | 7 +- 24 files changed, 552 insertions(+), 400 deletions(-) rename blade-service/blade-desk/src/main/java/org/springblade/desk/{quality => basic}/util/IdUtil.java (92%) diff --git a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java index 79c69ebb..27a88b64 100644 --- a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java +++ b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java @@ -9,209 +9,209 @@ import org.springblade.core.launch.constant.AppConstant; */ public interface LauncherConstant { - /** - * nacos 命名空间 - */ + /** + * nacos 命名空间 + */ // String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e"; - // 生产环境 - String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401"; - // 测试环境 - // String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8"; - - /** - * nacos 用户名 - */ - String NACOS_USERNAME = "nacos"; - - /** - * nacos 密码 - */ - String NACOS_PASSWORD = "nacos"; - - /** - * nacos dev 地址 - */ - String NACOS_DEV_ADDR = "127.0.0.1:8848"; - - /** - * nacos prod 地址 - */ - String NACOS_PROD_ADDR = "172.30.0.48:8848"; - - /** - * nacos test 地址 - */ - String NACOS_TEST_ADDR = "172.30.0.48:8848"; - - /** - * sentinel dev 地址 - */ - String SENTINEL_DEV_ADDR = "127.0.0.1:8858"; - - /** - * sentinel prod 地址 - */ - String SENTINEL_PROD_ADDR = "172.30.0.58:8858"; - - /** - * sentinel test 地址 - */ - String SENTINEL_TEST_ADDR = "172.30.0.58:8858"; - - /** - * seata dev 地址 - */ - String SEATA_DEV_ADDR = "127.0.0.1:8091"; - - /** - * seata prod 地址 - */ - String SEATA_PROD_ADDR = "172.30.0.68:8091"; - - /** - * seata test 地址 - */ - String SEATA_TEST_ADDR = "172.30.0.68:8091"; - - /** - * zipkin dev 地址 - */ - String ZIPKIN_DEV_ADDR = "http://127.0.0.1:9411"; - - /** - * zipkin prod 地址 - */ - String ZIPKIN_PROD_ADDR = "http://172.30.0.71:9411"; - - /** - * zipkin test 地址 - */ - String ZIPKIN_TEST_ADDR = "http://172.30.0.71:9411"; - - /** - * elk dev 地址 - */ - String ELK_DEV_ADDR = "127.0.0.1:9000"; - - /** - * elk prod 地址 - */ - String ELK_PROD_ADDR = "172.30.0.72:9000"; - - /** - * elk test 地址 - */ - String ELK_TEST_ADDR = "172.30.0.72:9000"; - - /** - * seata file模式 - */ - String FILE_MODE = "file"; - - /** - * seata nacos模式 - */ - String NACOS_MODE = "nacos"; - - /** - * seata default模式 - */ - String DEFAULT_MODE = "default"; - - /** - * seata group后缀 - */ - String GROUP_NAME = "-group"; - - - /** - * 排产系统 - */ - String APPLICATION_SCHEDULING_NAME = "blade-scheduling"; - - /** - * 生产监控 - */ - String APPLICATION_MONITOR_NAME = "blade-monitor"; - - /** - * seata 服务组格式 - * - * @param appName 服务名 - * @return group - */ - static String seataServiceGroup(String appName) { - return appName.concat(GROUP_NAME); - } - - /** - * 动态获取nacos地址 - * - * @param profile 环境变量 - * @return addr - */ - static String nacosAddr(String profile) { - return switch (profile) { - case (AppConstant.PROD_CODE) -> NACOS_PROD_ADDR; - case (AppConstant.TEST_CODE) -> NACOS_TEST_ADDR; - default -> NACOS_DEV_ADDR; - }; - } - - /** - * 动态获取sentinel地址 - * - * @param profile 环境变量 - * @return addr - */ - static String sentinelAddr(String profile) { - return switch (profile) { - case (AppConstant.PROD_CODE) -> SENTINEL_PROD_ADDR; - case (AppConstant.TEST_CODE) -> SENTINEL_TEST_ADDR; - default -> SENTINEL_DEV_ADDR; - }; - } - - /** - * 动态获取seata地址 - * - * @param profile 环境变量 - * @return addr - */ - static String seataAddr(String profile) { - return switch (profile) { - case (AppConstant.PROD_CODE) -> SEATA_PROD_ADDR; - case (AppConstant.TEST_CODE) -> SEATA_TEST_ADDR; - default -> SEATA_DEV_ADDR; - }; - } - - /** - * 动态获取zipkin地址 - * - * @param profile 环境变量 - * @return addr - */ - static String zipkinAddr(String profile) { - return switch (profile) { - case (AppConstant.PROD_CODE) -> ZIPKIN_PROD_ADDR; - case (AppConstant.TEST_CODE) -> ZIPKIN_TEST_ADDR; - default -> ZIPKIN_DEV_ADDR; - }; - } - - /** - * 动态获取elk地址 - * - * @param profile 环境变量 - * @return addr - */ - static String elkAddr(String profile) { - return switch (profile) { - case (AppConstant.PROD_CODE) -> ELK_PROD_ADDR; - case (AppConstant.TEST_CODE) -> ELK_TEST_ADDR; - default -> ELK_DEV_ADDR; - }; - } + // 生产环境 +// String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401"; + // 测试环境 + String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8"; + + /** + * nacos 用户名 + */ + String NACOS_USERNAME = "nacos"; + + /** + * nacos 密码 + */ + String NACOS_PASSWORD = "nacos"; + + /** + * nacos dev 地址 + */ + String NACOS_DEV_ADDR = "127.0.0.1:8848"; + + /** + * nacos prod 地址 + */ + String NACOS_PROD_ADDR = "172.30.0.48:8848"; + + /** + * nacos test 地址 + */ + String NACOS_TEST_ADDR = "172.30.0.48:8848"; + + /** + * sentinel dev 地址 + */ + String SENTINEL_DEV_ADDR = "127.0.0.1:8858"; + + /** + * sentinel prod 地址 + */ + String SENTINEL_PROD_ADDR = "172.30.0.58:8858"; + + /** + * sentinel test 地址 + */ + String SENTINEL_TEST_ADDR = "172.30.0.58:8858"; + + /** + * seata dev 地址 + */ + String SEATA_DEV_ADDR = "127.0.0.1:8091"; + + /** + * seata prod 地址 + */ + String SEATA_PROD_ADDR = "172.30.0.68:8091"; + + /** + * seata test 地址 + */ + String SEATA_TEST_ADDR = "172.30.0.68:8091"; + + /** + * zipkin dev 地址 + */ + String ZIPKIN_DEV_ADDR = "http://127.0.0.1:9411"; + + /** + * zipkin prod 地址 + */ + String ZIPKIN_PROD_ADDR = "http://172.30.0.71:9411"; + + /** + * zipkin test 地址 + */ + String ZIPKIN_TEST_ADDR = "http://172.30.0.71:9411"; + + /** + * elk dev 地址 + */ + String ELK_DEV_ADDR = "127.0.0.1:9000"; + + /** + * elk prod 地址 + */ + String ELK_PROD_ADDR = "172.30.0.72:9000"; + + /** + * elk test 地址 + */ + String ELK_TEST_ADDR = "172.30.0.72:9000"; + + /** + * seata file模式 + */ + String FILE_MODE = "file"; + + /** + * seata nacos模式 + */ + String NACOS_MODE = "nacos"; + + /** + * seata default模式 + */ + String DEFAULT_MODE = "default"; + + /** + * seata group后缀 + */ + String GROUP_NAME = "-group"; + + + /** + * 排产系统 + */ + String APPLICATION_SCHEDULING_NAME = "blade-scheduling"; + + /** + * 生产监控 + */ + String APPLICATION_MONITOR_NAME = "blade-monitor"; + + /** + * seata 服务组格式 + * + * @param appName 服务名 + * @return group + */ + static String seataServiceGroup(String appName) { + return appName.concat(GROUP_NAME); + } + + /** + * 动态获取nacos地址 + * + * @param profile 环境变量 + * @return addr + */ + static String nacosAddr(String profile) { + return switch (profile) { + case (AppConstant.PROD_CODE) -> NACOS_PROD_ADDR; + case (AppConstant.TEST_CODE) -> NACOS_TEST_ADDR; + default -> NACOS_DEV_ADDR; + }; + } + + /** + * 动态获取sentinel地址 + * + * @param profile 环境变量 + * @return addr + */ + static String sentinelAddr(String profile) { + return switch (profile) { + case (AppConstant.PROD_CODE) -> SENTINEL_PROD_ADDR; + case (AppConstant.TEST_CODE) -> SENTINEL_TEST_ADDR; + default -> SENTINEL_DEV_ADDR; + }; + } + + /** + * 动态获取seata地址 + * + * @param profile 环境变量 + * @return addr + */ + static String seataAddr(String profile) { + return switch (profile) { + case (AppConstant.PROD_CODE) -> SEATA_PROD_ADDR; + case (AppConstant.TEST_CODE) -> SEATA_TEST_ADDR; + default -> SEATA_DEV_ADDR; + }; + } + + /** + * 动态获取zipkin地址 + * + * @param profile 环境变量 + * @return addr + */ + static String zipkinAddr(String profile) { + return switch (profile) { + case (AppConstant.PROD_CODE) -> ZIPKIN_PROD_ADDR; + case (AppConstant.TEST_CODE) -> ZIPKIN_TEST_ADDR; + default -> ZIPKIN_DEV_ADDR; + }; + } + + /** + * 动态获取elk地址 + * + * @param profile 环境变量 + * @return addr + */ + static String elkAddr(String profile) { + return switch (profile) { + case (AppConstant.PROD_CODE) -> ELK_PROD_ADDR; + case (AppConstant.TEST_CODE) -> ELK_TEST_ADDR; + default -> ELK_DEV_ADDR; + }; + } } diff --git a/blade-ops/blade-job/src/main/resources/application-dev.yml b/blade-ops/blade-job/src/main/resources/application-dev.yml index adb34200..8ab5f1b4 100644 --- a/blade-ops/blade-job/src/main/resources/application-dev.yml +++ b/blade-ops/blade-job/src/main/resources/application-dev.yml @@ -3,6 +3,7 @@ server: port: 7770 #job服务配置 +#PowerJob外部应用启动类 tech.powerjob.server.PowerJobServerApplication powerjob: worker: app-name: ${spring.application.name} 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 index 21a119cf..e05c23a4 100644 --- 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 @@ -37,5 +37,5 @@ public class BaseEntityVO { @Schema(description = "维护[用户]-真名") private String keepUserRealName = "维护[用户]-真名"; @Schema(description = "业务状态 名称") - private String statusName; + private String statusName = "statusName"; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/IdUtil.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/util/IdUtil.java similarity index 92% rename from blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/IdUtil.java rename to blade-service/blade-desk/src/main/java/org/springblade/desk/basic/util/IdUtil.java index 7b01ecd3..4fe156d0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/IdUtil.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/util/IdUtil.java @@ -1,4 +1,4 @@ -package org.springblade.desk.quality.util; +package org.springblade.desk.basic.util; /** * 雪花 long id工具类。 @@ -32,7 +32,7 @@ public class IdUtil { public static Boolean isInvalid(Long id) { if (id == null || id <= 0L) { return Boolean.TRUE; - // todo:兼容老MES数据 + // todo:兼容老MES数据 不进行19位校验 // } else if (id < MIN_19_ID) { // return Boolean.TRUE; } else if (id == Long.MAX_VALUE) { 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 index 61164b6a..baf3f7cb 100644 --- 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 @@ -13,4 +13,11 @@ public interface ProReTemplateConst { * 废弃 */ Integer STATUS_NO = 3; + + + Integer ONLINE = 1; + + Integer OFFLINE = 0; + + String DIC = "ProReTemplate-Status"; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java index e72d29a4..ba275361 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ProReTemplateController.java @@ -25,6 +25,7 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.util.ExcelExtUtil; +import org.springblade.desk.quality.constant.ProReTemplateConst; import org.springblade.desk.quality.excel.ProReTemplateExcel; import org.springblade.desk.quality.pojo.entity.ProReTemplate; import org.springblade.desk.quality.pojo.vo.ProReTemplateVO; @@ -54,184 +55,213 @@ import java.util.stream.Collectors; public class ProReTemplateController extends BladeController { @Resource - private IProReTemplateService service; - - /** - * [过程记录模板] 详情 - */ - @GetMapping("/detail") - @ApiOperationSupport(order = 10) - @Operation(summary = "详情", description = "传入ProReTemplate Obj") - public R detail(ProReTemplate proReTemplate) { - QueryWrapper qw = Condition.getQueryWrapper(proReTemplate); - ProReTemplate detail = service.getOne(qw); - ProReTemplateVO detailVO = ProReTemplateWrapper.build().entityVO(detail); - service.setVOValue(detailVO); - return R.data(detailVO); - } - - /** - * [过程记录模板] list分页 - */ - @GetMapping("/list") - @ApiOperationSupport(order = 20) - @Operation(summary = "list分页", description = "传入ProReTemplate Obj") - public R> list(@Parameter(hidden = true) @RequestParam Map proReTemplate, - Query query) { + private IProReTemplateService service; + + /** + * [过程记录模板] 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 10) + @Operation(summary = "详情", description = "传入ProReTemplate Obj") + public R detail(ProReTemplate proReTemplate) { + QueryWrapper qw = Condition.getQueryWrapper(proReTemplate); + ProReTemplate detail = service.getOne(qw); + ProReTemplateVO detailVO = ProReTemplateWrapper.build().entityVO(detail); + service.setVOValue(detailVO); + return R.data(detailVO); + } + + /** + * [过程记录模板] list分页 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 20) + @Operation(summary = "list分页", description = "传入ProReTemplate Obj") + public R> list(@Parameter(hidden = true) @RequestParam Map proReTemplate, + Query query) { QueryWrapper qw = Condition.getQueryWrapper(proReTemplate, ProReTemplate.class); - IPage pages = service.page(Condition.getPage(query), qw); - IPage pagesVO = ProReTemplateWrapper.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 = "传入ProReTemplate Obj") - public R> page(ProReTemplateVO proReTemplate, Query query) { - IPage pagesVO = service.selectProReTemplatePage( - Condition.getPage(query), proReTemplate - ); - return R.data(pagesVO); - } - - /** + IPage pages = service.page(Condition.getPage(query), qw); + IPage pagesVO = ProReTemplateWrapper.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 = "传入ProReTemplate Obj") + public R> page(ProReTemplateVO proReTemplate, Query query) { + IPage pagesVO = service.selectProReTemplatePage( + Condition.getPage(query), proReTemplate + ); + return R.data(pagesVO); + } + + /** * [过程记录模板] list下拉选择 */ @GetMapping("/listForSelect") @ApiOperationSupport(order = 22) - @Operation(summary = "list下拉选择", description = "") + @Operation(summary = "list下拉选择", description = "") public R> listForSelect() { - List list = service.list(); - List listVO = ProReTemplateWrapper.build().listVO(list); - return R.data(listVO); - } - - /** - * [过程记录模板] 新增一条 - */ - @PostMapping("/save") - @ApiOperationSupport(order = 30) - @Operation(summary = "新增一条", description = "传入ProReTemplate Obj") - public R save(@Valid @RequestBody ProReTemplate addOne) { - addOne.setId(null); - return R.status(service.save(addOne)); - } - - /** + List list = service.list(); + List listVO = ProReTemplateWrapper.build().listVO(list); + return R.data(listVO); + } + + /** + * [过程记录模板] 新增一条 + */ + @PostMapping("/save") + @ApiOperationSupport(order = 30) + @Operation(summary = "新增一条", description = "传入ProReTemplate Obj") + public R save(@Valid @RequestBody ProReTemplate addOne) { + addOne.setId(null); + addOne.setStatus(ProReTemplateConst.STATUS_NEW); + addOne.setApprovalStatus(1); + return R.status(service.save(addOne)); + } + + /** * [过程记录模板] 新增批量 */ - @PostMapping("/saveBat") - @ApiOperationSupport(order = 31) - @Operation(summary = "新增批量", description = "传入ProReTemplate 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 = "传入ProReTemplate Obj") - public R update(@Valid @RequestBody ProReTemplate updateOne) { - return R.status(service.updateById(updateOne)); - } + @PostMapping("/saveBat") + @ApiOperationSupport(order = 31) + @Operation(summary = "新增批量", description = "传入ProReTemplate 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 = "传入ProReTemplate Obj") + public R update(@Valid @RequestBody ProReTemplate updateOne) { + return R.status(service.updateById(updateOne)); + } + + /** + * [过程记录模板] 修改一条 + */ + @PostMapping("/updateDetail") + @ApiOperationSupport(order = 42) + @Operation(summary = "修改一条明细", description = "传入ProReTemplate Obj") + public R updateDetail(@Valid @RequestBody ProReTemplateVO updateDetail) { + return service.updateDetail(updateDetail); + } /** * [过程记录模板] 修改批量 */ @PostMapping("/updateBat") @ApiOperationSupport(order = 41) - @Operation(summary = "修改批量", description = "传入ProReTemplate List") + @Operation(summary = "修改批量", description = "传入ProReTemplate List") public R updateBat(@Valid @RequestBody List updateList) { return R.status(service.updateBatchById(updateList)); } - /** - * [过程记录模板] 新增或修改一条 - */ - @PostMapping("/submit") - @ApiOperationSupport(order = 50) - @Operation(summary = "新增或修改一条", description = "传入ProReTemplate Obj") - public R submit(@Valid @RequestBody ProReTemplate mergeOne) { - return R.status(service.saveOrUpdate(mergeOne)); - } + /** + * [过程记录模板] 新增或修改一条 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 50) + @Operation(summary = "新增或修改一条", description = "传入ProReTemplate Obj") + public R submit(@Valid @RequestBody ProReTemplate mergeOne) { + return R.status(service.saveOrUpdate(mergeOne)); + } - /** + /** * [过程记录模板] 新增或修改批量 */ - @PostMapping("/submitBat") - @ApiOperationSupport(order = 51) - @Operation(summary = "新增或修改批量", description = "传入ProReTemplate 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 = "传入ProReTemplate") - public void exportExcel(@Parameter(hidden = true) @RequestParam Map proReTemplate, - BladeUser bladeUser, HttpServletResponse response) { - QueryWrapper qw = Condition.getQueryWrapper(proReTemplate, ProReTemplate.class); - //if (!AuthUtil.isAdministrator()) { - // queryWrapper.lambda().eq(ProReTemplate::getTenantId, bladeUser.getTenantId()); - //} - //queryWrapper.lambda().eq(ProReTemplateEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); - List list = service.exportProReTemplate(qw); - ExcelUtil.export(response, "[过程记录模板]数据" + DateUtil.time(), - "[过程记录模板]数据表", list, ProReTemplateExcel.class); - } - - /** + @PostMapping("/submitBat") + @ApiOperationSupport(order = 51) + @Operation(summary = "新增或修改批量", description = "传入ProReTemplate 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))); + } + + @GetMapping("/removeFromDetail") + @ApiOperationSupport(order = 61) + @Operation(summary = "逻辑删除FromDetail", description = "传入ids") + public R removeFromDetail(@Parameter(description = "", required = true) @RequestParam Long tankId) { + return service.removeFromDetail(tankId); + } + + /** + * [过程记录模板] 导出Excel + */ + @GetMapping("/exportExcel") + @ApiOperationSupport(order = 70) + @Operation(summary = "导出Excel", description = "传入ProReTemplate") + public void exportExcel(@Parameter(hidden = true) @RequestParam Map proReTemplate, + BladeUser bladeUser, HttpServletResponse response) { + QueryWrapper qw = Condition.getQueryWrapper(proReTemplate, ProReTemplate.class); + //if (!AuthUtil.isAdministrator()) { + // queryWrapper.lambda().eq(ProReTemplate::getTenantId, bladeUser.getTenantId()); + //} + //queryWrapper.lambda().eq(ProReTemplateEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); + List list = service.exportProReTemplate(qw); + ExcelUtil.export(response, "[过程记录模板]数据" + DateUtil.time(), + "[过程记录模板]数据表", list, ProReTemplateExcel.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, ProReTemplate.class - ); - return R.status(service.saveBatch(importList)); - } + @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, ProReTemplate.class + ); + return R.status(service.saveBatch(importList)); + } + + /** + * [过程记录模板] 逻辑删除 + */ + @GetMapping("/copy") + @ApiOperationSupport(order = 80) + @Operation(summary = "copy", description = "传入id") + public R copy(@Parameter(description = "主键", required = true) @RequestParam Long id) { + return service.copy(id); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplate.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplate.java index ce6f2420..18c394f2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplate.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/entity/ProReTemplate.java @@ -79,7 +79,7 @@ public class ProReTemplate extends BaseEntity { * 审批状态 */ @Schema(description = "审批状态") - private Short approvalStatus; + private Integer approvalStatus; /** * 线上/下-[0]:线上;[1]:线下; */ 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 index 208ec95f..90519170 100644 --- 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 @@ -78,17 +78,17 @@ public class ProReTemplateDetail extends BaseEntity { * 是否合格 */ @Schema(description = "是否合格") - private Short qualified; + private Integer qualified; /** * [过程记录模板-槽-明细]id */ @Schema(description = "[过程记录模板-槽-明细]id") - private BigDecimal templateTankId; + private Long templateTankId; /** * 明细序号 */ @Schema(description = "明细序号") - private Short detailIndex; + private Integer detailIndex; /** * 时间 */ 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 index ae744d99..2b4e1daa 100644 --- 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 @@ -51,7 +51,7 @@ public class ProReTemplateTank extends BaseEntity { * [过程记录模板]id */ @Schema(description = "[过程记录模板]id") - private BigDecimal templateId; + private Long templateId; /** * 槽号名称 */ @@ -61,15 +61,15 @@ public class ProReTemplateTank extends BaseEntity { * 插入序号 */ @Schema(description = "插入序号") - private Short insertIndex; + private Integer insertIndex; /** * 模板类型 */ @Schema(description = "模板类型") - private Short rfpsType; + private Integer rfpsType; /** * 槽号序号 */ @Schema(description = "槽号序号") - private BigDecimal slotIndex; + private Integer slotIndex; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/AuditFileVO.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/AuditFileVO.java index 7dbc80df..178c8ec1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/AuditFileVO.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/pojo/vo/AuditFileVO.java @@ -6,6 +6,8 @@ package org.springblade.desk.quality.pojo.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.desk.basic.pojo.vo.BaseEntityVO; import org.springblade.desk.quality.pojo.entity.AuditFile; import java.io.Serial; @@ -19,12 +21,9 @@ import java.io.Serial; @Data @EqualsAndHashCode(callSuper = true) public class AuditFileVO extends AuditFile { - @Serial - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; - /** - * todo: - */ - @Schema(description = "状态名称") - private String statusName; + @Schema(description = "base") + private BaseEntityVO base; } 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 index 50836b02..8147817c 100644 --- 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 @@ -25,5 +25,4 @@ public class ProReTemplateTankVO extends ProReTemplateTank { @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 783f6996..1fbc8607 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 @@ -26,13 +26,15 @@ public class ProReTemplateVO extends ProReTemplate { /** * todo: */ - @Schema(description = "基本信息字段") - private BaseEntityVO base = new BaseEntityVO(); + @Schema(description = "base信息字段") + private BaseEntityVO base; @Schema(description = "[作业中心]name") private String wcName; @Schema(description = "[工序]name") private String ppsName; + @Schema(description = "[审批状态]name") + private String approvalStatusName; @Schema(description = "tank 槽明细") private List preserveSlotList; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestItemService2.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestItemService2.java index 3b57bfe1..46196390 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestItemService2.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestItemService2.java @@ -14,7 +14,7 @@ import org.springblade.desk.quality.pojo.entity.CycleTestItem; import org.springblade.desk.quality.pojo.entity.CycleTestStandard; import org.springblade.desk.quality.pojo.request.CycleTestItemSubmit; import org.springblade.desk.quality.pojo.vo.CycleTestItemVO; -import org.springblade.desk.quality.util.IdUtil; +import org.springblade.desk.basic.util.IdUtil; import org.springblade.desk.quality.wrapper.CycleTestItemWrapper; import org.springblade.resource.feign.IAttachClient; import org.springblade.resource.pojo.entity.Attach; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestStandardService2.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestStandardService2.java index 1eeb7f12..699f6d85 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestStandardService2.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/CycleTestStandardService2.java @@ -10,7 +10,7 @@ import org.springblade.desk.basic.constant.BaseCol; import org.springblade.desk.quality.mapper.CycleTestStandardMapper; import org.springblade.desk.quality.pojo.entity.CycleTestStandard; import org.springblade.desk.quality.pojo.vo.CycleTestStandardVO; -import org.springblade.desk.quality.util.IdUtil; +import org.springblade.desk.basic.util.IdUtil; import org.springblade.resource.feign.IAttachClient; import org.springblade.resource.pojo.entity.Attach; import org.springframework.stereotype.Service; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IAuditFileService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IAuditFileService.java index 1604429d..2bf11cff 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IAuditFileService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IAuditFileService.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.AuditFileExcel; import org.springblade.desk.quality.pojo.entity.AuditFile; import org.springblade.desk.quality.pojo.vo.AuditFileVO; @@ -41,4 +42,6 @@ public interface IAuditFileService extends BaseService { * @param vo */ void setVOValue(AuditFileVO vo); + + R upgradeVer(Long id); } 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 76a10437..11cfef4c 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 @@ -5,12 +5,14 @@ package org.springblade.desk.quality.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.v3.oas.annotations.Parameter; 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; import org.springblade.desk.quality.pojo.vo.ProReTemplateVO; +import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -45,7 +47,11 @@ public interface IProReTemplateService extends BaseService { */ void setVOValue(ProReTemplateVO vo); + R updateDetail(ProReTemplateVO vo); + R copy(Long id); R upgradeVer(Long id); + + R removeFromDetail(Long tankId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService222.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService222.java index f248a733..f35d8a9f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService222.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskService222.java @@ -13,7 +13,7 @@ import org.springblade.desk.quality.mapper.LiquidTankTaskMapper; import org.springblade.desk.quality.pojo.entity.LiquidTank; import org.springblade.desk.quality.pojo.entity.LiquidTankTask; import org.springblade.desk.quality.pojo.request.*; -import org.springblade.desk.quality.util.IdUtil; +import org.springblade.desk.basic.util.IdUtil; import org.springblade.system.feign.IUserClient; import org.springblade.system.pojo.entity.UserInfo; import org.springframework.stereotype.Service; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskSetVoService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskSetVoService.java index 541dc4c5..b233b56e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskSetVoService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/LiquidTankTaskSetVoService.java @@ -18,7 +18,7 @@ import org.springblade.desk.quality.constant.LiquidTankTaskConst; import org.springblade.desk.quality.pojo.entity.LiquidTank; import org.springblade.desk.quality.pojo.vo.LiquidTankReportConfigVO; import org.springblade.desk.quality.pojo.vo.LiquidTankTaskVO; -import org.springblade.desk.quality.util.IdUtil; +import org.springblade.desk.basic.util.IdUtil; import org.springblade.system.feign.IDictClient; import org.springblade.system.feign.IUserClient; import org.springblade.system.pojo.entity.UserInfo; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java index 60e5203d..a4e32882 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/AuditFileServiceImpl.java @@ -11,6 +11,7 @@ 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.excel.AuditFileExcel; import org.springblade.desk.quality.mapper.AuditFileMapper; import org.springblade.desk.quality.pojo.entity.AuditFile; @@ -55,4 +56,9 @@ public class AuditFileServiceImpl extends BaseServiceImpl 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); + if (tankVOList != null && !tankVOList.isEmpty()) { + // 根据插入序号 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); + } + } + } + + /** + * 构建BaseEntityVO + * + * @param be 不赋值可以传入null + * @param statusCode 不需要可以传null + * @return BaseEntityVO + */ + public BaseEntityVO setBaseVOValue(BaseEntity be, String statusCode) { + if (be == null) { + return null; + } + BaseEntityVO bv = new BaseEntityVO(); + R rUICR = null; + R rUIUP = null; + R rDept = null; + if (IdUtil.isValid(be.getCreateUser())) { + rUICR = userClient.userInfo(be.getCreateUser()); + if (rUICR != null && rUICR.isSuccess() && + rUICR.getData() != null && rUICR.getData().getUser() != null) { + bv.setCreateUserRealName(rUICR.getData().getUser().getRealName()); + } + + } + if (IdUtil.isValid(be.getUpdateUser())) { + rUIUP = userClient.userInfo(be.getUpdateUser()); + if (rUIUP != null && rUIUP.isSuccess() && + rUIUP.getData() != null && rUIUP.getData().getUser() != null) { + bv.setUpdateUserRealName(rUIUP.getData().getUser().getRealName()); + } + } + if (IdUtil.isValid(be.getCreateDept())) { + rDept = sysClient.getDept(be.getCreateDept()); + if (rDept != null && rDept.isSuccess() && rDept.getData() != null) { + bv.setCreateDeptName(rDept.getData().getDeptName()); + } } + if (be.getCreateTime() != null && be.getUpdateTime() != null) { + if (be.getUpdateTime().after(be.getCreateTime())) { // 更新时间更晚 + bv.setKeepUser(be.getUpdateUser()); + bv.setKeepUserRealName(bv.getUpdateUserRealName()); + } else { // 等于或更早 + bv.setKeepUser(be.getCreateUser()); + bv.setKeepUserRealName(bv.getCreateUserRealName()); + } + } + if (StringUtils.isNotBlank(statusCode)) { + R rStatusDic = dictClient.getValue(statusCode, "" + be.getStatus()); + if (rStatusDic != null && rStatusDic.isSuccess() && rStatusDic.getData() != null) { + bv.setStatusName(rStatusDic.getData()); + } + } + return bv; + } + + @Override + public R updateDetail(ProReTemplateVO vo) { + for (ProReTemplateTankVO tankOne : vo.getPreserveSlotList()) { + tankOne.setTemplateId(vo.getId()); + if (IdUtil.isValid(tankOne.getId())) { + tankService.updateById(tankOne); + } else { + tankService.save(tankOne); + } + for (ProReTemplateDetailVO detailOne : tankOne.getChildrenList()) { + detailOne.setTemplateTankId(tankOne.getId()); + if (IdUtil.isValid(detailOne.getId())) { + detailService.updateById(detailOne); + } else { + detailService.save(detailOne); + } + } + } + ProReTemplate e = new ProReTemplate(); + BeanUtil.copyProperties(vo, e, true); + return R.status(updateById(e)); } @Override @@ -94,4 +187,9 @@ public class ProReTemplateServiceImpl extends BaseServiceImpl Date: Wed, 31 Dec 2025 15:36:45 +0800 Subject: [PATCH 5/5] =?UTF-8?q?namespace=20=E6=94=B9=E5=9B=9E=E5=8E=BB?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/springblade/common/constant/LauncherConstant.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java index 27a88b64..25e59f6e 100644 --- a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java +++ b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java @@ -14,9 +14,9 @@ public interface LauncherConstant { */ // String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e"; // 生产环境 -// String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401"; + String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401"; // 测试环境 - String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8"; + // String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8"; /** * nacos 用户名