模版编制相关实现

This commit is contained in:
潘荣晟
2025-09-28 15:11:23 +08:00
parent 08c3ffef4f
commit 5463bc3d16
16 changed files with 134 additions and 96 deletions

View File

@@ -9,6 +9,7 @@ public interface ErrorCodeConstants {
ErrorCode TMPL_FLD_NOT_EXISTS = new ErrorCode(1_027_000_501, "模板字段不存在"); ErrorCode TMPL_FLD_NOT_EXISTS = new ErrorCode(1_027_000_501, "模板字段不存在");
ErrorCode TMPL_FLD_CODE_EXISTS = new ErrorCode(1_027_000_502, "字段编码已存在"); 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_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 TEMPLATE_INSTANCE_NOT_EXISTS = new ErrorCode(1_027_000_504, "模板实例不存在");
ErrorCode TMPL_TP_SATUS_ERROR = new ErrorCode(1_027_000_506, "状态变更失败"); ErrorCode TMPL_TP_SATUS_ERROR = new ErrorCode(1_027_000_506, "状态变更失败");
ErrorCode TMPL_TP_DEl_ERROR = new ErrorCode(1_027_000_507, "模版分类删除失败"); ErrorCode TMPL_TP_DEl_ERROR = new ErrorCode(1_027_000_507, "模版分类删除失败");

View File

@@ -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.FileApi;
import com.zt.plat.module.infra.api.file.dto.FileCreateReqDTO; import com.zt.plat.module.infra.api.file.dto.FileCreateReqDTO;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; 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.*; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*;
@Slf4j
@Tag(name = "管理后台 - 模板实例") @Tag(name = "管理后台 - 模板实例")
@RestController @RestController
@RequestMapping("/base/template-instance") @RequestMapping("/base/template-instance")
@@ -103,14 +105,16 @@ public class TemplateInstanceController extends AbstractFileUploadController {
@Operation(summary = "获得模板实例") @Operation(summary = "获得模板实例")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('bse:template-instance:query')") @PreAuthorize("@ss.hasPermission('bse:template-instance:query')")
public CommonResult<TemplateInstanceRespVO> getTemplateInstance(@RequestParam("id") Long id) { public CommonResult<TemplateInstanceRespVO> getTemplateInstance(@Valid @NotEmpty(message = "编号不能为空") @RequestParam("id") String id) {
TemplateInstanceDO templateInstance = templateInstanceService.getTemplateInstance(id); TemplateInstanceDO templateInstance = templateInstanceService.getTemplateInstance(Long.valueOf(id));
TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class); TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class);
if (templateInstance == null) { if (templateInstanceRespVO != null) {
templateInstanceService.getDetailedInfo(templateInstanceRespVO);
log.info("==================模板实例详情查询成功=================");
return success(templateInstanceRespVO); return success(templateInstanceRespVO);
} }
templateInstanceService.getDetailedInfo(templateInstanceRespVO);
return success(templateInstanceRespVO); return success(null);
} }
@GetMapping("/page") @GetMapping("/page")

View File

@@ -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.controller.admin.templtp.vo.*;
import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplTpDO; import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplTpDO;
import com.zt.plat.module.base.service.tmpltp.TmplTpService; import com.zt.plat.module.base.service.tmpltp.TmplTpService;
import jakarta.validation.constraints.NotEmpty;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -85,8 +86,8 @@ public class TmplTpController extends AbstractFileUploadController implements Bu
@Operation(summary = "获得模板分类") @Operation(summary = "获得模板分类")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')") @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')")
public CommonResult<TmplTpRespVO> getTmplTp(@RequestParam("id") Long id) { public CommonResult<TmplTpRespVO> getTmplTp(@Valid @NotEmpty(message = "编号不能为空") @RequestParam("id") String id) {
TmplTpDO tmplTp = tmplTpService.getTmplTp(id); TmplTpDO tmplTp = tmplTpService.getTmplTp(Long.valueOf(id));
return success(BeanUtils.toBean(tmplTp, TmplTpRespVO.class)); return success(BeanUtils.toBean(tmplTp, TmplTpRespVO.class));
} }
@@ -114,10 +115,10 @@ public class TmplTpController extends AbstractFileUploadController implements Bu
@GetMapping("/field-and-clause") @GetMapping("/field-and-clause")
@Operation(summary = "获得字段和条款",description = "字段和条款回显,传入模版分类的id") @Operation(summary = "获得字段和条款",description = "字段和条款回显,传入模版分类的id")
@PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')") @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')")
public CommonResult<Map<String, Object>> getFieldAndClause(@RequestParam("id") Long id) { public CommonResult<Map<String, Object>> getFieldAndClause(@Valid @NotEmpty(message = "编号不能为空")@RequestParam("id") String id) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("field", tmplTpService.getField(id)); map.put("field", tmplTpService.getField(Long.valueOf(id)));
map.put("clause", tmplTpService.getClause(id)); map.put("clause", tmplTpService.getClause(Long.valueOf(id)));
return success(map); return success(map);
} }
//获取分类树 //获取分类树

View File

