package com.cabletech.business.workflow.wmaintain.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
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.model.WMaintainPlan;
import com.cabletech.business.workflow.wmaintain.model.WMaintainSite;
import com.cabletech.business.workflow.wmaintain.service.WMaintainResourceService;
/**
* 查询待处理的资源站点服务接口实现
*
* @author 杨隽 2012-04-23 创建
* @author 杨隽 2012-06-04 修改基站重复的bug问题
* @author 杨隽 2012-06-06 修改问题站点选择的bug问题
*
*/
@Service
@Transactional(readOnly = true)
public class WMaintainResourceServiceImpl extends
WMaintainBaseServiceImpl<WMaintainSite, String> implements
WMaintainResourceService {
// 维修作业计划中资源查询Dao
@SuppressWarnings("rawtypes")
@Resource(name = "WMaintainResourceDao")
private WMaintainBaseDao wMaintainResourceDao;
/**
* 根据查询条件获取无线资源计划列表字符串
*
* @param plan
* WMaintainPlan 查询条件
* @return String 无线资源计划列表字符串
*/
public String getWplanList(WMaintainPlan plan) {
List<Map<String, Object>> list = getWMaintainResourceProblemList(plan);
String planListStr = "";
if (CollectionUtils.isEmpty(list)) {
return planListStr;
}
List<String> planIdList = new ArrayList<String>();
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i);
String planId = (String) map.get("PLAN_ID");
if (planIdList.contains(planId)) {
continue;
}
planIdList.add(planId);
planListStr += planId;
planListStr += "=";
planListStr += (String) map.get("PLAN_NAME");
planListStr += ";";
}
planListStr = planListStr.substring(0, planListStr.length() - 1);
return planListStr;
}
/**
* 根据查询条件获取查询待处理的资源站点列表信息
*
* @param plan
* WMaintainPlan 查询条件
* @return List<Map<String, Object>> 待处理的资源站点列表信息
*/
@Override
public List<Map<String, Object>> getWMaintainResourceList(WMaintainPlan plan) {
List<Map<String, Object>> list = getWMaintainResourceProblemList(plan);
List<Map<String, Object>> resourceList = new ArrayList<Map<String, Object>>();
if (CollectionUtils.isEmpty(list)) {
return resourceList;
}
List<String> resourceIdList = new ArrayList<String>();
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i);
String resourceId = (String) map.get("RESOURCE_ID");
String resourceType = (String) map.get("RESOURCE_TYPE");
String resourceName = (String) map.get("RS_NAME");
if (resourceIdList.contains(resourceId + "_" + resourceType)) {
continue;
}
map.put("ID", resourceType + "_" + resourceId);
map.put("SUBITEM_ID", resourceId);
map.put("RES_", "root");
map.put("SUBITEM_NAME", resourceName);
map.put("SUBITEM_PATROL", "");
resourceList.add(map);
resourceIdList.add(resourceId + "_" + resourceType);
}
return resourceList;
}
/**
* 根据查询条件获取查询待处理的资源站点中存在问题列表信息
*
* @param plan
* WMaintainPlan 查询条件
* @return List<Map<String, Object>> 待处理的资源站点中存在问题列表信息
*/
@SuppressWarnings("unchecked")
@Override
public List<Map<String, Object>> getWMaintainResourceProblemList(
WMaintainPlan plan) {
String key = WPLAN_RESOURCE_CONDITION_GENERATE_KEY;
QueryParameter parameter = new QueryParameter();
parameter.setEntity(plan);
ConditionGenerate conditionGenerate = super.getConditionGenerate(key,
parameter);
List<Map<String, Object>> list = wMaintainResourceDao
.queryListForSql(conditionGenerate);
return list;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
protected WMaintainBaseDao getWMaintainBaseDao() {
// TODO Auto-generated method stub
return wMaintainResourceDao;
}
}