knu project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

919 lines
62 KiB

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package kr.co.kihyun.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.jdo.PersistenceManager;
//import javax.jdo.Query;
import kr.co.kihyun.beans.entity.TotReport;
import kr.co.kihyun.beans.entity.TotReportProcess;
import kr.co.kihyun.lang.MInteger;
import kr.co.kihyun.lang.MString;
import kr.co.kihyun.service.vo.CodeVO;
import kr.co.kihyun.service.vo.ReportCountVO;
import kr.co.kihyun.service.vo.ReportTotalVO;
//import kr.co.kihyun.service.vo.TotDocVO;
import kr.co.kihyun.service.vo.TotReportVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author KWON,HAN
*/
public class PrssReportsService extends BaseService {
/**
* 기본생성자
*/
public PrssReportsService() {
}
/**
* 생성자
*
* @param pm PersistenceManager
*/
public PrssReportsService(PersistenceManager pm) {
super(pm);
}
private static final Logger LOG = LoggerFactory.getLogger(PrssReportsService.class);
/**
* 집계문서ID로 제출부서의 리스트를 반환한다.
* @param docId - 집계문서ID
* @return - 제출부서의 리스트
*/
public List getReportDeptListByDocId(Long docId) {
StringBuilder sbQuery = new StringBuilder();
sbQuery.append(" select rt.dept_id as value \n");
sbQuery.append(" , dt.name as code \n");
sbQuery.append(" from moumi_tot_report rt \n");
sbQuery.append(" , moumi_dept dt \n");
sbQuery.append(" , moumi_dept pt \n");
sbQuery.append(" where rt.doc_id = :docId \n");
sbQuery.append(" and rt.type = 0 \n");
sbQuery.append(" and (rt.del_type = '0' or rt.del_type = 'N') \n");
sbQuery.append(" and rt.doc_type = 0 \n");
sbQuery.append(" and rt.dept_id = dt.id(+) \n");
sbQuery.append(" and dt.organ = pt.id(+) \n");
Map lvParams = new HashMap();
lvParams.put("docId", docId);
// LOG.debug("PrssReportsService.getReportCountByDocId ======================\nquery=\n{}\n===============================", sbQuery.toString());
// LOG.debug("lvParams={}", lvParams);
return (List)this.executeQuery(sbQuery, lvParams, CodeVO.class);
}
/**
* 검색조건쿼리와 레코드개수조회쿼리를 생성하는 메소드(제출현황)
*
* @param params - 검색조건맵
* - docId
* - findOption
* - filterValue
* @참조페이지 - /webapp/totsys/common/inc/documents/report/report_list.jsp
*/
public void createPrssReportListSearchQuery(Map params) {
StringBuilder sbSearch = new StringBuilder();
// String docId = (String) params.get("docId");
// String dpId = (String) params.get("dpId");
TotReportProcess process = null;
if((Integer) params.get("listType") >= 0) {
process = TotReportProcess.values()[(Integer) params.get("listType")];
}
String findOption = (String) params.get("findOption");
String filterValue = (String) params.get("filterValue");
String howSort = (String) params.get("howSort");
String sort = (String) params.get("sort");
String file = (String) params.get("file");
String subDoc = (String) params.get("subDoc");
sbSearch.append(" SELECT '1' AS deptNo \n");
sbSearch.append(" , A0.DOC_ID AS docId \n");
sbSearch.append(" , A0.ID \n");
//sbSearch.append(" --, A0.MNG_CODE \n");
//sbSearch.append(" , A0.OWNER_EMAIL \n");
sbSearch.append(" , SP_CM_DEC_FU(A0.OWNER_NAME) AS ownerName \n"); /* .getOwnerName(pm) */
sbSearch.append(" , A0.OWNER_PHONE AS ownerPhone \n"); /* .getAssignType */
//sbSearch.append(" --, A0.ACPT_CODE \n");
//sbSearch.append(" --, A0.ACPT_DOC_CODE \n");
//sbSearch.append(" --, A0.APPRO \n");
sbSearch.append(" , A0.DOC_TYPE AS docType \n"); /* .getAssignType */
sbSearch.append(" , A0.DEL_TYPE AS delType \n"); /* .isDeleted() */
sbSearch.append(" , A0.DEPT_ID AS deptId \n"); /* .getDept(pm).getId() */
sbSearch.append(" , A0.USER_ID AS userId \n"); /* .getUser() .getUser(pm).getId() */
//sbSearch.append(" --, A0.NUM \n");
sbSearch.append(" , A0.PRSS \n");
sbSearch.append(" , A0.RECOG \n"); /* .getRecog() */
//sbSearch.append(" --, A0.REG_DATE \n");
//sbSearch.append(" --, A0.SECU_YN \n");
sbSearch.append(" , A0.DOWN_DOC_ID AS downDocId \n"); /* .getSlaveTotDoc() */
sbSearch.append(" , A0.SUBMIT_DATE AS submitDate \n"); /* .getSubmitDate() */
//sbSearch.append(" --, A0.TABLE_NUM \n");
sbSearch.append(" , A0.TYPE \n"); /* .getType() */
//sbSearch.append(" --, A0.ATTACHMENTS \n");
//sbSearch.append(" --, CAST(CAST(A0.ATTACHMENTS AS BLOB(4096)) as varchar(5000)) AS attachments \n");
sbSearch.append(" , CASE WHEN A0.ATTACHMENTS IS NOT NULL THEN 'Y' ELSE 'N' END isAttachments \n");
//sbSearch.append(" --, A0.NOTE \n");
//sbSearch.append(" --, CAST(CAST(A0.NOTE AS CLOB(4096)) as varchar(5000)) AS note \n");
sbSearch.append(" , CASE WHEN A0.NOTE IS NOT NULL THEN 'Y' ELSE 'N' END isNote \n");
sbSearch.append(" /* -------------------------------- */ \n");
//sbSearch.append(" --, B0.ID AS DP_ID \n");
sbSearch.append(" , B0.NAME AS deptName \n"); /* .getDept(pm).getName() */
sbSearch.append(" , B0.GRADE \n");
sbSearch.append(" , B0.FOUNDATION \n");
sbSearch.append(" , B0.ORGAN \n"); /* .getDept(pm).getOrgan(pm).getName() */
sbSearch.append(" , ( SELECT NAME \n");
sbSearch.append(" FROM MOUMI_DEPT \n");
//sbSearch.append(" WHERE ID = ( CASE WHEN B0.ID = B0.ORGAN AND B0.UPPER_DEPT IS NOT NULL \n");
sbSearch.append(" WHERE ID = ( CASE WHEN B0.ID = B0.ORGAN AND B0.UPPER_DEPT IS NULL \n");
sbSearch.append(" THEN ( SELECT ORGAN FROM MOUMI_DEPT WHERE ID = B0.UPPER_DEPT ) \n");
sbSearch.append(" ELSE B0.ORGAN END ) \n");
sbSearch.append(" ) AS organName \n");
sbSearch.append(" , B0.UPPER_DEPT AS upperDept \n"); /* .getDept(pm).getUpperDept(pm) */
sbSearch.append(" , ( SELECT NAME FROM MOUMI_DEPT WHERE ORGAN IS NOT NULL AND ID = B0.UPPER_DEPT) upperDeptName \n");
//sbSearch.append(" --, B0.ADDR \n");
//sbSearch.append(" --, B0.HANDY_ID \n");
//sbSearch.append(" --, B0.SEL_TYPE \n");
//sbSearch.append(" --, B0.IS_OUT \n");
//sbSearch.append(" --, B0.LOCATION \n");
//sbSearch.append(" --, B0.PASSCODE \n");
sbSearch.append(" , B0.PHONE AS deptPhone \n"); /* .getDept(pm).getPhone() */
//sbSearch.append(" --, B0.PRIORITY \n");
//sbSearch.append(" --, B0.RECO_IMG \n");
//sbSearch.append(" --, B0.ROOT_DEPT \n");
//sbSearch.append(" --, B0.SEC_ID \n");
//sbSearch.append(" --, B0.SEQNUM \n");
//sbSearch.append(" --, B0.SYS_AUTH \n");
sbSearch.append(" /* -------------------------------- */ \n");
//sbSearch.append(" --, U0.ID AS US_ID \n");
sbSearch.append(" , U0.PHONE AS userPhone \n"); /* getUser(pm).getPhone() */
sbSearch.append(" , A0.ATTACHMENTS_PATH as attachmentsPath \n");
// sbSearch.append(" , ROWNUMBER() OVER() AS rowNo \n");
sbSearch.append(" FROM MOUMI_TOT_REPORT A0 \n");
sbSearch.append(" LEFT OUTER JOIN MOUMI_DEPT B0 ON A0.DEPT_ID = B0.ID \n");
sbSearch.append(" LEFT OUTER JOIN MOUMI_MUSER U0 ON A0.USER_ID = U0.ID \n");
sbSearch.append(" ,MOUMI_DEPT G0 \n");
sbSearch.append(" WHERE A0.DOC_ID = :docId \n");
sbSearch.append(" AND A0.DEL_TYPE = 'N' \n");
sbSearch.append(" AND B0.ORGAN = G0.ID \n");
// if(process==TotReportProcess.NOT_REPORT) filter.append(" && process.ordinal()<TotReportProcess.COMP.ordinal()");
// else if(process == TotReportProcess.ALL);
// else {
// if(process==TotReportProcess.COMP) filter.append(" && process==prss ");
// else if(process==TotReportProcess.NOTE) filter.append(" && process==prss ");
// else filter.append(" && process==prss");
// }
if(process != null) {
if(process == TotReportProcess.NOT_REPORT) {
sbSearch.append(" AND A0.PRSS < " + TotReportProcess.COMP.ordinal() + " \n");
} else if(process == TotReportProcess.ALL) {
//Nothing
sbSearch.append(" AND A0.PRSS = A0.PRSS \n");
} else {
if(process == TotReportProcess.COMP) {
sbSearch.append(" AND A0.PRSS = " + process.ordinal() + " \n");
} else if(process == TotReportProcess.NOTE) {
sbSearch.append(" AND A0.PRSS = " + process.ordinal() + " \n");
} else {
sbSearch.append(" AND A0.PRSS = " + process.ordinal() + " \n");
}
}
}
// if(howSort!=null && !howSort.equals("")) filter.append("&& submitDate != null");
if(!MString.isNull(howSort) && !"".equals(howSort)) {
sbSearch.append(" AND A0.SUBMIT_DATE IS NOT NULL \n");
}
if(!MString.isNull(file) && !"".equals(file)) {
sbSearch.append(" AND A0.ATTACHMENTS IS NOT NULL \n");
}
if(!MString.isNull(subDoc) && !"".equals(subDoc)) {
sbSearch.append(" AND A0.DOWN_DOC_ID IS NOT NULL \n");
}
if (!MString.isNull(findOption) && !MString.isNull(filterValue)) {
if (findOption.equals("mDept.name")) {
sbSearch.append(" AND B0.NAME LIKE '%' || :filterValue || '%' \n");
} else if (findOption.equals("mUser.name")) {
sbSearch.append(" AND SP_CM_DEC_FU(A0.OWNER_NAME) LIKE '%' || :filterValue || '%' \n");
} else if (findOption.equals("mOrgan.name")) {
sbSearch.append(" AND G0.NAME LIKE '%' || :filterValue || '%' \n");
}
}
//레코드갯수를 구하는 부모클래스의 함수를 호출하기 위해서 멤버변수에 저장
//페이징처리함수 호출전에 등록 필요.
this.setCountQuery(sbSearch);
this.setParams(params);
// Map lvParams = new HashMap();
// lvParams.put("docId", (Long) params.get("docId"));
// this.setParams(lvParams);
if(!MString.isNull(howSort) && !"".equals(howSort)) {
sbSearch.append(" ORDER BY A0.SUBMIT_DATE DESC \n");
} else {
if (!MString.isNull(sort) && "1".equals(sort)) {
sbSearch.append(" ORDER BY B0.ORGAN \n");
sbSearch.append(" , B0.UPPER_DEPT \n");
sbSearch.append(" , B0.GRADE \n");
sbSearch.append(" , B0.FOUNDATION \n");
sbSearch.append(" , B0.NAME \n");
} else if ((!MString.isNull(sort) && "2".equals(sort)) || MString.isNull(sort)) {
sbSearch.append(" ORDER BY B0.GRADE \n");
sbSearch.append(" , B0.FOUNDATION \n");
sbSearch.append(" , B0.ORGAN \n");
sbSearch.append(" , B0.UPPER_DEPT \n");
sbSearch.append(" , B0.NAME \n");
}
}
//페이징처리쿼리생성함수 호출
this.setSearchQuery(sbSearch);
// LOG.debug("PrssReportsService.createPrssReportListSearchQuery ======================\nquery=\n{}\n===============================", sbSearch.toString());
// LOG.debug("params={}", params);
// LOG.debug("params={}", this.getParams());
}
/**
* 검색조건쿼리와 레코드개수조회쿼리를 생성하는 메소드(제출현황)
*
* @param params - 검색조건맵
* - docId
* - findOption
* - filterValue
* @참조페이지 - /webapp/totsys/common/inc/documents/tot_reports/total_reports.jsp
*/
public void createPrssTotalReportsSearchQuery(Map params) {
StringBuilder sbSearch = new StringBuilder();
Long docID = (Long)params.get("docId");
String dpId = (String) params.get("dpId");
String mngcode = (String) params.get("mngcode");
TotReportProcess process = null;
if((Integer) params.get("listType") >= 0) {
process = TotReportProcess.values()[(Integer) params.get("listType")];
}
String findOption = (String) params.get("findOption");
String filterValue = (String) params.get("filterValue");
String howSort = (String) params.get("howSort");
String file = (String) params.get("file");
String subDoc = (String) params.get("subDoc");
String sort = (String) params.get("sort");
sbSearch.append(" SELECT X.DEPTH_NO AS deptNo \n");
sbSearch.append(" , X.DOC_ID AS docId \n");
sbSearch.append(" , X.ID \n");
sbSearch.append(" , X.OWNER_NAME AS ownerName \n");
sbSearch.append(" , X.OWNER_PHONE AS ownerPhone \n");
sbSearch.append(" , X.DOC_TYPE AS docType \n");
sbSearch.append(" , X.DEL_TYPE AS delType \n");
sbSearch.append(" , X.DEPT_ID AS deptId \n");
sbSearch.append(" , X.USER_ID AS userId \n");
sbSearch.append(" , X.PRSS \n");
sbSearch.append(" , X.RECOG \n");
sbSearch.append(" , X.DOWN_DOC_ID AS downDocId \n");
sbSearch.append(" , X.SUBMIT_DATE AS submitDate \n");
sbSearch.append(" , X.TYPE \n");
sbSearch.append(" , X.IS_ATTACHMENTS AS isAttachments \n");
sbSearch.append(" , X.IS_NOTE AS isNote \n");
sbSearch.append(" /* -------------------------------- */ \n");
sbSearch.append(" , ( CASE WHEN DEPTH_NO = '1' THEN X.DEPT_NAME ELSE X.SLAVE_DEPT_NAME END ) AS deptName \n");
sbSearch.append(" , ( CASE WHEN DEPTH_NO = '1' THEN X.GRADE ELSE X.SLAVE_GRADE END ) AS grade \n");
sbSearch.append(" , ( CASE WHEN DEPTH_NO = '1' THEN X.FOUNDATION ELSE X.SLAVE_FOUNDATION END ) AS foundation \n");
sbSearch.append(" , ( CASE WHEN DEPTH_NO = '1' THEN X.ORGAN ELSE X.SLAVE_ORGAN END ) AS organ \n");
sbSearch.append(" , ( CASE WHEN DEPTH_NO = '1' THEN X.ORGAN_NAME ELSE X.SLAVE_ORGAN_NAME END ) AS organName \n");
sbSearch.append(" , ( CASE WHEN DEPTH_NO = '1' THEN X.UPPER_DEPT ELSE X.SLAVE_UPPER_DEPT END ) AS upperDept \n");
sbSearch.append(" , ( CASE WHEN DEPTH_NO = '1' THEN X.UPPER_DEPT_NAME ELSE X.SLAVE_UPPER_DEPT_NAME END ) AS upperDeptName \n");
sbSearch.append(" , ( CASE WHEN DEPTH_NO = '1' THEN X.DEPT_PHONE ELSE X.SLAVE_DEPT_PHONE END ) AS deptPhone \n");
sbSearch.append(" /* -------------------------------- */ \n");
sbSearch.append(" , X.attachmentsPath AS attachmentsPath \n");
sbSearch.append(" , X.USER_PHONE AS userPhone \n");
// sbSearch.append(" , ROWNUMBER() OVER() AS rowNo \n");
sbSearch.append(" FROM ( \n");
sbSearch.append(" SELECT '1' AS DEPTH_NO \n");
sbSearch.append(" , A0.DOC_ID \n");
sbSearch.append(" , A0.ID \n");
sbSearch.append(" , SP_CM_DEC_FU(A0.OWNER_NAME) AS OWNER_NAME \n");
sbSearch.append(" , A0.OWNER_PHONE \n");
sbSearch.append(" , A0.DOC_TYPE \n");
sbSearch.append(" , A0.DEL_TYPE \n");
sbSearch.append(" , A0.DEPT_ID \n");
sbSearch.append(" , A0.USER_ID \n");
sbSearch.append(" , A0.PRSS \n");
sbSearch.append(" , A0.RECOG \n");
sbSearch.append(" , A0.DOWN_DOC_ID \n");
sbSearch.append(" , A0.SUBMIT_DATE \n");
sbSearch.append(" , A0.TYPE \n");
sbSearch.append(" , CASE WHEN A0.ATTACHMENTS IS NOT NULL THEN 'Y' ELSE 'N' END IS_ATTACHMENTS \n");
sbSearch.append(" , CASE WHEN A0.NOTE IS NOT NULL THEN 'Y' ELSE 'N' END IS_NOTE \n");
sbSearch.append(" /* -------------------------------- */ \n");
sbSearch.append(" , B0.NAME AS DEPT_NAME \n");
sbSearch.append(" , B0.GRADE \n");
sbSearch.append(" , B0.FOUNDATION \n");
sbSearch.append(" , B0.ORGAN \n");
sbSearch.append(" , ( SELECT NAME \n");
sbSearch.append(" FROM MOUMI_DEPT \n");
//sbSearch.append(" WHERE ID = ( CASE WHEN B0.ID = B0.ORGAN AND B0.UPPER_DEPT IS NOT NULL \n");
sbSearch.append(" WHERE ID = ( CASE WHEN B0.ID = B0.ORGAN AND B0.UPPER_DEPT IS NULL \n");
sbSearch.append(" THEN ( SELECT ORGAN FROM MOUMI_DEPT WHERE ID = B0.UPPER_DEPT ) \n");
sbSearch.append(" ELSE B0.ORGAN END ) \n");
sbSearch.append(" ) AS ORGAN_NAME \n");
sbSearch.append(" , B0.UPPER_DEPT \n");
sbSearch.append(" , ( SELECT NAME FROM MOUMI_DEPT WHERE ORGAN IS NOT NULL AND ID = B0.UPPER_DEPT) AS UPPER_DEPT_NAME \n");
sbSearch.append(" , B0.PHONE AS DEPT_PHONE \n");
sbSearch.append(" , NULL AS SLAVE_DEPT_NAME \n");
sbSearch.append(" , NULL AS SLAVE_GRADE \n");
sbSearch.append(" , NULL AS SLAVE_FOUNDATION \n");
sbSearch.append(" , NULL AS SLAVE_ORGAN \n");
sbSearch.append(" , NULL AS SLAVE_ORGAN_NAME \n");
sbSearch.append(" , NULL AS SLAVE_UPPER_DEPT \n");
sbSearch.append(" , NULL AS SLAVE_UPPER_DEPT_NAME \n");
sbSearch.append(" , NULL AS SLAVE_DEPT_PHONE \n");
sbSearch.append(" /* -------------------------------- */ \n");
sbSearch.append(" , A0.ATTACHMENTS_PATH as attachmentsPath \n");
sbSearch.append(" , U0.PHONE AS USER_PHONE \n");
sbSearch.append(" FROM MOUMI_TOT_REPORT A0 \n");
sbSearch.append(" LEFT OUTER JOIN MOUMI_DEPT B0 ON A0.DEPT_ID = B0.ID \n");
sbSearch.append(" LEFT OUTER JOIN MOUMI_MUSER U0 ON A0.USER_ID = U0.ID \n");
sbSearch.append(" , MOUMI_DEPT G0 \n");
sbSearch.append(" WHERE A0.DOC_ID = :docId \n");
sbSearch.append(" AND A0.DEL_TYPE = 'N' \n");
if( dpId.contains("A00") && docID >= 1700000000){
if(mngcode == ""){
sbSearch.append(" AND A0.MNG_CODE is null \n");
}else{
sbSearch.append(" AND LOWER(A0.MNG_CODE) =:mngcode \n");//20160509 추가
}
}
sbSearch.append(" AND B0.ORGAN = G0.ID \n");
if(process != null) {
if(process == TotReportProcess.NOT_REPORT) {
sbSearch.append(" AND A0.PRSS < " + TotReportProcess.COMP.ordinal() + " \n");
} else if(process == TotReportProcess.ALL) {
//Nothing
sbSearch.append(" AND A0.PRSS = A0.PRSS \n");
} else {
if(process == TotReportProcess.COMP) {
sbSearch.append(" AND A0.PRSS = " + process.ordinal() + " \n");
} else if(process == TotReportProcess.NOTE) {
sbSearch.append(" AND A0.PRSS = " + process.ordinal() + " \n");
} else {
sbSearch.append(" AND A0.PRSS = " + process.ordinal() + " \n");
}
}
}
if(!MString.isNull(howSort) && !"".equals(howSort)) {
sbSearch.append(" AND A0.SUBMIT_DATE IS NOT NULL \n");
}
if(!MString.isNull(file) && !"".equals(file)) {
sbSearch.append(" AND A0.ATTACHMENTS IS NOT NULL \n");
}
if(!MString.isNull(subDoc) && !"".equals(subDoc)) {
sbSearch.append(" AND A0.DOWN_DOC_ID IS NOT NULL \n");
}
if (!MString.isNull(findOption) && !MString.isNull(filterValue)) {
if (findOption.equals("mDept.name")) {
sbSearch.append(" AND B0.NAME LIKE '%' || :filterValue || '%' \n");
} else if (findOption.equals("mUser.name")) {
sbSearch.append(" AND SP_CM_DEC_FU(A0.OWNER_NAME) LIKE '%' || :filterValue || '%' \n");
} else if (findOption.equals("mOrgan.name")) {
sbSearch.append(" AND G0.NAME LIKE '%' || :filterValue || '%' \n");
}
}
sbSearch.append(" \n");
sbSearch.append(" UNION ALL \n");
sbSearch.append(" \n");
sbSearch.append(" SELECT '2' AS DEPTH_NO \n");
sbSearch.append(" , A0.DOC_ID \n");
sbSearch.append(" , A0.ID \n");
sbSearch.append(" , SP_CM_DEC_FU(A0.OWNER_NAME) AS OWNER_NAME \n");
sbSearch.append(" , A0.OWNER_PHONE \n");
sbSearch.append(" , A0.DOC_TYPE \n");
sbSearch.append(" , A0.DEL_TYPE \n");
sbSearch.append(" , A0.DEPT_ID \n");
sbSearch.append(" , A0.USER_ID \n");
sbSearch.append(" , A0.PRSS \n");
sbSearch.append(" , A0.RECOG \n");
sbSearch.append(" , A0.DOWN_DOC_ID \n");
sbSearch.append(" , A0.SUBMIT_DATE \n");
sbSearch.append(" , A0.TYPE \n");
sbSearch.append(" , CASE WHEN A0.ATTACHMENTS IS NOT NULL THEN 'Y' ELSE 'N' END IS_ATTACHMENTS \n");
sbSearch.append(" , CASE WHEN A0.NOTE IS NOT NULL THEN 'Y' ELSE 'N' END IS_NOTE \n");
sbSearch.append(" /* -------------------------------- */ \n");
sbSearch.append(" , B1.NAME AS DEPT_NAME \n");
sbSearch.append(" , B1.GRADE \n");
sbSearch.append(" , B1.FOUNDATION \n");
sbSearch.append(" , B1.ORGAN \n");
sbSearch.append(" , NULL AS ORGAN_NAME \n");
sbSearch.append(" , B1.UPPER_DEPT AS UPPER_DEPT \n");
sbSearch.append(" , NULL AS UPPER_DEPT_NAME \n");
sbSearch.append(" , B1.PHONE AS DEPT_PHONE \n");
sbSearch.append(" , B0.NAME AS SLAVE_DEPT_NAME \n");
sbSearch.append(" , B0.GRADE AS SLAVE_GRADE \n");
sbSearch.append(" , B0.FOUNDATION AS SLAVE_FOUNDATION \n");
sbSearch.append(" , B0.ORGAN AS SLAVE_ORGAN \n");
sbSearch.append(" , ( SELECT NAME \n");
sbSearch.append(" FROM MOUMI_DEPT \n");
//sbSearch.append(" WHERE ID = ( CASE WHEN B0.ID = B0.ORGAN AND B0.UPPER_DEPT IS NOT NULL \n");
sbSearch.append(" WHERE ID = ( CASE WHEN B0.ID = B0.ORGAN AND B0.UPPER_DEPT IS NULL \n");
sbSearch.append(" THEN ( SELECT ORGAN FROM MOUMI_DEPT WHERE ID = B0.UPPER_DEPT ) \n");
sbSearch.append(" ELSE B0.ORGAN END ) \n");
sbSearch.append(" ) AS SLAVE_ORGAN_NAME \n");
sbSearch.append(" , B0.UPPER_DEPT AS SLAVE_UPPER_DEPT \n");
sbSearch.append(" , ( SELECT NAME FROM MOUMI_DEPT WHERE ORGAN IS NOT NULL AND ID = B0.UPPER_DEPT) AS SLAVE_UPPER_DEPT_NAME \n");
sbSearch.append(" , A0.ATTACHMENTS_PATH as attachmentsPath \n");
sbSearch.append(" , B0.PHONE AS SLAVE_DEPT_PHONE \n");
sbSearch.append(" /* -------------------------------- */ \n");
sbSearch.append(" , U0.PHONE AS USER_PHONE \n");
sbSearch.append(" FROM MOUMI_TOT_REPORT A0 \n");
sbSearch.append(" LEFT OUTER JOIN MOUMI_DEPT B0 ON A0.DEPT_ID = B0.ID \n");
sbSearch.append(" LEFT OUTER JOIN MOUMI_MUSER U0 ON A0.USER_ID = U0.ID \n");
sbSearch.append(" , MOUMI_TOT_REPORT Z \n");
sbSearch.append(" LEFT OUTER JOIN MOUMI_DEPT B1 ON Z.DEPT_ID = B1.ID \n");
sbSearch.append(" WHERE A0.DOC_ID IN ( \n");
sbSearch.append(" SELECT A0.DOWN_DOC_ID \n");
sbSearch.append(" FROM MOUMI_TOT_REPORT A0 \n");
sbSearch.append(" LEFT OUTER JOIN MOUMI_DEPT B0 ON A0.DEPT_ID = B0.ID \n");
sbSearch.append(" , MOUMI_DEPT G0 \n");
sbSearch.append(" WHERE A0.DOC_ID = :docId \n");
sbSearch.append(" AND A0.DEL_TYPE = 'N' \n");
if( dpId.contains("A00") && docID >= 1700000000){//교육부 생성 문서시 제출기관 조회조건 추가
if(mngcode == ""){
sbSearch.append(" AND A0.MNG_CODE is null \n");
}else{
sbSearch.append(" AND LOWER(A0.MNG_CODE) =:mngcode \n");//20160509 추가
}
}
sbSearch.append(" AND A0.DOWN_DOC_ID IS NOT NULL \n");
sbSearch.append(" AND B0.ORGAN = G0.ID \n");
if(process != null) {
if(process == TotReportProcess.NOT_REPORT) {
sbSearch.append(" AND A0.PRSS < " + TotReportProcess.COMP.ordinal() + " \n");
} else if(process == TotReportProcess.ALL) {
//Nothing
sbSearch.append(" AND A0.PRSS = A0.PRSS \n");
} else {
if(process == TotReportProcess.COMP) {
sbSearch.append(" AND A0.PRSS = " + process.ordinal() + " \n");
} else if(process == TotReportProcess.NOTE) {
sbSearch.append(" AND A0.PRSS = " + process.ordinal() + " \n");
} else {
sbSearch.append(" AND A0.PRSS = " + process.ordinal() + " \n");
}
}
}
if(!MString.isNull(howSort) && !"".equals(howSort)) {
sbSearch.append(" AND A0.SUBMIT_DATE IS NOT NULL \n");
}
if(!MString.isNull(file) && !"".equals(file)) {
sbSearch.append(" AND A0.ATTACHMENTS IS NOT NULL \n");
}
if(!MString.isNull(subDoc) && !"".equals(subDoc)) {
sbSearch.append(" AND A0.DOWN_DOC_ID IS NOT NULL \n");
}
if (!MString.isNull(findOption) && !MString.isNull(filterValue)) {
if (findOption.equals("mDept.name")) {
sbSearch.append(" AND B0.NAME LIKE '%' || :filterValue || '%' \n");
} else if (findOption.equals("mUser.name")) {
sbSearch.append(" AND SP_CM_DEC_FU(A0.OWNER_NAME) LIKE '%' || :filterValue || '%' \n");
} else if (findOption.equals("mOrgan.name")) {
sbSearch.append(" AND G0.NAME LIKE '%' || :filterValue || '%' \n");
}
}
sbSearch.append(" ) \n");
sbSearch.append(" AND A0.DEL_TYPE = 'N' \n");
sbSearch.append(" AND A0.DOC_ID = Z.DOWN_DOC_ID \n");
sbSearch.append(" ) X \n");
//레코드갯수를 구하는 부모클래스의 함수를 호출하기 위해서 멤버변수에 저장
//페이징처리함수 호출전에 등록 필요.
this.setCountQuery(sbSearch);
this.setParams(params);
// Map lvParams = new HashMap();
// lvParams.put("docId", (Long) params.get("docId"));
// this.setParams(lvParams);
if(!MString.isNull(howSort) && !"".equals(howSort)) {
sbSearch.append(" ORDER BY X.SUBMIT_DATE DESC \n");
} else {
if (!MString.isNull(sort) && "1".equals(sort)) {
sbSearch.append(" ORDER BY X.ORGAN \n");
sbSearch.append(" , X.UPPER_DEPT \n");
sbSearch.append(" , X.GRADE \n");
sbSearch.append(" , X.FOUNDATION \n");
sbSearch.append(" , X.DEPT_NAME \n");
sbSearch.append(" , X.DEPTH_NO \n");
sbSearch.append(" , X.SLAVE_ORGAN \n");
sbSearch.append(" , X.SLAVE_UPPER_DEPT \n");
sbSearch.append(" , X.SLAVE_GRADE \n");
sbSearch.append(" , X.SLAVE_FOUNDATION \n");
sbSearch.append(" , X.SLAVE_DEPT_NAME \n");
} else if ((!MString.isNull(sort) && "2".equals(sort)) || MString.isNull(sort)) {
sbSearch.append(" ORDER BY X.GRADE \n");
sbSearch.append(" , X.FOUNDATION \n");
sbSearch.append(" , X.ORGAN \n");
sbSearch.append(" , X.UPPER_DEPT \n");
sbSearch.append(" , X.DEPT_NAME \n");
sbSearch.append(" , X.DEPTH_NO \n");
sbSearch.append(" , X.SLAVE_GRADE \n");
sbSearch.append(" , X.SLAVE_FOUNDATION \n");
sbSearch.append(" , X.SLAVE_ORGAN \n");
sbSearch.append(" , X.SLAVE_UPPER_DEPT \n");
sbSearch.append(" , X.SLAVE_DEPT_NAME \n");
/* 제출일시로 조회하는 기능 추가 2015.09.21 jskim */
} else if ((!MString.isNull(sort) && "3".equals(sort)) || MString.isNull(sort)) {
sbSearch.append(" ORDER BY CASE WHEN X.SUBMIT_DATE IS NULL THEN 1 ELSE 0 END ASC, X.SUBMIT_DATE ASC \n");
}
}
//페이징처리쿼리생성함수 호출
this.setSearchQuery(sbSearch);
LOG.debug("PrssReportsService.createPrssTotalReportsSearchQuery ======================\nquery=\n{}\n===============================", sbSearch.toString());
LOG.debug("params={}", params);
LOG.debug("params={}", this.getParams());
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ createPrssTotalReportsSearchQuery() END
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/**
* 집계문서ID로 집계현황의 진행상태별 현황을 반환한다.
* @param docId - 집계문서ID
* @return - 집계현황의 진행상태별 현황
*/
public List getReportCountByDocId(Long docId) {
StringBuilder sbQuery = new StringBuilder();
sbQuery.append(" SELECT MAX(RT.DOC_ID) AS docId \n");
sbQuery.append(" , COUNT( RT.DOC_ID ) AS allCount \n");
sbQuery.append(" , SUM( CASE WHEN RT.PRSS = 6 THEN 1 ELSE 0 END ) AS sendCount \n");
sbQuery.append(" , SUM( CASE WHEN RT.PRSS = 12 AND DATA IS NOT NULL THEN 1 ELSE 0 END ) AS notCount \n");
sbQuery.append(" , SUM( CASE WHEN RT.PRSS IN (14) THEN 1 ELSE 0 END ) AS noteCount \n");
sbQuery.append(" FROM MOUMI_TOT_REPORT RT \n");
sbQuery.append(" WHERE RT.DOC_ID = :docId \n");
sbQuery.append(" AND (RT.DEL_TYPE = '0' OR RT.DEL_TYPE= 'N' ) \n");
Map lvParams = new HashMap();
lvParams.put("docId", docId);
// LOG.debug("PrssReportsService.getReportCountByDocId ======================\nquery=\n{}\n===============================", sbQuery.toString());
// LOG.debug("lvParams={}", lvParams);
return (List)this.executeQuery(sbQuery, lvParams, ReportCountVO.class);
}
/**
* 집계문서ID로 제출현황의 기관별 집계표를 반환한다.
* @param docId - 집계문서ID
* @return - 제출현황의 기관별 집계표
*/
public List getReportTotalByDocId(Long docId) {
StringBuilder sbQuery = new StringBuilder();
sbQuery.append(" SELECT MAX(A0.DOC_ID) AS docId \n");
sbQuery.append(" , COUNT( A0.DOC_ID ) AS allCnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN B0.GRADE IS NULL THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN B1.GRADE IS NULL THEN 1 ELSE 0 END ) END ) AS allOrganCnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN B0.GRADE = 1 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN B1.GRADE = 1 THEN 1 ELSE 0 END ) END ) AS allGrade1Cnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN B0.GRADE = 2 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN B1.GRADE = 2 THEN 1 ELSE 0 END ) END ) AS allGrade2Cnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN B0.GRADE = 3 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN B1.GRADE = 3 THEN 1 ELSE 0 END ) END ) AS allGrade3Cnt \n");
// 고등학교(grade="4")가 기타학교로 합쳐서 나오지 말고, 별도로 조회하도록 수정. 2014.12.18 by YOUNGJUN,CHO
//sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN B0.GRADE > 4 THEN 1 ELSE 0 END ) \n");
//sbQuery.append(" ELSE ( CASE WHEN B1.GRADE > 4 THEN 1 ELSE 0 END ) END ) AS allGrade4Cnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN B0.GRADE = 4 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN B1.GRADE = 4 THEN 1 ELSE 0 END ) END ) AS allGrade4Cnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN B0.GRADE >= 5 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN B1.GRADE >= 5 THEN 1 ELSE 0 END ) END ) AS allGrade5Cnt \n");
sbQuery.append(" /*----------------------*/ \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN A0.PRSS = 6 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN A1.PRSS = 6 THEN 1 ELSE 0 END ) END ) AS totReportCnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN A0.PRSS = 6 AND B0.GRADE IS NULL THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN A1.PRSS = 6 AND B1.GRADE IS NULL THEN 1 ELSE 0 END ) END ) AS organReportCnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN A0.PRSS = 6 AND B0.GRADE = 1 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN A1.PRSS = 6 AND B1.GRADE = 1 THEN 1 ELSE 0 END ) END ) AS grade1ReportCnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN A0.PRSS = 6 AND B0.GRADE = 2 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN A1.PRSS = 6 AND B1.GRADE = 2 THEN 1 ELSE 0 END ) END ) AS grade2ReportCnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN A0.PRSS = 6 AND B0.GRADE = 3 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN A1.PRSS = 6 AND B1.GRADE = 3 THEN 1 ELSE 0 END ) END ) AS grade3ReportCnt \n");
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN A0.PRSS = 6 AND B0.GRADE = 4 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN A1.PRSS = 6 AND B1.GRADE = 4 THEN 1 ELSE 0 END ) END ) AS grade4ReportCnt \n");
// 고등학교(grade="4")가 기타학교로 합쳐서 나오지 말고, 별도로 조회하도록 수정. 2014.12.18 by YOUNGJUN,CHO
sbQuery.append(" , SUM( CASE WHEN A0.DOWN_DOC_ID IS NULL THEN ( CASE WHEN A0.PRSS = 6 AND B0.GRADE >= 5 THEN 1 ELSE 0 END ) \n");
sbQuery.append(" ELSE ( CASE WHEN A1.PRSS = 6 AND B1.GRADE >= 5 THEN 1 ELSE 0 END ) END ) AS grade5ReportCnt \n");
sbQuery.append(" FROM MOUMI_TOT_REPORT A0 \n");
sbQuery.append(" , MOUMI_DEPT B0 \n");
sbQuery.append(" , MOUMI_TOT_REPORT A1 \n");
sbQuery.append(" , MOUMI_DEPT B1 \n");
sbQuery.append(" WHERE A0.DOC_ID = :docId \n");
sbQuery.append(" AND A0.DEL_TYPE = 'N' \n");
sbQuery.append(" AND A0.DEPT_ID = B0.ID(+) \n");
sbQuery.append(" AND A0.DOWN_DOC_ID = A1.DOC_ID(+) \n");
sbQuery.append(" AND A1.DEL_TYPE(+) = 'N' \n");
sbQuery.append(" AND A1.DEPT_ID = B1.ID(+) \n");
// sbQuery.append(" SELECT MAX(A0.DOC_ID) AS docId \n");
// sbQuery.append(" , COUNT( A0.DOC_ID ) AS allCnt \n");
// sbQuery.append(" , SUM( CASE WHEN B0.GRADE IS NULL THEN 1 ELSE 0 END ) AS allOrganCnt \n");
// sbQuery.append(" , SUM( CASE WHEN B0.GRADE = 1 THEN 1 ELSE 0 END ) AS allGrade1Cnt \n");
// sbQuery.append(" , SUM( CASE WHEN B0.GRADE = 2 THEN 1 ELSE 0 END ) AS allGrade2Cnt \n");
// sbQuery.append(" , SUM( CASE WHEN B0.GRADE = 3 THEN 1 ELSE 0 END ) AS allGrade3Cnt \n");
// sbQuery.append(" , SUM( CASE WHEN B0.GRADE > 4 THEN 1 ELSE 0 END ) AS allGrade4Cnt \n");
// sbQuery.append(" , SUM( CASE WHEN A0.PRSS = 6 THEN 1 ELSE 0 END ) AS totReportCnt \n");
// sbQuery.append(" , SUM( CASE WHEN A0.PRSS = 6 AND B0.GRADE IS NULL THEN 1 ELSE 0 END ) AS organReportCnt \n");
// sbQuery.append(" , SUM( CASE WHEN A0.PRSS = 6 AND B0.GRADE = 1 THEN 1 ELSE 0 END ) AS grade1ReportCnt \n");
// sbQuery.append(" , SUM( CASE WHEN A0.PRSS = 6 AND B0.GRADE = 2 THEN 1 ELSE 0 END ) AS grade2ReportCnt \n");
// sbQuery.append(" , SUM( CASE WHEN A0.PRSS = 6 AND B0.GRADE = 3 THEN 1 ELSE 0 END ) AS grade3ReportCnt \n");
// sbQuery.append(" , SUM( CASE WHEN A0.PRSS = 6 AND B0.GRADE = 4 THEN 1 ELSE 0 END ) AS grade4ReportCnt \n");
// sbQuery.append(" FROM MOUMI_TOT_REPORT A0 \n");
// sbQuery.append(" LEFT OUTER JOIN MOUMI_DEPT B0 ON A0.DEPT_ID = B0.ID \n");
// sbQuery.append(" WHERE A0.DOC_ID = :docId \n");
// sbQuery.append(" AND A0.DEL_TYPE = 'N' \n");
Map lvParams = new HashMap();
lvParams.put("docId", docId);
// LOG.debug("PrssReportsService.getReportTotalByDocId ======================\nquery=\n{}\n===============================", sbQuery.toString());
// LOG.debug("lvParams={}", lvParams);
return (List)this.executeQuery(sbQuery, lvParams, ReportTotalVO.class);
}
/**
* 집계자료ID로 제출자료를 조회하는 메소드
* @param docId
* @param prss
* @param grade
* @return
*/
public List getTotReportByDocId(Long docId, TotReportProcess prss, String grade) {
StringBuilder sbQuery = new StringBuilder();
sbQuery.append(" SELECT '1' AS depthNo \n");
sbQuery.append(" , A0.ID \n");
//sbQuery.append(" --, A0.MNG_CODE \n");
sbQuery.append(" , A0.OWNER_EMAIL AS ownerEmail \n");
sbQuery.append(" , A0.OWNER_NAME AS ownerName \n");
sbQuery.append(" , A0.OWNER_PHONE AS ownerPhone \n");
sbQuery.append(" , A0.ACPT_CODE AS acptCode \n");
sbQuery.append(" , A0.ACPT_DOC_CODE AS acptDocCode \n");
sbQuery.append(" , A0.APPRO \n");
sbQuery.append(" , A0.DOC_TYPE AS docType \n");
sbQuery.append(" , A0.DEL_TYPE AS delType \n");
sbQuery.append(" , A0.USER_ID AS userId \n");
sbQuery.append(" , A0.NUM \n");
sbQuery.append(" , A0.PRSS \n");
sbQuery.append(" , A0.RECOG \n");
sbQuery.append(" , A0.REG_DATE AS regDate \n");
sbQuery.append(" , A0.SECU_YN AS secuYn \n");
sbQuery.append(" , A0.SUBMIT_DATE AS submitDate \n");
sbQuery.append(" , A0.TABLE_NUM AS tableNum \n");
sbQuery.append(" , A0.TYPE \n");
sbQuery.append(" , B0.GRADE \n");
sbQuery.append(" FROM MOUMI_TOT_REPORT A0 \n");
sbQuery.append(" LEFT OUTER JOIN MOUMI_DEPT B0 ON A0.DEPT_ID = B0.ID \n");
sbQuery.append(" WHERE A0.DOC_ID = :docId \n");
sbQuery.append(" AND A0.DEL_TYPE = 'N' \n");
sbQuery.append(" AND A0.PRSS = :prss \n");
sbQuery.append(" AND A0.DOWN_DOC_ID IS NULL \n");
if(!MString.isNull(grade) && !"".equals(grade)) {
if("organ".equals(grade)) {
sbQuery.append(" AND B0.GRADE IS NULL \n");
// 고등학교(grade="4")가 기타학교로 합쳐서 나오지 말고, 별도로 조회하도록 수정. 2014.12.18 by YOUNGJUN,CHO
//} else if("4".equals(grade)) {
} else if("5".equals(grade)) {
sbQuery.append(" AND B0.GRADE >= :grade \n");
} else {
sbQuery.append(" AND B0.GRADE = :grade \n");
}
}
sbQuery.append(" \n");
sbQuery.append(" UNION ALL \n");
sbQuery.append(" \n");
sbQuery.append(" SELECT '2' AS depthNo \n");
sbQuery.append(" , A0.ID \n");
//sbQuery.append(" --, A0.MNG_CODE \n");
sbQuery.append(" , A0.OWNER_EMAIL AS ownerEmail \n");
sbQuery.append(" , A0.OWNER_NAME AS ownerName \n");
sbQuery.append(" , A0.OWNER_PHONE AS ownerPhone \n");
sbQuery.append(" , A0.ACPT_CODE AS acptCode \n");
sbQuery.append(" , A0.ACPT_DOC_CODE AS acptDocCode \n");
sbQuery.append(" , A0.APPRO \n");
sbQuery.append(" , A0.DOC_TYPE AS docType \n");
sbQuery.append(" , A0.DEL_TYPE AS delType \n");
sbQuery.append(" , A0.USER_ID AS userId \n");
sbQuery.append(" , A0.NUM \n");
sbQuery.append(" , A0.PRSS \n");
sbQuery.append(" , A0.RECOG \n");
sbQuery.append(" , A0.REG_DATE AS regDate \n");
sbQuery.append(" , A0.SECU_YN AS secuYn \n");
sbQuery.append(" , A0.SUBMIT_DATE AS submitDate \n");
sbQuery.append(" , A0.TABLE_NUM AS tableNum \n");
sbQuery.append(" , A0.TYPE \n");
sbQuery.append(" , B0.GRADE \n");
sbQuery.append(" FROM MOUMI_TOT_REPORT A0 \n");
sbQuery.append(" LEFT OUTER JOIN MOUMI_DEPT B0 ON A0.DEPT_ID = B0.ID \n");
sbQuery.append(" WHERE A0.DOC_ID IN ( \n");
sbQuery.append(" SELECT A0.DOWN_DOC_ID \n");
sbQuery.append(" FROM MOUMI_TOT_REPORT A0 \n");
sbQuery.append(" LEFT OUTER JOIN MOUMI_DEPT B0 ON A0.DEPT_ID = B0.ID \n");
sbQuery.append(" WHERE A0.DOC_ID = :docId \n");
sbQuery.append(" AND A0.DEL_TYPE = 'N' \n");
sbQuery.append(" AND A0.DOWN_DOC_ID IS NOT NULL \n");
sbQuery.append(" ) \n");
sbQuery.append(" AND A0.DEL_TYPE = 'N' \n");
sbQuery.append(" AND A0.PRSS = :prss \n");
if(!MString.isNull(grade) && !"".equals(grade)) {
if("organ".equals(grade)) {
sbQuery.append(" AND B0.GRADE IS NULL \n");
// 고등학교(grade="4")가 기타학교로 합쳐서 나오지 말고, 별도로 조회하도록 수정. 2014.12.18 by YOUNGJUN,CHO
//} else if("4".equals(grade)) {
} else if("5".equals(grade)) {
sbQuery.append(" AND B0.GRADE >= :grade \n");
} else {
sbQuery.append(" AND B0.GRADE = :grade \n");
}
}
sbQuery.append(" ORDER BY depthNo, GRADE \n");
// sbQuery.append(" SELECT A0.ID \n");
// //sbQuery.append(" --, A0.MNG_CODE \n");
// sbQuery.append(" , A0.OWNER_EMAIL AS ownerEmail \n");
// sbQuery.append(" , A0.OWNER_NAME AS ownerName \n");
// sbQuery.append(" , A0.OWNER_PHONE AS ownerPhone \n");
// sbQuery.append(" , A0.ACPT_CODE AS acptCode \n");
// sbQuery.append(" , A0.ACPT_DOC_CODE AS acptDocCode \n");
// sbQuery.append(" , A0.APPRO \n");
// sbQuery.append(" , A0.DOC_TYPE AS docType \n");
// sbQuery.append(" , A0.DEL_TYPE AS delType \n");
// sbQuery.append(" , A0.USER_ID AS userId \n");
// sbQuery.append(" , A0.NUM \n");
// sbQuery.append(" , A0.PRSS \n");
// sbQuery.append(" , A0.RECOG \n");
// sbQuery.append(" , A0.REG_DATE AS regDate \n");
// sbQuery.append(" , A0.SECU_YN AS secuYn \n");
// sbQuery.append(" , A0.SUBMIT_DATE AS submitDate \n");
// sbQuery.append(" , A0.TABLE_NUM AS tableNum \n");
// sbQuery.append(" , A0.TYPE \n");
// sbQuery.append(" , B0.GRADE \n");
// sbQuery.append(" FROM MOUMI_TOT_REPORT A0 \n");
// sbQuery.append(" LEFT OUTER JOIN MOUMI_DEPT B0 ON A0.DEPT_ID = B0.ID \n");
// sbQuery.append(" WHERE A0.DOC_ID = :docId \n");
// sbQuery.append(" AND A0.DEL_TYPE = 'N' \n");
// sbQuery.append(" AND A0.PRSS = :prss \n");
// if(!MString.isNull(grade) && !"".equals(grade)) {
// if("organ".equals(grade)) {
// sbQuery.append(" AND B0.GRADE IS NULL \n");
// } else if("4".equals(grade)) {
// sbQuery.append(" AND B0.GRADE >= :grade \n");
// } else {
// sbQuery.append(" AND B0.GRADE = :grade \n");
// }
// }
// sbQuery.append(" ORDER BY B0.GRADE \n");
Map lvParams = new HashMap();
lvParams.put("docId", docId);
lvParams.put("prss", prss.ordinal());
if(!MString.isNull(grade) && !"".equals(grade)) {
if("organ".equals(grade)) {
//Nothing
lvParams.put("grade", 0);
} else {
lvParams.put("grade", MInteger.parseInt(grade));
}
}
// LOG.debug("PrssReportsService.getTotReportByDocId ======================\nquery=\n{}\n===============================", sbQuery.toString());
// LOG.debug("lvParams={}", lvParams);
// System.out.println("grade = "+grade);
return (List)this.executeQuery(sbQuery, lvParams, TotReportVO.class);
}
public List<TotReport> getRecursiveAllReports(Long docId, TotReportProcess prss, String grade) {
List<TotReport> resultReportList = new ArrayList<TotReport>();
List list = null;
list = this.getTotReportByDocId(docId, prss, grade);
if( list != null && list.size() > 0 ) {
for(Object obj : list) {
TotReportVO reportVO = (TotReportVO)obj;
TotReport totReport = pm.getObjectById(TotReport.class, reportVO.getId());
//System.out.println("reportVO.getId() = "+reportVO.getId());
if (totReport.getSlaveTotDoc() == null) {
resultReportList.add(totReport);
} else {
//List<TotReport> slaveReportList = totReport.getSlaveTotDoc().getAllReports(pm, filterMap, false);
//resultReportList.addAll(getRecursiveAllReports(pm, slaveReportList, filterMap));
//System.out.println("totReport.getSlaveTotDoc().getId() = "+totReport.getSlaveTotDoc().getId());
List<TotReport> slaveReportList = this.getRecursiveAllReports(totReport.getSlaveTotDoc().getId(), prss ,"");
resultReportList.addAll(slaveReportList);
}
}
}
return resultReportList;
}
//20160426 추가
/**
* 검색조건쿼리와 레코드개수조회쿼리를 생성하는 메소드(교육청 자료 조회 관련 IR_MOUMI_TOT_REPORT 테이블에서 IS_APLIED에 따른 데이타 조회)
* @param params - 검색조건맵
* @참조페이지 - doc_list.jsp
*/
public void createIR_TOT_REPORT_SearchQuery(Map params) {
StringBuilder sbSearch = new StringBuilder();
//String findOption = (String) params.get("findOption");
sbSearch.append(" SELECT * \n");
sbSearch.append(" FROM IFDBMGR.IR_MOUMI_TOT_REPORT \n");
sbSearch.append(" WHERE DOC_ID = :docID \n");
sbSearch.append(" AND IS_APLIED = :isAplied \n");
//레코드갯수를 구하는 부모클래스의 함수를 호출하기 위해서 멤버변수에 저장
this.setCountQuery(sbSearch);
//조건맵을 멤버변수에 저장
this.setParams(params);
//검색쿼리를 멤버변수에 저장
//this.setSearchQuery(sbSearch);
// LOG.debug("접수자료 query={}", sbSearch.toString());
}
//20160502 추가
/**
* 검색조건쿼리와 레코드 조회 쿼리를 생성하는 메소드(교육청 자료 조회 관련 IR_MOUMI_TOT_REPORT 테이블에서 IS_APLIED에 따른 데이타 조회)
* @param params - 검색조건맵
* @참조페이지 - report_list.jsp / total_reports.jsp
*/
public void createIR_TOT_REPORT_ID_Srch(Map params) {
StringBuilder sbSearch = new StringBuilder();
//String findOption = (String) params.get("findOption");
sbSearch.append(" SELECT distinct A.id \n");
sbSearch.append(" FROM IFDBMGR.IR_MOUMI_TOT_REPORT A \n");
sbSearch.append(" WHERE DOC_ID = :docID \n");
sbSearch.append(" AND IS_APLIED = :isAplied \n");
//레코드갯수를 구하는 부모클래스의 함수를 호출하기 위해서 멤버변수에 저장
this.setSearchQuery(sbSearch);
//조건맵을 멤버변수에 저장
this.setParams(params);
//검색쿼리를 멤버변수에 저장
//this.setSearchQuery(sbSearch);
// LOG.debug("접수자료 query={}", sbSearch.toString());
}
}