package com.cabletech.business.workflow.accident.service.impl;
import java.io.Serializable;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import com.cabletech.baseinfo.business.Service.BaseInfoProvider;
import com.cabletech.baseinfo.business.entity.UserInfo;
import com.cabletech.business.base.condition.ConditionGenerate;
import com.cabletech.business.base.condition.QueryParameter;
import com.cabletech.business.base.service.UserInfoService;
import com.cabletech.business.resource.model.ResourceInfo;
import com.cabletech.business.resource.service.ResourceService;
import com.cabletech.business.workflow.accident.dao.MmAccidentBaseDao;
import com.cabletech.business.workflow.accident.model.MmAccident;
import com.cabletech.business.workflow.accident.model.MmAccidentType;
import com.cabletech.business.workflow.accident.service.MmAccidentTypeService;
import com.cabletech.common.base.BaseDao;
import com.cabletech.common.base.BaseServiceImpl;
/**
* 隐患业务接口实现基类
*
* @author 杨隽 2012-08-27 创建
*
* @param <T>
* @param <PK>
*/
@SuppressWarnings("all")
public abstract class MmAccidentBaseServiceImpl<T, PK extends Serializable>
extends BaseServiceImpl<T, PK> {
// “查询条件生成器KEY”常量
// “获取待处理隐患列表查询条件生成器KEY”
protected static final String WAIT_PROCESS_ACCIDENT_CONDITION_GENERATE_KEY = "waitProcessAccidentConditionGenerateImpl";
// 用户信息业务处理
@Resource(name = "userInfoServiceImpl")
private UserInfoService userInfoService;
// 基础信息业务处理服务
@Resource(name = "baseInfoProvider")
private BaseInfoProvider baseInfoProvider;
// 隐患类型业务处理
@Resource(name = "mmAccidentTypeServiceImpl")
private MmAccidentTypeService mmAccidentTypeService;
// 资源业务处理
@Resource(name = "resourceServiceImpl")
private ResourceService resourceService;
// 查询条件生成器业务处理Map
@Autowired
private Map<String, ConditionGenerate> conditionGenerateMap;
/**
* 获取查询条件生成器并将查询条件参数传递到其中
*
* @param key
* String 查询条件生成器Key
* @param parameter
* QueryParameter 查询参数
* @return ConditionGenerate 查询条件生成器
*/
protected ConditionGenerate getConditionGenerate(String key,
QueryParameter parameter) {
ConditionGenerate conditionGenerate = conditionGenerateMap.get(key);
conditionGenerate.setQuerySql(parameter);
return conditionGenerate;
}
/**
* 根据用户的输入信息和登录信息设置查询条件参数
*
* @param accident
* MmAccident 用户的输入信息的隐患实体
* @param userInfo
* UserInfo 当前用户信息
* @return QueryParameter 查询条件参数
*/
protected QueryParameter setQueryParameter(MmAccident accident,
UserInfo userInfo) {
QueryParameter parameter = new QueryParameter();
parameter.setUser(userInfo);
parameter.setEntity(accident);
return parameter;
}
/**
* @return BaseDao<T, PK> 工单处理操作Dao
*/
@Override
protected BaseDao<T, PK> getBaseDao() {
return getAccidentBaseDao();
}
/**
* 根据用户编号获取用户联系电话
*
* @param userId
* String 用户编号
* @return String 用户联系电话
*/
protected String getUserPhone(String userId) {
String phone = "";
UserInfo user = userInfoService.getUserInfoByPersonId(userId);
if (user != null) {
phone = user.getPhone();
if (StringUtils.isBlank(phone)) {
phone = user.getMobile();
}
}
return phone;
}
/**
* 根据用户编号获取用户姓名
*
* @param userId
* String 用户编号
* @return String 用户姓名
*/
protected String getUserName(String userId) {
String userName = "";
UserInfo user = userInfoService.getUserInfoByPersonId(userId);
if (user != null) {
userName = user.getUserName();
}
return userName;
}
/**
* 根据资源编号获取资源名称
*
* @param resourceId
* String 资源编号
* @return String 用户姓名
*/
protected String getResourceName(String resourceId) {
String resourceName = "";
ResourceInfo resource = resourceService.viewResourceInfo(resourceId);
if (resource != null) {
resourceName = resource.getResourceName();
}
return resourceName;
}
/**
* 根据隐患类型编号获取隐患类型名称
*
* @param accidentTypeId
* String 隐患类型编号
* @return String 隐患类型名称
*/
protected String getAccidentTypeName(String accidentTypeId) {
String accidentTypeName = "";
MmAccidentType accidentType = mmAccidentTypeService
.viewAccidentType(accidentTypeId);
if (accidentType != null) {
accidentTypeName = accidentType.getTypeName();
}
return accidentTypeName;
}
/**
* 根据巡检组编号获取巡检组名称
*
* @param patrolGroupId
* String 巡检组编号
* @return String 巡检组名称
*/
@SuppressWarnings("deprecation")
public String getPatrolGroupName(String patrolGroupId) {
String patrolGroupName = "";
Map<String, Object> patrolGroupInfo = baseInfoProvider
.getPatrolmanMap(patrolGroupId);
if (MapUtils.isNotEmpty(patrolGroupInfo)) {
patrolGroupName = (String) patrolGroupInfo.get("patrolname");
}
return patrolGroupName;
}
/**
* 获取隐患处理操作Dao
*
* @return AccidentBaseDao<T, PK> 隐患处理操作Dao
*/
protected abstract MmAccidentBaseDao<T, PK> getAccidentBaseDao();
}