diff --git a/pom.xml b/pom.xml index 3019b22..3ca9834 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ https://github.com/YunaiV/ruoyi-vue-pro - 3.0.40 + 3.0.41 17 ${java.version} 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..8e16893 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, "模版分类删除失败"); @@ -23,6 +24,7 @@ public interface ErrorCodeConstants { ErrorCode NOT_FOUND_CLASS= new ErrorCode(1_027_000_516, "找不到对应的类"); ErrorCode UTIL_NOT_INIT= new ErrorCode(1_027_000_517, "工具类为未初始化"); ErrorCode TMPL_INS_FLD_CODE_EXISTS = new ErrorCode(1_027_000_518, "字段已存在"); + ErrorCode TMPL_ITM_EXISTS = new ErrorCode(1_027_000_503, "模板条款已存在"); //Illegal operation type } 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..f04f860 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") @@ -195,4 +199,11 @@ public class TemplateInstanceController extends AbstractFileUploadController { public CommonResult> listByTemplateCode(@RequestParam("cdg") @Valid @NotEmpty(message = "模版编号不能为空") String templateCode) { return success(templateInstanceService.listByCdg(templateCode)); } + + //通过实例id获取字段和条款详情 + @GetMapping("/field-and-clause-detail") + @Operation(summary = "通过实例id获取字段和条款详情") + public CommonResult getFieldAndClauseDetail(@Valid @NotEmpty(message = "模版实例id不能为空") @RequestParam("id") String id) { + return success(templateInstanceService.getFieldAndClauseDetail(id)); + } } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceDataController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceDataController.java index b4de6de..e5d4252 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceDataController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceDataController.java @@ -115,6 +115,4 @@ public class TemplateInstanceDataController implements BusinessControllerMarker ExcelUtils.write(response, "实例字段值.xls", "数据", TemplateInstanceDataRespVO.class, BeanUtils.toBean(list, TemplateInstanceDataRespVO.class)); } - - } 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/controller/admin/templtp/vo/FieldAndClauseRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/FieldAndClauseRespVO.java new file mode 100644 index 0000000..ab8984a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/FieldAndClauseRespVO.java @@ -0,0 +1,16 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "管理后台 - 合同动态表单 响应 VO") +@Data +public class FieldAndClauseRespVO { + @Schema(description = "模板分类") + List tmplFldRespVOS; + @Schema(description = "条款") + List tmplItmRespVOS; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java index 728259f..2d1a589 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java @@ -21,7 +21,7 @@ public class TemplateInstanceDataSaveReqVO { private String fldKy; @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "用户填写的值不能为空") +// @NotEmpty(message = "用户填写的值不能为空") private String fldVal; } 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..8bc86b0 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 @@ -46,7 +48,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ //判断当前标识字段在数据库中是否存在 Long loginUserCompanyId = SecurityFrameworkUtils.getLoginUserCompanyId(); if (templateInstanceDataMapper.selectCount(new LambdaQueryWrapper() - .eq(TemplateInstanceDataDO::getFldKy,createReqVO) + .eq(TemplateInstanceDataDO::getFldKy,createReqVO.getFldKy()) .eq(TemplateInstanceDataDO::getInscId,createReqVO.getInscId()) .eq(TemplateInstanceDataDO::getCompanyId,loginUserCompanyId)) >0) { throw exception(TMPL_INS_FLD_CODE_EXISTS); @@ -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..a831abf 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 @@ -1,11 +1,14 @@ 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.tenant.core.context.CompanyContextHolder; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemPageReqVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; 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; @@ -13,8 +16,7 @@ import java.util.*; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.PARAMS_IS_NULL_OR_ERR; -import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTANCE_ITEM_NOT_EXISTS; +import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*; /** * 实例条款值 Service 实现类 @@ -23,6 +25,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTAN */ @Service @Validated +@Slf4j public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemService { @Resource @@ -30,9 +33,12 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ @Override public TemplateInstanceItemRespVO createTemplateInstanceItem(TemplateInstanceItemSaveReqVO createReqVO) { + //判断当前实例条款关系在数据库中存在 + validateTemplateInstanceItemExistsByInscId(createReqVO.getInscId(), createReqVO.getItmId()); // 插入 TemplateInstanceItemDO templateInstanceItem = BeanUtils.toBean(createReqVO, TemplateInstanceItemDO.class); templateInstanceItemMapper.insert(templateInstanceItem); + log.info("创建成功实例与条款关系成功,记录为【{}】", templateInstanceItem); // 返回 return BeanUtils.toBean(templateInstanceItem, TemplateInstanceItemRespVO.class); } @@ -40,10 +46,11 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ @Override public void updateTemplateInstanceItem(TemplateInstanceItemSaveReqVO updateReqVO) { // 校验存在 - validateTemplateInstanceItemExists(updateReqVO.getId()); + validateTemplateInstanceItemExists(updateReqVO.getInscId()); // 更新 TemplateInstanceItemDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceItemDO.class); templateInstanceItemMapper.updateById(updateObj); + log.info("更新成功实例与条款关系成功,记录为【{}】", updateObj); } @Override @@ -52,6 +59,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ validateTemplateInstanceItemExists(id); // 删除 templateInstanceItemMapper.deleteById(id); + log.info("删除成功实例与条款关系成功,记录为【{}】", id); } @Override @@ -60,6 +68,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ validateTemplateInstanceItemExists(ids); // 删除 templateInstanceItemMapper.deleteByIds(ids); + log.info("删除成功实例与条款关系成功,记录为【{}】", ids); } private void validateTemplateInstanceItemExists(List ids) { @@ -95,4 +104,10 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ return BeanUtils.toBean(templateInstanceItemDOList, TemplateInstanceItemRespVO.class); } + private void validateTemplateInstanceItemExistsByInscId(String inscId, String itmId){ + if (templateInstanceItemMapper.selectCount(new LambdaQueryWrapper().eq(TemplateInstanceItemDO::getInscId, inscId).eq(TemplateInstanceItemDO::getItmId, itmId).eq(TemplateInstanceItemDO::getCompanyId, CompanyContextHolder.getCompanyId())) > 0){ + throw exception(TMPL_ITM_EXISTS); + } + } + } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceService.java index 10586bc..bc4395b 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceService.java @@ -85,4 +85,6 @@ public interface TemplateInstanceService { // Map saveFile(MultipartFile file, String id); void updateTemplateInstanceFileUrlByInstanceId(@Valid @NotEmpty(message = "模版实例id不能为空") String id, @Valid @NotEmpty(message = "文件参数不能为空") String params); + + FieldAndClauseRespVO getFieldAndClauseDetail(@Valid @NotEmpty(message = "模版实例id不能为空") String id); } 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..c7f9d2f 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 @@ -54,12 +55,13 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { private TemplateInstanceDataMapper templateInstanceDataMapper; @Resource private TemplateInstanceItemMapper templateInstanceItemMapper; - + @Resource + private TmplItmService tmplItmService; + @Resource + private TmplTpFldService tmplTpFldService; @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 +74,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { if (insert <= 0) { throw exception(TEMPLATE_INSTANCE_CREATE_FAIL); } + log.info("创建模板实例成功,模板实例:【{}】", templateInstance); //构建使用部门 List departmentInstanceRelativityDOS = new ArrayList<>(); @@ -82,6 +85,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 +103,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 +115,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 +131,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 +163,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 +223,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 +235,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 +277,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 +348,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 +369,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 +443,31 @@ 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; } + + @Override + public FieldAndClauseRespVO getFieldAndClauseDetail(String id) { + FieldAndClauseRespVO fieldAndClauseRespVO = new FieldAndClauseRespVO(); + //查询关联的实例模版字段 + List valKeys = templateInstanceDataMapper.selectList(new LambdaQueryWrapper().eq(TemplateInstanceDataDO::getInscId, id)).stream().map(TemplateInstanceDataDO::getFldKy).distinct().toList(); + //查询关联的实例模版条款 + List itmIds = templateInstanceItemMapper.selectList(new LambdaQueryWrapper().eq(TemplateInstanceItemDO::getInscId, id)).stream().map(TemplateInstanceItemDO::getItmId).toList(); + + // 例模版条款去条款库查询条款信息 + if (!itmIds.isEmpty()){ + List tmplItmRespVOS = BeanUtils.toBean(tmplItmService.listTmplItmByIds(itmIds), TmplItmRespVO.class); + fieldAndClauseRespVO.setTmplItmRespVOS(BeanUtils.toBean(tmplItmRespVOS, TmplItmRespVO.class)); + } + if (!valKeys.isEmpty()){ + //例模版字段去字段库查询字段信息 + List tmplTpListByValKeys = tmplTpFldService.getTmplTpListByValKeys(valKeys); + fieldAndClauseRespVO.setTmplFldRespVOS(BeanUtils.toBean(tmplTpListByValKeys, TmplFldRespVO.class)); + } + + return fieldAndClauseRespVO; + } + } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmService.java index f150466..7ac4db7 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmService.java @@ -7,6 +7,8 @@ import com.zt.plat.module.base.controller.admin.templtp.vo.TmplItmRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplItmSaveReqVO; import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplItmDO; import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; import java.util.List; @@ -17,4 +19,5 @@ public interface TmplItmService extends IService { boolean deleteTmplItm(List ids); PageResult pageTmplItm(TmpItmPageReqVO pageReqVO); + List listTmplItmByIds(@Valid @NotEmpty(message = "ids不能为空") List ids); } 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..2b4020c 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 @@ -63,4 +71,9 @@ public class TmplItmServiceImpl extends ServiceImpl im public PageResult pageTmplItm(TmpItmPageReqVO pageReqVO) { return baseMapper.selectPage(pageReqVO); } + + @Override + public List listTmplItmByIds(List ids) { + return baseMapper.selectByIds(ids); + } } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldService.java index 617b7d9..d36d8f9 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldService.java @@ -19,4 +19,7 @@ public interface TmplTpFldService extends IService { void deleteTmplTpByIds(List< Long> ids); List>getTmplTpListByClass(String clazz); + List getTmplTpListByValKeys(List< String> valNames); + + } 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..6475e32 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 @@ -1,6 +1,7 @@ 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.security.core.LoginUser; @@ -15,6 +16,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 +32,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 +50,7 @@ public class TmplTpFldServiceImpl extends ServiceImpl tmplTpFldPage(TmplFldPageReqVO pageReqVO) { + log.info("获取模板字段列表,参数:【{}】", pageReqVO); return baseMapper.selectPage(pageReqVO); } @@ -77,10 +83,17 @@ 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); } + + @Override + public List getTmplTpListByValKeys(List valNames) { + return baseMapper.selectList(new LambdaQueryWrapper().in(TmplTpFldDO::getFldKy, valNames)); + } } 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} + diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ApiConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ApiConstants.java new file mode 100644 index 0000000..f99bcef --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ApiConstants.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.contractorder.enums; + +import com.zt.plat.framework.common.enums.RpcConstants; + +/** + * API 相关的枚举 + * + * @author ZT + */ +public class ApiConstants { + + /** + * 服务名 + * + * 注意,需要保证和 spring.application.name 保持一致 + */ + public static final String NAME = "base-server"; + + public static final String PREFIX = RpcConstants.RPC_API_PREFIX + "/contract-order"; + + public static final String VERSION = "1.0.0"; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/pom.xml b/zt-module-contract-order/zt-module-contract-order-server/pom.xml index 07588eb..65a9482 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/pom.xml +++ b/zt-module-contract-order/zt-module-contract-order-server/pom.xml @@ -129,7 +129,7 @@ com.zt.plat zt-module-base-server - 3.0.40 + 3.0.41 compile diff --git a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java index 18dd594..1a4ca8c 100644 --- a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java +++ b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java @@ -14,7 +14,7 @@ public class ApiConstants { * * 注意,需要保证和 spring.application.name 保持一致 */ - public static final String NAME = "erp-server"; + public static final String NAME = "base-server"; public static final String PREFIX = RpcConstants.RPC_API_PREFIX + "/erp";