Browse Source

优化流程信息2

master
zhouhaibin 5 months ago
parent
commit
78d366880d
  1. 18
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouContractinfoController.java
  2. 124
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java
  3. 7
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouContractinfoHistoryMapper.java
  4. 28
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouContractinfoMapper.xml
  5. 3
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml
  6. 60
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouContractinfoHistory.java
  7. 6
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouSubProjectinfo.java
  8. 1
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouContractinfoService.java
  9. 175
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java
  10. 39
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java
  11. 23
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java
  12. 18
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java
  13. 3
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java
  14. 5
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java
  15. 4
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java

18
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouContractinfoController.java

@ -56,6 +56,24 @@ public class HuzhouContractinfoController {
contractinfoService.addContractinfo(file,contractList); contractinfoService.addContractinfo(file,contractList);
return Result.ok("上传成功"); return Result.ok("上传成功");
} }
@PostMapping(value = "/approvalContractinfo")
public Result<?> approvalContractinfo(@RequestParam(value = "file",required = false) MultipartFile[] file,
@RequestParam String taskId,
@RequestParam String flag,
@RequestParam String projectid,
@RequestParam String comment,
@RequestParam boolean isEdit,
String contractinfoList) throws IOException {
if(contractinfoList!=null){
ObjectMapper mapper = new ObjectMapper();
List<HuzhouContractinfo> contractList = mapper.readValue(contractinfoList, new TypeReference<List<HuzhouContractinfo>>(){});
contractinfoService.approvalContractinfo(file,contractList,taskId,flag,projectid,comment,isEdit);
}else{
contractinfoService.approvalContractinfo(file,null,taskId,flag,projectid,comment,isEdit);
}
return Result.ok("上传成功");
}
@GetMapping("/isExitTaskNameInPlanInfo") @GetMapping("/isExitTaskNameInPlanInfo")
public Result<?> isExitTaskNameInPlanInfo(String projectid,String taskName){ public Result<?> isExitTaskNameInPlanInfo(String projectid,String taskName){
Boolean exitTaskNameInPlanInfo = planinfoService.isExitTaskNameInPlanInfo(projectid, taskName); Boolean exitTaskNameInPlanInfo = planinfoService.isExitTaskNameInPlanInfo(projectid, taskName);

124
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java

@ -287,6 +287,7 @@ public class WorkflowController {
queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid); queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid);
queryWrapper.eq(HuzhouProcessinfo::getProcessName,stage); queryWrapper.eq(HuzhouProcessinfo::getProcessName,stage);
queryWrapper.orderByDesc(BaseEntity::getCreateDate); queryWrapper.orderByDesc(BaseEntity::getCreateDate);
HuzhouProcessinfo huzhouProcessinfo = processinfoService.list(queryWrapper).get(0); HuzhouProcessinfo huzhouProcessinfo = processinfoService.list(queryWrapper).get(0);
processInstanceId=huzhouProcessinfo.getProcessinstanceid(); processInstanceId=huzhouProcessinfo.getProcessinstanceid();
} }
@ -313,7 +314,7 @@ public class WorkflowController {
.list(); .list();
if (variablelist.size()>0) { if (variablelist.size()>0) {
for (HistoricVariableInstance hisvar:variablelist) { for (HistoricVariableInstance hisvar:variablelist) {
hashMap.put(hisvar.getVariableName(),hisvar.getValue()); hashMap.put(hisvar.getVariableName(),hisvar.getValue());//approvalStatue
} }
} }
@ -344,69 +345,82 @@ public class WorkflowController {
if(processInstance!=null){ if(processInstance!=null){
BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId()); BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
Collection<FlowElement> flowElements = bpmnModel.getProcesses().get(0).getFlowElements(); Collection<FlowElement> flowElements = bpmnModel.getProcesses().get(0).getFlowElements();
List<UserTask> userTaskList = new ArrayList<>();
for (FlowElement element : bpmnModel.getProcesses().get(0).getFlowElements()) { for (FlowElement element : bpmnModel.getProcesses().get(0).getFlowElements()) {
if (element instanceof UserTask) { if (element instanceof UserTask) {
UserTask userTask = (UserTask) element; UserTask userTask = (UserTask) element;
String taskId = userTask.getId(); userTaskList.add(userTask);
boolean match = approvalEntityList.stream().anyMatch(stream-> userTask.getName().equals(stream.get("taskName"))); }
if(match){ }
//存在判断最后一个是不是撤回 for (int i =0;i<userTaskList.size();i++ ) {
HashMap<String, Object> stringObjectHashMap = approvalEntityList.get(approvalEntityList.size() - 1); UserTask task=userTaskList.get(i);
if (userTask.getName().equals(stringObjectHashMap.get("taskName"))&&stringObjectHashMap.get("comment").toString().contains("撤回")){ HashMap<String, Object> lastUser = approvalEntityList.get(approvalEntityList.size() - 1);//获取最后一个
match=false; Object taskName = lastUser.get("taskName");
} boolean match = task.getName().equals(taskName);
} if(!match){
//未处理 userTaskList.remove(task);
if(!match){ }else{
HashMap<String, Object> hashMap = new HashMap<>(); userTaskList.remove(task);
List<String> candidateGroups = userTask.getCandidateGroups(); break;
String assignee = userTask.getAssignee(); }
hashMap.put("taskName", userTask.getName()); i--;
if(candidateGroups.size()==0){ }
if(assignee==null){ for (UserTask userTask: userTaskList ) {
//设置审批人名字 HashMap<String, Object> hashMap = new HashMap<>();
//说明任务没有被认领 List<String> candidateGroups = userTask.getCandidateGroups();
//获取变量名称 String assignee = userTask.getAssignee();
List<String> candidateUsers = userTask.getCandidateUsers(); hashMap.put("taskName", userTask.getName());
String candidateUsersString = candidateUsers.get(0);//${taskLeadingDepartment} if(candidateGroups.size()==0){
//正则表达式提取变量名 if(assignee==null){
Pattern pattern = Pattern.compile("\\$\\{(.*?)\\}"); //设置审批人名字
Matcher matcher = pattern.matcher(candidateUsersString); //说明任务没有被认领
if (matcher.find()) { //获取变量名称
String groupName = matcher.group(1);// 提取大括号中的内容 List<String> candidateUsers = userTask.getCandidateUsers();
// 获取所有变量 String candidateUsersString = candidateUsers.get(0);//${taskLeadingDepartment}
Map<String, Object> variables = runtimeService.getVariables(processInstanceId); //正则表达式提取变量名
List<String> variableValue = (List<String>)runtimeService.getVariable(processInstanceId, groupName); Pattern pattern = Pattern.compile("\\$\\{(.*?)\\}");
String name = ""; Matcher matcher = pattern.matcher(candidateUsersString);
for (String id:variableValue if (matcher.find()) {
) { String groupName = matcher.group(1);// 提取大括号中的内容
String nickname = sysUserService.getById(id).getNickname(); // 获取所有变量
name=name+nickname+","; Map<String, Object> variables = runtimeService.getVariables(processInstanceId);
} Object variable = runtimeService.getVariable(processInstanceId, groupName);
hashMap.put("operator", name.substring(0,name.length()-1)); if(variable instanceof String){
} String startUserid = (String)variable;
String nickname = sysUserService.getById(startUserid).getNickname();
hashMap.put("operator", nickname);
}else{ }else{
hashMap.put("operator", sysUserService.getById(assignee).getNickname()); List<String> variableValue = (List<String>)variable;
} String name = "";
}else{ for (String id:variableValue
LambdaQueryWrapper<SysUserRole> queryWrapper = new LambdaQueryWrapper<>(); ) {
queryWrapper.eq(SysUserRole::getRoleId,candidateGroups.get(0)); String nickname = sysUserService.getById(id).getNickname();
List<SysUserRole> sysUserRoles = userRoleMapper.selectList(queryWrapper); name=name+nickname+",";
String name="";
if(sysUserRoles.size()>0){
for (SysUserRole userRole:sysUserRoles){
name = name+sysUserService.getById(userRole.getUserId()).getNickname()+",";
} }
hashMap.put("operator", name.substring(0,name.length()-1));
} }
if(StringUtils.isNotBlank(name)){
name=name.substring(0,name.length()-1);
}
hashMap.put("operator", name);
}
approvalEntityList.add(hashMap);
}
}else{
hashMap.put("operator", sysUserService.getById(assignee).getNickname());
}
}else{
LambdaQueryWrapper<SysUserRole> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysUserRole::getRoleId,candidateGroups.get(0));
List<SysUserRole> sysUserRoles = userRoleMapper.selectList(queryWrapper);
String name="";
if(sysUserRoles.size()>0){
for (SysUserRole userRole:sysUserRoles){
name = name+sysUserService.getById(userRole.getUserId()).getNickname()+",";
}
}
if(StringUtils.isNotBlank(name)){
name=name.substring(0,name.length()-1);
} }
hashMap.put("operator", name);
} }
approvalEntityList.add(hashMap);
} }
} }

