模版编制相关实现

This commit is contained in:
潘荣晟
2025-09-26 16:41:11 +08:00
parent eab5668023
commit 7507a53c8a
6 changed files with 88 additions and 58 deletions

View File

@@ -55,6 +55,7 @@ public class TemplateInstanceController extends AbstractFileUploadController {
setFileUploadInfo(annotation); setFileUploadInfo(annotation);
} }
} }
@Resource @Resource
private TemplateInstanceService templateInstanceService; private TemplateInstanceService templateInstanceService;
@@ -105,6 +106,9 @@ public class TemplateInstanceController extends AbstractFileUploadController {
public CommonResult<TemplateInstanceRespVO> getTemplateInstance(@RequestParam("id") Long id) { public CommonResult<TemplateInstanceRespVO> getTemplateInstance(@RequestParam("id") Long id) {
TemplateInstanceDO templateInstance = templateInstanceService.getTemplateInstance(id); TemplateInstanceDO templateInstance = templateInstanceService.getTemplateInstance(id);
TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class); TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class);
if (templateInstance == null) {
return success(templateInstanceRespVO);
}
templateInstanceService.getDetailedInfo(templateInstanceRespVO); templateInstanceService.getDetailedInfo(templateInstanceRespVO);
return success(templateInstanceRespVO); return success(templateInstanceRespVO);
} }
@@ -116,7 +120,9 @@ public class TemplateInstanceController extends AbstractFileUploadController {
PageResult<TemplateInstanceDO> pageResult = templateInstanceService.getTemplateInstancePage(pageReqVO); PageResult<TemplateInstanceDO> pageResult = templateInstanceService.getTemplateInstancePage(pageReqVO);
PageResult<TemplateInstanceRespVO> templateInstanceRespVOPageResult = BeanUtils.toBean(pageResult, TemplateInstanceRespVO.class); PageResult<TemplateInstanceRespVO> templateInstanceRespVOPageResult = BeanUtils.toBean(pageResult, TemplateInstanceRespVO.class);
templateInstanceRespVOPageResult.getList().forEach(templateInstanceRespVO -> { templateInstanceRespVOPageResult.getList().forEach(templateInstanceRespVO -> {
templateInstanceService.getDetailedInfo(templateInstanceRespVO); if (templateInstanceRespVO != null) {
templateInstanceService.getDetailedInfo(templateInstanceRespVO);
}
}); });
return success(templateInstanceRespVOPageResult); return success(templateInstanceRespVOPageResult);
} }
@@ -150,23 +156,28 @@ public class TemplateInstanceController extends AbstractFileUploadController {
public CommonResult<PageResult<TemplateInstanceRespVO>> listExcludingDisabled(@Valid TemplateInstancePageReqVO pageReqVO) { public CommonResult<PageResult<TemplateInstanceRespVO>> listExcludingDisabled(@Valid TemplateInstancePageReqVO pageReqVO) {
PageResult<TemplateInstanceRespVO> templateInstanceRespVOPageResult = BeanUtils.toBean(templateInstanceService.listExcludingDisabled(pageReqVO), TemplateInstanceRespVO.class); PageResult<TemplateInstanceRespVO> templateInstanceRespVOPageResult = BeanUtils.toBean(templateInstanceService.listExcludingDisabled(pageReqVO), TemplateInstanceRespVO.class);
templateInstanceRespVOPageResult.getList().forEach( templateInstanceRespVOPageResult.getList().forEach(
templateInstanceRespVO -> templateInstanceRespVO -> {
templateInstanceService.getDetailedInfo(templateInstanceRespVO)); if (templateInstanceRespVO != null) {
templateInstanceService.getDetailedInfo(templateInstanceRespVO);
}
}
);
return success(templateInstanceRespVOPageResult); return success(templateInstanceRespVOPageResult);
} }
//停用和启用接口 //停用和启用接口
@PostMapping("/disable-enable") @PostMapping("/disable-enable")
@Operation(summary = "实例停用和启用接口",description = "实例停用和启用接口") @Operation(summary = "实例停用和启用接口", description = "实例停用和启用接口")
@PreAuthorize("@ss.hasPermission('bse:template-instance:disable-enable')") @PreAuthorize("@ss.hasPermission('bse:template-instance:disable-enable')")
public CommonResult<Boolean> setDisableOrEnable(@Valid @RequestBody DisableEnableReqVO reqVO) { public CommonResult<Boolean> setDisableOrEnable(@Valid @RequestBody DisableEnableReqVO reqVO) {
templateInstanceService.setDisableOrEnable(reqVO); templateInstanceService.setDisableOrEnable(reqVO);
return success(true); return success(true);
} }
//根据id获取实例版本号 //根据id获取实例版本号
@GetMapping("/get-version") @GetMapping("/get-version")
@Operation(summary = "根据id获取实例版本号") @Operation(summary = "根据id获取实例版本号")
public CommonResult<Map<String,Object>> getVersion(@Valid @NotEmpty(message = "模版实例id不能为空") @RequestParam("id") String id) { public CommonResult<Map<String, Object>> getVersion(@Valid @NotEmpty(message = "模版实例id不能为空") @RequestParam("id") String id) {
return success(templateInstanceService.getVersion(id)); return success(templateInstanceService.getVersion(id));
} }
@@ -175,13 +186,13 @@ public class TemplateInstanceController extends AbstractFileUploadController {
@Operation(summary = "创建版本") @Operation(summary = "创建版本")
@PreAuthorize("@ss.hasPermission('bse:template-instance:create-version')") @PreAuthorize("@ss.hasPermission('bse:template-instance:create-version')")
public CommonResult<TemplateInstanceRespVO> createVersion(@Valid @NotEmpty(message = "模版实例id不能为空") String id) { public CommonResult<TemplateInstanceRespVO> createVersion(@Valid @NotEmpty(message = "模版实例id不能为空") String id) {
return success(templateInstanceService.createVersion(id)); return success(templateInstanceService.createVersion(id));
} }
//通过模版编码查看历史版本 //通过模版编码查看历史版本
@GetMapping("/list-by-template-cdg") @GetMapping("/list-by-template-cdg")
@Operation(summary = "通过模版编码(cdg)查看历史版本",description = "通过模版编码查看历史版本,已按照发布时间和创建时间降序排序") @Operation(summary = "通过模版编码(cdg)查看历史版本", description = "通过模版编码查看历史版本,已按照发布时间和创建时间降序排序")
public CommonResult<List<TemplateInstanceRespVO>> listByTemplateCode(@RequestParam("cdg") @Valid @NotEmpty(message = "模版编号不能为空") String templateCode) { public CommonResult<List<TemplateInstanceRespVO>> listByTemplateCode(@RequestParam("cdg") @Valid @NotEmpty(message = "模版编号不能为空") String templateCode) {
return success(templateInstanceService.listByCdg(templateCode)); return success(templateInstanceService.listByCdg(templateCode));
} }
} }