@@ -71,8 +71,8 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
if (callback.getActions() != null) { if (callback.getActions() != null) {
for (Action action : callback.getActions()) { for (Action action : callback.getActions()) {
String actionType = switch (action.getType()) { String actionType = switch (action.getType()) {
case 0 -> "断开了"; case 0 -> "断开了连接";
case 1 -> "连接"; case 1 -> "连接成功";
case 2 -> "在中点击了强制保存"; case 2 -> "在中点击了强制保存";
default -> "在中执行了未知操作"; default -> "在中执行了未知操作";
}; };
@@ -146,15 +146,16 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
MultipartFile file = downloadFileAsMultipart(callback.getUrl()); MultipartFile file = downloadFileAsMultipart(callback.getUrl());
// 1. 验证文件是否为空 // 1. 验证文件是否为空
String directory = "模版实例"; String directory = "模版实例";
FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO();
fileCreateReqDTO.setName(fileName); fileCreateReqDTO.setName(fileName);
fileCreateReqDTO.setContent(file.getBytes()); fileCreateReqDTO.setContent(file.getBytes());
fileCreateReqDTO.setType(file.getContentType()); // 使用真实的MIME类型 fileCreateReqDTO.setType(file.getContentType()); // 使用真实的MIME类型
fileCreateReqDTO.setDirectory(directory); // 设置文件存储目录 fileCreateReqDTO.setDirectory(directory); // 设置文件存储目录
if (file.getSize() <=0){
log.error("文件大小为0");
return;
}
// 7. 调用文件服务创建文件 // 7. 调用文件服务创建文件
CommonResult<FileRespDTO> result = fileApi.createFileWithReturn(fileCreateReqDTO); CommonResult<FileRespDTO> result = fileApi.createFileWithReturn(fileCreateReqDTO);
if (result.isSuccess()) { if (result.isSuccess()) {

View File

@@ -50,7 +50,9 @@ public class UrlFileDownloader {
String contentType = connection.getContentType() == null ? "application/octet-stream" : connection.getContentType(); String contentType = connection.getContentType() == null ? "application/octet-stream" : connection.getContentType();
// 3. 读取文件字节内容 // 3. 读取文件字节内容
byte[] fileBytes = readFileBytes(connection.getInputStream()); byte[] fileBytes = readFileBytes(connection.getInputStream());
if (fileBytes.length == 0){
throw new IOException("文件内容为空");
}
// 4. 使用自定义MultipartFile实现类封装不依赖Spring Test // 4. 使用自定义MultipartFile实现类封装不依赖Spring Test
return new CustomMultipartFile( return new CustomMultipartFile(
"file", // 表单字段名(与上传接口的@RequestParam("file")对应) "file", // 表单字段名(与上传接口的@RequestParam("file")对应)

View File

@@ -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.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 实例字段值 Mapper * 实例字段值 Mapper
@@ -25,7 +27,7 @@ public interface TemplateInstanceDataMapper extends BaseMapperX<TemplateInstance
.betweenIfPresent(TemplateInstanceDataDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(TemplateInstanceDataDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(TemplateInstanceDataDO::getId)); .orderByDesc(TemplateInstanceDataDO::getId));
} }
int deleteByTemplateInstanceId(@Param("templateInstanceId") Long templateInstanceId); int deleteByTemplateInstanceIds(@Param("templateInstanceIds") List<Long> templateInstanceIds);
int updateFldValById(@Param("inscId") String inscId, @Param("fldVal") String fldVal, @Param("fldKy") String fldKy); int updateFldValById(@Param("inscId") String inscId, @Param("fldVal") String fldVal, @Param("fldKy") String fldKy);

View File

@@ -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.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 实例条款值 Mapper * 实例条款值 Mapper
@@ -26,5 +28,5 @@ public interface TemplateInstanceItemMapper extends BaseMapperX<TemplateInstance
.orderByDesc(TemplateInstanceItemDO::getId)); .orderByDesc(TemplateInstanceItemDO::getId));
} }
int deleteByTemplateInstanceId(@Param("templateInstanceId") Long templateInstanceId); int deleteByTemplateInstanceIds(@Param("templateInstanceIds") List<Long> templateInstanceIds);
} }

View File

@@ -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.controller.admin.templtp.vo.DepartmentInstanceRelativitySaveReqVO;
import com.zt.plat.module.base.dal.dataobject.tmpltp.DepartmentInstanceRelativityDO; import com.zt.plat.module.base.dal.dataobject.tmpltp.DepartmentInstanceRelativityDO;
import com.zt.plat.module.base.dal.mysql.tmpltp.DepartmentInstanceRelativityMapper; import com.zt.plat.module.base.dal.mysql.tmpltp.DepartmentInstanceRelativityMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -32,6 +33,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.DEPARTMENT_INST
*/ */
@Service @Service
@Validated @Validated
@Slf4j
public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstanceRelativityService { public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstanceRelativityService {
@Resource @Resource
@@ -43,6 +45,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan
DepartmentInstanceRelativityDO departmentInstanceRelativity = BeanUtils.toBean(createReqVO, DepartmentInstanceRelativityDO.class); DepartmentInstanceRelativityDO departmentInstanceRelativity = BeanUtils.toBean(createReqVO, DepartmentInstanceRelativityDO.class);
departmentInstanceRelativityMapper.insert(departmentInstanceRelativity); departmentInstanceRelativityMapper.insert(departmentInstanceRelativity);
// 返回 // 返回
log.info("创建部门与实例关联成功,结果:{}", departmentInstanceRelativity);
return BeanUtils.toBean(departmentInstanceRelativity, DepartmentInstanceRelativityRespVO.class); return BeanUtils.toBean(departmentInstanceRelativity, DepartmentInstanceRelativityRespVO.class);
} }
@@ -53,6 +56,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan
// 更新 // 更新
DepartmentInstanceRelativityDO updateObj = BeanUtils.toBean(updateReqVO, DepartmentInstanceRelativityDO.class); DepartmentInstanceRelativityDO updateObj = BeanUtils.toBean(updateReqVO, DepartmentInstanceRelativityDO.class);
departmentInstanceRelativityMapper.updateById(updateObj); departmentInstanceRelativityMapper.updateById(updateObj);
log.info("更新部门与实例关联成功,结果:{}", updateObj);
} }
@Override @Override
@@ -61,6 +65,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan
validateDepartmentInstanceRelativityExists(id); validateDepartmentInstanceRelativityExists(id);
// 删除 // 删除
departmentInstanceRelativityMapper.deleteById(id); departmentInstanceRelativityMapper.deleteById(id);
log.info("删除部门与实例关联成功,结果:{}", id);
} }
@Override @Override
@@ -69,6 +74,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan
validateDepartmentInstanceRelativityExists(ids); validateDepartmentInstanceRelativityExists(ids);
// 删除 // 删除
departmentInstanceRelativityMapper.deleteByIds(ids); departmentInstanceRelativityMapper.deleteByIds(ids);
log.info("删除部门与实例关联成功,结果:{}", ids);
} }
private void validateDepartmentInstanceRelativityExists(List<Long> ids) { private void validateDepartmentInstanceRelativityExists(List<Long> ids) {

View File

@@ -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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -36,6 +37,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTAN
*/ */
@Service @Service
@Validated @Validated
@Slf4j
public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataService { public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataService {
@Resource @Resource
@@ -54,6 +56,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ
// 插入 // 插入
TemplateInstanceDataDO templateInstanceData = BeanUtils.toBean(createReqVO, TemplateInstanceDataDO.class); TemplateInstanceDataDO templateInstanceData = BeanUtils.toBean(createReqVO, TemplateInstanceDataDO.class);
templateInstanceDataMapper.insert(templateInstanceData); templateInstanceDataMapper.insert(templateInstanceData);
log.info("创建实例与字段值关系成功,结果:{}", templateInstanceData);
// 返回 // 返回
return BeanUtils.toBean(templateInstanceData, TemplateInstanceDataRespVO.class); return BeanUtils.toBean(templateInstanceData, TemplateInstanceDataRespVO.class);
} }
@@ -65,6 +68,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ
// 更新 // 更新
TemplateInstanceDataDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDataDO.class); TemplateInstanceDataDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDataDO.class);
templateInstanceDataMapper.updateById(updateObj); templateInstanceDataMapper.updateById(updateObj);
log.info("更新实例与字段值关系成功,结果:{}", updateObj);
} }
@Override @Override
@@ -73,6 +77,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ
validateTemplateInstanceDataExists(id); validateTemplateInstanceDataExists(id);
// 删除 // 删除
templateInstanceDataMapper.deleteById(id); templateInstanceDataMapper.deleteById(id);
log.info("删除实例与字段值关系成功,结果:{}", id);
} }
@Override @Override
@@ -81,6 +86,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ
validateTemplateInstanceDataExists(ids); validateTemplateInstanceDataExists(ids);
// 删除 // 删除
templateInstanceDataMapper.deleteByIds(ids); templateInstanceDataMapper.deleteByIds(ids);
log.info("删除实例与字段值关系成功,结果:{}", ids);
} }
private void validateTemplateInstanceDataExists(List<Long> ids) { private void validateTemplateInstanceDataExists(List<Long> ids) {
@@ -103,6 +109,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ
@Override @Override
public PageResult<TemplateInstanceDataDO> getTemplateInstanceDataPage(TemplateInstanceDataPageReqVO pageReqVO) { public PageResult<TemplateInstanceDataDO> getTemplateInstanceDataPage(TemplateInstanceDataPageReqVO pageReqVO) {
log.info("查询实例与字段值关系列表,参数:{}", pageReqVO);
return templateInstanceDataMapper.selectPage(pageReqVO); return templateInstanceDataMapper.selectPage(pageReqVO);
} }
@@ -112,7 +119,10 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ
if (CollUtil.isEmpty(pageReqVOS)) { if (CollUtil.isEmpty(pageReqVOS)) {
throw exception(PARAMS_IS_NULL_OR_ERR); 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; return true;
} }

View File

@@ -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.controller.admin.templtp.vo.TemplateInstanceItemSaveReqVO;
import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO;
import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper; import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -23,6 +24,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTAN
*/ */
@Service @Service
@Validated @Validated
@Slf4j
public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemService { public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemService {
@Resource @Resource
@@ -33,6 +35,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ
// 插入 // 插入
TemplateInstanceItemDO templateInstanceItem = BeanUtils.toBean(createReqVO, TemplateInstanceItemDO.class); TemplateInstanceItemDO templateInstanceItem = BeanUtils.toBean(createReqVO, TemplateInstanceItemDO.class);
templateInstanceItemMapper.insert(templateInstanceItem); templateInstanceItemMapper.insert(templateInstanceItem);
log.info("创建成功实例与条款关系成功,记录为【{}】", templateInstanceItem);
// 返回 // 返回
return BeanUtils.toBean(templateInstanceItem, TemplateInstanceItemRespVO.class); return BeanUtils.toBean(templateInstanceItem, TemplateInstanceItemRespVO.class);
} }
@@ -44,6 +47,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ
// 更新 // 更新
TemplateInstanceItemDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceItemDO.class); TemplateInstanceItemDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceItemDO.class);
templateInstanceItemMapper.updateById(updateObj); templateInstanceItemMapper.updateById(updateObj);
log.info("更新成功实例与条款关系成功,记录为【{}】", updateObj);
} }
@Override @Override
@@ -52,6 +56,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ
validateTemplateInstanceItemExists(id); validateTemplateInstanceItemExists(id);
// 删除 // 删除
templateInstanceItemMapper.deleteById(id); templateInstanceItemMapper.deleteById(id);
log.info("删除成功实例与条款关系成功,记录为【{}】", id);
} }
@Override @Override
@@ -60,6 +65,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ
validateTemplateInstanceItemExists(ids); validateTemplateInstanceItemExists(ids);
// 删除 // 删除
templateInstanceItemMapper.deleteByIds(ids); templateInstanceItemMapper.deleteByIds(ids);
log.info("删除成功实例与条款关系成功,记录为【{}】", ids);
} }
private void validateTemplateInstanceItemExists(List<String> ids) { private void validateTemplateInstanceItemExists(List<String> ids) {

View File

@@ -21,6 +21,7 @@ import com.zt.plat.module.tmpltp.enums.TmplStsEnum;
import com.zt.plat.module.tmpltp.enums.UpdateStatusEnum; import com.zt.plat.module.tmpltp.enums.UpdateStatusEnum;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -58,8 +59,6 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
@Resource @Resource
private TmplTpService tmplTpService; private TmplTpService tmplTpService;
private static final Pattern VERSION_PATTERN = Pattern.compile("^(.*?)([0-9]+(?:\\.[0-9]+)*)(.*)$");
@Override @Override
@Transactional @Transactional
public TemplateInstanceRespVO createTemplateInstance(TemplateInstanceSaveReqVO createReqVO) { public TemplateInstanceRespVO createTemplateInstance(TemplateInstanceSaveReqVO createReqVO) {
@@ -72,6 +71,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
if (insert <= 0) { if (insert <= 0) {
throw exception(TEMPLATE_INSTANCE_CREATE_FAIL); throw exception(TEMPLATE_INSTANCE_CREATE_FAIL);
} }
log.info("创建模板实例成功,模板实例:【{}】", templateInstance);
//构建使用部门 //构建使用部门
List<DepartmentInstanceRelativityDO> departmentInstanceRelativityDOS = new ArrayList<>(); List<DepartmentInstanceRelativityDO> departmentInstanceRelativityDOS = new ArrayList<>();
@@ -82,6 +82,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
departmentInstanceRelativityDOS.add(departmentInstanceRelativityDO); departmentInstanceRelativityDOS.add(departmentInstanceRelativityDO);
}); });
departmentInstanceRelativityMapper.insertBatch(departmentInstanceRelativityDOS); departmentInstanceRelativityMapper.insertBatch(departmentInstanceRelativityDOS);
log.info("创建模板实例成功,模板实例:【{}】", departmentInstanceRelativityDOS);
// 插入使用范围 // 插入使用范围
TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class); TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class);
templateInstanceRespVO.setDeptIds(createReqVO.getDeptIds()); templateInstanceRespVO.setDeptIds(createReqVO.getDeptIds());
@@ -99,6 +100,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
TemplateInstanceDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDO.class); TemplateInstanceDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDO.class);
// updateObj.setVer(incrementVersion(templateInstanceDO.getVer())); // updateObj.setVer(incrementVersion(templateInstanceDO.getVer()));
templateInstanceMapper.updateById(updateObj); templateInstanceMapper.updateById(updateObj);
log.info("更新模板实例成功,模板实例:【{}】", templateInstanceDO);
} }
@Override @Override
@@ -110,10 +112,13 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
// 删除 // 删除
//删除对应的字段和条款关系 //删除对应的字段和条款关系
//1、删除合同的与字段的关系 //1、删除合同的与字段的关系
templateInstanceDataMapper.deleteByTemplateInstanceId(id); templateInstanceDataMapper.deleteByTemplateInstanceIds(List.of(id));
log.info("删除模板实例字段成功模板实例id【{}】", id);
//2、删除条款与和他的关系 //2、删除条款与和他的关系
templateInstanceItemMapper.deleteByTemplateInstanceId(id); templateInstanceItemMapper.deleteByTemplateInstanceIds(List.of(id));
log.info("删除模板实例条款成功模板实例id【{}】", id);
templateInstanceMapper.deleteById(id); templateInstanceMapper.deleteById(id);
log.info("删除模板实例成功模板实例id【{}】", id);
} }
@Override @Override
@@ -123,8 +128,13 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
validateTemplateInstanceExists(ids); validateTemplateInstanceExists(ids);
//校验当前模版能否被删除 //校验当前模版能否被删除
validateStatusCanDelete(ids); validateStatusCanDelete(ids);
templateInstanceItemMapper.deleteByTemplateInstanceIds(ids);
log.info("删除模板实例条款成功模板实例ids【{}】", ids);
templateInstanceDataMapper.deleteByTemplateInstanceIds(ids);
log.info("删除模板实例字段成功模板实例ids【{}】", ids);
// 删除 // 删除
templateInstanceMapper.deleteByIds(ids); templateInstanceMapper.deleteByIds(ids);
log.info("删除模板实例成功模板实例id【{}】", ids);
} }
private void validateTemplateInstanceExists(List<Long> ids) { private void validateTemplateInstanceExists(List<Long> ids) {
@@ -150,64 +160,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
return templateInstanceMapper.selectPage(pageReqVO); return templateInstanceMapper.selectPage(pageReqVO);
} }
@NotNull
// 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;
// }
private String incrementVersion(String currentVersion) { private String incrementVersion(String currentVersion) {
// 处理空值或空字符串 // 处理空值或空字符串
if (currentVersion == null || currentVersion.trim().isEmpty()) { if (currentVersion == null || currentVersion.trim().isEmpty()) {
@@ -267,7 +220,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
PublishStatusEnum status = PublishStatusEnum.fromCode(currentStatus); PublishStatusEnum status = PublishStatusEnum.fromCode(currentStatus);
boolean transitionAllowed = false; boolean transitionAllowed = false;
if (status != null) { if (status != null) {
transitionAllowed = status.isTransitionAllowed(TmplStsEnum.PUBLISHED.getCode()); transitionAllowed = status.isTransitionAllowed(TmplStsEnum.DRAFT.getCode());
} }
if (!transitionAllowed) { if (!transitionAllowed) {
throw exception(STATUS_OPERATION_FAIL); throw exception(STATUS_OPERATION_FAIL);
@@ -279,10 +232,12 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
.map(PublishTemplateInstanceReqVO::getId) .map(PublishTemplateInstanceReqVO::getId)
.collect(Collectors.toSet())) .collect(Collectors.toSet()))
.set(TemplateInstanceDO::getSts, TmplStsEnum.PUBLISHED.getCode())); .set(TemplateInstanceDO::getSts, TmplStsEnum.PUBLISHED.getCode()));
log.info("更新模版实例状态成功【{}】", publishReqVOS.stream().map(PublishTemplateInstanceReqVO::getId));
} }
@Override @Override
public PageResult<TemplateInstanceDO> listExcludingDisabled(TemplateInstancePageReqVO pageReqVO) { public PageResult<TemplateInstanceDO> listExcludingDisabled(TemplateInstancePageReqVO pageReqVO) {
log.info("查询除了停用外的模版实例【{}】", pageReqVO);
return templateInstanceMapper.listExcludingDisabled(pageReqVO); return templateInstanceMapper.listExcludingDisabled(pageReqVO);
} }
@@ -319,9 +274,11 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
newTpInstanceDO.setCreateTime(null); newTpInstanceDO.setCreateTime(null);
newTpInstanceDO.setUpdateTime(null); newTpInstanceDO.setUpdateTime(null);
templateInstanceMapper.insert(newTpInstanceDO); templateInstanceMapper.insert(newTpInstanceDO);
log.info("创建模版实例【{}】成功", newTpInstanceDO);
templateInstanceMapper.update(new LambdaUpdateWrapper<TemplateInstanceDO>() templateInstanceMapper.update(new LambdaUpdateWrapper<TemplateInstanceDO>()
.set(TemplateInstanceDO::getSts, TmplStsEnum.STOPPED.getCode()) .set(TemplateInstanceDO::getSts, TmplStsEnum.STOPPED.getCode())
.eq(TemplateInstanceDO::getId, id)); .eq(TemplateInstanceDO::getId, id));
log.info("更新模版实例【{}】状态状态为【STOP】成功", id);
List<TemplateInstanceDataDO> templateInstanceDataDOS = new ArrayList<>(); List<TemplateInstanceDataDO> templateInstanceDataDOS = new ArrayList<>();
List<TemplateInstanceItemDO> templateInstanceItemDOS = new ArrayList<>(); List<TemplateInstanceItemDO> templateInstanceItemDOS = new ArrayList<>();
List<DepartmentInstanceRelativityDO> newDepartmentInstanceRelativityDOS = new ArrayList<>(); List<DepartmentInstanceRelativityDO> newDepartmentInstanceRelativityDOS = new ArrayList<>();
@@ -388,19 +345,17 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
} }
@Override @Override
public void getDetailedInfo(TemplateInstanceRespVO templateInstanceRespVO) { public void getDetailedInfo(TemplateInstanceRespVO templateInstanceRespVO) {
templateInstanceRespVO.setDeptIds(getDeptByInstanId(templateInstanceRespVO.getId())); // 部门 templateInstanceRespVO.setDeptIds(getDeptByInstanId(templateInstanceRespVO.getId())); // 部门
templateInstanceRespVO.setInstanceItemRespVOS(setInstanceItemRespVOS(templateInstanceRespVO.getId())); // 条款 templateInstanceRespVO.setInstanceItemRespVOS(setInstanceItemRespVOS(templateInstanceRespVO.getId())); // 条款
templateInstanceRespVO.setTemplateInstanceDataRespVOS(setTemplateInstanceDataRespVOS(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()); // 部门详情 templateInstanceRespVO.setDeptRespVOS(deptApi.getDeptList(templateInstanceRespVO.getDeptIds().stream().map(Long::valueOf).toList()).getData()); // 部门详情
} }
TmplTpDO tmplTp = tmplTpService.getTmplTp(templateInstanceRespVO.getTpId()); TmplTpDO tmplTp = tmplTpService.getTmplTp(templateInstanceRespVO.getTpId());
if (tmplTp != null){ if (tmplTp != null) {
templateInstanceRespVO.setTpName(!tmplTp.getName().isEmpty()?tmplTp.getName():"分类未命名"); templateInstanceRespVO.setTpName(!tmplTp.getName().isEmpty() ? tmplTp.getName() : "分类未命名");
} }
} }
@@ -411,7 +366,9 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
LambdaUpdateWrapper<TemplateInstanceDO> updateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<TemplateInstanceDO> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(TemplateInstanceDO::getId, id).set(TemplateInstanceDO::getCntt, params); updateWrapper.eq(TemplateInstanceDO::getId, id).set(TemplateInstanceDO::getCntt, params);
templateInstanceMapper.update(updateWrapper); templateInstanceMapper.update(updateWrapper);
log.info("==================模板实例文件对象信息更新成功,文件对象信息为【{}】==================", params);
} }
// 实例条款值 // 实例条款值
private List<TemplateInstanceItemRespVO> setInstanceItemRespVOS(Long id) { private List<TemplateInstanceItemRespVO> setInstanceItemRespVOS(Long id) {
List<TemplateInstanceItemDO> templateInstanceItemDOS = templateInstanceItemMapper.selectList(new LambdaQueryWrapper<TemplateInstanceItemDO>() List<TemplateInstanceItemDO> templateInstanceItemDOS = templateInstanceItemMapper.selectList(new LambdaQueryWrapper<TemplateInstanceItemDO>()
@@ -483,6 +440,8 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
} }
private String getCdg() { 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;
} }
} }

