Merge remote-tracking branch 'origin/thirdStage' into thirdApiStage

This commit is contained in:
梁琦涛
2024-01-22 09:54:53 +08:00
82 changed files with 2197 additions and 904 deletions
@@ -350,4 +350,5 @@ public interface ISysBaseAPI extends CommonAPI {
*/ */
List<DictModel> loadDictItemByKeyword(String dictCode, String keyword, Integer pageSize); List<DictModel> loadDictItemByKeyword(String dictCode, String keyword, Integer pageSize);
String translateByDictMap(Map<String, String> dictMap, String keys);
} }
@@ -6,7 +6,6 @@ package com.jero.common.api.vo;
* @Description: 返回常量 * @Description: 返回常量
*/ */
public class ResultCommon { public class ResultCommon {
private ResultCommon() {} private ResultCommon() {}
/**操作成功*/ /**操作成功*/
@@ -133,6 +132,16 @@ public class ResultCommon {
*/ */
public static final String EN_STANDARD_NUMBER_CONFLICT = "en.standard.number.conflict"; public static final String EN_STANDARD_NUMBER_CONFLICT = "en.standard.number.conflict";
/**
* 无效的企标计划
*/
public static final String INVALID_ESP = "invalid.esp";
/**
* 不可以编辑废止或封存状态的企标
*/
public static final String CAN_NOT_EDIT_ABOLISH_OR_ARCHIVE_ES = "can.not.edit.abolish.or.archive.es";
// ---------项目合规评估流程--------- // ---------项目合规评估流程---------
/** /**
* 模块负责人不能为空 * 模块负责人不能为空
@@ -56,7 +56,7 @@ public class CsrfFilter implements Filter {
String url = req.getRequestURL().toString(); String url = req.getRequestURL().toString();
// 获取来源 // 获取来源
String referurl = req.getHeader("Referer"); String referurl = req.getHeader("Referer");
if(isWhiteReq(referurl) || Objects.equals(upgrade,"websocket") || url.contains("view")){ if(isWhiteReq(referurl) || Objects.equals(upgrade,"websocket") || url.contains("view") || url.contains("doc.html")){
chain.doFilter(request, response); chain.doFilter(request, response);
}else{ }else{
String log = ""; String log = "";
@@ -33,6 +33,7 @@ import com.jero.modules.system.mapper.*;
import com.jero.modules.system.service.*; import com.jero.modules.system.service.*;
import com.jero.modules.system.util.SecurityUtil; import com.jero.modules.system.util.SecurityUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.sequence.KeepCommand;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -1166,6 +1167,21 @@ public class SysBaseApiImpl implements ISysBaseAPI {
return sysDictService.loadDict(dictCode, keyword, pageSize); return sysDictService.loadDict(dictCode, keyword, pageSize);
} }
@Override
public String translateByDictMap(Map<String, String> dictMap, String keys) {
if (keys == null){
return null;
}
String[] keyList = keys.split(",");
List<String> resultList = new ArrayList<>();
for (String key : keyList) {
if (dictMap.containsKey(key)){
resultList.add(dictMap.get(key));
}
}
return String.join(",",resultList);
}
@Override @Override
public Map<String, List<DictModel>> translateManyDict(String dictCodes, String keys) { public Map<String, List<DictModel>> translateManyDict(String dictCodes, String keys) {
List<String> dictCodeList = Arrays.asList(dictCodes.split(",")); List<String> dictCodeList = Arrays.asList(dictCodes.split(","));
@@ -83,11 +83,11 @@ public class ProcessApprovalRecord {
private String mesg; private String mesg;
/** /**
* 完成注记(0未完成,1完成) * 完成注记(1进行中,2已完成,3未处理,4已撤回)
*/ */
@Dict(dicCode = "prc_node_status") @Dict(dicCode = "prc_node_status")
@TableField(value = "finish_flag") @TableField(value = "finish_flag")
@ApiModelProperty(value = "完成注记(1进行中,2已完成)") @ApiModelProperty(value = "完成注记(1进行中,2已完成,3未处理,4已撤回)")
private Integer finishFlag; private Integer finishFlag;
/** /**
@@ -98,7 +98,7 @@ public class ProcessApprovalRecord {
private String projectId; private String projectId;
/** /**
* 审批意见(0同意,1不同意) * 审批意见(1通过,2驳回,3未处理)
*/ */
@Dict(dicCode = "commit_flag") @Dict(dicCode = "commit_flag")
@TableField(value = "commit_flag") @TableField(value = "commit_flag")
@@ -186,4 +186,11 @@ public class ProcessApprovalRecord {
*/ */
@ApiModelProperty(value = "节点id") @ApiModelProperty(value = "节点id")
private String nodeId; private String nodeId;
/**
* 完成注记 搜索用
*/
@TableField(exist = false)
@ApiModelProperty(value = "完成注记 搜索用")
private String finishFlagSearch;
} }
@@ -16,6 +16,7 @@ public enum FinishFlagEnum {
INCOMPLETE("未完成", 1), INCOMPLETE("未完成", 1),
COMPLETE("完成", 2), COMPLETE("完成", 2),
SUSPEND("暂停", 3), SUSPEND("暂停", 3),
WITHDRAWN("已撤回", 4)
; ;
private String name; private String name;
@@ -29,7 +29,7 @@ public enum ProcessTypeEnum {
ES_ENABLE("已封存企标启用流程",15, "com.jero.modules.activiti.process.esEnable.service.impl.ProcessEsEnableServiceImpl"), ES_ENABLE("已封存企标启用流程",15, "com.jero.modules.activiti.process.esEnable.service.impl.ProcessEsEnableServiceImpl"),
ES_INSPECT_PLAN("企标稽查计划", 16, "com.jero.modules.activiti.process.esinspectplan.service.impl.EsInspectPlanFlow"), ES_INSPECT_PLAN("企标稽查计划", 16, "com.jero.modules.activiti.process.esinspectplan.service.impl.EsInspectPlanFlow"),
ES_INSPECT("企标稽查流程", 17, "com.jero.modules.activiti.process.esinspect.service.impl.EsInspectFlow"), ES_INSPECT("企标稽查流程", 17, "com.jero.modules.activiti.process.esinspect.service.impl.EsInspectFlow"),
ES_INSPECT_DELAY_APPLY("稽查延期申请流程", 18, "com.jero.modules.activiti.process.esinspectdelayapply.service.impl.EsInspectDelayApplyFlowServiceImpl"), ES_INSPECT_DELAY_APPLY("稽查延期申请流程", 18, "com.jero.modules.activiti.process.esinspectdelayapply.service.impl.EsInspectDelayApplyFlow"),
ES_INSPECT_REPORT("企标稽查整改", 19, "com.jero.modules.activiti.process.esinspectrectify.service.impl.EsInspectRectifyFlow"), ES_INSPECT_REPORT("企标稽查整改", 19, "com.jero.modules.activiti.process.esinspectrectify.service.impl.EsInspectRectifyFlow"),
PERMISSION_APPLY_PROCESS("权限申请流程", 20, "com.jero.modules.activiti.process.espermissionapply.service.impl.EsPermissionApplyFlow"), PERMISSION_APPLY_PROCESS("权限申请流程", 20, "com.jero.modules.activiti.process.espermissionapply.service.impl.EsPermissionApplyFlow"),
STANDARD_DECLARE("标准宣贯流程", 21, "com.jero.modules.activiti.process.esdeclare.service.impl.EsDeclareFlow"), STANDARD_DECLARE("标准宣贯流程", 21, "com.jero.modules.activiti.process.esdeclare.service.impl.EsDeclareFlow"),
@@ -138,10 +138,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
approvalRecord.setUserId(assignee); approvalRecord.setUserId(assignee);
approvalRecord.setOriginUserId(assignee); approvalRecord.setOriginUserId(assignee);
approvalRecord.setFinishFlag(FinishFlagEnum.INCOMPLETE.getValue()); approvalRecord.setFinishFlag(FinishFlagEnum.INCOMPLETE.getValue());
// 加一秒,解决流程审批信息发起节点和下一节点创建时间一致,排序错乱问题 approvalRecord.setCreateTime(createTime);
Date date = new Date();
date.setTime(createTime.getTime() + 1000);
approvalRecord.setCreateTime(date);
approvalRecord.setNodeId(taskDefinitionKey); approvalRecord.setNodeId(taskDefinitionKey);
recordService.save(approvalRecord); recordService.save(approvalRecord);
@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
@@ -15,6 +16,7 @@ import com.jero.modules.activiti.process.common.common.DraftCommon;
import com.jero.modules.activiti.process.common.entity.CommonVO; import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.entity.StandTypeVO; import com.jero.modules.activiti.process.common.entity.StandTypeVO;
import com.jero.modules.activiti.process.common.enums.StandardStateEnum;
import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO;
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO;
@@ -25,6 +27,8 @@ import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.sys.utils.UserUtils; import com.jero.modules.sys.utils.UserUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RepositoryService; import org.activiti.engine.RepositoryService;
@@ -76,6 +80,9 @@ public class ActFlowCommonService {
@Resource @Resource
private IProcessHandleService processHandleService; private IProcessHandleService processHandleService;
@Resource
private ILawsEnterpriseStandardService esService;
/** /**
* 启动流程实例 * 启动流程实例
*/ */
@@ -474,4 +481,15 @@ public class ActFlowCommonService {
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
return processInfoVO; return processInfoVO;
} }
public void checkStandardState(String standardId) {
LawsEnterpriseStandard es = esService.getById(standardId);
if (es != null) {
String standardState = es.getStandardState();
if (StandardStateEnum.ABOLISH.getStateValue().equals(standardState) ||
StandardStateEnum.ARCHIVE.getStateValue().equals(standardState)) {
throw new JeroBootException(ResultCommon.CAN_NOT_EDIT_ABOLISH_OR_ARCHIVE_ES);
}
}
}
} }
@@ -15,11 +15,9 @@ 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.esAnnualInit.entity.ProcessEsAnnualInit; import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit;
import com.jero.modules.activiti.process.esAnnualInit.entity.vo.AnnualInitDataVO; import com.jero.modules.activiti.process.esAnnualInit.entity.vo.AnnualInitDataVO;
import com.jero.modules.activiti.process.esAnnualInit.entity.vo.AnnualInitFlowUserVO;
import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualInitService; import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualInitService;
import com.jero.modules.activiti.process.esAnnualInit.mapper.ProcessEsAnnualInitMapper; import com.jero.modules.activiti.process.esAnnualInit.mapper.ProcessEsAnnualInitMapper;
import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType;
import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType;
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
@@ -516,33 +514,42 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
} }
private void cleanData(List<ProcessEsAnnualInit> list) { private void cleanData(List<ProcessEsAnnualInit> list) {
List<String> originStandardNoList = list.stream().map(ProcessEsAnnualInit::getOriginEnStandardNo).collect(Collectors.toList()); // List<String> originStandardNoList = list.stream().map(ProcessEsAnnualInit::getOriginEnStandardNo).collect(Collectors.toList());
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList); // esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList);
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper); // List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper);
// 转换成key为企标编号的map // // 转换成key为企标编号的map
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item)); // Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
list.forEach(item -> { list.forEach(item -> {
// 如果是制定则去除掉所有的原企标名称 原企标编号 // 如果是制定则去除掉所有的原企标名称 原企标编号
if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) { if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) {
item.setOriginEnStandardName(null); item.setOriginEnStandardName(null);
item.setOriginEnStandardNo(null); item.setOriginEnStandardNo(null);
String decadeCode = item.getDecadeCode();
if (StrUtil.isBlank(decadeCode)) {
// 获取当前年份
Calendar date = Calendar.getInstance();
String curYearNumber = String.valueOf(date.get(Calendar.YEAR));
item.setDecadeCode(curYearNumber);
}
// 设置变更状态 制定是新增 修订是变更 // 设置变更状态 制定是新增 修订是变更
item.setChangeStatus("1"); item.setChangeStatus(ESPChangeType.ADD.getValue());
} else { } else {
item.setChangeStatus("2"); item.setChangeStatus(ESPChangeType.CHANGE.getValue());
item.setOriginEnStandardNo(esMap.get(item.getOriginEnStandardNo()).getStandardName()); }
item.setEnStandardCode(esMap.get(item.getOriginEnStandardNo()).getStandardCode()); // 如果标准等级分类是0级或3级,则需要将授权部门置空
item.setEnNameCode(esMap.get(item.getOriginEnStandardNo()).getNameCode()); if (item.getEnStandardClassification().equals("1") || item.getEnStandardClassification().equals("4")) {
item.setStandardCategoryCode(esMap.get(item.getOriginEnStandardNo()).getCategoryCode()); item.setAuthDept(null);
} }
}); });
} }
private void transToDictValue(List<ProcessEsAnnualInit> list, List<SysDictItemCore> listDict) { private void transToDictValue(List<ProcessEsAnnualInit> list, List<SysDictItemCore> listDict) {
list.forEach(item -> { list.forEach(item -> {
item.setProjectType(excelUtils.translateDictValue("esp_revision_type", item.getProjectType(), listDict));
item.setEnStandardCode(excelUtils.translateDictValue("enterprise_standard_code", item.getEnStandardCode(), listDict));
item.setAuthDept(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getAuthDept(), listDict)); item.setAuthDept(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getAuthDept(), listDict));
item.setCooperationUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getCooperationUnit(), listDict)); item.setCooperationUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getCooperationUnit(), listDict));
item.setMainDraftingUser(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUser(), listDict)); item.setMainDraftingUser(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUser(), listDict));
@@ -552,10 +559,8 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
item.setEnStandardSystem(excelUtils.translateDictValue("node_name", "id", "laws_tree_node", item.getEnStandardSystem(), listDict)); item.setEnStandardSystem(excelUtils.translateDictValue("node_name", "id", "laws_tree_node", item.getEnStandardSystem(), listDict));
item.setContactUser(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getContactUser(), listDict)); item.setContactUser(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getContactUser(), listDict));
item.setStandardType(excelUtils.translateDictValue("esp_standard_type", item.getStandardType(), listDict)); item.setStandardType(excelUtils.translateDictValue("esp_standard_type", item.getStandardType(), listDict));
item.setEnStandardCode(excelUtils.translateDictValue("enterprise_standard_code", item.getEnStandardCode(), listDict));
item.setEnStandardClassification(excelUtils.translateDictValue("standard_grade_classify", item.getEnStandardClassification(), listDict)); item.setEnStandardClassification(excelUtils.translateDictValue("standard_grade_classify", item.getEnStandardClassification(), listDict));
item.setComponentName(excelUtils.translateDictValue("part_name", item.getComponentName(), listDict)); item.setComponentName(excelUtils.translateDictValue("part_name", item.getComponentName(), listDict));
item.setProjectType(excelUtils.translateDictValue("esp_revision_type", item.getProjectType(), listDict));
item.setDraftPlannedCompleteDate(importUtil.convertDate(item.getDraftPlannedCompleteDateString())); item.setDraftPlannedCompleteDate(importUtil.convertDate(item.getDraftPlannedCompleteDateString()));
item.setSolicitationDraftPlanCompleteDate(importUtil.convertDate(item.getSolicitationDraftPlanCompleteDateString())); item.setSolicitationDraftPlanCompleteDate(importUtil.convertDate(item.getSolicitationDraftPlanCompleteDateString()));
item.setPlanApprovalDate(importUtil.convertDate(item.getPlanApprovalDateString())); item.setPlanApprovalDate(importUtil.convertDate(item.getPlanApprovalDateString()));
@@ -563,6 +568,9 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
} }
private List<String> validationList(List<ProcessEsAnnualInit> list, List<SysDictItemCore> listDict) { private List<String> validationList(List<ProcessEsAnnualInit> list, List<SysDictItemCore> listDict) {
// 找到各标准等级的授权部门
Map<String, List<String>> authDeptMap = excelUtils.getAllLevelAuthDeptMap();
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(); List<LawsEnterpriseStandard> esList = enterpriseStandardService.list();
List<String> errorMsgs = new ArrayList<>(); List<String> errorMsgs = new ArrayList<>();
@@ -587,7 +595,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
String contactUser = plan.getContactUser(); String contactUser = plan.getContactUser();
String standardSystem = plan.getEnStandardSystem(); String standardSystem = plan.getEnStandardSystem();
String standardType = plan.getStandardType(); String standardType = plan.getStandardType();
String enStandardClassification = plan.getEnStandardClassification(); String standardClassification = plan.getEnStandardClassification();
String enStandardCode = plan.getEnStandardCode(); String enStandardCode = plan.getEnStandardCode();
String partName = plan.getComponentName(); String partName = plan.getComponentName();
String draftPlannedCompleteDateString = plan.getDraftPlannedCompleteDateString(); String draftPlannedCompleteDateString = plan.getDraftPlannedCompleteDateString();
@@ -600,8 +608,9 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
// 检查制修订类型 编号 名称 // 检查制修订类型 编号 名称
errMsg.append(validProjectType(plan, listDict, esList)); errMsg.append(validProjectType(plan, listDict, esList));
// 检查标准等级分类和授权部门
errMsg.append(excelUtils.validAuthDept(authDept, listDict, standardClassification, authDeptMap));
// 检查所有数据字典校验的字段 // 检查所有数据字典校验的字段
errMsg.append(excelUtils.validAuthDept(authDept, listDict));
errMsg.append(excelUtils.validCooperateUnit(cooperationUnit, listDict)); errMsg.append(excelUtils.validCooperateUnit(cooperationUnit, listDict));
errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict)); errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict));
errMsg.append(excelUtils.validMainDraftingUnit(mainDraftingUnit, listDict)); errMsg.append(excelUtils.validMainDraftingUnit(mainDraftingUnit, listDict));
@@ -611,11 +620,10 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
errMsg.append(excelUtils.validContactUser(contactUser, listDict)); errMsg.append(excelUtils.validContactUser(contactUser, listDict));
errMsg.append(excelUtils.validStandardType(standardType, listDict)); errMsg.append(excelUtils.validStandardType(standardType, listDict));
errMsg.append(excelUtils.validStandardCode(enStandardCode, listDict)); errMsg.append(excelUtils.validStandardCode(enStandardCode, listDict));
errMsg.append(excelUtils.validStandardClassification(enStandardClassification, listDict));
errMsg.append(excelUtils.validPartName(partName, listDict)); errMsg.append(excelUtils.validPartName(partName, listDict));
errMsg.append(excelUtils.validSingleDate(draftPlannedCompleteDateString, "草稿计划完成日期")); errMsg.append(excelUtils.validSingleDateNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期"));
errMsg.append(excelUtils.validSingleDate(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期")); errMsg.append(excelUtils.validSingleDateNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期"));
errMsg.append(excelUtils.validSingleDate(planApprovalDateString, "计划报批日期")); errMsg.append(excelUtils.validSingleDateNotBeforeToday(planApprovalDateString, "计划报批日期"));
// 如果数据有问题,则将提示信息添加到 errorMsgs 中 // 如果数据有问题,则将提示信息添加到 errorMsgs 中
if (errMsg.length() > 0) { if (errMsg.length() > 0) {
errorMsgs.add(errMsgHeader.append(errMsg).toString()); errorMsgs.add(errMsgHeader.append(errMsg).toString());
@@ -16,6 +16,7 @@ import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualRe
import com.jero.modules.activiti.process.esAnnualReport.entity.vo.AnnualReportDataVO; import com.jero.modules.activiti.process.esAnnualReport.entity.vo.AnnualReportDataVO;
import com.jero.modules.activiti.process.esAnnualReport.mapper.ProcessEsAnnualReportMapper; import com.jero.modules.activiti.process.esAnnualReport.mapper.ProcessEsAnnualReportMapper;
import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService; import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType;
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
@@ -393,27 +394,34 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
} }
private void cleanData(List<ProcessEsAnnualReport> list) { private void cleanData(List<ProcessEsAnnualReport> list) {
List<String> originStandardNoList = list.stream().map(ProcessEsAnnualReport::getOriginEnStandardNo).collect(Collectors.toList()); // List<String> originStandardNoList = list.stream().map(ProcessEsAnnualReport::getOriginEnStandardNo).collect(Collectors.toList());
//
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList); // esWrapper.in(LawsEnterpriseStandard::getStandardNumber, originStandardNoList);
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper); // List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(esWrapper);
// 转换成key为企标编号的map // // 转换成key为企标编号的map
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item)); // Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
list.forEach(item -> { list.forEach(item -> {
// 如果是制定则去除掉所有的原企标名称 原企标编号 // 如果是制定则去除掉所有的原企标名称 原企标编号
if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) { if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) {
item.setOriginEnStandardName(null); item.setOriginEnStandardName(null);
item.setOriginEnStandardNo(null); item.setOriginEnStandardNo(null);
String decadeCode = item.getDecadeCode();
if (StrUtil.isBlank(decadeCode)) {
// 获取当前年份
Calendar date = Calendar.getInstance();
String curYearNumber = String.valueOf(date.get(Calendar.YEAR));
item.setDecadeCode(curYearNumber);
}
// 设置变更状态 制定是新增 修订是变更 // 设置变更状态 制定是新增 修订是变更
item.setChangeStatus("1"); item.setChangeStatus(ESPChangeType.ADD.getValue());
} else { } else {
item.setChangeStatus("2"); item.setChangeStatus(ESPChangeType.CHANGE.getValue());
item.setOriginEnStandardName(esMap.get(item.getOriginEnStandardNo()).getStandardName()); }
item.setEnStandardCode(esMap.get(item.getOriginEnStandardNo()).getStandardCode()); // 如果标准等级分类是0级或3级,则需要将授权部门置空
item.setEnNameCode(esMap.get(item.getOriginEnStandardNo()).getNameCode()); if (item.getEnStandardClassification().equals("1") || item.getEnStandardClassification().equals("4")) {
item.setStandardCategoryCode(esMap.get(item.getOriginEnStandardNo()).getCategoryCode()); item.setAuthDept(null);
} }
}); });
} }
@@ -428,8 +436,10 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
item.setMainDraftingUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getMainDraftingUnit(), listDict)); item.setMainDraftingUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getMainDraftingUnit(), listDict));
item.setMainDraftingUnitResponsiblePerson(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUnitResponsiblePerson(), listDict)); item.setMainDraftingUnitResponsiblePerson(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUnitResponsiblePerson(), listDict));
item.setStandardPromoter(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getStandardPromoter(), listDict)); item.setStandardPromoter(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getStandardPromoter(), listDict));
item.setWorkGroup(excelUtils.translateDictValue("name", "id", "laws_working_group", item.getWorkGroup(), listDict));
item.setEnStandardSystem(excelUtils.translateDictValue("node_name", "id", "laws_tree_node", item.getEnStandardSystem(), listDict)); item.setEnStandardSystem(excelUtils.translateDictValue("node_name", "id", "laws_tree_node", item.getEnStandardSystem(), listDict));
item.setWorkGroup(excelUtils.translateDictValue("name", "id", "laws_working_group", item.getWorkGroup(), listDict));
item.setStandardType(excelUtils.translateDictValue("esp_standard_type", item.getStandardType(), listDict));
item.setEnStandardClassification(excelUtils.translateDictValue("standard_grade_classify", item.getEnStandardClassification(), listDict));
item.setDraftPlannedCompleteDate(importUtil.convertDate(item.getDraftPlannedCompleteDateString())); item.setDraftPlannedCompleteDate(importUtil.convertDate(item.getDraftPlannedCompleteDateString()));
item.setSolicitationDraftPlanCompleteDate(importUtil.convertDate(item.getSolicitationDraftPlanCompleteDateString())); item.setSolicitationDraftPlanCompleteDate(importUtil.convertDate(item.getSolicitationDraftPlanCompleteDateString()));
item.setPlanApprovalDate(importUtil.convertDate(item.getPlanApprovalDateString())); item.setPlanApprovalDate(importUtil.convertDate(item.getPlanApprovalDateString()));
@@ -437,6 +447,9 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
} }
private List<String> validationList(List<ProcessEsAnnualReport> list, List<SysDictItemCore> listDict) { private List<String> validationList(List<ProcessEsAnnualReport> list, List<SysDictItemCore> listDict) {
// 找到各标准等级的授权部门
Map<String, List<String>> authDeptMap = excelUtils.getAllLevelAuthDeptMap();
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(); List<LawsEnterpriseStandard> esList = enterpriseStandardService.list();
List<String> errorMsgs = new ArrayList<>(); List<String> errorMsgs = new ArrayList<>();
@@ -472,8 +485,9 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
// 检查制修订类型 编号 名称 // 检查制修订类型 编号 名称
errMsg.append(validProjectType(plan, listDict, esList)); errMsg.append(validProjectType(plan, listDict, esList));
// 检查标准等级分类和授权部门
errMsg.append(excelUtils.validAuthDept(authDept, listDict, standardClassification, authDeptMap));
// 检查所有数据字典校验的字段 // 检查所有数据字典校验的字段
errMsg.append(excelUtils.validAuthDept(authDept, listDict));
errMsg.append(excelUtils.validCooperateUnit(cooperationUnit, listDict)); errMsg.append(excelUtils.validCooperateUnit(cooperationUnit, listDict));
errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict)); errMsg.append(excelUtils.validMainDraftingUser(mainDraftingUser, listDict));
errMsg.append(excelUtils.validMainDraftingUnit(mainDraftingUnit, listDict)); errMsg.append(excelUtils.validMainDraftingUnit(mainDraftingUnit, listDict));
@@ -482,10 +496,9 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
errMsg.append(excelUtils.validWorkGroup(workGroup, listDict)); errMsg.append(excelUtils.validWorkGroup(workGroup, listDict));
errMsg.append(excelUtils.validStandardSystem(standardSystem, listDict)); errMsg.append(excelUtils.validStandardSystem(standardSystem, listDict));
errMsg.append(excelUtils.validStandardType(standardType, listDict)); errMsg.append(excelUtils.validStandardType(standardType, listDict));
errMsg.append(excelUtils.validStandardClassification(standardClassification, listDict)); errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(draftPlannedCompleteDateString, "草稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateMustInput(draftPlannedCompleteDateString, "稿计划完成日期")); errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期"));
errMsg.append(excelUtils.validSingleDateMustInput(solicitationDraftPlanCompleteDateString, "征求意见稿计划完成日期")); errMsg.append(excelUtils.validSingleDateMustInputNotBeforeToday(planApprovalDateString, "计划报批日期"));
errMsg.append(excelUtils.validSingleDateMustInput(planApprovalDateString, "计划报批日期"));
// 如果数据有问题,则将提示信息添加到 errorMsgs 中 // 如果数据有问题,则将提示信息添加到 errorMsgs 中
if (errMsg.length() > 0) { if (errMsg.length() > 0) {
errorMsgs.add(errMsgHeader.append(errMsg).toString()); errorMsgs.add(errMsgHeader.append(errMsg).toString());
@@ -11,6 +11,7 @@ import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
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.enums.StandardStateEnum;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive;
import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO;
@@ -24,6 +25,8 @@ import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.service.ProcessNodeLinkService; import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.sys.utils.UserUtils; import com.jero.modules.sys.utils.UserUtils;
import com.jero.modules.system.service.ISysUserDepartService; import com.jero.modules.system.service.ISysUserDepartService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -163,7 +166,11 @@ public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMappe
} }
public void startRunTask(ESChangeDataVO changeData) { public void startRunTask(ESChangeDataVO changeData) {
// do nothing now // 如果标准当前状态是废止或封存,不能发起变更流程
ProcessEsChange data = changeData.getData();
if (data != null) {
actFlowCommonService.checkStandardState(data.getStandardId());
}
} }
@Override @Override
@@ -502,6 +502,14 @@ public class ProcessEsInitChange implements Serializable {
@ApiModelProperty(value = "配合单位") @ApiModelProperty(value = "配合单位")
private String cooperationUnit; private String cooperationUnit;
/**
* 隶属工作组
*/
@Dict(dictTable = "laws_working_group", dicCode = "id", dicText = "name")
@ApiModelProperty(value = "隶属工作组")
private String workGroup;
@TableField(exist = false) @TableField(exist = false)
private static final long serialVersionUID = 1781238971297838971L; private static final long serialVersionUID = 1781238971297838971L;
} }
@@ -4,7 +4,6 @@ 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.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon; import com.jero.common.api.vo.ResultCommon;
import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
@@ -13,9 +12,9 @@ import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants;
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.esInitChange.entity.EsInitChangeConstant;
import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPApplicationCategoryEnum; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPApplicationCategoryEnum;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectStatus;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType;
import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeDataVO; import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeDataVO;
import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService; import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService;
@@ -29,7 +28,9 @@ import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessNodeLinkService; import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.common.service.ILawsCommonService; import com.jero.modules.laws.common.service.ILawsCommonService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider; import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
@@ -42,7 +43,6 @@ import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task; import org.activiti.engine.task.Task;
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.web.bind.annotation.RequestBody;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
@@ -90,6 +90,9 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
@Resource @Resource
private ILawsCommonService commonService; private ILawsCommonService commonService;
@Resource
private EnterpriseStandardPlanService espService;
@Override @Override
public void startProcess(InitChangeDataVO initChangeData) { public void startProcess(InitChangeDataVO initChangeData) {
// 发起的时候校验标准编号是是否重复 // 发起的时候校验标准编号是是否重复
@@ -331,8 +334,22 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
List<ProcessEsInitChange> esInitChangeList = initChangeData.getDataList(); List<ProcessEsInitChange> esInitChangeList = initChangeData.getDataList();
// 校验企标编号是否冲突 // 校验企标编号是否冲突
ProcessEsInitChange initChange = esInitChangeList.get(0); ProcessEsInitChange initChange = esInitChangeList.get(0);
// 如果是变更流程,则需要撤回制修订流程
if (ESPApplicationCategoryEnum.CHANGE.getValue().equals(initChange.getApplicationCategory())) { if (ESPApplicationCategoryEnum.CHANGE.getValue().equals(initChange.getApplicationCategory())) {
// 如果是变更流程,则需要判断计划是否有效
Set<String> espIdSet = esInitChangeList.stream().map(ProcessEsInitChange::getEspId).collect(Collectors.toSet());
List<EnterpriseStandardPlan> esplist = espService.list(new LambdaQueryWrapper<EnterpriseStandardPlan>().in(EnterpriseStandardPlan::getId, espIdSet));
if (esplist == null || esplist.size() != espIdSet.size()) {
throw new JeroBootException(ResultCommon.INVALID_ESP);
}
// 如果是责任部门变更,需要判断计划是否已经逾期
if (ESPProjectType.RESPONSIBLE_DEPT_CHANGE.getValue().equals(initChange.getProjectType())) {
for (EnterpriseStandardPlan esp : esplist) {
if (esp.getProjectStatus().equals(ESPProjectStatus.OVERDUE.getValue())) {
throw new JeroBootException(ResultCommon.INVALID_ESP);
}
}
}
// 如果是变更流程,则需要撤回制修订流程
List<String> espIdList = initChangeData.getDataList().stream().map(ProcessEsInitChange::getEspId).collect(Collectors.toList()); List<String> espIdList = initChangeData.getDataList().stream().map(ProcessEsInitChange::getEspId).collect(Collectors.toList());
LambdaQueryWrapper<ProcessEsRevision> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ProcessEsRevision> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(ProcessEsRevision::getEspId, espIdList); lambdaQueryWrapper.in(ProcessEsRevision::getEspId, espIdList);
@@ -10,6 +10,7 @@ import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.entity.CommonVO; import com.jero.modules.activiti.process.common.entity.CommonVO;
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.esChange.entity.ProcessEsChange;
import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck;
import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO; import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO;
import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService; import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService;
@@ -34,15 +35,15 @@ import java.util.*;
import static com.jero.modules.activiti.process.esRecheck.entity.RecheckTaskNameConstant.*; import static com.jero.modules.activiti.process.esRecheck.entity.RecheckTaskNameConstant.*;
/** /**
* @author ThinkBook * @author ThinkBook
* @description 针对表【process_es_recheck(企业标准)】的数据库操作Service实现 * @description 针对表【process_es_recheck(企业标准)】的数据库操作Service实现
* @createDate 2023-10-29 21:00:54 * @createDate 2023-10-29 21:00:54
*/ */
@Slf4j @Slf4j
@Transactional(rollbackFor = JeroBootException.class) @Transactional(rollbackFor = JeroBootException.class)
@Service @Service
public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMapper, ProcessEsRecheck> public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMapper, ProcessEsRecheck>
implements ProcessEsRecheckService{ implements ProcessEsRecheckService {
@Resource @Resource
private ActFlowCommonService actFlowCommonService; private ActFlowCommonService actFlowCommonService;
@@ -179,7 +180,11 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
} }
public void startRunTask(ESRecheckDataVO recheckData) { public void startRunTask(ESRecheckDataVO recheckData) {
// do nothing now // 如果标准当前状态是废止或封存,不能发起变更流程
ProcessEsRecheck data = recheckData.getData();
if (data != null) {
actFlowCommonService.checkStandardState(data.getStandardId());
}
} }
@Override @Override
@@ -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.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
@@ -159,7 +160,12 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
} }
public void startRunTask(ESRevisionDataVO revisionData) { public void startRunTask(ESRevisionDataVO revisionData) {
// do nothing now // 检查企标计划是否已被删除
String espId = revisionData.getData().getEspId();
EnterpriseStandardPlan esp = espService.getById(espId);
if (esp == null) {
throw new JeroBootException(ResultCommon.INVALID_ESP);
}
} }
@Override @Override
@@ -1,5 +1,8 @@
package com.jero.modules.activiti.process.esdeclare.service.impl; package com.jero.modules.activiti.process.esdeclare.service.impl;
import cn.hutool.core.date.DatePattern;
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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -11,6 +14,7 @@ import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
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.ProcessDraftService; import com.jero.modules.activiti.process.common.service.ProcessDraftService;
@@ -111,6 +115,9 @@ public class EsDeclareFlowServiceImpl implements IEsDeclareFlowService {
// 更新流程总表信息 // 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.STANDARD_DECLARE.getValue())); processAll.setPrcType(Integer.valueOf(ProcessType.STANDARD_DECLARE.getValue()));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setCreateUserId(loginUser.getId()); processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll, processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>() new LambdaUpdateWrapper<ProcessAll>()
@@ -193,7 +200,8 @@ public class EsDeclareFlowServiceImpl implements IEsDeclareFlowService {
EsDeclareFlowVO esDeclareFlowVO = new EsDeclareFlowVO(); EsDeclareFlowVO esDeclareFlowVO = new EsDeclareFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>() ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId), false); .eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord(); ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿 // 是否存在草稿
@@ -1,5 +1,8 @@
package com.jero.modules.activiti.process.esinspect.service.impl; package com.jero.modules.activiti.process.esinspect.service.impl;
import cn.hutool.core.date.DatePattern;
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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -9,6 +12,7 @@ import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
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.ProcessDraftService; import com.jero.modules.activiti.process.common.service.ProcessDraftService;
@@ -124,6 +128,9 @@ public class EsInspectFlowServiceImpl implements IEsInspectFlowService {
// 更新流程总表信息 // 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT.getValue())); processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT.getValue()));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setCreateUserId(loginUser.getId()); processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll, processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>() new LambdaUpdateWrapper<ProcessAll>()
@@ -281,7 +288,8 @@ public class EsInspectFlowServiceImpl implements IEsInspectFlowService {
EsInspectFlowVO esInspectFlowVO = new EsInspectFlowVO(); EsInspectFlowVO esInspectFlowVO = new EsInspectFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>() ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId), false); .eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord(); ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿 // 是否存在草稿
@@ -8,6 +8,7 @@ import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
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.ProcessDraftService; import com.jero.modules.activiti.process.common.service.ProcessDraftService;
@@ -105,6 +106,8 @@ public class EsInspectDelayApplyFlowServiceImpl implements IEsInspectDelayApplyF
// 更新流程总表信息 // 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_DELAY_APPLY.getValue())); processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_DELAY_APPLY.getValue()));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
processAll.setCreateUserId(loginUser.getId()); processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll, processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>() new LambdaUpdateWrapper<ProcessAll>()
@@ -193,7 +196,8 @@ public class EsInspectDelayApplyFlowServiceImpl implements IEsInspectDelayApplyF
EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO = new EsInspectDelayApplyFlowVO(); EsInspectDelayApplyFlowVO esInspectDelayApplyFlowVO = new EsInspectDelayApplyFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>() ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId), false); .eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord(); ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿 // 是否存在草稿
@@ -1,5 +1,8 @@
package com.jero.modules.activiti.process.esinspectplan.service.impl; package com.jero.modules.activiti.process.esinspectplan.service.impl;
import cn.hutool.core.date.DatePattern;
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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -12,6 +15,7 @@ import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNode; import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.entity.ProcessNodeLink; import com.jero.modules.activiti.entity.ProcessNodeLink;
import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
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.ProcessDraftService; import com.jero.modules.activiti.process.common.service.ProcessDraftService;
@@ -122,6 +126,9 @@ public class EsInspectPlanFlowServiceImpl implements IEsInspectPlanFlowService {
// 更新流程总表信息 // 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_PLAN.getValue())); processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_PLAN.getValue()));
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
processAll.setCreateUserId(loginUser.getId()); processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll, processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>() new LambdaUpdateWrapper<ProcessAll>()
@@ -237,7 +244,8 @@ public class EsInspectPlanFlowServiceImpl implements IEsInspectPlanFlowService {
EsInspectPlanFlowVO esInspectPlanFlowVO = new EsInspectPlanFlowVO(); EsInspectPlanFlowVO esInspectPlanFlowVO = new EsInspectPlanFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>() ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId), false); .eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord(); ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿 // 是否存在草稿
@@ -386,7 +386,7 @@ public class ProcessEsInspectPlanServiceImpl extends ServiceImpl<ProcessEsInspec
errorList.add("标准化组对接人不能为空!"); errorList.add("标准化组对接人不能为空!");
} }
// 填充创建人 // 填充创建人
processEsInspectPlan.setCreateBy(loginUser.getId()); processEsInspectPlan.setCreateBy(loginUser.getUsername());
processEsInspectPlan.setCreateByDictText(loginUser.calcNameWorkNo()); processEsInspectPlan.setCreateByDictText(loginUser.calcNameWorkNo());
return errorList; return errorList;
} }
@@ -1,5 +1,8 @@
package com.jero.modules.activiti.process.esinspectrectify.service.impl; package com.jero.modules.activiti.process.esinspectrectify.service.impl;
import cn.hutool.core.date.DatePattern;
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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -11,6 +14,7 @@ import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNodeLink; import com.jero.modules.activiti.entity.ProcessNodeLink;
import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
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.ProcessDraftService; import com.jero.modules.activiti.process.common.service.ProcessDraftService;
@@ -98,6 +102,9 @@ public class EsInspectRectifyFlowServiceImpl implements IEsInspectRectifyFlowSer
// 更新流程总表信息 // 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_REPORT.getValue())); processAll.setPrcType(Integer.valueOf(ProcessType.ES_INSPECT_REPORT.getValue()));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setCreateUserId(loginUser.getId()); processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll, processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>() new LambdaUpdateWrapper<ProcessAll>()
@@ -153,7 +160,8 @@ public class EsInspectRectifyFlowServiceImpl implements IEsInspectRectifyFlowSer
EsInspectRectifyFlowVO esInspectReportFlowVO = new EsInspectRectifyFlowVO(); EsInspectRectifyFlowVO esInspectReportFlowVO = new EsInspectRectifyFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>() ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId), false); .eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord(); ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿 // 是否存在草稿
@@ -1,5 +1,8 @@
package com.jero.modules.activiti.process.espermissionapply.service.impl; package com.jero.modules.activiti.process.espermissionapply.service.impl;
import cn.hutool.core.date.DatePattern;
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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -9,6 +12,7 @@ import com.jero.common.util.SnowflakeUtils;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
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.ProcessDraftService; import com.jero.modules.activiti.process.common.service.ProcessDraftService;
@@ -92,6 +96,9 @@ public class EsPermissionApplyFlowServiceImpl implements EsPermissionApplyFlowSe
// 更新流程总表信息 // 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.PERMISSION_APPLY_PROCESS.getValue())); processAll.setPrcType(Integer.valueOf(ProcessType.PERMISSION_APPLY_PROCESS.getValue()));
processAll.setPrcStatus(ProcessStatusEnum.INCOMPLETE.getValue());
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setCreateUserId(loginUser.getId()); processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll, processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>() new LambdaUpdateWrapper<ProcessAll>()
@@ -162,7 +169,8 @@ public class EsPermissionApplyFlowServiceImpl implements EsPermissionApplyFlowSe
EsPermissionApplyFlowVO esPermissionApplyFlowVO = new EsPermissionApplyFlowVO(); EsPermissionApplyFlowVO esPermissionApplyFlowVO = new EsPermissionApplyFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>() ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId), false); .eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord(); ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿 // 是否存在草稿
@@ -39,11 +39,14 @@ import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.laws.standard.service.ILawsOverseasStandardService; import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
import com.jero.modules.laws.standardization.entity.LawsStandardization; import com.jero.modules.laws.standardization.entity.LawsStandardization;
import com.jero.modules.laws.standardization.service.ILawsStandardizationService; import com.jero.modules.laws.standardization.service.ILawsStandardizationService;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.service.ISysDepartService;
import com.jero.modules.system.service.ISysDictService; import com.jero.modules.system.service.ISysDictService;
import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.tag.entity.LawsTag; import com.jero.modules.tag.entity.LawsTag;
import com.jero.modules.tag.enums.TableNameEnum; import com.jero.modules.tag.enums.TableNameEnum;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -85,6 +88,9 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
@Resource @Resource
private ISysUserService sysUserService; private ISysUserService sysUserService;
@Resource
private ISysDepartService sysDepartService;
@Resource @Resource
private ISysDictService dictService; private ISysDictService dictService;
@@ -168,6 +174,11 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.FB_ENTRY_CHANGE.getValue()); // 流程类型 basicProcessInfoDTO.setProcessType(ProcessTypeEnum.FB_ENTRY_CHANGE.getValue()); // 流程类型
// 重复性校验 // 重复性校验
duplicateCheck(processInfoVO.getBusinessId()); duplicateCheck(processInfoVO.getBusinessId());
// 删除自己的草稿
String draftId = processInfoVO.getDraftId();
if (StringUtils.isNotBlank(draftId)) {
processDraftService.removeById(draftId);
}
processHandleService.startProcess(processInfoVO); processHandleService.startProcess(processInfoVO);
// 保存草稿用于强制撤销 // 保存草稿用于强制撤销
@@ -463,7 +474,18 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
Object read = JSONPath.read(businessJson, "$.dynamic_type"); Object read = JSONPath.read(businessJson, "$.dynamic_type");
String text = dictService.queryDictText("POWER_TYPE_DOMESTIC", read.toString()); String text = dictService.queryDictText("POWER_TYPE_DOMESTIC", read.toString());
jsonObject.put("dynamic_type_dictText", text); jsonObject.put("dynamic_type_dictText", text);
}
// 国内标准类别
if (businessJson.contains("standard_class")){
Object read = JSONPath.read(businessJson, "$.standard_class");
String text = dictService.queryDictText("standard_type", read.toString());
jsonObject.put("standard_class_dictText", text);
}
// 国内适用车型
if (businessJson.contains("applicable_vehicle")){
Object read = JSONPath.read(businessJson, "$.applicable_vehicle");
String text = dictService.queryDictText("APPLICATIONS_DOMESTIC", read.toString());
jsonObject.put("applicable_vehicle_dictText", text);
} }
}else { }else {
processFbEntryChange.setSource_dictText("海外"); processFbEntryChange.setSource_dictText("海外");
@@ -473,6 +495,18 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
String text = dictService.queryDictText("POWER_TYPE_DOMESTIC_OVERSEAS", read.toString()); String text = dictService.queryDictText("POWER_TYPE_DOMESTIC_OVERSEAS", read.toString());
jsonObject.put("dynamic_type_dictText", text); jsonObject.put("dynamic_type_dictText", text);
} }
// 海外标准类别
if (businessJson.contains("standard_class")){
Object read = JSONPath.read(businessJson, "$.standard_class");
String text = dictService.queryDictText("standard_type_overseas", read.toString());
jsonObject.put("standard_class_dictText", text);
}
// 海外适用车型
if (businessJson.contains("applicable_vehicle")){
Object read = JSONPath.read(businessJson, "$.applicable_vehicle");
String text = dictService.queryDictText("APPLICATIONS_OVERSEAS", read.toString());
jsonObject.put("applicable_vehicle_dictText", text);
}
} }
if ("1".equals(processFbEntryChange.getOperateType())){ if ("1".equals(processFbEntryChange.getOperateType())){
processFbEntryChange.setOperateType_dictText("标准法规入库"); processFbEntryChange.setOperateType_dictText("标准法规入库");
@@ -491,6 +525,43 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
LawsStandardization lawsStandardization = lawsStandardizationService.getById(String.valueOf(read)); LawsStandardization lawsStandardization = lawsStandardizationService.getById(String.valueOf(read));
jsonObject.put("bidding_committee_dictText", !Objects.isNull(lawsStandardization) ? lawsStandardization.getName() : ""); jsonObject.put("bidding_committee_dictText", !Objects.isNull(lawsStandardization) ? lawsStandardization.getName() : "");
} }
// 标准状态
if (businessJson.contains("standard_status")){
Object read = JSONPath.read(businessJson, "$.standard_status");
String text = dictService.queryDictText("standard_status", read.toString());
jsonObject.put("standard_status_dictText", text);
}
// 标准性质
if (businessJson.contains("standard_property")){
Object read = JSONPath.read(businessJson, "$.standard_property");
String text = dictService.queryDictText("standard_property", read.toString());
jsonObject.put("standard_property_dictText", text);
}
// 标准体系
if (businessJson.contains("standard_system")){
Object read = JSONPath.read(businessJson, "$.standard_system");
String text = dictService.queryDictText("standard_system", read.toString());
jsonObject.put("standard_system_dictText", text);
}
// 责任部门
if (businessJson.contains("responsible_department")){
Object read = JSONPath.read(businessJson, "$.responsible_department");
List<SysDepart> sysDepartList = sysDepartService.listByIds(Arrays.asList(String.valueOf(read.toString()).split(",")));
jsonObject.put("responsible_department_dictText", CollectionUtils.isNotEmpty(sysDepartList) ?
sysDepartList.stream().map(SysDepart::getDepartName).collect(Collectors.joining(",")) : "");
}
// 企业参与情况
if (businessJson.contains("enterprise_participation")){
Object read = JSONPath.read(businessJson, "$.enterprise_participation");
String text = dictService.queryDictText("yn", read.toString());
jsonObject.put("enterprise_participation_dictText", text);
}
// 适用认证
if (businessJson.contains("applicable_certification")){
Object read = JSONPath.read(businessJson, "$.applicable_certification");
String text = dictService.queryDictText("applicable_certification", read.toString());
jsonObject.put("applicable_certification_dictText", text);
}
processFbEntryChange.setBusinessJson(jsonObject.toJSONString()); processFbEntryChange.setBusinessJson(jsonObject.toJSONString());
} }
@Override @Override
@@ -501,4 +572,10 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
new LambdaQueryWrapper<ProcessFbEntryChange>() new LambdaQueryWrapper<ProcessFbEntryChange>()
.eq(ProcessFbEntryChange::getId, processAll.getProjectId())); .eq(ProcessFbEntryChange::getId, processAll.getProjectId()));
} }
public static void main(String[] args) {
for (int i = 0; i < 103; i++) {
System.out.println(i);
}
}
} }
@@ -15,6 +15,7 @@ import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.entity.ProcessNodeLink; import com.jero.modules.activiti.entity.ProcessNodeLink;
import com.jero.modules.activiti.enums.CommitFlagEnum; import com.jero.modules.activiti.enums.CommitFlagEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.fb.common.ConsultationNodeSort; import com.jero.modules.activiti.process.fb.common.ConsultationNodeSort;
import com.jero.modules.activiti.process.fb.common.ConsultationTaskKey; import com.jero.modules.activiti.process.fb.common.ConsultationTaskKey;
import com.jero.modules.activiti.process.fb.common.FbCommon; import com.jero.modules.activiti.process.fb.common.FbCommon;
@@ -87,6 +88,9 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
@Resource @Resource
private SendMessageAPI sendMessageAPI; private SendMessageAPI sendMessageAPI;
@Resource
private ProcessDraftService processDraftService;
public static final String EXCEPTION = "目前还未开发,请联系管理员"; public static final String EXCEPTION = "目前还未开发,请联系管理员";
/** /**
@@ -113,6 +117,12 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.FB_STANDARD_CONSULTATION)); // 流程定义id basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.FB_STANDARD_CONSULTATION)); // 流程定义id
// basicProcessInfoDTO.setProcessName(businessInfoDTO.getStandardNumber() + "-" + businessInfoDTO.getStandardName() + "-" + "征求意见"); // 流程名称 // basicProcessInfoDTO.setProcessName(businessInfoDTO.getStandardNumber() + "-" + businessInfoDTO.getStandardName() + "-" + "征求意见"); // 流程名称
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.FB_STANDARD_CONSULTATION.getValue()); // 流程类型 basicProcessInfoDTO.setProcessType(ProcessTypeEnum.FB_STANDARD_CONSULTATION.getValue()); // 流程类型
// 删除自己的草稿
String draftId = processInfoVO.getDraftId();
if (StringUtils.isNotBlank(draftId)) {
processDraftService.removeById(draftId);
}
processHandleService.startProcess(processInfoVO); processHandleService.startProcess(processInfoVO);
// 把各部所主管级领导数据存入关联人员表 // 把各部所主管级领导数据存入关联人员表
@@ -125,6 +135,11 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
linkList.add(link); linkList.add(link);
}); });
processFbConsultationUserLinkService.saveBatch(linkList, linkList.size()); processFbConsultationUserLinkService.saveBatch(linkList, linkList.size());
// 保存草稿用于强制撤销
processInfoVO.setSaveSource("3");
processInfoVO.getBasicTaskInfoDTO().setTaskId(null);
saveToDraft(processInfoVO);
} }
/** /**
@@ -8,6 +8,7 @@ import com.jero.common.system.base.controller.JeroController;
import com.jero.common.util.UUIDUtils; import com.jero.common.util.UUIDUtils;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
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;
import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardPurchase; import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardPurchase;
@@ -48,6 +49,9 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl<ProcessFbS
@Resource @Resource
private IProcessHandleService processHandleService; private IProcessHandleService processHandleService;
@Resource
private ProcessDraftService processDraftService;
/** /**
* @Author: liao * @Author: liao
* @Date: 2023/11/14 14:08 * @Date: 2023/11/14 14:08
@@ -81,7 +85,17 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl<ProcessFbS
basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.FB_STANDARD_PURCHASE)); // 流程定义id basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.FB_STANDARD_PURCHASE)); // 流程定义id
basicProcessInfoDTO.setProcessName(processName); // 流程名称 basicProcessInfoDTO.setProcessName(processName); // 流程名称
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.FB_STANDARD_PURCHASE.getValue()); // 流程类型 basicProcessInfoDTO.setProcessType(ProcessTypeEnum.FB_STANDARD_PURCHASE.getValue()); // 流程类型
// 删除自己的草稿
String draftId = processInfoVO.getDraftId();
if (StringUtils.isNotBlank(draftId)) {
processDraftService.removeById(draftId);
}
processHandleService.startProcess(processInfoVO); processHandleService.startProcess(processInfoVO);
// 保存草稿用于强制撤销
processInfoVO.setSaveSource("3");
processInfoVO.getBasicTaskInfoDTO().setTaskId(null);
saveToDraft(processInfoVO);
} }
/** /**
@@ -463,7 +463,9 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
if (StringUtils.isNotBlank(taskId)) { if (StringUtils.isNotBlank(taskId)) {
deleteWrapper.eq(ProcessDraft::getTaskId, taskId); deleteWrapper.eq(ProcessDraft::getTaskId, taskId);
} }
deleteWrapper.ne(ProcessDraft::getSaveSource, DraftCommon.INITIAL_SOURCE); deleteWrapper.and(qw ->
qw.ne(ProcessDraft::getSaveSource, DraftCommon.INITIAL_SOURCE)
.or().isNull(ProcessDraft::getSaveSource));
List<ProcessDraft> processDraftList = processDraftService.list(deleteWrapper); List<ProcessDraft> processDraftList = processDraftService.list(deleteWrapper);
for (ProcessDraft processDraft : processDraftList) { for (ProcessDraft processDraft : processDraftList) {
processDraftService.removeById(processDraft.getId()); processDraftService.removeById(processDraft.getId());
@@ -488,7 +490,8 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
if (StringUtils.isNotBlank(taskId)) { if (StringUtils.isNotBlank(taskId)) {
deleteWrapper.eq(ProcessDraft::getTaskId, taskId); deleteWrapper.eq(ProcessDraft::getTaskId, taskId);
} }
deleteWrapper.ne(ProcessDraft::getSaveSource, DraftCommon.INITIAL_SOURCE); deleteWrapper.and(qw -> qw.ne(ProcessDraft::getSaveSource, DraftCommon.INITIAL_SOURCE)
.or().isNull(ProcessDraft::getSaveSource));
List<ProcessDraft> processDraftList = processDraftService.list(deleteWrapper); List<ProcessDraft> processDraftList = processDraftService.list(deleteWrapper);
for (ProcessDraft processDraft : processDraftList) { for (ProcessDraft processDraft : processDraftList) {
processDraftService.removeById(processDraft.getId()); processDraftService.removeById(processDraft.getId());
@@ -548,7 +551,8 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
} else { } else {
// 流程信息 // 流程信息
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>() ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId)); .eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
if (!Objects.isNull(processAll)) { if (!Objects.isNull(processAll)) {
basicProcessInfoDTO.setProcessInstanceId(processAll.getProcessInstanceId()); basicProcessInfoDTO.setProcessInstanceId(processAll.getProcessInstanceId());
basicProcessInfoDTO.setProcessType(processAll.getPrcType()); basicProcessInfoDTO.setProcessType(processAll.getPrcType());
@@ -1,5 +1,8 @@
package com.jero.modules.activiti.process.meetingmanage.service.impl; package com.jero.modules.activiti.process.meetingmanage.service.impl;
import cn.hutool.core.date.DatePattern;
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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -108,6 +111,8 @@ public class MeetingManageFlowServiceImpl implements IMeetingManageFlowService {
// 更新流程总表信息 // 更新流程总表信息
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processAll.setPrcType(Integer.valueOf(ProcessType.MEETING_MANAGE.getValue())); processAll.setPrcType(Integer.valueOf(ProcessType.MEETING_MANAGE.getValue()));
DateTime date = DateUtil.date();
processAll.setPrcNum(DateUtil.format(date, DatePattern.PURE_DATETIME_MS_PATTERN));
processAll.setCreateUserId(loginUser.getId()); processAll.setCreateUserId(loginUser.getId());
processAllService.update(processAll, processAllService.update(processAll,
new LambdaUpdateWrapper<ProcessAll>() new LambdaUpdateWrapper<ProcessAll>()
@@ -182,7 +187,8 @@ public class MeetingManageFlowServiceImpl implements IMeetingManageFlowService {
MeetingManageFlowVO meetingManageFlowVO = new MeetingManageFlowVO(); MeetingManageFlowVO meetingManageFlowVO = new MeetingManageFlowVO();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>() ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId), false); .eq(ProcessAll::getProjectId, projectId)
.orderByDesc(ProcessAll::getCreateTime), false);
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord(); ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
// 是否存在草稿 // 是否存在草稿
@@ -5,6 +5,7 @@ package com.jero.modules.activiti.process.projectstandard.common;
* @date 2024-01-15 17:25 * @date 2024-01-15 17:25
*/ */
public class ProcessProjectStandardCommon { public class ProcessProjectStandardCommon {
public static final String PASS = "pass";
public static final String STANDARDS_ENGINEER = "standardsEngineer"; public static final String STANDARDS_ENGINEER = "standardsEngineer";
public static final String MANAGER_LEADER_LIST = "managerLeaderList"; public static final String MANAGER_LEADER_LIST = "managerLeaderList";
@@ -12,6 +13,8 @@ public class ProcessProjectStandardCommon {
public static final String MODULE_OWNER_LIST_SIZE = "moduleOwnerListSize"; public static final String MODULE_OWNER_LIST_SIZE = "moduleOwnerListSize";
public static final String DESIGN_ENGINEER_LIST = "designEngineerList"; public static final String DESIGN_ENGINEER_LIST = "designEngineerList";
public static final String DESIGN_ENGINEER_LIST_SIZE = "designEngineerListSize"; public static final String DESIGN_ENGINEER_LIST_SIZE = "designEngineerListSize";
public static final String NOT_INVOLVED_MODULE_OWNER_LIST_SIZE = "notInvolvedModuleOwnerListSize";
public static final String NOT_INVOLVED_MODULE_OWNER_LIST = "notInvolvedModuleOwnerList";
//法规工程师发起 //法规工程师发起
@@ -9,10 +9,14 @@ import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessTerm; 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.ProcessProjectStandard;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermApproval;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermUser;
import com.jero.modules.activiti.process.projectstandard.service.ProcessProjectStandardService; import com.jero.modules.activiti.process.projectstandard.service.ProcessProjectStandardService;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import com.jero.modules.activiti.process.projectstandard.service.ProcessProjectStandardTermApprovalService;
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.ProcessProjectStandardVO;
import com.jero.modules.activiti.process.projectstandard.vo.StandardSelectionVO; import com.jero.modules.activiti.process.projectstandard.vo.StandardSelectionVO;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox; import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
@@ -45,7 +49,7 @@ import java.util.List;
@Slf4j @Slf4j
@Api(tags = "法规合规评估流程表") @Api(tags = "法规合规评估流程表")
@RestController @RestController
@RequestMapping("processProjectStandard") @RequestMapping("process/projectStandard")
public class ProcessProjectStandardController extends JeroController<ProcessProjectStandard, ProcessProjectStandardService> { public class ProcessProjectStandardController extends JeroController<ProcessProjectStandard, ProcessProjectStandardService> {
/** /**
* 服务对象 * 服务对象
@@ -54,63 +58,65 @@ public class ProcessProjectStandardController extends JeroController<ProcessProj
private ProcessProjectStandardService processProjectStandardService; private ProcessProjectStandardService processProjectStandardService;
@Resource @Resource
private IDocumentSplitService documentSplitService; private IDocumentSplitService documentSplitService;
@Resource
private ProcessProjectStandardTermUserService termUserService;
@DictPoint @DictPoint
@GetMapping("/queryProcessInfoVO") @GetMapping("/queryProcessInfoVO")
@AutoLog(value = "未符合项跟踪流程-查询流程信息") @AutoLog(value = "法规合规评估流程-查询流程信息")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "draftId", value = "草稿id"), @ApiImplicitParam(name = "draftId", value = "草稿id"),
@ApiImplicitParam(name = "taskId", value = "任务id"), @ApiImplicitParam(name = "taskId", value = "任务id"),
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id") @ApiImplicitParam(name = "processInstanceId", value = "流程实例id")
}) })
@ApiOperation("未符合项跟踪流程-查询流程信息") @ApiOperation("法规合规评估流程-查询流程信息")
public Result<ProcessInfoVO<ProcessProjectStandardVO>> queryProcessInfoVO(String draftId, String processInstanceId, String taskId) { public Result<ProcessInfoVO<ProcessProjectStandardVO>> queryProcessInfoVO(String draftId, String processInstanceId, String taskId) {
ProcessInfoVO<ProcessProjectStandardVO> processInfoVO = processProjectStandardService.queryProcessInfoVO(draftId, processInstanceId, taskId); ProcessInfoVO<ProcessProjectStandardVO> processInfoVO = processProjectStandardService.queryProcessInfoVO(draftId, processInstanceId, taskId);
return Result.OK(processInfoVO); return Result.OK(processInfoVO);
} }
@AutoLog(value = "未符合项跟踪流程-发起流程") @AutoLog(value = "法规合规评估流程-发起流程")
@ApiOperation(value = "未符合项跟踪流程-发起流程") @ApiOperation(value = "法规合规评估流程-发起流程")
@PostMapping(value = "/startProcess") @PostMapping(value = "/startProcess")
public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) { public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
processProjectStandardService.startProcess(processInfoVO); processProjectStandardService.startProcess(processInfoVO);
return Result.OK(); return Result.OK();
} }
@AutoLog(value = "未符合项跟踪流程-同意") @AutoLog(value = "法规合规评估流程-同意")
@ApiOperation(value = "未符合项跟踪流程-同意") @ApiOperation(value = "法规合规评估流程-同意")
@PostMapping("/agree") @PostMapping("/agree")
public Result<T> agree(@Validated @RequestBody ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) { public Result<T> agree(@Validated @RequestBody ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
processProjectStandardService.approveTask(processInfoVO, true); processProjectStandardService.approveTask(processInfoVO, true);
return Result.OK(); return Result.OK();
} }
@AutoLog(value = "未符合项跟踪流程-驳回") @AutoLog(value = "法规合规评估流程-驳回")
@ApiOperation(value = "未符合项跟踪流程-驳回") @ApiOperation(value = "法规合规评估流程-驳回")
@PostMapping("/reject") @PostMapping("/reject")
public Result<T> reject(@Validated @RequestBody ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) { public Result<T> reject(@Validated @RequestBody ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
processProjectStandardService.approveTask(processInfoVO, false); processProjectStandardService.approveTask(processInfoVO, false);
return Result.OK(); return Result.OK();
} }
@AutoLog(value = "未符合项跟踪流程-提交") @AutoLog(value = "法规合规评估流程-提交")
@ApiOperation(value = "未符合项跟踪流程-提交") @ApiOperation(value = "法规合规评估流程-提交")
@PostMapping("/submit") @PostMapping("/submit")
public Result<T> submit(@Validated @RequestBody ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) { public Result<T> submit(@Validated @RequestBody ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
processProjectStandardService.submit(processInfoVO); processProjectStandardService.submit(processInfoVO);
return Result.OK(); return Result.OK();
} }
@AutoLog(value = "未符合项跟踪流程-保存为草稿") @AutoLog(value = "法规合规评估流程-保存为草稿")
@ApiOperation(value = "未符合项跟踪流程-保存为草稿") @ApiOperation(value = "法规合规评估流程-保存为草稿")
@PostMapping(value = "/saveToDraft") @PostMapping(value = "/saveToDraft")
public Result<T> saveToDraft(@Validated @RequestBody ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) { public Result<T> saveToDraft(@Validated @RequestBody ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
processProjectStandardService.saveToDraft(processInfoVO); processProjectStandardService.saveToDraft(processInfoVO);
return Result.OK(); return Result.OK();
} }
@AutoLog(value = "未符合项跟踪流程-查询标准列表") @AutoLog(value = "法规合规评估流程-查询标准列表")
@ApiOperation(value="查询标准列表") @ApiOperation(value="查询标准列表")
@GetMapping(value = "/quaryStandard") @GetMapping(value = "/quaryStandard")
public Result<IPage<StandardSelectionVO>> quaryStandard(ManyStandardSelectionBoxVO selectionBoxVO, public Result<IPage<StandardSelectionVO>> quaryStandard(ManyStandardSelectionBoxVO selectionBoxVO,
@@ -120,10 +126,10 @@ public class ProcessProjectStandardController extends JeroController<ProcessProj
} }
/** /**
* 项目合规评估流程-查询条款列表 * 法规合规评估流程-查询条款列表
* @return * @return
*/ */
@AutoLog(value = "项目合规评估流程-查询条款列表") @AutoLog(value = "法规合规评估流程-查询条款列表")
@ApiOperation(value = "查询条款列表") @ApiOperation(value = "查询条款列表")
@PostMapping("/processProjectStandardGetList") @PostMapping("/processProjectStandardGetList")
public Result<List<ProcessProjectStandardTerm>> processProjectStandardGetList(@RequestBody ProcessProjectStandard processProjectStandard) { public Result<List<ProcessProjectStandardTerm>> processProjectStandardGetList(@RequestBody ProcessProjectStandard processProjectStandard) {
@@ -139,5 +145,18 @@ public class ProcessProjectStandardController extends JeroController<ProcessProj
return Result.OK(allList); return Result.OK(allList);
} }
/**
* 法规合规评估流程-查询立项结果列表
* @return
*/
@DictPoint
@AutoLog(value = "法规合规评估流程-查询立项结果列表")
@ApiOperation(value = "查询立项结果列表")
@GetMapping("/getTermApprovalList")
public Result<List<ProcessProjectStandardTermApproval>> getTermApprovalList(@RequestParam(name="id") String id) {
List<ProcessProjectStandardTermApproval> page = processProjectStandardService.getTermApprovalList(id);
return Result.OK(page);
}
} }
@@ -95,6 +95,13 @@ public class ProcessProjectStandard {
@ApiModelProperty(value = "标准编号") @ApiModelProperty(value = "标准编号")
private String standardNumber; 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.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.Date; import java.util.Date;
import java.util.List;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@@ -136,6 +138,12 @@ public class ProcessProjectStandardTerm {
@ApiModelProperty(value="设计工程师") @ApiModelProperty(value="设计工程师")
private String designEngineer; private String designEngineer;
/**
* 设计工程师
*/
@ApiModelProperty(value="设计工程师")
private String designEngineer_dictText;
/** /**
* 抄送人员 * 抄送人员
*/ */
@@ -150,6 +158,13 @@ public class ProcessProjectStandardTerm {
@ApiModelProperty(value = "不涉及原因") @ApiModelProperty(value = "不涉及原因")
private String notInvolved; private String notInvolved;
/**
* 是否与车型强关联
*/
@TableField(exist = false)
@ApiModelProperty(value="是否与车型强关联")
private String isRelate;
/** /**
* 车型系列 * 车型系列
*/ */
@@ -161,7 +176,7 @@ public class ProcessProjectStandardTerm {
*/ */
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value="车型系列") @ApiModelProperty(value="车型系列")
private String modelSeries_dict; private String modelSeries_dictText;
/** /**
* 依据描述 * 依据描述
@@ -194,4 +209,8 @@ public class ProcessProjectStandardTerm {
@ApiModelProperty(value="评估结果") @ApiModelProperty(value="评估结果")
private String assessResults; private String assessResults;
@TableField(exist = false)
@ApiModelProperty(value="评估结果")
private String assessResults_dictText;
} }
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.Date; import java.util.Date;
@@ -80,6 +81,7 @@ public class ProcessProjectStandardTermApproval {
/** /**
* 责任单位负责人id * 责任单位负责人id
*/ */
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')")
@TableField(value = "responsible_unit_leader") @TableField(value = "responsible_unit_leader")
@ApiModelProperty(value="责任单位负责人id") @ApiModelProperty(value="责任单位负责人id")
private String responsibleUnitLeader; private String responsibleUnitLeader;
@@ -94,6 +96,7 @@ public class ProcessProjectStandardTermApproval {
/** /**
* 评估结果(1-符合2-不符合3-不涉及) * 评估结果(1-符合2-不符合3-不涉及)
*/ */
@Dict(dicCode = "assess_results")
@TableField(value = "assess_results") @TableField(value = "assess_results")
@ApiModelProperty(value="评估结果(1-符合、2-不符合、3-不涉及)") @ApiModelProperty(value="评估结果(1-符合、2-不符合、3-不涉及)")
private String assessResults; private String assessResults;
@@ -101,6 +104,7 @@ public class ProcessProjectStandardTermApproval {
/** /**
* 是否立项 * 是否立项
*/ */
@Dict(dicCode = "yn")
@TableField(value = "project_approval_flag") @TableField(value = "project_approval_flag")
@ApiModelProperty(value="是否立项") @ApiModelProperty(value="是否立项")
private String projectApprovalFlag; private String projectApprovalFlag;
@@ -109,8 +109,8 @@ public class ProcessProjectStandardTermUser {
/**评估结果(1-符合、2-不符合)*/ /**评估结果(1-符合、2-不符合)*/
@TableField(value = "assess_results") @TableField(value = "assess_results")
@Dict(dicCode = "standards_assess_results") @Dict(dicCode = "assess_results")
@ApiModelProperty(value = "评估结果(1-符合、2-不符合)") @ApiModelProperty(value = "评估结果(1-符合、2-不符合、3-不涉及)")
private String assessResults; private String assessResults;
/** /**
@@ -134,10 +134,17 @@ public class ProcessProjectStandardTermUser {
@ApiModelProperty(value="父执行实例流id") @ApiModelProperty(value="父执行实例流id")
private String parentExecutionId; private String parentExecutionId;
/**
* 是否与车型强关联
*/
@TableField(value = "is_relate")
@ApiModelProperty(value="是否与车型强关联")
private String isRelate;
/** /**
* 车型系列 * 车型系列
*/ */
@TableField(value = "model_series") @TableField(value = "model_series")
@Dict(dicCode = "model_series")
@ApiModelProperty(value="车型系列") @ApiModelProperty(value="车型系列")
private String modelSeries; private String modelSeries;
/** /**
@@ -145,7 +152,7 @@ public class ProcessProjectStandardTermUser {
*/ */
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value="车型系列") @ApiModelProperty(value="车型系列")
private String modelSeries_dict; private String modelSeries_dictText;
/** /**
* 依据描述 * 依据描述
@@ -167,4 +174,11 @@ public class ProcessProjectStandardTermUser {
@TableField(value = "project_approval_flag") @TableField(value = "project_approval_flag")
@ApiModelProperty(value="是否立项") @ApiModelProperty(value="是否立项")
private Integer projectApprovalFlag; private Integer projectApprovalFlag;
/**
* 任务id
*/
@TableField(exist = false)
@ApiModelProperty(value="任务id")
private String taskId;
} }
@@ -16,7 +16,11 @@ public interface ProcessProjectStandardTermMapper extends BaseMapper<ProcessProj
List<ProcessProjectStandardTerm> getByModuleOwner(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId, @Param("hasDesignEngineer") Boolean hasDesignEngineer); List<ProcessProjectStandardTerm> getByModuleOwner(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId, @Param("hasDesignEngineer") Boolean hasDesignEngineer);
List<ProcessProjectStandardTerm> getByModuleOwnerAutoComplete(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId);
List<ProcessProjectStandardTerm> getByDesignEngineer(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId); List<ProcessProjectStandardTerm> getByDesignEngineer(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId);
List<ProcessProjectStandardTerm> getByStandardsEngineer(@Param("processId") String processId); List<ProcessProjectStandardTerm> getByStandardsEngineer(@Param("processId") String processId);
List<ProcessProjectStandardTerm> getByTermDesignEngineer(@Param("processId") String processId, @Param("originUserId") String originUserId);
} }
@@ -13,11 +13,12 @@
<result column="del_flag" jdbcType="INTEGER" property="delFlag" /> <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
<result column="source" jdbcType="VARCHAR" property="source" /> <result column="source" jdbcType="VARCHAR" property="source" />
<result column="standard_number" jdbcType="VARCHAR" property="standardNumber" /> <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" /> <result column="decomposition_order_Source" jdbcType="VARCHAR" property="decompositionOrderSource" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
id, create_by, create_time, update_by, update_time, org_code, del_flag, `source`, 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> </sql>
</mapper> </mapper>
@@ -28,6 +28,8 @@
<result column="responsible_unit_leader" property="responsibleUnitLeader"/> <result column="responsible_unit_leader" property="responsibleUnitLeader"/>
<result column="term_user_id" property="termUserId"/> <result column="term_user_id" property="termUserId"/>
<result column="assess_results" property="assessResults"/> <result column="assess_results" property="assessResults"/>
<result column="model_series" property="modelSeries"/>
<result column="is_relate" property="isRelate"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
@@ -38,16 +40,15 @@
<select id="getByResponsibleUnitLeader" resultMap="BaseResultMap"> <select id="getByResponsibleUnitLeader" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List">
<property name="alias" value="ppat"/>
</include>
,
ppstu.id term_user_id, ppstu.id term_user_id,
ppstu.not_involved, ppstu.not_involved,
ppstu.assess_results, ppstu.assess_results,
ppstu.description, ppstu.description,
ppstu.file_id, ppstu.file_id,
ppstu.design_engineer ppstu.design_engineer,
<include refid="Base_Column_List">
<property name="alias" value="ppst"/>
</include>
from process_project_standard_term ppst from process_project_standard_term ppst
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
where ppst.process_id = #{processId} where ppst.process_id = #{processId}
@@ -60,16 +61,16 @@
<select id="getByModuleOwner" resultMap="BaseResultMap"> <select id="getByModuleOwner" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List">
<property name="alias" value="ppat"/>
</include>
,
ppstu.id term_user_id, ppstu.id term_user_id,
ppstu.not_involved, ppstu.not_involved,
ppstu.assess_results, ppstu.assess_results,
ppstu.model_series,
ppstu.description, ppstu.description,
ppstu.file_id, ppstu.file_id,
ppstu.design_engineer ppstu.design_engineer,
<include refid="Base_Column_List">
<property name="alias" value="ppst"/>
</include>
from process_project_standard_term ppst from process_project_standard_term ppst
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
where ppst.process_id = #{processId} where ppst.process_id = #{processId}
@@ -81,19 +82,40 @@
and ppstu.id is not null and ppstu.id is not null
</select> </select>
<select id="getByModuleOwnerAutoComplete" resultMap="BaseResultMap">
select ppstu.id term_user_id,
ppstu.not_involved,
ppstu.assess_results,
ppstu.model_series,
ppstu.description,
ppstu.file_id,
ppstu.design_engineer,
<include refid="Base_Column_List">
<property name="alias" value="ppst"/>
</include>
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}
and ppstu.design_engineer is not null
and ppstu.id is not null
</select>
<select id="getByDesignEngineer" resultMap="BaseResultMap"> <select id="getByDesignEngineer" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List">
<property name="alias" value="ppat"/>
</include>
,
ppstu.id term_user_id, ppstu.id term_user_id,
ppstu.not_involved, ppstu.not_involved,
ppstu.module_owner, ppstu.module_owner,
ppstu.assess_results, ppstu.assess_results,
ppstu.model_series,
ppstu.is_relate,
ppstu.description, ppstu.description,
ppstu.file_id, ppstu.file_id,
ppstu.design_engineer ppstu.design_engineer,
<include refid="Base_Column_List">
<property name="alias" value="ppst"/>
</include>
from process_project_standard_term ppst from process_project_standard_term ppst
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
where ppst.process_id = #{processId} where ppst.process_id = #{processId}
@@ -104,19 +126,23 @@
<select id="getByStandardsEngineer" resultMap="BaseResultMap"> <select id="getByStandardsEngineer" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List">
<property name="alias" value="ppat"/>
</include>
,
ppstu.id term_user_id, ppstu.id term_user_id,
ppstu.not_involved, <include refid="Base_Column_List">
ppstu.assess_results, <property name="alias" value="ppst"/>
ppstu.description, </include>
ppstu.file_id,
ppstu.design_engineer
from process_project_standard_term ppst from process_project_standard_term ppst
left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id left join process_project_standard_term_user ppstu on ppst.id = ppstu.term_id
where ppst.process_id = #{processId} where ppst.process_id = #{processId}
and ppstu.id is not null and ppstu.id is not null
</select> </select>
<select id="getByTermDesignEngineer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List">
<property name="alias" value="ppst"/>
</include>
from process_project_standard_term ppst
where ppst.process_id = #{processId}
and ppst.design_engineer = #{originUserId}
</select>
</mapper> </mapper>
@@ -3,12 +3,15 @@ package com.jero.modules.activiti.process.projectstandard.service;
import cn.hutool.core.collection.CollStreamUtil; import cn.hutool.core.collection.CollStreamUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.ResultCommon;
import com.jero.common.api.vo.SendMessageAPI; import com.jero.common.api.vo.SendMessageAPI;
import com.jero.common.constant.CommonConstant; import com.jero.common.constant.CommonConstant;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI; import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.DictModel; import com.jero.common.system.vo.DictModel;
@@ -24,7 +27,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.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; 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.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.common.ProcessProjectStandardCommon;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermApproval; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermApproval;
@@ -35,6 +37,7 @@ import com.jero.modules.activiti.process.projectstandard.vo.ProcessProjectStanda
import com.jero.modules.activiti.process.projectstandard.vo.StandardSelectionVO; import com.jero.modules.activiti.process.projectstandard.vo.StandardSelectionVO;
import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.util.ThreadLocalUtil; 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.mapper.LawsCommonMapper;
import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO; import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
@@ -43,6 +46,8 @@ import com.jero.modules.laws.standard.entity.LawsOverseasStandard;
import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
import com.jero.modules.laws.standard.service.ILawsOverseasStandardService; import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
import com.jero.modules.projectLibrary.common.AssessCommon; 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.projectLibrary.vo.DecompositionOrderSourceVO;
import com.jero.modules.split.entity.SarFileSplitInfoEO; import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService; import com.jero.modules.split.service.ISarFileSplitInfoService;
@@ -56,8 +61,10 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandard; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandard;
import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardMapper; import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardMapper;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -67,6 +74,7 @@ import java.util.stream.Collectors;
*@date 2024-01-15 16:17 *@date 2024-01-15 16:17
*/ */
@Service @Service
@Transactional(rollbackFor = Exception.class)
public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectStandardMapper, ProcessProjectStandard> { public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectStandardMapper, ProcessProjectStandard> {
@Resource @Resource
@@ -99,6 +107,8 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
private ProcessProjectStandardTermUserService termUserService; private ProcessProjectStandardTermUserService termUserService;
@Resource @Resource
private ProcessProjectStandardTermApprovalService termApprovalService; private ProcessProjectStandardTermApprovalService termApprovalService;
@Resource
private ILawsSpecialProjectLibraryService lawsSpecialProjectLibraryService;
@@ -132,12 +142,10 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
userNameMap.put(loginUser.getId(), loginUser.calcNameWorkNo()); userNameMap.put(loginUser.getId(), loginUser.calcNameWorkNo());
} }
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
String createUserId = processAll.getCreateUserId();
//发起人 //发起人
String createUserName = userNameMap.get(createUserId);
LambdaQueryWrapper<ProcessProjectStandardTermUser> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ProcessProjectStandardTermUser> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessProjectStandardTermUser::getProcessId, processId); wrapper.eq(ProcessProjectStandardTermUser::getProcessId, processId);
List<ProcessProjectStandardTermUser> list = new ArrayList<>(); List<ProcessProjectStandardTermUser> termUserList = new ArrayList<>();
switch (taskDefinitionKey) { switch (taskDefinitionKey) {
//部所主管级领导下发 //部所主管级领导下发
case ProcessProjectStandardCommon.BSZGJLDXF: case ProcessProjectStandardCommon.BSZGJLDXF:
@@ -150,82 +158,124 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
//驳回后模块责任人分发 //驳回后模块责任人分发
case ProcessProjectStandardCommon.MKZRRFF_4: case ProcessProjectStandardCommon.MKZRRFF_4:
case ProcessProjectStandardCommon.MKZRRFF_5: case ProcessProjectStandardCommon.MKZRRFF_5:
processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, true); processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, false);
break; break;
//设计工程师评估 //设计工程师评估
case ProcessProjectStandardCommon.SJGCSPG_: case ProcessProjectStandardCommon.SJGCSPG_:
processProjectStandardTermList = termMapper.getByDesignEngineer(processId, originUserId, executionParentId); processProjectStandardTermList = termMapper.getByDesignEngineer(processId, originUserId, executionParentId);
wrapper.eq(ProcessProjectStandardTermUser::getDesignEngineer, originUserId);
wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, executionParentId);
list = termUserService.list(wrapper);
break; break;
//模块责任人审批 //模块责任人审批
case ProcessProjectStandardCommon.MKZRRFF_: case ProcessProjectStandardCommon.MKZRRSP_:
processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, false); processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, true);
wrapper.eq(ProcessProjectStandardTermUser::getModuleOwner, originUserId); wrapper.eq(ProcessProjectStandardTermUser::getModuleOwner, originUserId);
wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, executionParentId); wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, executionParentId);
list = termUserService.list(wrapper); termUserList = termUserService.list(wrapper);
break; break;
//部所主管级领导审批 //部所主管级领导审批
case ProcessProjectStandardCommon.BSZGJLDSP_: case ProcessProjectStandardCommon.BSZGJLDSP_:
processProjectStandardTermList = termMapper.getByResponsibleUnitLeader(processId, originUserId, true); processProjectStandardTermList = termMapper.getByResponsibleUnitLeader(processId, originUserId, true);
wrapper.eq(ProcessProjectStandardTermUser::getResponsibleUnitLeader, originUserId); wrapper.eq(ProcessProjectStandardTermUser::getResponsibleUnitLeader, originUserId);
termUserList = termUserService.list(wrapper);
break; break;
//法规工程师审批 //法规工程师审批
case ProcessProjectStandardCommon.FGGCSSP: case ProcessProjectStandardCommon.FGGCSSP:
processProjectStandardTermList = termMapper.getByStandardsEngineer(processId); processProjectStandardTermList = termMapper.getByStandardsEngineer(processId);
termUserList = termUserService.list(wrapper);
break; break;
//设计工程师补充工作令编号 //设计工程师补充工作令编号
case ProcessProjectStandardCommon.SJGCSBCGZLBH: case ProcessProjectStandardCommon.SJGCSBCGZLBH:
processProjectStandardTermList = termMapper.getByStandardsEngineer(processId); processProjectStandardTermList = termMapper.getByTermDesignEngineer(processId, originUserId);
break; break;
default: default:
} }
List<DictModel> modelSeriesDict = sysBaseAPI.queryDictItemsByCode("model_series");
Map<String, String> modelSeriesDictMap = CollStreamUtil.toMap(modelSeriesDict, DictModel::getValue, DictModel::getText);
List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("assess_results"); 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); Map<String, List<ProcessProjectStandardTermUser>> termIdListMap = CollStreamUtil.groupByKey(termUserList, ProcessProjectStandardTermUser::getTermId);
for (ProcessProjectStandardTerm term : processProjectStandardTermList) { for (ProcessProjectStandardTerm term : processProjectStandardTermList) {
String termId = term.getId(); String termId = term.getId();
if (termIdListMap.containsKey(termId)) {
List<ProcessProjectStandardTermUser> termUsers = termIdListMap.get(termId); List<ProcessProjectStandardTermUser> termUsers = termIdListMap.get(termId);
if (CollectionUtil.isNotEmpty(termUsers)){ String assessResults = AssessCommon.NOT_INVOLVED;
String projectApprovalFlag = YesOrNoEnum.NO.getValue();
List<String> moduleOwnerList = new ArrayList<>();
List<String> responsibleUnitLeaderList = new ArrayList<>();
for (ProcessProjectStandardTermUser termUser : termUsers) {
moduleOwnerList.add(termUser.getModuleOwner());
responsibleUnitLeaderList.add(termUser.getResponsibleUnitLeader());
String assessResults1 = termUser.getAssessResults();
if (AssessCommon.NOT_COMPLIANT.equals(assessResults1)) {
assessResults = AssessCommon.NOT_COMPLIANT;
projectApprovalFlag = YesOrNoEnum.YES.getValue();
break;
}
if (AssessCommon.ACCORD_WITH.equals(assessResults1)) {
assessResults = AssessCommon.ACCORD_WITH;
projectApprovalFlag = YesOrNoEnum.NO.getValue();
}
}
if (ProcessProjectStandardCommon.BSZGJLDSP_.equals(taskDefinitionKey)){
List<String> userNameList = new ArrayList<>();
moduleOwnerList.stream()
.filter(Objects::nonNull)
.distinct().forEach(i ->{
userNameList.add(userNameMap.get(i)) ;
});
term.setModuleOwner(String.join(",", userNameList));
}
if (ProcessProjectStandardCommon.FGGCSSP.equals(taskDefinitionKey)){
List<String> userNameList = new ArrayList<>();
responsibleUnitLeaderList.stream()
.filter(Objects::nonNull)
.distinct().forEach(i ->{
userNameList.add(userNameMap.get(i)) ;
});
term.setResponsibleUnitLeader(String.join(",", userNameList));
}
ProcessProjectStandardTermUser termUser = termUsers.get(0); term.setProjectApprovalFlag(projectApprovalFlag);
term.setDescription(termUser.getDescription()); term.setAssessResults(assessResults);
term.setFileId(termUser.getFileId()); term.setAssessResults_dictText(assessResultsMap.get(assessResults));
} }
String modelSeries = term.getModelSeries();
term.setModelSeries_dictText(sysBaseAPI.translateByDictMap(modelSeriesDictMap,modelSeries));
String designEngineer = term.getDesignEngineer();
term.setDesignEngineer_dictText(userNameMap.get(designEngineer));
} }
//拼接分类法规标题 String moduleOwner1 = null;
List<DictModel> decompositionOrderSourceDictModels = sysBaseAPI.queryDictItemsByCode("decomposition_order_source"); if (processProjectStandardTermList.size()>0){
Map<String, String> decompositionOrderSourceMap = CollStreamUtil.toMap(decompositionOrderSourceDictModels, DictModel::getValue, DictModel::getText); ProcessProjectStandardTerm term = processProjectStandardTermList.get(0);
Map<String, ProcessProjectStandardTerm> splitInfoIdMap = this.getSplitInfoIdMap(processId); String moduleOwner = term.getModuleOwner();
List<ProcessProjectStandardTerm> allProjectAssesTermList = new ArrayList<>(); moduleOwner1 = userNameMap.get(moduleOwner);
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); ProcessProjectStandard processProjectStandard = this.getById(processId);
ProcessProjectStandardVO processProjectStandardVO = new ProcessProjectStandardVO(); ProcessProjectStandardVO processProjectStandardVO = new ProcessProjectStandardVO();
processProjectStandardVO.setModuleOwner(moduleOwner1);
processProjectStandardVO.setProcessProjectStandard(processProjectStandard); processProjectStandardVO.setProcessProjectStandard(processProjectStandard);
processProjectStandardVO.setProcessProjectStandardTermList(processProjectStandardTermList); processProjectStandardVO.setProcessProjectStandardTermList(processProjectStandardTermList);
//processProjectStandardVO.setProcessProjectStandardTermUserList(); if (ProcessProjectStandardCommon.FGGCSSP.equals(taskDefinitionKey)){
String termId = processProjectStandardTermList.get(0).getId();
LambdaQueryWrapper<ProcessProjectStandardTermApproval> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(ProcessProjectStandardTermApproval::getTermId,termId);
List<ProcessProjectStandardTermApproval> approvalList = termApprovalService.list(wrapper1);
for (ProcessProjectStandardTermApproval termApproval : approvalList) {
String responsibleUnitLeader = termApproval.getResponsibleUnitLeader();
termApproval.setResponsibleUnitLeader(userNameMap.get(responsibleUnitLeader));
String assessResults = termApproval.getAssessResults();
termApproval.setAssessResults(assessResultsMap.get(assessResults));
String projectApprovalFlag = termApproval.getProjectApprovalFlag();
termApproval.setProjectApprovalFlag(YesOrNoEnum.YES.getValue().equals(projectApprovalFlag)?YesOrNoEnum.YES.getName():YesOrNoEnum.NO.getName());
}
processProjectStandardVO.setProcessProjectStandardTermApprovalList(approvalList);
}
processInfoVO.setBusinessInfoDTO(processProjectStandardVO); processInfoVO.setBusinessInfoDTO(processProjectStandardVO);
return processInfoVO; return processInfoVO;
} }
@@ -253,6 +303,7 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
ProcessProjectStandard processProjectStandard = businessInfoDTO.getProcessProjectStandard(); ProcessProjectStandard processProjectStandard = businessInfoDTO.getProcessProjectStandard();
processProjectStandard.setId(null);
this.save(processProjectStandard); this.save(processProjectStandard);
String processId = processProjectStandard.getId(); String processId = processProjectStandard.getId();
processInfoVO.setBusinessId(processId); processInfoVO.setBusinessId(processId);
@@ -312,78 +363,6 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
processHandleService.startProcess(processInfoVO); processHandleService.startProcess(processInfoVO);
} }
public void approveTask(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO, boolean pass) {
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
String taskId = basicTaskInfoDTO.getTaskId();
ProcessDTO processDTO = processHandleService.getProcessDTO(taskId);
String processInstanceId = processDTO.getProcessInstanceId();
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
processInfoVO.setBusinessId(processAll.getProjectId());
Task task = processDTO.getTask();
String taskDefinitionKey = task.getTaskDefinitionKey();
if (taskDefinitionKey.contains("_") && !taskDefinitionKey.contains(ProcessProjectStandardCommon.MKZRRFF_)){
taskDefinitionKey = taskDefinitionKey.substring(0,taskDefinitionKey.length()-1);
}
processHandleService.updateApprovalRecord(processInfoVO);
switch (taskDefinitionKey) {
//模块责任人审批
case ProcessProjectStandardCommon.MKZRRFF_:
mkzrrffApprove(processInfoVO, processDTO, pass);
break;
//部所主管级领导审批
case ProcessProjectStandardCommon.BSZGJLDSP_:
bszgjldspApprove(processInfoVO, processDTO, pass);
break;
//法规工程师审批
case ProcessProjectStandardCommon.FGGCSSP:
fggcsspApprove(processInfoVO, processDTO, pass);
break;
default:
}
}
//模块责任人审批
private void mkzrrffApprove(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO, ProcessDTO processDTO, boolean pass) {
// 完成任务
String taskId = processDTO.getTaskId();
Map<String, Object> variables = new HashMap<>();
variables.put(ProcessProjectAssessCommon.PASS, pass);
taskService.complete(taskId, variables);
}
//部所主管级领导审批
private void bszgjldspApprove(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();
//查询表单
ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
List<ProcessProjectStandardTerm> termList = businessInfoDTO.getProcessProjectStandardTermList();
List<ProcessProjectStandardTermApproval> termApprovalList = new ArrayList<>();
//删除之前的立项结果
List<String> termIdList = termList.stream().map(ProcessProjectStandardTerm::getId).collect(Collectors.toList());
LambdaQueryWrapper<ProcessProjectStandardTermApproval> deleteWrapper = new LambdaQueryWrapper<>();
deleteWrapper.eq(ProcessProjectStandardTermApproval::getProcessId,businessId);
deleteWrapper.eq(ProcessProjectStandardTermApproval::getResponsibleUnitLeader,originUserId);
deleteWrapper.in(ProcessProjectStandardTermApproval::getTermId,termIdList);
termApprovalService.remove(deleteWrapper);
//保存立项结果
for (ProcessProjectStandardTerm term : termList) {
ProcessProjectStandardTermApproval termApproval = new ProcessProjectStandardTermApproval();
termApproval.setProcessId(businessId);
termApproval.setResponsibleUnitLeader(CurrentUserUtil.getId());
termApproval.setTermId(term.getId());
termApproval.setAssessResults(term.getAssessResults());
termApproval.setProjectApprovalFlag(term.getProjectApprovalFlag());
termApprovalList.add(termApproval);
}
termApprovalService.saveBatch(termApprovalList);
}
//法规工程师审批
private void fggcsspApprove(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO, ProcessDTO processDTO, boolean pass) {
}
public void submit(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) { public void submit(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO) {
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
String taskId = basicTaskInfoDTO.getTaskId(); String taskId = basicTaskInfoDTO.getTaskId();
@@ -422,6 +401,221 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
default: default:
} }
} }
public void approveTask(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO, boolean pass) {
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
String taskId = basicTaskInfoDTO.getTaskId();
ProcessDTO processDTO = processHandleService.getProcessDTO(taskId);
String processInstanceId = processDTO.getProcessInstanceId();
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
processInfoVO.setBusinessId(processAll.getProjectId());
Task task = processDTO.getTask();
String taskDefinitionKey = task.getTaskDefinitionKey();
if (taskDefinitionKey.contains("_") && !taskDefinitionKey.contains(ProcessProjectStandardCommon.MKZRRFF_)){
taskDefinitionKey = taskDefinitionKey.substring(0,taskDefinitionKey.length()-1);
}
processHandleService.updateApprovalRecord(processInfoVO);
switch (taskDefinitionKey) {
//模块责任人审批
case ProcessProjectStandardCommon.MKZRRSP_:
mkzrrffApprove(processInfoVO, processDTO, pass);
break;
//部所主管级领导审批
case ProcessProjectStandardCommon.BSZGJLDSP_:
bszgjldspApprove(processInfoVO, processDTO, pass);
break;
//法规工程师审批
case ProcessProjectStandardCommon.FGGCSSP:
fggcsspApprove(processInfoVO, processDTO, pass);
break;
default:
}
}
//模块责任人审批
private void mkzrrffApprove(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO, ProcessDTO processDTO, boolean pass) {
Task task = processDTO.getTask();
String parentExecutionId = task.getFormKey();
//查询表单
ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
List<ProcessProjectStandardTerm> termList = businessInfoDTO.getProcessProjectStandardTermList();
List<String> designEngineerList = termList.stream().map(ProcessProjectStandardTerm::getDesignEngineer).distinct().collect(Collectors.toList());
// 完成任务
ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID,parentExecutionId);
String taskId = processDTO.getTaskId();
Map<String, Object> variables = new HashMap<>();
variables.put(ProcessProjectStandardCommon.PASS, pass);
variables.put(ProcessProjectStandardCommon.DESIGN_ENGINEER_LIST, designEngineerList);
taskService.complete(taskId, variables);
}
//部所主管级领导审批
private void bszgjldspApprove(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();
//查询表单
ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
List<ProcessProjectStandardTerm> termList = businessInfoDTO.getProcessProjectStandardTermList();
List<ProcessProjectStandardTermApproval> termApprovalList = new ArrayList<>();
//删除之前的立项结果
List<String> termIdList = termList.stream().map(ProcessProjectStandardTerm::getId).collect(Collectors.toList());
LambdaQueryWrapper<ProcessProjectStandardTermApproval> deleteWrapper = new LambdaQueryWrapper<>();
deleteWrapper.eq(ProcessProjectStandardTermApproval::getProcessId,businessId);
deleteWrapper.eq(ProcessProjectStandardTermApproval::getResponsibleUnitLeader,originUserId);
deleteWrapper.in(ProcessProjectStandardTermApproval::getTermId,termIdList);
termApprovalService.remove(deleteWrapper);
//保存立项结果
for (ProcessProjectStandardTerm term : termList) {
ProcessProjectStandardTermApproval termApproval = new ProcessProjectStandardTermApproval();
termApproval.setProcessId(businessId);
termApproval.setResponsibleUnitLeader(CurrentUserUtil.getId());
termApproval.setTermId(term.getId());
termApproval.setAssessResults(term.getAssessResults());
termApproval.setProjectApprovalFlag(term.getProjectApprovalFlag());
termApprovalList.add(termApproval);
}
termApprovalService.saveBatch(termApprovalList);
ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID,executionId);
// 完成任务
Map<String, Object> variables = new HashMap<>();
//如果驳回查询下一步的模块责任人
if (!pass){
LambdaQueryWrapper<ProcessProjectStandardTermUser> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessProjectStandardTermUser::getProcessId,businessId);
wrapper.eq(ProcessProjectStandardTermUser::getResponsibleUnitLeader,originUserId);
List<ProcessProjectStandardTermUser> termUserList = termUserMapper.selectList(wrapper);
for (ProcessProjectStandardTermUser termUser : termUserList) {
termUser.setParentExecutionId(executionId);
}
termUserService.updateBatchById(termUserList);
//选择不涉及的模块责任人
List<String> notInvolvedModuleOwnerList = termUserList.stream()
.filter(i -> StringUtils.isBlank(i.getDesignEngineer()))
.map(ProcessProjectStandardTermUser::getModuleOwner)
.distinct()
.collect(Collectors.toList());
//选择设计工程师的模块责任人
List<String> moduleOwnerList = termUserList.stream()
.filter(i -> StringUtils.isNotBlank(i.getDesignEngineer()))
.map(ProcessProjectStandardTermUser::getModuleOwner)
.distinct()
.collect(Collectors.toList());
variables.put(ProcessProjectStandardCommon.NOT_INVOLVED_MODULE_OWNER_LIST, notInvolvedModuleOwnerList);
variables.put(ProcessProjectStandardCommon.NOT_INVOLVED_MODULE_OWNER_LIST_SIZE, notInvolvedModuleOwnerList.size());
variables.put(ProcessProjectStandardCommon.MODULE_OWNER_LIST, moduleOwnerList);
variables.put(ProcessProjectStandardCommon.MODULE_OWNER_LIST_SIZE, moduleOwnerList.size());
}
String taskId = processDTO.getTaskId();
variables.put(ProcessProjectStandardCommon.PASS, pass);
taskService.complete(taskId, variables);
}
//法规工程师审批
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);
if (!pass){
continue;
}
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);
}
//更新数据
if (pass){
termService.updateBatchById(updateTermList);
}
// 完成任务
String taskId = processDTO.getTaskId();
Map<String, Object> variables = new HashMap<>();
variables.put(ProcessProjectStandardCommon.PASS, pass);
if (!pass){
LambdaQueryWrapper<ProcessProjectStandardTermUser> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(ProcessProjectStandardTermUser::getProcessId, businessId);
wrapper1.isNotNull(ProcessProjectStandardTermUser::getResponsibleUnitLeader);
List<ProcessProjectStandardTermUser> termUserList = termUserService.list(wrapper1);
List<String> designEngineerList = termUserList.stream()
.map(ProcessProjectStandardTermUser::getResponsibleUnitLeader)
.distinct()
.collect(Collectors.toList());
variables.put(ProcessProjectStandardCommon.DESIGN_ENGINEER_LIST, designEngineerList);
variables.put(ProcessProjectStandardCommon.DESIGN_ENGINEER_LIST_SIZE, designEngineerList.size());
}
taskService.complete(taskId, variables);
if (pass){
//发送消息
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);
}
}
//部所主管级领导下发 //部所主管级领导下发
private void bszgjldxfSubmit(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO, ProcessDTO processDTO) { private void bszgjldxfSubmit(ProcessInfoVO<ProcessProjectStandardVO> processInfoVO, ProcessDTO processDTO) {
String businessId = processInfoVO.getBusinessId(); String businessId = processInfoVO.getBusinessId();
@@ -449,11 +643,12 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
updateWrapper.set(ProcessProjectStandardTermUser::getNotInvolved,notInvolved); updateWrapper.set(ProcessProjectStandardTermUser::getNotInvolved,notInvolved);
updateWrapper.set(ProcessProjectStandardTermUser::getAssessResults, AssessCommon.NOT_INVOLVED); updateWrapper.set(ProcessProjectStandardTermUser::getAssessResults, AssessCommon.NOT_INVOLVED);
}else { }else {
String moduleOwner = termUser.getModuleOwner(); String moduleOwner = term.getModuleOwner();
if (StringUtils.isBlank(moduleOwner)){ if (StringUtils.isBlank(moduleOwner)){
throw new JeroBootException(ResultCommon.PARAMETER_NOT_RECOGNIZED); throw new JeroBootException(ResultCommon.PARAMETER_NOT_RECOGNIZED);
} }
updateWrapper.set(ProcessProjectStandardTermUser::getModuleOwner, moduleOwner); updateWrapper.set(ProcessProjectStandardTermUser::getModuleOwner, moduleOwner);
updateWrapper.set(ProcessProjectStandardTermUser::getParentExecutionId, executionId);
moduleOwnerIds.add(moduleOwner); moduleOwnerIds.add(moduleOwner);
} }
termUserService.update(updateWrapper); termUserService.update(updateWrapper);
@@ -514,13 +709,14 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
termUserService.update(updateWrapper); termUserService.update(updateWrapper);
}else { }else {
//如果设计工程师有一个就更新有多个就新增剩下的 //如果设计工程师有一个就更新有多个就新增剩下的
String designEngineers = termUser.getDesignEngineer(); String designEngineers = term.getDesignEngineer();
if (StringUtils.isBlank(designEngineers)){ if (StringUtils.isBlank(designEngineers)){
throw new JeroBootException(ResultCommon.PARAMETER_NOT_RECOGNIZED); throw new JeroBootException(ResultCommon.PARAMETER_NOT_RECOGNIZED);
} }
List<String> designEngineerList = Arrays.asList(designEngineers.split(",")); List<String> designEngineerList = Arrays.asList(designEngineers.split(","));
designEngineerIds.addAll(designEngineerList); designEngineerIds.addAll(designEngineerList);
updateWrapper.set(ProcessProjectStandardTermUser::getModuleOwner, designEngineerList.get(0)); updateWrapper.set(ProcessProjectStandardTermUser::getDesignEngineer, designEngineerList.get(0));
updateWrapper.set(ProcessProjectStandardTermUser::getParentExecutionId, executionId);
termUserService.update(updateWrapper); termUserService.update(updateWrapper);
if (designEngineerList.size() >= 2){ if (designEngineerList.size() >= 2){
@@ -529,6 +725,7 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
BeanUtils.copyProperties(termUser,termUser1); BeanUtils.copyProperties(termUser,termUser1);
termUser1.setId(null); termUser1.setId(null);
termUser1.setDesignEngineer(designEngineerList.get(i)); termUser1.setDesignEngineer(designEngineerList.get(i));
termUser1.setParentExecutionId(executionId);
allInsertTermUserList.add(termUser1); allInsertTermUserList.add(termUser1);
} }
} }
@@ -565,6 +762,7 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
ProcessProjectStandardTermUser termUser = new ProcessProjectStandardTermUser(); ProcessProjectStandardTermUser termUser = new ProcessProjectStandardTermUser();
termUser.setId(term.getTermUserId()); termUser.setId(term.getTermUserId());
termUser.setAssessResults(term.getAssessResults()); termUser.setAssessResults(term.getAssessResults());
termUser.setIsRelate(term.getIsRelate());
termUser.setModelSeries(term.getModelSeries()); termUser.setModelSeries(term.getModelSeries());
termUser.setDescription(term.getDescription()); termUser.setDescription(term.getDescription());
termUser.setFileId(term.getFileId()); termUser.setFileId(term.getFileId());
@@ -623,7 +821,20 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
} }
public void autoComplete(DelegateTask delegateTask) { public void autoComplete(DelegateTask delegateTask) {
String assignee = delegateTask.getAssignee();
String executionParentId = delegateTask.getFormKey();
String processInstanceId = delegateTask.getProcessInstanceId();
ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId);
String projectId = processAll.getProjectId();
List<ProcessProjectStandardTerm> termList = termMapper.getByModuleOwnerAutoComplete(projectId, assignee, executionParentId);
List<String> designEngineerIds = termList.stream()
.map(ProcessProjectStandardTerm::getDesignEngineer)
.distinct()
.collect(Collectors.toList());
ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID,executionParentId);
Map<String, Object> variables = new HashMap<>();
variables.put(ProcessProjectStandardCommon.DESIGN_ENGINEER_LIST, designEngineerIds);
taskService.complete(delegateTask.getId(),variables);
} }
/** /**
@@ -636,4 +847,35 @@ public class ProcessProjectStandardService extends ServiceImpl<ProcessProjectSta
Map<String, ProcessProjectStandardTerm> stringProcessProjectStandardTermMap = CollStreamUtil.toIdentityMap(list, ProcessProjectStandardTerm::getSplitInfoId); Map<String, ProcessProjectStandardTerm> stringProcessProjectStandardTermMap = CollStreamUtil.toIdentityMap(list, ProcessProjectStandardTerm::getSplitInfoId);
return stringProcessProjectStandardTermMap; return stringProcessProjectStandardTermMap;
} }
public IPage<ProcessProjectStandardTermUser> getTermUserList(ProcessProjectStandardTermUser processProjectStandardTermUser, Integer pageNo, Integer pageSize, HttpServletRequest req) {
ProcessDTO processDTO = processHandleService.getProcessDTO(processProjectStandardTermUser.getTaskId());
ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord();
String originUserId = processApprovalRecord.getOriginUserId();
QueryWrapper<ProcessProjectStandardTermUser> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda()
.eq(ProcessProjectStandardTermUser::getTermId,processProjectStandardTermUser.getId())
.eq(ProcessProjectStandardTermUser::getResponsibleUnitLeader,originUserId);
Page<ProcessProjectStandardTermUser> page = new Page<>(pageNo, pageSize);
Page<ProcessProjectStandardTermUser> pageList = termUserService.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;
}
public List<ProcessProjectStandardTermApproval> getTermApprovalList(String id) {
LambdaQueryWrapper<ProcessProjectStandardTermApproval> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(ProcessProjectStandardTermApproval::getTermId,id);
return termApprovalService.list(wrapper1);
}
} }
@@ -1,8 +1,18 @@
package com.jero.modules.activiti.process.projectstandard.service; 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 org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermUser; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermUser;
import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardTermUserMapper; import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardTermUserMapper;
@@ -13,5 +23,26 @@ import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectSt
*/ */
@Service @Service
public class ProcessProjectStandardTermUserService extends ServiceImpl<ProcessProjectStandardTermUserMapper, ProcessProjectStandardTermUser> { 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;
}
} }
@@ -18,6 +18,9 @@ public class ProcessProjectStandardVO {
/**业务基本信息*/ /**业务基本信息*/
@ApiModelProperty(value = "业务基本信息") @ApiModelProperty(value = "业务基本信息")
private ProcessProjectStandard processProjectStandard; private ProcessProjectStandard processProjectStandard;
/**上一节点处理人*/
@ApiModelProperty(value = "上一节点处理人")
private String moduleOwner;
/**关联条款列表*/ /**关联条款列表*/
@ApiModelProperty(value = "关联条款列表") @ApiModelProperty(value = "关联条款列表")
private List<ProcessProjectStandardTerm> processProjectStandardTermList; private List<ProcessProjectStandardTerm> processProjectStandardTermList;
@@ -1,6 +1,7 @@
package com.jero.modules.activiti.service; package com.jero.modules.activiti.service;
import cn.hutool.core.collection.CollStreamUtil; import cn.hutool.core.collection.CollStreamUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -8,19 +9,23 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.dto.message.SendMessageDTO; import com.jero.common.api.dto.message.SendMessageDTO;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon; import com.jero.common.api.vo.ResultCommon;
import com.jero.common.api.vo.SendMessageAPI; import com.jero.common.api.vo.SendMessageAPI;
import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.controller.WorkCenterController;
import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.mapper.ProcessAllMapper; import com.jero.modules.activiti.mapper.ProcessAllMapper;
import com.jero.modules.activiti.process.common.common.DraftCommon; import com.jero.modules.activiti.process.common.common.DraftCommon;
import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.service.ProcessDraftService; import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.util.SpringContextUtil;
import com.jero.modules.activiti.vo.DelegateTaskParam; import com.jero.modules.activiti.vo.DelegateTaskParam;
import com.jero.modules.activiti.vo.ResolveTaskParam; import com.jero.modules.activiti.vo.ResolveTaskParam;
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
@@ -30,6 +35,7 @@ import org.activiti.engine.HistoryService;
import org.activiti.engine.RuntimeService; import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService; import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task; import org.activiti.engine.task.Task;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -135,12 +141,37 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
processDraftService.update(processDraftUpdateWrapper); processDraftService.update(processDraftUpdateWrapper);
//activiti撤销 //activiti撤销
runtimeService.deleteProcessInstance(processInstanceId,"强制撤回"); runtimeService.deleteProcessInstance(processInstanceId,"强制撤回");
//删除流程总表 //更新流程总表状态
this.removeById(processAll.getId()); update(new LambdaUpdateWrapper<ProcessAll>()
//删除审批表 .eq(ProcessAll::getId, processAll.getId())
LambdaQueryWrapper<ProcessApprovalRecord> wrapper1 = new LambdaQueryWrapper<>(); .set(ProcessAll::getPrcStatus, ProcessStatusEnum.WITHDRAWN.getValue()));
wrapper1.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId);
approvalRecordService.remove(wrapper1); // 更新最后一条待办人员为流程发起人
WorkCenterController workCenterController = SpringContextUtil.getBean(WorkCenterController.class);
ProcessApprovalRecord processApprovalRecord1 = new ProcessApprovalRecord();
processApprovalRecord1.setProcessInstanceId(processInstanceId);
Result<?> approvalRecordList = workCenterController.getApprovalRecordList(processApprovalRecord1, null);
if (!Objects.isNull(approvalRecordList.getResult())){
Page<ProcessApprovalRecord> pageList = (Page<ProcessApprovalRecord>) approvalRecordList.getResult();
if (CollectionUtils.isNotEmpty(pageList.getRecords())){
List<ProcessApprovalRecord> processApprovalRecords = JSON.parseArray(JSON.toJSONString(pageList.getRecords()), ProcessApprovalRecord.class);
if (CollectionUtils.isNotEmpty(processApprovalRecords)){
approvalRecordService.update(
new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getId, processApprovalRecords.get(0).getId())
.set(ProcessApprovalRecord::getUserId, processApprovalRecords.get(processApprovalRecords.size() - 1).getOriginUserId()));
}
}
}
//新增撤销审批记录
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();
processApprovalRecord.setUserId(loginUser.getId());
processApprovalRecord.setProcessInstanceId(processInstanceId);
processApprovalRecord.setFinishFlag(FinishFlagEnum.WITHDRAWN.getValue());
processApprovalRecord.setCreateTime(null);
approvalRecordService.save(processApprovalRecord);
//todo 同步删除操作到统一待办 //todo 同步删除操作到统一待办
} }
@@ -3,18 +3,19 @@ package com.jero.modules.activiti.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.system.api.ISysBaseAPI; import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.query.QueryGenerator; import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.mapper.ProcessApprovalRecordMapper;
import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.common.util.CurrentUserUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.activiti.mapper.ProcessApprovalRecordMapper;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
/** /**
* *
*@author liJiaRao *@author liJiaRao
@@ -32,7 +33,12 @@ public class ProcessApprovalRecordService extends ServiceImpl<ProcessApprovalRec
} }
public Page<ProcessApprovalRecord> pageList(Page<ProcessApprovalRecord> page, ProcessApprovalRecord processApprovalRecord, HttpServletRequest req) { public Page<ProcessApprovalRecord> pageList(Page<ProcessApprovalRecord> page, ProcessApprovalRecord processApprovalRecord, HttpServletRequest req) {
QueryWrapper<ProcessApprovalRecord> wrapper = QueryGenerator.initQueryWrapper(processApprovalRecord, req.getParameterMap()); QueryWrapper<ProcessApprovalRecord> wrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(processApprovalRecord.getFinishFlagSearch())){
wrapper.in("finish_flag", Arrays.asList(processApprovalRecord.getFinishFlagSearch().split(",")));
}
wrapper.eq("process_instance_id", processApprovalRecord.getProcessInstanceId());
wrapper.last("ORDER BY IF(ISNULL(create_time), 1, 0) DESC ,create_time DESC, end_time DESC");
Page<ProcessApprovalRecord> pageList = this.page(page, wrapper); Page<ProcessApprovalRecord> pageList = this.page(page, wrapper);
List<ProcessApprovalRecord> records = pageList.getRecords(); List<ProcessApprovalRecord> records = pageList.getRecords();
for (ProcessApprovalRecord record : records) { for (ProcessApprovalRecord record : records) {
@@ -150,6 +150,8 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
if (CollectionUtils.isNotEmpty(processEsInitChanges)) { if (CollectionUtils.isNotEmpty(processEsInitChanges)) {
ProcessEsInitChange processEsInitChange = processEsInitChanges.get(0); ProcessEsInitChange processEsInitChange = processEsInitChanges.get(0);
if (Objects.equals(processEsInitChange.getApplicationCategory(), ESPApplicationCategoryEnum.INITIATION.getValue())) { if (Objects.equals(processEsInitChange.getApplicationCategory(), ESPApplicationCategoryEnum.INITIATION.getValue())) {
// 删除主起草人抄送节点
processNodeList.removeIf(processNode -> Objects.equals(processNode.getNodeName(), EsInitChangeConstant.AUTO_COPY));
// 将两个节点改名 // 将两个节点改名
processNodeList.forEach(processNode -> { processNodeList.forEach(processNode -> {
if (Objects.equals(processNode.getNodeName(), EsInitChangeConstant.MAIN_DRAFT_USER_LEADER)) { if (Objects.equals(processNode.getNodeName(), EsInitChangeConstant.MAIN_DRAFT_USER_LEADER)) {
@@ -162,6 +164,7 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
} }
// 将两个节点改名 // 将两个节点改名
if (Objects.equals(processEsInitChange.getApplicationCategory(), ESPApplicationCategoryEnum.CHANGE.getValue())) { if (Objects.equals(processEsInitChange.getApplicationCategory(), ESPApplicationCategoryEnum.CHANGE.getValue())) {
// 删除专家审批节点
processNodeList.removeIf(processNode -> Objects.equals(processNode.getNodeName(), EsInitChangeConstant.EXPERT_CHECK)); processNodeList.removeIf(processNode -> Objects.equals(processNode.getNodeName(), EsInitChangeConstant.EXPERT_CHECK));
processNodeList.forEach(processNode -> { processNodeList.forEach(processNode -> {
if (Objects.equals(processNode.getNodeName(), EsInitChangeConstant.MAIN_DRAFT_USER_LEADER)) { if (Objects.equals(processNode.getNodeName(), EsInitChangeConstant.MAIN_DRAFT_USER_LEADER)) {
@@ -1,6 +1,7 @@
package com.jero.modules.activiti.util; package com.jero.modules.activiti.util;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.CommonAPI; import com.jero.common.api.CommonAPI;
import com.jero.common.system.vo.SysDictItemCore; import com.jero.common.system.vo.SysDictItemCore;
import com.jero.common.util.oConvertUtils; import com.jero.common.util.oConvertUtils;
@@ -9,6 +10,10 @@ import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectTyp
import com.jero.modules.laws.common.util.ImportUtil; import com.jero.modules.laws.common.util.ImportUtil;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel;
import com.jero.modules.sys.entity.LawsGrade;
import com.jero.modules.sys.service.ILawsEnterpriseStandardLevelService;
import com.jero.modules.sys.service.ILawsGradeService;
import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.entity.SysDictItem;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
@@ -46,6 +51,12 @@ public class ExcelUtils {
@Resource @Resource
private ImportUtil importUtil; private ImportUtil importUtil;
@Resource
private ILawsGradeService gradeService;
@Resource
private ILawsEnterpriseStandardLevelService enterpriseStandardLevelService;
@Resource @Resource
private ILawsEnterpriseStandardService enterpriseStandardService; private ILawsEnterpriseStandardService enterpriseStandardService;
@@ -234,19 +245,6 @@ public class ExcelUtils {
return textValue.toString(); return textValue.toString();
} }
public String validStandardClassification(String value, List<SysDictItemCore> listDict) {
// 非空检查
if (StrUtil.isBlank(value)) {
return "'标准等级分类'不能为空。";
}
// 检查授权部门
if (!excelUtils.validDict("standard_grade_classify", value, null, null, true, listDict)) {
return "'标准等级分类'无效。";
}
return "";
}
public String validStandardType(String value, List<SysDictItemCore> listDict) { public String validStandardType(String value, List<SysDictItemCore> listDict) {
// 非空检查 // 非空检查
if (StrUtil.isBlank(value)) { if (StrUtil.isBlank(value)) {
@@ -259,18 +257,48 @@ public class ExcelUtils {
return ""; return "";
} }
public String validAuthDept(String value, List<SysDictItemCore> listDict) { public String validAuthDept(String authDept, List<SysDictItemCore> listDict,
// 非空检查 String standardClassification, Map<String, List<String>> authDeptMap) {
if (StrUtil.isBlank(value)) { if (StrUtil.isBlank(standardClassification)) {
return "'标准等级分类'不能为空。";
}
// 检查授权部门
if (!excelUtils.validDict("standard_grade_classify", standardClassification, null,
null, true, listDict)) {
return "'标准等级分类'无效。";
}
String level = translateDictValue("standard_grade_classify", standardClassification, listDict);
if (level.equals("2") || level.equals("3")) {
if (StrUtil.isBlank(authDept)) {
return "'授权部门'不能为空。"; return "'授权部门'不能为空。";
} }
// 检查授权部门 // 检查授权部门
if (!excelUtils.validDict("depart_name", value, "sys_depart", "id", false, listDict)) { if (!excelUtils.validDict("depart_name", authDept, "sys_depart", "id", false, listDict)) {
return "'授权部门'无效。"; return "'授权部门'无效。";
} }
// 将授权部门转换为idList
String deptIds = excelUtils.translateDictValue("depart_name", "id", "sys_depart", authDept, listDict);
boolean isMatching = isMatchingAuthDept(
Arrays.asList(deptIds.split(",")),
level.equals("2") ? authDeptMap.get("1") : authDeptMap.get("2")
);
if (!isMatching) {
return "'授权部门'和'标准等级分类'不匹配。";
}
}
return ""; return "";
} }
private boolean isMatchingAuthDept(List<String> authDeptList, List<String> levelDeptList) {
return new HashSet<>(levelDeptList).containsAll(authDeptList);
}
public String validCooperateUnit(String value, List<SysDictItemCore> listDict) { public String validCooperateUnit(String value, List<SysDictItemCore> listDict) {
// 非空检查 // 非空检查
if (StrUtil.isBlank(value)) { if (StrUtil.isBlank(value)) {
@@ -368,19 +396,24 @@ public class ExcelUtils {
return matcher.find(); return matcher.find();
} }
public String validSingleDateMustInput(String date, String name) { public String validSingleDateMustInputNotBeforeToday(String date, String name) {
if (StrUtil.isBlank(date)) { if (StrUtil.isBlank(date)) {
return "'" + name + "'不能为空。"; return "'" + name + "'不能为空。";
} }
return this.validSingleDate(date, name); return this.validSingleDateNotBeforeToday(date, name);
} }
public String validSingleDate(String date, String name) { public String validSingleDateNotBeforeToday(String date, String name) {
if (importUtil.singleDateValid(date)) { if (StrUtil.isBlank(date)) {
return ""; return "";
} else { }
if (!importUtil.singleDateValid(date)) {
return "'" + name + "'格式错误。"; return "'" + name + "'格式错误。";
} }
if (!importUtil.singleDateValidNotBeforeToday(date)) {
return "'" + name + "'不能早于今天。";
}
return "";
} }
public String validPartName(String value, List<SysDictItemCore> listDict) { public String validPartName(String value, List<SysDictItemCore> listDict) {
@@ -414,4 +447,23 @@ public class ExcelUtils {
} }
return ""; return "";
} }
public Map<String, List<String>> getAllLevelAuthDeptMap() {
Map<String, List<String>> authDeptMap = new HashMap<>();
LambdaQueryWrapper<LawsGrade> gradeWrapper = new LambdaQueryWrapper<>();
gradeWrapper.eq(LawsGrade::getLevel, 1);
LawsGrade levelOne = gradeService.getOne(gradeWrapper);
gradeWrapper.clear();
gradeWrapper.eq(LawsGrade::getLevel, 2);
LawsGrade levelTwo = gradeService.getOne(gradeWrapper);
LambdaQueryWrapper<LawsEnterpriseStandardLevel> levelWrapper = new LambdaQueryWrapper<>();
levelWrapper.eq(LawsEnterpriseStandardLevel::getGradeId, levelOne.getId());
List<LawsEnterpriseStandardLevel> levelOneList = enterpriseStandardLevelService.list(levelWrapper);
levelWrapper.clear();
authDeptMap.put("1", levelOneList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()));
levelWrapper.eq(LawsEnterpriseStandardLevel::getGradeId, levelTwo.getId());
List<LawsEnterpriseStandardLevel> levelTwoList = enterpriseStandardLevelService.list(levelWrapper);
authDeptMap.put("2", levelTwoList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList()));
return authDeptMap;
}
} }
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.LanguageEnum; import com.jero.common.constant.enums.LanguageEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.util.MessageUtils;
import com.jero.common.util.MinioUtil; import com.jero.common.util.MinioUtil;
import com.jero.modules.compare.entity.*; import com.jero.modules.compare.entity.*;
import com.jero.modules.compare.enums.AssessConsistencyEnum; import com.jero.modules.compare.enums.AssessConsistencyEnum;
@@ -279,7 +280,7 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
response.setContentType("application/force-download"); response.setContentType("application/force-download");
//创建工作表对象 //创建工作表对象
String sheetName = "对比结果"; String sheetName = "对比结果";
if (LanguageEnum.CN.getValue().equals(cut)) { if (LanguageEnum.CN.getValue().equals(MessageUtils.getLanguage().getValue())) {
sheetName = "对比结果"; sheetName = "对比结果";
} else { } else {
sheetName = "Comparing results"; sheetName = "Comparing results";
@@ -288,7 +289,7 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
HSSFPatriarch patriarch = (HSSFPatriarch) sheet.createDrawingPatriarch(); HSSFPatriarch patriarch = (HSSFPatriarch) sheet.createDrawingPatriarch();
// 创建头部 // 创建头部
String header = ""; String header = "";
if (LanguageEnum.CN.getValue().equals(cut)) { if (LanguageEnum.CN.getValue().equals(MessageUtils.getLanguage().getValue())) {
header = "所选标准,条款号,条款名称,条款内容,所选标准,条款号,条款名称,条款内容,评论"; header = "所选标准,条款号,条款名称,条款内容,所选标准,条款号,条款名称,条款内容,评论";
} else { } else {
header = "Selected Standard,Number,Title,Content,Selected Standard,Number,Title,Content,Comment"; header = "Selected Standard,Number,Title,Content,Selected Standard,Number,Title,Content,Comment";
@@ -418,7 +419,7 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
} }
if (includeComments || MyStringUtils.isEmpty(selectIds)) { if (includeComments || MyStringUtils.isEmpty(selectIds)) {
Row row = sheet.createRow(i); Row row = sheet.createRow(i);
if (LanguageEnum.CN.getValue().equals(cut)) { if (LanguageEnum.CN.getValue().equals(MessageUtils.getLanguage().getValue())) {
row.createCell(0).setCellValue("全文评论"); row.createCell(0).setCellValue("全文评论");
} else { } else {
row.createCell(0).setCellValue("The full text comments"); row.createCell(0).setCellValue("The full text comments");
@@ -474,7 +475,7 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
os.flush(); os.flush();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
if (LanguageEnum.CN.getValue().equals(cut)) { if (LanguageEnum.CN.getValue().equals(MessageUtils.getLanguage().getValue())) {
throw new JeroBootException("下载文件失败"); throw new JeroBootException("下载文件失败");
} else { } else {
throw new JeroBootException("Failed to download file"); throw new JeroBootException("Failed to download file");
@@ -21,5 +21,6 @@ public class MessageTemplateCodeCommon {
public static final String STANDARD_CHANGE_REFERENCE = "standard_change_reference"; // 法规变更引用标准变更 public static final String STANDARD_CHANGE_REFERENCE = "standard_change_reference"; // 法规变更引用标准变更
public static final String STANDARD_CONSULTATION = "standard_consultation"; // 征求意见结果提醒 public static final String STANDARD_CONSULTATION = "standard_consultation"; // 征求意见结果提醒
public static final String PROJECT_ASSESS_COMPLETE = "project_assess_complete"; // 项目合规评估完成提醒 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"; // 催办 public static final String URGING = "urging"; // 催办
} }
@@ -552,6 +552,39 @@ public class ImportUtil {
return checkList; return checkList;
} }
public boolean singleDateValidNotBeforeToday(String cellValue) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 设置lenient为false使得日期解析更为严格
sdf.setLenient(false);
try {
Date date = sdf.parse(cellValue.trim()); // 解析日期
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
Calendar inputDate = Calendar.getInstance();
inputDate.setTime(date);
inputDate.set(Calendar.HOUR_OF_DAY, 0);
inputDate.set(Calendar.MINUTE, 0);
inputDate.set(Calendar.SECOND, 0);
inputDate.set(Calendar.MILLISECOND, 0);
if (inputDate.before(today)) {
log.error("日期必须大于等于今天");
return false;
}
return true;
} catch (ParseException e) {
// 这里捕获的应该是ParseException
log.error("日期转换错误: {}", e.getMessage());
return false;
}
}
// 单选日期校验 // 单选日期校验
public boolean singleDateValid(String cellValue) { public boolean singleDateValid(String cellValue) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -60,6 +60,7 @@ public class ConsultationController {
@ApiOperation(value="征求意见-详情", notes="征求意见-详情") @ApiOperation(value="征求意见-详情", notes="征求意见-详情")
@GetMapping(value = "/queryDetailByBusinessId") @GetMapping(value = "/queryDetailByBusinessId")
@Translation @Translation
@RequiresPermissions("askForAdvice:search")
public Result<ProcessFbConsultationListVO> queryDetailByBusinessId(String businessId, public Result<ProcessFbConsultationListVO> queryDetailByBusinessId(String businessId,
@ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { @ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
@@ -22,12 +22,11 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -48,6 +47,8 @@ public class LawsDataCenterFolderServiceImpl extends ServiceImpl<LawsDataCenterF
private ILawsDataCenterFileService lawsDataCenterFileService; private ILawsDataCenterFileService lawsDataCenterFileService;
@Autowired @Autowired
private ISysUserService sysUserService; private ISysUserService sysUserService;
@Value("${adminRoleCode}")
private String adminRoleCode;
/** /**
* @Author: liao * @Author: liao
@@ -64,7 +65,9 @@ public class LawsDataCenterFolderServiceImpl extends ServiceImpl<LawsDataCenterF
List<LawsDataCenterFolder> allList = BeanCopyUtils.copyBeanList(lawsDataCenterFolderList, LawsDataCenterFolder.class); List<LawsDataCenterFolder> allList = BeanCopyUtils.copyBeanList(lawsDataCenterFolderList, LawsDataCenterFolder.class);
// 非管理员只能看到自己创建的 or 拥有管理权限 or 拥有查看权限的文件夹 or 默认根目录 // 非管理员只能看到自己创建的 or 拥有管理权限 or 拥有查看权限的文件夹 or 默认根目录
if (!roleIds.contains("admin")){ List<String> adminRoleCodeList = Arrays.asList(adminRoleCode.split(","));
Collection<String> intersection = CollectionUtils.intersection(Arrays.asList(roleIds.split(",")), adminRoleCodeList);
if (!roleIds.contains("admin") && CollectionUtils.isEmpty(intersection)){
lawsDataCenterFolderList = lawsDataCenterFolderList.stream() lawsDataCenterFolderList = lawsDataCenterFolderList.stream()
.filter(v -> (StringUtils.isNotBlank(v.getAuthManageIds()) && v.getAuthManageIds().contains(loginUser.getId())) .filter(v -> (StringUtils.isNotBlank(v.getAuthManageIds()) && v.getAuthManageIds().contains(loginUser.getId()))
|| (StringUtils.isNotBlank(v.getAuthViewIds()) && v.getAuthViewIds().contains(loginUser.getId())) || (StringUtils.isNotBlank(v.getAuthViewIds()) && v.getAuthViewIds().contains(loginUser.getId()))
@@ -1033,13 +1033,6 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
public List<ProcessProjectStandardTerm> processProjectStandardGetList(String sarFileSplitInfoId) { public List<ProcessProjectStandardTerm> processProjectStandardGetList(String sarFileSplitInfoId) {
List<ProcessProjectStandardTerm> processProjectAssessTermList = new ArrayList<>(); List<ProcessProjectStandardTerm> processProjectAssessTermList = new ArrayList<>();
ProcessProjectStandardTerm term = new ProcessProjectStandardTerm(); ProcessProjectStandardTerm term = new ProcessProjectStandardTerm();
// 文档拆分信息
DocumentSplitInfo documentSplitInfo1 = documentSplitMapper.queryDocumentSplitInfoById(sarFileSplitInfoId);
term.setTermNumber(documentSplitInfo1.getSerialNumber());
term.setTermName(documentSplitInfo1.getTitle());
term.setSplitInfoId(sarFileSplitInfoId);
term.setTermText(documentSplitInfo1.getFileType());
processProjectAssessTermList.add(term);
// 文档拆分详情 // 文档拆分详情
Map<String, Object> parameter = new HashMap<>(); Map<String, Object> parameter = new HashMap<>();
parameter.put(INFO_ID, sarFileSplitInfoId); parameter.put(INFO_ID, sarFileSplitInfoId);
@@ -29,10 +29,10 @@ public class EnterpriseStandardInspectVo {
private String id; private String id;
/** /**
* 稽查依据标准号 * 稽查依据标准
*/ */
@Excel(name = "稽查依据标准号", width = 15, needMerge = true) @Excel(name = "稽查依据标准", width = 18, needMerge = true)
@ApiModelProperty(value = "稽查依据标准号") @ApiModelProperty(value = "稽查依据标准")
private String inspectNo; private String inspectNo;
/** /**
@@ -27,8 +27,8 @@ public class ExportDataWithDelayVo {
/** /**
* 稽查依据标准号 * 稽查依据标准号
*/ */
@Excel(name = "稽查依据标准号", width = 15) @Excel(name = "稽查依据标准", width = 18)
@ApiModelProperty(value = "稽查依据标准号") @ApiModelProperty(value = "稽查依据标准")
private String inspectNo; private String inspectNo;
/** /**
@@ -27,6 +27,7 @@ public class ESPlanProjectStatusJob implements Job {
// 每天执行定时任务 判断所有进行中的计划是否逾期 逾期则修改项目状态为逾期 // 每天执行定时任务 判断所有进行中的计划是否逾期 逾期则修改项目状态为逾期
LambdaQueryWrapper<EnterpriseStandardPlan> espWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<EnterpriseStandardPlan> espWrapper = new LambdaQueryWrapper<>();
espWrapper.eq(EnterpriseStandardPlan::getProjectStatus, ESPProjectStatus.IN_PROGRESS.getValue()); espWrapper.eq(EnterpriseStandardPlan::getProjectStatus, ESPProjectStatus.IN_PROGRESS.getValue());
espWrapper.eq(EnterpriseStandardPlan::getProjectStatus, ESPProjectStatus.OVERDUE.getValue());
espWrapper.eq(EnterpriseStandardPlan::getDelFlag, YesOrNoEnum.NO.getValue()); espWrapper.eq(EnterpriseStandardPlan::getDelFlag, YesOrNoEnum.NO.getValue());
List<EnterpriseStandardPlan> list = espService.list(espWrapper); List<EnterpriseStandardPlan> list = espService.list(espWrapper);
Date curDate = new Date(); Date curDate = new Date();
@@ -35,6 +36,8 @@ public class ESPlanProjectStatusJob implements Job {
curDate.after(p.getSolicitationDraftPlanCompleteDate()) || curDate.after(p.getSolicitationDraftPlanCompleteDate()) ||
curDate.after(p.getPlanApprovalDate())) { curDate.after(p.getPlanApprovalDate())) {
p.setProjectStatus(ESPProjectStatus.OVERDUE.getValue()); p.setProjectStatus(ESPProjectStatus.OVERDUE.getValue());
} else {
p.setProjectStatus(ESPProjectStatus.IN_PROGRESS.getValue());
} }
}); });
espService.updateBatchById(list); espService.updateBatchById(list);
@@ -197,11 +197,13 @@
actual_inspect_user, actual_inspect_user,
inspect_status, inspect_status,
group_concat(lesio.plan_inspect_object separator ',') plan_inspect_object, group_concat(lesio.plan_inspect_object separator ',') plan_inspect_object,
(IF(lesid.id IS NOT NULL, TRUE, FALSE)) delay_flag (IF(lesid.id IS NOT NULL, TRUE, FALSE)) delay_flag,
realname
from laws_enterprise_standard_inspect lesi from laws_enterprise_standard_inspect lesi
left join laws_enterprise_standard les on lesi.inspect_no = les.standard_number and les.del_flag = '0' left join laws_enterprise_standard les on lesi.inspect_no = les.standard_number and les.del_flag = '0'
left join laws_enterprise_standard_inspect_object lesio on lesi.id = lesio.inspect_id left join laws_enterprise_standard_inspect_object lesio on lesi.id = lesio.inspect_id
left join laws_enterprise_standard_inspect_delay lesid on lesi.id = lesid.inspect_id left join laws_enterprise_standard_inspect_delay lesid on lesi.id = lesid.inspect_id
left join sys_user u on lesi.inspect_user = u.id
group by lesi.id) t group by lesi.id) t
${ew.customSqlSegment} ${ew.customSqlSegment}
</sql> </sql>
@@ -12,9 +12,6 @@
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="orgCode" column="org_code" jdbcType="VARCHAR"/> <result property="orgCode" column="org_code" jdbcType="VARCHAR"/>
<result property="delFlag" column="del_flag" jdbcType="TINYINT"/> <result property="delFlag" column="del_flag" jdbcType="TINYINT"/>
<result property="processName" column="process_name" jdbcType="VARCHAR"/>
<result property="deadlineDate" column="deadline_date" jdbcType="TIMESTAMP"/>
<result property="processDescription" column="process_description" jdbcType="VARCHAR"/>
<result property="applicationCategory" column="application_category" jdbcType="VARCHAR"/> <result property="applicationCategory" column="application_category" jdbcType="VARCHAR"/>
<result property="projectType" column="project_type" jdbcType="VARCHAR"/> <result property="projectType" column="project_type" jdbcType="VARCHAR"/>
<result property="originEnStandardNo" column="origin_en_standard_no" jdbcType="VARCHAR"/> <result property="originEnStandardNo" column="origin_en_standard_no" jdbcType="VARCHAR"/>
@@ -53,32 +50,11 @@
<result property="similarEnStandardsAnalysis" column="similar_en_standards_analysis" jdbcType="VARCHAR"/> <result property="similarEnStandardsAnalysis" column="similar_en_standards_analysis" jdbcType="VARCHAR"/>
<result property="standardLeadingNecessity" column="standard_leading_necessity" jdbcType="VARCHAR"/> <result property="standardLeadingNecessity" column="standard_leading_necessity" jdbcType="VARCHAR"/>
<result property="projectExpectedEffects" column="project_expected_effects" jdbcType="VARCHAR"/> <result property="projectExpectedEffects" column="project_expected_effects" jdbcType="VARCHAR"/>
<result property="remarks" column="remarks" jdbcType="VARCHAR"/>
<result property="uploadAttachment" column="upload_attachment" jdbcType="VARCHAR"/> <result property="uploadAttachment" column="upload_attachment" jdbcType="VARCHAR"/>
<result property="qualityFlag" column="quality_flag" jdbcType="VARCHAR"/> <result property="qualityFlag" column="quality_flag" jdbcType="VARCHAR"/>
<result property="cooperationUnit" column="cooperation_unit" jdbcType="VARCHAR"/> <result property="cooperationUnit" column="cooperation_unit" jdbcType="VARCHAR"/>
</resultMap> </resultMap>
<sql id="Base_Column_List">
id,create_by,create_time,
update_by,update_time,org_code,
del_flag,process_name,deadline_date,
process_description,application_category,project_type,
origin_en_standard_num,new_en_standard_num,origin_en_standard_name,
new_en_standard_name,en_standard_english_name,en_standard_system,
en_standard_code,en_name_code,standard_category_code,
decade_code,en_standard_classification,draft_planned_complete_date,
solicitation_draft_plan_complete_date,plan_approval_date,project_status,
compilation_description,component_name,auth_dept,
cooperating_units,main_drafting_user,main_drafting_unit,
main_drafting_unit_responsible_person,standard_promoter,draft_completion_date,
draft_submission_date,solicitation_opinion_enabled,solicitation_draft_completion_date,
review_date,approval_date,release_date,
change_status,project_background,similar_na_standards_analysis,
similar_en_standards_analysis,standard_leading_necessity,project_expected_effects,
remarks,attachment,qualityFlag,cooperationUnit
</sql>
<select id="page" resultType="com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardPlanVo"> <select id="page" resultType="com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardPlanVo">
SELECT SELECT
p.id, p.id,
@@ -197,9 +173,6 @@
<select id="getDetailById" resultType="com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan"> <select id="getDetailById" resultType="com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan">
SELECT SELECT
p.id, p.id,
p.process_name,
p.deadline_date,
p.process_description,
p.application_category, p.application_category,
p.project_type, p.project_type,
p.origin_en_standard_no, p.origin_en_standard_no,
@@ -237,7 +210,6 @@
p.similar_en_standards_analysis, p.similar_en_standards_analysis,
p.standard_leading_necessity, p.standard_leading_necessity,
p.project_expected_effects, p.project_expected_effects,
p.remarks,
p.upload_attachment, p.upload_attachment,
p.quality_flag p.quality_flag
FROM FROM
@@ -398,7 +398,7 @@ public class EnterpriseStandardInspectServiceImpl extends ServiceImpl<Enterprise
queryWrapper.eq(StringUtils.isNotBlank(enterpriseStandardInspectVo.getBelongDept()), "belong_dept", enterpriseStandardInspectVo.getBelongDept()); queryWrapper.eq(StringUtils.isNotBlank(enterpriseStandardInspectVo.getBelongDept()), "belong_dept", enterpriseStandardInspectVo.getBelongDept());
queryWrapper.like(StringUtils.isNotBlank(enterpriseStandardInspectVo.getInspectNo()), "inspect_no", enterpriseStandardInspectVo.getInspectNo()); queryWrapper.like(StringUtils.isNotBlank(enterpriseStandardInspectVo.getInspectNo()), "inspect_no", enterpriseStandardInspectVo.getInspectNo());
queryWrapper.like(StringUtils.isNotBlank(enterpriseStandardInspectVo.getInspectName()), "inspect_name", enterpriseStandardInspectVo.getInspectName()); queryWrapper.like(StringUtils.isNotBlank(enterpriseStandardInspectVo.getInspectName()), "inspect_name", enterpriseStandardInspectVo.getInspectName());
queryWrapper.eq(StringUtils.isNotBlank(enterpriseStandardInspectVo.getInspectUser()), "inspect_user", enterpriseStandardInspectVo.getInspectUser()); queryWrapper.like(StringUtils.isNotBlank(enterpriseStandardInspectVo.getInspectUser()), "realname", enterpriseStandardInspectVo.getInspectUser());
queryWrapper.orderByDesc("create_time"); queryWrapper.orderByDesc("create_time");
return queryWrapper; return queryWrapper;
} }
@@ -44,9 +44,6 @@ import java.util.stream.Collectors;
public class EnterpriseStandardPlanServiceImpl extends ServiceImpl<EnterpriseStandardPlanMapper, EnterpriseStandardPlan> public class EnterpriseStandardPlanServiceImpl extends ServiceImpl<EnterpriseStandardPlanMapper, EnterpriseStandardPlan>
implements EnterpriseStandardPlanService, ESSequenceNumberProvider { implements EnterpriseStandardPlanService, ESSequenceNumberProvider {
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource @Resource
private EnterpriseStandardPlanMapper esPlanMapper; private EnterpriseStandardPlanMapper esPlanMapper;
@@ -54,8 +51,12 @@ public class EnterpriseStandardPlanServiceImpl extends ServiceImpl<EnterpriseSta
public IPage<EnterpriseStandardPlanVo> queryPageList(ESPlanQueryDTO esPlanQueryDTO, Integer pageNo, Integer pageSize) { public IPage<EnterpriseStandardPlanVo> queryPageList(ESPlanQueryDTO esPlanQueryDTO, Integer pageNo, Integer pageSize) {
IPage<EnterpriseStandardPlanVo> page = new Page<>(pageNo, pageSize); IPage<EnterpriseStandardPlanVo> page = new Page<>(pageNo, pageSize);
esPlanMapper.page(page, esPlanQueryDTO); esPlanMapper.page(page, esPlanQueryDTO);
// TODO 判断其能否删除 主起草人在待办中未进行操作该计划允许删除(目前都设为允许删除) // 未开始的才可以删除发起流程的时候需要判断计划有没有被删除如果计划被删除了则需要重新制定计划
page.getRecords().forEach(p -> p.setAllowDel(true)); page.getRecords().forEach(enterpriseStandardPlanVo -> {
enterpriseStandardPlanVo.setAllowDel(
ESPProjectStatus.NOT_STARTED.getValue()
.equals(enterpriseStandardPlanVo.getProjectStatus()));
});
return page; return page;
} }
@@ -81,13 +82,18 @@ public class EnterpriseStandardPlanServiceImpl extends ServiceImpl<EnterpriseSta
// 合并 未开始 修订+修订 制定+制定 // 合并 未开始 修订+修订 制定+制定
projectStatusList.add(ESPProjectStatus.NOT_STARTED.getValue()); projectStatusList.add(ESPProjectStatus.NOT_STARTED.getValue());
esPlanQueryDTO.setProjectStatusList(projectStatusList); esPlanQueryDTO.setProjectStatusList(projectStatusList);
} else { } else if (ESPProjectType.RESPONSIBLE_DEPT_CHANGE.getValue().equals(projectType)) {
// 完成时间变更 未开始/进行中
// 工作中止 未开始/进行中
// 责任部门变更 未开始/进行中 // 责任部门变更 未开始/进行中
projectStatusList.add(ESPProjectStatus.NOT_STARTED.getValue()); projectStatusList.add(ESPProjectStatus.NOT_STARTED.getValue());
projectStatusList.add(ESPProjectStatus.IN_PROGRESS.getValue()); projectStatusList.add(ESPProjectStatus.IN_PROGRESS.getValue());
esPlanQueryDTO.setProjectStatusList(projectStatusList); esPlanQueryDTO.setProjectStatusList(projectStatusList);
} else {
// 完成时间变更 未开始/进行中/逾期
// 工作中止 未开始/进行中/逾期
projectStatusList.add(ESPProjectStatus.NOT_STARTED.getValue());
projectStatusList.add(ESPProjectStatus.IN_PROGRESS.getValue());
projectStatusList.add(ESPProjectStatus.OVERDUE.getValue());
esPlanQueryDTO.setProjectStatusList(projectStatusList);
} }
IPage<EnterpriseStandardPlanVo> page = new Page<>(pageNo, pageSize); IPage<EnterpriseStandardPlanVo> page = new Page<>(pageNo, pageSize);
esPlanMapper.page(page, esPlanQueryDTO); esPlanMapper.page(page, esPlanQueryDTO);
@@ -23,10 +23,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -170,15 +167,30 @@ public class LawsHomeQuickAccessServiceImpl extends ServiceImpl<LawsHomeQuickAcc
// 删除旧数据 // 删除旧数据
remove(new LambdaQueryWrapper<LawsHomeQuickAccess>() remove(new LambdaQueryWrapper<LawsHomeQuickAccess>()
.eq(LawsHomeQuickAccess::getUserId, sysUser.getId())); .eq(LawsHomeQuickAccess::getUserId, sysUser.getId()));
// 全部菜单
List<SysPermission> menuAllList = sysPermissionService.list();
// 获取拥有权限的菜单列表
List<SysPermission> sysPermissionList = queryPermissionMenuList("");
// 保存新数据 // 保存新数据
List<LawsHomeQuickAccess> lawsHomeQuickAccessList = new ArrayList<>(); List<LawsHomeQuickAccess> lawsHomeQuickAccessList = new ArrayList<>();
if (StringUtils.isNotBlank(permissionIdList)){ if (StringUtils.isNotBlank(permissionIdList)){
for (String permissionId : permissionIdList.split(",")) { String[] menuId = permissionIdList.split(",");
List<String> errorList = new ArrayList<>();
for (String permissionId : menuId) {
long count = sysPermissionList.stream().filter(v -> v.getId().equals(permissionId)).count();
if (count == 0){
Optional<SysPermission> optional = menuAllList.stream().filter(v -> v.getId().equals(permissionId)).findFirst();
optional.ifPresent(v -> errorList.add(v.getName()));
}
LawsHomeQuickAccess lawsHomeQuickAccess = new LawsHomeQuickAccess(); LawsHomeQuickAccess lawsHomeQuickAccess = new LawsHomeQuickAccess();
lawsHomeQuickAccess.setUserId(sysUser.getId()); lawsHomeQuickAccess.setUserId(sysUser.getId());
lawsHomeQuickAccess.setPermissionId(permissionId); lawsHomeQuickAccess.setPermissionId(permissionId);
lawsHomeQuickAccessList.add(lawsHomeQuickAccess); lawsHomeQuickAccessList.add(lawsHomeQuickAccess);
} }
if (!errorList.isEmpty()){
String join = String.join("", errorList);
throw new JeroBootException(join + ",不能保存没有权限的菜单!");
}
saveBatch(lawsHomeQuickAccessList); saveBatch(lawsHomeQuickAccessList);
} }
} }
@@ -0,0 +1,48 @@
package com.jero.modules.laws.standard.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.modules.laws.enterprise.entity.vo.LawsTreeNodeModel;
import com.jero.modules.laws.standard.entity.LawsTreeNode;
import com.jero.modules.laws.standard.entity.PartName;
import com.jero.modules.laws.standard.entity.TreePage;
import com.jero.modules.laws.standard.service.PartNameService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author: Mzaxd
* @Date: 2024/1/19 10:42
*/
@Api(tags = "零部件")
@RestController
@RequestMapping("/laws/standard/partName")
@Slf4j
public class LawsPartNameController {
@Resource
private PartNameService partNameService;
@AutoLog(value = "企业标准-零部件树")
@ApiOperation(value = "企业标准-零部件树", notes = "企业标准-零部件树")
@GetMapping("/")
public Result<TreePage<PartName>> queryENTreeList(
@RequestParam(required = false, defaultValue = "") @ApiParam("一级节点名称") String nodeName,
@RequestParam(name = "pageNo", defaultValue = "1") @ApiParam("页码") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") @ApiParam("页面大小") Integer pageSize) {
TreePage<PartName> list = partNameService.queryTreeList(nodeName, pageNo, pageSize);
return Result.OK(list);
}
}
@@ -0,0 +1,60 @@
package com.jero.modules.laws.standard.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.modules.laws.standard.entity.LawsUpdateRecord;
import com.jero.modules.laws.standard.service.ILawsUpdateRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
/**
* @Description: 文档动态
* @Author: jero-boot
* @Date: 2024-01-19
* @Version: V1.0
*/
@Api(tags = "文档动态")
@RestController
@RequestMapping("/laws/standard/updateRecord")
@Slf4j
public class LawsUpdateRecordController {
@Resource
private ILawsUpdateRecordService lawsUpdateRecordService;
@AutoLog(value = "文档动态-查询")
@ApiOperation(value = "文档动态-查询", notes = "文档动态-查询")
@GetMapping(value = "/list")
@ApiOperationSupport(order = 1)
@RequiresPermissions("standardRegulationLibrary:documentDynamics:search")
public Result<IPage<LawsUpdateRecord>> getUpdateRecordList(
@RequestParam("content") @ApiParam("消息内容") String content,
@RequestParam(name = "pageNo", defaultValue = "1") @ApiParam("页码") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") @ApiParam("页面显示数量") Integer pageSize) {
IPage<LawsUpdateRecord> pageList = lawsUpdateRecordService.queryPageList(content, pageNo, pageSize);
return Result.OK(pageList);
}
@AutoLog(value = "文档动态-批量删除")
@ApiOperation(value = "文档动态-批量删除", notes = "文档动态-批量删除")
@PostMapping(value = "/deleteBatch")
@ApiOperationSupport(order = 2)
@RequiresPermissions("standardRegulationLibrary:documentDynamics:batchDelete")
public Result<?> batchDelete(@RequestBody Map<String, String> map) {
lawsUpdateRecordService.removeByIds(Arrays.asList(map.get("ids").split(",")));
return Result.OK();
}
}
@@ -0,0 +1,104 @@
package com.jero.modules.laws.standard.entity;
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 java.io.Serializable;
import java.util.Date;
import java.util.List;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @TableName laws_part_name
*/
@Data
@TableName(value = "laws_part_name")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "laws_part_name对象", description = "零部件")
public class PartName implements Serializable {
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键ID")
private String id;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 所属部门
*/
@ApiModelProperty(value = "所属部门")
private String orgCode;
/**
* 0表示未删除,1表示删除
*/
@ApiModelProperty(value = "0表示未删除,1表示删除")
private Integer delFlag;
/**
* 零部件码
*/
@ApiModelProperty(value = "零部件码")
private String code;
/**
* 零部件名称
*/
@ApiModelProperty(value = "零部件名称")
private String name;
/**
* 父级零件id
*/
@ApiModelProperty(value = "父级零件id")
private String parentId;
/**
* 一级节点
*/
@ApiModelProperty(value = "一级节点")
private String firstNode;
/**
* 子零部件
*/
@TableField(exist = false)
@ApiModelProperty(value = "子零部件")
private List<PartName> childPartNameList;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
@@ -0,0 +1,20 @@
package com.jero.modules.laws.standard.entity;
import lombok.Data;
import java.util.List;
/**
* @author: Mzaxd
* @Date: 2024/1/19 15:24
*/
@Data
public class TreePage<T> {
private List<T> records;
private long total;
private long size;
private long current;
}
@@ -0,0 +1,18 @@
package com.jero.modules.laws.standard.mapper;
import com.jero.modules.laws.standard.entity.PartName;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author ThinkBook
* @description 针对表laws_part_name的数据库操作Mapper
* @createDate 2024-01-19 10:37:39
* @Entity com.jero.modules.laws.standard.entity.PartName
*/
public interface PartNameMapper extends BaseMapper<PartName> {
}
@@ -1,5 +1,6 @@
package com.jero.modules.laws.standard.service; package com.jero.modules.laws.standard.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.standard.entity.LawsUpdateRecord; import com.jero.modules.laws.standard.entity.LawsUpdateRecord;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@@ -18,4 +19,12 @@ public interface ILawsUpdateRecordService extends IService<LawsUpdateRecord> {
**/ **/
void addRecord(String standardNumber, String content); void addRecord(String standardNumber, String content);
/**
* 文档动态列表
* @param content 消息内容
* @param pageNo 页码
* @param pageSize 页面显示数量
* @return IPage<LawsUpdateRecord>
*/
IPage<LawsUpdateRecord> queryPageList(String content, Integer pageNo, Integer pageSize);
} }
@@ -0,0 +1,27 @@
package com.jero.modules.laws.standard.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.enterprise.entity.vo.LawsTreeNodeModel;
import com.jero.modules.laws.standard.entity.PartName;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.laws.standard.entity.TreePage;
import java.util.List;
/**
* @author ThinkBook
* @description 针对表laws_part_name的数据库操作Service
* @createDate 2024-01-19 10:37:39
*/
public interface PartNameService extends IService<PartName> {
/**
* 查询零部件树
*
* @param nodeName
* @param pageNo
* @param pageSize
* @return
*/
TreePage<PartName> queryTreeList(String nodeName, Integer pageNo, Integer pageSize);
}
@@ -103,7 +103,7 @@ public class LawsTreeNodeServiceImpl extends ServiceImpl<LawsTreeNodeMapper, Law
} }
} }
private Set<LawsTreeNode> findPathToRoot(List<LawsTreeNode> allNodes, LawsTreeNode node) { public static Set<LawsTreeNode> findPathToRoot(List<LawsTreeNode> allNodes, LawsTreeNode node) {
Set<LawsTreeNode> pathNodes = new HashSet<>(); Set<LawsTreeNode> pathNodes = new HashSet<>();
LawsTreeNode[] currentHolder = new LawsTreeNode[1]; LawsTreeNode[] currentHolder = new LawsTreeNode[1];
currentHolder[0] = node; currentHolder[0] = node;
@@ -116,7 +116,7 @@ public class LawsTreeNodeServiceImpl extends ServiceImpl<LawsTreeNodeMapper, Law
return pathNodes; return pathNodes;
} }
private Set<LawsTreeNode> findAllChildren(List<LawsTreeNode> allNodes, LawsTreeNode node) { public Set<LawsTreeNode> findAllChildren(List<LawsTreeNode> allNodes, LawsTreeNode node) {
Set<LawsTreeNode> childrenSet = new HashSet<>(); Set<LawsTreeNode> childrenSet = new HashSet<>();
List<LawsTreeNode> directChildren = allNodes.stream() List<LawsTreeNode> directChildren = allNodes.stream()
.filter(n -> n.getParentId().equals(node.getId())) .filter(n -> n.getParentId().equals(node.getId()))
@@ -1,5 +1,12 @@
package com.jero.modules.laws.standard.service.impl; package com.jero.modules.laws.standard.service.impl;
import cn.hutool.core.util.StrUtil;
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.Result;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardPlanVo;
import com.jero.modules.laws.standard.entity.LawsUpdateRecord; import com.jero.modules.laws.standard.entity.LawsUpdateRecord;
import com.jero.modules.laws.standard.mapper.LawsUpdateRecordMapper; import com.jero.modules.laws.standard.mapper.LawsUpdateRecordMapper;
import com.jero.modules.laws.standard.service.ILawsUpdateRecordService; import com.jero.modules.laws.standard.service.ILawsUpdateRecordService;
@@ -31,4 +38,15 @@ public class LawsUpdateRecordServiceImpl extends ServiceImpl<LawsUpdateRecordMap
lawsUpdateRecord.setContent(content); lawsUpdateRecord.setContent(content);
save(lawsUpdateRecord); save(lawsUpdateRecord);
} }
@Override
public IPage<LawsUpdateRecord> queryPageList(String content, Integer pageNo, Integer pageSize) {
IPage<LawsUpdateRecord> page = new Page<>(pageNo, pageSize);
LambdaQueryWrapper<LawsUpdateRecord> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StrUtil.isNotBlank(content), LawsUpdateRecord::getContent, content);
queryWrapper.eq(LawsUpdateRecord::getDelFlag, YesOrNoEnum.NO.getValue());
queryWrapper.orderByDesc(LawsUpdateRecord::getCreateTime);
page = page(page, queryWrapper);
return page;
}
} }
@@ -0,0 +1,84 @@
package com.jero.modules.laws.standard.service.impl;
import cn.hutool.core.util.StrUtil;
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.laws.standard.entity.PartName;
import com.jero.modules.laws.standard.entity.TreePage;
import com.jero.modules.laws.standard.service.PartNameService;
import com.jero.modules.laws.standard.mapper.PartNameMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author ThinkBook
* @description 针对表laws_part_name的数据库操作Service实现
* @createDate 2024-01-19 10:37:39
*/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class PartNameServiceImpl extends ServiceImpl<PartNameMapper, PartName>
implements PartNameService {
@Resource
private PartNameMapper partNameMapper;
@Override
public TreePage<PartName> queryTreeList(String nodeName, Integer pageNo, Integer pageSize) {
LambdaQueryWrapper<PartName> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PartName::getDelFlag, YesOrNoEnum.NO.getValue())
.like(StrUtil.isNotBlank(nodeName), PartName::getName, nodeName);
List<PartName> allNodes = partNameMapper.selectList(queryWrapper);
// 将所有节点转换为映射以便快速查找
Map<String, PartName> nodeMap = allNodes.stream()
.collect(Collectors.toMap(PartName::getId, Function.identity()));
// 构建树形结构
List<PartName> topLevelNodes = new ArrayList<>();
allNodes.forEach(node -> {
if (node.getParentId() == null) {
topLevelNodes.add(node);
} else {
PartName parentNode = nodeMap.get(node.getParentId());
if (parentNode != null) {
if (parentNode.getChildPartNameList() == null) {
parentNode.setChildPartNameList(new ArrayList<>());
}
parentNode.getChildPartNameList().add(node);
}
}
});
// 实现分页逻辑
int start = (pageNo - 1) * pageSize;
int end = Math.min(start + pageSize, topLevelNodes.size());
List<PartName> pageData = topLevelNodes.subList(start, end);
// 封装分页信息
TreePage<PartName> result = new TreePage<>();
result.setRecords(pageData);
result.setTotal(topLevelNodes.size());
result.setSize(pageSize);
result.setCurrent(pageNo);
return result;
}
}
@@ -17,6 +17,7 @@ import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -48,6 +49,7 @@ public class LawsStandardizationController extends JeroController<LawsStandardiz
@AutoLog(value = "标准化活动-树结构查询") @AutoLog(value = "标准化活动-树结构查询")
@ApiOperation(value="标准化活动-树结构查询", notes="标准化活动-树结构查询") @ApiOperation(value="标准化活动-树结构查询", notes="标准化活动-树结构查询")
@GetMapping(value = "/queryTreeList") @GetMapping(value = "/queryTreeList")
@RequiresPermissions("standardActivity:search")
public Result<LawsStandardization> queryTreeList() { public Result<LawsStandardization> queryTreeList() {
return Result.OK(lawsStandardizationService.queryTreeList()); return Result.OK(lawsStandardizationService.queryTreeList());
} }
@@ -59,6 +61,7 @@ public class LawsStandardizationController extends JeroController<LawsStandardiz
@AutoLog(value = "标准化活动-统计列表") @AutoLog(value = "标准化活动-统计列表")
@ApiOperation(value="标准化活动-统计列表", notes="标准化活动-统计列表") @ApiOperation(value="标准化活动-统计列表", notes="标准化活动-统计列表")
@GetMapping(value = "/queryStatistics") @GetMapping(value = "/queryStatistics")
@RequiresPermissions("standardActivity:statistical")
public Result<List<LawsStandardization>> queryStatistics() { public Result<List<LawsStandardization>> queryStatistics() {
return Result.OK(lawsStandardizationService.queryStatistics()); return Result.OK(lawsStandardizationService.queryStatistics());
} }
@@ -72,6 +75,7 @@ public class LawsStandardizationController extends JeroController<LawsStandardiz
@AutoLog(value = "标准化活动-添加") @AutoLog(value = "标准化活动-添加")
@ApiOperation(value="标准化活动-添加", notes="标准化活动-添加") @ApiOperation(value="标准化活动-添加", notes="标准化活动-添加")
@PostMapping(value = "/add") @PostMapping(value = "/add")
@RequiresPermissions("standardActivity:add")
public Result<T> add(@Validated @RequestBody StandardizationVO standardizationVO) { public Result<T> add(@Validated @RequestBody StandardizationVO standardizationVO) {
lawsStandardizationService.addOrUpdateStandardization(standardizationVO); lawsStandardizationService.addOrUpdateStandardization(standardizationVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
@@ -86,6 +90,7 @@ public class LawsStandardizationController extends JeroController<LawsStandardiz
@AutoLog(value = "标准化活动-编辑") @AutoLog(value = "标准化活动-编辑")
@ApiOperation(value="标准化活动-编辑", notes="标准化活动-编辑") @ApiOperation(value="标准化活动-编辑", notes="标准化活动-编辑")
@PostMapping(value = "/edit") @PostMapping(value = "/edit")
@RequiresPermissions("standardActivity:edit")
public Result<T> edit(@Validated @RequestBody StandardizationVO standardizationVO) { public Result<T> edit(@Validated @RequestBody StandardizationVO standardizationVO) {
log.info(""); log.info("");
lawsStandardizationService.addOrUpdateStandardization(standardizationVO); lawsStandardizationService.addOrUpdateStandardization(standardizationVO);
@@ -181,6 +186,7 @@ public class LawsStandardizationController extends JeroController<LawsStandardiz
@ApiOperation(value="标准化活动-详情通过id查询", notes="标准化活动-详情通过id查询") @ApiOperation(value="标准化活动-详情通过id查询", notes="标准化活动-详情通过id查询")
@GetMapping(value = "/queryDetailById") @GetMapping(value = "/queryDetailById")
@Translation @Translation
@RequiresPermissions("standardActivity:view")
public Result<StandardizationVO> queryDetailById(@ApiParam("id") String id) { public Result<StandardizationVO> queryDetailById(@ApiParam("id") String id) {
return Result.OK(lawsStandardizationService.queryDetailById(id)); return Result.OK(lawsStandardizationService.queryDetailById(id));
} }
@@ -13,6 +13,7 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@@ -43,6 +44,7 @@ public class LawsTaskTransferController {
@AutoLog(value = "任务转交-基础库信息分页查询") @AutoLog(value = "任务转交-基础库信息分页查询")
@ApiOperation(value="任务转交-基础库信息分页查询", notes="任务转交-基础库信息分页查询") @ApiOperation(value="任务转交-基础库信息分页查询", notes="任务转交-基础库信息分页查询")
@GetMapping(value = "/queryBaseDB") @GetMapping(value = "/queryBaseDB")
@RequiresPermissions("taskCareOf:basicInfo:search")
public Result<IPage<LawsBaseDB>> queryBaseDB(LawsBaseDB lawsBaseDB, public Result<IPage<LawsBaseDB>> queryBaseDB(LawsBaseDB lawsBaseDB,
@ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { @ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
@@ -56,6 +58,7 @@ public class LawsTaskTransferController {
@AutoLog(value = "任务转交-基础库信息转交") @AutoLog(value = "任务转交-基础库信息转交")
@ApiOperation(value="任务转交-基础库信息转交", notes="任务转交-基础库信息转交") @ApiOperation(value="任务转交-基础库信息转交", notes="任务转交-基础库信息转交")
@PostMapping(value = "/baseDBTransfer") @PostMapping(value = "/baseDBTransfer")
@RequiresPermissions("taskCareOf:basicInfo:transfer")
public Result<T> baseDBTransfer(@RequestBody LawsBaseDB lawsBaseDB) { public Result<T> baseDBTransfer(@RequestBody LawsBaseDB lawsBaseDB) {
lawsTaskTransferService.baseDBTransfer(lawsBaseDB); lawsTaskTransferService.baseDBTransfer(lawsBaseDB);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
@@ -68,6 +71,7 @@ public class LawsTaskTransferController {
@AutoLog(value = "任务转交-基础库信息转交(批量)") @AutoLog(value = "任务转交-基础库信息转交(批量)")
@ApiOperation(value="任务转交-基础库信息转交(批量)", notes="任务转交-基础库信息转交(批量)") @ApiOperation(value="任务转交-基础库信息转交(批量)", notes="任务转交-基础库信息转交(批量)")
@PostMapping(value = "/baseDBTransferBatch") @PostMapping(value = "/baseDBTransferBatch")
@RequiresPermissions("taskCareOf:basicInfo:batchTransfer")
public Result<T> baseDBTransferBatch(@RequestBody List<LawsBaseDB> lawsBaseDBList) { public Result<T> baseDBTransferBatch(@RequestBody List<LawsBaseDB> lawsBaseDBList) {
lawsTaskTransferService.baseDBTransferBatch(lawsBaseDBList); lawsTaskTransferService.baseDBTransferBatch(lawsBaseDBList);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
@@ -80,6 +84,7 @@ public class LawsTaskTransferController {
@AutoLog(value = "任务转交-流程信息分页查询") @AutoLog(value = "任务转交-流程信息分页查询")
@ApiOperation(value="任务转交-流程信息分页查询", notes="任务转交-流程信息分页查询") @ApiOperation(value="任务转交-流程信息分页查询", notes="任务转交-流程信息分页查询")
@GetMapping(value = "/queryProcessDB") @GetMapping(value = "/queryProcessDB")
@RequiresPermissions("taskCareOf:processInfo:search")
public Result<IPage<LawsProcessDB>> queryProcessDB(LawsProcessDB lawsProcessDb, public Result<IPage<LawsProcessDB>> queryProcessDB(LawsProcessDB lawsProcessDb,
@ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { @ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
@@ -93,6 +98,7 @@ public class LawsTaskTransferController {
@AutoLog(value = "任务转交-流程信息转交") @AutoLog(value = "任务转交-流程信息转交")
@ApiOperation(value="任务转交-流程信息转交", notes="任务转交-流程信息转交") @ApiOperation(value="任务转交-流程信息转交", notes="任务转交-流程信息转交")
@PostMapping(value = "/processDBTransfer") @PostMapping(value = "/processDBTransfer")
@RequiresPermissions("taskCareOf:processInfo:transfer")
public Result<IPage<LawsProcessDB>> processDBTransfer(@RequestBody LawsProcessDB lawsProcessDB) { public Result<IPage<LawsProcessDB>> processDBTransfer(@RequestBody LawsProcessDB lawsProcessDB) {
lawsTaskTransferService.processDBTransfer(lawsProcessDB); lawsTaskTransferService.processDBTransfer(lawsProcessDB);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
@@ -105,6 +111,7 @@ public class LawsTaskTransferController {
@AutoLog(value = "任务转交-流程信息转交(批量)") @AutoLog(value = "任务转交-流程信息转交(批量)")
@ApiOperation(value="任务转交-流程信息转交(批量)", notes="任务转交-流程信息转交(批量)") @ApiOperation(value="任务转交-流程信息转交(批量)", notes="任务转交-流程信息转交(批量)")
@PostMapping(value = "/processDBTransferBatch") @PostMapping(value = "/processDBTransferBatch")
@RequiresPermissions("taskCareOf:processInfo:batchTransfer")
public Result<IPage<LawsProcessDB>> processDBTransferBatch(@RequestBody List<LawsProcessDB> lawsProcessDBList) { public Result<IPage<LawsProcessDB>> processDBTransferBatch(@RequestBody List<LawsProcessDB> lawsProcessDBList) {
lawsTaskTransferService.processDBTransferBatch(lawsProcessDBList); lawsTaskTransferService.processDBTransferBatch(lawsProcessDBList);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
@@ -1,5 +1,6 @@
package com.jero.modules.laws.tasktransfer.entity; package com.jero.modules.laws.tasktransfer.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.jero.common.aspect.annotation.Dict; import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@@ -37,4 +38,8 @@ public class LawsBaseDB {
/**转交人*/ /**转交人*/
@ApiModelProperty(value = "转交人") @ApiModelProperty(value = "转交人")
private String transferUser; private String transferUser;
/**ids 查询用*/
@ApiModelProperty(value = "ids 查询用")
@TableField(exist = false)
private String ids;
} }
@@ -1,5 +1,6 @@
package com.jero.modules.laws.tasktransfer.entity; package com.jero.modules.laws.tasktransfer.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.jero.common.aspect.annotation.Dict; import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@@ -45,4 +46,8 @@ public class LawsProcessDB {
/**状态*/ /**状态*/
@ApiModelProperty(value="状态: true:可转交,false:不可转交") @ApiModelProperty(value="状态: true:可转交,false:不可转交")
private boolean state; private boolean state;
/**ids 查询用*/
@ApiModelProperty(value = "ids 查询用")
@TableField(exist = false)
private String ids;
} }
@@ -7,6 +7,8 @@ import com.jero.modules.laws.tasktransfer.entity.LawsBaseDB;
import com.jero.modules.laws.tasktransfer.entity.LawsProcessDB; import com.jero.modules.laws.tasktransfer.entity.LawsProcessDB;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @ClassName: LawsTaskTransferMapper * @ClassName: LawsTaskTransferMapper
* @Description: * @Description:
@@ -18,16 +20,31 @@ public interface LawsTaskTransferMapper {
/** /**
* 任务转交-基础库信息分页查询 * 任务转交-基础库信息分页查询
* @param queryWrapper * @param queryWrapper
* @param objectPage * @param page
* @return * @return
*/ */
IPage<LawsBaseDB> queryBaseDB(@Param(Constants.WRAPPER) QueryWrapper<LawsBaseDB> queryWrapper, IPage<LawsBaseDB> objectPage); IPage<LawsBaseDB> queryBaseDB(@Param(Constants.WRAPPER) QueryWrapper<LawsBaseDB> queryWrapper, IPage<LawsBaseDB> page);
/**
* 任务转交-基础库信息列表查询
* @param queryWrapper
* @return
*/
List<LawsBaseDB> queryBaseDB(@Param(Constants.WRAPPER) QueryWrapper<LawsBaseDB> queryWrapper);
/** /**
* 任务转交-流程信息分页查询 * 任务转交-流程信息分页查询
* @param queryWrapper * @param queryWrapper
* @param objectPage * @param page
* @return * @return
*/ */
IPage<LawsProcessDB> queryProcessDB(@Param(Constants.WRAPPER) QueryWrapper<LawsProcessDB> queryWrapper, IPage<LawsProcessDB> objectPage); IPage<LawsProcessDB> queryProcessDB(@Param(Constants.WRAPPER) QueryWrapper<LawsProcessDB> queryWrapper, IPage<LawsProcessDB> page);
/**
* 任务转交-流程信息列表查询
* @param queryWrapper
* @return
*/
List<LawsProcessDB> queryProcessDB(@Param(Constants.WRAPPER) QueryWrapper<LawsProcessDB> queryWrapper);
} }
@@ -23,6 +23,13 @@ public interface ILawsTaskTransferService {
*/ */
IPage<LawsBaseDB> queryBaseDB(LawsBaseDB lawsBaseDB, Integer pageNo, Integer pageSize); IPage<LawsBaseDB> queryBaseDB(LawsBaseDB lawsBaseDB, Integer pageNo, Integer pageSize);
/**
* 任务转交-基础库信息列表查询
* @param lawsBaseDB
* @return
*/
List<LawsBaseDB> queryBaseDB(LawsBaseDB lawsBaseDB);
/** /**
* 任务转交-基础库信息转交 * 任务转交-基础库信息转交
* @param lawsBaseDB * @param lawsBaseDB
@@ -44,6 +51,13 @@ public interface ILawsTaskTransferService {
*/ */
IPage<LawsProcessDB> queryProcessDB(LawsProcessDB lawsProcessDb, Integer pageNo, Integer pageSize); IPage<LawsProcessDB> queryProcessDB(LawsProcessDB lawsProcessDb, Integer pageNo, Integer pageSize);
/**
* 任务转交-流程信息列表查询
* @param lawsProcessDb
* @return
*/
List<LawsProcessDB> queryProcessDB(LawsProcessDB lawsProcessDb);
/** /**
* 任务转交-流程信息转交 * 任务转交-流程信息转交
* @param lawsProcessDB * @param lawsProcessDB
@@ -55,4 +69,16 @@ public interface ILawsTaskTransferService {
* @param lawsProcessDBList * @param lawsProcessDBList
*/ */
void processDBTransferBatch(List<LawsProcessDB> lawsProcessDBList); void processDBTransferBatch(List<LawsProcessDB> lawsProcessDBList);
/**
* 任务转交-是否水平越权(基础库信息)
* @param ids
*/
void isHorizontalOverstepByBaseDB(String ids);
/**
* 任务转交-是否水平越权(流程信息)
* @param ids
*/
void isHorizontalOverstepByProcessDB(String ids);
} }
@@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.constant.enums.LanguageEnum;
import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum; import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.enums.ProcessTypeEnum;
@@ -28,10 +31,12 @@ import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -76,6 +81,12 @@ public class LawsTaskTransferServiceImpl implements ILawsTaskTransferService {
@Override @Override
public IPage<LawsBaseDB> queryBaseDB(LawsBaseDB lawsBaseDB, Integer pageNo, Integer pageSize) { public IPage<LawsBaseDB> queryBaseDB(LawsBaseDB lawsBaseDB, Integer pageNo, Integer pageSize) {
QueryWrapper<LawsBaseDB> queryWrapper = getLawsBaseDBQueryWrapper(lawsBaseDB);
return lawsTaskTransferMapper.queryBaseDB(queryWrapper, new Page<>(pageNo, pageSize));
}
@NotNull
private static QueryWrapper<LawsBaseDB> getLawsBaseDBQueryWrapper(LawsBaseDB lawsBaseDB) {
QueryWrapper<LawsBaseDB> queryWrapper = new QueryWrapper<>(); QueryWrapper<LawsBaseDB> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(lawsBaseDB.getUser()), "u.realname", lawsBaseDB.getUser()); queryWrapper.like(StringUtils.isNotBlank(lawsBaseDB.getUser()), "u.realname", lawsBaseDB.getUser());
queryWrapper.eq(StringUtils.isNotBlank(lawsBaseDB.getType()), "t.type", lawsBaseDB.getType()); queryWrapper.eq(StringUtils.isNotBlank(lawsBaseDB.getType()), "t.type", lawsBaseDB.getType());
@@ -83,14 +94,29 @@ public class LawsTaskTransferServiceImpl implements ILawsTaskTransferService {
queryWrapper.orderByDesc("t.create_time"); queryWrapper.orderByDesc("t.create_time");
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String roleIds = loginUser.getRoleIds(); String roleIds = loginUser.getRoleIds();
if (!roleIds.contains("admin")){ if (!roleIds.contains("admin") && !roleIds.contains("BZGLY")){
queryWrapper.eq("t.user", loginUser.getId()); queryWrapper.eq("t.user", loginUser.getId());
} }
return lawsTaskTransferMapper.queryBaseDB(queryWrapper, new Page<>(pageNo, pageSize)); if (StringUtils.isNotBlank(lawsBaseDB.getIds())){
queryWrapper.in("t.id", Arrays.asList(lawsBaseDB.getIds().split(",")));
}
return queryWrapper;
}
@Override
public List<LawsBaseDB> queryBaseDB(LawsBaseDB lawsBaseDB) {
QueryWrapper<LawsBaseDB> queryWrapper = getLawsBaseDBQueryWrapper(lawsBaseDB);
return lawsTaskTransferMapper.queryBaseDB(queryWrapper);
} }
@Override @Override
public IPage<LawsProcessDB> queryProcessDB(LawsProcessDB lawsProcessDb, Integer pageNo, Integer pageSize) { public IPage<LawsProcessDB> queryProcessDB(LawsProcessDB lawsProcessDb, Integer pageNo, Integer pageSize) {
QueryWrapper<LawsProcessDB> queryWrapper = getLawsProcessDBQueryWrapper(lawsProcessDb);
return lawsTaskTransferMapper.queryProcessDB(queryWrapper, new Page<>(pageNo, pageSize));
}
@NotNull
private static QueryWrapper<LawsProcessDB> getLawsProcessDBQueryWrapper(LawsProcessDB lawsProcessDb) {
QueryWrapper<LawsProcessDB> queryWrapper = new QueryWrapper<>(); QueryWrapper<LawsProcessDB> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(lawsProcessDb.getUser()), "u.realname", lawsProcessDb.getUser()); queryWrapper.like(StringUtils.isNotBlank(lawsProcessDb.getUser()), "u.realname", lawsProcessDb.getUser());
queryWrapper.like(StringUtils.isNotBlank(lawsProcessDb.getPrcNum()), "prc_num", lawsProcessDb.getPrcNum()); queryWrapper.like(StringUtils.isNotBlank(lawsProcessDb.getPrcNum()), "prc_num", lawsProcessDb.getPrcNum());
@@ -103,10 +129,19 @@ public class LawsTaskTransferServiceImpl implements ILawsTaskTransferService {
queryWrapper.orderByDesc("par.create_time"); queryWrapper.orderByDesc("par.create_time");
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String roleIds = loginUser.getRoleIds(); String roleIds = loginUser.getRoleIds();
if (!roleIds.contains("admin")){ if (!roleIds.contains("admin") && !roleIds.contains("BZGLY")){
queryWrapper.eq("par.user_id", loginUser.getId()); queryWrapper.eq("par.user_id", loginUser.getId());
} }
return lawsTaskTransferMapper.queryProcessDB(queryWrapper, new Page<>(pageNo, pageSize)); if (StringUtils.isNotBlank(lawsProcessDb.getIds())){
queryWrapper.in("pa.id", Arrays.asList(lawsProcessDb.getIds().split(",")));
}
return queryWrapper;
}
@Override
public List<LawsProcessDB> queryProcessDB(LawsProcessDB lawsProcessDb) {
QueryWrapper<LawsProcessDB> queryWrapper = getLawsProcessDBQueryWrapper(lawsProcessDb);
return lawsTaskTransferMapper.queryProcessDB(queryWrapper);
} }
@Override @Override
@@ -118,6 +153,10 @@ public class LawsTaskTransferServiceImpl implements ILawsTaskTransferService {
@Override @Override
public void processDBTransferBatch(List<LawsProcessDB> lawsProcessDBList) { public void processDBTransferBatch(List<LawsProcessDB> lawsProcessDBList) {
// 水平越权
List<String> idlist = lawsProcessDBList.stream().map(LawsProcessDB::getId).collect(Collectors.toList());
isHorizontalOverstepByProcessDB(String.join(",", idlist));
for (LawsProcessDB lawsProcessDb : lawsProcessDBList) { for (LawsProcessDB lawsProcessDb : lawsProcessDBList) {
String taskId = lawsProcessDb.getTaskId(); String taskId = lawsProcessDb.getTaskId();
String toUserId = lawsProcessDb.getTransferUser(); String toUserId = lawsProcessDb.getTransferUser();
@@ -130,6 +169,34 @@ public class LawsTaskTransferServiceImpl implements ILawsTaskTransferService {
} }
} }
@Override
public void isHorizontalOverstepByBaseDB(String ids) {
LawsBaseDB lawsBaseDB = new LawsBaseDB();
lawsBaseDB.setIds(ids);
List<LawsBaseDB> lawsBaseDBList = queryBaseDB(lawsBaseDB);
if (Objects.isNull(lawsBaseDBList) || lawsBaseDBList.size() != ids.split(",").length) {
if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) {
throw new JeroBootException("无权限!");
}else{
throw new JeroBootException("No access!");
}
}
}
@Override
public void isHorizontalOverstepByProcessDB(String ids) {
LawsProcessDB lawsProcessDB = new LawsProcessDB();
lawsProcessDB.setIds(ids);
List<LawsProcessDB> lawsProcessDBList = queryProcessDB(lawsProcessDB);
if (Objects.isNull(lawsProcessDBList) || lawsProcessDBList.size() != ids.split(",").length) {
if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) {
throw new JeroBootException("无权限!");
}else{
throw new JeroBootException("No access!");
}
}
}
@Override @Override
public void baseDBTransfer(LawsBaseDB lawsBaseDB) { public void baseDBTransfer(LawsBaseDB lawsBaseDB) {
List<LawsBaseDB> lawsBaseDBList = new ArrayList<>(); List<LawsBaseDB> lawsBaseDBList = new ArrayList<>();
@@ -139,6 +206,9 @@ public class LawsTaskTransferServiceImpl implements ILawsTaskTransferService {
@Override @Override
public void baseDBTransferBatch(List<LawsBaseDB> lawsBaseDBList) { public void baseDBTransferBatch(List<LawsBaseDB> lawsBaseDBList) {
// 水平越权
List<String> idlist = lawsBaseDBList.stream().map(LawsBaseDB::getId).collect(Collectors.toList());
isHorizontalOverstepByBaseDB(String.join(",", idlist));
// 企标计划 // 企标计划
standardPlan(lawsBaseDBList); standardPlan(lawsBaseDBList);
// 标准拆分 // 标准拆分
@@ -1,32 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0zmm786" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.13.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.19.0"> <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
<bpmn:process id="project-not-met" name="项目合规评估流程" isExecutable="true"> <bpmn:process id="project-not-met" name="未符合项跟踪流程" isExecutable="true">
<bpmn:startEvent id="StartEvent_1"> <bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>Flow_12b9yhd</bpmn:outgoing> <bpmn:outgoing>Flow_12b9yhd</bpmn:outgoing>
</bpmn:startEvent> </bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_12b9yhd" sourceRef="StartEvent_1" targetRef="fggcsfqzg" /> <bpmn:sequenceFlow id="Flow_12b9yhd" sourceRef="StartEvent_1" targetRef="fggcsfqzg" />
<bpmn:userTask id="fggcsfqzg" name="法规工程师发起整改" camunda:assignee="${standardsEngineer}"> <bpmn:userTask id="fggcsfqzg" name="法规工程师发起整改" activiti:assignee="${standardsEngineer}">
<bpmn:incoming>Flow_12b9yhd</bpmn:incoming> <bpmn:incoming>Flow_12b9yhd</bpmn:incoming>
<bpmn:outgoing>Flow_0ndqyc9</bpmn:outgoing> <bpmn:outgoing>Flow_0ndqyc9</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>
<bpmn:userTask id="fggcssp" name="法规工程师审批" camunda:assignee="${standardsEngineer}"> <bpmn:userTask id="fggcssp" name="法规工程师审批" activiti:assignee="${standardsEngineer}">
<bpmn:incoming>Flow_0eu6g3b</bpmn:incoming> <bpmn:incoming>Flow_0eu6g3b</bpmn:incoming>
<bpmn:outgoing>Flow_1uaygks</bpmn:outgoing> <bpmn:outgoing>Flow_1uaygks</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>
<bpmn:endEvent id="Event_0nxyypv"> <bpmn:endEvent id="Event_0nxyypv">
<bpmn:incoming>Flow_0ame206</bpmn:incoming> <bpmn:incoming>Flow_0ame206</bpmn:incoming>
</bpmn:endEvent> </bpmn:endEvent>
<bpmn:userTask id="sjgcssczgcl" name="设计工程师上传整改材料" camunda:assignee="${designEngineer}"> <bpmn:userTask id="sjgcssczgcl" name="设计工程师上传整改材料" activiti:assignee="${designEngineer}">
<bpmn:extensionElements> <bpmn:extensionElements />
<camunda:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0ndqyc9</bpmn:incoming> <bpmn:incoming>Flow_0ndqyc9</bpmn:incoming>
<bpmn:incoming>Flow_1torqxs</bpmn:incoming> <bpmn:incoming>Flow_1torqxs</bpmn:incoming>
<bpmn:incoming>Flow_1e2ecjo</bpmn:incoming> <bpmn:incoming>Flow_1e2ecjo</bpmn:incoming>
<bpmn:outgoing>Flow_1ko64jc</bpmn:outgoing> <bpmn:outgoing>Flow_1ko64jc</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>
<bpmn:sequenceFlow id="Flow_0ndqyc9" sourceRef="fggcsfqzg" targetRef="sjgcssczgcl" /> <bpmn:sequenceFlow id="Flow_0ndqyc9" sourceRef="fggcsfqzg" targetRef="sjgcssczgcl" />
<bpmn:userTask id="zgjldsp" name="主管级领导审批" camunda:assignee="${managerLeader}"> <bpmn:userTask id="zgjldsp" name="主管级领导审批" activiti:assignee="${managerLeader}">
<bpmn:incoming>Flow_1ko64jc</bpmn:incoming> <bpmn:incoming>Flow_1ko64jc</bpmn:incoming>
<bpmn:outgoing>Flow_0rn2xkx</bpmn:outgoing> <bpmn:outgoing>Flow_0rn2xkx</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>
@@ -57,7 +55,7 @@
</bpmn:sequenceFlow> </bpmn:sequenceFlow>
</bpmn:process> </bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="project-assessment"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="project-not-met">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="159" y="172" width="36" height="36" /> <dc:Bounds x="159" y="172" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
@@ -1,32 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test"> <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0zmm786" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.13.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.19.0">
<bpmn:process id="project-not-met" name="项目合规评估流程" isExecutable="true"> <bpmn:process id="project-not-met" name="未符合项跟踪流程" isExecutable="true">
<bpmn:startEvent id="StartEvent_1"> <bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>Flow_12b9yhd</bpmn:outgoing> <bpmn:outgoing>Flow_12b9yhd</bpmn:outgoing>
</bpmn:startEvent> </bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_12b9yhd" sourceRef="StartEvent_1" targetRef="fggcsfqzg" /> <bpmn:sequenceFlow id="Flow_12b9yhd" sourceRef="StartEvent_1" targetRef="fggcsfqzg" />
<bpmn:userTask id="fggcsfqzg" name="法规工程师发起整改" activiti:assignee="${standardsEngineer}"> <bpmn:userTask id="fggcsfqzg" name="法规工程师发起整改" camunda:assignee="${standardsEngineer}">
<bpmn:incoming>Flow_12b9yhd</bpmn:incoming> <bpmn:incoming>Flow_12b9yhd</bpmn:incoming>
<bpmn:outgoing>Flow_0ndqyc9</bpmn:outgoing> <bpmn:outgoing>Flow_0ndqyc9</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>
<bpmn:userTask id="fggcssp" name="法规工程师审批" activiti:assignee="${standardsEngineer}"> <bpmn:userTask id="fggcssp" name="法规工程师审批" camunda:assignee="${standardsEngineer}">
<bpmn:incoming>Flow_0eu6g3b</bpmn:incoming> <bpmn:incoming>Flow_0eu6g3b</bpmn:incoming>
<bpmn:outgoing>Flow_1uaygks</bpmn:outgoing> <bpmn:outgoing>Flow_1uaygks</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>
<bpmn:endEvent id="Event_0nxyypv"> <bpmn:endEvent id="Event_0nxyypv">
<bpmn:incoming>Flow_0ame206</bpmn:incoming> <bpmn:incoming>Flow_0ame206</bpmn:incoming>
</bpmn:endEvent> </bpmn:endEvent>
<bpmn:userTask id="sjgcssczgcl" name="设计工程师上传整改材料" activiti:assignee="${designEngineer}"> <bpmn:userTask id="sjgcssczgcl" name="设计工程师上传整改材料" camunda:assignee="${designEngineer}">
<bpmn:extensionElements> <bpmn:extensionElements />
<activiti:taskListener class="com.jero.modules.activiti.process.projectassess.listener.ProcessProjectAssessCreateListener" event="create" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0ndqyc9</bpmn:incoming> <bpmn:incoming>Flow_0ndqyc9</bpmn:incoming>
<bpmn:incoming>Flow_1torqxs</bpmn:incoming> <bpmn:incoming>Flow_1torqxs</bpmn:incoming>
<bpmn:incoming>Flow_1e2ecjo</bpmn:incoming> <bpmn:incoming>Flow_1e2ecjo</bpmn:incoming>
<bpmn:outgoing>Flow_1ko64jc</bpmn:outgoing> <bpmn:outgoing>Flow_1ko64jc</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>
<bpmn:sequenceFlow id="Flow_0ndqyc9" sourceRef="fggcsfqzg" targetRef="sjgcssczgcl" /> <bpmn:sequenceFlow id="Flow_0ndqyc9" sourceRef="fggcsfqzg" targetRef="sjgcssczgcl" />
<bpmn:userTask id="zgjldsp" name="主管级领导审批" activiti:assignee="${managerLeader}"> <bpmn:userTask id="zgjldsp" name="主管级领导审批" camunda:assignee="${managerLeader}">
<bpmn:incoming>Flow_1ko64jc</bpmn:incoming> <bpmn:incoming>Flow_1ko64jc</bpmn:incoming>
<bpmn:outgoing>Flow_0rn2xkx</bpmn:outgoing> <bpmn:outgoing>Flow_0rn2xkx</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>
@@ -288,7 +288,7 @@
<bpmn:incoming>Flow_03v0fem</bpmn:incoming> <bpmn:incoming>Flow_03v0fem</bpmn:incoming>
<bpmn:outgoing>Flow_1gw9i5e</bpmn:outgoing> <bpmn:outgoing>Flow_1gw9i5e</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>
<bpmn:userTask id="sjgcsbcgzlbh" name="设计工程师补充工作令编号" activiti:assignee="${designEngineer}"> <bpmn:userTask id="sjgcsbcgzlbh" name="设计工程师补充立项项目号" activiti:assignee="${designEngineer}">
<bpmn:incoming>Flow_0c3ic1y</bpmn:incoming> <bpmn:incoming>Flow_0c3ic1y</bpmn:incoming>
<bpmn:outgoing>Flow_19ehxvl</bpmn:outgoing> <bpmn:outgoing>Flow_19ehxvl</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics activiti:collection="designEngineerList" activiti:elementVariable="designEngineer"> <bpmn:multiInstanceLoopCharacteristics activiti:collection="designEngineerList" activiti:elementVariable="designEngineer">
@@ -473,18 +473,6 @@
</bpmn:process> </bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="standard-assessment"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="standard-assessment">
<bpmndi:BPMNShape id="Gateway_0mobyxv_di" bpmnElement="Gateway_0mobyxv" isMarkerVisible="true">
<dc:Bounds x="2085" y="195" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1k7uv2r_di" bpmnElement="Event_1k7uv2r">
<dc:Bounds x="2482" y="202" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1fh8fjh_di" bpmnElement="fggcssp">
<dc:Bounds x="1870" y="180" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0y90822_di" bpmnElement="sjgcsbcgzlbh">
<dc:Bounds x="2280" y="180" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="159" y="392" width="36" height="36" /> <dc:Bounds x="159" y="392" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
@@ -502,28 +490,6 @@
<dc:Bounds x="530" y="140" width="100" height="80" /> <dc:Bounds x="530" y="140" width="100" height="80" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0k2p59e" bpmnElement="Gateway_16tlx8e" isMarkerVisible="true">
<dc:Bounds x="555" y="245" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1w7o9oy" bpmnElement="Event_1trh68p">
<dc:Bounds x="562" y="342" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_155ubeu" bpmnElement="bszgjldsp_1">
<dc:Bounds x="660" y="480" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1qktq5f_di" bpmnElement="Gateway_1qktq5f" isMarkerVisible="true">
<dc:Bounds x="685" y="615" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_17bnh8x_di" bpmnElement="Event_17bnh8x">
<dc:Bounds x="692" y="722" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_01qa5y5_di" bpmnElement="Gateway_0vyx6xb">
<dc:Bounds x="765" y="615" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_0s7cvcd_di" bpmnElement="Gateway_15ql8ot">
<dc:Bounds x="1685" y="715" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0njknr1_di" bpmnElement="Activity_08c4m85" isExpanded="true"> <bpmndi:BPMNShape id="Activity_0njknr1_di" bpmnElement="Activity_08c4m85" isExpanded="true">
<dc:Bounds x="670" y="130" width="780" height="280" /> <dc:Bounds x="670" y="130" width="780" height="280" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
@@ -531,12 +497,6 @@
<bpmndi:BPMNShape id="Event_1ian0ub_di" bpmnElement="Event_1ian0ub"> <bpmndi:BPMNShape id="Event_1ian0ub_di" bpmnElement="Event_1ian0ub">
<dc:Bounds x="700" y="172" width="36" height="36" /> <dc:Bounds x="700" y="172" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_02udv1z_di" bpmnElement="mkzrrff_1">
<dc:Bounds x="790" y="150" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0coxith" bpmnElement="Gateway_0r2qm3p" isMarkerVisible="true">
<dc:Bounds x="815" y="248" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1vb9u4y_di" bpmnElement="sjgcspg_1"> <bpmndi:BPMNShape id="Activity_1vb9u4y_di" bpmnElement="sjgcspg_1">
<dc:Bounds x="940" y="233" width="100" height="80" /> <dc:Bounds x="940" y="233" width="100" height="80" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
@@ -550,6 +510,12 @@
<bpmndi:BPMNShape id="Event_151o5cu_di" bpmnElement="Event_151o5cu"> <bpmndi:BPMNShape id="Event_151o5cu_di" bpmnElement="Event_151o5cu">
<dc:Bounds x="1382" y="255" width="36" height="36" /> <dc:Bounds x="1382" y="255" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_02udv1z_di" bpmnElement="mkzrrff_1">
<dc:Bounds x="790" y="150" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0coxith" bpmnElement="Gateway_0r2qm3p" isMarkerVisible="true">
<dc:Bounds x="815" y="248" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1wnjq5x" bpmnElement="Event_1e8jif7"> <bpmndi:BPMNShape id="BPMNShape_1wnjq5x" bpmnElement="Event_1e8jif7">
<dc:Bounds x="822" y="342" width="36" height="36" /> <dc:Bounds x="822" y="342" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
@@ -557,10 +523,34 @@
<di:waypoint x="736" y="190" /> <di:waypoint x="736" y="190" />
<di:waypoint x="790" y="190" /> <di:waypoint x="790" y="190" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1w5wrt4_di" bpmnElement="Flow_1w5wrt4">
<di:waypoint x="1230" y="273" />
<di:waypoint x="1265" y="273" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1m6dxws_di" bpmnElement="Flow_1m6dxws">
<di:waypoint x="1315" y="273" />
<di:waypoint x="1382" y="273" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1338" y="255" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_07hxwn8_di" bpmnElement="Flow_07hxwn8">
<di:waypoint x="1290" y="248" />
<di:waypoint x="1290" y="193" />
<di:waypoint x="990" y="193" />
<di:waypoint x="990" y="233" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1130" y="175" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0a6biwg_di" bpmnElement="Flow_0a6biwg"> <bpmndi:BPMNEdge id="Flow_0a6biwg_di" bpmnElement="Flow_0a6biwg">
<di:waypoint x="840" y="230" /> <di:waypoint x="840" y="230" />
<di:waypoint x="840" y="248" /> <di:waypoint x="840" y="248" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_197effc_di" bpmnElement="Flow_197effc">
<di:waypoint x="1040" y="273" />
<di:waypoint x="1130" y="273" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0td9vsx" bpmnElement="Flow_15xpnyd"> <bpmndi:BPMNEdge id="BPMNEdge_0td9vsx" bpmnElement="Flow_15xpnyd">
<di:waypoint x="840" y="298" /> <di:waypoint x="840" y="298" />
<di:waypoint x="840" y="342" /> <di:waypoint x="840" y="342" />
@@ -575,28 +565,91 @@
<dc:Bounds x="881" y="255" width="44" height="14" /> <dc:Bounds x="881" y="255" width="44" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_07hxwn8_di" bpmnElement="Flow_07hxwn8"> <bpmndi:BPMNShape id="BPMNShape_0k2p59e" bpmnElement="Gateway_16tlx8e" isMarkerVisible="true">
<di:waypoint x="1290" y="248" /> <dc:Bounds x="555" y="245" width="50" height="50" />
<di:waypoint x="1290" y="193" /> </bpmndi:BPMNShape>
<di:waypoint x="990" y="193" /> <bpmndi:BPMNShape id="BPMNShape_1w7o9oy" bpmnElement="Event_1trh68p">
<di:waypoint x="990" y="233" /> <dc:Bounds x="562" y="342" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_0s7cvcd_di" bpmnElement="Gateway_15ql8ot">
<dc:Bounds x="1685" y="715" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_01qa5y5_di" bpmnElement="Gateway_0vyx6xb">
<dc:Bounds x="765" y="615" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0qyu80e" bpmnElement="Activity_0ak2ho3" isExpanded="true">
<dc:Bounds x="855" y="773" width="780" height="280" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1rn9z6v" bpmnElement="Event_0haaibd">
<dc:Bounds x="885" y="815" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1a8xmid" bpmnElement="mkzrrff_4">
<dc:Bounds x="975" y="793" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0kubyme" bpmnElement="Gateway_151dwa8" isMarkerVisible="true">
<dc:Bounds x="1000" y="898" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0sgsn68" bpmnElement="sjgcspg_4">
<dc:Bounds x="1125" y="883" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0u4y8iq" bpmnElement="mkzrrsp_4">
<dc:Bounds x="1315" y="883" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1iunr85" bpmnElement="Gateway_1bduqeh" isMarkerVisible="true">
<dc:Bounds x="1450" y="898" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1un7h24" bpmnElement="Event_1jaa14d">
<dc:Bounds x="1567" y="905" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1xjq7zc" bpmnElement="Event_125tmf0">
<dc:Bounds x="1007" y="985" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_1aai3l6" bpmnElement="Flow_0n3x332">
<di:waypoint x="921" y="833" />
<di:waypoint x="975" y="833" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0xkmcsn" bpmnElement="Flow_1mwm3jy">
<di:waypoint x="1025" y="873" />
<di:waypoint x="1025" y="898" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_17gi23v" bpmnElement="Flow_1u1h3jz">
<di:waypoint x="1025" y="948" />
<di:waypoint x="1025" y="985" />
<bpmndi:BPMNLabel> <bpmndi:BPMNLabel>
<dc:Bounds x="1130" y="175" width="21" height="14" /> <dc:Bounds x="1013" y="963" width="55" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_197effc_di" bpmnElement="Flow_197effc"> <bpmndi:BPMNEdge id="BPMNEdge_00fxze9" bpmnElement="Flow_0aon77n">
<di:waypoint x="1040" y="273" /> <di:waypoint x="1050" y="923" />
<di:waypoint x="1130" y="273" /> <di:waypoint x="1125" y="923" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1w5wrt4_di" bpmnElement="Flow_1w5wrt4">
<di:waypoint x="1230" y="273" />
<di:waypoint x="1265" y="273" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1m6dxws_di" bpmnElement="Flow_1m6dxws">
<di:waypoint x="1315" y="273" />
<di:waypoint x="1382" y="273" />
<bpmndi:BPMNLabel> <bpmndi:BPMNLabel>
<dc:Bounds x="1338" y="255" width="22" height="14" /> <dc:Bounds x="1066" y="905" width="44" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_006s2xy" bpmnElement="Flow_1bzp3jv">
<di:waypoint x="1475" y="898" />
<di:waypoint x="1475" y="843" />
<di:waypoint x="1175" y="843" />
<di:waypoint x="1175" y="883" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1315" y="825" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1d2w3p7" bpmnElement="Flow_0xi7z4i">
<di:waypoint x="1225" y="923" />
<di:waypoint x="1315" y="923" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0zq6rm2" bpmnElement="Flow_044zvbm">
<di:waypoint x="1415" y="923" />
<di:waypoint x="1450" y="923" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0uqbz6j" bpmnElement="Flow_1gymwkm">
<di:waypoint x="1500" y="923" />
<di:waypoint x="1567" y="923" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1523" y="905" width="22" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="BPMNShape_1sv6oe4" bpmnElement="Activity_072gbnv" isExpanded="true"> <bpmndi:BPMNShape id="BPMNShape_1sv6oe4" bpmnElement="Activity_072gbnv" isExpanded="true">
@@ -636,10 +689,6 @@
<dc:Bounds x="1305" y="492" width="21" height="14" /> <dc:Bounds x="1305" y="492" width="21" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1m13a5m_di" bpmnElement="Flow_1m13a5m">
<di:waypoint x="1080" y="590" />
<di:waypoint x="1130" y="590" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1yxmdgj" bpmnElement="Flow_11c0pso"> <bpmndi:BPMNEdge id="BPMNEdge_1yxmdgj" bpmnElement="Flow_11c0pso">
<di:waypoint x="1230" y="590" /> <di:waypoint x="1230" y="590" />
<di:waypoint x="1290" y="590" /> <di:waypoint x="1290" y="590" />
@@ -655,81 +704,20 @@
<dc:Bounds x="1498" y="572" width="22" height="14" /> <dc:Bounds x="1498" y="572" width="22" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="BPMNShape_0qyu80e" bpmnElement="Activity_0ak2ho3" isExpanded="true"> <bpmndi:BPMNEdge id="Flow_1m13a5m_di" bpmnElement="Flow_1m13a5m">
<dc:Bounds x="855" y="773" width="780" height="280" /> <di:waypoint x="1080" y="590" />
<di:waypoint x="1130" y="590" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Event_17bnh8x_di" bpmnElement="Event_17bnh8x">
<dc:Bounds x="692" y="722" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1qktq5f_di" bpmnElement="Gateway_1qktq5f" isMarkerVisible="true">
<dc:Bounds x="685" y="615" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_155ubeu" bpmnElement="bszgjldsp_1">
<dc:Bounds x="660" y="480" width="100" height="80" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1rn9z6v" bpmnElement="Event_0haaibd">
<dc:Bounds x="885" y="815" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1a8xmid" bpmnElement="mkzrrff_4">
<dc:Bounds x="975" y="793" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1xjq7zc" bpmnElement="Event_125tmf0">
<dc:Bounds x="1007" y="985" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0kubyme" bpmnElement="Gateway_151dwa8" isMarkerVisible="true">
<dc:Bounds x="1000" y="898" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0sgsn68" bpmnElement="sjgcspg_4">
<dc:Bounds x="1125" y="883" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0u4y8iq" bpmnElement="mkzrrsp_4">
<dc:Bounds x="1315" y="883" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1iunr85" bpmnElement="Gateway_1bduqeh" isMarkerVisible="true">
<dc:Bounds x="1450" y="898" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1un7h24" bpmnElement="Event_1jaa14d">
<dc:Bounds x="1567" y="905" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_1aai3l6" bpmnElement="Flow_0n3x332">
<di:waypoint x="921" y="833" />
<di:waypoint x="975" y="833" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0xkmcsn" bpmnElement="Flow_1mwm3jy">
<di:waypoint x="1025" y="873" />
<di:waypoint x="1025" y="898" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_00fxze9" bpmnElement="Flow_0aon77n">
<di:waypoint x="1050" y="923" />
<di:waypoint x="1125" y="923" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1066" y="905" width="44" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_17gi23v" bpmnElement="Flow_1u1h3jz">
<di:waypoint x="1025" y="948" />
<di:waypoint x="1025" y="985" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1013" y="963" width="55" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_006s2xy" bpmnElement="Flow_1bzp3jv">
<di:waypoint x="1475" y="898" />
<di:waypoint x="1475" y="843" />
<di:waypoint x="1175" y="843" />
<di:waypoint x="1175" y="883" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1315" y="825" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1d2w3p7" bpmnElement="Flow_0xi7z4i">
<di:waypoint x="1225" y="923" />
<di:waypoint x="1315" y="923" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0zq6rm2" bpmnElement="Flow_044zvbm">
<di:waypoint x="1415" y="923" />
<di:waypoint x="1450" y="923" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0uqbz6j" bpmnElement="Flow_1gymwkm">
<di:waypoint x="1500" y="923" />
<di:waypoint x="1567" y="923" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1523" y="905" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1g6zc95_di" bpmnElement="Flow_1g6zc95"> <bpmndi:BPMNEdge id="Flow_1g6zc95_di" bpmnElement="Flow_1g6zc95">
<di:waypoint x="486" y="180" /> <di:waypoint x="486" y="180" />
<di:waypoint x="530" y="180" /> <di:waypoint x="530" y="180" />
@@ -752,49 +740,6 @@
<dc:Bounds x="631" y="254" width="44" height="14" /> <dc:Bounds x="631" y="254" width="44" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0obo4r2_di" bpmnElement="Flow_0obo4r2">
<di:waypoint x="710" y="410" />
<di:waypoint x="710" y="480" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1rrn9dm_di" bpmnElement="Flow_1rrn9dm">
<di:waypoint x="1710" y="715" />
<di:waypoint x="1710" y="440" />
<di:waypoint x="710" y="440" />
<di:waypoint x="710" y="480" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_10o9sl2_di" bpmnElement="Flow_10o9sl2">
<di:waypoint x="710" y="560" />
<di:waypoint x="710" y="615" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_11i64js_di" bpmnElement="Flow_11i64js">
<di:waypoint x="735" y="640" />
<di:waypoint x="765" y="640" />
<bpmndi:BPMNLabel>
<dc:Bounds x="738" y="623" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_132fp4x_di" bpmnElement="Flow_132fp4x">
<di:waypoint x="710" y="665" />
<di:waypoint x="710" y="722" />
<bpmndi:BPMNLabel>
<dc:Bounds x="714" y="679" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1jjyqj0_di" bpmnElement="Flow_1jjyqj0">
<di:waypoint x="815" y="640" />
<di:waypoint x="870" y="640" />
<bpmndi:BPMNLabel>
<dc:Bounds x="816" y="622" width="55" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1wdzyax_di" bpmnElement="Flow_1wdzyax">
<di:waypoint x="790" y="665" />
<di:waypoint x="790" y="913" />
<di:waypoint x="855" y="913" />
<bpmndi:BPMNLabel>
<dc:Bounds x="797" y="753" width="66" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0q2chl1_di" bpmnElement="Flow_0q2chl1"> <bpmndi:BPMNEdge id="Flow_0q2chl1_di" bpmnElement="Flow_0q2chl1">
<di:waypoint x="1635" y="913" /> <di:waypoint x="1635" y="913" />
<di:waypoint x="1660" y="913" /> <di:waypoint x="1660" y="913" />
@@ -807,6 +752,62 @@
<di:waypoint x="1653" y="740" /> <di:waypoint x="1653" y="740" />
<di:waypoint x="1685" y="740" /> <di:waypoint x="1685" y="740" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1rrn9dm_di" bpmnElement="Flow_1rrn9dm">
<di:waypoint x="1710" y="715" />
<di:waypoint x="1710" y="440" />
<di:waypoint x="710" y="440" />
<di:waypoint x="710" y="480" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0obo4r2_di" bpmnElement="Flow_0obo4r2">
<di:waypoint x="710" y="410" />
<di:waypoint x="710" y="480" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1wdzyax_di" bpmnElement="Flow_1wdzyax">
<di:waypoint x="790" y="665" />
<di:waypoint x="790" y="913" />
<di:waypoint x="855" y="913" />
<bpmndi:BPMNLabel>
<dc:Bounds x="797" y="753" width="66" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1jjyqj0_di" bpmnElement="Flow_1jjyqj0">
<di:waypoint x="815" y="640" />
<di:waypoint x="870" y="640" />
<bpmndi:BPMNLabel>
<dc:Bounds x="816" y="622" width="55" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_132fp4x_di" bpmnElement="Flow_132fp4x">
<di:waypoint x="710" y="665" />
<di:waypoint x="710" y="722" />
<bpmndi:BPMNLabel>
<dc:Bounds x="714" y="679" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_11i64js_di" bpmnElement="Flow_11i64js">
<di:waypoint x="735" y="640" />
<di:waypoint x="765" y="640" />
<bpmndi:BPMNLabel>
<dc:Bounds x="738" y="623" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_10o9sl2_di" bpmnElement="Flow_10o9sl2">
<di:waypoint x="710" y="560" />
<di:waypoint x="710" y="615" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Gateway_0mobyxv_di" bpmnElement="Gateway_0mobyxv" isMarkerVisible="true">
<dc:Bounds x="2085" y="195" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1k7uv2r_di" bpmnElement="Event_1k7uv2r">
<dc:Bounds x="2482" y="202" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1fh8fjh_di" bpmnElement="fggcssp">
<dc:Bounds x="1870" y="180" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0y90822_di" bpmnElement="sjgcsbcgzlbh">
<dc:Bounds x="2280" y="180" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0ehfvul" bpmnElement="Activity_11wslv7" isExpanded="true"> <bpmndi:BPMNShape id="BPMNShape_0ehfvul" bpmnElement="Activity_11wslv7" isExpanded="true">
<dc:Bounds x="1830" y="360" width="1220" height="710" /> <dc:Bounds x="1830" y="360" width="1220" height="710" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
@@ -818,18 +819,68 @@
<dc:Bounds x="1960" y="450" width="100" height="80" /> <dc:Bounds x="1960" y="450" width="100" height="80" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1m87r68" bpmnElement="Activity_1xsrtpj" isExpanded="true">
<dc:Bounds x="2155" y="440" width="750" height="245" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0c83r33" bpmnElement="mkzrrsp_3">
<dc:Bounds x="2575" y="520" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0rgqbsq" bpmnElement="Gateway_0fkslca" isMarkerVisible="true">
<dc:Bounds x="2710" y="535" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1tisvmf" bpmnElement="Event_0uendgp">
<dc:Bounds x="2827" y="542" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1tygdud" bpmnElement="Event_0en8fvn">
<dc:Bounds x="2177" y="542" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1fv02ul" bpmnElement="sjgcspg_3">
<dc:Bounds x="2415" y="520" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0y70zxq" bpmnElement="mkzrrff_3">
<dc:Bounds x="2265" y="520" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_0qxym6m" bpmnElement="Flow_19fpo83">
<di:waypoint x="2675" y="560" />
<di:waypoint x="2710" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1xga16m" bpmnElement="Flow_0j9t3br">
<di:waypoint x="2735" y="535" />
<di:waypoint x="2735" y="480" />
<di:waypoint x="2465" y="480" />
<di:waypoint x="2465" y="520" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2590" y="462" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_04bjto5" bpmnElement="Flow_0920pid">
<di:waypoint x="2760" y="560" />
<di:waypoint x="2827" y="560" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2783" y="542" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0bnzbta" bpmnElement="Flow_1lw0nd8">
<di:waypoint x="2213" y="560" />
<di:waypoint x="2265" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1wy27v4" bpmnElement="Flow_1wjzl0u">
<di:waypoint x="2515" y="560" />
<di:waypoint x="2575" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1y4773i_di" bpmnElement="Flow_1y4773i">
<di:waypoint x="2365" y="560" />
<di:waypoint x="2415" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="BPMNShape_1ks3bye" bpmnElement="Gateway_1uodwb8" isMarkerVisible="true"> <bpmndi:BPMNShape id="BPMNShape_1ks3bye" bpmnElement="Gateway_1uodwb8" isMarkerVisible="true">
<dc:Bounds x="1985" y="572" width="50" height="50" /> <dc:Bounds x="1985" y="572" width="50" height="50" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_179nzso" bpmnElement="Event_1kdwhwn"> <bpmndi:BPMNShape id="BPMNShape_179nzso" bpmnElement="Event_1kdwhwn">
<dc:Bounds x="1992" y="679" width="36" height="36" /> <dc:Bounds x="1992" y="679" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0skeub1" bpmnElement="Gateway_1e8w7bw">
<dc:Bounds x="2065" y="572" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0a1pfq1" bpmnElement="Gateway_1succ9k">
<dc:Bounds x="2975" y="665" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0f4lvxw" bpmnElement="Activity_1n4w1w7" isExpanded="true"> <bpmndi:BPMNShape id="BPMNShape_0f4lvxw" bpmnElement="Activity_1n4w1w7" isExpanded="true">
<dc:Bounds x="2155" y="730" width="780" height="280" /> <dc:Bounds x="2155" y="730" width="780" height="280" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
@@ -905,77 +956,16 @@
<dc:Bounds x="2823" y="862" width="22" height="14" /> <dc:Bounds x="2823" y="862" width="22" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="BPMNShape_1m87r68" bpmnElement="Activity_1xsrtpj" isExpanded="true"> <bpmndi:BPMNShape id="BPMNShape_0skeub1" bpmnElement="Gateway_1e8w7bw">
<dc:Bounds x="2155" y="440" width="750" height="245" /> <dc:Bounds x="2065" y="572" width="50" height="50" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0c83r33" bpmnElement="mkzrrsp_3"> <bpmndi:BPMNShape id="BPMNShape_0a1pfq1" bpmnElement="Gateway_1succ9k">
<dc:Bounds x="2575" y="520" width="100" height="80" /> <dc:Bounds x="2975" y="665" width="50" height="50" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0rgqbsq" bpmnElement="Gateway_0fkslca" isMarkerVisible="true">
<dc:Bounds x="2710" y="535" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1tisvmf" bpmnElement="Event_0uendgp">
<dc:Bounds x="2827" y="542" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1tygdud" bpmnElement="Event_0en8fvn">
<dc:Bounds x="2177" y="542" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1fv02ul" bpmnElement="sjgcspg_3">
<dc:Bounds x="2415" y="520" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0y70zxq" bpmnElement="mkzrrff_3">
<dc:Bounds x="2265" y="520" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_1wy27v4" bpmnElement="Flow_1wjzl0u">
<di:waypoint x="2515" y="560" />
<di:waypoint x="2575" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0qxym6m" bpmnElement="Flow_19fpo83">
<di:waypoint x="2675" y="560" />
<di:waypoint x="2710" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1xga16m" bpmnElement="Flow_0j9t3br">
<di:waypoint x="2735" y="535" />
<di:waypoint x="2735" y="480" />
<di:waypoint x="2465" y="480" />
<di:waypoint x="2465" y="520" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2590" y="462" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_04bjto5" bpmnElement="Flow_0920pid">
<di:waypoint x="2760" y="560" />
<di:waypoint x="2827" y="560" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2783" y="542" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0bnzbta" bpmnElement="Flow_1lw0nd8">
<di:waypoint x="2213" y="560" />
<di:waypoint x="2265" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1y4773i_di" bpmnElement="Flow_1y4773i">
<di:waypoint x="2365" y="560" />
<di:waypoint x="2415" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0x6qt62_di" bpmnElement="Flow_0x6qt62"> <bpmndi:BPMNEdge id="Flow_0x6qt62_di" bpmnElement="Flow_0x6qt62">
<di:waypoint x="1898" y="490" /> <di:waypoint x="1898" y="490" />
<di:waypoint x="1960" y="490" /> <di:waypoint x="1960" y="490" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1fa5lzu" bpmnElement="Flow_0ljfd7s">
<di:waypoint x="2115" y="597" />
<di:waypoint x="2155" y="597" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2111" y="579" width="55" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_117rgu5_di" bpmnElement="Flow_117rgu5">
<di:waypoint x="2010" y="530" />
<di:waypoint x="2010" y="572" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_169fpoj" bpmnElement="Flow_0rkq2tw"> <bpmndi:BPMNEdge id="BPMNEdge_169fpoj" bpmnElement="Flow_0rkq2tw">
<di:waypoint x="2035" y="597" /> <di:waypoint x="2035" y="597" />
<di:waypoint x="2065" y="597" /> <di:waypoint x="2065" y="597" />
@@ -990,6 +980,13 @@
<dc:Bounds x="2014" y="636" width="22" height="14" /> <dc:Bounds x="2014" y="636" width="22" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1fa5lzu" bpmnElement="Flow_0ljfd7s">
<di:waypoint x="2115" y="597" />
<di:waypoint x="2155" y="597" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2111" y="579" width="55" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_188epnk" bpmnElement="Flow_0gac88y"> <bpmndi:BPMNEdge id="BPMNEdge_188epnk" bpmnElement="Flow_0gac88y">
<di:waypoint x="2090" y="622" /> <di:waypoint x="2090" y="622" />
<di:waypoint x="2090" y="870" /> <di:waypoint x="2090" y="870" />
@@ -998,6 +995,10 @@
<dc:Bounds x="2097" y="710" width="66" height="14" /> <dc:Bounds x="2097" y="710" width="66" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_117rgu5_di" bpmnElement="Flow_117rgu5">
<di:waypoint x="2010" y="530" />
<di:waypoint x="2010" y="572" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0zsh74h_di" bpmnElement="Flow_0zsh74h"> <bpmndi:BPMNEdge id="Flow_0zsh74h_di" bpmnElement="Flow_0zsh74h">
<di:waypoint x="2905" y="563" /> <di:waypoint x="2905" y="563" />
<di:waypoint x="2940" y="563" /> <di:waypoint x="2940" y="563" />
@@ -1016,6 +1017,18 @@
<di:waypoint x="2010" y="410" /> <di:waypoint x="2010" y="410" />
<di:waypoint x="2010" y="450" /> <di:waypoint x="2010" y="450" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_12b9yhd_di" bpmnElement="Flow_12b9yhd">
<di:waypoint x="195" y="410" />
<di:waypoint x="250" y="410" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0tgn37q_di" bpmnElement="Flow_0tgn37q">
<di:waypoint x="350" y="410" />
<di:waypoint x="430" y="410" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0w3nr57_di" bpmnElement="Flow_0w3nr57">
<di:waypoint x="1790" y="220" />
<di:waypoint x="1870" y="220" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1gw9i5e_di" bpmnElement="Flow_1gw9i5e"> <bpmndi:BPMNEdge id="Flow_1gw9i5e_di" bpmnElement="Flow_1gw9i5e">
<di:waypoint x="1970" y="220" /> <di:waypoint x="1970" y="220" />
<di:waypoint x="2085" y="220" /> <di:waypoint x="2085" y="220" />
@@ -1027,6 +1040,10 @@
<dc:Bounds x="2198" y="202" width="22" height="14" /> <dc:Bounds x="2198" y="202" width="22" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_19ehxvl_di" bpmnElement="Flow_19ehxvl">
<di:waypoint x="2380" y="220" />
<di:waypoint x="2482" y="220" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0mngw8y_di" bpmnElement="Flow_0mngw8y"> <bpmndi:BPMNEdge id="Flow_0mngw8y_di" bpmnElement="Flow_0mngw8y">
<di:waypoint x="2110" y="245" /> <di:waypoint x="2110" y="245" />
<di:waypoint x="2110" y="360" /> <di:waypoint x="2110" y="360" />
@@ -1034,26 +1051,10 @@
<dc:Bounds x="2115" y="299" width="21" height="14" /> <dc:Bounds x="2115" y="299" width="21" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_19ehxvl_di" bpmnElement="Flow_19ehxvl">
<di:waypoint x="2380" y="220" />
<di:waypoint x="2482" y="220" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0w3nr57_di" bpmnElement="Flow_0w3nr57">
<di:waypoint x="1790" y="220" />
<di:waypoint x="1870" y="220" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_03v0fem_di" bpmnElement="Flow_03v0fem"> <bpmndi:BPMNEdge id="Flow_03v0fem_di" bpmnElement="Flow_03v0fem">
<di:waypoint x="1920" y="360" /> <di:waypoint x="1920" y="360" />
<di:waypoint x="1920" y="260" /> <di:waypoint x="1920" y="260" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_12b9yhd_di" bpmnElement="Flow_12b9yhd">
<di:waypoint x="195" y="410" />
<di:waypoint x="250" y="410" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0tgn37q_di" bpmnElement="Flow_0tgn37q">
<di:waypoint x="350" y="410" />
<di:waypoint x="430" y="410" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane> </bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram> </bpmndi:BPMNDiagram>
</bpmn:definitions> </bpmn:definitions>
@@ -288,7 +288,7 @@
<bpmn:incoming>Flow_03v0fem</bpmn:incoming> <bpmn:incoming>Flow_03v0fem</bpmn:incoming>
<bpmn:outgoing>Flow_1gw9i5e</bpmn:outgoing> <bpmn:outgoing>Flow_1gw9i5e</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>
<bpmn:userTask id="sjgcsbcgzlbh" name="设计工程师补充工作令编号" camunda:assignee="${designEngineer}"> <bpmn:userTask id="sjgcsbcgzlbh" name="设计工程师补充立项项目号" camunda:assignee="${designEngineer}">
<bpmn:incoming>Flow_0c3ic1y</bpmn:incoming> <bpmn:incoming>Flow_0c3ic1y</bpmn:incoming>
<bpmn:outgoing>Flow_19ehxvl</bpmn:outgoing> <bpmn:outgoing>Flow_19ehxvl</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="designEngineerList" camunda:elementVariable="designEngineer"> <bpmn:multiInstanceLoopCharacteristics camunda:collection="designEngineerList" camunda:elementVariable="designEngineer">
@@ -473,18 +473,6 @@
</bpmn:process> </bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="standard-assessment"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="standard-assessment">
<bpmndi:BPMNShape id="Gateway_0mobyxv_di" bpmnElement="Gateway_0mobyxv" isMarkerVisible="true">
<dc:Bounds x="2085" y="195" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1k7uv2r_di" bpmnElement="Event_1k7uv2r">
<dc:Bounds x="2482" y="202" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1fh8fjh_di" bpmnElement="fggcssp">
<dc:Bounds x="1870" y="180" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0y90822_di" bpmnElement="sjgcsbcgzlbh">
<dc:Bounds x="2280" y="180" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="159" y="392" width="36" height="36" /> <dc:Bounds x="159" y="392" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
@@ -502,28 +490,6 @@
<dc:Bounds x="530" y="140" width="100" height="80" /> <dc:Bounds x="530" y="140" width="100" height="80" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0k2p59e" bpmnElement="Gateway_16tlx8e" isMarkerVisible="true">
<dc:Bounds x="555" y="245" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1w7o9oy" bpmnElement="Event_1trh68p">
<dc:Bounds x="562" y="342" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_155ubeu" bpmnElement="bszgjldsp_1">
<dc:Bounds x="660" y="480" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1qktq5f_di" bpmnElement="Gateway_1qktq5f" isMarkerVisible="true">
<dc:Bounds x="685" y="615" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_17bnh8x_di" bpmnElement="Event_17bnh8x">
<dc:Bounds x="692" y="722" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_01qa5y5_di" bpmnElement="Gateway_0vyx6xb">
<dc:Bounds x="765" y="615" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_0s7cvcd_di" bpmnElement="Gateway_15ql8ot">
<dc:Bounds x="1685" y="715" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0njknr1_di" bpmnElement="Activity_08c4m85" isExpanded="true"> <bpmndi:BPMNShape id="Activity_0njknr1_di" bpmnElement="Activity_08c4m85" isExpanded="true">
<dc:Bounds x="670" y="130" width="780" height="280" /> <dc:Bounds x="670" y="130" width="780" height="280" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
@@ -531,12 +497,6 @@
<bpmndi:BPMNShape id="Event_1ian0ub_di" bpmnElement="Event_1ian0ub"> <bpmndi:BPMNShape id="Event_1ian0ub_di" bpmnElement="Event_1ian0ub">
<dc:Bounds x="700" y="172" width="36" height="36" /> <dc:Bounds x="700" y="172" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_02udv1z_di" bpmnElement="mkzrrff_1">
<dc:Bounds x="790" y="150" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0coxith" bpmnElement="Gateway_0r2qm3p" isMarkerVisible="true">
<dc:Bounds x="815" y="248" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1vb9u4y_di" bpmnElement="sjgcspg_1"> <bpmndi:BPMNShape id="Activity_1vb9u4y_di" bpmnElement="sjgcspg_1">
<dc:Bounds x="940" y="233" width="100" height="80" /> <dc:Bounds x="940" y="233" width="100" height="80" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
@@ -550,6 +510,12 @@
<bpmndi:BPMNShape id="Event_151o5cu_di" bpmnElement="Event_151o5cu"> <bpmndi:BPMNShape id="Event_151o5cu_di" bpmnElement="Event_151o5cu">
<dc:Bounds x="1382" y="255" width="36" height="36" /> <dc:Bounds x="1382" y="255" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_02udv1z_di" bpmnElement="mkzrrff_1">
<dc:Bounds x="790" y="150" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0coxith" bpmnElement="Gateway_0r2qm3p" isMarkerVisible="true">
<dc:Bounds x="815" y="248" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1wnjq5x" bpmnElement="Event_1e8jif7"> <bpmndi:BPMNShape id="BPMNShape_1wnjq5x" bpmnElement="Event_1e8jif7">
<dc:Bounds x="822" y="342" width="36" height="36" /> <dc:Bounds x="822" y="342" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
@@ -557,10 +523,34 @@
<di:waypoint x="736" y="190" /> <di:waypoint x="736" y="190" />
<di:waypoint x="790" y="190" /> <di:waypoint x="790" y="190" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1w5wrt4_di" bpmnElement="Flow_1w5wrt4">
<di:waypoint x="1230" y="273" />
<di:waypoint x="1265" y="273" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1m6dxws_di" bpmnElement="Flow_1m6dxws">
<di:waypoint x="1315" y="273" />
<di:waypoint x="1382" y="273" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1338" y="255" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_07hxwn8_di" bpmnElement="Flow_07hxwn8">
<di:waypoint x="1290" y="248" />
<di:waypoint x="1290" y="193" />
<di:waypoint x="990" y="193" />
<di:waypoint x="990" y="233" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1130" y="175" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0a6biwg_di" bpmnElement="Flow_0a6biwg"> <bpmndi:BPMNEdge id="Flow_0a6biwg_di" bpmnElement="Flow_0a6biwg">
<di:waypoint x="840" y="230" /> <di:waypoint x="840" y="230" />
<di:waypoint x="840" y="248" /> <di:waypoint x="840" y="248" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_197effc_di" bpmnElement="Flow_197effc">
<di:waypoint x="1040" y="273" />
<di:waypoint x="1130" y="273" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0td9vsx" bpmnElement="Flow_15xpnyd"> <bpmndi:BPMNEdge id="BPMNEdge_0td9vsx" bpmnElement="Flow_15xpnyd">
<di:waypoint x="840" y="298" /> <di:waypoint x="840" y="298" />
<di:waypoint x="840" y="342" /> <di:waypoint x="840" y="342" />
@@ -575,28 +565,91 @@
<dc:Bounds x="881" y="255" width="44" height="14" /> <dc:Bounds x="881" y="255" width="44" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_07hxwn8_di" bpmnElement="Flow_07hxwn8"> <bpmndi:BPMNShape id="BPMNShape_0k2p59e" bpmnElement="Gateway_16tlx8e" isMarkerVisible="true">
<di:waypoint x="1290" y="248" /> <dc:Bounds x="555" y="245" width="50" height="50" />
<di:waypoint x="1290" y="193" /> </bpmndi:BPMNShape>
<di:waypoint x="990" y="193" /> <bpmndi:BPMNShape id="BPMNShape_1w7o9oy" bpmnElement="Event_1trh68p">
<di:waypoint x="990" y="233" /> <dc:Bounds x="562" y="342" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_0s7cvcd_di" bpmnElement="Gateway_15ql8ot">
<dc:Bounds x="1685" y="715" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_01qa5y5_di" bpmnElement="Gateway_0vyx6xb">
<dc:Bounds x="765" y="615" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0qyu80e" bpmnElement="Activity_0ak2ho3" isExpanded="true">
<dc:Bounds x="855" y="773" width="780" height="280" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1rn9z6v" bpmnElement="Event_0haaibd">
<dc:Bounds x="885" y="815" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1a8xmid" bpmnElement="mkzrrff_4">
<dc:Bounds x="975" y="793" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0kubyme" bpmnElement="Gateway_151dwa8" isMarkerVisible="true">
<dc:Bounds x="1000" y="898" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0sgsn68" bpmnElement="sjgcspg_4">
<dc:Bounds x="1125" y="883" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0u4y8iq" bpmnElement="mkzrrsp_4">
<dc:Bounds x="1315" y="883" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1iunr85" bpmnElement="Gateway_1bduqeh" isMarkerVisible="true">
<dc:Bounds x="1450" y="898" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1un7h24" bpmnElement="Event_1jaa14d">
<dc:Bounds x="1567" y="905" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1xjq7zc" bpmnElement="Event_125tmf0">
<dc:Bounds x="1007" y="985" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_1aai3l6" bpmnElement="Flow_0n3x332">
<di:waypoint x="921" y="833" />
<di:waypoint x="975" y="833" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0xkmcsn" bpmnElement="Flow_1mwm3jy">
<di:waypoint x="1025" y="873" />
<di:waypoint x="1025" y="898" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_17gi23v" bpmnElement="Flow_1u1h3jz">
<di:waypoint x="1025" y="948" />
<di:waypoint x="1025" y="985" />
<bpmndi:BPMNLabel> <bpmndi:BPMNLabel>
<dc:Bounds x="1130" y="175" width="21" height="14" /> <dc:Bounds x="1013" y="963" width="55" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_197effc_di" bpmnElement="Flow_197effc"> <bpmndi:BPMNEdge id="BPMNEdge_00fxze9" bpmnElement="Flow_0aon77n">
<di:waypoint x="1040" y="273" /> <di:waypoint x="1050" y="923" />
<di:waypoint x="1130" y="273" /> <di:waypoint x="1125" y="923" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1w5wrt4_di" bpmnElement="Flow_1w5wrt4">
<di:waypoint x="1230" y="273" />
<di:waypoint x="1265" y="273" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1m6dxws_di" bpmnElement="Flow_1m6dxws">
<di:waypoint x="1315" y="273" />
<di:waypoint x="1382" y="273" />
<bpmndi:BPMNLabel> <bpmndi:BPMNLabel>
<dc:Bounds x="1338" y="255" width="22" height="14" /> <dc:Bounds x="1066" y="905" width="44" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_006s2xy" bpmnElement="Flow_1bzp3jv">
<di:waypoint x="1475" y="898" />
<di:waypoint x="1475" y="843" />
<di:waypoint x="1175" y="843" />
<di:waypoint x="1175" y="883" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1315" y="825" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1d2w3p7" bpmnElement="Flow_0xi7z4i">
<di:waypoint x="1225" y="923" />
<di:waypoint x="1315" y="923" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0zq6rm2" bpmnElement="Flow_044zvbm">
<di:waypoint x="1415" y="923" />
<di:waypoint x="1450" y="923" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0uqbz6j" bpmnElement="Flow_1gymwkm">
<di:waypoint x="1500" y="923" />
<di:waypoint x="1567" y="923" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1523" y="905" width="22" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="BPMNShape_1sv6oe4" bpmnElement="Activity_072gbnv" isExpanded="true"> <bpmndi:BPMNShape id="BPMNShape_1sv6oe4" bpmnElement="Activity_072gbnv" isExpanded="true">
@@ -636,10 +689,6 @@
<dc:Bounds x="1305" y="492" width="21" height="14" /> <dc:Bounds x="1305" y="492" width="21" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1m13a5m_di" bpmnElement="Flow_1m13a5m">
<di:waypoint x="1080" y="590" />
<di:waypoint x="1130" y="590" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1yxmdgj" bpmnElement="Flow_11c0pso"> <bpmndi:BPMNEdge id="BPMNEdge_1yxmdgj" bpmnElement="Flow_11c0pso">
<di:waypoint x="1230" y="590" /> <di:waypoint x="1230" y="590" />
<di:waypoint x="1290" y="590" /> <di:waypoint x="1290" y="590" />
@@ -655,81 +704,20 @@
<dc:Bounds x="1498" y="572" width="22" height="14" /> <dc:Bounds x="1498" y="572" width="22" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="BPMNShape_0qyu80e" bpmnElement="Activity_0ak2ho3" isExpanded="true"> <bpmndi:BPMNEdge id="Flow_1m13a5m_di" bpmnElement="Flow_1m13a5m">
<dc:Bounds x="855" y="773" width="780" height="280" /> <di:waypoint x="1080" y="590" />
<di:waypoint x="1130" y="590" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Event_17bnh8x_di" bpmnElement="Event_17bnh8x">
<dc:Bounds x="692" y="722" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1qktq5f_di" bpmnElement="Gateway_1qktq5f" isMarkerVisible="true">
<dc:Bounds x="685" y="615" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_155ubeu" bpmnElement="bszgjldsp_1">
<dc:Bounds x="660" y="480" width="100" height="80" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1rn9z6v" bpmnElement="Event_0haaibd">
<dc:Bounds x="885" y="815" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1a8xmid" bpmnElement="mkzrrff_4">
<dc:Bounds x="975" y="793" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1xjq7zc" bpmnElement="Event_125tmf0">
<dc:Bounds x="1007" y="985" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0kubyme" bpmnElement="Gateway_151dwa8" isMarkerVisible="true">
<dc:Bounds x="1000" y="898" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0sgsn68" bpmnElement="sjgcspg_4">
<dc:Bounds x="1125" y="883" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0u4y8iq" bpmnElement="mkzrrsp_4">
<dc:Bounds x="1315" y="883" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1iunr85" bpmnElement="Gateway_1bduqeh" isMarkerVisible="true">
<dc:Bounds x="1450" y="898" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1un7h24" bpmnElement="Event_1jaa14d">
<dc:Bounds x="1567" y="905" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_1aai3l6" bpmnElement="Flow_0n3x332">
<di:waypoint x="921" y="833" />
<di:waypoint x="975" y="833" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0xkmcsn" bpmnElement="Flow_1mwm3jy">
<di:waypoint x="1025" y="873" />
<di:waypoint x="1025" y="898" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_00fxze9" bpmnElement="Flow_0aon77n">
<di:waypoint x="1050" y="923" />
<di:waypoint x="1125" y="923" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1066" y="905" width="44" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_17gi23v" bpmnElement="Flow_1u1h3jz">
<di:waypoint x="1025" y="948" />
<di:waypoint x="1025" y="985" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1013" y="963" width="55" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_006s2xy" bpmnElement="Flow_1bzp3jv">
<di:waypoint x="1475" y="898" />
<di:waypoint x="1475" y="843" />
<di:waypoint x="1175" y="843" />
<di:waypoint x="1175" y="883" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1315" y="825" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1d2w3p7" bpmnElement="Flow_0xi7z4i">
<di:waypoint x="1225" y="923" />
<di:waypoint x="1315" y="923" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0zq6rm2" bpmnElement="Flow_044zvbm">
<di:waypoint x="1415" y="923" />
<di:waypoint x="1450" y="923" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0uqbz6j" bpmnElement="Flow_1gymwkm">
<di:waypoint x="1500" y="923" />
<di:waypoint x="1567" y="923" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1523" y="905" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1g6zc95_di" bpmnElement="Flow_1g6zc95"> <bpmndi:BPMNEdge id="Flow_1g6zc95_di" bpmnElement="Flow_1g6zc95">
<di:waypoint x="486" y="180" /> <di:waypoint x="486" y="180" />
<di:waypoint x="530" y="180" /> <di:waypoint x="530" y="180" />
@@ -752,49 +740,6 @@
<dc:Bounds x="631" y="254" width="44" height="14" /> <dc:Bounds x="631" y="254" width="44" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0obo4r2_di" bpmnElement="Flow_0obo4r2">
<di:waypoint x="710" y="410" />
<di:waypoint x="710" y="480" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1rrn9dm_di" bpmnElement="Flow_1rrn9dm">
<di:waypoint x="1710" y="715" />
<di:waypoint x="1710" y="440" />
<di:waypoint x="710" y="440" />
<di:waypoint x="710" y="480" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_10o9sl2_di" bpmnElement="Flow_10o9sl2">
<di:waypoint x="710" y="560" />
<di:waypoint x="710" y="615" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_11i64js_di" bpmnElement="Flow_11i64js">
<di:waypoint x="735" y="640" />
<di:waypoint x="765" y="640" />
<bpmndi:BPMNLabel>
<dc:Bounds x="738" y="623" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_132fp4x_di" bpmnElement="Flow_132fp4x">
<di:waypoint x="710" y="665" />
<di:waypoint x="710" y="722" />
<bpmndi:BPMNLabel>
<dc:Bounds x="714" y="679" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1jjyqj0_di" bpmnElement="Flow_1jjyqj0">
<di:waypoint x="815" y="640" />
<di:waypoint x="870" y="640" />
<bpmndi:BPMNLabel>
<dc:Bounds x="816" y="622" width="55" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1wdzyax_di" bpmnElement="Flow_1wdzyax">
<di:waypoint x="790" y="665" />
<di:waypoint x="790" y="913" />
<di:waypoint x="855" y="913" />
<bpmndi:BPMNLabel>
<dc:Bounds x="797" y="753" width="66" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0q2chl1_di" bpmnElement="Flow_0q2chl1"> <bpmndi:BPMNEdge id="Flow_0q2chl1_di" bpmnElement="Flow_0q2chl1">
<di:waypoint x="1635" y="913" /> <di:waypoint x="1635" y="913" />
<di:waypoint x="1660" y="913" /> <di:waypoint x="1660" y="913" />
@@ -807,6 +752,62 @@
<di:waypoint x="1653" y="740" /> <di:waypoint x="1653" y="740" />
<di:waypoint x="1685" y="740" /> <di:waypoint x="1685" y="740" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1rrn9dm_di" bpmnElement="Flow_1rrn9dm">
<di:waypoint x="1710" y="715" />
<di:waypoint x="1710" y="440" />
<di:waypoint x="710" y="440" />
<di:waypoint x="710" y="480" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0obo4r2_di" bpmnElement="Flow_0obo4r2">
<di:waypoint x="710" y="410" />
<di:waypoint x="710" y="480" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1wdzyax_di" bpmnElement="Flow_1wdzyax">
<di:waypoint x="790" y="665" />
<di:waypoint x="790" y="913" />
<di:waypoint x="855" y="913" />
<bpmndi:BPMNLabel>
<dc:Bounds x="797" y="753" width="66" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1jjyqj0_di" bpmnElement="Flow_1jjyqj0">
<di:waypoint x="815" y="640" />
<di:waypoint x="870" y="640" />
<bpmndi:BPMNLabel>
<dc:Bounds x="816" y="622" width="55" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_132fp4x_di" bpmnElement="Flow_132fp4x">
<di:waypoint x="710" y="665" />
<di:waypoint x="710" y="722" />
<bpmndi:BPMNLabel>
<dc:Bounds x="714" y="679" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_11i64js_di" bpmnElement="Flow_11i64js">
<di:waypoint x="735" y="640" />
<di:waypoint x="765" y="640" />
<bpmndi:BPMNLabel>
<dc:Bounds x="738" y="623" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_10o9sl2_di" bpmnElement="Flow_10o9sl2">
<di:waypoint x="710" y="560" />
<di:waypoint x="710" y="615" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Gateway_0mobyxv_di" bpmnElement="Gateway_0mobyxv" isMarkerVisible="true">
<dc:Bounds x="2085" y="195" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1k7uv2r_di" bpmnElement="Event_1k7uv2r">
<dc:Bounds x="2482" y="202" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1fh8fjh_di" bpmnElement="fggcssp">
<dc:Bounds x="1870" y="180" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0y90822_di" bpmnElement="sjgcsbcgzlbh">
<dc:Bounds x="2280" y="180" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0ehfvul" bpmnElement="Activity_11wslv7" isExpanded="true"> <bpmndi:BPMNShape id="BPMNShape_0ehfvul" bpmnElement="Activity_11wslv7" isExpanded="true">
<dc:Bounds x="1830" y="360" width="1220" height="710" /> <dc:Bounds x="1830" y="360" width="1220" height="710" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
@@ -818,18 +819,68 @@
<dc:Bounds x="1960" y="450" width="100" height="80" /> <dc:Bounds x="1960" y="450" width="100" height="80" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1m87r68" bpmnElement="Activity_1xsrtpj" isExpanded="true">
<dc:Bounds x="2155" y="440" width="750" height="245" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0c83r33" bpmnElement="mkzrrsp_3">
<dc:Bounds x="2575" y="520" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0rgqbsq" bpmnElement="Gateway_0fkslca" isMarkerVisible="true">
<dc:Bounds x="2710" y="535" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1tisvmf" bpmnElement="Event_0uendgp">
<dc:Bounds x="2827" y="542" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1tygdud" bpmnElement="Event_0en8fvn">
<dc:Bounds x="2177" y="542" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1fv02ul" bpmnElement="sjgcspg_3">
<dc:Bounds x="2415" y="520" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0y70zxq" bpmnElement="mkzrrff_3">
<dc:Bounds x="2265" y="520" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_0qxym6m" bpmnElement="Flow_19fpo83">
<di:waypoint x="2675" y="560" />
<di:waypoint x="2710" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1xga16m" bpmnElement="Flow_0j9t3br">
<di:waypoint x="2735" y="535" />
<di:waypoint x="2735" y="480" />
<di:waypoint x="2465" y="480" />
<di:waypoint x="2465" y="520" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2590" y="462" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_04bjto5" bpmnElement="Flow_0920pid">
<di:waypoint x="2760" y="560" />
<di:waypoint x="2827" y="560" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2783" y="542" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0bnzbta" bpmnElement="Flow_1lw0nd8">
<di:waypoint x="2213" y="560" />
<di:waypoint x="2265" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1wy27v4" bpmnElement="Flow_1wjzl0u">
<di:waypoint x="2515" y="560" />
<di:waypoint x="2575" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1y4773i_di" bpmnElement="Flow_1y4773i">
<di:waypoint x="2365" y="560" />
<di:waypoint x="2415" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="BPMNShape_1ks3bye" bpmnElement="Gateway_1uodwb8" isMarkerVisible="true"> <bpmndi:BPMNShape id="BPMNShape_1ks3bye" bpmnElement="Gateway_1uodwb8" isMarkerVisible="true">
<dc:Bounds x="1985" y="572" width="50" height="50" /> <dc:Bounds x="1985" y="572" width="50" height="50" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_179nzso" bpmnElement="Event_1kdwhwn"> <bpmndi:BPMNShape id="BPMNShape_179nzso" bpmnElement="Event_1kdwhwn">
<dc:Bounds x="1992" y="679" width="36" height="36" /> <dc:Bounds x="1992" y="679" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0skeub1" bpmnElement="Gateway_1e8w7bw">
<dc:Bounds x="2065" y="572" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0a1pfq1" bpmnElement="Gateway_1succ9k">
<dc:Bounds x="2975" y="665" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0f4lvxw" bpmnElement="Activity_1n4w1w7" isExpanded="true"> <bpmndi:BPMNShape id="BPMNShape_0f4lvxw" bpmnElement="Activity_1n4w1w7" isExpanded="true">
<dc:Bounds x="2155" y="730" width="780" height="280" /> <dc:Bounds x="2155" y="730" width="780" height="280" />
<bpmndi:BPMNLabel /> <bpmndi:BPMNLabel />
@@ -905,77 +956,16 @@
<dc:Bounds x="2823" y="862" width="22" height="14" /> <dc:Bounds x="2823" y="862" width="22" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="BPMNShape_1m87r68" bpmnElement="Activity_1xsrtpj" isExpanded="true"> <bpmndi:BPMNShape id="BPMNShape_0skeub1" bpmnElement="Gateway_1e8w7bw">
<dc:Bounds x="2155" y="440" width="750" height="245" /> <dc:Bounds x="2065" y="572" width="50" height="50" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0c83r33" bpmnElement="mkzrrsp_3"> <bpmndi:BPMNShape id="BPMNShape_0a1pfq1" bpmnElement="Gateway_1succ9k">
<dc:Bounds x="2575" y="520" width="100" height="80" /> <dc:Bounds x="2975" y="665" width="50" height="50" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0rgqbsq" bpmnElement="Gateway_0fkslca" isMarkerVisible="true">
<dc:Bounds x="2710" y="535" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1tisvmf" bpmnElement="Event_0uendgp">
<dc:Bounds x="2827" y="542" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1tygdud" bpmnElement="Event_0en8fvn">
<dc:Bounds x="2177" y="542" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1fv02ul" bpmnElement="sjgcspg_3">
<dc:Bounds x="2415" y="520" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0y70zxq" bpmnElement="mkzrrff_3">
<dc:Bounds x="2265" y="520" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_1wy27v4" bpmnElement="Flow_1wjzl0u">
<di:waypoint x="2515" y="560" />
<di:waypoint x="2575" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0qxym6m" bpmnElement="Flow_19fpo83">
<di:waypoint x="2675" y="560" />
<di:waypoint x="2710" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1xga16m" bpmnElement="Flow_0j9t3br">
<di:waypoint x="2735" y="535" />
<di:waypoint x="2735" y="480" />
<di:waypoint x="2465" y="480" />
<di:waypoint x="2465" y="520" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2590" y="462" width="21" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_04bjto5" bpmnElement="Flow_0920pid">
<di:waypoint x="2760" y="560" />
<di:waypoint x="2827" y="560" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2783" y="542" width="22" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_0bnzbta" bpmnElement="Flow_1lw0nd8">
<di:waypoint x="2213" y="560" />
<di:waypoint x="2265" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1y4773i_di" bpmnElement="Flow_1y4773i">
<di:waypoint x="2365" y="560" />
<di:waypoint x="2415" y="560" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0x6qt62_di" bpmnElement="Flow_0x6qt62"> <bpmndi:BPMNEdge id="Flow_0x6qt62_di" bpmnElement="Flow_0x6qt62">
<di:waypoint x="1898" y="490" /> <di:waypoint x="1898" y="490" />
<di:waypoint x="1960" y="490" /> <di:waypoint x="1960" y="490" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1fa5lzu" bpmnElement="Flow_0ljfd7s">
<di:waypoint x="2115" y="597" />
<di:waypoint x="2155" y="597" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2111" y="579" width="55" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_117rgu5_di" bpmnElement="Flow_117rgu5">
<di:waypoint x="2010" y="530" />
<di:waypoint x="2010" y="572" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_169fpoj" bpmnElement="Flow_0rkq2tw"> <bpmndi:BPMNEdge id="BPMNEdge_169fpoj" bpmnElement="Flow_0rkq2tw">
<di:waypoint x="2035" y="597" /> <di:waypoint x="2035" y="597" />
<di:waypoint x="2065" y="597" /> <di:waypoint x="2065" y="597" />
@@ -990,6 +980,13 @@
<dc:Bounds x="2014" y="636" width="22" height="14" /> <dc:Bounds x="2014" y="636" width="22" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_1fa5lzu" bpmnElement="Flow_0ljfd7s">
<di:waypoint x="2115" y="597" />
<di:waypoint x="2155" y="597" />
<bpmndi:BPMNLabel>
<dc:Bounds x="2111" y="579" width="55" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_188epnk" bpmnElement="Flow_0gac88y"> <bpmndi:BPMNEdge id="BPMNEdge_188epnk" bpmnElement="Flow_0gac88y">
<di:waypoint x="2090" y="622" /> <di:waypoint x="2090" y="622" />
<di:waypoint x="2090" y="870" /> <di:waypoint x="2090" y="870" />
@@ -998,6 +995,10 @@
<dc:Bounds x="2097" y="710" width="66" height="14" /> <dc:Bounds x="2097" y="710" width="66" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_117rgu5_di" bpmnElement="Flow_117rgu5">
<di:waypoint x="2010" y="530" />
<di:waypoint x="2010" y="572" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0zsh74h_di" bpmnElement="Flow_0zsh74h"> <bpmndi:BPMNEdge id="Flow_0zsh74h_di" bpmnElement="Flow_0zsh74h">
<di:waypoint x="2905" y="563" /> <di:waypoint x="2905" y="563" />
<di:waypoint x="2940" y="563" /> <di:waypoint x="2940" y="563" />
@@ -1016,6 +1017,18 @@
<di:waypoint x="2010" y="410" /> <di:waypoint x="2010" y="410" />
<di:waypoint x="2010" y="450" /> <di:waypoint x="2010" y="450" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_12b9yhd_di" bpmnElement="Flow_12b9yhd">
<di:waypoint x="195" y="410" />
<di:waypoint x="250" y="410" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0tgn37q_di" bpmnElement="Flow_0tgn37q">
<di:waypoint x="350" y="410" />
<di:waypoint x="430" y="410" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0w3nr57_di" bpmnElement="Flow_0w3nr57">
<di:waypoint x="1790" y="220" />
<di:waypoint x="1870" y="220" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1gw9i5e_di" bpmnElement="Flow_1gw9i5e"> <bpmndi:BPMNEdge id="Flow_1gw9i5e_di" bpmnElement="Flow_1gw9i5e">
<di:waypoint x="1970" y="220" /> <di:waypoint x="1970" y="220" />
<di:waypoint x="2085" y="220" /> <di:waypoint x="2085" y="220" />
@@ -1027,6 +1040,10 @@
<dc:Bounds x="2198" y="202" width="22" height="14" /> <dc:Bounds x="2198" y="202" width="22" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_19ehxvl_di" bpmnElement="Flow_19ehxvl">
<di:waypoint x="2380" y="220" />
<di:waypoint x="2482" y="220" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0mngw8y_di" bpmnElement="Flow_0mngw8y"> <bpmndi:BPMNEdge id="Flow_0mngw8y_di" bpmnElement="Flow_0mngw8y">
<di:waypoint x="2110" y="245" /> <di:waypoint x="2110" y="245" />
<di:waypoint x="2110" y="360" /> <di:waypoint x="2110" y="360" />
@@ -1034,26 +1051,10 @@
<dc:Bounds x="2115" y="299" width="21" height="14" /> <dc:Bounds x="2115" y="299" width="21" height="14" />
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_19ehxvl_di" bpmnElement="Flow_19ehxvl">
<di:waypoint x="2380" y="220" />
<di:waypoint x="2482" y="220" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0w3nr57_di" bpmnElement="Flow_0w3nr57">
<di:waypoint x="1790" y="220" />
<di:waypoint x="1870" y="220" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_03v0fem_di" bpmnElement="Flow_03v0fem"> <bpmndi:BPMNEdge id="Flow_03v0fem_di" bpmnElement="Flow_03v0fem">
<di:waypoint x="1920" y="360" /> <di:waypoint x="1920" y="360" />
<di:waypoint x="1920" y="260" /> <di:waypoint x="1920" y="260" />
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_12b9yhd_di" bpmnElement="Flow_12b9yhd">
<di:waypoint x="195" y="410" />
<di:waypoint x="250" y="410" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0tgn37q_di" bpmnElement="Flow_0tgn37q">
<di:waypoint x="350" y="410" />
<di:waypoint x="430" y="410" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane> </bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram> </bpmndi:BPMNDiagram>
</bpmn:definitions> </bpmn:definitions>
@@ -67,3 +67,5 @@ draft.not.exists=\u8349\u7A3F\u4E0D\u5B58\u5728
en.standard.number.conflict=\u4F01\u6807\u7F16\u53F7\u5DF2\u5B58\u5728\uFF0C\u9700\u7B49\u5F85\u91CD\u65B0\u751F\u6210\u987A\u5E8F\u53F7 en.standard.number.conflict=\u4F01\u6807\u7F16\u53F7\u5DF2\u5B58\u5728\uFF0C\u9700\u7B49\u5F85\u91CD\u65B0\u751F\u6210\u987A\u5E8F\u53F7
tag.add.error.2=\u6BCF\u5F20\u8868\u6700\u591A\u670950\u4E2A\u5B57\u6BB5\u3002 tag.add.error.2=\u6BCF\u5F20\u8868\u6700\u591A\u670950\u4E2A\u5B57\u6BB5\u3002
task.urging.error=\u53EA\u80FD\u50AC\u529E\u5F85\u529E\u4EFB\u52A1 task.urging.error=\u53EA\u80FD\u50AC\u529E\u5F85\u529E\u4EFB\u52A1
invalid.esp=\u65E0\u6548\u7684\u4F01\u6807\u8BA1\u5212\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9
can.not.edit.abolish.or.archive.es=\u5DF2\u5E9F\u6B62\u6216\u5DF2\u5F52\u6863\u7684\u4F01\u6807\u8BA1\u5212\u4E0D\u80FD\u7F16\u8F91,\u8BF7\u91CD\u65B0\u9009\u62E9
@@ -72,3 +72,5 @@ draft.not.exists=Draft not exists
en.standard.number.conflict=standard number exists en.standard.number.conflict=standard number exists
tag.add.error.2=each table can have a maximum of 50 fields. tag.add.error.2=each table can have a maximum of 50 fields.
task.urging.error=Can only remind to do tasks task.urging.error=Can only remind to do tasks
invalid.esp=Invalid enterprise standard, please check
can.not.edit.abolish.or.archive.es=Can not edit abolished or archived enterprise standards, please check
@@ -72,3 +72,5 @@ draft.not.exists=\u8349\u7A3F\u4E0D\u5B58\u5728
en.standard.number.conflict=\u4F01\u6807\u7F16\u53F7\u5DF2\u5B58\u5728\uFF0C\u9700\u7B49\u5F85\u91CD\u65B0\u751F\u6210\u987A\u5E8F\u53F7 en.standard.number.conflict=\u4F01\u6807\u7F16\u53F7\u5DF2\u5B58\u5728\uFF0C\u9700\u7B49\u5F85\u91CD\u65B0\u751F\u6210\u987A\u5E8F\u53F7
tag.add.error.2=\u6BCF\u5F20\u8868\u6700\u591A\u670950\u4E2A\u5B57\u6BB5\u3002 tag.add.error.2=\u6BCF\u5F20\u8868\u6700\u591A\u670950\u4E2A\u5B57\u6BB5\u3002
task.urging.error=\u53EA\u80FD\u50AC\u529E\u5F85\u529E\u4EFB\u52A1 task.urging.error=\u53EA\u80FD\u50AC\u529E\u5F85\u529E\u4EFB\u52A1
invalid.esp=\u65E0\u6548\u7684\u4F01\u6807\u8BA1\u5212\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9
can.not.edit.abolish.or.archive.es=\u5DF2\u5E9F\u6B62\u6216\u5DF2\u5F52\u6863\u7684\u4F01\u6807\u8BA1\u5212\u4E0D\u80FD\u7F16\u8F91,\u8BF7\u91CD\u65B0\u9009\u62E9