7
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouContractinfoHistoryMapper.java

@ -0,0 +1,7 @@
package com.easy.admin.modules.huzhou.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.easy.admin.modules.huzhou.entity.HuzhouContractinfoHistory;
public interface HuzhouContractinfoHistoryMapper extends BaseMapper<HuzhouContractinfoHistory> {
}

28
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouContractinfoMapper.xml

@ -81,6 +81,7 @@
<result property="payamount2023Money" column="payamount2023_money" jdbcType="NUMERIC"/> <result property="payamount2023Money" column="payamount2023_money" jdbcType="NUMERIC"/>
<result property="payamount2024Money" column="payamount2024_money" jdbcType="NUMERIC"/> <result property="payamount2024Money" column="payamount2024_money" jdbcType="NUMERIC"/>
<result property="payamount2025Money" column="payamount2025_money" jdbcType="VARCHAR"/> <result property="payamount2025Money" column="payamount2025_money" jdbcType="VARCHAR"/>
<result property="contractStatus" column="contractStatus" jdbcType="VARCHAR"/>
<collection property="children" ofType="com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo" select="selectchildrenMapList2" column="id"/> <collection property="children" ofType="com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo" select="selectchildrenMapList2" column="id"/>
</resultMap> </resultMap>
<resultMap id="childrenMap" type="com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo"> <resultMap id="childrenMap" type="com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo">
@ -98,11 +99,12 @@
<select id="getContractProjectPageList" resultMap="HuzhouProjectinfoMap1" parameterType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo"> <select id="getContractProjectPageList" resultMap="HuzhouProjectinfoMap1" parameterType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo">
SELECT * from huzhou_projectinfo u SELECT * from huzhou_projectinfo u
<where> <where>
NOT exists ( and u.id not in (select distinct project_id from huzhou_contractinfo)
and NOT exists (
SELECT 1 SELECT 1
FROM huzhou_sub_projectinfo sub FROM huzhou_sub_projectinfo sub
left JOIN ( select cc.project_id,ss.project_id zhuprojectid,cc.task_name,cc.status,ss.stage from huzhou_contractinfo cc INNER JOIN huzhou_sub_projectinfo ss on cc.project_id=ss.id) c ON sub.id = c.project_id left JOIN ( select cc.project_id,ss.project_id zhuprojectid,cc.task_name,cc.status,ss.stage from huzhou_contractinfo cc INNER JOIN huzhou_sub_projectinfo ss on cc.project_id=ss.id) c ON sub.id = c.project_id
WHERE sub.project_id = u.id and (c.status = '1' or c.status is null) and sub.stage>=5 WHERE sub.project_id = u.id and sub.stage>=5
HAVING COUNT(DISTINCT c.project_id) = COUNT(DISTINCT sub.id) AND COUNT(DISTINCT sub.id)>0) HAVING COUNT(DISTINCT c.project_id) = COUNT(DISTINCT sub.id) AND COUNT(DISTINCT sub.id)>0)
<if test="info.projectContacts!=null and info.projectContacts!=''"> <if test="info.projectContacts!=null and info.projectContacts!=''">
and u.id in( and u.id in(
@ -156,22 +158,19 @@
</where> </where>
</select> </select>
<select id="getContractinfoPageList" resultMap="HuzhouProjectinfoMap2" parameterType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo"> <select id="getContractinfoPageList" resultMap="HuzhouProjectinfoMap2" parameterType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo">
SELECT * from huzhou_projectinfo u SELECT u.*,con.status contractStatus from huzhou_projectinfo u
left join (SELECT status,group_id,project_id from huzhou_contractinfo GROUP BY status,group_id,project_id) con on u.id =con.project_id
<where> <where>
<if test="info.projectContacts!=null and info.projectContacts!=''"> <if test="info.projectContacts!=null and info.projectContacts!=''">
and u.id in (select distinct project_id from huzhou_contractinfo ct where status ='1' and ct.project_id in ( and u.id in (select distinct project_id from huzhou_contractinfo ct where ct.project_id in (
select project_id from huzhou_userproject where user_id=#{info.projectContacts} select project_id from huzhou_userproject where user_id=#{info.projectContacts}
) )
) )
</if> </if>
<if test="info.supervisorContactor!=null and info.supervisorContactor!=''"> <if test="info.supervisorContactor!=null and info.supervisorContactor!=''">
and u.id and u.id in (select distinct project_id from huzhou_contractinfo ct where ct.project_id
in( in(
SELECT DISTINCT id from huzhou_projectinfo e where e.admin_division in( SELECT DISTINCT id from huzhou_projectinfo e where e.admin_division in(
SELECT DISTINCT a.admin_division from huzhou_projectinfo a where a.id in (select c.project_id from SELECT DISTINCT a.admin_division from huzhou_projectinfo a where a.id in (select c.project_id from
@ -187,14 +186,14 @@
) )
</if> </if>
<if test="(info.supervisorContactor==null or info.supervisorContactor=='' )and( info.projectContacts==null or info.projectContacts=='')"> <if test="(info.supervisorContactor==null or info.supervisorContactor=='' )and( info.projectContacts==null or info.projectContacts=='')">
and u.id in (select distinct project_id from huzhou_contractinfo ct where status ='1') and u.id in (select distinct project_id from huzhou_contractinfo ct )
</if> </if>
or ( or (
EXISTS ( EXISTS (
SELECT 1 SELECT 1
FROM huzhou_sub_projectinfo sub FROM huzhou_sub_projectinfo sub
JOIN huzhou_contractinfo c ON sub.id = c.project_id JOIN huzhou_contractinfo c ON sub.id = c.project_id
WHERE sub.project_id = u.id and c.status ='1' WHERE sub.project_id = u.id
HAVING COUNT(DISTINCT c.project_id) >0) HAVING COUNT(DISTINCT c.project_id) >0)
) )
<if test="info.projectContacts!=null and info.projectContacts!=''"> <if test="info.projectContacts!=null and info.projectContacts!=''">
@ -258,18 +257,19 @@
u.project_id = #{id} and u.project_id = #{id} and
not exists( not exists(
SELECT 1 from huzhou_contractinfo c SELECT 1 from huzhou_contractinfo c
WHERE c.project_id = u.id and c.status ='1' WHERE c.project_id = u.id
HAVING COUNT(DISTINCT c.project_id) >0) HAVING COUNT(DISTINCT c.project_id) >0)
</where> </where>
-- not exists -- not exists
</select> </select>
<select id="selectchildrenMapList2" resultType="com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo"> <select id="selectchildrenMapList2" resultType="com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo">
select * from huzhou_sub_projectinfo u select u.*,con.status contractStatus from huzhou_sub_projectinfo u
left join (SELECT status,group_id,project_id from huzhou_contractinfo GROUP BY status,group_id,project_id) con on u.id =con.project_id
<where> <where>
u.project_id = #{id} and u.project_id = #{id} and
exists( exists(
SELECT 1 from huzhou_contractinfo c SELECT 1 from huzhou_contractinfo c
WHERE c.project_id = u.id and c.status ='1' WHERE c.project_id = u.id
HAVING COUNT(DISTINCT c.project_id) >0) HAVING COUNT(DISTINCT c.project_id) >0)
</where> </where>
</select> </select>

3
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml

@ -163,8 +163,9 @@ order by create_date desc
and u.stage &gt;= #{info.stage} and u.stage &gt;= #{info.stage}
</if> </if>
</where> </where>
order by u.create_date desc
</select> </select>
<select id="selectchildrenMapList" resultType="com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo"> <select id="selectchildrenMapList" resultType="com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo">
select * from huzhou_sub_projectinfo where project_id = #{id} select * from huzhou_sub_projectinfo where project_id = #{id} order by create_date desc
</select> </select>
</mapper> </mapper>

60
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouContractinfoHistory.java

@ -0,0 +1,60 @@
package com.easy.admin.modules.huzhou.entity;
import java.util.Date;
import java.io.Serializable;
/**
* (HuzhouContractinfoHistory)实体类
*
* @author makejava
* @since 2024-04-19 16:02:15
*/
public class HuzhouContractinfoHistory extends BaseEntity implements Serializable {
private static final long serialVersionUID = 390927610448195008L;
/**
* id
*/
private String id;
/**
* 项目id
*/
private String projectId;
/**
* 支付时间
*/
private Date payDate;
/**
* 属性计划节点
*/
private String taskName;
/**
* 总金额
*/
private Double totalMoney;
/**
* 自筹资金
*/
private Double selfMoney;
/**
* 省级资金
*/
private Double provincialMoney;
/**
* 市级资金
*/
private Double cityMoney;
/**
* 区县资金
*/
private Double countyMoney;
/**
* 中央资金
*/
private Double centralMoney;
private String groupId;
private String status;
}

6
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouSubProjectinfo.java

@ -19,7 +19,11 @@ public class HuzhouSubProjectinfo extends HuzhouProjectinfo implements Serializa
@TableField(exist = false) @TableField(exist = false)
String planProcessStatus; String planProcessStatus;
/**
* 合同流程状态
*/
@TableField(exist = false)
String contractStatus;
} }

1
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouContractinfoService.java

@ -30,4 +30,5 @@ public interface IHuzhouContractinfoService extends IService<HuzhouContractinfo>
List<HuzhouContractinfo> getContractinfoByprojectId(String projectid); List<HuzhouContractinfo> getContractinfoByprojectId(String projectid);
void approvalContractinfo(MultipartFile[] file, List<HuzhouContractinfo> contractList, String taskId, String flag, String projectid, String comment,boolean isEdit) throws IOException;
} }

175
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java

@ -4,29 +4,28 @@ 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.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.easy.admin.auth.model.SysRole; import com.easy.admin.auth.service.SysUserService;
import com.easy.admin.auth.model.SysUser; import com.easy.admin.common.core.exception.EasyException;
import com.easy.admin.common.util.CommonUtils; import com.easy.admin.common.util.CommonUtils;
import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoHistoryMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouSubProjectinfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouSubProjectinfoMapper;
import com.easy.admin.modules.huzhou.entity.HuzhouContractinfo; import com.easy.admin.modules.huzhou.entity.*;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo; import com.easy.admin.modules.huzhou.service.*;
import com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo;
import com.easy.admin.modules.huzhou.service.IHuzhouContractinfoService;
import com.easy.admin.modules.huzhou.service.IHuzhouUploadfileinfoService;
import com.easy.admin.modules.huzhou.vo.HuzhouContractinfoOV;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV; import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import com.easy.admin.util.ShiroUtil; import com.easy.admin.sys.model.SysDict;
import com.easy.admin.sys.service.SysDictService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -41,7 +40,22 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
private HuzhouSubProjectinfoMapper subProjectinfoMapper; private HuzhouSubProjectinfoMapper subProjectinfoMapper;
@Autowired @Autowired
private IHuzhouUploadfileinfoService uploadfileinfoService; private IHuzhouUploadfileinfoService uploadfileinfoService;
@Autowired
private IWorkflowService workflowService;
@Autowired
private IHuzhouSubProjectinfoService subProjectinfoService;
@Autowired
private SysUserService userService;
@Autowired
private SysDictService sysDictService;
@Autowired
private TaskService taskService;
@Autowired
private IHuzhouProjectinfoService projectinfoService;
@Autowired
private HuzhouContractinfoHistoryMapper contractinfoHistoryMapper;
@Autowired
private RuntimeService runtimeService;
@Override @Override
public Page<HuzhouProjectinfoOV> getContractProjectPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) { public Page<HuzhouProjectinfoOV> getContractProjectPageList(HuzhouProjectinfo projectinfo, Integer pageNo, Integer pageSize) {
Page page = new Page(pageNo, pageSize); Page page = new Page(pageNo, pageSize);
@ -76,8 +90,47 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
public void addContractinfo(MultipartFile[] file, List<HuzhouContractinfo> contractinfoList) throws IOException { public void addContractinfo(MultipartFile[] file, List<HuzhouContractinfo> contractinfoList) throws IOException {
String projectid = contractinfoList.get(0).getProjectId(); String projectid = contractinfoList.get(0).getProjectId();
uploadfileinfoService.saveFileAndFileInfo(file, projectid, "4"); uploadfileinfoService.saveFileAndFileInfo(file, projectid, "4");
saveBatch(contractinfoList); WorkFlow workFlow = workflowService.createFlow("createContract",projectid);
String projectId = contractinfoList.get(0).getProjectId();
HuzhouProjectinfo huzhouProjectinfo = projectinfoService.getById(projectId);
String superLeader = "";
//如果项目信息为空说明是子项目
if(huzhouProjectinfo==null){
HuzhouSubProjectinfo byId = subProjectinfoService.getById(projectId);
superLeader = byId.getSuperLeader();
}else {
superLeader=huzhouProjectinfo.getSuperLeader();
}
//获取上级指导室中文名称
SysDict dict = sysDictService.getDictByCode("superLeader", superLeader);
String dictName = dict.getName();
//上级指导室中文名称查询角色有哪些人
List<HashMap<String, String>> userDictByRoles = userService.getUserDictByRoles(dictName);
ArrayList<String> userIdlist = new ArrayList<>();
if(userDictByRoles==null||userDictByRoles.size()==0){
String error = "任务牵头处室"+dictName+"负责人未找到";
throw new EasyException(error);
}
for (HashMap<String, String> map:userDictByRoles
) {
String userid = map.get("value");
userIdlist.add(userid);
}
Task task = workFlow.getTask();
String taskId = task.getId();
String processInstanceId = workFlow.getProcessInstanceId();
Map<String, Object> variables = new HashMap<>();
variables.put("taskLeadingDepartment",userIdlist);
taskService.setVariableLocal(taskId,"approvalStatue","1");//添加审批状态 通过
String comment = "同意";
taskService.addComment(taskId,processInstanceId,comment);//添加审批意见
taskService.complete(taskId, variables);
List<HuzhouContractinfo> collect = contractinfoList.stream().map(contract -> {
contract.setStatus("1");
return contract;
}).collect(Collectors.toList());
saveBatch(collect);
} }
@ -88,11 +141,60 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
if(file!=null){ if(file!=null){
uploadfileinfoService.modifyUploadFile(file,projectid,"4"); uploadfileinfoService.modifyUploadFile(file,projectid,"4");
} }
LambdaUpdateWrapper<HuzhouContractinfo> updateWrapper = new LambdaUpdateWrapper<>(); //查询旧的合同保存
updateWrapper.set(HuzhouContractinfo::getStatus,"0"); LambdaQueryWrapper<HuzhouContractinfo> queryWrapper = new LambdaQueryWrapper<>();
updateWrapper.eq(HuzhouContractinfo::getProjectId,projectid); queryWrapper.eq(HuzhouContractinfo::getProjectId,projectid);
update(null,updateWrapper); List<HuzhouContractinfo> oldList = list(queryWrapper);
saveBatch(contractinfoList); oldList.forEach(item->{
HuzhouContractinfoHistory huzhouContractinfoHistory = new HuzhouContractinfoHistory();
BeanUtils.copyProperties(item,huzhouContractinfoHistory);
contractinfoHistoryMapper.insert(huzhouContractinfoHistory);
});
//删除合同表数据
remove(queryWrapper);
List<HuzhouContractinfo> collect = contractinfoList.stream().map(contract -> {
contract.setStatus("1");
return contract;
}).collect(Collectors.toList());
saveBatch(collect);
WorkFlow workFlow = workflowService.createFlow("createContract",projectid);
String projectId = contractinfoList.get(0).getProjectId();
HuzhouProjectinfo huzhouProjectinfo = projectinfoService.getById(projectId);
String superLeader = "";
//如果项目信息为空说明是子项目
if(huzhouProjectinfo==null){
HuzhouSubProjectinfo byId = subProjectinfoService.getById(projectId);
superLeader = byId.getSuperLeader();
}else {
superLeader=huzhouProjectinfo.getSuperLeader();
}
//获取上级指导室中文名称
SysDict dict = sysDictService.getDictByCode("superLeader", superLeader);
String dictName = dict.getName();
//上级指导室中文名称查询角色有哪些人
List<HashMap<String, String>> userDictByRoles = userService.getUserDictByRoles(dictName);
ArrayList<String> userIdlist = new ArrayList<>();
if(userDictByRoles==null||userDictByRoles.size()==0){
String error = "任务牵头处室"+dictName+"负责人未找到";
throw new EasyException(error);
}
for (HashMap<String, String> map:userDictByRoles
) {
String userid = map.get("value");
userIdlist.add(userid);
}
Task task = workFlow.getTask();
String taskId = task.getId();
String processInstanceId = workFlow.getProcessInstanceId();
Map<String, Object> variables = new HashMap<>();
variables.put("taskLeadingDepartment",userIdlist);
taskService.setVariableLocal(taskId,"approvalStatue","1");//添加审批状态 通过
String comment = "同意";
taskService.addComment(taskId,processInstanceId,comment);//添加审批意见
taskService.complete(taskId, variables);
return true; return true;
} }
@ -109,10 +211,43 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
public List<HuzhouContractinfo> getContractinfoByprojectId(String projectid) { public List<HuzhouContractinfo> getContractinfoByprojectId(String projectid) {
LambdaQueryWrapper<HuzhouContractinfo> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<HuzhouContractinfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouContractinfo::getProjectId, projectid); queryWrapper.eq(HuzhouContractinfo::getProjectId, projectid);
queryWrapper.eq(HuzhouContractinfo::getStatus,"1");
List<HuzhouContractinfo> list = list(queryWrapper); List<HuzhouContractinfo> list = list(queryWrapper);
return list; return list;
} }
@Override
public void approvalContractinfo(MultipartFile[] file, List<HuzhouContractinfo> contractList, String taskId, String flag,String projectId, String comment,boolean isEdit) throws IOException {
if(isEdit&&"1".equals(flag)){
if(file!=null){
uploadfileinfoService.modifyUploadFile(file,projectId,"4");
}
//查询旧的合同保存
LambdaQueryWrapper<HuzhouContractinfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouContractinfo::getProjectId,projectId);
List<HuzhouContractinfo> oldList = list(queryWrapper);
oldList.forEach(item->{
HuzhouContractinfoHistory huzhouContractinfoHistory = new HuzhouContractinfoHistory();
BeanUtils.copyProperties(item,huzhouContractinfoHistory);
contractinfoHistoryMapper.insert(huzhouContractinfoHistory);
});
//删除合同表数据
remove(queryWrapper);
List<HuzhouContractinfo> collect = contractList.stream().map(contract -> {
contract.setStatus("1");
return contract;
}).collect(Collectors.toList());
saveBatch(collect);
}
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment);
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(workFlow.getProcessInstanceId()).singleResult();
//审批通过修改项目要状态
if(processInstance==null&&"1".equals(flag)){
LambdaUpdateWrapper<HuzhouContractinfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(HuzhouContractinfo::getStatus,"2");
updateWrapper.eq(HuzhouContractinfo::getProjectId,projectId);
update(updateWrapper);
}
}
} }