View File

@@ -1,8 +1,10 @@
package com.zt.plat.module.base.service.tmpltp; package com.zt.plat.module.base.service.tmpltp;
import cn.hutool.core.collection.CollUtil; 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.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils; 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.TmpItmPageReqVO;
import com.zt.plat.module.base.controller.admin.templtp.vo.TmplItmRespVO; 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.controller.admin.templtp.vo.TmplItmSaveReqVO;
@@ -16,6 +18,7 @@ import org.springframework.validation.annotation.Validated;
import java.util.List; import java.util.List;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; 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; import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TMPL_ITM_NOT_EXISTS;
@Service @Service
@@ -23,6 +26,8 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TMPL_ITM_NOT_EX
public class TmplItmServiceImpl extends ServiceImpl<TmplItmMapper, TmplItmDO> implements TmplItmService{ public class TmplItmServiceImpl extends ServiceImpl<TmplItmMapper, TmplItmDO> implements TmplItmService{
@Override @Override
public TmplItmRespVO createTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) { public TmplItmRespVO createTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) {
//验证条款名是否存在
validateTmplLtmNameExists(tmplItmSaveReqVO.getItmName());
tmplItmSaveReqVO.setId(null); tmplItmSaveReqVO.setId(null);
TmplItmDO bean = BeanUtils.toBean(tmplItmSaveReqVO, TmplItmDO.class); TmplItmDO bean = BeanUtils.toBean(tmplItmSaveReqVO, TmplItmDO.class);
baseMapper.insert(bean); baseMapper.insert(bean);
@@ -37,8 +42,6 @@ public class TmplItmServiceImpl extends ServiceImpl<TmplItmMapper, TmplItmDO> im
} }
private void validateTmplLtmExists(List<Long> ids) { private void validateTmplLtmExists(List<Long> ids) {
List<TmplItmDO> list = baseMapper.selectByIds(ids); List<TmplItmDO> list = baseMapper.selectByIds(ids);
if (CollUtil.isEmpty(list) || list.size() != ids.size()) { if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
@@ -51,6 +54,11 @@ public class TmplItmServiceImpl extends ServiceImpl<TmplItmMapper, TmplItmDO> im
throw exception(TMPL_ITM_NOT_EXISTS); throw exception(TMPL_ITM_NOT_EXISTS);
} }
} }
private void validateTmplLtmNameExists(String name){
if (baseMapper.selectCount(new LambdaQueryWrapper<TmplItmDO>().eq(TmplItmDO::getItmName,name).eq(TmplItmDO::getDeleted,0).eq(TmplItmDO::getCompanyId, CompanyContextHolder.getCompanyId()))>0) {
throw exception(TMPL_ITM_NAME_EXISTS);
}
}
@Override @Override
@Transactional @Transactional

