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.
 
 
 
 
 
 

137 lines
7.4 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.Map;
import javax.jdo.PersistenceManager;
import kr.co.kihyun.beans.entity.AccessAuth;
import kr.co.kihyun.beans.entity.SysAuth;
import kr.co.kihyun.lang.MString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author KWON,HAN
*/
public class FormService extends BaseService {
/**
* 기본생성자
*/
public FormService() {
}
/**
* 생성자
*
* @param pm PersistenceManager
*/
public FormService(PersistenceManager pm) {
super(pm);
}
private static final Logger LOG = LoggerFactory.getLogger(FormService.class);
/**
* 검색조건쿼리와 레코드개수조회쿼리를 생성하는 메소드(제출완료)
*
* @param params - 검색조건맵
* - userId
* - deptId
* - sysauth
* - findOption
* - filterValue
* @param docType - ALL:전체, PRSS:집계진행자료, REG:미진행자료, END:종료자료,
* @param exeType - A:전체, D:집계자료, R:제출자료
* @참조페이지 - doc_list.jsp
*/
public void createFormListSearchQuery(Map params) {
StringBuilder sbSearch = new StringBuilder();
//String userId = (String) params.get("userId");
//String deptId = (String) params.get("deptId");
SysAuth sysauth = SysAuth.values()[(Integer) params.get("sysAuth")];
String findOption = (String) params.get("findOption");
String filterValue = (String) params.get("filterValue");
String stDate = (String) params.get("stDate");
String edDate = (String) params.get("edDate");
sbSearch.append(" SELECT A0.ID \n");
sbSearch.append(" , A0.MNG_CODE AS mngCode \n");
sbSearch.append(" , A0.OWNER_EMAIL AS ownerEmail \n");
sbSearch.append(" , SP_CM_DEC_FU(A0.OWNER_NAME) AS ownerName \n");
sbSearch.append(" , A0.OWNER_PHONE AS ownerPhone \n");
sbSearch.append(" , A0.ACC_AUTH AS accAuth \n");
sbSearch.append(" , A0.APPEND_TYPE AS appendType \n");
sbSearch.append(" , A0.AUTO_RTN_YN AS autoRtnYn \n");
sbSearch.append(" , A0.END_DATE AS endDate \n");
sbSearch.append(" , A0.EXEC_CODE AS execCode \n");
// sbSearch.append(" , A0.GROUP \n");
sbSearch.append(" , A0.FIX_NUM AS fixNum \n");
sbSearch.append(" , A0.HANDY_NAME AS handyName \n");
sbSearch.append(" , A0.DEL_TYPE AS delType \n");
sbSearch.append(" , A0.USER_ID AS userId \n");
// sbSearch.append(" --, ( SELECT sp_cm_dec_fu(user_nm_encpt) FROM TN_SYMUSMUM001 WHERE usrid = A0.USER_ID ) AS userName \n");
sbSearch.append(" , A0.DEPT_ID AS deptId \n");
sbSearch.append(" , ( SELECT B0.NAME FROM MOUMI_DEPT B0 WHERE B0.ID = A0.DEPT_ID AND ROWNUM = 1) AS deptName \n");
sbSearch.append(" , A0.NAME \n");
sbSearch.append(" , A0.PERIODICAL_DOC_YN AS periodicalDocYn \n");
sbSearch.append(" , A0.REG_DATE AS regDate \n");
sbSearch.append(" , A0.START_DATE AS startDate \n");
sbSearch.append(" , A0.TOT_RANGE AS totRange \n");
sbSearch.append(" , A0.GROUP_ID AS groupId \n");
// sbSearch.append(" , ROWNUMBER() OVER() AS rowNo \n");
sbSearch.append(" FROM MOUMI_TOT_DOC A0, MOUMI_DEPT DT, MOUMI_DEPT GR \n");
sbSearch.append(" WHERE A0.DEL_TYPE = 'N' \n");
sbSearch.append(" AND A0.GROUP_ID = 1 \n");
sbSearch.append(" AND A0.DEPT_ID = DT.ID \n");
sbSearch.append(" AND DT.ORGAN = GR.ID \n");
sbSearch.append(" AND A0.APPEND_TYPE != 1 \n"); //0.서식+파일, 1.파일, 2.서식함활용, 3.서식복사(시스템서식)
if(sysauth != SysAuth.SYSADM) {
sbSearch.append(" AND ((A0.USER_ID = :userId) \n");
sbSearch.append(" OR \n");
sbSearch.append(" (A0.DEPT_ID = :deptId AND A0.ACC_AUTH = " + AccessAuth.DEPT.ordinal() + ") \n");
sbSearch.append(" OR \n");
sbSearch.append(" (A0.ACC_AUTH = " + AccessAuth.PART.ordinal() + " \n");
sbSearch.append(" AND GR.ID = ( SELECT GR.ID FROM MOUMI_MUSER US, MOUMI_DEPT DT, MOUMI_DEPT GR \n");
sbSearch.append(" WHERE US.ID = :userId AND US.DEPT_ID = DT.ID AND DT.ORGAN = GR.ID ) \n");
sbSearch.append(" ) \n");
sbSearch.append(" OR (A0.ACC_AUTH = " + AccessAuth.ALL.ordinal() + ") \n");
sbSearch.append(" ) \n");
}
if (!MString.isNull(findOption)) {
if (findOption.equals("name") && !MString.isNull(filterValue)) {
sbSearch.append(" AND A0.NAME LIKE '%' || :filterValue || '%' ESCAPE '\\' \n");
} else if (findOption.equals("totDoc.mUser.name") && !MString.isNull(filterValue)) {
sbSearch.append(" AND A0.OWNER_NAME = SP_CM_ENC_FU(:filterValue) \n");
} else if (findOption.equals("regDate") && !MString.isNull(stDate) && !MString.isNull(edDate) ) {
sbSearch.append(" AND A0.REG_DATE BETWEEN TO_DATE(:stDate,'YYYY-MM-DD') AND TO_DATE(:edDate,'YYYY-MM-DD') + 1 \n");
}
}
//레코드갯수를 구하는 부모클래스의 함수를 호출하기 위해서 멤버변수에 저장
//페이징처리함수 호출전에 등록 필요.
this.setCountQuery(sbSearch);
this.setParams(params);
sbSearch.append(" ORDER BY A0.ID DESC \n");
//페이징처리쿼리생성함수 호출
this.setSearchQuery(sbSearch);
// if( LOG.isDebugEnabled() ) {
// LOG.debug("DocReportService.createFormListSearchQuery ======================\nquery=\n{}\n===============================", sbSearch.toString());
// LOG.debug("params={}", params);
// LOG.debug("params={}", this.getParams());
// }
}
}