add 法规合规评估流程基础代码
This commit is contained in:
@@ -16,6 +16,7 @@ public enum ProcessTypeEnum {
|
||||
FB_STANDARD_CONSULTATION("标准征求意见流程",2, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardConsultationServiceImpl"),
|
||||
PROJECT_ASSESS("项目合规评估流程",3, "com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService"),
|
||||
PROJECT_NOT_MET("未符合项跟踪流程",4, "com.jero.modules.activiti.process.projectnotmet.service.ProcessProjectNotMetService"),
|
||||
PROJECT_STANDARD("法规合规评估流程",5, "com.jero.modules.activiti.process.projectstandard.service.ProcessProjectStandardService"),
|
||||
FB_STANDARD_PURCHASE("法规采购流程",6, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardPurchaseServiceImpl"),
|
||||
ES_INIT_CHANGE("企标立项/变更计划",7, "com.jero.modules.activiti.process.esInitChange.service.impl.ProcessEsInitChangeServiceImpl"),
|
||||
ES_ANNUAL_REPORT("年度制修订计划审批流程(各部门主动上报)",8, "com.jero.modules.activiti.process.esAbolish.service.impl.ProcessEsAbolishServiceImpl"),
|
||||
|
||||
+30
-14
@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
@@ -106,6 +107,12 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
delegateTask.removeVariable("pass");
|
||||
//流程审批信息
|
||||
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
|
||||
ProcessNodeService processNodeService = SpringContextUtil.getBean(ProcessNodeService.class);
|
||||
log.info("id = " + delegateTask.getId());
|
||||
log.info("name = " + delegateTask.getName());
|
||||
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
|
||||
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
|
||||
log.info("taskEntity.getVariables() = " + delegateTask.getVariables());
|
||||
|
||||
String id = delegateTask.getId();
|
||||
String name = delegateTask.getName();
|
||||
@@ -113,6 +120,16 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
Date createTime = delegateTask.getCreateTime();
|
||||
String assignee = delegateTask.getAssignee();
|
||||
String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
|
||||
String processDefinitionId = delegateTask.getProcessDefinitionId();
|
||||
//判断是否需要创建待办
|
||||
LambdaQueryWrapper<ProcessNode> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
|
||||
wrapper.eq(ProcessNode::getNodeName,name);
|
||||
wrapper.eq(ProcessNode::getIsView, YesOrNoEnum.YES.getValue());
|
||||
int count = processNodeService.count(wrapper);
|
||||
if (count == 0){
|
||||
return;
|
||||
}
|
||||
//新增待审批记录
|
||||
ProcessApprovalRecord approvalRecord = new ProcessApprovalRecord();
|
||||
approvalRecord.setTaskId(id);
|
||||
@@ -127,11 +144,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
approvalRecord.setCreateTime(date);
|
||||
approvalRecord.setNodeId(taskDefinitionKey);
|
||||
recordService.save(approvalRecord);
|
||||
log.info("id = " + delegateTask.getId());
|
||||
log.info("name = " + delegateTask.getName());
|
||||
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
|
||||
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
|
||||
log.info("taskEntity.getVariables() = " + delegateTask.getVariables());
|
||||
|
||||
}
|
||||
|
||||
private void taskAssigned(ActivitiEvent event) {
|
||||
@@ -150,6 +163,14 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
|
||||
TaskEntity delegateTask = (TaskEntity) activitiEntityEvent.getEntity();
|
||||
ExecutionEntity execution = delegateTask.getExecution();
|
||||
log.info("流程实例总数:" + execution.getVariable("nrOfInstances"));
|
||||
log.info("当前活动的流程实例总数:" + execution.getVariable("nrOfActiveInstances"));
|
||||
log.info("已经完成实例的数目:" + execution.getVariable("nrOfCompletedInstances"));
|
||||
log.info("id = " + delegateTask.getId());
|
||||
log.info("name = " + delegateTask.getName());
|
||||
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
|
||||
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
|
||||
log.info("taskEntity.getVariables() = " + delegateTask.getVariables());
|
||||
//流程审批信息转办
|
||||
ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
|
||||
String taskId = delegateTask.getId();
|
||||
@@ -158,8 +179,10 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
//更新审批信息为完成
|
||||
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
|
||||
wrapper.eq(ProcessApprovalRecord::getUserId,assignee);
|
||||
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
|
||||
if (approvalRecord == null){
|
||||
return;
|
||||
}
|
||||
Date createTime = approvalRecord.getCreateTime();
|
||||
DateTime date = DateUtil.date();
|
||||
// 如果date小于createTime+一秒,说明是在同一秒内完成的,需要加一秒,解决流程审批信息发起节点和下一节点创建时间一致,排序错乱问题
|
||||
@@ -190,14 +213,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
}
|
||||
|
||||
recordService.updateById(approvalRecord);
|
||||
log.info("流程实例总数:" + execution.getVariable("nrOfInstances"));
|
||||
log.info("当前活动的流程实例总数:" + execution.getVariable("nrOfActiveInstances"));
|
||||
log.info("已经完成实例的数目:" + execution.getVariable("nrOfCompletedInstances"));
|
||||
log.info("id = " + delegateTask.getId());
|
||||
log.info("name = " + delegateTask.getName());
|
||||
log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee());
|
||||
log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks());
|
||||
log.info("taskEntity.getVariables() = " + variables);
|
||||
|
||||
}
|
||||
|
||||
private void activityComplete(ActivitiEvent event) {
|
||||
|
||||
+2
@@ -20,5 +20,7 @@ public class ProcessDefinitionKey {
|
||||
public static final String PROJECT_ASSESS = "project-assessment";
|
||||
//项目合规评估流程
|
||||
public static final String PROJECT_NOT_MET = "project-not-met";
|
||||
//项目合规评估流程
|
||||
public static final String PROJECT_STANDARD = "standard-assessment";
|
||||
|
||||
}
|
||||
|
||||
+29
@@ -6,4 +6,33 @@ package com.jero.modules.activiti.process.projectstandard.common;
|
||||
*/
|
||||
public class ProcessProjectStandardCommon {
|
||||
|
||||
public static final String STANDARDS_ENGINEER = "standardsEngineer";
|
||||
public static final String MANAGER_LEADER_LIST = "managerLeaderList";
|
||||
public static final String MODULE_OWNER_LIST = "moduleOwnerList";
|
||||
public static final String MODULE_OWNER_LIST_SIZE = "moduleOwnerListSize";
|
||||
public static final String DESIGN_ENGINEER_LIST = "designEngineerList";
|
||||
public static final String DESIGN_ENGINEER_LIST_SIZE = "designEngineerListSize";
|
||||
|
||||
|
||||
//法规工程师发起
|
||||
public static final String FGGCSFQ = "fggcsfq";
|
||||
//部所主管级领导下发
|
||||
public static final String BSZGJLDXF = "bszgjldxf";
|
||||
//模块负责人分发
|
||||
public static final String MKFZRFF_1 = "mkfzrff_1";
|
||||
public static final String MKFZRFF_2 = "mkfzrff_2";
|
||||
public static final String MKFZRFF_3 = "mkfzrff_3";
|
||||
public static final String MKFZRFF_4 = "mkfzrff_4";
|
||||
public static final String MKFZRFF_5 = "mkfzrff_5";
|
||||
//设计工程师评估
|
||||
public static final String SJGCSPG_ = "sjgcspg_";
|
||||
//模块负责人审批
|
||||
public static final String MKFZRSP_ = "mkfzrsp_";
|
||||
//部所主管级领导审批
|
||||
public static final String BSZGJLDSP_ = "bszgjldsp_";
|
||||
//法规工程师审批
|
||||
public static final String FGGCSSP = "fggcssp";
|
||||
//设计工程师补充工作令编号
|
||||
public static final String SJGCSBCGZLBH = "sjgcsbcgzlbh";
|
||||
|
||||
}
|
||||
|
||||
+7
@@ -81,6 +81,13 @@ public class ProcessProjectStandard {
|
||||
@ApiModelProperty(value = "来源(1-国内、2-海外)")
|
||||
private String source;
|
||||
|
||||
/**
|
||||
* 标准id
|
||||
*/
|
||||
@TableField(value = "standard_id")
|
||||
@ApiModelProperty(value = "标准id")
|
||||
private String standardId;
|
||||
|
||||
/**
|
||||
* 标准编号
|
||||
*/
|
||||
|
||||
+56
@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -105,6 +107,14 @@ public class ProcessProjectStandardTerm {
|
||||
@ApiModelProperty(value="条款内容")
|
||||
private String termText;
|
||||
|
||||
/**
|
||||
* 实施日期
|
||||
*/
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "实施日期")
|
||||
private Date implementationDate;
|
||||
|
||||
/**
|
||||
* 拆分单id
|
||||
*/
|
||||
@@ -132,4 +142,50 @@ public class ProcessProjectStandardTerm {
|
||||
@TableField(value = "carbon_copy_personnels")
|
||||
@ApiModelProperty(value="抄送人员")
|
||||
private String carbonCopyPersonnels;
|
||||
|
||||
/**
|
||||
* 车型系列
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value="车型系列")
|
||||
private String modelSeries;
|
||||
/**
|
||||
* 车型系列
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value="车型系列")
|
||||
private String modelSeries_dict;
|
||||
|
||||
/**
|
||||
* 依据描述
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value="依据描述")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 佐证材料
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value="佐证材料")
|
||||
private String fileId;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value="模块负责人")
|
||||
private String moduleOwner;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value="责任单位联络人")
|
||||
private String responsibleUnitLeader;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value="")
|
||||
private String termUserId;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value="评估结果")
|
||||
private String assessResults;
|
||||
|
||||
|
||||
}
|
||||
+8
@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jero.common.aspect.annotation.Dict;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -105,6 +107,12 @@ public class ProcessProjectStandardTermUser {
|
||||
@ApiModelProperty(value="模块负责人id")
|
||||
private String moduleOwner;
|
||||
|
||||
/**评估结果(1-符合、2-不符合)*/
|
||||
@TableField(value = "assess_results")
|
||||
@Dict(dicCode = "standards_assess_results")
|
||||
@ApiModelProperty(value = "评估结果(1-符合、2-不符合)")
|
||||
private String assessResults;
|
||||
|
||||
/**
|
||||
* 不涉及原因
|
||||
*/
|
||||
|
||||
+10
@@ -2,6 +2,9 @@ package com.jero.modules.activiti.process.projectstandard.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -9,4 +12,11 @@ import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectSt
|
||||
*@date 2024-01-15 16:27
|
||||
*/
|
||||
public interface ProcessProjectStandardTermMapper extends BaseMapper<ProcessProjectStandardTerm> {
|
||||
List<ProcessProjectStandardTerm> getByResponsibleUnitLeader(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("hasModuleOwner") Boolean hasModuleOwner);
|
||||
|
||||
List<ProcessProjectStandardTerm> getByModuleOwner(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId, @Param("hasDesignEngineer") Boolean hasDesignEngineer);
|
||||
|
||||
List<ProcessProjectStandardTerm> getByDesignEngineer(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId);
|
||||
|
||||
List<ProcessProjectStandardTerm> getByStandardsEngineer(@Param("processId") String processId);
|
||||
}
|
||||
+94
-3
@@ -16,15 +16,106 @@
|
||||
<result column="term_number" jdbcType="VARCHAR" property="termNumber" />
|
||||
<result column="term_name" jdbcType="VARCHAR" property="termName" />
|
||||
<result column="term_text" jdbcType="LONGVARCHAR" property="termText" />
|
||||
<result column="implementation_date" jdbcType="VARCHAR" property="implementationDate" />
|
||||
<result column="split_info_id" jdbcType="VARCHAR" property="splitInfoId" />
|
||||
<result column="project_approval_flag" jdbcType="TINYINT" property="projectApprovalFlag" />
|
||||
<result column="design_engineer" jdbcType="VARCHAR" property="designEngineer" />
|
||||
<result column="carbon_copy_personnels" jdbcType="VARCHAR" property="carbonCopyPersonnels" />
|
||||
<result column="description" property="description"/>
|
||||
<result column="file_id" property="fileId"/>
|
||||
<result column="module_owner" property="moduleOwner"/>
|
||||
<result column="not_involved" property="notInvolved"/>
|
||||
<result column="responsible_unit_leader" property="responsibleUnitLeader"/>
|
||||
<result column="term_user_id" property="termUserId"/>
|
||||
<result column="assess_results" property="assessResults"/>
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, create_by, create_time, update_by, update_time, org_code, del_flag, process_id,
|
||||
standard_id, term_number, term_name, term_text, split_info_id, project_approval_flag,
|
||||
design_engineer, carbon_copy_personnels
|
||||
${alias}.id, ${alias}.create_by, ${alias}.create_time, ${alias}.update_by, ${alias}.update_time, ${alias}.org_code, ${alias}.del_flag, ${alias}.process_id, ${alias}.
|
||||
standard_id, ${alias}.term_number, ${alias}.term_name, ${alias}.term_text, ${alias}.implementation_date, ${alias}.split_info_id, ${alias}.project_approval_flag, ${alias}.
|
||||
design_engineer, ${alias}.carbon_copy_personnels
|
||||
</sql>
|
||||
|
||||
<select id="getByResponsibleUnitLeader" resultMap="BaseResultMap">
|
||||
select
|
||||
<include refid="Base_Column_List">
|
||||
<property name="alias" value="ppat"/>
|
||||
</include>
|
||||
,
|
||||
ppstu.id term_user_id,
|
||||
ppstu.not_involved,
|
||||
ppstu.assess_results,
|
||||
ppstu.description,
|
||||
ppstu.file_id,
|
||||
ppstu.design_engineer
|
||||
from process_project_standard_term ppst
|
||||
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
|
||||
where ppst.process_id = #{processId}
|
||||
and ppstu.responsible_unit_leader = #{originUserId}
|
||||
<if test="hasModuleOwner">
|
||||
and ppstu.module_owner is not null
|
||||
</if>
|
||||
and ppstu.id is not null
|
||||
</select>
|
||||
|
||||
<select id="getByModuleOwner" resultMap="BaseResultMap">
|
||||
select
|
||||
<include refid="Base_Column_List">
|
||||
<property name="alias" value="ppat"/>
|
||||
</include>
|
||||
,
|
||||
ppstu.id term_user_id,
|
||||
ppstu.not_involved,
|
||||
ppstu.assess_results,
|
||||
ppstu.description,
|
||||
ppstu.file_id,
|
||||
ppstu.design_engineer
|
||||
from process_project_standard_term ppst
|
||||
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
|
||||
where ppst.process_id = #{processId}
|
||||
and ppstu.module_owner = #{originUserId}
|
||||
and ppstu.parent_execution_id = #{executionParentId}
|
||||
<if test="hasDesignEngineer">
|
||||
and ppstu.design_engineer is not null
|
||||
</if>
|
||||
and ppstu.id is not null
|
||||
</select>
|
||||
|
||||
<select id="getByDesignEngineer" resultMap="BaseResultMap">
|
||||
select
|
||||
<include refid="Base_Column_List">
|
||||
<property name="alias" value="ppat"/>
|
||||
</include>
|
||||
,
|
||||
ppstu.id term_user_id,
|
||||
ppstu.not_involved,
|
||||
ppstu.assess_results,
|
||||
ppstu.description,
|
||||
ppstu.file_id,
|
||||
ppstu.design_engineer
|
||||
from process_project_standard_term ppst
|
||||
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
|
||||
where ppst.process_id = #{processId}
|
||||
and ppstu.design_engineer = #{originUserId}
|
||||
and ppstu.parent_execution_id = #{executionParentId}
|
||||
and ppstu.id is not null
|
||||
</select>
|
||||
|
||||
<select id="getByStandardsEngineer" resultMap="BaseResultMap">
|
||||
select
|
||||
<include refid="Base_Column_List">
|
||||
<property name="alias" value="ppat"/>
|
||||
</include>
|
||||
,
|
||||
ppstu.id term_user_id,
|
||||
ppstu.not_involved,
|
||||
ppstu.assess_results,
|
||||
ppstu.description,
|
||||
ppstu.file_id,
|
||||
ppstu.design_engineer
|
||||
from process_project_standard_term ppst
|
||||
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
|
||||
where ppst.process_id = #{processId}
|
||||
and ppstu.id is not null
|
||||
</select>
|
||||
</mapper>
|
||||
+271
-8
@@ -1,30 +1,62 @@
|
||||
package com.jero.modules.activiti.process.projectstandard.service;
|
||||
|
||||
import cn.hutool.core.collection.CollStreamUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.api.vo.SendMessageAPI;
|
||||
import com.jero.common.constant.CommonConstant;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.api.ISysBaseAPI;
|
||||
import com.jero.common.system.vo.DictModel;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.process.common.common.DraftCommon;
|
||||
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.ProcessDTO;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
|
||||
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
||||
import com.jero.modules.activiti.process.projectassess.common.ProcessProjectAssessCommon;
|
||||
import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessLink;
|
||||
import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessTerm;
|
||||
import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessTermUser;
|
||||
import com.jero.modules.activiti.process.projectstandard.common.ProcessProjectStandardCommon;
|
||||
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm;
|
||||
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermUser;
|
||||
import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardTermMapper;
|
||||
import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardTermUserMapper;
|
||||
import com.jero.modules.activiti.process.projectstandard.vo.ProcessProjectStandardVO;
|
||||
import com.jero.modules.activiti.process.projectstandard.vo.StandardSelectionVO;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
|
||||
import com.jero.modules.laws.common.service.ILawsCommonService;
|
||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
|
||||
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
|
||||
import com.jero.modules.laws.standard.entity.LawsOverseasStandard;
|
||||
import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
|
||||
import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
|
||||
import com.jero.modules.projectLibrary.vo.DecompositionOrderSourceVO;
|
||||
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
||||
import com.jero.modules.split.service.ISarFileSplitInfoService;
|
||||
import org.activiti.engine.TaskService;
|
||||
import org.activiti.engine.delegate.DelegateTask;
|
||||
import org.activiti.engine.task.Task;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandard;
|
||||
import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardMapper;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -33,26 +65,246 @@ import java.util.Map;
|
||||
*/
|
||||
@Service
|
||||
public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectStandardMapper, ProcessProjectStandard> {
|
||||
@Resource
|
||||
private ILawsCommonService lawsCommonService;
|
||||
|
||||
@Resource
|
||||
private LawsCommonMapper lawsCommonMapper;
|
||||
@Resource
|
||||
private ISarFileSplitInfoService sarFileSplitInfoService;
|
||||
@Resource
|
||||
private ProcessAllService processAllService;
|
||||
@Resource
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
@Resource
|
||||
private TaskService taskService;
|
||||
@Resource
|
||||
private IProcessHandleService processHandleService;
|
||||
@Resource
|
||||
private SendMessageAPI sendMessageAPI;
|
||||
//国内标准
|
||||
@Autowired
|
||||
private ILawsDomesticStandardService lawsDomesticStandardService;
|
||||
//海外标准
|
||||
@Autowired
|
||||
private ILawsOverseasStandardService lawsOverseasStandardService;
|
||||
@Resource
|
||||
private ProcessProjectStandardTermMapper termMapper;
|
||||
@Resource
|
||||
private ProcessProjectStandardTermService termService;
|
||||
@Resource
|
||||
private ProcessProjectStandardTermUserMapper termUserMapper;
|
||||
@Resource
|
||||
private ProcessProjectStandardTermUserService termUserService;
|
||||
|
||||
|
||||
|
||||
public ProcessInfoVO<ProcessProjectStandardVO> queryProcessInfoVO(String draftId, String processInstanceId, String taskId) {
|
||||
return null;
|
||||
if (StringUtils.isNotBlank(draftId) && StringUtils.isBlank(taskId)) {
|
||||
ProcessInfoVO draft = processHandleService.getDraftByDraftId(draftId);
|
||||
return draft;
|
||||
}
|
||||
ProcessInfoVO draft = processHandleService.getDraftByTaskId(taskId);
|
||||
if (draft != null){
|
||||
return draft;
|
||||
}
|
||||
ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(draftId, processInstanceId, taskId);
|
||||
String processId = processInfoVO.getBusinessId();
|
||||
ProcessDTO processDTO = processHandleService.getProcessDTO(taskId);
|
||||
ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord();
|
||||
String originUserId = processApprovalRecord.getOriginUserId();
|
||||
Task task = processDTO.getTask();
|
||||
|
||||
String executionParentId = task.getFormKey();
|
||||
String taskDefinitionKey = task.getTaskDefinitionKey();
|
||||
if (taskDefinitionKey.contains("_") && !taskDefinitionKey.contains("mkfzrff_")){
|
||||
taskDefinitionKey = taskDefinitionKey.substring(0,taskDefinitionKey.length()-1);
|
||||
}
|
||||
List<ProcessProjectStandardTermUser> processProjectStandardTermUserList = new ArrayList<>();
|
||||
List<ProcessProjectStandardTerm> processProjectStandardTermList = new ArrayList<>();
|
||||
//获取所有用户信息
|
||||
List<LoginUser> userList = sysBaseAPI.getAllUser();
|
||||
Map<String, String> userNameMap = new HashMap<>();
|
||||
for (LoginUser loginUser : userList) {
|
||||
userNameMap.put(loginUser.getId(), loginUser.calcNameWorkNo());
|
||||
}
|
||||
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
|
||||
String createUserId = processAll.getCreateUserId();
|
||||
//发起人
|
||||
String createUserName = userNameMap.get(createUserId);
|
||||
LambdaQueryWrapper<ProcessProjectStandardTermUser> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessProjectStandardTermUser::getProcessId, processId);
|
||||
List<ProcessProjectStandardTermUser> list = new ArrayList<>();
|
||||
switch (taskDefinitionKey) {
|
||||
//部所主管级领导下发
|
||||
case ProcessProjectStandardCommon.BSZGJLDXF:
|
||||
processProjectStandardTermList = termMapper.getByResponsibleUnitLeader(processId, originUserId, false);
|
||||
break;
|
||||
//部所主管级领导审批
|
||||
case ProcessProjectStandardCommon.BSZGJLDSP_:
|
||||
processProjectStandardTermList = termMapper.getByResponsibleUnitLeader(processId, originUserId, true);
|
||||
wrapper.eq(ProcessProjectStandardTermUser::getResponsibleUnitLeader, originUserId);
|
||||
break;
|
||||
//模块负责人分发
|
||||
case ProcessProjectStandardCommon.MKFZRFF_1:
|
||||
processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, false);
|
||||
break;
|
||||
//驳回后模块负责人分发
|
||||
case ProcessProjectStandardCommon.MKFZRFF_4:
|
||||
case ProcessProjectStandardCommon.MKFZRFF_5:
|
||||
processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, true);
|
||||
break;
|
||||
//模块负责人审批
|
||||
case ProcessProjectStandardCommon.MKFZRSP_:
|
||||
processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, false);
|
||||
wrapper.eq(ProcessProjectStandardTermUser::getModuleOwner, originUserId);
|
||||
wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, executionParentId);
|
||||
list = termUserService.list(wrapper);
|
||||
|
||||
break;
|
||||
//设计工程师评估
|
||||
case ProcessProjectStandardCommon.SJGCSPG_:
|
||||
processProjectStandardTermList = termMapper.getByDesignEngineer(processId, originUserId, executionParentId);
|
||||
wrapper.eq(ProcessProjectStandardTermUser::getDesignEngineer, originUserId);
|
||||
wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, executionParentId);
|
||||
list = termUserService.list(wrapper);
|
||||
|
||||
break;
|
||||
//法规工程师审批
|
||||
case ProcessProjectStandardCommon.FGGCSSP:
|
||||
processProjectStandardTermList = termMapper.getByStandardsEngineer(processId);
|
||||
|
||||
break;
|
||||
//设计工程师补充工作令编号
|
||||
case ProcessProjectStandardCommon.SJGCSBCGZLBH:
|
||||
processProjectStandardTermList = termMapper.getByStandardsEngineer(processId);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
}
|
||||
List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("assess_results");
|
||||
Map<String, String> dictevaluationFeedbackMap = CollStreamUtil.toMap(dictModels, DictModel::getValue, DictModel::getText);
|
||||
//给条款中保存关联的信息
|
||||
Map<String, List<ProcessProjectStandardTermUser>> termIdListMap = CollStreamUtil.groupByKey(list, ProcessProjectStandardTermUser::getTermId);
|
||||
for (ProcessProjectStandardTerm term : processProjectStandardTermList) {
|
||||
String termId = term.getId();
|
||||
List<ProcessProjectStandardTermUser> termUsers = termIdListMap.get(termId);
|
||||
if (CollectionUtil.isNotEmpty(termUsers)){
|
||||
|
||||
ProcessProjectStandardTermUser termUser = termUsers.get(0);
|
||||
term.setDescription(termUser.getDescription());
|
||||
term.setFileId(termUser.getFileId());
|
||||
}
|
||||
}
|
||||
//拼接分类法规标题
|
||||
List<DictModel> decompositionOrderSourceDictModels = sysBaseAPI.queryDictItemsByCode("decomposition_order_source");
|
||||
Map<String, String> decompositionOrderSourceMap = CollStreamUtil.toMap(decompositionOrderSourceDictModels, DictModel::getValue, DictModel::getText);
|
||||
Map<String, ProcessProjectStandardTerm> splitInfoIdMap = this.getSplitInfoIdMap(processId);
|
||||
List<ProcessProjectStandardTerm> allProjectAssesTermList = new ArrayList<>();
|
||||
List<String> usedSplitInfoId = new ArrayList<>();
|
||||
for (ProcessProjectStandardTerm term : processProjectStandardTermList) {
|
||||
String splitInfoId = term.getSplitInfoId();
|
||||
if (!usedSplitInfoId.contains(splitInfoId) && splitInfoIdMap.containsKey(splitInfoId)) {
|
||||
usedSplitInfoId.add(splitInfoId);
|
||||
ProcessProjectStandardTerm titleTerm = splitInfoIdMap.get(splitInfoId);
|
||||
ProcessProjectStandardTerm term1 = new ProcessProjectStandardTerm();
|
||||
term1.setTermName(titleTerm.getTermName());
|
||||
term1.setTermNumber(titleTerm.getTermNumber());
|
||||
term1.setTermText(decompositionOrderSourceMap.get(titleTerm.getTermText()));
|
||||
allProjectAssesTermList.add(term1);
|
||||
}
|
||||
allProjectAssesTermList.add(term);
|
||||
}
|
||||
ProcessProjectStandard processProjectStandard = this.getById(processId);
|
||||
|
||||
|
||||
ProcessProjectStandardVO processProjectStandardVO = new ProcessProjectStandardVO();
|
||||
processProjectStandardVO.setProcessProjectStandard(processProjectStandard);
|
||||
processProjectStandardVO.setProcessProjectStandardTermList(processProjectStandardTermList);
|
||||
//processProjectStandardVO.setProcessProjectStandardTermUserList();
|
||||
processInfoVO.setBusinessInfoDTO(processProjectStandardVO);
|
||||
return processInfoVO;
|
||||
}
|
||||
|
||||
public void saveToDraft(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
|
||||
// 流程信息
|
||||
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
|
||||
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.PROJECT_STANDARD.getValue()); // 流程类型
|
||||
//保存businessId
|
||||
String processInstanceId = basicProcessInfoDTO.getProcessInstanceId();
|
||||
if (StringUtils.isNotBlank(processInstanceId)){
|
||||
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
|
||||
String projectId = processAll.getProjectId();
|
||||
processInfoVO.setBusinessId(projectId);
|
||||
}
|
||||
|
||||
processHandleService.saveToDraft(processInfoVO);
|
||||
}
|
||||
|
||||
public void startProcess(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
|
||||
//start 先保存一份初始草稿
|
||||
processInfoVO.setSaveSource(DraftCommon.INITIAL_SOURCE);
|
||||
saveToDraft(processInfoVO);
|
||||
//end 保存初始草稿结束
|
||||
ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
|
||||
|
||||
ProcessProjectStandard processProjectStandard = businessInfoDTO.getProcessProjectStandard();
|
||||
this.save(processProjectStandard);
|
||||
String processId = processProjectStandard.getId();
|
||||
processInfoVO.setBusinessId(processId);
|
||||
String standardId = processProjectStandard.getStandardId();
|
||||
String source = processProjectStandard.getSource();
|
||||
Date implementationDate;
|
||||
if (CommonConstant.STANDARD_SOURCE_1.equals(source)) {
|
||||
LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getById(standardId);
|
||||
implementationDate = lawsDomesticStandard.getImplementationDate();
|
||||
}else {
|
||||
LawsOverseasStandard overseasStandard = lawsOverseasStandardService.getById(standardId);
|
||||
implementationDate = overseasStandard.getImplementationDate();
|
||||
}
|
||||
//保存条款
|
||||
List<ProcessProjectStandardTerm> processProjectStandardTermList = businessInfoDTO.getProcessProjectStandardTermList();
|
||||
for (ProcessProjectStandardTerm term : processProjectStandardTermList) {
|
||||
term.setProcessId(processId);
|
||||
term.setImplementationDate(implementationDate);
|
||||
}
|
||||
termService.saveBatch(processProjectStandardTermList);
|
||||
// 保存关联关系
|
||||
List<String> allResponsibleUnitLeaderList = new ArrayList<>();
|
||||
List<ProcessProjectStandardTermUser> termUserList = new ArrayList<>();
|
||||
for (ProcessProjectStandardTerm term : processProjectStandardTermList) {
|
||||
String termId = term.getId();
|
||||
String responsibleUnitLeaders = term.getResponsibleUnitLeader();
|
||||
if (StringUtils.isBlank(responsibleUnitLeaders)) {
|
||||
throw new JeroBootException(ResultCommon.PARAMETER_NOT_RECOGNIZED);
|
||||
}
|
||||
List<String> responsibleUnitLeaderList = Arrays.asList(responsibleUnitLeaders.split(","));
|
||||
List<String> distinctResponsibleUnitLeader = responsibleUnitLeaderList.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.distinct().collect(Collectors.toList());
|
||||
for (String responsibleUnitLeaderId : distinctResponsibleUnitLeader) {
|
||||
ProcessProjectStandardTermUser termUser = new ProcessProjectStandardTermUser();
|
||||
termUser.setProcessId(processId);
|
||||
termUser.setTermId(termId);
|
||||
termUser.setResponsibleUnitLeader(responsibleUnitLeaderId);
|
||||
termUserList.add(termUser);
|
||||
}
|
||||
allResponsibleUnitLeaderList.addAll(distinctResponsibleUnitLeader);
|
||||
}
|
||||
termUserService.saveBatch(termUserList);
|
||||
|
||||
List<String> distinctAllResponsibleUnitLeaderList = allResponsibleUnitLeaderList.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.distinct().collect(Collectors.toList());
|
||||
String distinctAllResponsibleUnitLeaderListJoin = CollectionUtil.join(distinctAllResponsibleUnitLeaderList, ",");
|
||||
//启动
|
||||
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
|
||||
basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.PROJECT_STANDARD)); // 流程定义id
|
||||
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.PROJECT_STANDARD.getValue()); // 流程类型
|
||||
Map<String, Object> userInfoMap = new HashMap<>();
|
||||
userInfoMap.put(ProcessProjectStandardCommon.STANDARDS_ENGINEER, CurrentUserUtil.getId());
|
||||
userInfoMap.put(ProcessProjectStandardCommon.MANAGER_LEADER_LIST, distinctAllResponsibleUnitLeaderListJoin);
|
||||
processInfoVO.setUserInfoMap(userInfoMap);
|
||||
processHandleService.startProcess(processInfoVO);
|
||||
}
|
||||
|
||||
public void approveTask(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO, boolean b) {
|
||||
@@ -103,4 +355,15 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
|
||||
public void autoComplete(DelegateTask delegateTask) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分类用的标准编号,标准名称列表
|
||||
*/
|
||||
public Map<String, ProcessProjectStandardTerm> getSplitInfoIdMap(String processId) {
|
||||
LambdaQueryWrapper<ProcessProjectStandardTerm> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(ProcessProjectStandardTerm::getProcessId,processId);
|
||||
List<ProcessProjectStandardTerm> list = termService.list(wrapper);
|
||||
Map<String, ProcessProjectStandardTerm> stringProcessProjectStandardTermMap = CollStreamUtil.toIdentityMap(list, ProcessProjectStandardTerm::getSplitInfoId);
|
||||
return stringProcessProjectStandardTermMap;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user