View File

@@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zt.plat.module.base.util.ClassInfoScanner; import com.zt.plat.module.base.util.ClassInfoScanner;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -30,12 +31,14 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*;
@Service @Service
@Validated @Validated
@Slf4j
public class TmplTpFldServiceImpl extends ServiceImpl<TmplTpFldMapper, TmplTpFldDO> implements TmplTpFldService { public class TmplTpFldServiceImpl extends ServiceImpl<TmplTpFldMapper, TmplTpFldDO> implements TmplTpFldService {
@Override @Override
public TmplFldRespVO createTmplFld(TmplTpFldSaveReqVO tmplTpFldSaveReqVO) { public TmplFldRespVO createTmplFld(TmplTpFldSaveReqVO tmplTpFldSaveReqVO) {
TmplTpFldDO tmplTpFldDO = BeanUtils.toBean(tmplTpFldSaveReqVO, TmplTpFldDO.class); TmplTpFldDO tmplTpFldDO = BeanUtils.toBean(tmplTpFldSaveReqVO, TmplTpFldDO.class);
validateTmplFldCodeExists(tmplTpFldSaveReqVO.getFldKy()); validateTmplFldCodeExists(tmplTpFldSaveReqVO.getFldKy());
baseMapper.insert(tmplTpFldDO); baseMapper.insert(tmplTpFldDO);
log.info("创建模板字段成功,模板字段信息:【{}】", tmplTpFldDO);
return BeanUtils.toBean(tmplTpFldDO, TmplFldRespVO.class); return BeanUtils.toBean(tmplTpFldDO, TmplFldRespVO.class);
} }
@@ -46,6 +49,7 @@ public class TmplTpFldServiceImpl extends ServiceImpl<TmplTpFldMapper, TmplTpFld
// 更新 // 更新
TmplTpFldDO updateObj = BeanUtils.toBean(tmplTpFldSaveReqVO, TmplTpFldDO.class); TmplTpFldDO updateObj = BeanUtils.toBean(tmplTpFldSaveReqVO, TmplTpFldDO.class);
baseMapper.updateById(updateObj); baseMapper.updateById(updateObj);
log.info("更新模板字段成功,模板字段信息:【{}】", updateObj);
} }
private void validateTmplFldCodeExists(String code){ private void validateTmplFldCodeExists(String code){
@@ -70,6 +74,7 @@ public class TmplTpFldServiceImpl extends ServiceImpl<TmplTpFldMapper, TmplTpFld
@Override @Override
public PageResult<TmplTpFldDO> tmplTpFldPage(TmplFldPageReqVO pageReqVO) { public PageResult<TmplTpFldDO> tmplTpFldPage(TmplFldPageReqVO pageReqVO) {
log.info("获取模板字段列表,参数:【{}】", pageReqVO);
return baseMapper.selectPage(pageReqVO); return baseMapper.selectPage(pageReqVO);
} }
@@ -77,10 +82,12 @@ public class TmplTpFldServiceImpl extends ServiceImpl<TmplTpFldMapper, TmplTpFld
public void deleteTmplTpByIds(List<Long> ids) { public void deleteTmplTpByIds(List<Long> ids) {
validateTmplFldExists(ids); validateTmplFldExists(ids);
baseMapper.deleteByIds(ids); baseMapper.deleteByIds(ids);
log.info("删除模板字段成功模板字段IDS【{}】", ids);
} }
@Override @Override
public List<Map<String, Object>> getTmplTpListByClass(String clazz) { public List<Map<String, Object>> getTmplTpListByClass(String clazz) {
log.info("获取模板字段列表,模板字段类:【{}】", clazz);
return ClassInfoScanner.getClassFieldInfo(clazz); return ClassInfoScanner.getClassFieldInfo(clazz);
} }
} }

