[新增] 工作流工作台 及权限申请流程

This commit is contained in:
bupengxiang
2023-04-24 21:55:16 +08:00
parent 2d1b1d2066
commit 867f703968
24 changed files with 427 additions and 84 deletions
@@ -329,7 +329,7 @@ public class ReportManageConroller {
* @throws ParseException
*/
@ApiOperation("添加报告")
@GetMapping("/addReportPage")
@PostMapping("/addReportPage")
public ResponseMessage addReportPage(@RequestBody ReportQueryVo vo) throws Exception {
IPage<ReportVo> reportVoIPage = reportService.addReportPage(vo);
return Result.success(reportVoIPage);
@@ -42,4 +42,7 @@ public interface PowerApplyActDao extends BaseMapper<PowerApplyAct> {
* @description 列表查询
*/
List<PowerApplyAct> queryList(@Param("pageVO") PowerApplyActPageVO powerApplyActPageVO);
int batchInsert(@Param("list")List<PowerApplyAct> powerApplyActs);
}
@@ -48,10 +48,12 @@ public class PowerApply {
private String userId;
/**
* 申请原因
* 权限 1 预览
* 2 预览 + 下载
*/
@TableField("power")
private Integer power;
/**
* 创建人id
*/
@@ -42,11 +42,24 @@ public class PowerApplyAct {
private String dataId;
/**
* 报告名称
* 报告id
*/
@TableField("report_id")
private String reportId;
/**
* 权限 1 预览
* 2 预览 + 下载
*/
@TableField("power")
private Integer power;
/**
* 申请原因
*/
@TableField("apply_reason")
private String applyReason;
/**
* 申请人
*/
@@ -24,11 +24,7 @@ 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
@@ -38,7 +34,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -354,14 +349,14 @@ public class IReportServiceImpl extends ServiceImpl<ReportDao, ReportEntity>
page.setSize(vo.getPageSize());
//判断是不是管理员
boolean admin = CommonUtils.isAdmin();
if (admin) {
vo.setUsid(null);
} else {
vo.setUsid(CommonUtils.getUserId());
}
// boolean admin = CommonUtils.isAdmin();
// if (admin) {
// vo.setUsid(null);
// } else {
// vo.setUsid(CommonUtils.getUserId());
// }
vo.setUsid(CommonUtils.getUserId());
IPage<ReportVo> list = reportDao.getAddReportPage(page, vo);
return list;
@@ -46,4 +46,6 @@ public class ReportQueryVo {
*/
private String usid;
private List<String> ids;
}
@@ -15,6 +15,8 @@
<result column="update_date" property="updateDate" />
<result column="update_user_id" property="updateUserId" />
<result column="del_flag" property="delFlag" />
<result column="power" property="power" />
<result column="apply_reason" property="applyReason" />
</resultMap>
<!--表名信息-->
@@ -24,14 +26,13 @@
<!-- 通用查询结果列 -->
<sql id="BaseColumnList">
id,
prc_id, task_id, data_id,user_id,report_id,create_user_id,create_date,update_date,update_user_id,del_flag
id, prc_id, task_id, data_id, report_id, power, apply_reason, user_id, create_user_id, create_date, update_date, update_user_id, del_flag
</sql>
<!-- 查询条件 -->
<sql id="BaseQuerySql">
<where>
AND del = '${@com.adc.da.sys.constant.YesOrNoEnum@NO.value}'
AND del_flag = '${@com.adc.da.sys.constant.YesOrNoEnum@NO.value}'
<if test="pageVO != null">
<if test="pageVO.prcId !=null and pageVO.prcId !=''">
AND prc_id LIKE CONCAT(CONCAT('%',#{pageVO.prcId}),'%')
@@ -52,6 +53,15 @@
</where>
</sql>
<insert id="batchInsert" parameterType="java.util.List">
insert into power_apply_act (id, prc_id, task_id, data_id, report_id, power, apply_reason, user_id, create_user_id, create_date, update_date, update_user_id, del_flag)
values
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.prcId}, #{item.taskId}, #{item.dataId}, #{item.reportId}, #{item.power}, #{item.applyReason}, #{item.userId}, #{item.createUserId}, #{item.createDate}, #{item.updateDate}, #{item.updateUserId}, #{item.delFlag})
</foreach>
</insert>
<!-- 根据查询VO进行分页查询 -->
<select id="selectPage" resultMap="BaseResultMap">
SELECT
@@ -13,6 +13,8 @@
<result column="update_date" property="updateDate" />
<result column="update_user_id" property="updateUserId" />
<result column="del_flag" property="delFlag" />
<result column="power" property="power" />
<result column="apply_reason" property="applyReason" />
</resultMap>
<!--表名信息-->
@@ -22,8 +24,7 @@
<!-- 通用查询结果列 -->
<sql id="BaseColumnList">
id,
data_id,report_id,user_id,create_user_id,create_date,update_date,update_user_id,del_flag
id,data_id, report_id, power, apply_reason, user_id, create_user_id, create_date, update_date, update_user_id, del_flag
</sql>
<!-- 查询条件 -->
@@ -141,7 +141,13 @@
#{id}
</foreach>
</if>
<!--id搜索-->
<if test="Vo.ids !=null and Vo.ids.size() > 0">
and Vo.ids in
<foreach collection="Vo.ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<!--用户搜索-->
<if test="Vo.usid != null and Vo.usid != ''">
@@ -164,11 +170,28 @@
<select id="getAddReportPage" resultType="com.adc.da.report.vo.ReportVo">
select * from TT_REPORT_MANAGE
SELECT a.*
from (
select * from TT_REPORT_MANAGE eo
LEFT JOIN tr_report_user ru on eo.id = ru.reportId
WHERE eo.DEL_FLAG = 0 and ru.userId != #{pageVO.usid}
<if test="pageVO.name !='' and pageVO.name != null">
and name like CONCAT(CONCAT('%',#{pageVO.name}),'%')
</if>
<!--年份搜索-->
<if test="pageVO.year != null and pageVO.year.size() > 0">
and year in
<foreach collection="pageVO.year" item="year" open="(" separator="," close=")">
#{year}
</foreach>
</if>
) a
LEFT JOIN power_apply pa on pa.report_id = a.id
where
pa.user_id is null or pa.user_id != #{pageVO.usid}
<where>
del = 0
</where>
</select>
</mapper>
@@ -141,7 +141,13 @@
#{id}
</foreach>
</if>
<!--id搜索-->
<if test="Vo.ids !=null and Vo.ids.size() > 0">
and Vo.ids in
<foreach collection="Vo.ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<!--用户搜索-->
<if test="Vo.usid != null and Vo.usid != ''">
@@ -164,11 +170,28 @@
<select id="getAddReportPage" resultType="com.adc.da.report.vo.ReportVo">
select * from TT_REPORT_MANAGE
SELECT a.*
from (
select * from TT_REPORT_MANAGE eo
LEFT JOIN tr_report_user ru on eo.id = ru.reportId
WHERE eo.DEL_FLAG = 0 and ru.userId != #{pageVO.usid}
<if test="pageVO.name !='' and pageVO.name != null">
and name like CONCAT(CONCAT('%',#{pageVO.name}),'%')
</if>
<!--年份搜索-->
<if test="pageVO.year != null and pageVO.year.size() > 0">
and year in
<foreach collection="pageVO.year" item="year" open="(" separator="," close=")">
#{year}
</foreach>
</if>
) a
LEFT JOIN power_apply pa on pa.report_id = a.id
where
pa.user_id is null or pa.user_id != #{pageVO.usid}
<where>
del = 0
</where>
</select>
</mapper>
@@ -163,6 +163,29 @@
#{id}
</foreach>
</select>
<select id="getUserEoById" resultType="com.adc.da.sys.entity.UserEO">
select
users.usid,
users.usname,
users.account,
r.id as r_id,
r.data_scope as r_data_scope,
r.del_flag as r_delFlag,
r.is_default as r_is_default,
r.name as r_name,
o.id as o_id,
o.org_code as o_org_code,
o.org_name as o_org_name,
o.sup_org_code as o_sup_org_code,
o.bmdm_14 as o_bmdm14
from TS_USER users
left join TR_USER_ROLE ur on users.usid = ur.user_id
left join TS_ROLE r on ur.role_id = r.id
left join TR_USER_ORG uo on users.usid = uo.user_id
left join TS_ORG o on uo.org_id = o.id
where users.del_flag != 1
and users.usid = #{usid}
</select>
</mapper>
@@ -1,10 +1,13 @@
package com.adc.da.wkflow.business_activiti.define;
import cn.hutool.core.util.StrUtil;
import com.adc.da.login.util.UserUtils;
import com.adc.da.sys.entity.UserEO;
import com.adc.da.sys.service.iservice.IUserEoService;
import com.adc.da.wkflow.business_activiti.service.ActivitDefineService;
import com.adc.da.wkflow.business_main.entity.BusProcessApprove;
import com.adc.da.wkflow.business_main.entity.BusProcessName;
import com.adc.da.wkflow.business_main.service.IBusProcessApproveService;
import com.adc.da.wkflow.business_main.service.IBusProcessNameService;
import com.adc.da.wkflow.enums.SubmitStatusEnum;
import com.adc.da.wkflow.util.ImpulseSenderUtils;
@@ -55,6 +58,8 @@ public class ActivitDefineController {
private IdentityService identityService;
@Autowired
private IBusProcessNameService ibusprocessnameService;
@Autowired
private IBusProcessApproveService ibusProcessApproveService;
@Autowired
private ActivitDefineService activitDefineService;
@@ -130,8 +135,17 @@ public class ActivitDefineController {
@ApiImplicitParam(name = "prcType", value = "流程类型"),
@ApiImplicitParam(name = "prcName", value = "流程名称"),
})
@PostMapping("/activiti_define_start_user")
@PostMapping("/startProcess")
public Wrapper<String> activiti_define_start(@RequestBody JSONObject jsonObject) {
//登录人id
jsonObject.put("loginUserId", UserUtils.getUserId());
if(com.adc.da.util.utils.StringUtils.isNotEmpty(jsonObject.getString("id"))){
jsonObject.put("bpnId",jsonObject.getString("id"));
}
String prcType = jsonObject.getString("prcType");
Map<String, Object> prcNameAndPrcNum = createPrcNameAndPrcNum(prcType);
jsonObject.put("id",prcNameAndPrcNum.get("id"));
/**
* String id,
* String userId,
@@ -142,13 +156,12 @@ public class ActivitDefineController {
String id = jsonObject.getString("id");
String userId = jsonObject.getString("loginUserId");
String bpnId = jsonObject.getString("bpnId");
String prcType = jsonObject.getString("type");
Object msg = jsonObject.get("msg");
Object dataMsg = jsonObject.get("dataMsg");
Object approveData =jsonObject.get("approveData");
// 创建查询对象
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
// 使用流程定义的名称模糊查询
processDefinitionQuery.processDefinitionCategory("4bdf0b396b4aa6ea10dd5e19956a1e22");
long total = processDefinitionQuery.count();
List<ProcessDefinition> list = processDefinitionQuery.orderByProcessDefinitionKey().asc().list();
List<Map<String, Object>> definitions = ActivitiTools.turnProcessDefinitions(list);
@@ -165,8 +178,6 @@ public class ActivitDefineController {
task.setAssignee(userId);
taskService.saveTask(task);
Map<String, Object> prcNameAndPrcNum = createPrcNameAndPrcNum(prcType);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(StringUtils.isEmpty(bpnId)) {
BusProcessName busProcessName = new BusProcessName();
@@ -177,10 +188,11 @@ public class ActivitDefineController {
busProcessName.setCreatUserName(byId.getUsname());
busProcessName.setPrcNum((String) prcNameAndPrcNum.get("prcNum"));
busProcessName.setPrcType(prcType);
String data = JSON.toJSONString(msg, SerializerFeature.DisableCircularReferenceDetect);
String dateId = activitDefineService.saveOrUpdateDate(prcType,data);
String data = JSON.toJSONString(dataMsg, SerializerFeature.DisableCircularReferenceDetect);
String dateId = activitDefineService.saveOrUpdateDate(prcType,data,task.getId(),pi.getId());
busProcessName.setDataId(dateId);
busProcessName.setPrcName((String) prcNameAndPrcNum.get("prcName"));
// busProcessName.setPrcName((String) prcNameAndPrcNum.get("prcName"));
busProcessName.setPrcName(jsonObject.getString("prcName"));
busProcessName.setSubmitStatus(SubmitStatusEnum.SUBMIT.getValue());
ibusprocessnameService.save(busProcessName);
}else{
@@ -194,16 +206,24 @@ public class ActivitDefineController {
String newId = UUID.randomUUID().toString().replace("-", "");
one.setId(newId);
one.setPrcNum((String) prcNameAndPrcNum.get("prcNum"));
one.setPrcName((String) prcNameAndPrcNum.get("prcName"));
// one.setPrcName((String) prcNameAndPrcNum.get("prcName"));
one.setPrcName(jsonObject.getString("prcName"));
one.setPrcId(pi.getId());
one.setSubmitStatus(SubmitStatusEnum.SUBMIT.getValue());
one.setCreatTime(sdf.format(new Date()));
String data = JSON.toJSONString(msg, SerializerFeature.DisableCircularReferenceDetect);
String dateId = activitDefineService.saveOrUpdateDate(prcType,data);
String data = JSON.toJSONString(dataMsg, SerializerFeature.DisableCircularReferenceDetect);
String dateId = activitDefineService.saveOrUpdateDate(prcType,data,task.getId(),pi.getId());
one.setDataId(dateId);
ibusprocessnameService.save(one);
}
BusProcessApprove busProcessApprove = new BusProcessApprove();
busProcessApprove.setFromValsJson(approveData.toString());
busProcessApprove.setTaskId(task.getId());
busProcessApprove.setCreateDate(new Date());
busProcessApprove.setPrcId(pi.getId());
busProcessApprove.setCreateUserId(UserUtils.getUserId());
ibusProcessApproveService.save(busProcessApprove);
log.info("启动流程实例,获取id-->{},实例名称-->{}", pi.getId(), pd.getName());
return WrapMapper.ok(task.getId());
}
@@ -248,9 +268,11 @@ public class ActivitDefineController {
Map<String,Object> prcInfoMap = ibusprocessnameService.ruleGeneratePrcNumAndPrcNum(prcType);
String prcNum = (String) prcInfoMap.get("prcNum");
String prcName = (String) prcInfoMap.get("prcName");
String id = (String) prcInfoMap.get("id");
result.put("prcName",prcName);
result.put("prcNum",prcNum);
result.put("id",id);
return result;
}
@@ -1,18 +1,40 @@
package com.adc.da.wkflow.business_activiti.service;
import com.adc.da.report.dao.mysql.PowerApplyActDao;
import com.adc.da.report.eo.PowerApplyAct;
import com.adc.da.report.service.IPowerApplyActService;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.UUID;
@Service
public class ActivitDefineService {
protected Logger logger = LoggerFactory.getLogger(getClass());
//保存data数据
public String saveOrUpdateDate(String prcType, String dataJson) {
String dataId = "";
if ("".equals(prcType)){
@Autowired
IPowerApplyActService iPowerApplyActService;
@Autowired
PowerApplyActDao powerApplyActDao;
//保存data数据
public String saveOrUpdateDate(String prcType, String dataJson,String taskId,String prcId) {
String dataId = UUID.randomUUID().toString().replaceAll("-","");
if ("1".equals(prcType)){
List<PowerApplyAct> powerApplyActs = JSONObject.parseArray(dataJson, PowerApplyAct.class);
for (PowerApplyAct powerApplyAct : powerApplyActs) {
powerApplyAct.setId(UUID.randomUUID().toString().replaceAll("-",""));
powerApplyAct.setDataId(dataId);
powerApplyAct.setTaskId(taskId);
powerApplyAct.setPrcId(prcId);
powerApplyAct.setDelFlag(0);
}
powerApplyActDao.batchInsert(powerApplyActs);
}
return dataId;
}
@@ -2,9 +2,12 @@ package com.adc.da.wkflow.business_activiti.service;
import cn.hutool.core.util.StrUtil;
import com.adc.da.wkflow.business_activiti.dto.TaskCommonQuery;
import com.adc.da.wkflow.business_main.mapper.TaskMapper;
import com.adc.da.wkflow.util.date.DateTools;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.NativeTaskQuery;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -12,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* 待办任务注入类,动态修改 Task的assignee等
@@ -27,6 +31,9 @@ public class TaskTodoService {
@Autowired
private TaskService taskService;
@Autowired
private TaskMapper taskMapper;
/**
* 查询待办任务 拼接sql 包含待办任务和委托任务
* @param taskCommonQuery
@@ -39,8 +46,6 @@ public class TaskTodoService {
StringBuilder sb = new StringBuilder();
sb.append(
"select distinct RES.* from ACT_RU_TASK RES left join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_ inner join ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_ ");
sb.append(" left join t_delegate_business db on RES.PROC_DEF_ID_=db.BUSINESS_KEY and db.IS_DELETED=0 ");
sb.append(" left join t_delegate de on db.DELEGATE_ID=de.OBJECT_ID and de.USERD=#{userd} ");
sb.append(" WHERE ");
//任务名称
if (StrUtil.isNotEmpty(taskCommonQuery.getName())) {
@@ -61,12 +66,15 @@ public class TaskTodoService {
sb.append(
" (RES.ASSIGNEE_=#{assignee} or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and (I.USER_ID_=#{user_id} ))) ");
sb.append(
" or (RES.ASSIGNEE_ = de.USER or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and (I.USER_ID_ = de.USER ))) ");
" or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' ) ");
sb.append(" order by RES.CREATE_TIME_ desc ");
// sb.append(" LIMIT #{current},#{size} ");
if(StringUtils.isNotBlank(taskCommonQuery.getUserId())){
nativeTaskQuery = nativeTaskQuery.parameter("userd", taskCommonQuery.getUserId())
.parameter("assignee", taskCommonQuery.getUserId())
.parameter("user_id", taskCommonQuery.getUserId());
.parameter("user_id", taskCommonQuery.getUserId())
.parameter("current", taskCommonQuery.getCurrent())
.parameter("size", taskCommonQuery.getSize());
}
nativeTaskQuery = nativeTaskQuery.sql(sb.toString());
@@ -75,4 +83,16 @@ public class TaskTodoService {
}
public Page<Task> selectTask(TaskCommonQuery taskCommonQuery){
Page<Task> page = new Page<>();
page.setCurrent(taskCommonQuery.getCurrent());
page.setSize(taskCommonQuery.getSize());
List<Task> tasks = taskMapper.todoTaskList(page, taskCommonQuery);
long count = taskMapper.todoTaskListCount( taskCommonQuery);
page.setRecords(tasks);
page.setSize(count);
return page;
}
}
@@ -8,6 +8,7 @@ import com.adc.da.wkflow.business_main.entity.BusProcessEntrust;
import com.adc.da.wkflow.business_main.entity.BusProcessName;
import com.adc.da.wkflow.business_main.entity.BusProcessNew;
import com.adc.da.wkflow.business_main.service.IBusProcessApproveService;
import com.adc.da.wkflow.business_main.service.IBusProcessEntrustService;
import com.adc.da.wkflow.business_main.service.IBusProcessNameService;
import com.adc.da.wkflow.business_main.service.IBusProcessNewService;
import com.adc.da.wkflow.util.activiti.ActivitiTools;
@@ -49,7 +50,7 @@ public class TaskController {
private IBusProcessNewService iBusProcessNewService;
@Resource
private IBusProcessApproveService iBusProcessEntrustService;
private IBusProcessEntrustService iBusProcessEntrustService;
@Resource
private IBusProcessApproveService iBusProcessApproveService;
@@ -92,7 +93,9 @@ public class TaskController {
UserVO assignee = userByIdList.get(0);
historicTaskInstance.put("assignee", assignee.getUsname());
historicTaskInstance.put("assigneeId", assignee.getUsid());
historicTaskInstance.put("orgName",assignee.getOrgEOList().get(0));
if(assignee.getOrgEOList().size()>0){
historicTaskInstance.put("orgName",assignee.getOrgEOList().get(0));
}
QueryWrapper queryWrapper2 = new QueryWrapper();
queryWrapper2.eq("TASK_ID",historicTaskInstance.get("id"));
queryWrapper2.orderByAsc("CREATE_TIME");
@@ -2,9 +2,13 @@ package com.adc.da.wkflow.business_activiti.task;
import cn.hutool.core.util.StrUtil;
import com.adc.da.login.util.UserUtils;
import com.adc.da.report.dao.mysql.PowerApplyActDao;
import com.adc.da.report.eo.PowerApplyAct;
import com.adc.da.sys.service.iservice.IUserEoService;
import com.adc.da.sys.vo.UserVO;
import com.adc.da.util.exception.AdcDaBaseException;
import com.adc.da.util.http.ResponseMessage;
import com.adc.da.util.http.Result;
import com.adc.da.wkflow.business_activiti.dto.Page;
import com.adc.da.wkflow.business_activiti.dto.TaskCommonQuery;
import com.adc.da.wkflow.business_activiti.service.ActivitDefineService;
@@ -27,7 +31,9 @@ import com.adc.da.wkflow.util.date.DateTools;
import com.adc.da.wkflow.util.wrapper.WrapMapper;
import com.adc.da.wkflow.util.wrapper.Wrapper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -102,13 +108,20 @@ public class TodoTaskController {
@Autowired
private ActivitDefineService activitDefineService;
@Autowired
private PowerApplyActDao powerApplyActDao;
@ApiOperation(value = "我的待办任务列表")
@ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称"),
@ApiImplicitParam(name = "current", value = "当前页"),
@ApiImplicitParam(name = "size", value = "每页条数"),
@ApiImplicitParam(name = "userId", value = "用户Id")})
@PostMapping("/todoTaskList")
public List<BusProcessName> todoTaskListByUserId(@RequestBody TaskCommonQuery taskCommonQuery) {
public ResponseMessage todoTaskListByUserId(@RequestBody TaskCommonQuery taskCommonQuery) {
Page page = new Page();
page.setPageNo(taskCommonQuery.getCurrent());
page.setPageSize(taskCommonQuery.getSize());
if("%".equals(taskCommonQuery.getPrcName())){
taskCommonQuery.setPrcName("/%");
}
@@ -117,8 +130,10 @@ public class TodoTaskController {
}
// 创建查询对象
NativeTaskQuery nativeTaskQuery = taskTodoService.createSql(taskCommonQuery);
List<Task> list = nativeTaskQuery.list();
// com.baomidou.mybatisplus.extension.plugins.pagination.Page<Task> page1 = taskTodoService.selectTask(taskCommonQuery);
// List<Task> list = page1.getRecords();
List<Task> list1 = nativeTaskQuery.list();
List<Task> list = nativeTaskQuery.listPage(taskCommonQuery.getCurrent(),taskCommonQuery.getSize());
List<Map<String, Object>> listEnd = ActivitiTools.turnTasks(list);
for (Map<String, Object> map : listEnd) {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(map.get("processDefinitionId") + "").singleResult();
@@ -172,7 +187,10 @@ public class TodoTaskController {
todoList.add(busProcessName);
}
}
return todoList;
page.setList(todoList);
page.setCount((long) list1.size());
// page.setCount(page1.getSize());
return Result.success(page);
}
@ApiOperation(value = "改派任务")
@@ -250,7 +268,7 @@ public class TodoTaskController {
iBusProcessApproveService.save(busProcessApprove);
if (StringUtils.isNotEmpty(dataJson)){
//根据业务情况 对业务数据进行saveOrupdate
activitDefineService.saveOrUpdateDate(busMes.getPrcType(),dataJson);
activitDefineService.saveOrUpdateDate(busMes.getPrcType(),dataJson, task.getId(),task.getProcessInstanceId());
}
taskService.complete(busMes.getTaskId());
}
@@ -349,7 +367,7 @@ public class TodoTaskController {
*/
@ApiOperation(value = "详情")
@GetMapping("/queryDetail")
public BusProcessNewVO queryDetail(String taskId,String prcType) {
public ResponseMessage queryDetail(@RequestParam("taskId") String taskId,@RequestParam("prcType")String prcType) {
BusProcessNew busProcessNew = iBusProcessNewService.selectEOByTaskId(taskId);
if (busProcessNew == null) {
return null;
@@ -361,16 +379,20 @@ public class TodoTaskController {
busProcessNewVO.getTaskId());
String approveJson = JSON.toJSONString(busProcessApprove);
busProcessNewVO.setApproveJson(approveJson);
return busProcessNewVO;
return Result.success(busProcessApprove);
}
private BusProcessNewVO queryDetailDate(BusProcessNew busProcessNew, String prcType) {
BusProcessNewVO busProcessNewVO = new BusProcessNewVO();
BeanUtils.copyProperties(busProcessNew,busProcessNewVO);
if ("".equals(prcType)){
String dataId = busProcessNew.getDataId();
String dataId = busProcessNew.getDataId();
if ("1".equals(prcType)){
LambdaQueryWrapper<PowerApplyAct> powerWrapper = new LambdaQueryWrapper<>();
powerWrapper.eq(PowerApplyAct::getDataId,dataId);
List<PowerApplyAct> powerApplyActs = powerApplyActDao.selectList(powerWrapper);
String string = JSONArray.toJSONString(powerApplyActs);
//去对应的 数据表查数据
// busProcessNewVO.setDateMesg();
busProcessNewVO.setDateMesg(string);
}
@@ -408,7 +430,8 @@ public class TodoTaskController {
BusProcessName busProcessName = new BusProcessName();
if (StringUtils.isNotEmpty(dataJson)) {
//根据业务情况 对业务数据进行saveOrupdate
String dataId = activitDefineService.saveOrUpdateDate(approveDataVO.getPrcType(), dataJson);
String dataId = activitDefineService.saveOrUpdateDate(approveDataVO.getPrcType(), dataJson,
approveDataVO.getTaskId(),"");
busProcessName.setDataId(dataId);
}
busProcessName.setPrcType(approveDataVO.getPrcType());
@@ -833,17 +856,17 @@ public class TodoTaskController {
});
//获取 审批结果
if (StringUtils.isNotEmpty(busProcessName.getTaskId())) {
BusProcessApprove busProcessApprove =
iBusProcessApproveService.selectEoByPrcIdAndTask(busProcessName.getPrcId(),
busProcessName.getTaskId());
if(busProcessApprove != null){
JSONObject dataJson = JSONObject.parseObject(busProcessApprove.getFromValsJson());
if (StringUtils.isNotEmpty(dataJson.getString("flag"))) {
busProcessName.setStatus(dataJson.getString("flag"));
}
}
}
// if (StringUtils.isNotEmpty(busProcessName.getTaskId())) {
// BusProcessApprove busProcessApprove =
// iBusProcessApproveService.selectEoByPrcIdAndTask(busProcessName.getPrcId(),
// busProcessName.getTaskId());
// if(busProcessApprove != null){
// JSONObject dataJson = JSONObject.parseObject(busProcessApprove.getFromValsJson());
// if (StringUtils.isNotEmpty(dataJson.getString("flag"))) {
// busProcessName.setStatus(dataJson.getString("flag"));
// }
// }
// }
Date createTime = null;
Date endTime = null;
@@ -0,0 +1,73 @@
package com.adc.da.wkflow.business_main.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 lombok.Data;
import java.util.Date;
@Data
@TableName("ACT_RU_TASK")
public class TaskEntity {
@TableId(value = "ID_", type = IdType.INPUT)
private String id;
@TableField("REV_")
private int rev;
@TableField("EXECUTION_ID_")
private String executionId;
@TableField("PROC_INST_ID_")
private String processInstanceId;
@TableField("PROC_DEF_ID_")
private String processDefinitionId;
@TableField("NAME_")
private String name;
@TableField("PARENT_TASK_ID_")
private String parentTaskId;
@TableField("DESCRIPTION_")
private String description;
@TableField("TASK_DEF_KEY_")
private String taskDefinitionKey;
@TableField("OWNER_")
private String owner;
@TableField("ASSIGNEE_")
private String assignee;
@TableField("DELEGATION_")
private String delegation;
@TableField("PRIORITY_")
private int priority;
@TableField("CREATE_TIME_")
private Date createTime;
@TableField("DUE_DATE_")
private Date dueDate;
@TableField("CATEGORY_")
private String category;
@TableField("SUSPENSION_STATE_")
private int suspensionState;
@TableField("TENANT_ID_")
private String tenantId;
@TableField("FORM_KEY_")
private String formKey;
}
@@ -0,0 +1,18 @@
package com.adc.da.wkflow.business_main.mapper;
import com.adc.da.wkflow.business_activiti.dto.TaskCommonQuery;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.activiti.engine.task.Task;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface TaskMapper extends BaseMapper<Task> {
List<Task> todoTaskList(Page<Task> page, @Param("pageVO") TaskCommonQuery taskCommonQuery);
long todoTaskListCount(@Param("pageVO") TaskCommonQuery taskCommonQuery);
}
@@ -48,6 +48,7 @@ public class BusProcessNameServiceImpl extends ServiceImpl<BusProcessNameMapper,
}else {
throw new ActivitiException("非法的流程类型: " + prcType);
}
result.put("id",prcNum);
String numberByFlowType = ImpulseSenderUtils.getNumberByFlowType(prcType);
prcNum = prcNum + currentDay + numberByFlowType;
prcName = prcName + currentDay + numberByFlowType;
@@ -7,7 +7,6 @@ import com.adc.da.wkflow.business_main.entity.BusProcessApprove;
import com.adc.da.wkflow.business_main.entity.BusProcessNew;
import com.adc.da.wkflow.business_main.service.IBusProcessApproveService;
import com.adc.da.wkflow.business_main.service.IBusProcessNewService;
import com.adc.da.wkflow.listener.FlagEnum;
import com.adc.da.wkflow.util.SpringContextUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -48,11 +47,10 @@ public class aid1 implements TaskListener {
//审批结果
LambdaQueryWrapper<BusProcessApprove> approveWrapper = new LambdaQueryWrapper<>();
approveWrapper.eq(BusProcessApprove::getTaskId, delegateTask.getId());
BusProcessApprove one = approveService.getOne(approveWrapper);
String fromValsJson = one.getFromValsJson();
List<BusProcessApprove> list = approveService.list(approveWrapper);
String fromValsJson = list.get(0).getFromValsJson();
JSONObject object = JSONObject.parseObject(fromValsJson);
String s = object.getString("flag") == "" || object.getString("flag") == null ? FlagEnum.AGREE.getValue() : object.getString("flag");
// 1: 同意 2:退回
delegateTask.setVariable("flag",s);
delegateTask.setVariable("oneApprove",object.getString("oneApprove"));
delegateTask.setVariable("twoApprove",object.getString("twoApprove"));
}
}
@@ -7,7 +7,6 @@ import com.adc.da.wkflow.business_main.entity.BusProcessApprove;
import com.adc.da.wkflow.business_main.entity.BusProcessNew;
import com.adc.da.wkflow.business_main.service.IBusProcessApproveService;
import com.adc.da.wkflow.business_main.service.IBusProcessNewService;
import com.adc.da.wkflow.listener.FlagEnum;
import com.adc.da.wkflow.util.SpringContextUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -51,8 +50,8 @@ public class aid4 implements TaskListener {
BusProcessApprove one = approveService.getOne(approveWrapper);
String fromValsJson = one.getFromValsJson();
JSONObject object = JSONObject.parseObject(fromValsJson);
String s = object.getString("flag") == "" || object.getString("flag") == null ? FlagEnum.AGREE.getValue() : object.getString("flag");
// 1: 同意 2:退回
delegateTask.setVariable("flag",s);
delegateTask.setVariable("oneApprove",object.getString("oneApprove"));
delegateTask.setVariable("twoApprove",object.getString("twoApprove"));
}
}
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.adc.da.wkflow.business_main.mapper.TaskMapper">
<resultMap id="taskEntityMap" type="org.activiti.engine.task.TaskInfo">
<id property="id" column="ID_"/>
<result property="rev" column="REV_"/>
<result property="executionId" column="EXECUTION_ID_"/>
<result property="processInstanceId" column="PROC_INST_ID_"/>
<result property="processDefinitionId" column="PROC_DEF_ID_"/>
<result property="name" column="NAME_"/>
<result property="parentTaskId" column="PARENT_TASK_ID_"/>
<result property="description" column="DESCRIPTION_"/>
<result property="taskDefinitionKey" column="TASK_DEF_KEY_"/>
<result property="owner" column="OWNER_"/>
<result property="assignee" column="ASSIGNEE_"/>
<result property="delegation" column="DELEGATION_"/>
<result property="priority" column="PRIORITY_"/>
<result property="createTime" column="CREATE_TIME_" javaType="java.util.Date"/>
<result property="dueDate" column="DUE_DATE_" javaType="java.util.Date"/>
<result property="category" column="CATEGORY_"/>
<result property="suspensionState" column="SUSPENSION_STATE_"/>
<result property="tenantId" column="TENANT_ID_"/>
<result property="formKey" column="FORM_KEY_"/>
</resultMap>
<select id="todoTaskList" resultMap="taskEntityMap">
select distinct RES.* from ACT_RU_TASK RES
left join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_
inner join ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_
<where>
<if test="pageVO.name !='' and pageVO.name !=null">
and RES.NAME_ LIKE #{pageVO.name}
</if>
<if test="pageVO.startTime !='' and pageVO.startTime !=null">
and RES.CREATE_TIME_ >= #{pageVO.startTime}
</if>
<if test="pageVO.endTime !='' and pageVO.endTime !=null">
and RES.CREATE_TIME_ &lt; #{pageVO.endTime}
</if>
(RES.ASSIGNEE_=#{pageVO.userId} or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and
(I.USER_ID_=#{pageVO.userId} )))
or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' )
</where>
order by RES.CREATE_TIME_ desc
</select>
<select id="todoTaskListCount" resultType="java.lang.Long">
select count(1) from
( select distinct RES.* from ACT_RU_TASK RES
left join ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_
inner join ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_
<where>
<if test="pageVO.name !='' and pageVO.name !=null">
and RES.NAME_ LIKE #{pageVO.name}
</if>
<if test="pageVO.startTime !='' and pageVO.startTime !=null">
and RES.CREATE_TIME_ >= #{pageVO.startTime}
</if>
<if test="pageVO.endTime !='' and pageVO.endTime !=null">
and RES.CREATE_TIME_ &lt; #{pageVO.endTime}
</if>
(RES.ASSIGNEE_=#{pageVO.userId} or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and (I.USER_ID_=#{pageVO.userId} )))
or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' )
</where>
order by RES.CREATE_TIME_ desc
)num
</select>
</mapper>