package com.cabletech.business.workflow.wmaintain.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.model.SmParameter; import com.cabletech.business.base.service.UserInfoService; import com.cabletech.business.flowservice.util.ProMockPo; import com.cabletech.business.workflow.wmaintain.dao.WMaintainBaseDao; import com.cabletech.business.workflow.wmaintain.model.WMaintainPlan; import com.cabletech.business.workflow.wmaintain.service.WMaintainWorkflowService; import com.cabletech.common.base.BaseDao; import com.cabletech.common.base.BaseServiceImpl; /** * 隐患业务操作基类 * * @author 杨隽 2012-04-11 创建 * @author 杨隽 2012-04-16 添加“维修作业计划草稿箱查询条件生成器KEY” * @author 杨隽 2012-04-17 添加“获取待办维修作业计划列表查询条件生成器KEY” * @author 杨隽 2012-04-23 添加“无线资源计划中存在问题站点查询条件生成器KEY” * * @param <T> * @param <PK> */ public abstract class WMaintainBaseServiceImpl<T, PK extends Serializable> extends BaseServiceImpl<T, PK> { // “查询条件生成器KEY”常量 // “获取待办维修作业计划列表查询条件生成器KEY” public static final String WAIT_HANDLED_WMAINTAIN_LIST_CONDITION_GENERATE_KEY = "wmaintainWaitHandledListConditionGenerateImpl"; // “获取维修作业计划列表查询条件生成器KEY” public static final String WMAINTAIN_LIST_CONDITION_GENERATE_KEY = "wmaintainQueryListConditionGenerateImpl"; // “维修作业计划草稿箱查询条件生成器KEY” public static final String DRAFT_CONDITION_GENERATE_KEY = "wmaintainDraftListConditionGenerateImpl"; // “维修作业计划已办工作查询条件生成器KEY” public static final String HANDLED_CONDITION_GENERATE_KEY = "wmaintainHandledListConditionGenerateImpl"; // “维修作业计划待取消工作查询条件生成器KEY” public static final String WAIT_CANCELED_CONDITION_GENERATE_KEY = "wmaintainCancelListConditionGenerateImpl"; // “维修作业计划已取消工作查询条件生成器KEY” public static final String CANCELED_CONDITION_GENERATE_KEY = "wmaintainCanceledListConditionGenerateImpl"; // “维修作业计划待删除查询条件生成器KEY” public static final String WAIT_DELETED_TASK_CONDITION_GENERATE_KEY = "wmaintainCanceledListConditionGenerateImpl"; // “维修作业计划编号查询条件生成器KEY” public static final String TASK_ID_CONDITION_GENERATE_KEY = "wmPlanIdConditionGenerateImpl"; // “维修作业计划中计划维护站点编号查询条件生成器KEY” public static final String SITE_ID_CONDITION_GENERATE_KEY = "wmPlanSiteIdConditionGenerateImpl"; // “无线资源计划中存在问题站点查询条件生成器KEY” public static final String WPLAN_RESOURCE_CONDITION_GENERATE_KEY = "wmPlanResourceConditionGenerateImpl"; // 短信发送信息配置文件参数常量 // 短信发送信息配置文件编号常量 public static final String WMAINTAIN_XML_FILE_ID = "wmaintian"; // 制定维修作业计划短信发送信息编号 public static final String CREATE_PLAN_SEND_MSG_ID = "create_plan"; // 维修作业计划审核不通过短信发送信息编号 public static final String APPROVE_NOTPASSED_PLAN_MSG_ID = "approve_notpassed_plan"; // 维修作业计划转审短信发送信息编号 public static final String APPROVE_TRANSFER_PLAN_MSG_ID = "approve_transfer_plan"; // 维修作业计划审核通过短信发送信息编号 public static final String APPROVE_PASSED_PLAN_MSG_ID = "approve_passed_plan"; // 填写维修作业计划报告短信发送信息编号 public static final String CREATE_REPORT_SEND_MSG_ID = "create_report"; // 维修作业计划报告审核不通过短信发送信息编号 public static final String APPROVE_NOTPASSED_REPORT_MSG_ID = "approve_notpassed_report"; // 维修作业计划报告转审短信发送信息编号 public static final String APPROVE_TRANSFER_REPORT_MSG_ID = "approve_transfer_report"; // 维修作业计划报告审核通过短信发送信息编号 public static final String APPROVE_PASSED_REPORT_MSG_ID = "approve_passed_report"; // 隐患派单工作流业务处理服务 @Resource(name = "WMaintainWorkflowService") private WMaintainWorkflowService wMaintainWorkflowService; // 基础信息业务处理服务 @Resource(name = "baseInfoProvider") private BaseInfoProvider baseInfoProvider; // 用户信息业务处理 @Resource(name = "userInfoServiceImpl") protected UserInfoService userInfoService; // 故障查询条件生成器Map @Autowired protected 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 plan * WMaintainPlan 用户的输入信息的维修作业计划实体 * @param userInfo * UserInfo 当前用户信息 * @return QueryParameter 查询条件参数 */ protected QueryParameter setQueryParameter(WMaintainPlan plan, UserInfo userInfo) { if (QueryParameter.isNull(plan)) { plan = new WMaintainPlan(); } QueryParameter parameter = new QueryParameter(); parameter.setUser(userInfo); parameter.setEntity(plan); return parameter; } /** * 根据组织编号获取组织名称 * * @param orgId * String 组织编号 * @return String 组织名称 */ @SuppressWarnings("deprecation") public String getOrgName(String orgId) { String orgName = ""; Map<String, Object> orgInfo = baseInfoProvider.getOrgMap(orgId); if (MapUtils.isNotEmpty(orgInfo)) { orgName = (String) orgInfo.get("ORGANIZENAME"); } return orgName; } /** * 根据组织编号获取组织联系人电话 * * @param orgId * String 组织编号 * @return String 组织联系人电话 */ @SuppressWarnings("deprecation") public String getOrgTel(String orgId) { String orgName = ""; Map<String, Object> orgInfo = baseInfoProvider.getOrgMap(orgId); if (MapUtils.isNotEmpty(orgInfo)) { orgName = (String) orgInfo.get("LINKMANTEL"); } return orgName; } /** * 根据巡检组编号获取巡检组名称 * * @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; } /** * 根据巡检组编号获取巡检组的组织名称 * * @param patrolGroupId * String 巡检组编号 * @return String 巡检组的组织名称 */ @SuppressWarnings("deprecation") public String getPatrolGroupOrgName(String patrolGroupId) { String orgId = ""; Map<String, Object> patrolGroupInfo = baseInfoProvider .getPatrolmanMap(patrolGroupId); if (MapUtils.isNotEmpty(patrolGroupInfo)) { orgId = (String) patrolGroupInfo.get("parentid"); } return getOrgName(orgId); } /** * 根据用户编号获取用户名称 * * @param userId * String 用户编号 * @return String 用户名称 */ public String getUserName(String userId) { String userName = ""; UserInfo user = userInfoService.getUserInfoByPersonId(userId); if (user != null) { userName = user.getUserName(); } return userName; } /** * 根据用户编号获取用户联系电话 * * @param userId * String 用户编号 * @return String 用户联系电话 */ public String getUserPhone(String userId) { // TODO Auto-generated method stub String phone = ""; UserInfo user = userInfoService.getUserInfoByPersonId(userId); if (user != null) { phone = user.getPhone(); if (StringUtils.isBlank(phone)) { phone = user.getMobile(); } } return phone; } /** * * @return WMaintainWorkflowService */ public WMaintainWorkflowService getwMaintainWorkflowService() { return wMaintainWorkflowService; } /** * @param wMaintainWorkflowService * WMaintainWorkflowService */ public void setwMaintainWorkflowService( WMaintainWorkflowService wMaintainWorkflowService) { this.wMaintainWorkflowService = wMaintainWorkflowService; } /** * 获取实体操作的Dao */ @Override protected BaseDao<T, PK> getBaseDao() { // TODO Auto-generated method stub return getWMaintainBaseDao(); } /** * 获取维修作业计划处理操作Dao * * @return WMaintainBaseDao<T, PK> 维修作业计划处理操作Dao */ protected abstract WMaintainBaseDao<T, PK> getWMaintainBaseDao(); /** * 执行工作流步骤 * * @param plan * WMaintainPlan 维修作业计划信息数据 * @param smParameter * SmParameter 短信发送数据参数 */ protected void doWorkflow(WMaintainPlan plan, SmParameter smParameter) { ProMockPo taskPi = new ProMockPo(); String sendUserId = plan.getCurrentProcessUserId(); String processUserId = plan.getNextProcessUserId(); taskPi.setUserId(sendUserId); taskPi.setUserName(getUserName(sendUserId)); taskPi.setTaskId(plan.getWorkflowTaskId()); taskPi.setDealUsers(processUserId); taskPi.setDealUsersName(getUserName(processUserId)); taskPi.setTransition(plan.getWorkflowTransition()); taskPi.setComment(plan.getWorkflowComment()); getwMaintainWorkflowService().doTask(taskPi, smParameter); } }