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

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 * @throws ParseException
*/ */
@ApiOperation("添加报告") @ApiOperation("添加报告")
@GetMapping("/addReportPage") @PostMapping("/addReportPage")
public ResponseMessage addReportPage(@RequestBody ReportQueryVo vo) throws Exception { public ResponseMessage addReportPage(@RequestBody ReportQueryVo vo) throws Exception {
IPage<ReportVo> reportVoIPage = reportService.addReportPage(vo); IPage<ReportVo> reportVoIPage = reportService.addReportPage(vo);
return Result.success(reportVoIPage); return Result.success(reportVoIPage);
@@ -42,4 +42,7 @@ public interface PowerApplyActDao extends BaseMapper<PowerApplyAct> {
* @description 列表查询 * @description 列表查询
*/ */
List<PowerApplyAct> queryList(@Param("pageVO") PowerApplyActPageVO powerApplyActPageVO); List<PowerApplyAct> queryList(@Param("pageVO") PowerApplyActPageVO powerApplyActPageVO);
int batchInsert(@Param("list")List<PowerApplyAct> powerApplyActs);
} }
@@ -48,10 +48,12 @@ public class PowerApply {
private String userId; private String userId;
/** /**
* 申请原因 * 权限 1 预览
* 2 预览 + 下载
*/ */
@TableField("power") @TableField("power")
private Integer power; private Integer power;
/** /**
* 创建人id * 创建人id
*/ */
@@ -42,11 +42,24 @@ public class PowerApplyAct {
private String dataId; private String dataId;
/** /**
* 报告名称 * 报告id
*/ */
@TableField("report_id") @TableField("report_id")
private String reportId; 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.core.metadata.IPage;
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 io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
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.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
@@ -38,7 +34,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -354,14 +349,14 @@ public class IReportServiceImpl extends ServiceImpl<ReportDao, ReportEntity>
page.setSize(vo.getPageSize()); page.setSize(vo.getPageSize());
//判断是不是管理员 //判断是不是管理员
boolean admin = CommonUtils.isAdmin(); // boolean admin = CommonUtils.isAdmin();
if (admin) { // if (admin) {
vo.setUsid(null); // vo.setUsid(null);
} else { // } else {
vo.setUsid(CommonUtils.getUserId()); // vo.setUsid(CommonUtils.getUserId());
} // }
vo.setUsid(CommonUtils.getUserId());
IPage<ReportVo> list = reportDao.getAddReportPage(page, vo); IPage<ReportVo> list = reportDao.getAddReportPage(page, vo);
return list; return list;
@@ -46,4 +46,6 @@ public class ReportQueryVo {
*/ */
private String usid; private String usid;
private List<String> ids;
} }
@@ -15,6 +15,8 @@
<result column="update_date" property="updateDate" /> <result column="update_date" property="updateDate" />
<result column="update_user_id" property="updateUserId" /> <result column="update_user_id" property="updateUserId" />
<result column="del_flag" property="delFlag" /> <result column="del_flag" property="delFlag" />
<result column="power" property="power" />
<result column="apply_reason" property="applyReason" />
</resultMap> </resultMap>
<!--表名信息--> <!--表名信息-->
@@ -24,14 +26,13 @@
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="BaseColumnList"> <sql id="BaseColumnList">
id, 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
prc_id, task_id, data_id,user_id,report_id,create_user_id,create_date,update_date,update_user_id,del_flag
</sql> </sql>
<!-- 查询条件 --> <!-- 查询条件 -->
<sql id="BaseQuerySql"> <sql id="BaseQuerySql">
<where> <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 != null">
<if test="pageVO.prcId !=null and pageVO.prcId !=''"> <if test="pageVO.prcId !=null and pageVO.prcId !=''">
AND prc_id LIKE CONCAT(CONCAT('%',#{pageVO.prcId}),'%') AND prc_id LIKE CONCAT(CONCAT('%',#{pageVO.prcId}),'%')
@@ -52,6 +53,15 @@
</where> </where>
</sql> </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进行分页查询 --> <!-- 根据查询VO进行分页查询 -->
<select id="selectPage" resultMap="BaseResultMap"> <select id="selectPage" resultMap="BaseResultMap">
SELECT SELECT
@@ -13,6 +13,8 @@
<result column="update_date" property="updateDate" /> <result column="update_date" property="updateDate" />
<result column="update_user_id" property="updateUserId" /> <result column="update_user_id" property="updateUserId" />
<result column="del_flag" property="delFlag" /> <result column="del_flag" property="delFlag" />
<result column="power" property="power" />
<result column="apply_reason" property="applyReason" />
</resultMap> </resultMap>
<!--表名信息--> <!--表名信息-->
@@ -22,8 +24,7 @@
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="BaseColumnList"> <sql id="BaseColumnList">
id, id,data_id, report_id, power, apply_reason, user_id, create_user_id, create_date, update_date, update_user_id, del_flag
data_id,report_id,user_id,create_user_id,create_date,update_date,update_user_id,del_flag
</sql> </sql>
<!-- 查询条件 --> <!-- 查询条件 -->
@@ -141,7 +141,13 @@
#{id} #{id}
</foreach> </foreach>
</if> </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 != ''"> <if test="Vo.usid != null and Vo.usid != ''">
@@ -164,11 +170,28 @@
<select id="getAddReportPage" resultType="com.adc.da.report.vo.ReportVo"> <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> </select>
</mapper> </mapper>
@@ -141,7 +141,13 @@
#{id} #{id}
</foreach> </foreach>
</if> </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 != ''"> <if test="Vo.usid != null and Vo.usid != ''">
@@ -164,11 +170,28 @@
<select id="getAddReportPage" resultType="com.adc.da.report.vo.ReportVo"> <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> </select>
</mapper> </mapper>
@@ -163,6 +163,29 @@
#{id} #{id}
</foreach> </foreach>
</select> </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> </mapper>
@@ -1,10 +1,13 @@
package com.adc.da.wkflow.business_activiti.define; package com.adc.da.wkflow.business_activiti.define;
import cn.hutool.core.util.StrUtil; 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.entity.UserEO;
import com.adc.da.sys.service.iservice.IUserEoService; import com.adc.da.sys.service.iservice.IUserEoService;
import com.adc.da.wkflow.business_activiti.service.ActivitDefineService; 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.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.business_main.service.IBusProcessNameService;
import com.adc.da.wkflow.enums.SubmitStatusEnum; import com.adc.da.wkflow.enums.SubmitStatusEnum;
import com.adc.da.wkflow.util.ImpulseSenderUtils; import com.adc.da.wkflow.util.ImpulseSenderUtils;
@@ -55,6 +58,8 @@ public class ActivitDefineController {
private IdentityService identityService; private IdentityService identityService;
@Autowired @Autowired
private IBusProcessNameService ibusprocessnameService; private IBusProcessNameService ibusprocessnameService;
@Autowired
private IBusProcessApproveService ibusProcessApproveService;
@Autowired @Autowired
private ActivitDefineService activitDefineService; private ActivitDefineService activitDefineService;
@@ -130,8 +135,17 @@ public class ActivitDefineController {
@ApiImplicitParam(name = "prcType", value = "流程类型"), @ApiImplicitParam(name = "prcType", value = "流程类型"),
@ApiImplicitParam(name = "prcName", value = "流程名称"), @ApiImplicitParam(name = "prcName", value = "流程名称"),
}) })
@PostMapping("/activiti_define_start_user") @PostMapping("/startProcess")
public Wrapper<String> activiti_define_start(@RequestBody JSONObject jsonObject) { 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 id,
* String userId, * String userId,
@@ -142,13 +156,12 @@ public class ActivitDefineController {
String id = jsonObject.getString("id"); String id = jsonObject.getString("id");
String userId = jsonObject.getString("loginUserId"); String userId = jsonObject.getString("loginUserId");
String bpnId = jsonObject.getString("bpnId"); String bpnId = jsonObject.getString("bpnId");
String prcType = jsonObject.getString("type"); Object dataMsg = jsonObject.get("dataMsg");
Object msg = jsonObject.get("msg"); Object approveData =jsonObject.get("approveData");
// 创建查询对象 // 创建查询对象
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
// 使用流程定义的名称模糊查询 // 使用流程定义的名称模糊查询
processDefinitionQuery.processDefinitionCategory("4bdf0b396b4aa6ea10dd5e19956a1e22");
long total = processDefinitionQuery.count(); long total = processDefinitionQuery.count();
List<ProcessDefinition> list = processDefinitionQuery.orderByProcessDefinitionKey().asc().list(); List<ProcessDefinition> list = processDefinitionQuery.orderByProcessDefinitionKey().asc().list();
List<Map<String, Object>> definitions = ActivitiTools.turnProcessDefinitions(list); List<Map<String, Object>> definitions = ActivitiTools.turnProcessDefinitions(list);
@@ -165,8 +178,6 @@ public class ActivitDefineController {
task.setAssignee(userId); task.setAssignee(userId);
taskService.saveTask(task); taskService.saveTask(task);
Map<String, Object> prcNameAndPrcNum = createPrcNameAndPrcNum(prcType);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(StringUtils.isEmpty(bpnId)) { if(StringUtils.isEmpty(bpnId)) {
BusProcessName busProcessName = new BusProcessName(); BusProcessName busProcessName = new BusProcessName();
@@ -177,10 +188,11 @@ public class ActivitDefineController {
busProcessName.setCreatUserName(byId.getUsname()); busProcessName.setCreatUserName(byId.getUsname());
busProcessName.setPrcNum((String) prcNameAndPrcNum.get("prcNum")); busProcessName.setPrcNum((String) prcNameAndPrcNum.get("prcNum"));
busProcessName.setPrcType(prcType); busProcessName.setPrcType(prcType);
String data = JSON.toJSONString(msg, SerializerFeature.DisableCircularReferenceDetect); String data = JSON.toJSONString(dataMsg, SerializerFeature.DisableCircularReferenceDetect);
String dateId = activitDefineService.saveOrUpdateDate(prcType,data); String dateId = activitDefineService.saveOrUpdateDate(prcType,data,task.getId(),pi.getId());
busProcessName.setDataId(dateId); 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()); busProcessName.setSubmitStatus(SubmitStatusEnum.SUBMIT.getValue());
ibusprocessnameService.save(busProcessName); ibusprocessnameService.save(busProcessName);
}else{ }else{
@@ -194,16 +206,24 @@ public class ActivitDefineController {
String newId = UUID.randomUUID().toString().replace("-", ""); String newId = UUID.randomUUID().toString().replace("-", "");
one.setId(newId); one.setId(newId);
one.setPrcNum((String) prcNameAndPrcNum.get("prcNum")); 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.setPrcId(pi.getId());
one.setSubmitStatus(SubmitStatusEnum.SUBMIT.getValue()); one.setSubmitStatus(SubmitStatusEnum.SUBMIT.getValue());
one.setCreatTime(sdf.format(new Date())); one.setCreatTime(sdf.format(new Date()));
String data = JSON.toJSONString(msg, SerializerFeature.DisableCircularReferenceDetect); String data = JSON.toJSONString(dataMsg, SerializerFeature.DisableCircularReferenceDetect);
String dateId = activitDefineService.saveOrUpdateDate(prcType,data); String dateId = activitDefineService.saveOrUpdateDate(prcType,data,task.getId(),pi.getId());
one.setDataId(dateId); one.setDataId(dateId);
ibusprocessnameService.save(one); 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()); log.info("启动流程实例,获取id-->{},实例名称-->{}", pi.getId(), pd.getName());
return WrapMapper.ok(task.getId()); return WrapMapper.ok(task.getId());
} }
@@ -248,9 +268,11 @@ public class ActivitDefineController {
Map<String,Object> prcInfoMap = ibusprocessnameService.ruleGeneratePrcNumAndPrcNum(prcType); Map<String,Object> prcInfoMap = ibusprocessnameService.ruleGeneratePrcNumAndPrcNum(prcType);
String prcNum = (String) prcInfoMap.get("prcNum"); String prcNum = (String) prcInfoMap.get("prcNum");
String prcName = (String) prcInfoMap.get("prcName"); String prcName = (String) prcInfoMap.get("prcName");
String id = (String) prcInfoMap.get("id");
result.put("prcName",prcName); result.put("prcName",prcName);
result.put("prcNum",prcNum); result.put("prcNum",prcNum);
result.put("id",id);
return result; return result;
} }
@@ -1,18 +1,40 @@
package com.adc.da.wkflow.business_activiti.service; 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.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
import java.util.UUID;
@Service @Service
public class ActivitDefineService { public class ActivitDefineService {
protected Logger logger = LoggerFactory.getLogger(getClass()); protected Logger logger = LoggerFactory.getLogger(getClass());
//保存data数据 @Autowired
public String saveOrUpdateDate(String prcType, String dataJson) { IPowerApplyActService iPowerApplyActService;
String dataId = "";
if ("".equals(prcType)){
@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; return dataId;
} }
@@ -2,9 +2,12 @@ package com.adc.da.wkflow.business_activiti.service;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.adc.da.wkflow.business_activiti.dto.TaskCommonQuery; 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.adc.da.wkflow.util.date.DateTools;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.activiti.engine.TaskService; import org.activiti.engine.TaskService;
import org.activiti.engine.task.NativeTaskQuery; import org.activiti.engine.task.NativeTaskQuery;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -12,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 待办任务注入类,动态修改 Task的assignee等 * 待办任务注入类,动态修改 Task的assignee等
@@ -27,6 +31,9 @@ public class TaskTodoService {
@Autowired @Autowired
private TaskService taskService; private TaskService taskService;
@Autowired
private TaskMapper taskMapper;
/** /**
* 查询待办任务 拼接sql 包含待办任务和委托任务 * 查询待办任务 拼接sql 包含待办任务和委托任务
* @param taskCommonQuery * @param taskCommonQuery
@@ -39,8 +46,6 @@ public class TaskTodoService {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append( 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_ "); "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 "); sb.append(" WHERE ");
//任务名称 //任务名称
if (StrUtil.isNotEmpty(taskCommonQuery.getName())) { if (StrUtil.isNotEmpty(taskCommonQuery.getName())) {
@@ -61,12 +66,15 @@ public class TaskTodoService {
sb.append( sb.append(
" (RES.ASSIGNEE_=#{assignee} or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and (I.USER_ID_=#{user_id} ))) "); " (RES.ASSIGNEE_=#{assignee} or (RES.ASSIGNEE_ is null and I.TYPE_ = 'candidate' and (I.USER_ID_=#{user_id} ))) ");
sb.append( 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(" order by RES.CREATE_TIME_ desc ");
// sb.append(" LIMIT #{current},#{size} ");
if(StringUtils.isNotBlank(taskCommonQuery.getUserId())){ if(StringUtils.isNotBlank(taskCommonQuery.getUserId())){
nativeTaskQuery = nativeTaskQuery.parameter("userd", taskCommonQuery.getUserId()) nativeTaskQuery = nativeTaskQuery.parameter("userd", taskCommonQuery.getUserId())
.parameter("assignee", 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()); 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.BusProcessName;
import com.adc.da.wkflow.business_main.entity.BusProcessNew; 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.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.IBusProcessNameService;
import com.adc.da.wkflow.business_main.service.IBusProcessNewService; import com.adc.da.wkflow.business_main.service.IBusProcessNewService;
import com.adc.da.wkflow.util.activiti.ActivitiTools; import com.adc.da.wkflow.util.activiti.ActivitiTools;
@@ -49,7 +50,7 @@ public class TaskController {
private IBusProcessNewService iBusProcessNewService; private IBusProcessNewService iBusProcessNewService;
@Resource @Resource
private IBusProcessApproveService iBusProcessEntrustService; private IBusProcessEntrustService iBusProcessEntrustService;
@Resource @Resource
private IBusProcessApproveService iBusProcessApproveService; private IBusProcessApproveService iBusProcessApproveService;
@@ -92,7 +93,9 @@ public class TaskController {
UserVO assignee = userByIdList.get(0); UserVO assignee = userByIdList.get(0);
historicTaskInstance.put("assignee", assignee.getUsname()); historicTaskInstance.put("assignee", assignee.getUsname());
historicTaskInstance.put("assigneeId", assignee.getUsid()); 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(); QueryWrapper queryWrapper2 = new QueryWrapper();
queryWrapper2.eq("TASK_ID",historicTaskInstance.get("id")); queryWrapper2.eq("TASK_ID",historicTaskInstance.get("id"));
queryWrapper2.orderByAsc("CREATE_TIME"); queryWrapper2.orderByAsc("CREATE_TIME");
@@ -2,9 +2,13 @@ package com.adc.da.wkflow.business_activiti.task;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.adc.da.login.util.UserUtils; 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.service.iservice.IUserEoService;
import com.adc.da.sys.vo.UserVO; import com.adc.da.sys.vo.UserVO;
import com.adc.da.util.exception.AdcDaBaseException; 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.Page;
import com.adc.da.wkflow.business_activiti.dto.TaskCommonQuery; import com.adc.da.wkflow.business_activiti.dto.TaskCommonQuery;
import com.adc.da.wkflow.business_activiti.service.ActivitDefineService; 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.WrapMapper;
import com.adc.da.wkflow.util.wrapper.Wrapper; import com.adc.da.wkflow.util.wrapper.Wrapper;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@@ -102,13 +108,20 @@ public class TodoTaskController {
@Autowired @Autowired
private ActivitDefineService activitDefineService; private ActivitDefineService activitDefineService;
@Autowired
private PowerApplyActDao powerApplyActDao;
@ApiOperation(value = "我的待办任务列表") @ApiOperation(value = "我的待办任务列表")
@ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称"), @ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称"),
@ApiImplicitParam(name = "current", value = "当前页"), @ApiImplicitParam(name = "current", value = "当前页"),
@ApiImplicitParam(name = "size", value = "每页条数"), @ApiImplicitParam(name = "size", value = "每页条数"),
@ApiImplicitParam(name = "userId", value = "用户Id")}) @ApiImplicitParam(name = "userId", value = "用户Id")})
@PostMapping("/todoTaskList") @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())){ if("%".equals(taskCommonQuery.getPrcName())){
taskCommonQuery.setPrcName("/%"); taskCommonQuery.setPrcName("/%");
} }
@@ -117,8 +130,10 @@ public class TodoTaskController {
} }
// 创建查询对象 // 创建查询对象
NativeTaskQuery nativeTaskQuery = taskTodoService.createSql(taskCommonQuery); NativeTaskQuery nativeTaskQuery = taskTodoService.createSql(taskCommonQuery);
// com.baomidou.mybatisplus.extension.plugins.pagination.Page<Task> page1 = taskTodoService.selectTask(taskCommonQuery);
List<Task> list = nativeTaskQuery.list(); // 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); List<Map<String, Object>> listEnd = ActivitiTools.turnTasks(list);
for (Map<String, Object> map : listEnd) { for (Map<String, Object> map : listEnd) {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(map.get("processDefinitionId") + "").singleResult(); ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(map.get("processDefinitionId") + "").singleResult();
@@ -172,7 +187,10 @@ public class TodoTaskController {
todoList.add(busProcessName); todoList.add(busProcessName);
} }
} }
return todoList; page.setList(todoList);
page.setCount((long) list1.size());
// page.setCount(page1.getSize());
return Result.success(page);
} }
@ApiOperation(value = "改派任务") @ApiOperation(value = "改派任务")
@@ -250,7 +268,7 @@ public class TodoTaskController {
iBusProcessApproveService.save(busProcessApprove); iBusProcessApproveService.save(busProcessApprove);
if (StringUtils.isNotEmpty(dataJson)){ if (StringUtils.isNotEmpty(dataJson)){
//根据业务情况 对业务数据进行saveOrupdate //根据业务情况 对业务数据进行saveOrupdate
activitDefineService.saveOrUpdateDate(busMes.getPrcType(),dataJson); activitDefineService.saveOrUpdateDate(busMes.getPrcType(),dataJson, task.getId(),task.getProcessInstanceId());
} }
taskService.complete(busMes.getTaskId()); taskService.complete(busMes.getTaskId());
} }
@@ -349,7 +367,7 @@ public class TodoTaskController {
*/ */
@ApiOperation(value = "详情") @ApiOperation(value = "详情")
@GetMapping("/queryDetail") @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); BusProcessNew busProcessNew = iBusProcessNewService.selectEOByTaskId(taskId);
if (busProcessNew == null) { if (busProcessNew == null) {
return null; return null;
@@ -361,16 +379,20 @@ public class TodoTaskController {
busProcessNewVO.getTaskId()); busProcessNewVO.getTaskId());
String approveJson = JSON.toJSONString(busProcessApprove); String approveJson = JSON.toJSONString(busProcessApprove);
busProcessNewVO.setApproveJson(approveJson); busProcessNewVO.setApproveJson(approveJson);
return busProcessNewVO; return Result.success(busProcessApprove);
} }
private BusProcessNewVO queryDetailDate(BusProcessNew busProcessNew, String prcType) { private BusProcessNewVO queryDetailDate(BusProcessNew busProcessNew, String prcType) {
BusProcessNewVO busProcessNewVO = new BusProcessNewVO(); BusProcessNewVO busProcessNewVO = new BusProcessNewVO();
BeanUtils.copyProperties(busProcessNew,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(); BusProcessName busProcessName = new BusProcessName();
if (StringUtils.isNotEmpty(dataJson)) { if (StringUtils.isNotEmpty(dataJson)) {
//根据业务情况 对业务数据进行saveOrupdate //根据业务情况 对业务数据进行saveOrupdate
String dataId = activitDefineService.saveOrUpdateDate(approveDataVO.getPrcType(), dataJson); String dataId = activitDefineService.saveOrUpdateDate(approveDataVO.getPrcType(), dataJson,
approveDataVO.getTaskId(),"");
busProcessName.setDataId(dataId); busProcessName.setDataId(dataId);
} }
busProcessName.setPrcType(approveDataVO.getPrcType()); busProcessName.setPrcType(approveDataVO.getPrcType());
@@ -833,17 +856,17 @@ public class TodoTaskController {
}); });
//获取 审批结果 //获取 审批结果
if (StringUtils.isNotEmpty(busProcessName.getTaskId())) { // if (StringUtils.isNotEmpty(busProcessName.getTaskId())) {
BusProcessApprove busProcessApprove = // BusProcessApprove busProcessApprove =
iBusProcessApproveService.selectEoByPrcIdAndTask(busProcessName.getPrcId(), // iBusProcessApproveService.selectEoByPrcIdAndTask(busProcessName.getPrcId(),
busProcessName.getTaskId()); // busProcessName.getTaskId());
if(busProcessApprove != null){ // if(busProcessApprove != null){
JSONObject dataJson = JSONObject.parseObject(busProcessApprove.getFromValsJson()); // JSONObject dataJson = JSONObject.parseObject(busProcessApprove.getFromValsJson());
if (StringUtils.isNotEmpty(dataJson.getString("flag"))) { // if (StringUtils.isNotEmpty(dataJson.getString("flag"))) {
busProcessName.setStatus(dataJson.getString("flag")); // busProcessName.setStatus(dataJson.getString("flag"));
} // }
} // }
} // }
Date createTime = null; Date createTime = null;
Date endTime = 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 { }else {
throw new ActivitiException("非法的流程类型: " + prcType); throw new ActivitiException("非法的流程类型: " + prcType);
} }
result.put("id",prcNum);
String numberByFlowType = ImpulseSenderUtils.getNumberByFlowType(prcType); String numberByFlowType = ImpulseSenderUtils.getNumberByFlowType(prcType);
prcNum = prcNum + currentDay + numberByFlowType; prcNum = prcNum + currentDay + numberByFlowType;
prcName = prcName + 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.entity.BusProcessNew;
import com.adc.da.wkflow.business_main.service.IBusProcessApproveService; import com.adc.da.wkflow.business_main.service.IBusProcessApproveService;
import com.adc.da.wkflow.business_main.service.IBusProcessNewService; 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.adc.da.wkflow.util.SpringContextUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -48,11 +47,10 @@ public class aid1 implements TaskListener {
//审批结果 //审批结果
LambdaQueryWrapper<BusProcessApprove> approveWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BusProcessApprove> approveWrapper = new LambdaQueryWrapper<>();
approveWrapper.eq(BusProcessApprove::getTaskId, delegateTask.getId()); approveWrapper.eq(BusProcessApprove::getTaskId, delegateTask.getId());
BusProcessApprove one = approveService.getOne(approveWrapper); List<BusProcessApprove> list = approveService.list(approveWrapper);
String fromValsJson = one.getFromValsJson(); String fromValsJson = list.get(0).getFromValsJson();
JSONObject object = JSONObject.parseObject(fromValsJson); JSONObject object = JSONObject.parseObject(fromValsJson);
String s = object.getString("flag") == "" || object.getString("flag") == null ? FlagEnum.AGREE.getValue() : object.getString("flag"); delegateTask.setVariable("oneApprove",object.getString("oneApprove"));
// 1: 同意 2:退回 delegateTask.setVariable("twoApprove",object.getString("twoApprove"));
delegateTask.setVariable("flag",s);
} }
} }
@@ -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.entity.BusProcessNew;
import com.adc.da.wkflow.business_main.service.IBusProcessApproveService; import com.adc.da.wkflow.business_main.service.IBusProcessApproveService;
import com.adc.da.wkflow.business_main.service.IBusProcessNewService; 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.adc.da.wkflow.util.SpringContextUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -51,8 +50,8 @@ public class aid4 implements TaskListener {
BusProcessApprove one = approveService.getOne(approveWrapper); BusProcessApprove one = approveService.getOne(approveWrapper);
String fromValsJson = one.getFromValsJson(); String fromValsJson = one.getFromValsJson();
JSONObject object = JSONObject.parseObject(fromValsJson); JSONObject object = JSONObject.parseObject(fromValsJson);
String s = object.getString("flag") == "" || object.getString("flag") == null ? FlagEnum.AGREE.getValue() : object.getString("flag");
// 1: 同意 2:退回 delegateTask.setVariable("oneApprove",object.getString("oneApprove"));
delegateTask.setVariable("flag",s); 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>