package com.cabletech.business.analysis.dao; import java.util.List; import java.util.Map; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Repository; import com.cabletech.baseinfo.business.entity.UserInfo; import com.cabletech.business.base.condition.BusinessConditionUtils; import com.cabletech.business.base.condition.ConditionGenerateUtils; import com.cabletech.business.base.condition.QueryParameter; import com.cabletech.common.base.BaseDao; import com.cabletech.common.util.Page; /** * 巡检异常项统计分析Dao * * @author 杨隽 2012-07-27 创建 * */ @SuppressWarnings("rawtypes") @Repository public class ProblemPatrolItemAnalyseDao extends BaseDao { /** * 获取 巡检异常项统计分析列表 * * @param parameters * Map<String, String> 参数 * @param page * Page */ @SuppressWarnings("unchecked") public void getProblemPatrolItem(Map<String, Object> parameters, Page page) { StringBuffer sqlBuffer = new StringBuffer(""); sqlBuffer.append(" SELECT wpi.ID,wps.ID AS SUBITEM_ID,wpi.ITEM_NAME, "); sqlBuffer.append(" wps.SUBITEM_NAME,count(wer.ID) AS ERROR_NUM "); sqlBuffer.append(" FROM WPLAN_PATROLRECORD wpr "); sqlBuffer.append(" JOIN WPLAN_PATROLSUBITEM wps "); sqlBuffer.append(" ON wpr.SUBITEM_ID=wps.ID "); sqlBuffer.append(" JOIN WPLAN_PATROLITEM wpi ON wps.ITEM_ID=wpi.ID "); sqlBuffer.append(" JOIN WPLAN_EXECUTERESULT wer "); sqlBuffer.append(" ON wpr.EXECUTERESULT_ID=wer.ID "); sqlBuffer.append(" JOIN WPLAN_PATROLINFO wp ON wer.PLAN_ID=wp.ID "); sqlBuffer.append(" JOIN VIEW_PATROLGROUP vp "); sqlBuffer.append(" ON wp.PATROL_GROUP_ID=vp.ID "); sqlBuffer.append(" WHERE wpr.SUBITEM_PATROL=wps.EXCEPTION_VALUE "); getConditionString(parameters, sqlBuffer); getUserCondition(parameters, sqlBuffer); sqlBuffer.append(" GROUP BY wpi.ID,wps.ID, "); sqlBuffer.append(" wpi.ITEM_NAME,wps.SUBITEM_NAME "); sqlBuffer.append(" ORDER BY count(wer.ID) DESC "); super.getSQLPageAll(page, sqlBuffer.toString()); } /** * 获取用户专业查询条件 * * @param parameters * Map<String, Object> * @param sqlBuffer * StringBuffer */ private void getUserCondition(Map<String, Object> parameters, StringBuffer sqlBuffer) { UserInfo user = (UserInfo) parameters.get("user"); if (user == null) { return; } List<Map<String, Object>> businessTypeList = user.getBusinessTypes(); String businessTypeStr = ""; if (CollectionUtils.isNotEmpty(businessTypeList)) { for (int i = 0; i < businessTypeList.size(); i++) { Map<String, Object> map = businessTypeList.get(i); businessTypeStr += "'"; businessTypeStr += map.get("CODEVALUE"); businessTypeStr += "'"; if (i < businessTypeList.size() - 1) { businessTypeStr += ","; } } sqlBuffer.append(" AND wp.BUSINESS_TYPE IN ( "); sqlBuffer.append(businessTypeStr); sqlBuffer.append(" )"); } } /** * 获取查询条件的字串 * * @param parameters * Map<String, String> * @param sqlBuffer * StringBuffer */ private void getConditionString(Map<String, Object> parameters, StringBuffer sqlBuffer) { QueryParameter parameter = new QueryParameter(); parameter.setAlias("wp"); parameter.setColumnName("BUSINESS_TYPE"); parameter.setValue((String) parameters.get("businessType")); sqlBuffer.append(ConditionGenerateUtils .getConditionEqualByAndLogicOperator(parameter)); parameter.setColumnName("REGION_ID"); parameter.setValue((String) parameters.get("regionId")); sqlBuffer.append(BusinessConditionUtils.getRegionCondition(parameter)); parameter.setColumnName("PATROL_GROUP_ID"); parameter.setValue((String) parameters.get("patrolId")); sqlBuffer.append(ConditionGenerateUtils .getConditionEqualByAndLogicOperator(parameter)); parameter.setAlias("vp"); parameter.setColumnName("PARENTID"); parameter.setValue((String) parameters.get("orgId")); sqlBuffer.append(BusinessConditionUtils.getOrgCondition(parameter)); parameter.setAlias("wer"); parameter.setColumnName("END_TIME"); parameter.setValue((String) parameters.get("startTime")); parameter.setOperator(ConditionGenerateUtils.GE_OPERATOR); sqlBuffer.append(ConditionGenerateUtils .getConditionDateTimeByAndLogicOperator(parameter)); parameter.setValue((String) parameters.get("endTime")); parameter.setOperator(ConditionGenerateUtils.LE_OPERATOR); sqlBuffer.append(ConditionGenerateUtils .getConditionDateTimeByAndLogicOperator(parameter)); } }