View File

@@ -1,5 +1,7 @@
package com.zt.plat.module.base.controller.admin.templtp.vo; package com.zt.plat.module.base.controller.admin.templtp.vo;
import com.zt.plat.module.system.api.dept.dto.DeptDetailRespDTO;
import com.zt.plat.module.system.api.dept.dto.DeptRespDTO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
@@ -59,12 +61,18 @@ public class TemplateInstanceRespVO {
@Schema(description = "发布时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "发布时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("发布时间") @ExcelProperty("发布时间")
private LocalDateTime publishTime; private LocalDateTime publishTime;
@Schema(description = "使用部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "") @Schema(description = "使用部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "")
private List<String> deptIds; private List<String> deptIds;
@Schema(description = "实例字段;这个是实例字段绑定的字段", requiredMode = Schema.RequiredMode.REQUIRED, example = "") @Schema(description = "实例字段;这个是实例字段绑定的字段", requiredMode = Schema.RequiredMode.REQUIRED, example = "")
private List<TemplateInstanceDataRespVO> templateInstanceDataRespVOS; private List<TemplateInstanceDataRespVO> templateInstanceDataRespVOS;
@Schema(description = "实例条款;这个是实例条款绑定的条款;", requiredMode = Schema.RequiredMode.REQUIRED, example = "") @Schema(description = "实例条款;这个是实例条款绑定的条款;", requiredMode = Schema.RequiredMode.REQUIRED, example = "")
private List<TemplateInstanceItemRespVO> instanceItemRespVOS; private List<TemplateInstanceItemRespVO> instanceItemRespVOS;
@Schema(description = "使用部门编", requiredMode = Schema.RequiredMode.REQUIRED, example = "")
private List<DeptRespDTO> DeptRespVOS;
@Schema(description = "模版分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试分类名称")
@ExcelProperty("模版分类名称")
private String tpName;
} }

View File

@@ -6,6 +6,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@Configuration(value = "baseRpcConfiguration", proxyBeanMethods = false) @Configuration(value = "baseRpcConfiguration", proxyBeanMethods = false)
@EnableFeignClients(clients = {DeptApi.class, FileApi.class}) @EnableFeignClients(clients = {DeptApi.class, FileApi.class,DeptApi.class})
public class RpcConfiguration { public class RpcConfiguration {
} }

