|
@@ -1,13 +1,16 @@
|
|
|
package com.dayou.workflow.handler;
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.dayou.common.BaseEntity;
|
|
|
import com.dayou.dto.HandlerPermissionDTO;
|
|
|
import com.dayou.dto.WorkNodeCommit;
|
|
|
import com.dayou.dto.WorkNodeDTO;
|
|
|
import com.dayou.entity.Department;
|
|
|
import com.dayou.entity.Personal;
|
|
|
+import com.dayou.entity.PersonalTarget;
|
|
|
import com.dayou.entity.WorkFlowNodeInstance;
|
|
|
import com.dayou.enums.MainBusinessEnum;
|
|
|
import com.dayou.enums.ProductionEnum;
|
|
@@ -18,17 +21,21 @@ import com.dayou.mapper.DepartmentMapper;
|
|
|
import com.dayou.mapper.PersonalMapper;
|
|
|
import com.dayou.mapper.WorkFlowNodeInstanceMapper;
|
|
|
import com.dayou.service.ICustomerCompanyService;
|
|
|
+import com.dayou.service.IPersonalTargetService;
|
|
|
import com.dayou.service.IUserPostService;
|
|
|
import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
|
|
|
import com.dayou.service.workflow.IWorkNodeService;
|
|
|
import com.dayou.workflow.config.WorkNodeProcessable;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
import static com.dayou.common.Constants.PERSONAL_DEPARTMENT;
|
|
|
+import static com.dayou.enums.workflow.WorkflowNodeEnum.*;
|
|
|
|
|
|
/**
|
|
|
* 类说明:
|
|
@@ -58,6 +65,9 @@ public class PersonalNodeHandler extends WorkNodeProcessable {
|
|
|
@Autowired
|
|
|
private WorkFlowNodeInstanceMapper workFlowNodeInstanceMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IPersonalTargetService personalTargetService;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public boolean forward(WorkNodeCommit workNodeCommit) {
|
|
@@ -134,4 +144,41 @@ public class PersonalNodeHandler extends WorkNodeProcessable {
|
|
|
return departmentMapper.selectOne(new LambdaQueryWrapper<Department>().select(Department::getLeaderId).eq(Department::getName,PERSONAL_DEPARTMENT)).getLeaderId();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean goBack(WorkNodeCommit commit){
|
|
|
+ Long instanceNodeId = commit.getInstanceNodeId();
|
|
|
+ WorkFlowNodeInstance currentNode = workFlowNodeInstanceMapper.getInstanceNodeInfoById(instanceNodeId);
|
|
|
+ //如果是撰写节点(意见书,报告,复评函)退回。需删除产品业务信息
|
|
|
+ List<String> needToCleanFeedbackNodes = Arrays.asList(new String[]{QUOTATION_FEEDBACK.name(), GENERATE_STATEMENT.name(),WRITE_REPORT.name(), WRITE_LETTER.name()});
|
|
|
+ if (needToCleanFeedbackNodes.contains(currentNode.getNodeCode())){
|
|
|
+ //如果是在撰写意见书退回,清空反馈
|
|
|
+ PersonalTarget target = personalTargetService.getOne(new LambdaQueryWrapper<PersonalTarget>().select(PersonalTarget::getFeedback, BaseEntity::getId)
|
|
|
+ .eq(PersonalTarget::getPersonalId, currentNode.getBusinessId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
+ if (currentNode.getNodeCode().equals(GENERATE_STATEMENT.name())){
|
|
|
+ personalTargetService.update(new LambdaUpdateWrapper<PersonalTarget>().set(
|
|
|
+ PersonalTarget::getFeedback,null
|
|
|
+ ).eq(BaseEntity::getId,target.getId()));
|
|
|
+ }
|
|
|
+ else{
|
|
|
+
|
|
|
+ if (StrUtil.isNotEmpty(target.getFeedback())){
|
|
|
+ List<String> productionTypes = JSON.parseArray(target.getFeedback(), String.class);
|
|
|
+ if (productionTypes.size()>1){
|
|
|
+ List<String> xProductionType = Lists.newArrayList(productionTypes.get(0));
|
|
|
+ personalTargetService.update(new LambdaUpdateWrapper<PersonalTarget>()
|
|
|
+ .set(PersonalTarget::getFeedback,JSON.toJSONString(xProductionType)).eq(BaseEntity::getId,target.getId()));
|
|
|
+
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ personalTargetService.update(new LambdaUpdateWrapper<PersonalTarget>().set(
|
|
|
+ PersonalTarget::getFeedback,null
|
|
|
+ ).eq(BaseEntity::getId,target.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return super.goBack(commit);
|
|
|
+ }
|
|
|
}
|