From 5463bc3d16e41231ef897df51b827cdb4e9fb57b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Sun, 28 Sep 2025 15:11:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E7=89=88=E7=BC=96=E5=88=B6=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tmpltp/enums/ErrorCodeConstants.java | 1 + .../templtp/TemplateInstanceController.java | 14 ++- .../admin/templtp/TmplTpController.java | 11 ++- .../OnlyOfficeCallbackServiceImpl.java | 11 ++- .../onlyoffice/util/UrlFileDownloader.java | 4 +- .../tmpltp/TemplateInstanceDataMapper.java | 4 +- .../tmpltp/TemplateInstanceItemMapper.java | 4 +- ...partmentInstanceRelativityServiceImpl.java | 6 ++ .../TemplateInstanceDataServiceImpl.java | 12 ++- .../TemplateInstanceItemServiceImpl.java | 6 ++ .../tmpltp/TemplateInstanceServiceImpl.java | 99 ++++++------------- .../service/tmpltp/TmplItmServiceImpl.java | 12 ++- .../service/tmpltp/TmplTpFldServiceImpl.java | 7 ++ .../service/tmpltp/TmplTpServiceImpl.java | 21 ++++ .../tmpltp/TemplateInstanceDataMapper.xml | 8 +- .../tmpltp/TemplateInstanceItemMapper.xml | 10 +- 16 files changed, 134 insertions(+), 96 deletions(-) diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/ErrorCodeConstants.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/ErrorCodeConstants.java index 6b9efff..e52b2d0 100644 --- a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/ErrorCodeConstants.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/ErrorCodeConstants.java @@ -9,6 +9,7 @@ public interface ErrorCodeConstants { ErrorCode TMPL_FLD_NOT_EXISTS = new ErrorCode(1_027_000_501, "模板字段不存在"); ErrorCode TMPL_FLD_CODE_EXISTS = new ErrorCode(1_027_000_502, "字段编码已存在"); ErrorCode TMPL_ITM_NOT_EXISTS = new ErrorCode(1_027_000_503, "模板条款不存在"); + ErrorCode TMPL_ITM_NAME_EXISTS = new ErrorCode(1_027_000_503, "模板条款名字已存在"); ErrorCode TEMPLATE_INSTANCE_NOT_EXISTS = new ErrorCode(1_027_000_504, "模板实例不存在"); ErrorCode TMPL_TP_SATUS_ERROR = new ErrorCode(1_027_000_506, "状态变更失败"); ErrorCode TMPL_TP_DEl_ERROR = new ErrorCode(1_027_000_507, "模版分类删除失败"); diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceController.java index 304ba34..1107a12 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceController.java @@ -7,6 +7,7 @@ import com.zt.plat.module.base.service.tmpltp.TemplateInstanceService; import com.zt.plat.module.infra.api.file.FileApi; import com.zt.plat.module.infra.api.file.dto.FileCreateReqDTO; import jakarta.validation.constraints.NotEmpty; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -42,6 +43,7 @@ import org.springframework.web.multipart.MultipartFile; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; +@Slf4j @Tag(name = "管理后台 - 模板实例") @RestController @RequestMapping("/base/template-instance") @@ -103,14 +105,16 @@ public class TemplateInstanceController extends AbstractFileUploadController { @Operation(summary = "获得模板实例") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('bse:template-instance:query')") - public CommonResult getTemplateInstance(@RequestParam("id") Long id) { - TemplateInstanceDO templateInstance = templateInstanceService.getTemplateInstance(id); + public CommonResult getTemplateInstance(@Valid @NotEmpty(message = "编号不能为空") @RequestParam("id") String id) { + TemplateInstanceDO templateInstance = templateInstanceService.getTemplateInstance(Long.valueOf(id)); TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class); - if (templateInstance == null) { + if (templateInstanceRespVO != null) { + templateInstanceService.getDetailedInfo(templateInstanceRespVO); + log.info("==================模板实例详情查询成功================="); return success(templateInstanceRespVO); } - templateInstanceService.getDetailedInfo(templateInstanceRespVO); - return success(templateInstanceRespVO); + + return success(null); } @GetMapping("/page") diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplTpController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplTpController.java index a9995f8..0474acb 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplTpController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplTpController.java @@ -4,6 +4,7 @@ package com.zt.plat.module.base.controller.admin.templtp; import com.zt.plat.module.base.controller.admin.templtp.vo.*; import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplTpDO; import com.zt.plat.module.base.service.tmpltp.TmplTpService; +import jakarta.validation.constraints.NotEmpty; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -85,8 +86,8 @@ public class TmplTpController extends AbstractFileUploadController implements Bu @Operation(summary = "获得模板分类") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')") - public CommonResult getTmplTp(@RequestParam("id") Long id) { - TmplTpDO tmplTp = tmplTpService.getTmplTp(id); + public CommonResult getTmplTp(@Valid @NotEmpty(message = "编号不能为空") @RequestParam("id") String id) { + TmplTpDO tmplTp = tmplTpService.getTmplTp(Long.valueOf(id)); return success(BeanUtils.toBean(tmplTp, TmplTpRespVO.class)); } @@ -114,10 +115,10 @@ public class TmplTpController extends AbstractFileUploadController implements Bu @GetMapping("/field-and-clause") @Operation(summary = "获得字段和条款",description = "字段和条款回显,传入模版分类的id") @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')") - public CommonResult> getFieldAndClause(@RequestParam("id") Long id) { + public CommonResult> getFieldAndClause(@Valid @NotEmpty(message = "编号不能为空")@RequestParam("id") String id) { Map map = new HashMap<>(); - map.put("field", tmplTpService.getField(id)); - map.put("clause", tmplTpService.getClause(id)); + map.put("field", tmplTpService.getField(Long.valueOf(id))); + map.put("clause", tmplTpService.getClause(Long.valueOf(id))); return success(map); } //获取分类树 diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackServiceImpl.java index d152979..90db08b 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackServiceImpl.java @@ -71,8 +71,8 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService if (callback.getActions() != null) { for (Action action : callback.getActions()) { String actionType = switch (action.getType()) { - case 0 -> "断开了与"; - case 1 -> "连接到"; + case 0 -> "断开了连接"; + case 1 -> "连接成功"; case 2 -> "在中点击了强制保存"; default -> "在中执行了未知操作"; }; @@ -146,15 +146,16 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService MultipartFile file = downloadFileAsMultipart(callback.getUrl()); // 1. 验证文件是否为空 - - String directory = "模版实例"; FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); fileCreateReqDTO.setName(fileName); fileCreateReqDTO.setContent(file.getBytes()); fileCreateReqDTO.setType(file.getContentType()); // 使用真实的MIME类型 fileCreateReqDTO.setDirectory(directory); // 设置文件存储目录 - + if (file.getSize() <=0){ + log.error("文件大小为0"); + return; + } // 7. 调用文件服务创建文件 CommonResult result = fileApi.createFileWithReturn(fileCreateReqDTO); if (result.isSuccess()) { diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/util/UrlFileDownloader.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/util/UrlFileDownloader.java index 9339c09..c6dece5 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/util/UrlFileDownloader.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/util/UrlFileDownloader.java @@ -50,7 +50,9 @@ public class UrlFileDownloader { String contentType = connection.getContentType() == null ? "application/octet-stream" : connection.getContentType(); // 3. 读取文件字节内容 byte[] fileBytes = readFileBytes(connection.getInputStream()); - + if (fileBytes.length == 0){ + throw new IOException("文件内容为空"); + } // 4. 使用自定义MultipartFile实现类封装(不依赖Spring Test) return new CustomMultipartFile( "file", // 表单字段名(与上传接口的@RequestParam("file")对应) diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java index 215ad5a..ece831c 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java @@ -8,6 +8,8 @@ import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 实例字段值 Mapper @@ -25,7 +27,7 @@ public interface TemplateInstanceDataMapper extends BaseMapperX templateInstanceIds); int updateFldValById(@Param("inscId") String inscId, @Param("fldVal") String fldVal, @Param("fldKy") String fldKy); diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java index 6dd5476..87d9d2f 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java @@ -8,6 +8,8 @@ import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 实例条款值 Mapper @@ -26,5 +28,5 @@ public interface TemplateInstanceItemMapper extends BaseMapperX templateInstanceIds); } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java index 6270a16..47d4a9e 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java @@ -6,6 +6,7 @@ import com.zt.plat.module.base.controller.admin.templtp.vo.DepartmentInstanceRel import com.zt.plat.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativitySaveReqVO; import com.zt.plat.module.base.dal.dataobject.tmpltp.DepartmentInstanceRelativityDO; import com.zt.plat.module.base.dal.mysql.tmpltp.DepartmentInstanceRelativityMapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -32,6 +33,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.DEPARTMENT_INST */ @Service @Validated +@Slf4j public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstanceRelativityService { @Resource @@ -43,6 +45,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan DepartmentInstanceRelativityDO departmentInstanceRelativity = BeanUtils.toBean(createReqVO, DepartmentInstanceRelativityDO.class); departmentInstanceRelativityMapper.insert(departmentInstanceRelativity); // 返回 + log.info("创建部门与实例关联成功,结果:{}", departmentInstanceRelativity); return BeanUtils.toBean(departmentInstanceRelativity, DepartmentInstanceRelativityRespVO.class); } @@ -53,6 +56,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan // 更新 DepartmentInstanceRelativityDO updateObj = BeanUtils.toBean(updateReqVO, DepartmentInstanceRelativityDO.class); departmentInstanceRelativityMapper.updateById(updateObj); + log.info("更新部门与实例关联成功,结果:{}", updateObj); } @Override @@ -61,6 +65,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan validateDepartmentInstanceRelativityExists(id); // 删除 departmentInstanceRelativityMapper.deleteById(id); + log.info("删除部门与实例关联成功,结果:{}", id); } @Override @@ -69,6 +74,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan validateDepartmentInstanceRelativityExists(ids); // 删除 departmentInstanceRelativityMapper.deleteByIds(ids); + log.info("删除部门与实例关联成功,结果:{}", ids); } private void validateDepartmentInstanceRelativityExists(List ids) { diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java index dd117e9..582d1fe 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java @@ -10,6 +10,7 @@ import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceDataMapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.transaction.annotation.Transactional; @@ -36,6 +37,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTAN */ @Service @Validated +@Slf4j public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataService { @Resource @@ -54,6 +56,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ // 插入 TemplateInstanceDataDO templateInstanceData = BeanUtils.toBean(createReqVO, TemplateInstanceDataDO.class); templateInstanceDataMapper.insert(templateInstanceData); + log.info("创建实例与字段值关系成功,结果:{}", templateInstanceData); // 返回 return BeanUtils.toBean(templateInstanceData, TemplateInstanceDataRespVO.class); } @@ -65,6 +68,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ // 更新 TemplateInstanceDataDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDataDO.class); templateInstanceDataMapper.updateById(updateObj); + log.info("更新实例与字段值关系成功,结果:{}", updateObj); } @Override @@ -73,6 +77,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ validateTemplateInstanceDataExists(id); // 删除 templateInstanceDataMapper.deleteById(id); + log.info("删除实例与字段值关系成功,结果:{}", id); } @Override @@ -81,6 +86,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ validateTemplateInstanceDataExists(ids); // 删除 templateInstanceDataMapper.deleteByIds(ids); + log.info("删除实例与字段值关系成功,结果:{}", ids); } private void validateTemplateInstanceDataExists(List ids) { @@ -103,6 +109,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ @Override public PageResult getTemplateInstanceDataPage(TemplateInstanceDataPageReqVO pageReqVO) { + log.info("查询实例与字段值关系列表,参数:{}", pageReqVO); return templateInstanceDataMapper.selectPage(pageReqVO); } @@ -112,7 +119,10 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ if (CollUtil.isEmpty(pageReqVOS)) { throw exception(PARAMS_IS_NULL_OR_ERR); } - pageReqVOS.forEach(i->templateInstanceDataMapper.updateFldValById(i.getInscId(),i.getFldVal(),i.getFldKy())); + pageReqVOS.forEach( + i->{templateInstanceDataMapper.updateFldValById(i.getInscId(),i.getFldVal(),i.getFldKy()); + log.info("更新实例与字段值关系成功,结果:实例id:【{}】,key:【{}】,值【{}】", i.getInscId(),i.getFldKy(),i.getFldVal()); + }); return true; } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java index 8d9cc94..625f0f1 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java @@ -6,6 +6,7 @@ import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemR import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemSaveReqVO; import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -23,6 +24,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTAN */ @Service @Validated +@Slf4j public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemService { @Resource @@ -33,6 +35,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ // 插入 TemplateInstanceItemDO templateInstanceItem = BeanUtils.toBean(createReqVO, TemplateInstanceItemDO.class); templateInstanceItemMapper.insert(templateInstanceItem); + log.info("创建成功实例与条款关系成功,记录为【{}】", templateInstanceItem); // 返回 return BeanUtils.toBean(templateInstanceItem, TemplateInstanceItemRespVO.class); } @@ -44,6 +47,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ // 更新 TemplateInstanceItemDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceItemDO.class); templateInstanceItemMapper.updateById(updateObj); + log.info("更新成功实例与条款关系成功,记录为【{}】", updateObj); } @Override @@ -52,6 +56,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ validateTemplateInstanceItemExists(id); // 删除 templateInstanceItemMapper.deleteById(id); + log.info("删除成功实例与条款关系成功,记录为【{}】", id); } @Override @@ -60,6 +65,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ validateTemplateInstanceItemExists(ids); // 删除 templateInstanceItemMapper.deleteByIds(ids); + log.info("删除成功实例与条款关系成功,记录为【{}】", ids); } private void validateTemplateInstanceItemExists(List ids) { diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceServiceImpl.java index 9209ddc..66be7df 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceServiceImpl.java @@ -21,6 +21,7 @@ import com.zt.plat.module.tmpltp.enums.TmplStsEnum; import com.zt.plat.module.tmpltp.enums.UpdateStatusEnum; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -45,7 +46,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*; @Validated public class TemplateInstanceServiceImpl implements TemplateInstanceService { @Resource - private DeptApi deptApi; + private DeptApi deptApi; @Resource private TemplateInstanceMapper templateInstanceMapper; @Resource @@ -58,8 +59,6 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { @Resource private TmplTpService tmplTpService; - private static final Pattern VERSION_PATTERN = Pattern.compile("^(.*?)([0-9]+(?:\\.[0-9]+)*)(.*)$"); - @Override @Transactional public TemplateInstanceRespVO createTemplateInstance(TemplateInstanceSaveReqVO createReqVO) { @@ -72,6 +71,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { if (insert <= 0) { throw exception(TEMPLATE_INSTANCE_CREATE_FAIL); } + log.info("创建模板实例成功,模板实例:【{}】", templateInstance); //构建使用部门 List departmentInstanceRelativityDOS = new ArrayList<>(); @@ -82,6 +82,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { departmentInstanceRelativityDOS.add(departmentInstanceRelativityDO); }); departmentInstanceRelativityMapper.insertBatch(departmentInstanceRelativityDOS); + log.info("创建模板实例成功,模板实例:【{}】", departmentInstanceRelativityDOS); // 插入使用范围 TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class); templateInstanceRespVO.setDeptIds(createReqVO.getDeptIds()); @@ -99,6 +100,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { TemplateInstanceDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDO.class); // updateObj.setVer(incrementVersion(templateInstanceDO.getVer())); templateInstanceMapper.updateById(updateObj); + log.info("更新模板实例成功,模板实例:【{}】", templateInstanceDO); } @Override @@ -110,10 +112,13 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { // 删除 //删除对应的字段和条款关系 //1、删除合同的与字段的关系 - templateInstanceDataMapper.deleteByTemplateInstanceId(id); + templateInstanceDataMapper.deleteByTemplateInstanceIds(List.of(id)); + log.info("删除模板实例字段成功,模板实例id:【{}】", id); //2、删除条款与和他的关系 - templateInstanceItemMapper.deleteByTemplateInstanceId(id); + templateInstanceItemMapper.deleteByTemplateInstanceIds(List.of(id)); + log.info("删除模板实例条款成功,模板实例id:【{}】", id); templateInstanceMapper.deleteById(id); + log.info("删除模板实例成功,模板实例id:【{}】", id); } @Override @@ -123,8 +128,13 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { validateTemplateInstanceExists(ids); //校验当前模版能否被删除 validateStatusCanDelete(ids); + templateInstanceItemMapper.deleteByTemplateInstanceIds(ids); + log.info("删除模板实例条款成功,模板实例ids:【{}】", ids); + templateInstanceDataMapper.deleteByTemplateInstanceIds(ids); + log.info("删除模板实例字段成功,模板实例ids:【{}】", ids); // 删除 templateInstanceMapper.deleteByIds(ids); + log.info("删除模板实例成功,模板实例id:【{}】", ids); } private void validateTemplateInstanceExists(List ids) { @@ -150,64 +160,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { return templateInstanceMapper.selectPage(pageReqVO); } - - // private String incrementVersion(String currentVersion) { -// // 处理空值或空字符串 -// if (currentVersion == null || currentVersion.trim().isEmpty()) { -// return "v1.0"; -// } -// -// String version = currentVersion.trim(); -// Matcher matcher = VERSION_PATTERN.matcher(version); -// -// if (!matcher.matches()) { -// // 没有找到数字部分,返回默认版本 -// return version + "1.0"; -// } -// -// String prefix = matcher.group(1); // 前缀部分(如 "v", "version-" 等) -// String numberPart = matcher.group(2); // 数字部分(如 "1.2.3") -// String suffix = matcher.group(3); // 后缀部分 -// -// // 分割数字部分 -// String[] segments = numberPart.split("\\."); -// -// // 从最后一段开始处理进位 -// boolean carry = true; // 初始需要加1 -// -// for (int i = segments.length - 1; i >= 0 && carry; i--) { -// try { -// int currentNumber = Integer.parseInt(segments[i]); -// currentNumber++; // 加1 -// -// if (currentNumber >= 10) { -// // 需要进位 -// segments[i] = "0"; -// carry = true; // 继续向前进位 -// } else { -// // 不需要进位 -// segments[i] = String.valueOf(currentNumber); -// carry = false; // 停止进位 -// } -// } catch (NumberFormatException e) { -// // 理论上不会发生,因为正则已经保证了是数字 -// segments[i] = "1"; -// carry = false; -// } -// } -// -// // 如果最高位也需要进位,在前面添加一段 -// if (carry) { -// String[] newSegments = new String[segments.length + 1]; -// newSegments[0] = "1"; -// System.arraycopy(segments, 0, newSegments, 1, segments.length); -// segments = newSegments; -// } -// -// // 重新组合版本号 -// String newNumberPart = String.join(".", segments); -// return prefix + newNumberPart + suffix; -// } + @NotNull private String incrementVersion(String currentVersion) { // 处理空值或空字符串 if (currentVersion == null || currentVersion.trim().isEmpty()) { @@ -267,7 +220,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { PublishStatusEnum status = PublishStatusEnum.fromCode(currentStatus); boolean transitionAllowed = false; if (status != null) { - transitionAllowed = status.isTransitionAllowed(TmplStsEnum.PUBLISHED.getCode()); + transitionAllowed = status.isTransitionAllowed(TmplStsEnum.DRAFT.getCode()); } if (!transitionAllowed) { throw exception(STATUS_OPERATION_FAIL); @@ -279,10 +232,12 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { .map(PublishTemplateInstanceReqVO::getId) .collect(Collectors.toSet())) .set(TemplateInstanceDO::getSts, TmplStsEnum.PUBLISHED.getCode())); + log.info("更新模版实例状态成功【{}】", publishReqVOS.stream().map(PublishTemplateInstanceReqVO::getId)); } @Override public PageResult listExcludingDisabled(TemplateInstancePageReqVO pageReqVO) { + log.info("查询除了停用外的模版实例【{}】", pageReqVO); return templateInstanceMapper.listExcludingDisabled(pageReqVO); } @@ -319,9 +274,11 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { newTpInstanceDO.setCreateTime(null); newTpInstanceDO.setUpdateTime(null); templateInstanceMapper.insert(newTpInstanceDO); + log.info("创建模版实例【{}】成功", newTpInstanceDO); templateInstanceMapper.update(new LambdaUpdateWrapper() .set(TemplateInstanceDO::getSts, TmplStsEnum.STOPPED.getCode()) .eq(TemplateInstanceDO::getId, id)); + log.info("更新模版实例【{}】状态状态为【STOP】成功", id); List templateInstanceDataDOS = new ArrayList<>(); List templateInstanceItemDOS = new ArrayList<>(); List newDepartmentInstanceRelativityDOS = new ArrayList<>(); @@ -388,19 +345,17 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { } - - @Override public void getDetailedInfo(TemplateInstanceRespVO templateInstanceRespVO) { templateInstanceRespVO.setDeptIds(getDeptByInstanId(templateInstanceRespVO.getId())); // 部门 templateInstanceRespVO.setInstanceItemRespVOS(setInstanceItemRespVOS(templateInstanceRespVO.getId())); // 条款 templateInstanceRespVO.setTemplateInstanceDataRespVOS(setTemplateInstanceDataRespVOS(templateInstanceRespVO.getId())); // 实例字段 - if (!templateInstanceRespVO.getDeptIds().isEmpty()){ + if (!templateInstanceRespVO.getDeptIds().isEmpty()) { templateInstanceRespVO.setDeptRespVOS(deptApi.getDeptList(templateInstanceRespVO.getDeptIds().stream().map(Long::valueOf).toList()).getData()); // 部门详情 } TmplTpDO tmplTp = tmplTpService.getTmplTp(templateInstanceRespVO.getTpId()); - if (tmplTp != null){ - templateInstanceRespVO.setTpName(!tmplTp.getName().isEmpty()?tmplTp.getName():"分类未命名"); + if (tmplTp != null) { + templateInstanceRespVO.setTpName(!tmplTp.getName().isEmpty() ? tmplTp.getName() : "分类未命名"); } } @@ -411,7 +366,9 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(TemplateInstanceDO::getId, id).set(TemplateInstanceDO::getCntt, params); templateInstanceMapper.update(updateWrapper); + log.info("==================模板实例文件对象信息更新成功,文件对象信息为【{}】==================", params); } + // 实例条款值 private List setInstanceItemRespVOS(Long id) { List templateInstanceItemDOS = templateInstanceItemMapper.selectList(new LambdaQueryWrapper() @@ -483,6 +440,8 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { } private String getCdg() { - return "TP" + DateUtils.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomNumbers(4); + String cdg = "TP" + DateUtils.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomNumbers(4); + log.info("==================模板实例编号生成成功,模板实例编号为【{}】==================", cdg); + return cdg; } } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmServiceImpl.java index a59ffb8..7a9e62b 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmServiceImpl.java @@ -1,8 +1,10 @@ package com.zt.plat.module.base.service.tmpltp; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; import com.zt.plat.module.base.controller.admin.templtp.vo.TmpItmPageReqVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplItmRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplItmSaveReqVO; @@ -16,6 +18,7 @@ import org.springframework.validation.annotation.Validated; import java.util.List; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TMPL_ITM_NAME_EXISTS; import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TMPL_ITM_NOT_EXISTS; @Service @@ -23,6 +26,8 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TMPL_ITM_NOT_EX public class TmplItmServiceImpl extends ServiceImpl implements TmplItmService{ @Override public TmplItmRespVO createTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) { + //验证条款名是否存在 + validateTmplLtmNameExists(tmplItmSaveReqVO.getItmName()); tmplItmSaveReqVO.setId(null); TmplItmDO bean = BeanUtils.toBean(tmplItmSaveReqVO, TmplItmDO.class); baseMapper.insert(bean); @@ -37,8 +42,6 @@ public class TmplItmServiceImpl extends ServiceImpl im } - - private void validateTmplLtmExists(List ids) { List list = baseMapper.selectByIds(ids); if (CollUtil.isEmpty(list) || list.size() != ids.size()) { @@ -51,6 +54,11 @@ public class TmplItmServiceImpl extends ServiceImpl im throw exception(TMPL_ITM_NOT_EXISTS); } } + private void validateTmplLtmNameExists(String name){ + if (baseMapper.selectCount(new LambdaQueryWrapper().eq(TmplItmDO::getItmName,name).eq(TmplItmDO::getDeleted,0).eq(TmplItmDO::getCompanyId, CompanyContextHolder.getCompanyId()))>0) { + throw exception(TMPL_ITM_NAME_EXISTS); + } + } @Override @Transactional diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldServiceImpl.java index 4deff16..f274210 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldServiceImpl.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zt.plat.module.base.util.ClassInfoScanner; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -30,12 +31,14 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*; @Service @Validated +@Slf4j public class TmplTpFldServiceImpl extends ServiceImpl implements TmplTpFldService { @Override public TmplFldRespVO createTmplFld(TmplTpFldSaveReqVO tmplTpFldSaveReqVO) { TmplTpFldDO tmplTpFldDO = BeanUtils.toBean(tmplTpFldSaveReqVO, TmplTpFldDO.class); validateTmplFldCodeExists(tmplTpFldSaveReqVO.getFldKy()); baseMapper.insert(tmplTpFldDO); + log.info("创建模板字段成功,模板字段信息:【{}】", tmplTpFldDO); return BeanUtils.toBean(tmplTpFldDO, TmplFldRespVO.class); } @@ -46,6 +49,7 @@ public class TmplTpFldServiceImpl extends ServiceImpl tmplTpFldPage(TmplFldPageReqVO pageReqVO) { + log.info("获取模板字段列表,参数:【{}】", pageReqVO); return baseMapper.selectPage(pageReqVO); } @@ -77,10 +82,12 @@ public class TmplTpFldServiceImpl extends ServiceImpl ids) { validateTmplFldExists(ids); baseMapper.deleteByIds(ids); + log.info("删除模板字段成功,模板字段IDS:【{}】", ids); } @Override public List> getTmplTpListByClass(String clazz) { + log.info("获取模板字段列表,模板字段类:【{}】", clazz); return ClassInfoScanner.getClassFieldInfo(clazz); } } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpServiceImpl.java index af878d6..3fd4451 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpServiceImpl.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.transaction.annotation.Transactional; @@ -38,6 +39,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*; @Service @Validated @RequiredArgsConstructor +@Slf4j public class TmplTpServiceImpl extends ServiceImpl implements TmplTpService { private final TmplFldRelMapper tmplFldRelMapper; private final TmplItmRelMapper tmplItmRelMapper; @@ -52,6 +54,7 @@ public class TmplTpServiceImpl extends ServiceImpl imple TmplTpDO tmplTp = BeanUtils.toBean(createReqVO, TmplTpDO.class); tmplTp.setSts("Y"); baseMapper.insert(tmplTp); + log.info("创建模板分类成功 【{}】", tmplTp); // 返回 List tmplFldRelDOS = new ArrayList<>(); List tmplItmRelDOS = new ArrayList<>(); @@ -68,7 +71,9 @@ public class TmplTpServiceImpl extends ServiceImpl imple tmplItmRelDOS.add(tmplItmRelDO); }); tmplFldRelMapper.insertBatch(tmplFldRelDOS); + log.info("创建模板分类与字段关系成功 【{}】", tmplFldRelDOS); tmplItmRelMapper.insertBatch(tmplItmRelDOS); + log.info("创建模板分类与条款关系成功 【{}】", tmplItmRelDOS); return BeanUtils.toBean(tmplTp, TmplTpRespVO.class); } @@ -79,6 +84,7 @@ public class TmplTpServiceImpl extends ServiceImpl imple // 更新 TmplTpDO updateObj = BeanUtils.toBean(updateReqVO, TmplTpDO.class); baseMapper.updateById(updateObj); + log.info("更新模板分类成功 【{}】", updateObj); } @Override @@ -92,17 +98,26 @@ public class TmplTpServiceImpl extends ServiceImpl imple // } // 删除 baseMapper.deleteByIds(ids); + log.info("删除模板分类成功 【{}】", ids); //删除对应的关联信息 tmplFldRelMapper.delete(Wrappers.lambdaQuery().in(TmplFldRelDO::getTmplTpId, ids)); + log.info("删除模板分类与字段关系成功 【{}】", ids); tmplItmRelMapper.delete(Wrappers.lambdaQuery().in(TmplItmRelDO::getTmplTpId, ids)); + log.info("删除模板分类与条款关系成功 【{}】", ids); } @Override + @Transactional public void deleteTmplTpListByIds(List ids) { // 校验存在 validateTmplTpExists(ids); // 删除 baseMapper.deleteByIds(ids); + log.info("删除模板分类成功 【{}】", ids); + tmplFldRelMapper.delete(Wrappers.lambdaQuery().in(TmplFldRelDO::getTmplTpId, ids)); + log.info("删除模板分类与字段关系成功 【{}】", ids); + tmplItmRelMapper.delete(Wrappers.lambdaQuery().in(TmplItmRelDO::getTmplTpId, ids)); + log.info("删除模板分类与条款关系成功 【{}】", ids); } private void validateTmplTpExists(List ids) { @@ -125,6 +140,7 @@ public class TmplTpServiceImpl extends ServiceImpl imple @Override public PageResult getTmplTpPage(TmplTpPageReqVO pageReqVO) { + log.info("查询模板分类列表 【{}】", pageReqVO); return baseMapper.selectPage(pageReqVO); } @@ -189,6 +205,7 @@ public class TmplTpServiceImpl extends ServiceImpl imple // throw exception(TMPL_TP_SATUS_ERROR); // } baseMapper.update(Wrappers.lambdaUpdate().set(TmplTpDO::getSts, status).eq(TmplTpDO::getId, id)); + log.info("更新模板分类状态成功 【{}】,更新前的状态为【{}】", id, status); } @@ -235,10 +252,12 @@ public class TmplTpServiceImpl extends ServiceImpl imple tmplFldRelDOS.add(tmplFldRelDO); }); tmplFldRelMapper.insertBatch(tmplFldRelDOS); + log.info("模板字段添加成功,模板字段:【{}】", reqVO.getIds()); }else if ("delete".equals(reqVO.getType())) { tmplFldRelMapper.delete(Wrappers.lambdaQuery() .eq(TmplFldRelDO::getTmplTpId, reqVO.getTpId()) .in(TmplFldRelDO::getTpFldId, reqVO.getIds())); + log.info("模板字段删除成功,模板字段:【{}】", reqVO.getIds()); }else { throw exception(ILLEGAL_OPERATION_TYPE); } @@ -255,10 +274,12 @@ public class TmplTpServiceImpl extends ServiceImpl imple tmplItmRelDOS.add(tmplItmRelDO); }); tmplItmRelMapper.insertBatch(tmplItmRelDOS); + log.info("模板条目添加成功,模板条目:【{}】", reqVO.getIds()); }else if ("delete".equals(reqVO.getType())) { tmplItmRelMapper.delete(Wrappers.lambdaQuery() .eq(TmplItmRelDO::getTmplTpId, reqVO.getTpId()) .in(TmplItmRelDO::getItmFldId, reqVO.getIds())); + log.info("模板条目删除成功,模板条目:【{}】", reqVO.getIds()); }else { throw exception(ILLEGAL_OPERATION_TYPE); } diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml index b5e1f87..2f2e0b8 100644 --- a/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml @@ -9,11 +9,15 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - + update BSE_TMPL_INSC_DAT set deleted = 1 - WHERE INSC_ID = #{templateInstanceId} + WHERE INSC_ID in + + #{id} + + update BSE_TMPL_INSC_DAT set FLD_VAL = #{fldVal} diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml index 300cdcd..8d98620 100644 --- a/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml @@ -13,8 +13,12 @@ - - update BSE_TMPL_INSC_ITM set deleted = 1 - WHERE INSC_ID = #{templateInstanceId} + + update BSE_TMPL_INSC_ITM + set deleted = 1 + WHERE INSC_ID in + + #{id} +