项目立项流程修改,分管领导和主要领导不再由前端传值,改为自动获取

This commit is contained in:
zty 2024-07-30 14:21:50 +08:00
parent 32ba4091f3
commit 1d5acd6199
5 changed files with 198 additions and 126 deletions

View File

@ -24,7 +24,8 @@ import com.xqopen.kehui.personal.service.IPersonalEventsService;
import com.xqopen.kehui.personal.service.IPersonalMemberService;
import com.xqopen.kehui.personal.service.IPersonalUserInfoService;
import com.xqopen.kehui.personal.util.StringNotNull;
import com.xqopen.kehui.util.MessageUtils;
import com.xqopen.kehui.project.entity.ProjectInfo;
import com.xqopen.kehui.project.service.IProjectInfoService;
import com.xqopen.kehui.util.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.*;
@ -34,6 +35,8 @@ import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.util.*;
@ -91,6 +94,8 @@ public class MyTaskListener implements TaskListener {
IPersonalEventsService personalEventsService;
@Autowired
IPersonalMemberService personalMemberService;
@Autowired
IProjectInfoService projectInfoService;
public void notify(DelegateTask task) {
@ -107,9 +112,11 @@ public class MyTaskListener implements TaskListener {
sealManagementService = SpringContextUtil.getBean("adminSealManagementServiceImpl", IAdminSealManagementService.class);
personalEventsService = SpringContextUtil.getBean("personalEventsServiceImpl", IPersonalEventsService.class);
personalMemberService = SpringContextUtil.getBean("personalMemberServiceImpl", IPersonalMemberService.class);
projectInfoService = SpringContextUtil.getBean("projectInfoServiceImpl", IProjectInfoService.class);
String processInstanceId = task.getProcessInstanceId();
List<FlowsConfiguration> flowsConfiguration = null;
SystemUserLogin systemUserLogin = null;;
SystemUserLogin systemUserLogin = null;
;
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).active().singleResult();
// String businessKey = processInstance.getBusinessKey();
Wrapper<Flows> flowsWrapper = new EntityWrapper<>();
@ -119,8 +126,22 @@ public class MyTaskListener implements TaskListener {
activitiEnum.activitiClass aClass = Enum.valueOf(activitiEnum.activitiClass.class, flows.getActivitiCategory());
String name = task.getTaskDefinitionKey();
String ass = "";
int flag=0;//项目立项是否保存当前委托人的标记
String client="";//委托人角色
name = name.equals("office") ? setPostDocumentOffice(aClass, name, flows.getBusinessId()) : name;
if("branchLeaders".equals(name)){
client=String.valueOf(name);
name=setBranchLeaders(aClass, name, flows.getBusinessId());
flag=1;
}
name = name.equals("branchLeader") ? setBranchLeader(aClass, name, flows.getBusinessId()) : name;
// name = name.equals("branchLeaders") ? setBranchLeaders(aClass, name, flows.getBusinessId()) : name;//项目立项的分管领导默认是所长/副所长
// name = "MainLeader".equals(name) ? "director" : name;//项目立项主要领导为所长
if("MainLeader".equals(name)){
client=String.valueOf(name);
name="director";
flag=1;
}
// 取得当前任务.当前任务节点
switch (name) {
case "business":
@ -165,18 +186,6 @@ public class MyTaskListener implements TaskListener {
task.setAssignee(currUserId);
}
break;
case "projectManagerData":
HistoricTaskInstanceQuery projectInitQuery = historyService
.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId);
HistoricTaskInstance projectInitTask = null;
if (projectInitQuery != null && projectInitQuery.count() > 0) {
Task = projectInitQuery.taskDefinitionKey("apply").list().get(0);
}
if (projectInitTask != null && projectInitTask.getTaskDefinitionKey().equals("apply")) {
String currUserId = projectInitTask.getAssignee();
task.setAssignee(currUserId);
}
break;
default:
Wrapper<FlowsConfiguration> wrapper = new EntityWrapper<>();
wrapper.eq("approved_role", name);
@ -213,15 +222,28 @@ public class MyTaskListener implements TaskListener {
List<PersonalMember> members = memberService.getMemberByRoleTag("projector");
if (members != null) {
for (PersonalMember member : members) {
WorkflowUtils.sendEmail(member.getId(), MessageUtils.Message_projectAcceptanceForSpecialist, null);
// WorkflowUtils.sendEmail(member.getId(), MessageUtils.Message_projectAcceptanceForSpecialist, null);
}
}
}
if (flows != null) {
WorkflowUtils.sendSMS(Long.valueOf(flows.getCreatedBy()), Long.valueOf(flows.getCreatedBy()), true, stepName, title, false, false, false);
// WorkflowUtils.sendSMS(Long.valueOf(flows.getCreatedBy()), Long.valueOf(flows.getCreatedBy()), true, stepName, title, false, false, false);
}
for (String id : ids) {
WorkflowUtils.sendSMS(Long.valueOf(id), Long.valueOf(flows.getCreatedBy()), false, stepName, title, false, false, false);
// WorkflowUtils.sendSMS(Long.valueOf(id), Long.valueOf(flows.getCreatedBy()), false, stepName, title, false, false, false);
}
//项目立项保存当前委托人
if(!ObjectUtils.isEmpty(ids)&&flag==1){
Long businessId = flows.getBusinessId();//业务表id
if(!StringUtils.isEmpty(businessId)){
ProjectInfo projectInfo = projectInfoService.selectById(businessId);
if(!ObjectUtils.isEmpty(projectInfo)){
JSONObject ext = projectInfo.getExt();
ext.put(client,ids);
projectInfo.setExt(ext);
projectInfoService.updateById(projectInfo);
}
}
}
} else {
log.error(String.format("节点:%s 未找到审批人", name));
@ -234,8 +256,10 @@ public class MyTaskListener implements TaskListener {
}
}
/**
* 设置办公室主任节点
*
* @param aClass
* @param name
* @param id
@ -332,13 +356,55 @@ public class MyTaskListener implements TaskListener {
this.historyService = historyService;
}
@Autowired
private void setRepositoryService(RepositoryService repositoryService) {
this.repositoryService = repositoryService;
private void setMainLeadere() {
PersonalEvents personalEvents = new PersonalEvents();
}
private String setBranchLeaders(JSONObject ext, String name) {
if (!ObjectUtils.isEmpty(ext)) {
if (ext.containsKey("draftDeptName")) {
String deptNameSource = ext.getString("draftDeptName");
String deptName = deptNameSource.substring(0, deptNameSource.indexOf(">"));
String dept = deptNameSource.substring((deptName.length() + 1), deptNameSource.length());
if (StringNotNull.isNotEmpty(dept)) {//根据部门判断分管领导终审
switch (dept) {
case "网络技术部":
case "市场发展部":
case "服务产品部":
return "director";
case "战略规划部":
case "办公室":
case "人财中心":
case "财务中心":
return "depDirector";
}
}
}
}
return name;
}
/**
* 根据枚举类获取分管领导
*
* @param aClass
* @param name
* @param id
* @return
*/
private String setBranchLeaders(activitiEnum.activitiClass aClass, String name, Long id) {
switch (aClass) {
case init:
ProjectInfo info = projectInfoService.selectById(id);
name=setBranchLeaders(info.getExt(),name);
break;
}
return name;
}
/**
* 设置分管领导
*
* @param aClass
* @param name
* @param id

View File

@ -14,6 +14,7 @@ import com.xqopen.kehui.flows.service.IFlowsConfigurationService;
import com.xqopen.kehui.flows.service.IFlowsService;
import com.xqopen.kehui.personal.entity.PersonalMember;
import com.xqopen.kehui.personal.service.IPersonalMemberService;
import com.xqopen.kehui.project.entity.ProjectAssessmentIndicators;
import com.xqopen.kehui.project.entity.ProjectInfo;
import com.xqopen.kehui.project.entity.ProjectQuarterlyEvaluation;
import com.xqopen.kehui.project.entity.ProjectWeekly;
@ -59,6 +60,7 @@ public class ProjectInitListener implements ExecutionListener {
IFlowsConfigurationService flowsConfigurationService;
@Autowired
ISystemUserLoginService userLoginService;
@Override
@Transactional
public void notify(DelegateExecution execution) throws Exception {
@ -124,8 +126,10 @@ public class ProjectInitListener implements ExecutionListener {
JSONObject jsonObject = new JSONObject();
jsonObject.put("projectManager", getSystemUserLogin(projectManager).getId());
jsonObject.put("projectAdmin", getSystemUserLogin(String.valueOf(projectAdmin.get(1))).getId());
jsonObject.put("branchLeaders",getSystemUserLogin(String.valueOf(branchLeaders.get(1))).getId());
jsonObject.put("MainLeader",getSystemUserLogin(String.valueOf(MainLeader.get(1))).getId());
jsonObject.put("branchLeaders", branchLeaders.get(0));
jsonObject.put("MainLeader", MainLeader.get(0));
// jsonObject.put("branchLeaders",getSystemUserLogin(String.valueOf(branchLeaders.get(1))).getId());
// jsonObject.put("MainLeader",getSystemUserLogin(String.valueOf(MainLeader.get(1))).getId());
// jsonObject.put("executor",getSystemUserLogin(projectManager).getId());
String executor = getExecutor();
StringBuffer stringBuffer = new StringBuffer(executor);
@ -159,12 +163,28 @@ public class ProjectInitListener implements ExecutionListener {
PersonalMember personalMember = personalMemberService.selectOne(memberEntityWrapper);
if (!ObjectUtils.isEmpty(personalMember)) {
infoExt.put("isOffice", "0");
}
else{
} else {
infoExt.put("isOffice", "1");
}
}
if(!StringUtils.isEmpty(projectInfo.getId()))projectInfoService.updateById(projectInfo);
if (!StringUtils.isEmpty(projectInfo.getId())) {
projectInfoService.updateById(projectInfo);
//批量给项目季度指标表增加分管领导和主要领导
EntityWrapper<ProjectAssessmentIndicators> assessmentIndicatorsEntityWrapper = new EntityWrapper<>();
assessmentIndicatorsEntityWrapper.eq("is_deleted", "0");
assessmentIndicatorsEntityWrapper.eq("project_id", projectInfo.getId());
List<ProjectAssessmentIndicators> indicatorsList = projectAssessmentIndicatorsService.selectList(assessmentIndicatorsEntityWrapper);
if (!ObjectUtils.isEmpty(indicatorsList)) {
indicatorsList.forEach(a->{
JSONObject aExt = a.getExt();
aExt.put("branchLeaders",branchLeaders.get(0));
aExt.put("MainLeader",MainLeader.get(0));
a.setExt(aExt);
});
projectAssessmentIndicatorsService.updateAllColumnBatchById(indicatorsList);
}
}
// }
}
}
@ -175,6 +195,7 @@ public class ProjectInitListener implements ExecutionListener {
throw new XQException(ErrorCode.PROJECTINFO_EXCEPTION_ERROR, null);
}
}
private SystemUserLogin getSystemUserLogin(String name) {
SystemUserLogin systemUserLogin = new SystemUserLogin();
if (!StringUtils.isEmpty(name)) {
@ -187,6 +208,7 @@ public class ProjectInitListener implements ExecutionListener {
/**
* 获取委托人
*
* @return
*/
private String getExecutor() {

View File

@ -68,19 +68,6 @@ public class ProjectAssessmentIndicatorsController implements ProjectAssessmentI
@PostMapping(Api.PROJECT_QUARTERLY_EVALUATION_QUARTER_LIST)
public String quarterList(@RequestHeader Long userId, @RequestBody Map<String, Object> map) throws XQException {
try {
// ProjectAssessmentIndicators indicators = pageNoUtil.getT();
// EntityWrapper<ProjectAssessmentIndicators> wrapper = new EntityWrapper<>();
// wrapper.eq("is_deleted","0");
// Long projectId = indicators.getProjectId();
// if(!ObjectUtils.isEmpty(projectId)){
// wrapper.eq("project_id",projectId);
// }
// wrapper.and("ext_->> 'executor' like " + "'%" + userId + "%'");
// wrapper.groupBy("quarter");
// wrapper.groupBy("project_id");
// wrapper.groupBy("ext_->>'taskName'");
// wrapper.setSqlSelect("quarter,AVG((ext_->>'sum')::FLOAT),project_id,ext_->>'taskName' ");
// List<Map<String, Object>> maps = indicatorsService.selectMaps(wrapper);
map.put("userId", userId);
map.put("projectId", Long.parseLong(String.valueOf(map.get("projectId"))));
List<Map<String, Object>> maps = indicatorsService.getQuarterList(map);

View File

@ -206,8 +206,8 @@ public class ProjectInitComtroller implements ProjectInitApi {
if (!ObjectUtils.isEmpty(initDto)) {
JSONObject ext = info.getExt();
String projectAdmin = String.valueOf(((ArrayList) ext.get("projectAdmin")).get(1));
String branchLeaders = String.valueOf(((ArrayList) ext.get("branchLeaders")).get(1));
String MainLeader = String.valueOf(((ArrayList) ext.get("MainLeader")).get(1));
// String branchLeaders = String.valueOf(((ArrayList) ext.get("branchLeaders")).get(1));
// String MainLeader = String.valueOf(((ArrayList) ext.get("MainLeader")).get(1));
String projectManagerData = String.valueOf(((ArrayList) ext.get("projectManagerData")).get(1));
List<ProjectAssessmentIndicators> membersList = initDto.getMembersList();
if (!membersList.isEmpty()) {
@ -216,8 +216,8 @@ public class ProjectInitComtroller implements ProjectInitApi {
jsonObject.put("taskName", "季度审核填报");
jsonObject.put("projectManager", jsonObject.get("executor"));
jsonObject.put("projectAdmin", getSystemUserLogin(projectAdmin).getId());
jsonObject.put("branchLeaders", getSystemUserLogin(branchLeaders).getId());
jsonObject.put("MainLeader", getSystemUserLogin(MainLeader).getId());
// jsonObject.put("branchLeaders", getSystemUserLogin(branchLeaders).getId());
// jsonObject.put("MainLeader", getSystemUserLogin(MainLeader).getId());
membersList.forEach(item -> {
item.setProjectId(info.getId());
item.setCreatedBy(userId);
@ -246,14 +246,14 @@ public class ProjectInitComtroller implements ProjectInitApi {
SystemUserLogin systemUserLogin = getSystemUserLogin(map, "projectAdmin");
map.put("projectAdmin", systemUserLogin.getId());
}
if (!ObjectUtils.isEmpty(map.get("branchLeaders"))) {
SystemUserLogin systemUserLogin = getSystemUserLogin(map, "branchLeaders");
map.put("branchLeaders", systemUserLogin.getId());
}
if (!ObjectUtils.isEmpty(map.get("MainLeader"))) {
SystemUserLogin systemUserLogin = getSystemUserLogin(map, "MainLeader");
map.put("MainLeader", systemUserLogin.getId());
}
// if (!ObjectUtils.isEmpty(map.get("branchLeaders"))) {
// SystemUserLogin systemUserLogin = getSystemUserLogin(map, "branchLeaders");
// map.put("branchLeaders", systemUserLogin.getId());
// }
// if (!ObjectUtils.isEmpty(map.get("MainLeader"))) {
// SystemUserLogin systemUserLogin = getSystemUserLogin(map, "MainLeader");
// map.put("MainLeader", systemUserLogin.getId());
// }
}
}
}

View File

@ -15,19 +15,16 @@
</userTask>
<sequenceFlow id="SequenceFlow_0ssey7t" sourceRef="projectAdmin" targetRef="branchLeaders" />
<userTask id="projectAdmin" name="所项目管理员" activiti:assignee="${projectAdmin}">
<extensionElements>
<activiti:taskListener class="com.xqopen.kehui.flows.util.MyTaskListener" event="create" />
</extensionElements>
<incoming>SequenceFlow_1lquovt</incoming>
</userTask>
<sequenceFlow id="SequenceFlow_0884cd5" sourceRef="branchLeaders" targetRef="mainLeaders" />
<userTask id="branchLeaders" name="分管领导" activiti:assignee="${branchLeaders}">
<sequenceFlow id="SequenceFlow_0884cd5" sourceRef="branchLeaders" targetRef="MainLeader" />
<userTask id="branchLeaders" name="分管领导" >
<extensionElements>
<activiti:taskListener class="com.xqopen.kehui.flows.util.MyTaskListener" event="create" />
</extensionElements>
<incoming>SequenceFlow_0ssey7t</incoming>
</userTask>
<userTask id="mainLeaders" name="主要领导" activiti:assignee="${MainLeader}">
<userTask id="MainLeader" name="主要领导" >
<extensionElements>
<activiti:taskListener class="com.xqopen.kehui.flows.util.MyTaskListener" event="create" />
</extensionElements>
@ -40,7 +37,7 @@
<activiti:executionListener delegateExpression="${weekly}" event="end" />
</extensionElements>
</endEvent>
<sequenceFlow id="SequenceFlow_1ln01xk" sourceRef="mainLeaders" targetRef="end" />
<sequenceFlow id="SequenceFlow_1ln01xk" sourceRef="MainLeader" targetRef="end" />
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_projectInit">
<bpmndi:BPMNPlane id="BPMNPlane_projectInit" bpmnElement="projectInit">
@ -85,7 +82,7 @@
<bpmndi:BPMNShape id="UserTask_1rkmxpl_di">
<omgdc:Bounds x="712" y="93" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="UserTask_0j4v64z_di" bpmnElement="mainLeaders">
<bpmndi:BPMNShape id="UserTask_0j4v64z_di" bpmnElement="MainLeader">
<omgdc:Bounds x="872" y="93" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_0j87324_di" bpmnElement="end">