Merge branch 'develop' into FOTON

This commit is contained in:
super_liu
2022-01-27 22:43:01 +08:00
14 changed files with 358 additions and 24 deletions
@@ -27,6 +27,23 @@ public class BusProcessEvaluationHisController {
@Autowired
private IBusProcessEvaluationHisService busProcessEvaluationHisService;
@GetMapping("/evaluationHisListRepSum")
public Map<String,Integer> evaluationHisListRepSum(String pid) {
return busProcessEvaluationHisService.evaluationHisListRepSum(pid);
}
@GetMapping("/evaluationHisListByOne")
public BusProcessEvaluationHis evaluationHisListByOne(String pid,String taskInfo) {
BusProcessEvaluationHis processEvaluationHis = busProcessEvaluationHisService.evaluationHisListByOne(pid,taskInfo);
return processEvaluationHis;
}
@GetMapping("/evaluationHisListRep")
public List<BusProcessEvaluationHis> evaluationHisListRep(String pid) {
List<BusProcessEvaluationHis> processEvaluationHis = busProcessEvaluationHisService.evaluationHisListRep(pid);
return processEvaluationHis;
}
@GetMapping("/evaluationHisList")
public List<BusProcessEvaluationHis> evaluationHisList(String pid) {
List<BusProcessEvaluationHis> processEvaluationHis = busProcessEvaluationHisService.evaluationHisList(pid);
@@ -74,5 +74,9 @@ public class BusProcessEvaluationHis implements Serializable {
@TableField("FLAG")
private String flag;
@ApiModelProperty(value = "处理人姓名")
@TableField(exist = false)
private String userName;
}
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessEvaluationHis;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -15,5 +16,11 @@ import java.util.List;
*/
public interface IBusProcessEvaluationHisService extends IService<BusProcessEvaluationHis> {
Map<String,Integer> evaluationHisListRepSum(String pid);
BusProcessEvaluationHis evaluationHisListByOne(String pid,String taskInfo);
List<BusProcessEvaluationHis> evaluationHisListRep(String pid);
List<BusProcessEvaluationHis> evaluationHisList(String pid);
}
@@ -1,15 +1,23 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessEvaluationHis;
import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage;
import com.ydw.bat.wkflow.business_main.datas.entity.UserVO;
import com.ydw.bat.wkflow.business_main.datas.mapper.BusProcessEvaluationHisMapper;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEvaluationHisService;
import com.ydw.bat.wkflow.util.Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
@@ -22,6 +30,95 @@ import java.util.List;
@Service
public class BusProcessEvaluationHisServiceImpl extends ServiceImpl<BusProcessEvaluationHisMapper, BusProcessEvaluationHis> implements IBusProcessEvaluationHisService {
@Autowired
private LawsUserInfoService lawsUserInfoService;
@Override
public BusProcessEvaluationHis evaluationHisListByOne(String pid,String taskInfo){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.like("TASK_INFO",taskInfo);
wrapper.orderByDesc("CREATE_TIME","TASK_INFO");
List<BusProcessEvaluationHis> list = this.baseMapper.selectList(wrapper);
BusProcessEvaluationHis his = new BusProcessEvaluationHis();
if(!list.isEmpty()){
his = list.get(0);
}
return his;
}
@Override
public Map<String,Integer> evaluationHisListRepSum(String pid){
Map<String,Integer> map = new HashMap<>();
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.orderByDesc("CREATE_TIME","TASK_INFO");
List<BusProcessEvaluationHis> list = this.baseMapper.selectList(wrapper);
List<BusProcessEvaluationHis> evaluationHis = new ArrayList<>();
Map<String, List<BusProcessEvaluationHis>> listMap = new TreeMap<>();
// 按 相同数据分组
listMap = list.stream().collect(
Collectors.groupingBy(a -> Utils.format("{0}#{1}#{2}", a.getPId(),a.getTaskInfo(),a.getUserId())));
if(!listMap.isEmpty()){
listMap.forEach((key, value) -> {
if(!value.isEmpty()){
evaluationHis.add(value.get(0));
}
});
}
Map<String, List<BusProcessEvaluationHis>> listMapFilter = new TreeMap<>();
listMapFilter = evaluationHis.stream().collect(
Collectors.groupingBy(a -> Utils.format("{0}#{1}", a.getPId(),a.getTaskInfo())));
if(!listMapFilter.isEmpty()){
listMapFilter.forEach((key, value) -> {
if(!value.isEmpty()){
int sum = 0;
for (BusProcessEvaluationHis his : value) {
List<JSONObject> valueArr = JSONArray.parseArray(his.getMesg(),JSONObject.class);
if(!valueArr.isEmpty()){
sum = sum + Integer.parseInt(valueArr.get(0).getString("sum").trim());
}
}
String keyV = value.get(0).getTaskInfo();
int ave = value.size();
map.put(keyV,sum/ave);
}
});
}
return map;
}
@Override
public List<BusProcessEvaluationHis> evaluationHisListRep(String pid){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.orderByDesc("CREATE_TIME","TASK_INFO");
List<BusProcessEvaluationHis> list = this.baseMapper.selectList(wrapper);
List<BusProcessEvaluationHis> evaluationHis = new ArrayList<>();
Map<String, List<BusProcessEvaluationHis>> listMap = new TreeMap<>();
// 按 相同数据分组
listMap = list.stream().collect(
Collectors.groupingBy(a -> Utils.format("{0}#{1}#{2}", a.getPId(),a.getTaskInfo(),a.getUserId())));
if(!listMap.isEmpty()){
listMap.forEach((key, value) -> {
if(!value.isEmpty()){
ResponseMessage<UserVO> byId = lawsUserInfoService.getById(value.get(0).getUserId());
value.get(0).setUserName(byId == null ? "" : byId.getData().getUname());
evaluationHis.add(value.get(0));
}
});
}
if(!evaluationHis.isEmpty()){
evaluationHis.sort(Comparator.comparing(BusProcessEvaluationHis::getCreateTime).reversed().thenComparing(BusProcessEvaluationHis::getTaskInfo));
}
return evaluationHis;
}
@Override
public List<BusProcessEvaluationHis> evaluationHisList(String pid){
@@ -0,0 +1,145 @@
package com.ydw.bat.wkflow.listener.bussLibrary;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.entity.Datas;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessModelHisService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.apache.commons.lang.StringUtils;
import org.apache.tomcat.util.digester.ArrayStack;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* 重新发起企标制修订流程后
*/
public class BLApplicantC1After implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
IDatasService datasService = SpringContextUtil.getBean(IDatasService.class);
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
IBusProcessNameService busProcessNameService = SpringContextUtil.getBean(IBusProcessNameService.class);
IBusProcessModelHisService busProcessModelHisService = SpringContextUtil.getBean(IBusProcessModelHisService.class);
QueryWrapper<Datas> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId());
Datas datas = datasService.getOne(queryWrapper);
JSONObject object = JSONObject.parseObject(datas.getFormValsJson());
delegateTask.setVariable("objectJson",object);
//截止时间 流程描述 创建人
String OVERTIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
String user = object.getString("prcCreateUser");
String username = object.getString("prcCreateUserName");
String prcName = "";
if(StringUtils.isNotBlank(object.getString("standName"))){
prcName = object.getString("standName") + "-企标制修订-技术标准";
}else {
prcName = "企标制修订-技术标准";
}
List<String> nextUserList = new ArrayStack<>();
if(StringUtils.isNotBlank(object.getString("qcUserId"))){
if(object.getString("qcUserId").contains(",")){
nextUserList = Arrays.asList(object.getString("qcUserId").split(","));
}else {
nextUserList.add(object.getString("qcUserId"));
}
// 配置多实例
delegateTask.setVariable("qcUserList",nextUserList);
delegateTask.addCandidateUsers(nextUserList);
}else {
throw new ActivitiException("1#2其他起草人参数不存在,请配置相关用户");
}
// 下个节点执行人处理逻辑
// List<String> finalNextUserList = new ArrayList();
// List<BusProcessModelHis> busProcessModelHisList = new ArrayList<>();
// if(StringUtils.isNotBlank(object.getString("modelData"))){
// List<JSONObject> valueArr = JSONArray.parseArray(object.getString("modelData"),JSONObject.class);
// Map<String, List<JSONObject>> listMap = valueArr.stream().collect(
// Collectors.groupingBy(a -> Utils.format("{0}", a.getString("zrUserId"))));
// listMap.forEach((s, jsonObjects) -> {
// String json = JSONArray.toJSONString(jsonObjects);
// SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
// BusProcessModelHis modelHis = new BusProcessModelHis();
// modelHis.setPId(delegateTask.getProcessInstanceId());
// modelHis.setMesg(json);
// modelHis.setUserId(s);
// modelHis.setPrcName(prcName);
// modelHis.setEditType("node");
// modelHis.setCreateTime(sdf.format(new Date()));
// modelHis.setUpdateTime(sdf.format(new Date()));
// busProcessModelHisList.add(modelHis);
// finalNextUserList.add(s);
// });
// // 配置多实例
// delegateTask.setVariable("qcUserList",finalNextUserList);
// delegateTask.addCandidateUsers(finalNextUserList);
// }else {
// throw new ActivitiException("1#2其他起草人参数不存在,请配置相关用户");
// }
QueryWrapper queryWrapper2 = new QueryWrapper();
queryWrapper2.eq("PRC_ID",delegateTask.getProcessInstanceId());
BusProcessName one1 = busProcessNameService.getOne(queryWrapper2);
if(one1!=null){
// one1.setOverTime(OVERTIME);
one1.setPrcType("buss1");
one1.setPrcName(prcName);
one1.setCreatUser(user);
one1.setCreatUserName(username);
busProcessNameService.saveOrUpdate(one1);
}
// 存储当前节点意见
BusProcessNew busProcessNew = new BusProcessNew();
busProcessNew.setMsgType("clause");
busProcessNew.setPId(delegateTask.getProcessInstanceId());
busProcessNew.setMesg(object.toJSONString());
busProcessNew.setTaskInfo(delegateTask.getTaskDefinitionKey());
busProcessNew.setTaskId(delegateTask.getId());
busProcessNew.setCommitText(object.getString("commentText"));
busProcessNew.setFinishFlag("0");
busProcessNew.setTaskInfo(delegateTask.getName());
busBean.save(busProcessNew);
if(nextUserList != null && !nextUserList.isEmpty()){
for(String nextUser : nextUserList){
BusProcessNew busProcessNewNext = new BusProcessNew();
busProcessNewNext.setMsgType("clause");
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
busProcessNewNext.setMesg(object.toJSONString());
busProcessNewNext.setTaskInfo(delegateTask.getTaskDefinitionKey());
busProcessNewNext.setFinishFlag("0");
busProcessNewNext.setTaskInfo(delegateTask.getName());
busProcessNewNext.setUserId(nextUser);
busProcessNewNext.setPrcName(prcName);
busBean.save(busProcessNewNext);
}
}
// if(!busProcessModelHisList.isEmpty()){
// busProcessModelHisService.saveBatch(busProcessModelHisList);
// }
// 生成 模板
// busProcessModelHisService.saveBussTemplateFile(object,delegateTask.getProcessInstanceId());
}
private String verifyObj(String str){
return (str == null || str.equals("")) ? "" : str;
}
}
@@ -0,0 +1,37 @@
package com.ydw.bat.wkflow.listener.bussLibrary;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import java.util.List;
/**
* 重新发起企标制修订流程前
*/
public class BLApplicantC1Before implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
queryWrapper1.isNull("TASK_ID");
List<BusProcessNew> list = busBean.list(queryWrapper1);
if(!list.isEmpty()){
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bussLibraryC1?prcType=buss1");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -88,10 +88,9 @@ public class BussLibrary6After implements TaskListener{
busProcessNewNext.setUserId(nextUser);
busProcessNewNext.setPrcName(prcName);
busBean.save(busProcessNewNext);
// 评分存储
BussUtils.evalSave(delegateTask, object, prcName, delegateTask.getAssignee());
}
// 评分存储
BussUtils.evalSave(delegateTask, object, prcName, delegateTask.getAssignee());
}
}
@@ -68,20 +68,17 @@ public class BussLibrary7After implements TaskListener{
if(StringUtils.isNotBlank(approvalOpinion)){
if ("0".equalsIgnoreCase(approvalOpinion)) {
if(StringUtils.isNotBlank(object.getString("bzUserId"))){
if(StringUtils.isNotBlank(object.getString("jsfzrUserId"))){
if(object.getString("bzUserId").contains(",")){
nextUserList = Arrays.asList(object.getString("bzUserId").split(","));
}else {
nextUserList.add(object.getString("bzUserId"));
}
// 配置多实例
delegateTask.setVariable("bzUserIdList",nextUserList);
delegateTask.addCandidateUsers(nextUserList);
delegateTask.setVariable("jsfzrUserId",object.getString("jsfzrUserId"));
nextUserList.add(object.getString("jsfzrUserId"));
BussUtils.approvalFunc2(delegateTask, object, prcName, nextUserList);
// 评分存储
BussUtils.evalSave(delegateTask, object, prcName, delegateTask.getAssignee());
if(StringUtils.isBlank(object.getString("fsRejectStatus")) || object.getString("fsRejectStatus").equalsIgnoreCase("2")){
BussUtils.evalSave(delegateTask, object, prcName, delegateTask.getAssignee());
}
delegateTask.setVariable("fs7Flag", 0);
}else {
throw new ActivitiException("1#2部长用户参数不存在,请配置相关用户");
@@ -18,7 +18,7 @@ import java.util.ArrayList;
import java.util.List;
/**
* 技术委员会负责人/起草中心主任审核后( 合并至9)
* 起草单位高级经理(技术委员会负责人/起草中心主任审核后( 合并至9 又重新启用)
*/
public class BussLibrary8After implements TaskListener{
@Override
@@ -11,7 +11,7 @@ import org.activiti.engine.delegate.TaskListener;
import java.util.List;
/**
* 技术委员会负责人/起草中心主任审核前( 合并至9)
* 技术委员会负责人/起草中心主任审核(起草单位高级经理)前( 合并至9 又重新启用)
*/
public class BussLibrary8Before implements TaskListener{
@Override
@@ -18,7 +18,7 @@ import java.util.ArrayList;
import java.util.List;
/**
* 标准法规部部长审核后
* 标准法规部高级经理(标准法规部部长审核后
*/
public class BussLibrary9After implements TaskListener{
@Override
@@ -65,13 +65,18 @@ public class BussLibrary9After implements TaskListener{
nextUserList.add(object.getString("fzrUserId"));
BussUtils.approvalFunc2(delegateTask, object, prcName, nextUserList);
// 评分存储
BussUtils.evalSave(delegateTask, object, prcName, delegateTask.getAssignee());
delegateTask.setVariable("jsfzrFlag", 0);
if(StringUtils.isBlank(object.getString("fsRejectStatus")) || object.getString("fsRejectStatus").equalsIgnoreCase("2")){
BussUtils.evalSave(delegateTask, object, prcName, delegateTask.getAssignee());
}
delegateTask.setVariable("bzFlag", 0);
}else {
throw new ActivitiException("1#2副主任用户参数不存在,请配置相关用户");
}
} else {
} else if ("1".equalsIgnoreCase(approvalOpinion)){
// 其他问题
if(StringUtils.isNotBlank(object.getString("xdUserId"))) {
BusProcessNew busProcessNew = new BusProcessNew();
busProcessNew.setMsgType("clause");
@@ -84,9 +89,31 @@ public class BussLibrary9After implements TaskListener{
busProcessNew.setPrcName(prcName);
busBean.save(busProcessNew);
BussUtils.approvalFunc1(delegateTask, busBean, object, prcName,"1");
BussUtils.evalSave(delegateTask, object, prcName, delegateTask.getAssignee());
delegateTask.setVariable("cxdUserId",object.getString("xdUserId"));
delegateTask.setVariable("jsfzrFlag", 1);
delegateTask.setVariable("bzFlag", 1);
}else {
throw new ActivitiException("1#2修订用户参数不存在,请配置相关用户");
}
}else if ("2".equalsIgnoreCase(approvalOpinion)){
// 质量问题
if(StringUtils.isNotBlank(object.getString("cfqUserId"))) {
BusProcessNew busProcessNew = new BusProcessNew();
busProcessNew.setMsgType("clause");
busProcessNew.setPId(delegateTask.getProcessInstanceId());
busProcessNew.setMesg(object.toJSONString());
busProcessNew.setTaskInfo(delegateTask.getTaskDefinitionKey());
busProcessNew.setFinishFlag("0");
busProcessNew.setTaskInfo(delegateTask.getName());
busProcessNew.setUserId(object.getString("cfqUserId"));
busProcessNew.setPrcName(prcName);
busBean.save(busProcessNew);
BussUtils.evalSave(delegateTask, object, prcName, delegateTask.getAssignee());
delegateTask.setVariable("cfqUserId",object.getString("cfqUserId"));
delegateTask.setVariable("bzFlag", 2);
}else {
throw new ActivitiException("1#2修订用户参数不存在,请配置相关用户");
}
@@ -11,7 +11,7 @@ import org.activiti.engine.delegate.TaskListener;
import java.util.List;
/**
* 标准法规部部长审核前
* 标准法规部高级经理(标准法规部部长审核前
*/
public class BussLibrary9Before implements TaskListener{
@Override
@@ -105,6 +105,10 @@ public class BussLibraryC6After implements TaskListener{
busProcessNewNext.setPrcName(prcName);
busBean.save(busProcessNewNext);
}
// 评分存储
if(StringUtils.isBlank(object.getString("fsRejectStatus")) || object.getString("fsRejectStatus").equalsIgnoreCase("2")) {
BussUtils.evalSave(delegateTask, object, prcName, delegateTask.getAssignee());
}
}
}
}
@@ -59,7 +59,7 @@ public class Step3After implements TaskListener {
for (Object s: jsonArray) {
JSONObject object1= JSON.parseObject(s.toString());
if (null!=map.get(object1.getString("unameId"))){
map.get(object1.getString("unameId")).getJSONArray("dataList");
map.get(object1.getString("unameId")).getJSONArray("dataList").add(object1);
}else {
JSONObject object2=new JSONObject();
object2=JSON.parseObject(object.toJSONString());