package com.cabletech.business.wplan.template.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.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
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.base.condition.ConditionGenerate;
import com.cabletech.business.base.condition.QueryParameter;
import com.cabletech.business.wplan.patrolitem.condition.parameter.ItemQueryParameter;
import com.cabletech.business.wplan.patrolitem.dao.PatrolItemDao;
import com.cabletech.business.wplan.patrolitem.dao.PatrolSubItemDao;
import com.cabletech.business.wplan.template.dao.WplanTemplateDao;
import com.cabletech.business.wplan.template.model.WplanTemplate;
import com.cabletech.business.wplan.template.service.WplanTemplateService;
import com.cabletech.common.base.BaseDao;
import com.cabletech.common.base.BaseServiceImpl;
import com.cabletech.common.base.SysConstant;
import com.cabletech.common.util.Page;
/**
* 计划模板 Service
*
* @author 汪杰
* @author 杨隽 2012-02-14 整理巡检项Dao的操作方式并重构代码
*/
@Service
public class WplanTemplateServiceImpl extends
BaseServiceImpl<WplanTemplate, String> implements WplanTemplateService {
@Resource(name = "wplanTemplateDao")
private WplanTemplateDao wplanTemplateDao;
@Resource(name = "patrolItemDao")
private PatrolItemDao patrolItemDao;
@Resource(name = "patrolSubItemDao")
private PatrolSubItemDao patrolSubItemDao;
@Autowired
private Map<String, ConditionGenerate> conditionGenerateMap;
/**
* 获取巡检项树形数据
* @param businessType
* @param regionId
* @param flag
* @param templateId
*/
@Transactional(readOnly = true)
public String getPatrolItemTreddDate(String businessType, String regionId,
String flag, String templateId) {
ItemQueryParameter parameter = new ItemQueryParameter();
parameter.setIsQuery(QueryParameter.IS_QUERY_PARAMETER);
parameter.setBusinessType(businessType);
parameter.setRegionId(regionId);
ConditionGenerate itemConditionGenerate = conditionGenerateMap
.get("itemConditionGenerate");
itemConditionGenerate.setQuerySql(parameter);
List<Map<String, Object>> items = patrolItemDao
.queryListForSql(itemConditionGenerate);
List<Map<String, Object>> subs = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> ret = new ArrayList<Map<String, Object>>();
Map<String, Object> node = null;
for (Map map : items) {
node = new HashMap<String, Object>();
String itemId = (String) map.get("id");
String itemName = (String) map.get("item_name");
node.put("pId", "root");
node.put("id", itemId);
node.put("name", itemName);
if ("copy".equals(flag)) {
ConditionGenerate itemIdAndTemplateIdConditionGenerate = conditionGenerateMap
.get("itemIdAndTemplateIdConditionGenerate");
parameter.setItemId(itemId);
parameter.setTemplateId(templateId);
itemIdAndTemplateIdConditionGenerate.setQuerySql(parameter);
subs = patrolSubItemDao
.queryListForSql(itemIdAndTemplateIdConditionGenerate);
} else {
ConditionGenerate itemIdConditionGenerate = conditionGenerateMap
.get("itemIdConditionGenerate");
parameter.setItemId(itemId);
itemIdConditionGenerate.setQuerySql(parameter);
subs = patrolSubItemDao
.queryListForSql(itemIdConditionGenerate);
}
if(CollectionUtils.isNotEmpty(subs)){
ret.add(node);
}
for (Map submap : subs) {
node = new HashMap<String, Object>();
String subItemId = (String) submap.get("id");
String sub_name = (String) submap.get("subitem_name");
node.put("pId", itemId);
node.put("id", subItemId);
node.put("name", sub_name);
if (StringUtils.isNotBlank((String) submap.get("template_id"))) {
node.put("checked", true);
} else {
node.put("checked", false);
}
ret.add(node);
}
}
String json = BaseUtil.diversionJson(ret);
return json;
}
/**
* 保存计划模板
* @param vo
*/
@Transactional
public void saveWplanTemplate(WplanTemplate vo) {
String item = vo.getItems();
String[] items = new String[] {};
if (StringUtils.isNotBlank(item)) {
items = item.split(",");
vo.setState(SysConstant.TEMPLATE_START_USING_STATE);
save(vo);
}
wplanTemplateDao.removeTemplateSubItem(vo.getId());
for (String t : items) {
wplanTemplateDao.saveTemplateSubItem(vo.getId(), t);
}
}
/**
* 计划模板复制方法
* @param vo
*/
@Transactional
public void copyWplanTemplate(WplanTemplate vo) {
String item = vo.getItems();
String[] items = new String[] {};
if (StringUtils.isNotBlank(item)) {
items = item.split(",");
vo.setState(SysConstant.TEMPLATE_START_USING_STATE);
wplanTemplateDao.getSession().save(vo);
}
for (String t : items) {
wplanTemplateDao.saveTemplateSubItem(vo.getId(), t);
}
}
/**
* 启用计划模板方法
* @param id
*/
@Transactional
public void startUsingWplanTemplate(String id) {
wplanTemplateDao.changeTemplateSubItemState(id,
SysConstant.TEMPLATE_START_USING_STATE);
}
/**
* 删除计划模板方法
* @param id
*/
@Transactional
public void deleteWplanTemplate(String id) {
wplanTemplateDao.changeTemplateSubItemState(id,
SysConstant.TEMPLATE_STOP_USING_STATE);
}
/**
* 查询计划模板方法
* @param businessType String
* @param templateName String
* @param user UserInfo
* @param page Page
*/
@Transactional(readOnly = true)
public Page queryWplanTemplate(String businessType, String templateName,UserInfo user,
Page page) {
return wplanTemplateDao.queryWplanTemplate(businessType, templateName,user,
page);
}
/**
* 查询计划模板方法
* @param businessType
* @param regionid
* @param state
*/
@Transactional(readOnly = true)
public List<Map<String, Object>> getWplanTemplate(String businessType,String regionid,
String state) {
return wplanTemplateDao.getWplanTemplate(businessType,regionid, state);
}
/**
* 查询指定计划模板方法
* @param id
*/
@Transactional(readOnly = true)
public WplanTemplate getWplanTemplate(String id) {
WplanTemplate vo = wplanTemplateDao.get(id);
return vo;
}
/**
* 获取计划模板的子项
* @param templateId
*/
@Transactional(readOnly = true)
public List<Map<String, Object>> getSubItemByTemplate(String templateId) {
return wplanTemplateDao.getSubItemByTemplate(templateId);
}
@Override
protected BaseDao<WplanTemplate, String> getBaseDao() {
return wplanTemplateDao;
}
}