View File

@@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -38,6 +39,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*;
@Service @Service
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j
public class TmplTpServiceImpl extends ServiceImpl<TmplTpMapper, TmplTpDO> implements TmplTpService { public class TmplTpServiceImpl extends ServiceImpl<TmplTpMapper, TmplTpDO> implements TmplTpService {
private final TmplFldRelMapper tmplFldRelMapper; private final TmplFldRelMapper tmplFldRelMapper;
private final TmplItmRelMapper tmplItmRelMapper; private final TmplItmRelMapper tmplItmRelMapper;
@@ -52,6 +54,7 @@ public class TmplTpServiceImpl extends ServiceImpl<TmplTpMapper, TmplTpDO> imple
TmplTpDO tmplTp = BeanUtils.toBean(createReqVO, TmplTpDO.class); TmplTpDO tmplTp = BeanUtils.toBean(createReqVO, TmplTpDO.class);
tmplTp.setSts("Y"); tmplTp.setSts("Y");
baseMapper.insert(tmplTp); baseMapper.insert(tmplTp);
log.info("创建模板分类成功 【{}】", tmplTp);
// 返回 // 返回
List<TmplFldRelDO> tmplFldRelDOS = new ArrayList<>(); List<TmplFldRelDO> tmplFldRelDOS = new ArrayList<>();
List<TmplItmRelDO> tmplItmRelDOS = new ArrayList<>(); List<TmplItmRelDO> tmplItmRelDOS = new ArrayList<>();
@@ -68,7 +71,9 @@ public class TmplTpServiceImpl extends ServiceImpl<TmplTpMapper, TmplTpDO> imple
tmplItmRelDOS.add(tmplItmRelDO); tmplItmRelDOS.add(tmplItmRelDO);
}); });
tmplFldRelMapper.insertBatch(tmplFldRelDOS); tmplFldRelMapper.insertBatch(tmplFldRelDOS);
log.info("创建模板分类与字段关系成功 【{}】", tmplFldRelDOS);
tmplItmRelMapper.insertBatch(tmplItmRelDOS); tmplItmRelMapper.insertBatch(tmplItmRelDOS);
log.info("创建模板分类与条款关系成功 【{}】", tmplItmRelDOS);
return BeanUtils.toBean(tmplTp, TmplTpRespVO.class); return BeanUtils.toBean(tmplTp, TmplTpRespVO.class);
} }
@@ -79,6 +84,7 @@ public class TmplTpServiceImpl extends ServiceImpl<TmplTpMapper, TmplTpDO> imple
// 更新 // 更新
TmplTpDO updateObj = BeanUtils.toBean(updateReqVO, TmplTpDO.class); TmplTpDO updateObj = BeanUtils.toBean(updateReqVO, TmplTpDO.class);
baseMapper.updateById(updateObj); baseMapper.updateById(updateObj);
log.info("更新模板分类成功 【{}】", updateObj);
} }
@Override @Override
@@ -92,17 +98,26 @@ public class TmplTpServiceImpl extends ServiceImpl<TmplTpMapper, TmplTpDO> imple
// } // }
// 删除 // 删除
baseMapper.deleteByIds(ids); baseMapper.deleteByIds(ids);
log.info("删除模板分类成功 【{}】", ids);
//删除对应的关联信息 //删除对应的关联信息
tmplFldRelMapper.delete(Wrappers.<TmplFldRelDO>lambdaQuery().in(TmplFldRelDO::getTmplTpId, ids)); tmplFldRelMapper.delete(Wrappers.<TmplFldRelDO>lambdaQuery().in(TmplFldRelDO::getTmplTpId, ids));
log.info("删除模板分类与字段关系成功 【{}】", ids);
tmplItmRelMapper.delete(Wrappers.<TmplItmRelDO>lambdaQuery().in(TmplItmRelDO::getTmplTpId, ids)); tmplItmRelMapper.delete(Wrappers.<TmplItmRelDO>lambdaQuery().in(TmplItmRelDO::getTmplTpId, ids));
log.info("删除模板分类与条款关系成功 【{}】", ids);
} }
@Override @Override
@Transactional
public void deleteTmplTpListByIds(List<Long> ids) { public void deleteTmplTpListByIds(List<Long> ids) {
// 校验存在 // 校验存在
validateTmplTpExists(ids); validateTmplTpExists(ids);
// 删除 // 删除
baseMapper.deleteByIds(ids); baseMapper.deleteByIds(ids);
log.info("删除模板分类成功 【{}】", ids);
tmplFldRelMapper.delete(Wrappers.<TmplFldRelDO>lambdaQuery().in(TmplFldRelDO::getTmplTpId, ids));
log.info("删除模板分类与字段关系成功 【{}】", ids);
tmplItmRelMapper.delete(Wrappers.<TmplItmRelDO>lambdaQuery().in(TmplItmRelDO::getTmplTpId, ids));
log.info("删除模板分类与条款关系成功 【{}】", ids);
} }
private void validateTmplTpExists(List<Long> ids) { private void validateTmplTpExists(List<Long> ids) {
@@ -125,6 +140,7 @@ public class TmplTpServiceImpl extends ServiceImpl<TmplTpMapper, TmplTpDO> imple
@Override @Override
public PageResult<TmplTpDO> getTmplTpPage(TmplTpPageReqVO pageReqVO) { public PageResult<TmplTpDO> getTmplTpPage(TmplTpPageReqVO pageReqVO) {
log.info("查询模板分类列表 【{}】", pageReqVO);
return baseMapper.selectPage(pageReqVO); return baseMapper.selectPage(pageReqVO);
} }
@@ -189,6 +205,7 @@ public class TmplTpServiceImpl extends ServiceImpl<TmplTpMapper, TmplTpDO> imple
// throw exception(TMPL_TP_SATUS_ERROR); // throw exception(TMPL_TP_SATUS_ERROR);
// } // }
baseMapper.update(Wrappers.<TmplTpDO>lambdaUpdate().set(TmplTpDO::getSts, status).eq(TmplTpDO::getId, id)); baseMapper.update(Wrappers.<TmplTpDO>lambdaUpdate().set(TmplTpDO::getSts, status).eq(TmplTpDO::getId, id));
log.info("更新模板分类状态成功 【{}】,更新前的状态为【{}】", id, status);
} }
@@ -235,10 +252,12 @@ public class TmplTpServiceImpl extends ServiceImpl<TmplTpMapper, TmplTpDO> imple
tmplFldRelDOS.add(tmplFldRelDO); tmplFldRelDOS.add(tmplFldRelDO);
}); });
tmplFldRelMapper.insertBatch(tmplFldRelDOS); tmplFldRelMapper.insertBatch(tmplFldRelDOS);
log.info("模板字段添加成功,模板字段:【{}】", reqVO.getIds());
}else if ("delete".equals(reqVO.getType())) { }else if ("delete".equals(reqVO.getType())) {
tmplFldRelMapper.delete(Wrappers.<TmplFldRelDO>lambdaQuery() tmplFldRelMapper.delete(Wrappers.<TmplFldRelDO>lambdaQuery()
.eq(TmplFldRelDO::getTmplTpId, reqVO.getTpId()) .eq(TmplFldRelDO::getTmplTpId, reqVO.getTpId())
.in(TmplFldRelDO::getTpFldId, reqVO.getIds())); .in(TmplFldRelDO::getTpFldId, reqVO.getIds()));
log.info("模板字段删除成功,模板字段:【{}】", reqVO.getIds());
}else { }else {
throw exception(ILLEGAL_OPERATION_TYPE); throw exception(ILLEGAL_OPERATION_TYPE);
} }
@@ -255,10 +274,12 @@ public class TmplTpServiceImpl extends ServiceImpl<TmplTpMapper, TmplTpDO> imple
tmplItmRelDOS.add(tmplItmRelDO); tmplItmRelDOS.add(tmplItmRelDO);
}); });
tmplItmRelMapper.insertBatch(tmplItmRelDOS); tmplItmRelMapper.insertBatch(tmplItmRelDOS);
log.info("模板条目添加成功,模板条目:【{}】", reqVO.getIds());
}else if ("delete".equals(reqVO.getType())) { }else if ("delete".equals(reqVO.getType())) {
tmplItmRelMapper.delete(Wrappers.<TmplItmRelDO>lambdaQuery() tmplItmRelMapper.delete(Wrappers.<TmplItmRelDO>lambdaQuery()
.eq(TmplItmRelDO::getTmplTpId, reqVO.getTpId()) .eq(TmplItmRelDO::getTmplTpId, reqVO.getTpId())
.in(TmplItmRelDO::getItmFldId, reqVO.getIds())); .in(TmplItmRelDO::getItmFldId, reqVO.getIds()));
log.info("模板条目删除成功,模板条目:【{}】", reqVO.getIds());
}else { }else {
throw exception(ILLEGAL_OPERATION_TYPE); throw exception(ILLEGAL_OPERATION_TYPE);
} }

