package com.cabletech.business.workflow.wmaintain.service.impl; 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.MapUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import com.cabletech.business.base.condition.ConditionGenerate; import com.cabletech.business.base.condition.QueryParameter; import com.cabletech.business.workflow.wmaintain.dao.WMaintainBaseDao; import com.cabletech.business.workflow.wmaintain.dao.WMaintainResultDao; import com.cabletech.business.workflow.wmaintain.model.WMaintainPlan; import com.cabletech.business.workflow.wmaintain.model.WMaintainResult; import com.cabletech.business.workflow.wmaintain.model.WMaintainSite; import com.cabletech.business.workflow.wmaintain.service.WMaintainResultService; import com.cabletech.common.util.DateUtil; /** * 站点异常项及处理结果服务接口实现 * * @author 杨隽 2012-04-11 创建 * @author 杨隽 2012-04-18 添加deletePlanResult()方法 * @author 杨隽 2012-04-26 添加getWMaintainResultListInGrid()方法 * @author 杨隽 2012-07-10 添加saveWmaintainProcess()方法以支持隐患现场处理信息的保存 * @author 杨隽 2012-07-10 修改getWMaintainResultList()方法的参数 * */ @Service @Transactional public class WMaintainResultServiceImpl extends WMaintainBaseServiceImpl<WMaintainResult, String> implements WMaintainResultService { // 站点异常项及处理结果Dao @Resource(name = "WMaintainResultDao") private WMaintainResultDao wMaintainResultDao; /** * 保存制定维修作业计划中的站点异常项信息 * * @param plan * WMaintainPlan 制定的维修作业计划 * @param site * WMaintainSite 制定的维修作业计划中的站点信息 */ @Override public void save(WMaintainPlan plan, WMaintainSite site) { // TODO Auto-generated method stub String[] rsId = plan.getStationId(); String[] rsType = plan.getStationType(); String[] patrolRecordId = plan.getPatrolRecordId(); String[] patrolItemId = plan.getPatrolItemId(); if (ArrayUtils.isEmpty(patrolItemId)) { return; } for (int i = 0; i < patrolItemId.length; i++) { boolean isNotSitePatrolItem = isNotSitePatrolItem(site, rsId[i], rsType[i]); if (isNotSitePatrolItem) { continue; } WMaintainResult result = new WMaintainResult(); result.setMaintainId(site.getId()); result.setItemId(patrolItemId[i]); result.setPatrolRecordId(patrolRecordId[i]); wMaintainResultDao.save(result); } } /** * 保存隐患现场处理过程 * * @param plan * WMaintainPlan 隐患现场处理过程信息 */ @Override public void saveWmaintainProcess(WMaintainPlan plan) { if (StringUtils.isBlank(plan.getResultId())) { return; } String[] resultId = plan.getResultId().split(","); String[] resultRecord = plan.getResultMaintainRecord().split(","); String[] result = plan.getResultMaintainResult().split(","); String[] date = plan.getResultMaintainDate().split(","); for (int i = 0; i < resultId.length; i++) { WMaintainResult wmaintainResult = wMaintainResultDao .get(resultId[i]); wmaintainResult.setMaintainDate(DateUtil.Str2UtilDate(date[i], "yyyy-MM-dd HH:mm:ss")); wmaintainResult.setMaintainRecord(resultRecord[i]); wmaintainResult.setMaintainResult(result[i]); wMaintainResultDao.save(wmaintainResult); } } /** * 根据计划编号删除维修作业计划中的站点异常项信息 * * @param planId * String 计划编号 */ public void deletePlanResult(String planId) { wMaintainResultDao.deleteResult(planId); } /** * 根据计划编号获取维修作业计划中的站点异常项列表信息 * * @param planId * String 维修作业计划的编号 * @param type * String 查询类型 * @return List<Map<String, Object>> 维修作业计划中的站点异常项列表信息 */ @Override @Transactional(readOnly = true) public List<Map<String, Object>> getWMaintainResultList(String planId, String type) { // TODO Auto-generated method stub String key = SITE_ID_CONDITION_GENERATE_KEY; QueryParameter parameter = new QueryParameter(); if (StringUtils.isBlank(type)) { parameter.setAlias("ws"); } else { parameter.setAlias("wp"); } parameter.setId(planId); ConditionGenerate conditionGenerate = super.getConditionGenerate(key, parameter); return wMaintainResultDao.queryListForSql(conditionGenerate); } /** * 根据计划编号获取维修作业计划中的站点异常项列表信息(用于在编辑页面中显示站点列表) * * @param planId * String 维修作业计划的编号 * @return List<Map<String, Object>> 维修作业计划中的站点异常项列表信息 */ @Override @Transactional(readOnly = true) public List<Map<String, Object>> getWMaintainResultListInGrid(String planId) { String key = TASK_ID_CONDITION_GENERATE_KEY; QueryParameter parameter = new QueryParameter(); parameter.setId(planId); ConditionGenerate conditionGenerate = super.getConditionGenerate(key, parameter); List<Map<String, Object>> list = wMaintainResultDao .queryListForSql(conditionGenerate); List<Map<String, Object>> gridList = convertDataListToGridDataList(list); return gridList; } /** * 判断是否为该站点的巡检项巡检结果信息 * * @param site * WMaintainSite 巡检站点 * @param rsId * String 巡检项站点编号 * @param rsType * String 巡检项站点类型 * @return boolean 是否为该站点的巡检项巡检结果信息 */ private boolean isNotSitePatrolItem(WMaintainSite site, String rsId, String rsType) { if (StringUtils.isBlank(site.getRsId())) { return true; } if (StringUtils.isBlank(site.getRsType())) { return true; } if (!site.getRsId().equals(rsId)) { return true; } if (!site.getRsType().equals(rsType)) { return true; } return false; } /** * 转换维修作业计划中的站点异常项列表信息到jqgrid中的站点异常项列表数据信息 * * @param list * List<Map<String, Object>> 维修作业计划中的站点异常项列表信息 * @return List<Map<String, Object>> 转换之后的维修作业计划中的站点异常项列表信息 */ private List<Map<String, Object>> convertDataListToGridDataList( List<Map<String, Object>> list) { List<Map<String, Object>> gridList = new ArrayList<Map<String, Object>>(); if (CollectionUtils.isEmpty(list)) { return gridList; } for (int i = 0; i < list.size(); i++) { Map<String, Object> sourceMap = list.get(i); if (MapUtils.isEmpty(sourceMap)) { continue; } Map<String, Object> targetMap = new HashMap<String, Object>(); putGridDataToMap(sourceMap, targetMap); gridList.add(targetMap); } return gridList; } /** * 将读取的源数据Map转换到新的目标数据Map * * @param sourceMap * Map<String, Object> 源数据Map * @param targetMap * Map<String, Object> 目标Map */ private void putGridDataToMap(Map<String, Object> sourceMap, Map<String, Object> targetMap) { targetMap.put("ID", sourceMap.get("PATROLRECORD_ID")); targetMap.put("SUBITEM_ID", sourceMap.get("ITEM_ID")); targetMap.put("ADDRESS", sourceMap.get("ADDRESS")); targetMap.put("RESOURCE_TYPE", sourceMap.get("RS_TYPE")); targetMap.put("RESOURCE_ID", sourceMap.get("RS_ID")); targetMap.put("RES_", sourceMap.get("RS_TYPE") + "_" + sourceMap.get("RS_ID")); targetMap.put("SUBITEM_NAME", sourceMap.get("SUBITEM_NAME")); targetMap.put("SUBITEM_PATROL", sourceMap.get("SUBITEM_PATROL")); targetMap.put("RS_NAME", sourceMap.get("RS_NAME")); targetMap.put("PATROL_GROUP_ID", sourceMap.get("PATROL_GROUP")); targetMap.put("BUSINESS_TYPE", sourceMap.get("BUSINESS_TYPE")); } @Override protected WMaintainBaseDao<WMaintainResult, String> getWMaintainBaseDao() { // TODO Auto-generated method stub return wMaintainResultDao; } }