Merge remote-tracking branch 'origin/master'

This commit is contained in:
梁琦涛
2024-07-12 18:00:43 +08:00
8 changed files with 75 additions and 32 deletions
@@ -9,4 +9,5 @@ public class ActivitiCommon {
public static final String MAIN_INSTANCE_ID = "mainInstanceId"; public static final String MAIN_INSTANCE_ID = "mainInstanceId";
public static final String PARENT_TASK_ID = "parentTaskId"; public static final String PARENT_TASK_ID = "parentTaskId";
public static final String DISTRIBUTE = "distribute"; public static final String DISTRIBUTE = "distribute";
public static final String UNALLOCATED_QUANTITY = "unallocatedQuantity";
} }
@@ -12,6 +12,10 @@ public class ProcessStandardComplianceCheckConstants {
public static final String DEPT_USER = "deptUser"; public static final String DEPT_USER = "deptUser";
/** 主排查人 */ /** 主排查人 */
public static final String MAIN_CHECK_USER = "mainCheckUser"; public static final String MAIN_CHECK_USER = "mainCheckUser";
/** 设计师 */
public static final String DESIGNER = "designer";
/** 设计师列表 */
public static final String DESIGNER_LIST = "designerList";
/** 会签人员列表 */ /** 会签人员列表 */
public static final String COUNTERSIGN_USER_LIST = "countersignUserList"; public static final String COUNTERSIGN_USER_LIST = "countersignUserList";
/** 设计工程师科室经理审核 */ /** 设计工程师科室经理审核 */
@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.util.MinioUtil; import com.jero.common.util.MinioUtil;
import com.jero.modules.activiti.common.ActivitiCommon; import com.jero.modules.activiti.common.ActivitiCommon;
@@ -12,7 +13,6 @@ import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.enums.ProcessType; import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.demo.common.ProcessDemoCommon;
import com.jero.modules.activiti.process.demo.vo.ProcessDemoVO; import com.jero.modules.activiti.process.demo.vo.ProcessDemoVO;
import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey;
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
@@ -54,6 +54,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import static com.jero.modules.activiti.common.ActivitiCommon.DISTRIBUTE; import static com.jero.modules.activiti.common.ActivitiCommon.DISTRIBUTE;
import static com.jero.modules.activiti.common.ActivitiCommon.PASS; import static com.jero.modules.activiti.common.ActivitiCommon.PASS;
@@ -240,6 +241,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
actFlowCommonService.updateApprovalInfo(processTask, taskId); actFlowCommonService.updateApprovalInfo(processTask, taskId);
String curUserId = UserUtils.getUserId(); String curUserId = UserUtils.getUserId();
ProcessSccVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); ProcessSccVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
ProcessStandardComplianceCheck standardInfo = businessInfoDTO.getStandardInfo();
List<ProcessStandardComplianceCheckDetail> detailInfoList = businessInfoDTO.getDetailInfoList();
switch (xmlNodeId) { switch (xmlNodeId) {
case DEPT_USER_DISTRIBUTE: case DEPT_USER_DISTRIBUTE:
// 设置主排查人 // 设置主排查人
@@ -248,6 +251,17 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
break; break;
case MAIN_CHECK_USER_DISTRIBUTE: case MAIN_CHECK_USER_DISTRIBUTE:
// 驳回 // 驳回
boolean distributeFlag = businessInfoDTO.getStandardInfo().getDistributeFlag().equals(YesOrNoEnum.YES.getValue());
int unallocatedQuantity = 0;
if (distributeFlag) {
// 分发需要设置未分发数据条数
unallocatedQuantity = (int) detailInfoList.stream().filter(e -> StrUtil.isBlank(e.getDesignEngineer())).count();
// 去重找到所有设计师
List<String> designEngineerList = detailInfoList.stream().map(ProcessStandardComplianceCheckDetail::getDesignEngineer).distinct().collect(Collectors.toList());
runtimeService.setVariable(processInstanceId, DESIGNER_LIST, designEngineerList);
}
runtimeService.setVariable(processInstanceId, DISTRIBUTE, distributeFlag);
runtimeService.setVariable(processInstanceId, UNALLOCATED_QUANTITY, unallocatedQuantity);
break; break;
} }
// 审批节点 // 审批节点
@@ -321,15 +335,15 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
Map<String, Object> variables = new HashMap<>(); Map<String, Object> variables = new HashMap<>();
variables.put(ActivitiCommon.MAIN_INSTANCE_ID, mainInstanceId != null ? mainInstanceId : processInstanceId); variables.put(ActivitiCommon.MAIN_INSTANCE_ID, mainInstanceId != null ? mainInstanceId : processInstanceId);
variables.put(ActivitiCommon.PARENT_TASK_ID, taskId); variables.put(ActivitiCommon.PARENT_TASK_ID, taskId);
String mainCheckUser = (String) delegateTask.getVariable(MAIN_CHECK_USER);
switch (taskDefinitionKey) { switch (taskDefinitionKey) {
//主排查人分批下发后自动任务 //主排查人分批下发后自动任务
case AUTO_TASK_1: case AUTO_TASK_1:
case AUTO_TASK_3: case AUTO_TASK_3:
// TODO List<String> designerList = (List<String>) delegateTask.getVariable(DESIGNER_LIST);
List<String> interpreterList = (List<String>) delegateTask.getVariable(ProcessDemoCommon.INTERPRETER); for (String designer : designerList) {
for (String interpreter : interpreterList) { userInfoMap.put(DESIGNER, designer);
userInfoMap.put(ProcessDemoCommon.INTERPRETER, interpreter); userInfoMap.put(MAIN_CHECK_USER, mainCheckUser);
// 流程定义id // 流程定义id
String definitionId = processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_DISTRIBUTE); String definitionId = processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_DISTRIBUTE);
basicProcessInfoDTO.setProcessDefinitionId(definitionId); basicProcessInfoDTO.setProcessDefinitionId(definitionId);
@@ -343,9 +357,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
break; break;
//设计工程师驳回后自动任务 //设计工程师驳回后自动任务
case AUTO_TASK_2: case AUTO_TASK_2:
// TODO userInfoMap.put(MAIN_CHECK_USER, mainCheckUser);
String mainInterpreter = (String) delegateTask.getVariable(ProcessDemoCommon.MAIN_INTERPRETER);
userInfoMap.put(ProcessDemoCommon.MAIN_INTERPRETER, mainInterpreter);
// 流程定义id // 流程定义id
String definitionId = processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE); String definitionId = processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE);
basicProcessInfoDTO.setProcessDefinitionId(definitionId); basicProcessInfoDTO.setProcessDefinitionId(definitionId);
@@ -70,6 +70,10 @@ public class ProcessStandardInterpret extends BaseEntity {
@ApiModelProperty(value = "分解单来源(字典)") @ApiModelProperty(value = "分解单来源(字典)")
@Dict(dicCode = "process_manuscript") @Dict(dicCode = "process_manuscript")
private String decompositionSource; private String decompositionSource;
/**发起时是否选择了条款(字典:1:是,2:否)*/
@ApiModelProperty(value = "发起时是否选择了条款(字典:1:是,0:否)")
@Dict(dicCode = "yn")
private String isChooseClause;
/**是否下发(字典:1:是,2:否)*/ /**是否下发(字典:1:是,2:否)*/
@ApiModelProperty(value = "是否下发(字典:1:是,2:否)") @ApiModelProperty(value = "是否下发(字典:1:是,2:否)")
@Dict(dicCode = "is_distribute") @Dict(dicCode = "is_distribute")
@@ -54,22 +54,6 @@ public class ProcessStandardInterpretClauseSublist extends BaseEntity {
@ApiModelProperty(value = "相对上一版变化点说明") @ApiModelProperty(value = "相对上一版变化点说明")
@Excel(name = "相对上一版变化点说明", width = 15) @Excel(name = "相对上一版变化点说明", width = 15)
private String changeDescription; private String changeDescription;
/**专业领域*/
@ApiModelProperty(value = "专业领域")
@Excel(name = "专业领域", width = 15, dicCode = "professional_field")
private String domainArea;
/**新认证实施日期*/
@ApiModelProperty(value = "新认证实施日期")
@Excel(name = "新认证实施日期", width = 15)
private String newCerImplementDate;
/**新生产车实施日期*/
@ApiModelProperty(value = "新生产车实施日期")
@Excel(name = "新生产车实施日期", width = 15)
private String newProductionImplementation;
/**注册日期*/
@ApiModelProperty(value = "注册日期")
@Excel(name = "注册日期", width = 15)
private String registrationDate;
/**法规注释*/ /**法规注释*/
@ApiModelProperty(value = "法规注释") @ApiModelProperty(value = "法规注释")
@Excel(name = "法规注释", width = 15) @Excel(name = "法规注释", width = 15)
@@ -104,9 +88,25 @@ public class ProcessStandardInterpretClauseSublist extends BaseEntity {
@ApiModelProperty(value = "动力类型") @ApiModelProperty(value = "动力类型")
@Excel(name = "动力类型", width = 15, dicCode = "dynamic_type") @Excel(name = "动力类型", width = 15, dicCode = "dynamic_type")
private String powerType; private String powerType;
/**专业领域*/
@ApiModelProperty(value = "专业领域")
@Excel(name = "专业领域", width = 15, dicCode = "professional_field")
private String domainArea;
/**配置需求*/ /**配置需求*/
@ApiModelProperty(value = "配置需求") @ApiModelProperty(value = "配置需求")
private String configurationRequirements; private String configurationRequirements;
/**新认证实施日期*/
@ApiModelProperty(value = "新认证实施日期")
@Excel(name = "新认证实施日期", width = 15)
private String newCerImplementDate;
/**新生产车实施日期*/
@ApiModelProperty(value = "新生产车实施日期")
@Excel(name = "新生产车实施日期", width = 15)
private String newProductionImplementation;
/**注册日期*/
@ApiModelProperty(value = "注册日期")
@Excel(name = "注册日期", width = 15)
private String registrationDate;
/**企业标准*/ /**企业标准*/
@ApiModelProperty(value = "企业标准") @ApiModelProperty(value = "企业标准")
@Excel(name = "企业标准", width = 15) @Excel(name = "企业标准", width = 15)
@@ -14,9 +14,11 @@
master_interpret_id, master_interpret_id,
parent_id, parent_id,
standard_id, standard_id,
split_info_id,
project_id, project_id,
decomposition_source, decomposition_source,
is_distribute, is_distribute,
is_choose_clause,
countersign_person_ids, countersign_person_ids,
uploader, uploader,
approve_person_id, approve_person_id,
@@ -246,7 +246,7 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
standardInterpretDTO.getProcessStandardInterpret().getDecompositionSource()); standardInterpretDTO.getProcessStandardInterpret().getDecompositionSource());
HashMap<String, Object> parameter = new HashMap<>(); HashMap<String, Object> parameter = new HashMap<>();
parameter.put("standard_id", lawsDomesticStandard.getId()); parameter.put("standard_id", lawsDomesticStandard.getId());
parameter.put("standard_type", parameter.put("file_type",
standardInterpretDTO.getProcessStandardInterpret().getDecompositionSource()); standardInterpretDTO.getProcessStandardInterpret().getDecompositionSource());
List<Map<String, Object>> maps = documentSplitService.queryDocumentSplitDetailByList(parameter); List<Map<String, Object>> maps = documentSplitService.queryDocumentSplitDetailByList(parameter);
if (!Objects.isNull(maps)){ if (!Objects.isNull(maps)){
@@ -555,6 +555,7 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
ProcessStandardInterpretClause processStandardInterpretClause = ProcessStandardInterpretClause processStandardInterpretClause =
new ProcessStandardInterpretClause(); new ProcessStandardInterpretClause();
processStandardInterpretClause.setStandardInterpretId(processStandardInterpret.getId()); processStandardInterpretClause.setStandardInterpretId(processStandardInterpret.getId());
// 标准主解读人分发 // 标准主解读人分发
if (StandardInterpretCommon.MASTER_INTERPRET_DISTRIBUTE.equals(node)){ if (StandardInterpretCommon.MASTER_INTERPRET_DISTRIBUTE.equals(node)){
processStandardInterpretClause.setIsDistribute(YesOrNoEnum.NO.getValue()); processStandardInterpretClause.setIsDistribute(YesOrNoEnum.NO.getValue());
@@ -565,6 +566,10 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
} }
processStandardInterpretClauseList = processStandardInterpretClauseList =
processStandardInterpretClauseService.queryList(processStandardInterpretClause); processStandardInterpretClauseService.queryList(processStandardInterpretClause);
// 主控部门联络人分发
if (StandardInterpretCommon.CONTACT_PERSON_DISTRIBUTE.equals(node)){
processStandardInterpretClauseList = new ArrayList<>();
}
} }
// 通过 标准解读流程id 查询 标准解读流程_条款中间表_子表 // 通过 标准解读流程id 查询 标准解读流程_条款中间表_子表
@@ -702,7 +707,7 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
MultipartFile file = IntekeyUtils.autoDecryptFile(entity.getValue()); MultipartFile file = IntekeyUtils.autoDecryptFile(entity.getValue());
ImportParams params = new ImportParams(); ImportParams params = new ImportParams();
params.setNeedSave(true); params.setNeedSave(true);
params.setHeadRows(1); params.setHeadRows(0);
// excel表格头部校验 // excel表格头部校验
excelHeadVerify(file, FlowImportExcel.class, 0, 0); excelHeadVerify(file, FlowImportExcel.class, 0, 0);
List<FlowImportExcel> lists = ExcelImportUtil.importExcel(file.getInputStream(), List<FlowImportExcel> lists = ExcelImportUtil.importExcel(file.getInputStream(),
@@ -710,15 +715,16 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
if (CollectionUtils.isEmpty(lists) || lists.size() <= 2) { if (CollectionUtils.isEmpty(lists) || lists.size() <= 2) {
return Result.error(ResultCommon.IMPORT_DATA_CANNOT_BE_EMPTY); return Result.error(ResultCommon.IMPORT_DATA_CANNOT_BE_EMPTY);
} }
lists.remove(0);
List<ProcessStandardInterpretClauseSublist> list = BeanCopyUtils.copyBeanList(lists, List<ProcessStandardInterpretClauseSublist> list = BeanCopyUtils.copyBeanList(lists,
ProcessStandardInterpretClauseSublist.class); ProcessStandardInterpretClauseSublist.class);
StringBuilder errorMSG = new StringBuilder(); StringBuilder errorMSG = new StringBuilder();
String standardInterpretId = request.getParameter("standardInterpretId");
String standardId = request.getParameter("standardId"); String standardId = request.getParameter("standardId");
String splitInfoId = request.getParameter("splitInfoId"); String splitInfoId = request.getParameter("splitInfoId");
LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getById(standardId); LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getById(standardId);
// 字段校验 // 字段校验
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
list.get(i).setStandardInterpretId(standardInterpretId);
String head = "第" + (i + 2) + "行:"; String head = "第" + (i + 2) + "行:";
List<String> firstVerify = firstVerify(i, list.get(i), lawsDomesticStandard, splitInfoId); List<String> firstVerify = firstVerify(i, list.get(i), lawsDomesticStandard, splitInfoId);
List<String> secondVerify = secondVerify(list.get(i)); List<String> secondVerify = secondVerify(list.get(i));
@@ -1031,7 +1037,7 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
} }
} }
if (exist){ if (i > 0 && exist){
// 条款校验 // 条款校验
LawsDocumentSplit lawsDocumentSplits = documentSplitMapper.selectOne( LawsDocumentSplit lawsDocumentSplits = documentSplitMapper.selectOne(
new LambdaQueryWrapper<LawsDocumentSplit>() new LambdaQueryWrapper<LawsDocumentSplit>()
@@ -1170,6 +1176,7 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
processStandardInterpretService.saveOrUpdate(processStandardInterpret); processStandardInterpretService.saveOrUpdate(processStandardInterpret);
// 如果没选择条款 // 如果没选择条款
if (CollectionUtils.isEmpty(processStandardInterpretClauseList)){ if (CollectionUtils.isEmpty(processStandardInterpretClauseList)){
processStandardInterpret.setIsChooseClause(YesOrNoEnum.NO.getValue());
// 自动保存所有条款 // 自动保存所有条款
processStandardInterpretClauseList = processStandardInterpretClauseList =
getClauseList(processStandardInterpret.getStandardId(), getClauseList(processStandardInterpret.getStandardId(),
@@ -1242,6 +1249,7 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
standardInterpretFlowDTO.getProcessAll().getProcessInstanceId()); standardInterpretFlowDTO.getProcessAll().getProcessInstanceId());
processStandardInterpretClauseSublistService.saveBatch(processStandardInterpretClauseSublists); processStandardInterpretClauseSublistService.saveBatch(processStandardInterpretClauseSublists);
}else { }else {
// 不分发
// 保存会签人员、审核人员、批准人员 // 保存会签人员、审核人员、批准人员
processStandardInterpretService.updateById(processStandardInterpret); processStandardInterpretService.updateById(processStandardInterpret);
map.put(StandardInterpretCommon.JOINTLY_SIGN_LIST, map.put(StandardInterpretCommon.JOINTLY_SIGN_LIST,
@@ -1250,7 +1258,10 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
processStandardInterpret.getUploader()); processStandardInterpret.getUploader());
map.put(StandardInterpretCommon.TECHNICAL_OFFICER, map.put(StandardInterpretCommon.TECHNICAL_OFFICER,
processStandardInterpret.getApprovePersonId()); processStandardInterpret.getApprovePersonId());
// 不分发
// 删除旧数据
processStandardInterpretClauseService.removeByIds(processAllDelIds);
processStandardInterpretClauseSublistService processStandardInterpretClauseSublistService
.saveOrUpdateBatch(processStandardInterpretClauseSublistList); .saveOrUpdateBatch(processStandardInterpretClauseSublistList);
@@ -1260,8 +1271,8 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe
processStandardInterpretClauseSublistList) { processStandardInterpretClauseSublistList) {
int count = processStandardInterpretClauseService.count( int count = processStandardInterpretClauseService.count(
new LambdaQueryWrapper<ProcessStandardInterpretClause>() new LambdaQueryWrapper<ProcessStandardInterpretClause>()
.eq(ProcessStandardInterpretClause::getStandardInterpretId, .eq(ProcessStandardInterpretClause::getId,
standardInterpretId) standardInterpretClauseSublist.getStandardInterpretClauseId())
.eq(ProcessStandardInterpretClause::getClauseId, .eq(ProcessStandardInterpretClause::getClauseId,
standardInterpretClauseSublist.getClauseId())); standardInterpretClauseSublist.getClauseId()));
if (count <= 0){ if (count <= 0){
@@ -24,6 +24,11 @@ public class FlowImportExcel {
@TableField(exist = false) @TableField(exist = false)
@Excel(name = "标准名称/条款标题", width = 15) @Excel(name = "标准名称/条款标题", width = 15)
private String itemTitle; private String itemTitle;
/**条款内容*/
@ApiModelProperty(value = "条款内容")
@TableField(exist = false)
@Excel(name = "条款内容", width = 15)
private String itemContent;
/**译文*/ /**译文*/
@ApiModelProperty(value = "译文") @ApiModelProperty(value = "译文")
@Excel(name = "译文", width = 15) @Excel(name = "译文", width = 15)
@@ -72,6 +77,10 @@ public class FlowImportExcel {
@ApiModelProperty(value = "新认证实施日期") @ApiModelProperty(value = "新认证实施日期")
@Excel(name = "新认证实施日期", width = 15) @Excel(name = "新认证实施日期", width = 15)
private String newCerImplementDate; private String newCerImplementDate;
/**新生产车实施日期*/
@ApiModelProperty(value = "新生产车实施日期")
@Excel(name = "新生产车实施日期", width = 15)
private String newProductionImplementation;
/**注册日期*/ /**注册日期*/
@ApiModelProperty(value = "注册日期") @ApiModelProperty(value = "注册日期")
@Excel(name = "注册日期", width = 15) @Excel(name = "注册日期", width = 15)