View File

@@ -9,11 +9,15 @@
文档可见https://www.iocoder.cn/MyBatis/x-plugins/ 文档可见https://www.iocoder.cn/MyBatis/x-plugins/
--> -->
<update id="deleteByTemplateInstanceId"> <update id="deleteByTemplateInstanceIds">
update BSE_TMPL_INSC_DAT update BSE_TMPL_INSC_DAT
set deleted = 1 set deleted = 1
WHERE INSC_ID = #{templateInstanceId} WHERE INSC_ID in
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update> </update>
<update id="updateFldValById"> <update id="updateFldValById">
update BSE_TMPL_INSC_DAT update BSE_TMPL_INSC_DAT
set FLD_VAL = #{fldVal} set FLD_VAL = #{fldVal}

View File

@@ -13,8 +13,12 @@
<!-- DELETE FROM bse_tmpl_insc_item--> <!-- DELETE FROM bse_tmpl_insc_item-->
<!-- WHERE INSC_ID = #{templateInstanceId}--> <!-- WHERE INSC_ID = #{templateInstanceId}-->
<!-- </delete>--> <!-- </delete>-->
<update id="deleteByTemplateInstanceId" > <update id="deleteByTemplateInstanceIds">
update BSE_TMPL_INSC_ITM set deleted = 1 update BSE_TMPL_INSC_ITM
WHERE INSC_ID = #{templateInstanceId} set deleted = 1
WHERE INSC_ID in
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update> </update>
</mapper> </mapper>