package com.cabletech.business.ah.rating.service.impl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.cabletech.baseinfo.base.BaseUtil;
import com.cabletech.baseinfo.business.entity.UserInfo;
import com.cabletech.business.ah.rating.dao.PersonFlowDao;
import com.cabletech.business.ah.rating.model.PersonFlow;
import com.cabletech.business.ah.rating.service.PersonFlowService;
import com.cabletech.common.base.BaseServiceImpl;
import com.cabletech.common.util.Page;
/**
* 人员流程定义
*
* @author wj
* @param <T>
* @param <PK>
*/
@SuppressWarnings("unchecked")
@Service
@Transactional
public class PersonFlowServiceImpl<T, PK extends Serializable> extends
BaseServiceImpl<T, PK> implements PersonFlowService {
@Resource(name = "personFlowDao")
private PersonFlowDao<PersonFlow, String> personFlowDao;
@Override
public void save(Map<String, Object> parameters) throws RuntimeException {
String[] ratingPersons = (String[]) parameters.get("ratingPersons");
String[] processer = (String[]) parameters.get("processer");
for (String person : ratingPersons) {
personFlowDao.deletePersonFlows(person);
for (int i = 0; i < processer.length; i++) {
int index = i + 1;
String oneProcesser = processer[i];
PersonFlow entity = new PersonFlow();
entity.setPersonId(person);
entity.setProcesser(oneProcesser);
entity.setFlowNum(index);
personFlowDao.save(entity);
}
}
}
/**
*
* 获取考核人员列表
*
* @param parameters
* 参数封装
* @return List
*
*/
public String searchRatingPersons(Map<String, Object> parameters) {
List<Map<String, Object>> ls = personFlowDao
.searchRatingPersons(parameters);
StringBuffer buf = new StringBuffer("");
if (CollectionUtils.isNotEmpty(ls)) {
Map<String, Object> temp;
for (int i = 0; i < ls.size(); i++) {
temp = ls.get(i);
buf.append(temp.get("USERNAME"));
buf.append(",");
buf.append(temp.get("SID"));
buf.append(";");
if (i < ls.size() - 1) {
}
}
}
return buf.toString();
}
/**
*
* 删除人员流程定义列表
*
* @param personId
* 人员sid
*
*/
public void deletePersonFlows(String personId) {
this.personFlowDao.deletePersonFlows(personId);
}
/**
* 根据人员ID获取办理人员
*
* @param parameters
* 参数封装
* @return
*/
public List<Map<String, Object>> searchProcesserByPid(
Map<String, Object> parameters) {
return personFlowDao.searchProcesserByPid(parameters);
}
/**
* 查询人员流程定义列表
*
* @param parameters
* 参数封装
* @param page
* 分页的信息
* @return List
*/
@SuppressWarnings("rawtypes")
public Page searchPersonFlows(Map<String, Object> parameters, Page page) {
Page ret = this.personFlowDao.searchPersonFlows(parameters, page);
ret.setResult(convertProcesser(page.getResult()));
return ret;
}
/**
* 转换出来人
*
* @param ls
* ls
* @return
*/
private List<Map<String, Object>> convertProcesser(
List<Map<String, Object>> ls) {
List<Map<String, Object>> ret = new ArrayList<Map<String, Object>>();
for (Map<String, Object> temp : ls) {
Map<String, Object> ele = new HashMap<String, Object>();
ele.put("PERSON_ID", (String) temp.get("PERSON_ID"));
ele.put("PERSON_NAME", (String) temp.get("USERNAME"));
ele.put("POST_OFFICE", (String) temp.get("POST_OFFICE"));
String[] processers = BaseUtil.compart(
(String) temp.get("PROCESSER"), ",");
for (String processer : processers) {
try {
ele.put(BaseUtil.compart(processer, ":")[0],
BaseUtil.compart(processer, ":")[1]);
} catch (Exception e) {
continue;
}
}
ret.add(ele);
}
return ret;
}
@SuppressWarnings("rawtypes")
@Override
protected PersonFlowDao getBaseDao() {
return personFlowDao;
}
}