39
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java

@ -691,7 +691,6 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
throw new EasyException(isAllow); throw new EasyException(isAllow);
} }
//修改项目计划会重新修改项目阶段类型 //修改项目计划会重新修改项目阶段类型
WorkFlow workFlow = workflowService.createFlow("createPlaninfo",projectid);
projectinfoService.modifyStageById(projectid,"4"); projectinfoService.modifyStageById(projectid,"4");
//保存历史记录 //保存历史记录
List<HuzhouPlaninfo> planinfoHistory = getListByProjectId(projectid); List<HuzhouPlaninfo> planinfoHistory = getListByProjectId(projectid);
@ -705,6 +704,44 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
update(null,wrapper); update(null,wrapper);
//批量新增 //批量新增
saveBatch(huzhouPlaninfoArrayList); saveBatch(huzhouPlaninfoArrayList);
WorkFlow workFlow = workflowService.createFlow("createPlaninfo",projectid);
Task task = workFlow.getTask();
String processInstanceId = workFlow.getProcessInstanceId();
String taskId = task.getId();
//发起人节点处理
taskService.setVariableLocal(taskId,"approvalStatue","1");//添加审批状态 通过
String comment = "同意";
taskService.addComment(taskId,processInstanceId,comment);//添加审批意见
Map<String, Object> variables = new HashMap<>();
HuzhouProjectinfo huzhouProjectinfo = projectinfoService.getById(projectid);
String superLeader = "";
//如果项目信息为空说明是子项目
if(huzhouProjectinfo==null){
HuzhouSubProjectinfo byId = subProjectinfoService.getById(projectid);
superLeader = byId.getSuperLeader();
}else {
superLeader=huzhouProjectinfo.getSuperLeader();
}
//获取上级指导室中文名称
SysDict dict = sysDictService.getDictByCode("superLeader", superLeader);
String dictName = dict.getName();
//上级指导室中文名称查询角色有哪些人
List<HashMap<String, String>> userDictByRoles = sysUserService.getUserDictByRoles(dictName);
ArrayList<String> strings = new ArrayList<>();
if(userDictByRoles==null||userDictByRoles.size()==0){
String error = "任务牵头处室"+dictName+"负责人未找到";
throw new EasyException(error);
}
for (HashMap<String, String> map:userDictByRoles
) {
String userid = map.get("value");
strings.add(userid);
}
variables.put("taskLeadingDepartment",strings);
runtimeService.setVariable(processInstanceId, "taskLeadingDepartment", strings);//设置第三个人变量信息
taskService.complete(taskId, variables);
//修改项目的阶段状态
projectinfoService.modifyStageById(projectid,"4");
} }
@Override @Override

