update 法规评估合规流程

This commit is contained in:
lijiarao
2024-01-18 13:57:22 +08:00
parent 2902499eac
commit df51d8a69f
10 changed files with 717 additions and 575 deletions
@@ -9,10 +9,12 @@ import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessTerm;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandard;
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.service.ProcessProjectStandardService;
import javax.servlet.http.HttpServletRequest;
import com.jero.modules.activiti.process.projectstandard.service.ProcessProjectStandardTermUserService;
import com.jero.modules.activiti.process.projectstandard.vo.ProcessProjectStandardVO;
import com.jero.modules.activiti.process.projectstandard.vo.StandardSelectionVO;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
@@ -45,7 +47,7 @@ import java.util.List;
@Slf4j
@Api(tags = "法规合规评估流程表")
@RestController
@RequestMapping("processProjectStandard")
@RequestMapping("process/projectStandard")
public class ProcessProjectStandardController extends JeroController<ProcessProjectStandard, ProcessProjectStandardService> {
/**
* 服务对象
@@ -54,6 +56,8 @@ public class ProcessProjectStandardController extends JeroController<ProcessProj
private ProcessProjectStandardService processProjectStandardService;
@Resource
private IDocumentSplitService documentSplitService;
@Resource
private ProcessProjectStandardTermUserService termUserService;
@DictPoint
@@ -139,5 +143,18 @@ public class ProcessProjectStandardController extends JeroController<ProcessProj
return Result.OK(allList);
}
/**
* 项目合规评估流程-查询条款列表
* @return
*/
@AutoLog(value = "项目合规评估流程-查询评估列表")
@ApiOperation(value = "查询评估列表")
@GetMapping("/getTermUserList")
public Result<IPage<ProcessProjectStandardTermUser>> getTermUserList(ProcessProjectStandardTermUser processProjectStandardTermUser, Integer pageNo, Integer pageSize,
HttpServletRequest req) {
IPage<ProcessProjectStandardTermUser> page = termUserService.queryPage(processProjectStandardTermUser, pageNo, pageSize, req);
return Result.OK(page);
}
}
@@ -95,6 +95,13 @@ public class ProcessProjectStandard {
@ApiModelProperty(value = "标准编号")
private String standardNumber;
/**
* 标准名称
*/
@TableField(value = "standard_name")
@ApiModelProperty(value = "标准名称")
private String standardName;
/**
* 分解单来源
*/
@@ -8,6 +8,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@@ -161,7 +163,7 @@ public class ProcessProjectStandardTerm {
*/
@TableField(exist = false)
@ApiModelProperty(value="车型系列")
private String modelSeries_dict;
private String modelSeries_dictText;
/**
* 依据描述
@@ -194,4 +196,8 @@ public class ProcessProjectStandardTerm {
@ApiModelProperty(value="评估结果")
private String assessResults;
@TableField(exist = false)
@ApiModelProperty(value="评估结果")
private String assessResults_dictText;
}
@@ -109,8 +109,8 @@ public class ProcessProjectStandardTermUser {
/**评估结果(1-符合、2-不符合)*/
@TableField(value = "assess_results")
@Dict(dicCode = "standards_assess_results")
@ApiModelProperty(value = "评估结果(1-符合、2-不符合)")
@Dict(dicCode = "assess_results")
@ApiModelProperty(value = "评估结果(1-符合、2-不符合、3-不涉及)")
private String assessResults;
/**
@@ -138,6 +138,7 @@ public class ProcessProjectStandardTermUser {
* 车型系列
*/
@TableField(value = "model_series")
@Dict(dicCode = "model_series")
@ApiModelProperty(value="车型系列")
private String modelSeries;
/**
@@ -145,7 +146,7 @@ public class ProcessProjectStandardTermUser {
*/
@TableField(exist = false)
@ApiModelProperty(value="车型系列")
private String modelSeries_dict;
private String modelSeries_dictText;
/**
* 依据描述
@@ -13,11 +13,12 @@
<result column="del_flag" jdbcType="INTEGER" property="delFlag" />
<result column="source" jdbcType="VARCHAR" property="source" />
<result column="standard_number" jdbcType="VARCHAR" property="standardNumber" />
<result column="standard_name" jdbcType="VARCHAR" property="standardName" />
<result column="decomposition_order_Source" jdbcType="VARCHAR" property="decompositionOrderSource" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, create_by, create_time, update_by, update_time, org_code, del_flag, `source`,
standard_number, decomposition_order_Source
standard_number, standard_name, decomposition_order_Source
</sql>
</mapper>
@@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.dto.message.SendMessageDTO;
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;
@@ -24,7 +26,6 @@ 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.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.ProcessProjectStandardTermApproval;
@@ -35,6 +36,7 @@ import com.jero.modules.activiti.process.projectstandard.vo.ProcessProjectStanda
import com.jero.modules.activiti.process.projectstandard.vo.StandardSelectionVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.util.ThreadLocalUtil;
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
@@ -43,6 +45,8 @@ 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.common.AssessCommon;
import com.jero.modules.projectLibrary.entity.LawsSpecialProjectLibrary;
import com.jero.modules.projectLibrary.service.ILawsSpecialProjectLibraryService;
import com.jero.modules.projectLibrary.vo.DecompositionOrderSourceVO;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
@@ -56,6 +60,7 @@ 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 org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
@@ -67,6 +72,7 @@ import java.util.stream.Collectors;
*@date 2024-01-15 16:17
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectStandardMapper, ProcessProjectStandard> {
@Resource
@@ -99,6 +105,8 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
private ProcessProjectStandardTermUserService termUserService;
@Resource
private ProcessProjectStandardTermApprovalService termApprovalService;
@Resource
private ILawsSpecialProjectLibraryService lawsSpecialProjectLibraryService;
@@ -132,9 +140,7 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
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<>();
@@ -155,23 +161,16 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
//设计工程师评估
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.MKZRRFF_:
processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, false);
wrapper.eq(ProcessProjectStandardTermUser::getModuleOwner, originUserId);
wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, executionParentId);
list = termUserService.list(wrapper);
break;
//部所主管级领导审批
case ProcessProjectStandardCommon.BSZGJLDSP_:
processProjectStandardTermList = termMapper.getByResponsibleUnitLeader(processId, originUserId, true);
wrapper.eq(ProcessProjectStandardTermUser::getResponsibleUnitLeader, originUserId);
list = termUserService.list(wrapper);
break;
//法规工程师审批
case ProcessProjectStandardCommon.FGGCSSP:
@@ -187,38 +186,41 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
default:
}
List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("assess_results");
Map<String, String> dictevaluationFeedbackMap = CollStreamUtil.toMap(dictModels, DictModel::getValue, DictModel::getText);
Map<String, String> assessResultsMap = 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());
if (termIdListMap.containsKey(termId)) {
List<ProcessProjectStandardTermUser> termUsers = termIdListMap.get(termId);
String assessResults = AssessCommon.NOT_INVOLVED;
String projectApprovalFlag = YesOrNoEnum.NO.getValue();
List<String> moduleOwnerList = new ArrayList<>();
for (ProcessProjectStandardTermUser termUser : termUsers) {
moduleOwnerList.add(termUser.getModuleOwner());
String assessResults1 = termUser.getAssessResults();
if (AssessCommon.NOT_COMPLIANT.equals(assessResults1)) {
assessResults = AssessCommon.NOT_COMPLIANT;
projectApprovalFlag = YesOrNoEnum.NO.getValue();
break;
}
if (AssessCommon.ACCORD_WITH.equals(assessResults1)) {
assessResults = AssessCommon.ACCORD_WITH;
projectApprovalFlag = YesOrNoEnum.YES.getValue();
}
}
List<String> userNameList = new ArrayList<>();
moduleOwnerList.stream()
.filter(Objects::nonNull)
.distinct().forEach(i ->{
userNameList.add(userNameMap.get(i)) ;
});
term.setModuleOwner(String.join(",", userNameList));
term.setProjectApprovalFlag(projectApprovalFlag);
term.setAssessResults(assessResults);
term.setAssessResults_dictText(assessResultsMap.get(assessResults));
}
}
//拼接分类法规标题
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);
@@ -253,6 +255,7 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
ProcessProjectStandard processProjectStandard = businessInfoDTO.getProcessProjectStandard();
processProjectStandard.setId(null);
this.save(processProjectStandard);
String processId = processProjectStandard.getId();
processInfoVO.setBusinessId(processId);
@@ -381,7 +384,80 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
}
//法规工程师审批
private void fggcsspApprove(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO, ProcessDTO processDTO, boolean pass) {
String businessId = processInfoVO.getBusinessId();
ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord();
String originUserId = processApprovalRecord.getOriginUserId();
Task task = processDTO.getTask();
String executionId = task.getExecutionId();
//查询流程信息
ProcessAll process = processAllService.getByProcessInstanceId(processDTO.getProcessInstanceId());
ProcessProjectStandard processProjectStandard = this.getById(businessId);
//查询不符合的评估
LambdaQueryWrapper<ProcessProjectStandardTermUser> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessProjectStandardTermUser::getProcessId, businessId);
wrapper.eq(ProcessProjectStandardTermUser::getAssessResults, AssessCommon.NOT_COMPLIANT);
List<ProcessProjectStandardTermUser> notCompliantList = termUserService.list(wrapper);
Map<String, List<ProcessProjectStandardTermUser>> termIdMap = CollStreamUtil.groupByKey(notCompliantList, ProcessProjectStandardTermUser::getTermId);
//查询表单
ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
List<ProcessProjectStandardTerm> termList = businessInfoDTO.getProcessProjectStandardTermList();
List<String> carbonCopyPersonnelList = new ArrayList<>();
List<ProcessProjectStandardTerm> updateTermList = new ArrayList<>();
Date date = new Date();
for (ProcessProjectStandardTerm term : termList) {
ProcessProjectStandardTerm term1 = new ProcessProjectStandardTerm();
String termId = term.getId();
String assessResults = term.getAssessResults();
String designEngineer = term.getDesignEngineer();
term1.setId(termId);
term1.setAssessResults(assessResults);
term1.setDescription(designEngineer);
updateTermList.add(term1);
carbonCopyPersonnelList.addAll(Arrays.asList(term.getCarbonCopyPersonnels().split(",")));
LawsSpecialProjectLibrary projectLibrary = new LawsSpecialProjectLibrary();
projectLibrary.setSource(processProjectStandard.getSource());
String standardNumber = processProjectStandard.getStandardNumber();
projectLibrary.setStandardNumber(standardNumber);
String standardName = processProjectStandard.getStandardName();
projectLibrary.setStandardName(standardName);
projectLibrary.setStandardId(processProjectStandard.getStandardId());
String termName = term.getTermName();
String termNumber = term.getTermNumber();
if (!Objects.equals(termName,standardName) && !Objects.equals(termNumber,standardNumber)){
projectLibrary.setTermNumber(termNumber);
projectLibrary.setTermName(termName);
}
projectLibrary.setStandardState(processProjectStandard.getDecompositionOrderSource());
projectLibrary.setModelSeries(term.getModelSeries());
projectLibrary.setResult(term.getAssessResults());
projectLibrary.setMaterial(term.getFileId());
projectLibrary.setValuationTime(date);
projectLibrary.setProjectApproval(term.getProjectApprovalFlag());
projectLibrary.setProcessNum(process.getPrcNum());
//存入不符合描述
if (termIdMap.containsKey(termId)) {
List<ProcessProjectStandardTermUser> termUserList = termIdMap.get(termId);
String description = termUserList.stream().map(ProcessProjectStandardTermUser::getDescription).collect(Collectors.joining(","));
projectLibrary.setDescription(description);
}
//推送数据到法规项目库
lawsSpecialProjectLibraryService.save(projectLibrary);
}
//更新数据
termService.updateBatchById(updateTermList);
//发送消息
String carbonCopyPersonnels = carbonCopyPersonnelList.stream().distinct().collect(Collectors.joining(","));
SendMessageDTO sendMessageDTO = new SendMessageDTO();
sendMessageDTO.setTemplateCode(MessageTemplateCodeCommon.PROJECT_STANDARD_COMPLETE);
sendMessageDTO.setToUserId(carbonCopyPersonnels);
Map<String, String> sendMap = new HashMap<>();
sendMap.put("prcName", process.getPrcName());
sendMap.put("termNumber", process.getPrcName());
sendMap.put("termName", process.getPrcName());
sendMessageDTO.setMap(sendMap);
sendMessageAPI.sendMessage(sendMessageDTO);
}
public void submit(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
@@ -1,8 +1,18 @@
package com.jero.modules.activiti.process.projectstandard.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermUser;
import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardTermUserMapper;
@@ -13,5 +23,26 @@ import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectSt
*/
@Service
public class ProcessProjectStandardTermUserService extends ServiceImpl<ProcessProjectStandardTermUserMapper, ProcessProjectStandardTermUser> {
@Resource
private ISysBaseAPI sysBaseAPI;
public IPage<ProcessProjectStandardTermUser> queryPage(ProcessProjectStandardTermUser processProjectStandardTermUser, Integer pageNo, Integer pageSize,
HttpServletRequest req){
QueryWrapper<ProcessProjectStandardTermUser> queryWrapper = QueryGenerator.initQueryWrapper(processProjectStandardTermUser, req.getParameterMap());
Page<ProcessProjectStandardTermUser> page = new Page<>(pageNo, pageSize);
Page<ProcessProjectStandardTermUser> pageList = page(page, queryWrapper);
//获取所有用户信息
List<LoginUser> userList = sysBaseAPI.getAllUser();
Map<String, String> userNameMap = new HashMap<>();
for (LoginUser loginUser : userList) {
userNameMap.put(loginUser.getId(), loginUser.calcNameWorkNo());
}
for (ProcessProjectStandardTermUser record : pageList.getRecords()) {
String moduleOwner = record.getModuleOwner();
record.setModuleOwner(userNameMap.get(moduleOwner));
String designEngineer = record.getDesignEngineer();
record.setDesignEngineer(userNameMap.get(designEngineer));
}
return pageList;
}
}
@@ -21,5 +21,6 @@ public class MessageTemplateCodeCommon {
public static final String STANDARD_CHANGE_REFERENCE = "standard_change_reference"; // 【法规变更】引用标准变更
public static final String STANDARD_CONSULTATION = "standard_consultation"; // 【征求意见结果提醒】
public static final String PROJECT_ASSESS_COMPLETE = "project_assess_complete"; // 【项目合规评估完成提醒】
public static final String PROJECT_STANDARD_COMPLETE = "project_standard_complete"; // 【法规合规评估完成提醒】
public static final String URGING = "urging"; // 催办
}