package com.cabletech.business.workflow.fault.service.impl; import java.util.ArrayList; import java.util.Calendar; 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.baseinfo.business.entity.UserInfo; import com.cabletech.business.workflow.fault.dao.FaultStatisticDao; import com.cabletech.business.workflow.fault.model.FaultAlert; import com.cabletech.business.workflow.fault.service.FaultStatisticService; import com.cabletech.common.base.BaseDao; import com.cabletech.common.base.BaseServiceImpl; /** * 首页故障派单统计业务服务接口实现 * * @author 杨隽 2012-03-09 创建 * */ @Service @SuppressWarnings("rawtypes") public class FaultStatisticServiceImpl extends BaseServiceImpl implements FaultStatisticService { // 首页故障派单统计Dao @Resource(name = "faultStatisticDao") private FaultStatisticDao faultStatisticDao; /** * 获取首页故障派单统计列表 * * @param userInfo * UserInfo 当前登录用户 * @return List<Map<String, Object>> 首页故障派单统计列表 */ @Override @Transactional(readOnly = true) public List<Map<String, Object>> getOvertimeWorkOrderStatisticResultList( UserInfo userInfo) { // TODO Auto-generated method stub StringBuffer conditionBuffer = new StringBuffer(""); getFaultCommonCondition(userInfo, conditionBuffer); if (userInfo.isProvinceMobile()) { return faultStatisticDao.getOvertimeFaultNumberByRegion( conditionBuffer.toString(), userInfo.getRegionId()); } if (userInfo.isCityMobile()) { return faultStatisticDao.getOvertimeFaultNumberByOrg( conditionBuffer.toString(), userInfo.getRegionId(), ""); } if (userInfo.isContractor()) { return faultStatisticDao.getOvertimeFaultNumberByOrg( conditionBuffer.toString(), userInfo.getRegionId(), userInfo.getOrgId()); } return new ArrayList<Map<String, Object>>(); } /** * 将当前用户信息、系统日期和故障归档状态放到查询条件缓冲区中 * * @param userInfo * UserInfo 当前用户信息 * @param conditionBuffer * StringBuffer 查询条件缓冲区 */ private void getFaultCommonCondition(UserInfo userInfo, StringBuffer conditionBuffer) { Calendar c = Calendar.getInstance(); conditionBuffer.append(" and wa.business_type in ( "); conditionBuffer.append(getBusinessTypes(userInfo)); conditionBuffer.append(" ) "); conditionBuffer.append(" and wt.send_time>=to_date('"); conditionBuffer.append(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1)); conditionBuffer.append("-01','yyyy-mm-dd') "); conditionBuffer.append(" and wt.send_time<add_months(to_date('"); conditionBuffer.append(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1)); conditionBuffer.append("-01','yyyy-mm-dd'),1) "); conditionBuffer.append(" wa.ignore_state='"); conditionBuffer.append(FaultAlert.FINISHED_STATE); conditionBuffer.append("' "); } /** * 根据当前登录用户获取用户管理的专业类型 * * @param userInfo * UserInfo 当前登录用户 * @return String 用户管理的专业类型 */ private String getBusinessTypes(UserInfo userInfo) { // TODO Auto-generated method stub List<Map<String, Object>> businessTypeList = userInfo .getBusinessTypes(); if (CollectionUtils.isEmpty(businessTypeList)) { return "''"; } StringBuffer buf = new StringBuffer(""); for (int i = 0; i < businessTypeList.size(); i++) { Map<String, Object> map = businessTypeList.get(i); buf.append("'"); buf.append(map.get("CODEVALUE")); buf.append("'"); if (i < businessTypeList.size() - 1) { buf.append(","); } } return buf.toString(); } @Override protected BaseDao getBaseDao() { // TODO Auto-generated method stub return null; } }