23
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java

@ -119,7 +119,26 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
variables.put("taskLeadingDepartment",strings); variables.put("taskLeadingDepartment",strings);
runtimeService.setVariable(processInstanceId, "taskLeadingDepartment", strings);//设置第四个人变量信息 runtimeService.setVariable(processInstanceId, "taskLeadingDepartment", strings);//设置第四个人变量信息
variables.clear(); variables.clear();
//上级指导室中文名称查询角色有哪些人 //根据行政区县判断审批人
if("市本级".equals(adminDivision)){
//是市本级,判读责任单位
String dutyWorkplace = huzhouProjectinfo.getDutyWorkplace();
if(dutyWorkplace.contains("湖州市中心医院")){
//是湖州市中心医院 则由吴兴区负责人审批
adminDivision="吴兴区";
}else if(dutyWorkplace.contains("湖州市第一人民医院")){
//是湖州市第一人民医院,则有南浔区负责人审批
adminDivision="南浔区";
}else if(dutyWorkplace.contains("湖州市第三人民医院")){
//是湖州市第三人民医院,则有德清县负责人审批
adminDivision="德清县";
}else if(dutyWorkplace.contains("湖州市妇幼保健院")){
adminDivision="安吉县";
}else if(dutyWorkplace.contains("湖州市中医院")){
adminDivision="长兴县";
}
}
//行政区县名称查询角色有哪些人
userDictByRoles = userService.getUserDictByRoles(adminDivision); userDictByRoles = userService.getUserDictByRoles(adminDivision);
ArrayList<String> strings2 = new ArrayList<>(); ArrayList<String> strings2 = new ArrayList<>();
if(userDictByRoles==null||userDictByRoles.size()==0){ if(userDictByRoles==null||userDictByRoles.size()==0){
@ -144,7 +163,7 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl<HuzhouPlaninfofil
LambdaQueryWrapper<HuzhouContractinfo> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<HuzhouContractinfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouContractinfo::getTaskName,taskName); queryWrapper.eq(HuzhouContractinfo::getTaskName,taskName);
queryWrapper.eq(HuzhouContractinfo::getProjectId,projectId); queryWrapper.eq(HuzhouContractinfo::getProjectId,projectId);
queryWrapper.eq(HuzhouContractinfo::getStatus,"1"); queryWrapper.ge(HuzhouContractinfo::getStatus,"1");
List<HuzhouContractinfo> contractinfoList = contractinfoMapper.selectList(queryWrapper); List<HuzhouContractinfo> contractinfoList = contractinfoMapper.selectList(queryWrapper);
if(contractinfoList!=null&&contractinfoList.size()>0){ if(contractinfoList!=null&&contractinfoList.size()>0){
existsContractinfo=true; existsContractinfo=true;

18
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

@ -91,6 +91,15 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
@Override @Override
public void submitProject(HuzhouProjectinfo info) { public void submitProject(HuzhouProjectinfo info) {
//保存项目信息
info.setStage("1");//最开始的状态。项目入库中
if(info.getId()!=null){
//批量入库后,有项目负责人重新发起入库申请
userprojectService.removeByProjectId(info.getId(),"0");
this.updateById(info);
}else{
this.save(info);//保存项目信息
}
WorkFlow workFlow = workflowService.createFlow("creatProjectinfo",info.getId());//创建流程 WorkFlow workFlow = workflowService.createFlow("creatProjectinfo",info.getId());//创建流程
Task task = workFlow.getTask(); Task task = workFlow.getTask();
String processInstanceId = workFlow.getProcessInstanceId(); String processInstanceId = workFlow.getProcessInstanceId();
@ -119,15 +128,6 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
String comment = "同意"; String comment = "同意";
taskService.addComment(taskId,processInstanceId,comment);//添加审批意见 taskService.addComment(taskId,processInstanceId,comment);//添加审批意见
taskService.complete(taskId, variables); taskService.complete(taskId, variables);
//保存项目信息
info.setStage("1");//最开始的状态。项目入库中
if(info.getId()!=null){
//批量入库后,有项目负责人重新发起入库申请
userprojectService.removeByProjectId(info.getId(),"0");
this.updateById(info);
}else{
this.save(info);//保存项目信息
}
userprojectService.saveFromProject(info,"0");//保存项目联系人信息,0表示当前醒目是主项目 userprojectService.saveFromProject(info,"0");//保存项目联系人信息,0表示当前醒目是主项目
} }

3
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouUploadfileinfoServiceImpl.java

@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.easy.admin.common.util.CommonUtils; import com.easy.admin.common.util.CommonUtils;
import com.easy.admin.modules.huzhou.dao.HuzhouProcessinfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouProcessinfoMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouUploadfileinfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouUploadfileinfoMapper;
import com.easy.admin.modules.huzhou.entity.BaseEntity;
import com.easy.admin.modules.huzhou.entity.HuzhouProcessinfo; import com.easy.admin.modules.huzhou.entity.HuzhouProcessinfo;
import com.easy.admin.modules.huzhou.entity.HuzhouUploadfileinfo; import com.easy.admin.modules.huzhou.entity.HuzhouUploadfileinfo;
import com.easy.admin.modules.huzhou.service.IHuzhouUploadfileinfoService; import com.easy.admin.modules.huzhou.service.IHuzhouUploadfileinfoService;
@ -119,6 +120,7 @@ public class HuzhouUploadfileinfoServiceImpl extends ServiceImpl<HuzhouUploadfil
LambdaUpdateWrapper<HuzhouUploadfileinfo> huzhouUploadfileinfoLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<HuzhouUploadfileinfo> huzhouUploadfileinfoLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
huzhouUploadfileinfoLambdaUpdateWrapper.eq(HuzhouUploadfileinfo::getProjectid,projectid); huzhouUploadfileinfoLambdaUpdateWrapper.eq(HuzhouUploadfileinfo::getProjectid,projectid);
huzhouUploadfileinfoLambdaUpdateWrapper.eq(HuzhouUploadfileinfo::getStage,stage); huzhouUploadfileinfoLambdaUpdateWrapper.eq(HuzhouUploadfileinfo::getStage,stage);
huzhouUploadfileinfoLambdaUpdateWrapper.orderByDesc(BaseEntity::getCreateDate);
IPage<HuzhouUploadfileinfo> uploadfileinfoIPage = this.page(huzhouUploadfileinfoIPage, huzhouUploadfileinfoLambdaUpdateWrapper); IPage<HuzhouUploadfileinfo> uploadfileinfoIPage = this.page(huzhouUploadfileinfoIPage, huzhouUploadfileinfoLambdaUpdateWrapper);
return uploadfileinfoIPage; return uploadfileinfoIPage;
} }
@ -133,6 +135,7 @@ public class HuzhouUploadfileinfoServiceImpl extends ServiceImpl<HuzhouUploadfil
huzhouProcessinfoLambdaQueryWrapper.eq(HuzhouProcessinfo::getProcessName,"supervisionFile"); huzhouProcessinfoLambdaQueryWrapper.eq(HuzhouProcessinfo::getProcessName,"supervisionFile");
huzhouProcessinfoLambdaQueryWrapper.eq(HuzhouProcessinfo::getProcessstatus,"2"); huzhouProcessinfoLambdaQueryWrapper.eq(HuzhouProcessinfo::getProcessstatus,"2");
huzhouProcessinfoLambdaQueryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid); huzhouProcessinfoLambdaQueryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid);
huzhouProcessinfoLambdaQueryWrapper.orderByDesc(BaseEntity::getCreateDate);
List<HuzhouProcessinfo> huzhouProcessinfos = processinfoMapper.selectList(huzhouProcessinfoLambdaQueryWrapper); List<HuzhouProcessinfo> huzhouProcessinfos = processinfoMapper.selectList(huzhouProcessinfoLambdaQueryWrapper);
//未通过返回空 //未通过返回空
if(huzhouProcessinfos.size()==0){ if(huzhouProcessinfos.size()==0){

5
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java

@ -160,6 +160,7 @@ public class WorkflowServiceImpl implements IWorkflowService {
// outRes.put("buttons",actionButtons); // outRes.put("buttons",actionButtons);
workflowActionParamOV.setButtons(actionButtons); workflowActionParamOV.setButtons(actionButtons);
workflowActionParamOV.setShowApprovalForm(false); workflowActionParamOV.setShowApprovalForm(false);
workflowActionParamOV.setIsEdit(false);
// outRes.put("showApprovalForm",false); // outRes.put("showApprovalForm",false);
SysUser currentUser = ShiroUtil.getCurrentUser(); SysUser currentUser = ShiroUtil.getCurrentUser();
String currentLoginuserId = currentUser.getId(); String currentLoginuserId = currentUser.getId();
@ -209,7 +210,9 @@ public class WorkflowServiceImpl implements IWorkflowService {
} }
}else{ }else{
//代办 发起人可以作废,还要可以修改,加一个修改表示(前端也行) //代办 发起人可以作废,还要可以修改,加一个修改表示(前端也行)
workflowActionParamOV.setButtons(actionButtons);
workflowActionParamOV.setShowApprovalForm(true); workflowActionParamOV.setShowApprovalForm(true);
workflowActionParamOV.setIsEdit(false);
// outRes.put("showApprovalForm",true); // outRes.put("showApprovalForm",true);
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
//获取当前模型 //获取当前模型
@ -269,7 +272,7 @@ public class WorkflowServiceImpl implements IWorkflowService {
List<Task> taskList = taskService.createTaskQuery() List<Task> taskList = taskService.createTaskQuery()
.orderByTaskCreateTime() .orderByTaskCreateTime()
.desc() .desc()
.taskCandidateOrAssigned(currentUser.getId()) .taskAssignee(currentUser.getId())
.list(); .list();
hashMap.put("daiban",taskList.size()); hashMap.put("daiban",taskList.size());
return hashMap; return hashMap;

4
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouProjectinfoOV.java

@ -18,5 +18,9 @@ public class HuzhouProjectinfoOV extends HuzhouProjectinfo {
* 是否缺失子项目标志 true 缺失 * 是否缺失子项目标志 true 缺失
*/ */
Boolean missingSubprojects; Boolean missingSubprojects;
/**
* 合同流程状态
*/
String contractStatus;
// String isSubProject; // String isSubProject;
} }

Loading…
Cancel
Save