1. DAO
List<WorkbenchEventVo> searchMyWorkFlows(Map<String, Object> map);
2. Mapper.xml
<sql id="searchMyWorkFlows">
<if test="stepList!=null and stepList.size>0">
and wf.fstep in
<foreach collection="stepList" item="step" index="i" open="(" close=")" separator=",">
#{step}
</foreach>
</if>
<if test="statusList!=null and statusList.size>0">
and wf.fstatus in
<foreach collection="statusList" item="status" index="i" open="(" close=")" separator=",">
#{status}
</foreach>
</if>
</sql>
<select id="searchMyWorkFlows" parameterType="map" resultMap="WorkbenchResultMap">
SELECT
wf.Fid id,
wf.Fcreate_time time,
CASE
WHEN wf.Fstatus = 'Submit' THEN
'新增'
WHEN wf.Fstatus = 'Reject' THEN
'驳回'
WHEN wf.Fstatus = 'Pass' THEN
'运营审核通过'
WHEN wf.Fstatus = 'Finish' THEN
'合规审核通过'
END type,
CASE
WHEN wf.Fstep = 1
AND wf.Fstatus = 'Reject' THEN
wf.Foperator
WHEN wf.Fstep = 2
AND wf.Fstatus = 'Submit' THEN
wf.Fproposer
WHEN wf.Fstep = 2
AND wf.Fstatus = 'Reject' THEN
wf.Fauditor
WHEN wf.Fstep = 3
AND wf.Fstatus = 'Pass' THEN
wf.Foperator
WHEN wf.Fstep = 4
AND wf.Fstatus = 'Finish' THEN
wf.Fauditor
END creator,
CASE
WHEN wf.Fstep = 1
AND wf.Fstatus = 'Reject' THEN
wf.Foper_reason
WHEN wf.Fstep = 2
AND wf.Fstatus = 'Reject' THEN
wf.Faud_reason
END reason,
CASE
WHEN wf.Fobject_type = 0 THEN
'机构信息'
WHEN wf.Fobject_type = 1 THEN
'运营页面'
END objectType,
wf.Fope_id objectId,
mkt.ftitle objectEvent,
wf.Forg_name orgName
FROM
(
SELECT * FROM
(
SELECT
*
FROM
t_work_flow
ORDER BY
Fcreate_time DESC
) temp
GROUP BY
fope_id
ORDER BY
Fcreate_time DESC) wf, t_marketing mkt
where wf.Fope_id=mkt.fid
<include refid="searchMyWorkFlows"/>
ORDER BY wf.Fcreate_time desc
</select>
3. ServiceImpl
private Map<String, Object> getStepStatus(String username, String loginType) {
Map<String, Object> map = new HashMap<String, Object>();
//有种可能,xxx既是运营人员也是合规人员,所以step/status为list
List<String> stepList = new ArrayList<String>();
List<String> statusList = new ArrayList<String>();
if (Constants.LOGIN_TYPE_A.equalsIgnoreCase(loginType)) {
boolean isAuditor = StringUtils.isNoneBlank(modelService.findBy(modelType.Auditor, username));
boolean isOperator = StringUtils.isNoneBlank(modelService.findBy(modelType.Operator, username));
if (isOperator) {
stepList.add("2");
statusList.add("Submit");
statusList.add("Reject");
}
if (isAuditor) {
stepList.add("3");
statusList.add("Pass");
}
} else {
stepList.add(String.valueOf(1));
statusList.add("Reject");
}
map.put("stepList", stepList);
map.put("statusList", statusList);
return map;
}
public Page<WorkbenchEventVo> findMyEvents(int pageNum, int pageSize, String username, String loginType) {
Map<String, Object> stepStatus = getStepStatus(username, loginType);
Page.startPage(pageNum, pageSize);
List<WorkbenchEventVo> list = workFlowDao.searchMyWorkFlows(stepStatus);
return Page.from(list);
}