package com.cabletech.business.ah.rating.dao; import java.io.Serializable; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Repository; import com.cabletech.baseinfo.business.entity.UserInfo; import com.cabletech.common.base.BaseDao; import com.cabletech.common.util.Page; /** * * 人员流程定义 * * @author wj * @param <T> * @param <PK> */ @Repository public class PersonFlowDao<T, PK extends Serializable> extends BaseDao<T, PK> { /** * * 获取考核人员列表 * * @param parameters * 参数封装 * @return List * */ public List<Map<String, Object>> searchRatingPersons( Map<String, Object> parameters) { StringBuffer sqlBuf = new StringBuffer(""); sqlBuf.append(" select u.sid,u.username from view_userinfo u where u.orgtype = '2' "); sqlBuf.append(" and u.sid not in(select distinct f.person_id from ah_personflow f ) "); sqlBuf.append(getSearchCondition(parameters)); sqlBuf.append(" order by u.username"); return this.jdbcTemplate.queryForList(sqlBuf.toString()); } /** * * 删除人员流程定义列表 * * @param personId * 人员ID * */ public void deletePersonFlows(String personId) { String deleteSql = " delete ah_personflow t where t.person_id = '" + personId + "' "; getJdbcTemplate().update(deleteSql); } /** * 查询单个人员流程定义 * * @param parameters * 参数封装 * @return Map */ public List<Map<String, Object>> searchPersonFlow( Map<String, Object> parameters) { String querySql = this.getPersonFlowsSql(parameters); return this.jdbcTemplate.queryForList(querySql); } /** * 查询人员流程定义列表 * * @param parameters * 参数封装 * @param page * 分页信息 * @return Page 分页列表数据 */ @SuppressWarnings({ "unchecked", "rawtypes" }) public Page searchPersonFlows(Map<String, Object> parameters, Page page) { String querySql = this.getPersonFlowsSql(parameters); return super.findSQLPage(page, querySql); } /** * 查询人员流程定义语句 * * @param parameters * 参数封装 * @return List */ private String getPersonFlowsSql(Map<String, Object> parameters) { StringBuffer sb = new StringBuffer(); sb.append(" select r.person_id,r.processer,u.regionid,u.orgid,u.username,u.JOBINFO "); sb.append(" from (select wm_concat('index'||t.flow_num||':'||t.username) as processer,person_id "); sb.append(" from (select ap.*,vu.username from ah_personflow ap "); sb.append(" left join view_userinfo vu on ap.processer = vu.sid) t group by t.person_id) r "); sb.append(" left join view_userinfo u on r.person_id = u.sid where 1 = 1"); sb.append(getSearchCondition(parameters)); sb.append(" order by r.person_id "); return sb.toString(); } /** * 获取查询条件 * * @param parameters * 参数封装 * @return List */ private String getSearchCondition(Map<String, Object> parameters) { StringBuffer sb = new StringBuffer(); String regionId = (String) parameters.get("regionId"); String orgId = (String) parameters.get("orgId"); String businessType = (String) parameters.get("businessType"); String postOffice = (String) parameters.get("postOffice"); String personName = (String) parameters.get("personName"); if (StringUtils.isNotBlank(postOffice)) { sb.append(" and u.JOBINFO = '" + postOffice + "' "); } if (StringUtils.isNotBlank(regionId)) { sb.append(" and u.regionid in(select regionid from base_region start with regionid= '" + regionId + "' connect by prior regionid=parentid) "); } if (StringUtils.isNotBlank(orgId)) { sb.append(" and u.orgid in(select id from base_organize start with id= '" + orgId + "' connect by prior id=parentid) "); } if (StringUtils.isNotBlank(businessType)) { sb.append(" and u.orgid in (select r.contractorid from responsible r where r.resourceid = '" + businessType + "') "); } if (StringUtils.isNotBlank(personName)) { sb.append("and u.USERNAME like '%" + personName + "%'"); } return sb.toString(); } /** * 根据人员ID获取办理人员 * * @param parameters * 参数封装 * @return */ public List<Map<String, Object>> searchProcesserByPid( Map<String, Object> parameters) { StringBuffer sb = new StringBuffer(); String personId = (String) parameters.get("personId"); sb.append(" select t.*,u.username as processername from ah_personflow t "); sb.append(" left join view_userinfo u on t.processer = u.sid "); sb.append(" where t.person_id = '" + personId + "' order by t.flow_num "); return this.jdbcTemplate.queryForList(sb.toString()); } }