View File

@@ -7,9 +7,7 @@ import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceDO;
import jakarta.validation.*; import jakarta.validation.*;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.pojo.PageParam;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 模板实例 Service 接口 * 模板实例 Service 接口
@@ -86,5 +84,5 @@ public interface TemplateInstanceService {
// //
// Map<String, Object> saveFile(MultipartFile file, String id); // Map<String, Object> saveFile(MultipartFile file, String id);
boolean updateTemplateInstanceFileUrlByInstanceId(@Valid @NotEmpty(message = "模版实例id不能为空") String id, @Valid @NotEmpty(message = "文件参数不能为空") String params); void updateTemplateInstanceFileUrlByInstanceId(@Valid @NotEmpty(message = "模版实例id不能为空") String id, @Valid @NotEmpty(message = "文件参数不能为空") String params);
} }

View File

@@ -13,7 +13,8 @@ import com.zt.plat.framework.tenant.core.context.CompanyContextHolder;
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.*; import com.zt.plat.module.base.dal.dataobject.tmpltp.*;
import com.zt.plat.module.base.dal.mysql.tmpltp.*; import com.zt.plat.module.base.dal.mysql.tmpltp.*;
import com.zt.plat.module.infra.api.file.FileApi; import com.zt.plat.module.system.api.dept.DeptApi;
import com.zt.plat.module.system.api.dept.dto.DeptRespDTO;
import com.zt.plat.module.tmpltp.enums.DeleteStatusEnum; import com.zt.plat.module.tmpltp.enums.DeleteStatusEnum;
import com.zt.plat.module.tmpltp.enums.PublishStatusEnum; import com.zt.plat.module.tmpltp.enums.PublishStatusEnum;
import com.zt.plat.module.tmpltp.enums.TmplStsEnum; import com.zt.plat.module.tmpltp.enums.TmplStsEnum;
@@ -23,7 +24,6 @@ import lombok.extern.slf4j.Slf4j;
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;
import org.springframework.web.multipart.MultipartFile;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@@ -45,7 +45,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*;
@Validated @Validated
public class TemplateInstanceServiceImpl implements TemplateInstanceService { public class TemplateInstanceServiceImpl implements TemplateInstanceService {
@Resource @Resource
private FileApi fileApi; private DeptApi deptApi;
@Resource @Resource
private TemplateInstanceMapper templateInstanceMapper; private TemplateInstanceMapper templateInstanceMapper;
@Resource @Resource
@@ -55,6 +55,9 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
@Resource @Resource
private TemplateInstanceItemMapper templateInstanceItemMapper; private TemplateInstanceItemMapper templateInstanceItemMapper;
@Resource
private TmplTpService tmplTpService;
private static final Pattern VERSION_PATTERN = Pattern.compile("^(.*?)([0-9]+(?:\\.[0-9]+)*)(.*)$"); private static final Pattern VERSION_PATTERN = Pattern.compile("^(.*?)([0-9]+(?:\\.[0-9]+)*)(.*)$");
@Override @Override
@@ -312,6 +315,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
newTpInstanceDO.setId(null); newTpInstanceDO.setId(null);
newTpInstanceDO.setVer(incrementVersion(templateInstanceDO.getVer())); newTpInstanceDO.setVer(incrementVersion(templateInstanceDO.getVer()));
newTpInstanceDO.setPublishTime(LocalDateTime.now()); newTpInstanceDO.setPublishTime(LocalDateTime.now());
newTpInstanceDO.setOrigCntt(templateInstanceDO.getCntt());
newTpInstanceDO.setCreateTime(null); newTpInstanceDO.setCreateTime(null);
newTpInstanceDO.setUpdateTime(null); newTpInstanceDO.setUpdateTime(null);
templateInstanceMapper.insert(newTpInstanceDO); templateInstanceMapper.insert(newTpInstanceDO);
@@ -391,14 +395,22 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
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()){
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():"分类未命名");
}
} }
@Override @Override
public boolean updateTemplateInstanceFileUrlByInstanceId(String id, String params) { public void updateTemplateInstanceFileUrlByInstanceId(String id, String params) {
validateTemplateInstanceExists(Long.valueOf(id)); validateTemplateInstanceExists(Long.valueOf(id));
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);
return templateInstanceMapper.update(updateWrapper)>0; templateInstanceMapper.update(updateWrapper);
} }
// 实例条款值 // 实例条款值
private List<TemplateInstanceItemRespVO> setInstanceItemRespVOS(Long id) { private List<TemplateInstanceItemRespVO> setInstanceItemRespVOS(Long id) {