package com.cabletech.business.assess.dao;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Repository;
import com.cabletech.business.assess.model.AssessAppealForm;
import com.cabletech.business.assess.model.AssessExaminationResult;
import com.cabletech.common.base.BaseDao;
/**
* 年考核汇总Dao
*
* @author 杨隽 2012-08-09 创建
*/
@SuppressWarnings("all")
@Repository
public class AssessYearSummaryDao extends BaseDao {
/**
* 获取年考核汇总的标题行信息
*
* @param yearMonth
* String
* @return List<Map<String, Object>>
*/
public List<Map<String, Object>> getTableItemList(String yearMonth) {
StringBuffer sql = new StringBuffer("");
sql.append(" SELECT DISTINCT MAI.ID AS ITEM_ID,MAI.ITEM_NAME, ");
sql.append(" TO_CHAR(ROW_NUMBER() OVER(PARTITION BY MAT.ID,MER.ID ORDER BY MAI.ID)) AS RN ");
sql.append(" FROM MM_APPRAISE_ITEM MAI ");
sql.append(" JOIN MM_APPRAISE_TABLE MAT ON MAI.TABLE_ID=MAT.ID ");
sql.append(" JOIN MM_EXAMINATIONRESULTS MER ON MER.TABLE_ID=MAT.ID ");
sql.append(" WHERE MAI.ITEM_ID IS NULL ");
sql.append(" AND MAT.TABLE_TYPE='02' ");
sql.append(" AND MER.APPRAISE_MONTH=TO_DATE('");
sql.append(yearMonth);
sql.append("','yyyy-mm-dd')");
sql.append(" ORDER BY MAI.ID ");
return super.getSQLALL(sql.toString());
}
/**
* 获取年考核汇总的数据信息
*
* @param yearMonth
* String
* @param rowNum
* String[]
* @param rowName
* String[]
* @return List<Map<String, Object>>
*/
public List<Map<String, Object>> getYearSummaryDataList(String yearMonth,
String[] rowNum, String[] rowName) {
StringBuffer sql = new StringBuffer("");
sql.append(" SELECT TO_CHAR(ROWNUM) AS NO_,M.* ");
sql.append(" FROM ( ");
sql.append(" SELECT MP.ID,MP.NAME, ");
for (int i = 0; i < rowNum.length; i++) {
sql.append(" TO_CHAR(MAX(DECODE(RN,");
sql.append(rowNum[i]);
sql.append(",MP.SCORE,0)),'FM990.09') AS ITEM_");
sql.append(rowName[i]);
sql.append(", ");
}
sql.append(" TO_CHAR(SUM(MP.SCORE)+( ");
sql.append(" SELECT NVL(SUM(MAF.SCORE),0) FROM MM_APPEALFORM MAF ");
sql.append(" JOIN MM_EXAMINATIONRESULTS MER ON MAF.EXAM_RESULT_ID=MER.ID ");
sql.append(" JOIN MM_APPRAISE_TABLE MAT ON MER.TABLE_ID=MAT.ID ");
sql.append(" WHERE MAF.CHECK_RESULT='pass' ");
sql.append(" AND MAF.AUDITING_STATE='");
sql.append(AssessAppealForm.END_STATE);
sql.append("' ");
sql.append(" AND MAF.CONTRACTOR_ID=MP.ID ");
sql.append(" AND MAT.TABLE_TYPE='02' ");
sql.append(" AND MER.APPRAISE_MONTH=TO_DATE('");
sql.append(yearMonth);
sql.append("','yyyy-mm-dd') ");
sql.append(" ),'FM990.09') AS SUM_,TO_CHAR( ");
sql.append(" ( ");
sql.append(" SELECT COUNT(*) FROM MM_APPEALFORM MAF ");
sql.append(" JOIN MM_EXAMINATIONRESULTS MER ON MAF.EXAM_RESULT_ID=MER.ID ");
sql.append(" JOIN MM_APPRAISE_TABLE MAT ON MER.TABLE_ID=MAT.ID ");
sql.append(" WHERE MAF.CHECK_RESULT='pass' ");
sql.append(" AND MAF.AUDITING_STATE='");
sql.append(AssessAppealForm.END_STATE);
sql.append("' ");
sql.append(" AND MAF.CONTRACTOR_ID=MP.ID ");
sql.append(" AND MAT.TABLE_TYPE='02' ");
sql.append(" AND MER.APPRAISE_MONTH=TO_DATE('");
sql.append(yearMonth);
sql.append("','yyyy-mm-dd') ");
sql.append(" ) ");
sql.append(" ) AS APPERAL_NUM ");
sql.append(" FROM ( ");
sql.append(" SELECT MO.*, ");
sql.append(" ROW_NUMBER() OVER(PARTITION BY ID ORDER BY LV_ID) AS RN FROM ( ");
sql.append(" SELECT VO.ID,VO.NAME,MN.LV_ID,");
sql.append(" SUM(MN.SCORE) AS SCORE ");
sql.append(" FROM ( ");
sql.append(" SELECT MM.*,( ");
sql.append(" SELECT MAI_.ID FROM MM_APPRAISE_ITEM MAI_ ");
sql.append(" WHERE MAI_.ITEM_ID IS NULL ");
sql.append(" START WITH MAI_.ID=MM.ITEM_ ");
sql.append(" CONNECT BY PRIOR MAI_.ITEM_ID=MAI_.ID ");
sql.append(" ) AS LV_ID ");
sql.append(" FROM ( ");
sql.append(" SELECT MER.CONTRACTOR_ID,MAD.*,MAI.ID AS ITEM_ ");
sql.append(" FROM MM_EXAMINATIONRESULTS MER ");
sql.append(" JOIN MM_APPRAISE_TABLE MAT ON MER.TABLE_ID=MAT.ID ");
sql.append(" JOIN MM_ASSESSMENTDETAILS MAD ON MER.ID=MAD.RESULT_ID ");
sql.append(" JOIN MM_APPRAISE_CONTENT MAC ON MAD.CONTENT_ID=MAC.ID ");
sql.append(" JOIN MM_APPRAISE_ITEM MAI ON MAC.ITEM_ID=MAI.ID ");
sql.append(" WHERE MAT.TABLE_TYPE='02' ");
sql.append(" AND MER.STATE='");
sql.append(AssessExaminationResult.END_STATE);
sql.append("'");
sql.append(" AND MER.APPRAISE_MONTH=TO_DATE('");
sql.append(yearMonth);
sql.append("','yyyy-mm-dd') ");
sql.append(" ) MM ");
sql.append(" ) MN ");
sql.append(" JOIN VIEW_ORG VO ON VO.ID=MN.CONTRACTOR_ID ");
sql.append(" GROUP BY VO.ID,VO.NAME,MN.LV_ID ");
sql.append(" ) MO ");
sql.append(" ) MP ");
sql.append(" GROUP BY MP.ID,MP.NAME ");
sql.append(" ORDER BY SUM(MP.SCORE) DESC,MP.ID ");
sql.append(" ) M ");
return super.getSQLALL(sql.toString());
}
}