REQ-3769 审批模版文档复制-step1
This commit is contained in:
parent
1f54de4686
commit
a9cddf121c
@ -9,6 +9,7 @@ import cn.axzo.workflow.common.model.request.bpmn.model.BpmnModelUpdateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocCreateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocOrderDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocQueryDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocResetDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocSearchDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocUpdateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.print.PrintTemplateConfigQueryDTO;
|
||||
@ -322,4 +323,15 @@ public interface ProcessModelApi {
|
||||
@PostMapping(value = "/api/process/model/doc/order")
|
||||
@InvokeMode(SYNC)
|
||||
CommonResponse<Boolean> orderDoc(@Validated @RequestBody DocOrderDTO dto);
|
||||
|
||||
/**
|
||||
* 重置关联文档
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "重置关联文档配置")
|
||||
@PostMapping(value = "/api/process/model/doc/reset")
|
||||
@InvokeMode(SYNC)
|
||||
CommonResponse<Boolean> resetDoc(@Validated @RequestBody DocResetDTO dto);
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import java.io.Serializable;
|
||||
|
||||
@ApiModel("分页参数")
|
||||
public class BpmPageParam implements Serializable {
|
||||
private static final long serialVersionUID = -7002013785995706695L;
|
||||
private static final Integer PAGE_NO = 1;
|
||||
private static final Integer PAGE_SIZE = 10;
|
||||
@ApiModelProperty(value = "页码,从 1 开始", required = true, example = "1")
|
||||
|
||||
@ -20,6 +20,8 @@ import java.io.Serializable;
|
||||
@Accessors(chain = true)
|
||||
public class BpmnModelCreateDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1383240088010310865L;
|
||||
|
||||
@ApiModelProperty(value = "流程模型标识", example = "process_key", hidden = true)
|
||||
@Length(max = 255, message = "流程标识最长只支持255个字符")
|
||||
private String key;
|
||||
|
||||
@ -16,6 +16,8 @@ import lombok.experimental.Accessors;
|
||||
@Accessors(chain = true)
|
||||
public class BpmnModelUpdateDTO extends BpmnModelCreateDTO {
|
||||
|
||||
private static final long serialVersionUID = 3661214238064751897L;
|
||||
|
||||
@ApiModelProperty(value = "流程模型 ID", required = true)
|
||||
private String processModelId;
|
||||
|
||||
|
||||
@ -2,7 +2,10 @@ package cn.axzo.workflow.common.model.request.bpmn.model.doc;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 流程关联文档搜索入参模型
|
||||
@ -12,6 +15,9 @@ import lombok.Data;
|
||||
*/
|
||||
@ApiModel("流程关联文档搜索入参模型")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class DocQueryDTO {
|
||||
|
||||
/**
|
||||
|
||||
@ -0,0 +1,29 @@
|
||||
package cn.axzo.workflow.common.model.request.bpmn.model.doc;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@ApiModel("流程关联文档重置入参模型")
|
||||
@Data
|
||||
public class DocResetDTO {
|
||||
|
||||
/**
|
||||
* 业务 ID
|
||||
*/
|
||||
@NotBlank(message = "业务 ID 不能为空")
|
||||
private String category;
|
||||
|
||||
/**
|
||||
* 代运营模型 ID
|
||||
*/
|
||||
@NotBlank(message = "模型 ID 不能为空")
|
||||
private String modelId;
|
||||
|
||||
/**
|
||||
* 代运营的单位或租户ID
|
||||
*/
|
||||
@NotBlank(message = "工作台 ID 不能为空")
|
||||
private String workspaceId;
|
||||
}
|
||||
@ -16,6 +16,8 @@ import lombok.EqualsAndHashCode;
|
||||
@Data
|
||||
public class DocSearchDTO extends BpmPageParam {
|
||||
|
||||
private static final long serialVersionUID = -308388315001754954L
|
||||
;
|
||||
/**
|
||||
* 流程模型 ID
|
||||
*/
|
||||
|
||||
@ -18,6 +18,8 @@ import lombok.ToString;
|
||||
@ToString(callSuper = true)
|
||||
public class ExtAxDocContent extends BaseEntity<ExtAxDocContent> {
|
||||
|
||||
private static final long serialVersionUID = 5844913474486640969L;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
|
||||
@ -3,6 +3,8 @@ package cn.axzo.workflow.core.service;
|
||||
import cn.axzo.workflow.common.enums.FileTypeEnum;
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxDocContent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 文件内容表
|
||||
*
|
||||
@ -17,5 +19,7 @@ public interface ExtAxDocContentService {
|
||||
|
||||
ExtAxDocContent deleteContent(String docId);
|
||||
|
||||
List<ExtAxDocContent> batchDeleteContent(List<String> docIds);
|
||||
|
||||
String getContent(Long docId);
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package cn.axzo.workflow.core.service;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocCreateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocOrderDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocQueryDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocResetDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocSearchDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocUpdateDTO;
|
||||
import cn.axzo.workflow.common.model.response.BpmPageResult;
|
||||
@ -68,6 +69,13 @@ public interface ExtAxModelDocService {
|
||||
*/
|
||||
Boolean deleteDoc(Long docId);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
* @param docIds 文档列表
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean batchDeleteDoc(List<Long> docIds);
|
||||
|
||||
/**
|
||||
* 模型文档排序
|
||||
*
|
||||
@ -75,4 +83,11 @@ public interface ExtAxModelDocService {
|
||||
* @return
|
||||
*/
|
||||
Boolean orderDoc(DocOrderDTO dto);
|
||||
|
||||
/**
|
||||
* 模型文档重置
|
||||
* @param dto 请求参数
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean resetDoc(DocResetDTO dto);
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@ public class BpmnProcessModelServiceImpl implements BpmnProcessModelService {
|
||||
baseQuerySql.append(")");
|
||||
}
|
||||
if (Objects.nonNull(dto.getAgent())) {
|
||||
if (dto.getAgent()) {
|
||||
if (Boolean.TRUE.equals(dto.getAgent())) {
|
||||
baseQuerySql.append(sqlConnectors(baseQuerySql))
|
||||
.append(" TENANT_ID_ != '' ");
|
||||
if (!CollectionUtils.isEmpty(dto.getTenantIds())) {
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.workflow.core.service.impl;
|
||||
|
||||
import cn.axzo.framework.data.mybatisplus.model.BaseEntity;
|
||||
import cn.axzo.workflow.common.enums.FileTypeEnum;
|
||||
import cn.axzo.workflow.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxDocContent;
|
||||
@ -10,7 +11,9 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.common.code.BpmnModelRespCode.MODEL_FILE_CONTENT_DATA_ERROR;
|
||||
|
||||
@ -54,6 +57,14 @@ public class ExtAxDocContentServiceImpl implements ExtAxDocContentService {
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ExtAxDocContent> batchDeleteContent(List<String> docIds) {
|
||||
List<ExtAxDocContent> entities = extAxDocContentMapper.selectList(new LambdaQueryWrapper<ExtAxDocContent>()
|
||||
.in(ExtAxDocContent::getFileId, docIds));
|
||||
extAxDocContentMapper.deleteBatchIds(entities.stream().map(BaseEntity::getId).collect(Collectors.toList()));
|
||||
return entities;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContent(Long docId) {
|
||||
ExtAxDocContent content = extAxDocContentMapper.selectOne(ExtAxDocContent::getFileId, docId);
|
||||
|
||||
@ -7,6 +7,7 @@ import cn.axzo.workflow.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocCreateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocOrderDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocQueryDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocResetDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocSearchDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocUpdateDTO;
|
||||
import cn.axzo.workflow.common.model.response.BpmPageResult;
|
||||
@ -14,11 +15,13 @@ import cn.axzo.workflow.common.model.response.bpmn.model.doc.DocBaseVO;
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxDocContent;
|
||||
import cn.axzo.workflow.core.repository.entity.ExtAxModelDoc;
|
||||
import cn.axzo.workflow.core.repository.mapper.ExtAxModelDocMapper;
|
||||
import cn.axzo.workflow.core.service.BpmnProcessModelService;
|
||||
import cn.axzo.workflow.core.service.ExtAxDocContentService;
|
||||
import cn.axzo.workflow.core.service.ExtAxModelDocService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.flowable.engine.RepositoryService;
|
||||
import org.flowable.engine.RuntimeService;
|
||||
import org.flowable.engine.repository.ProcessDefinition;
|
||||
@ -26,6 +29,7 @@ import org.flowable.engine.runtime.ProcessInstance;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@ -33,6 +37,7 @@ import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.common.code.BpmnInstanceRespCode.PROCESS_INSTANCE_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.common.code.BpmnModelRespCode.MODEL_FILE_NOT_EXISTS;
|
||||
@ -63,9 +68,7 @@ public class ExtAxModelDocServiceImpl implements ExtAxModelDocService {
|
||||
public BpmPageResult<DocBaseVO> docPage(DocSearchDTO dto) {
|
||||
Page<ExtAxModelDoc> page = extAxModelDocMapper.selectPage(new Page<>(dto.getPageNo(), dto.getPageSize()),
|
||||
buildQueryWrapper(BeanMapper.copyBean(dto, ExtAxModelDoc.class)));
|
||||
List<DocBaseVO> list = BeanMapper.copyList(page.getRecords(), DocBaseVO.class, (s, t) -> {
|
||||
t.setFileType(FileTypeEnum.valueOfType(s.getFileType()));
|
||||
});
|
||||
List<DocBaseVO> list = BeanMapper.copyList(page.getRecords(), DocBaseVO.class, (s, t) -> t.setFileType(FileTypeEnum.valueOfType(s.getFileType())));
|
||||
return new BpmPageResult<>(list, page.getTotal());
|
||||
}
|
||||
|
||||
@ -93,9 +96,7 @@ public class ExtAxModelDocServiceImpl implements ExtAxModelDocService {
|
||||
query.setStatus(true);
|
||||
query.setTenantId(processDefinition.getTenantId());
|
||||
List<ExtAxModelDoc> docs = extAxModelDocMapper.selectList(buildQueryWrapper(query));
|
||||
return BeanMapper.copyList(docs, DocBaseVO.class, (s, t) -> {
|
||||
t.setFileType(FileTypeEnum.valueOfType(s.getFileType()));
|
||||
});
|
||||
return BeanMapper.copyList(docs, DocBaseVO.class, (s, t) -> t.setFileType(FileTypeEnum.valueOfType(s.getFileType())));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -211,6 +212,26 @@ public class ExtAxModelDocServiceImpl implements ExtAxModelDocService {
|
||||
return extAxModelDocMapper.deleteById(docId) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean batchDeleteDoc(List<Long> docIds) {
|
||||
if (CollectionUtils.isEmpty(docIds)) {
|
||||
return true;
|
||||
}
|
||||
List<ExtAxModelDoc> entities = extAxModelDocMapper.selectBatchIds(docIds);
|
||||
if (CollectionUtils.isEmpty(entities)) {
|
||||
return true;
|
||||
}
|
||||
List<ExtAxModelDoc> hiprintList = entities.stream()
|
||||
.filter(entity -> Objects.equals(FileTypeEnum.HIPRINT, FileTypeEnum.valueOfType(entity.getFileType())))
|
||||
.collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(hiprintList)) {
|
||||
extAxDocContentService.batchDeleteContent(hiprintList.stream()
|
||||
.map(ExtAxModelDoc::getFileRelationId)
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
return extAxModelDocMapper.deleteBatchIds(docIds) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean orderDoc(DocOrderDTO dto) {
|
||||
@ -244,4 +265,25 @@ public class ExtAxModelDocServiceImpl implements ExtAxModelDocService {
|
||||
extAxModelDocMapper.updateById(doc);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean resetDoc(DocResetDTO dto) {
|
||||
DocSearchDTO docSearchDTO = new DocSearchDTO();
|
||||
docSearchDTO.setModelId(dto.getModelId());
|
||||
docSearchDTO.setPageNo(1);
|
||||
docSearchDTO.setPageSize(999);
|
||||
BpmPageResult<DocBaseVO> docBaseVOBpmPageResult = this.docPage(docSearchDTO);
|
||||
List<DocBaseVO> docBaseVOS = ListUtils.emptyIfNull(docBaseVOBpmPageResult.getList());
|
||||
//先删除
|
||||
if (!CollectionUtils.isEmpty(docBaseVOS)) {
|
||||
this.batchDeleteDoc(docBaseVOS.stream().map(DocBaseVO::getId).collect(Collectors.toList()));
|
||||
}
|
||||
//通用模板的文档
|
||||
List<DocBaseVO> commonDocBaseVos = this.docList(DocQueryDTO.builder().processDefinitionKey(dto.getCategory()).build());
|
||||
if (!CollectionUtils.isEmpty(commonDocBaseVos)) {
|
||||
//todo 需要克隆
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@ import cn.axzo.workflow.common.model.request.bpmn.model.BpmnModelUpdateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocCreateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocOrderDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocQueryDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocResetDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocSearchDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocUpdateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.print.PrintTemplateConfigQueryDTO;
|
||||
@ -477,4 +478,11 @@ public class BpmnProcessModelController implements ProcessModelApi {
|
||||
public CommonResponse<Boolean> orderDoc(@Validated @RequestBody DocOrderDTO dto) {
|
||||
return success(modelDocService.orderDoc(dto));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Operation(summary = "重置模版关联文档")
|
||||
@PostMapping(value = "/doc/reset")
|
||||
public CommonResponse<Boolean> resetDoc(@Validated @RequestBody DocResetDTO dto) {
|
||||
return success(modelDocService.resetDoc(dto));
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user