대시보드 수정.

main
JoJH 1 year ago
parent d7dca6482c
commit 7e94455564

@ -0,0 +1,168 @@
package cokr.xit.fims.cmmn;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import cokr.xit.base.code.CommonCode;
import cokr.xit.foundation.data.DataObject;
public class CodeConverter {
Map<String, List<CommonCode>> commonCodes = new HashMap<String, List<CommonCode>>();
List<DataObject> sggList = new ArrayList<DataObject>();
List<DataObject> deptList = new ArrayList<DataObject>();
List<DataObject> vltnList = new ArrayList<DataObject>();
List<DataObject> userList = new ArrayList<DataObject>();
List<DataObject> teamList = new ArrayList<DataObject>();
public CodeConverter(Map<String, List<CommonCode>> commonCodes){
this.commonCodes = commonCodes;
}
/** .
* @param codeGroupName , value
* @return
*/
public String valueToCode(String codeGroupName, String value){
String result = "";
List<CommonCode> commonCodeList = commonCodes.get(codeGroupName);
for(int i = 0; i < commonCodeList.size(); i++) {
if(value.replaceAll(Matcher.quoteReplacement(" "), "").equals(commonCodeList.get(i).getValue().replaceAll(Matcher.quoteReplacement(" "), ""))) {
result = commonCodeList.get(i).getCode();
}
}
return result;
}
/** .
* @param codeGroupName , code
* @return
*/
public String codeToValue(String codeGroupName, String code){
String result = "";
List<CommonCode> commonCodeList = commonCodes.get(codeGroupName);
for(int i = 0; i < commonCodeList.size(); i++) {
if(code.equals(commonCodeList.get(i).getCode())) {
result = commonCodeList.get(i).getValue();
}
}
return result;
}
/** .
* @param dataObject , codeGroupName , codeName , valueName
* @return
*/
public void fillIfEmpty(DataObject dataObject, String codeGroupName, String codeName, String valueName) {
if(!dataObject.string(valueName).equals("") && dataObject.string(codeName).equals("")) {
dataObject.put(codeName, this.valueToCode(codeGroupName, dataObject.string(valueName)));
} else if(dataObject.string(valueName).equals("") && !dataObject.string(codeName).equals("")) {
dataObject.put(valueName, this.codeToValue(codeGroupName, dataObject.string(codeName)));
}
}
/** .
* @param taskSeCd , vltnCd
* @return
*/
public String vltnCdToValue(String taskSeCd, String vltnCd) {
String result = "";
String codeGroup = "";
switch(taskSeCd){
case "PVS" :
codeGroup = "FIM004";
break;
case "BPV" :
codeGroup = "FIM005";
break;
case "DPV" :
codeGroup = "FIM006";
break;
case "ECA" :
codeGroup = "FIM061";
break;
case "PES" :
codeGroup = "FIM064";
break;
default :
throw new RuntimeException("위반코드 변환 오류");
}
List<CommonCode> commonCodeList = commonCodes.get(codeGroup);
for(int i = 0; i < commonCodeList.size(); i++) {
if(vltnCd.equals(commonCodeList.get(i).getCode())) {
result = commonCodeList.get(i).getValue();
}
}
return result;
}
public void putOtherCode(String type, DataObject dataobject){
switch(type) {
case "SGG_CD" :
this.sggList.add(dataobject);
break;
case "DEPT_CD" :
this.deptList.add(dataobject);
break;
case "VLTN_ID" :
this.vltnList.add(dataobject);
break;
case "USER_ID" :
this.userList.add(dataobject);
break;
case "TEAM_ID" :
this.teamList.add(dataobject);
break;
}
}
public String uniqOtherCodeToValue(String type, String uniqId) {
String result = "";
List<DataObject> otherCodeList = null;
switch(type) {
case "SGG_CD" :
otherCodeList = this.sggList;
break;
case "DEPT_CD" :
otherCodeList = this.deptList;
break;
case "VLTN_ID" :
otherCodeList = this.vltnList;
break;
case "USER_ID" :
otherCodeList = this.userList;
break;
case "TEAM_ID" :
otherCodeList = this.teamList;
break;
}
if(otherCodeList == null) {
return result;
}
for(int i = 0; i < otherCodeList.size(); i++) {
if(uniqId.equals(otherCodeList.get(i).string(type))) {
result = otherCodeList.get(i).string("NAME");
}
}
return result;
}
}

@ -42,6 +42,8 @@ public class RentQuery extends CmmnQuery {
private String schVhrno; // 차량번호
private String schHirerRegNo; // 임차인 등록 번호
private String schHirerNm; // 임차인 명
private String schDmndDtFrom; // 요청 일자 시작
private String schDmndDtTo; // 요청 일자 종료
private String[] omJnos; // 소유주 번호s
private String omJno; // 소유주 번호
@ -50,7 +52,6 @@ public class RentQuery extends CmmnQuery {
private String rtpyrNm; // 납부자 명
private String trgtSttsNm; // 등록 대상 여부
private String nxrpCrdnLinkYn; // 세외수입 단속 연계 여부
private String lsctLinkTblNm; // 임대차계약 연계 테이블 명
// ETC
@ -68,256 +69,306 @@ public class RentQuery extends CmmnQuery {
return ifEmpty(crdnId, () -> null);
}
public void setCrdnId(String crdnId) {
this.crdnId = crdnId;
}
public <T extends RentQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
public String getMpngId() {
return ifEmpty(mpngId, () -> null);
}
public void setMpngId(String mpngId) {
public <T extends RentQuery> T setMpngId(String mpngId) {
this.mpngId = mpngId;
return self();
}
public String getUserId() {
return ifEmpty(userId, () -> null);
}
public void setUserId(String userId) {
public <T extends RentQuery> T setUserId(String userId) {
this.userId = userId;
return self();
}
public String[] getEntIds() {
return ifEmpty(entIds, () -> null);
}
public void setEntIds(String... entIds) {
public <T extends RentQuery> T setEntIds(String... entIds) {
this.entIds = entIds;
return self();
}
public String getEntId() {
return ifEmpty(entId, () -> null);
}
public void setEntId(String entId) {
public <T extends RentQuery> T setEntId(String entId) {
this.entId = entId;
return self();
}
public String[] getLsctIds() {
return ifEmpty(lsctIds, () -> null);
}
public void setLsctIds(String... lsctIds) {
public <T extends RentQuery> T setLsctIds(String... lsctIds) {
this.lsctIds = lsctIds;
return self();
}
public String getLsctId() {
return ifEmpty(lsctId, () -> null);
}
public void setLsctId(String lsctId) {
public <T extends RentQuery> T setLsctId(String lsctId) {
this.lsctId = lsctId;
return self();
}
public String[] getLsctMpngIds() {
return ifEmpty(lsctMpngIds, () -> null);
}
public void setLsctMpngIds(String... lsctMpngIds) {
public <T extends RentQuery> T setLsctMpngIds(String... lsctMpngIds) {
this.lsctMpngIds = lsctMpngIds;
return self();
}
public String getLsctMpngId() {
return ifEmpty(lsctMpngId, () -> null);
}
public void setLsctMpngId(String lsctMpngId) {
public <T extends RentQuery> T setLsctMpngId(String lsctMpngId) {
this.lsctMpngId = lsctMpngId;
return self();
}
public String[] getAprvIds() {
return ifEmpty(aprvIds, () -> null);
}
public void setAprvIds(String... aprvIds) {
public <T extends RentQuery> T setAprvIds(String... aprvIds) {
this.aprvIds = aprvIds;
return self();
}
public String getAprvId() {
return ifEmpty(aprvId, () -> null);
}
public void setAprvId(String aprvId) {
public <T extends RentQuery> T setAprvId(String aprvId) {
this.aprvId = aprvId;
return self();
}
public String getMmCode() {
return ifEmpty(mmCode, () -> null);
}
public void setMmCode(String mmCode) {
public <T extends RentQuery> T setMmCode(String mmCode) {
this.mmCode = mmCode;
return self();
}
public String[] getSchEntRegNos() {
return ifEmpty(schEntRegNos, () -> null);
}
public void setSchEntRegNos(String... schEntRegNos) {
public <T extends RentQuery> T setSchEntRegNos(String... schEntRegNos) {
this.schEntRegNos = schEntRegNos;
return self();
}
public String getSchEntRegNo() {
return ifEmpty(schEntRegNo, () -> null);
}
public void setSchEntRegNo(String schEntRegNo) {
public <T extends RentQuery> T setSchEntRegNo(String schEntRegNo) {
this.schEntRegNo = schEntRegNo;
return self();
}
public String getSchEntNm() {
return ifEmpty(schEntNm, () -> null);
}
public void setSchEntNm(String schEntNm) {
public <T extends RentQuery> T setSchEntNm(String schEntNm) {
this.schEntNm = schEntNm;
return self();
}
public String getSchRprsvNm() {
return ifEmpty(schRprsvNm, () -> null);
}
public void setSchRprsvNm(String schRprsvNm) {
public <T extends RentQuery> T setSchRprsvNm(String schRprsvNm) {
this.schRprsvNm = schRprsvNm;
return self();
}
public String getSchCrdnYmdFrom() {
return ifEmpty(schCrdnYmdFrom, () -> null);
}
public void setSchCrdnYmdFrom(String schCrdnYmdFrom) {
public <T extends RentQuery> T setSchCrdnYmdFrom(String schCrdnYmdFrom) {
this.schCrdnYmdFrom = schCrdnYmdFrom;
return self();
}
public String getSchCrdnYmdTo() {
return ifEmpty(schCrdnYmdTo, () -> null);
}
public void setSchCrdnYmdTo(String schCrdnYmdTo) {
public <T extends RentQuery> T setSchCrdnYmdTo(String schCrdnYmdTo) {
this.schCrdnYmdTo = schCrdnYmdTo;
return self();
}
public String getSchCtrtYmd() {
return ifEmpty(schCtrtYmd, () -> null);
}
public void setSchCtrtYmd(String schCtrtYmd) {
public <T extends RentQuery> T setSchCtrtYmd(String schCtrtYmd) {
this.schCtrtYmd = schCtrtYmd;
return self();
}
public String getSchCtrtBgngYmd() {
return ifEmpty(schCtrtBgngYmd, () -> null);
}
public void setSchCtrtBgngYmd(String schCtrtBgngYmd) {
public <T extends RentQuery> T setSchCtrtBgngYmd(String schCtrtBgngYmd) {
this.schCtrtBgngYmd = schCtrtBgngYmd;
return self();
}
public String getSchCtrtEndYmd() {
return ifEmpty(schCtrtEndYmd, () -> null);
}
public void setSchCtrtEndYmd(String schCtrtEndYmd) {
public <T extends RentQuery> T setSchCtrtEndYmd(String schCtrtEndYmd) {
this.schCtrtEndYmd = schCtrtEndYmd;
return self();
}
public String getSchVhrno() {
return ifEmpty(schVhrno, () -> null);
}
public void setSchVhrno(String schVhrno) {
public <T extends RentQuery> T setSchVhrno(String schVhrno) {
this.schVhrno = schVhrno;
return self();
}
public String getSchHirerRegNo() {
return ifEmpty(schHirerRegNo, () -> null);
}
public void setSchHirerRegNo(String schHirerRegNo) {
public <T extends RentQuery> T setSchHirerRegNo(String schHirerRegNo) {
this.schHirerRegNo = schHirerRegNo;
return self();
}
public String getSchHirerNm() {
return ifEmpty(schHirerNm, () -> null);
}
public void setSchHirerNm(String schHirerNm) {
public <T extends RentQuery> T setSchHirerNm(String schHirerNm) {
this.schHirerNm = schHirerNm;
return self();
}
public String getSchDmndDtFrom() {
return ifEmpty(schDmndDtFrom, () -> null);
}
public <T extends RentQuery> T setSchDmndDtFrom(String schDmndDtFrom) {
this.schDmndDtFrom = schDmndDtFrom;
return self();
}
public String getSchDmndDtTo() {
return ifEmpty(schDmndDtTo, () -> null);
}
public <T extends RentQuery> T setSchDmndDtTo(String schDmndDtTo) {
this.schDmndDtTo = schDmndDtTo;
return self();
}
public String[] getOmJnos() {
return ifEmpty(omJnos, () -> null);
}
public void setOmJnos(String... omJnos) {
public <T extends RentQuery> T setOmJnos(String... omJnos) {
this.omJnos = omJnos;
return self();
}
public String getOmJno() {
return ifEmpty(omJno, () -> null);
}
public void setOmJno(String omJno) {
public <T extends RentQuery> T setOmJno(String omJno) {
this.omJno = omJno;
return self();
}
public String[] getRtpyrNos() {
return ifEmpty(rtpyrNos, () -> null);
}
public void setRtpyrNos(String... rtpyrNos) {
public <T extends RentQuery> T setRtpyrNos(String... rtpyrNos) {
this.rtpyrNos = rtpyrNos;
return self();
}
public String getRtpyrNo() {
return ifEmpty(rtpyrNo, () -> null);
}
public void setRtpyrNo(String rtpyrNo) {
public <T extends RentQuery> T setRtpyrNo(String rtpyrNo) {
this.rtpyrNo = rtpyrNo;
return self();
}
public String getRtpyrNm() {
return ifEmpty(rtpyrNm, () -> null);
}
public void setRtpyrNm(String rtpyrNm) {
public <T extends RentQuery> T setRtpyrNm(String rtpyrNm) {
this.rtpyrNm = rtpyrNm;
return self();
}
public String getTrgtSttsNm() {
return ifEmpty(trgtSttsNm, () -> null);
}
public void setTrgtSttsNm(String trgtSttsNm) {
public <T extends RentQuery> T setTrgtSttsNm(String trgtSttsNm) {
this.trgtSttsNm = trgtSttsNm;
return self();
}
public String getNxrpCrdnLinkYn() {
return ifEmpty(nxrpCrdnLinkYn, () -> null);
}
public void setNxrpCrdnLinkYn(String nxrpCrdnLinkYn) {
public <T extends RentQuery> T setNxrpCrdnLinkYn(String nxrpCrdnLinkYn) {
this.nxrpCrdnLinkYn = nxrpCrdnLinkYn;
return self();
}
public String getLsctLinkTblNm() {
return ifEmpty(lsctLinkTblNm, () -> null);
}
public void setLsctLinkTblNm(String lsctLinkTblNm) {
public <T extends RentQuery> T setLsctLinkTblNm(String lsctLinkTblNm) {
this.lsctLinkTblNm = lsctLinkTblNm;
return self();
}
// ETC /////////////////////////////////////////////////////////////////////
@ -325,64 +376,73 @@ public class RentQuery extends CmmnQuery {
return ifEmpty(callPageName, () -> null);
}
public void setCallPageName(String callPageName) {
public <T extends RentQuery> T setCallPageName(String callPageName) {
this.callPageName = callPageName;
return self();
}
public String getCallPurpose() {
return ifEmpty(callPurpose, () -> null);
}
public void setCallPurpose(String callPurpose) {
public <T extends RentQuery> T setCallPurpose(String callPurpose) {
this.callPurpose = callPurpose;
return self();
}
public String getDelRsn() {
return ifEmpty(delRsn, () -> null);
}
public void setDelRsn(String delRsn) {
public <T extends RentQuery> T setDelRsn(String delRsn) {
this.delRsn = delRsn;
return self();
}
public String getFfnlgSysInqYn() {
return ifEmpty(ffnlgSysInqYn, () -> null);
}
public void setFfnlgSysInqYn(String ffnlgSysInqYn) {
public <T extends RentQuery> T setFfnlgSysInqYn(String ffnlgSysInqYn) {
this.ffnlgSysInqYn = ffnlgSysInqYn;
return self();
}
public String getHirerMpngYn() {
return ifEmpty(hirerMpngYn, () -> null);
}
public void setHirerMpngYn(String hirerMpngYn) {
public <T extends RentQuery> T setHirerMpngYn(String hirerMpngYn) {
this.hirerMpngYn = hirerMpngYn;
return self();
}
public String getCrdnDt() {
return ifEmpty(crdnDt, () -> null);
}
public void setCrdnDt(String crdnDt) {
public <T extends RentQuery> T setCrdnDt(String crdnDt) {
this.crdnDt = crdnDt;
return self();
}
public String getEpayno() {
return ifEmpty(epayno, () -> null);
}
public void setEpayno(String epayno) {
public <T extends RentQuery> T setEpayno(String epayno) {
this.epayno = epayno;
return self();
}
// ETC /////////////////////////////////////////////////////////////////////
public String getCellDataDef() {
return ifEmpty(cellDataDef, () -> null);
}
public void setCellDataDef(String cellDataDef) {
public <T extends RentQuery> T setCellDataDef(String cellDataDef) {
this.cellDataDef = cellDataDef;
return self();
}
}

@ -0,0 +1,45 @@
package cokr.xit.fims.stat;
public class CodeSubsetInfo {
private String sourceGroup;
private String[] sourceCodes;
private String targetCode;
private String targetCodeVal;
public String getSourceGroup(){
return this.sourceGroup;
}
public void setSourceGroup(String sourceGroup){
this.sourceGroup = sourceGroup;
}
public String[] getSourceCodes(){
return this.sourceCodes;
}
public void setSourceCodes(String[] sourceCodes){
this.sourceCodes = sourceCodes;
}
public String getTargetCode(){
return this.targetCode;
}
public void setTargetCode(String targetCode){
this.targetCode = targetCode;
}
public String getTargetCodeVal(){
return this.targetCodeVal;
}
public void setTargetCodeVal(String targetCodeVal){
this.targetCodeVal = targetCodeVal;
}
}

@ -0,0 +1,47 @@
package cokr.xit.fims.stat;
import java.util.Objects;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CompositeKey {
private String level1;
private String level2;
private String level3;
private String level4;
public String[] toArray() {
if(this.level2 == null) {
return new String[] { this.level1 };
}
if(this.level3 == null) {
return new String[] { this.level1, this.level2 };
}
if(this.level4 == null) {
return new String[] { this.level1, this.level2, this.level3 };
}
return new String[] { this.level1, this.level2, this.level3, this.level4 };
}
@Override
public boolean equals(Object o) {
if(this == o) return true;
if(o == null || getClass() != o.getClass()) return false;
CompositeKey k = (CompositeKey) o;
return Objects.equals(level1, k.level1)
&& Objects.equals(level2, k.level2)
&& Objects.equals(level3, k.level3)
&& Objects.equals(level4, k.level4);
}
@Override
public int hashCode() {
return Objects.hash(level1,level2,level3,level4);
}
}

@ -0,0 +1,44 @@
package cokr.xit.fims.stat;
public class GroupInfo {
/**
*
*/
private String refCol;
/**
*
*/
private String ctgrType;
/**
*
*/
private String dtlCtgr;
public String getRefCol(){
return this.refCol;
}
public void setRefCol(String refCol){
this.refCol = refCol;
}
public String getCtgrType(){
return this.ctgrType;
}
public void setCtgrType(String ctgrType){
this.ctgrType = ctgrType;
}
public String getDtlCtgr(){
return this.dtlCtgr;
}
public void setDtlCtgr(String dtlCtgr){
this.dtlCtgr = dtlCtgr;
}
}

@ -0,0 +1,96 @@
package cokr.xit.fims.stat;
public class NumberValueInfo {
/**
*
*/
private String seperatorRefCol;
/**
*
*/
private String conditionValue;
/**
*
*/
private String seperatorCtgrType;
/**
*
*/
private String seperatorDtlCtgr;
/**
* (count , sum , ratio )
*/
private String aggregateType;
/**
*
*/
private String sumRefCol;
/**
*
*/
private int ratioRefIndex;
public String getSeperatorRefCol(){
return this.seperatorRefCol;
}
public void setSeperatorRefCol(String seperatorRefCol){
this.seperatorRefCol = seperatorRefCol;
}
public String getConditionValue(){
return this.conditionValue;
}
public void setConditionValue(String conditionValue){
this.conditionValue = conditionValue;
}
public String getSeperatorCtgrType(){
return this.seperatorCtgrType;
}
public void setSeperatorCtgrType(String seperatorCtgrType){
this.seperatorCtgrType = seperatorCtgrType;
}
public String getSeperatorDtlCtgr(){
return this.seperatorDtlCtgr;
}
public void setSeperatorDtlCtgr(String seperatorDtlCtgr){
this.seperatorDtlCtgr = seperatorDtlCtgr;
}
public String getAggregateType(){
return this.aggregateType;
}
public void setAggregateType(String aggregateType){
this.aggregateType = aggregateType;
}
public String getSumRefCol(){
return this.sumRefCol;
}
public void setSumRefCol(String sumRefCol){
this.sumRefCol = sumRefCol;
}
public int getRatioRefIndex(){
return this.ratioRefIndex;
}
public void setRatioRefIndex(int ratioRefIndex){
this.ratioRefIndex = ratioRefIndex;
}
}

@ -0,0 +1,51 @@
package cokr.xit.fims.stat;
import java.util.List;
import cokr.xit.foundation.data.DataObject;
import lombok.Getter;
import lombok.Setter;
/**
* @author leebj
*/
@Getter
@Setter
public class Stat {
/**
*
*/
private String statTitle;
/**
*
*/
private String statSubTitle;
/**
*
*/
private String aggregateYn;
/**
*
*/
private String[] itemsLabel;
/**
*
*/
private String[] numberValueLabel;
/**
* ( )
*/
private List<StatItem> statItems;
/**
* ( ) ()
*/
private List<DataObject> resultList;
}

@ -0,0 +1,33 @@
package cokr.xit.fims.stat;
import java.util.List;
import cokr.xit.foundation.data.DataObject;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class StatItem {
/**
* ID
*/
private String[] itemId;
/**
*
*/
private String[] itemName;
/**
*
*/
private int[] numberValue;
/**
*
*/
private List<DataObject> refList;
}

@ -0,0 +1,275 @@
package cokr.xit.fims.stat;
import java.util.List;
import cokr.xit.fims.cmmn.CmmnQuery;
/**
*
* <p> :
*
* <pre>
* ============ ============
* 2023-10-24 leebj
* ================================
* </pre>
*/
public class StatQuery extends CmmnQuery {
private static final long serialVersionUID = 1L;
/**
* (aggregate , list )
*/
private String structureType;
/**
*
*/
private String statDomain;
/**
*
*/
private String refListYn;
/**
*
*/
private List<GroupInfo> groupInfoList;
/**
*
*/
private List<NumberValueInfo> numberValueInfoList;
/**
*
*/
List<CodeSubsetInfo> codeSubsetInfoList;
/**
* ID ( )
*/
private String[] fixedItemId;
/**
*
*/
private String namedNumberValueSeperator;
/**
*
*/
private String globalAggregate;
/**
*
*/
private String globalSumRefCol;
/**
* 릿
*/
private int decimalPoint;
/**
*
*/
private String dayColumn;
/**
*
*/
private String firstDay;
/**
*
*/
private String lastDay;
/**
*
*/
private int dayRange;
/**
*
*/
private String carGb;
/**
*
*/
private String schExclEnd;
/**
*
*/
private String schOnlyRent;
public String getStructureType() {
return ifEmpty(structureType, () -> null);
}
public <T extends StatQuery> T setStructureType(String structureType) {
this.structureType = structureType;
return self();
}
public String getStatDomain() {
return ifEmpty(statDomain, () -> null);
}
public <T extends StatQuery> T setStatDomain(String statDomain) {
this.statDomain = statDomain;
return self();
}
public String getRefListYn() {
return ifEmpty(refListYn, () -> null);
}
public <T extends StatQuery> T setRefListYn(String refListYn) {
this.refListYn = refListYn;
return self();
}
public List<GroupInfo> getGroupInfoList() {
return this.groupInfoList;
}
public <T extends StatQuery> T setGroupInfoList(List<GroupInfo> groupInfoList) {
this.groupInfoList = groupInfoList;
return self();
}
public List<NumberValueInfo> getNumberValueInfoList() {
return this.numberValueInfoList;
}
public <T extends StatQuery> T setNumberValueInfoList(List<NumberValueInfo> numberValueInfoList) {
this.numberValueInfoList = numberValueInfoList;
return self();
}
public String getNamedNumberValueSeperator() {
return ifEmpty(namedNumberValueSeperator, () -> null);
}
public <T extends StatQuery> T setNamedNumberValueSeperator(String namedNumberValueSeperator) {
this.namedNumberValueSeperator = namedNumberValueSeperator;
return self();
}
public String getGlobalAggregate() {
return ifEmpty(globalAggregate, () -> null);
}
public <T extends StatQuery> T setGlobalAggregate(String globalAggregate) {
this.globalAggregate = globalAggregate;
return self();
}
public String getGlobalSumRefCol() {
return ifEmpty(globalSumRefCol, () -> null);
}
public <T extends StatQuery> T setGlobalSumRefCol(String globalSumRefCol) {
this.globalSumRefCol = globalSumRefCol;
return self();
}
public int getDecimalPoint() {
return ifEmpty(decimalPoint, () -> null);
}
public <T extends StatQuery> T setDecimalPoint(int decimalPoint) {
this.decimalPoint = decimalPoint;
return self();
}
public String[] getFixedItemId() {
return ifEmpty(fixedItemId, () -> null);
}
public <T extends StatQuery> T setFixedItemId(String... fixedItemId) {
this.fixedItemId = fixedItemId;
return self();
}
public int getDayRange() {
return ifEmpty(dayRange, () -> null);
}
public <T extends StatQuery> T setDayRange(int dayRange) {
this.dayRange = dayRange;
return self();
}
public String getDayColumn() {
return ifEmpty(dayColumn, () -> null);
}
public <T extends StatQuery> T setDayColumn(String dayColumn) {
this.dayColumn = dayColumn;
return self();
}
public String getFirstDay() {
return ifEmpty(firstDay, () -> null);
}
public <T extends StatQuery> T setFirstDay(String firstDay) {
this.firstDay = firstDay;
return self();
}
public String getLastDay() {
return ifEmpty(lastDay, () -> null);
}
public <T extends StatQuery> T setLastDay(String lastDay) {
this.lastDay = lastDay;
return self();
}
public List<CodeSubsetInfo> getCodeSubsetInfoList() {
return this.codeSubsetInfoList;
}
public <T extends StatQuery> T setCodeSubsetInfoList(List<CodeSubsetInfo> codeSubsetInfoList) {
this.codeSubsetInfoList = codeSubsetInfoList;
return self();
}
public String getCarGb() {
return ifEmpty(carGb, () -> null);
}
public <T extends StatQuery> T setCarGb(String carGb) {
this.carGb = carGb;
return self();
}
public String getSchExclEnd() {
return ifEmpty(schExclEnd, () -> null);
}
public <T extends StatQuery> T setSchExclEnd(String schExclEnd) {
this.schExclEnd = schExclEnd;
return self();
}
public String getSchOnlyRent() {
return ifEmpty(schOnlyRent, () -> null);
}
public <T extends StatQuery> T setSchOnlyRent(String schOnlyRent) {
this.schOnlyRent = schOnlyRent;
return self();
}
}

@ -0,0 +1,14 @@
package cokr.xit.fims.stat.service;
import java.util.List;
import java.util.Map;
import cokr.xit.base.code.CommonCode;
import cokr.xit.fims.stat.Stat;
import cokr.xit.fims.stat.StatQuery;
public interface StatService {
Stat getStatistics(StatQuery statQuery, Map<String, List<CommonCode>> commonCodes);
}

@ -0,0 +1,651 @@
package cokr.xit.fims.stat.service.bean;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.user.DepartmentQuery;
import cokr.xit.base.user.SigunguQuery;
import cokr.xit.base.user.UserQuery;
import cokr.xit.base.user.service.bean.DepartmentBean;
import cokr.xit.base.user.service.bean.SigunguBean;
import cokr.xit.base.user.service.bean.UserBean;
import cokr.xit.fims.cmmn.CmmnQuery;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.cmmn.CodeConverter;
import cokr.xit.fims.mngt.VltnQuery;
import cokr.xit.fims.mngt.dao.VltnMapper;
import cokr.xit.fims.stat.CodeSubsetInfo;
import cokr.xit.fims.stat.CompositeKey;
import cokr.xit.fims.stat.GroupInfo;
import cokr.xit.fims.stat.NumberValueInfo;
import cokr.xit.fims.stat.Stat;
import cokr.xit.fims.stat.StatItem;
import cokr.xit.fims.stat.StatQuery;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
@Component("statBean")
public class StatBean extends AbstractBean {
@Resource(name="sigunguBean")
protected SigunguBean sigunguBean;
@Resource(name = "departmentBean")
private DepartmentBean departmentBean;
@Resource(name="userBean")
private UserBean userBean;
@Resource(name="vltnMapper")
private VltnMapper vltnMapper;
/** .
* @param sql query, dayCol , from , to
* @return
*/
public void daySetting(CmmnQuery someQuery, String className, String dayCol, String from, String to) {
try {
if(dayCol.equals("REG_DT")) {
Method m0 = CmmnQuery.class.getDeclaredMethod("setSchDateOpt", String.class);
m0.invoke(someQuery, "regDt");
Method m1 = CmmnQuery.class.getDeclaredMethod("setSchDateFrom", String.class);
m1.invoke(someQuery, from);
Method m2 = CmmnQuery.class.getDeclaredMethod("setSchDateTo", String.class);
m2.invoke(someQuery, to);
} else if(dayCol.equals("DMND_DT")) {
Method m1 = someQuery.getClass().getDeclaredMethod("setSchDmndDtFrom", String.class);
m1.invoke(someQuery, from);
Method m2 = someQuery.getClass().getDeclaredMethod("setSchDmndDtTo", String.class);
m2.invoke(someQuery, to);
} else if(dayCol.equals("CRDN_YMD")) {
Method m1 = someQuery.getClass().getDeclaredMethod("setSchCrdnYmdFrom", String.class);
m1.invoke(someQuery, from);
Method m2 = someQuery.getClass().getDeclaredMethod("setSchCrdnYmdTo", String.class);
m2.invoke(someQuery, to);
} else if(dayCol.equals("SNDNG_YMD")) {
Method m1 = someQuery.getClass().getDeclaredMethod("setSchSndngYmdFrom", String.class);
m1.invoke(someQuery, from);
Method m2 = someQuery.getClass().getDeclaredMethod("setSchSndngYmdTo", String.class);
m2.invoke(someQuery, to);
} else if(dayCol.equals("RCPT_YMD")) {
if(className.equals("LevyExclQuery")) {
Method m1 = someQuery.getClass().getDeclaredMethod("setSchRcptYmdFrom", String.class);
m1.invoke(someQuery, from);
Method m2 = someQuery.getClass().getDeclaredMethod("setSchRcptYmdTo", String.class);
m2.invoke(someQuery, to);
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/** .
* @param queryResult SQL , statQuery
* @return
*/
public Stat groupByCartegory(List<DataObject> queryResult, StatQuery statQuery) {
Stat stat = new Stat();
//통계 항목별 그룹핑
Map<CompositeKey, List<DataObject>> group = this.grouping(queryResult, statQuery);
//고정 항목 설정
if(statQuery.getFixedItemId() != null) {
this.itemFix(group, statQuery);
}
//수치 값 추출
Set<CompositeKey> keySet = group.keySet();
Iterator<CompositeKey> it = keySet.iterator();
List<StatItem> statItems = new ArrayList<>();
while(it.hasNext()){
CompositeKey compositeKey = it.next();
StatItem statItem = new StatItem();
statItem.setItemId(compositeKey.toArray());
List<DataObject> listByKey = group.get(compositeKey);
int[] numberValues = this.extractNumberValue(listByKey, statQuery);
statItem.setNumberValue(numberValues);
if(ifEmpty(statQuery.getRefListYn(), () -> "").equals("Y")) {
statItem.setRefList(listByKey);
}
statItems.add(statItem);
}
stat.setStatItems(statItems);
return stat;
}
/** .
* @param queryResult SQL , statQuery
* @return
*/
public Map<CompositeKey, List<DataObject>> grouping(List<DataObject> queryResult, StatQuery statQuery){
List<GroupInfo> groupInfoList = statQuery.getGroupInfoList();
List<CodeSubsetInfo> subsetInfoList = statQuery.getCodeSubsetInfoList();
Map<CompositeKey, List<DataObject>> group = queryResult.stream()
.collect(
Collectors.groupingBy(
(item) -> {
CompositeKey compositeKey = new CompositeKey();
for(int i = 0; i < groupInfoList.size(); i++) {
String key = "";
GroupInfo groupInfo = groupInfoList.get(i);
String refCol = groupInfo.getRefCol();
String colValue = item.string(refCol);
if(ifEmpty(groupInfo.getCtgrType(), ()-> "").equals("")) {
key = colValue;
if(key.equals("")) {
key = "(정보없음)";
}
if(i == 0) {
compositeKey.setLevel1(key);
}
if(i == 1) {
compositeKey.setLevel2(key);
}
if(i == 2) {
compositeKey.setLevel3(key);
}
if(i == 3) {
compositeKey.setLevel4(key);
}
continue;
}
String ctgrType = groupInfo.getCtgrType();
String addOption = groupInfo.getDtlCtgr();
if(ctgrType.equals("date")) {
if(addOption.equals("YYYY")) { //연도별
key = colValue.substring(0,4);
} else if(addOption.equals("YYYYMM")) { //연월별
key = colValue.substring(0,6);
} else if(addOption.equals("YYYYMMDD")) { //일자별
key = colValue.substring(0,8);
} else if(addOption.equals("DAY_OF_WEEK")) { //요일별
key = CmmnUtil.getDayOfWeek(colValue);
} else if(addOption.equals("HH")) { //시간대별
if(colValue.length() == 14) {
key = colValue.substring(8,10);
} else {
key = colValue.substring(0,2);
}
} else {
key = colValue;
}
if(key.equals("")) {
key = "(날짜없음)";
}
} else if(ctgrType.equals("code") || ctgrType.equals("otherCode")) {
if(ctgrType.equals("code")
&& subsetInfoList != null
&& !subsetInfoList.isEmpty()
) {
for(CodeSubsetInfo subsetInfo : subsetInfoList) {
if(subsetInfo.getSourceGroup().equals(addOption)) {
if(Arrays.asList(subsetInfo.getSourceCodes()).contains(colValue)) {
colValue = subsetInfo.getTargetCode();
}
}
}
}
key = colValue;
if(key.equals("")) {
key = "(정보없음)";
}
} else if(ctgrType.equals("method")) {
if(addOption.equals("businessYnOfCar")){
String ffnlgCarmdlCd = item.string("FFNLG_CARMDL_CD");
String vhrno = item.string("VHRNO");
// key = crdnStngBean.getBusinessYnOfCar(ffnlgCarmdlCd, vhrno);
} else {
key = colValue;
if(key.equals("")) {
key = "(정보없음)";
}
}
} else {
key = colValue;
if(key.equals("")) {
key = "(정보없음)";
}
}
if(i == 0) {
compositeKey.setLevel1(key);
}
if(i == 1) {
compositeKey.setLevel2(key);
}
if(i == 2) {
compositeKey.setLevel3(key);
}
if(i == 3) {
compositeKey.setLevel4(key);
}
}
return compositeKey;
}
)
);
return group;
}
/** .
* @param group , statQuery ;
* @return
*/
public void itemFix(Map<CompositeKey, List<DataObject>> group, StatQuery statQuery) {
String[] fixedItemId = statQuery.getFixedItemId();
CompositeKey[] fixedItemKey = new CompositeKey[fixedItemId.length];
for(int i=0; i < fixedItemId.length; i++) {
CompositeKey newObj = new CompositeKey();
newObj.setLevel1(fixedItemId[i]);
fixedItemKey[i] = newObj;
}
for(int i=0; i < fixedItemKey.length; i++) {
if(!group.containsKey(fixedItemKey[i])) {
group.put(fixedItemKey[i], null);
}
}
Set<CompositeKey> keySet = group.keySet();
Iterator<CompositeKey> it = keySet.iterator();
List<CompositeKey> deleteTargets = new ArrayList<>();
while(it.hasNext()) {
CompositeKey compositekey = it.next();
if(!Arrays.asList(fixedItemKey).contains(compositekey)) {
deleteTargets.add(compositekey);
}
}
for(CompositeKey deleteTarget : deleteTargets) {
group.remove(deleteTarget);
}
}
/** (, ) .
* @param listByKey , statQuery
* @return
*/
public int[] extractNumberValue(List<DataObject> listByKey, StatQuery statQuery) {
List<NumberValueInfo> numberValueInfoList = statQuery.getNumberValueInfoList();
List<CodeSubsetInfo> subsetInfoList = statQuery.getCodeSubsetInfoList();
int[] aggregateArr = new int[numberValueInfoList.size()];
for(int i=0; i < numberValueInfoList.size(); i++) {
aggregateArr[i] = 0;
}
if(listByKey != null) {
for(int i=0; i<listByKey.size(); i++) {
DataObject dataObject = listByKey.get(i);
for(int j=0; j < aggregateArr.length; j++) {
NumberValueInfo numverValueInfo = numberValueInfoList.get(j);
String seperatorRefCol = ifEmpty(numverValueInfo.getSeperatorRefCol(), ()-> "");
String conditionValue = ifEmpty(numverValueInfo.getConditionValue(), ()-> "");
String seperatorCtgrType = ifEmpty(numverValueInfo.getSeperatorCtgrType(), ()-> "");
String seperatorDtlCtgr = ifEmpty(numverValueInfo.getSeperatorDtlCtgr(), ()-> "");
String aggregateType = ifEmpty(numverValueInfo.getAggregateType(), ()-> "");
String sumRefCol = ifEmpty(numverValueInfo.getSumRefCol(), ()-> "");
if(!seperatorRefCol.equals("")) {
String dataColumnValue = dataObject.string(seperatorRefCol);
if(seperatorCtgrType.equals("date")) {
if(seperatorDtlCtgr.equals("YYYY")) { //연도별
dataColumnValue = dataColumnValue.substring(0,4);
} else if(seperatorDtlCtgr.equals("YYYYMM")) { //연월별
dataColumnValue = dataColumnValue.substring(0,6);
} else if(seperatorDtlCtgr.equals("YYYYMMDD")) { //일자별
dataColumnValue = dataColumnValue.substring(0,8);
} else if(seperatorDtlCtgr.equals("DAY_OF_WEEK")) { //요일별
dataColumnValue = CmmnUtil.getDayOfWeek(dataColumnValue);
} else if(seperatorDtlCtgr.equals("HH")) { //시간대별
if(dataColumnValue.length() == 14) {
dataColumnValue = dataColumnValue.substring(8,10);
} else {
dataColumnValue = dataColumnValue.substring(0,2);
}
}
} else if(seperatorCtgrType.equals("code") || seperatorCtgrType.equals("otherCode")) {
if(seperatorCtgrType.equals("code")
&& subsetInfoList != null
&& !subsetInfoList.isEmpty()
) {
for(CodeSubsetInfo subsetInfo : subsetInfoList) {
if(subsetInfo.getSourceGroup().equals(seperatorDtlCtgr)) {
if(Arrays.asList(subsetInfo.getSourceCodes()).contains(dataColumnValue)) {
dataColumnValue = subsetInfo.getTargetCode();
}
}
}
}
}
if(!dataColumnValue.equals(conditionValue)) {
continue;
}
}
if(aggregateType.equals("sum")) {
aggregateArr[j] += dataObject.number(sumRefCol).intValue();
} else {
aggregateArr[j] += 1;
}
}
}
}
return aggregateArr;
}
/** .
* @param statItems , statQuery , allCode
* @return
*/
public void attachItemName(List<StatItem> statItems, StatQuery statQuery, Map<String, List<CommonCode>> allCode) {
CodeConverter codeConverter = new CodeConverter(allCode);
List<GroupInfo> groupInfoList = statQuery.getGroupInfoList();
int taskSeCdIndex = -1;
for(int i=0; i < groupInfoList.size(); i++) {
if(groupInfoList.get(i).getCtgrType().equals("code")
&& groupInfoList.get(i).getDtlCtgr().equals("FIM054")) {
taskSeCdIndex = i;
}
}
for(StatItem statItem : statItems) {
String[] compositeItemId = statItem.getItemId();
String[] compositeItemName = new String[compositeItemId.length];
for(int i=0; i < compositeItemId.length ;i++) {
GroupInfo groupInfo = groupInfoList.get(i);
String ctgrType = ifEmpty(groupInfo.getCtgrType(), ()-> "");
String dtlCtgr = ifEmpty(groupInfo.getDtlCtgr(), ()-> "");
if(ctgrType.equals("") || ctgrType.equals("plain")
|| ctgrType.equals("date") || ctgrType.equals("method")) { //일반텍스트
compositeItemName[i] = compositeItemId[i];
continue;
}
String itemName = "";
if(ctgrType.equals("code")){ //공통코드
String converted = codeConverter.codeToValue(dtlCtgr, compositeItemId[i]);
if(ifEmpty(converted, ()->"").equals("")) {
itemName = compositeItemId[i];
} else {
itemName = converted;
}
} else if(ctgrType.equals("otherCode")) { //비공통코드
if(dtlCtgr.equals("VLTN_CD")) {
String taskSeCd = "";
if(taskSeCdIndex != -1) {
taskSeCd = compositeItemId[taskSeCdIndex];
} else if(!statQuery.getTaskSeCd().equals("")) {
taskSeCd = statQuery.getTaskSeCd();
}
if(taskSeCd.equals("")) {
throw new RuntimeException("위반코드 변환 오류");
}
String converted = codeConverter.vltnCdToValue(taskSeCd, compositeItemId[i]);
if(ifEmpty(converted, ()->"").equals("")) {
itemName = compositeItemId[i];
} else {
itemName = converted;
}
} else if(dtlCtgr.equals("VLTN_ID") || dtlCtgr.equals("TEAM_ID")
|| dtlCtgr.equals("SGG_CD") || dtlCtgr.equals("DEPT_CD") || dtlCtgr.equals("USER_ID")) {
String find = codeConverter.uniqOtherCodeToValue(dtlCtgr,compositeItemId[i]);
if(!find.equals("")) {
itemName = find;
} else {
DataObject findRow = this.selectOtherCode(dtlCtgr, compositeItemId[i]);
if(findRow != null){
itemName = findRow.string("NAME");
codeConverter.putOtherCode(dtlCtgr, findRow);
} else {
itemName = compositeItemId[i];
}
}
}
}
compositeItemName[i] = itemName;
}
statItem.setItemName(compositeItemName);
}
}
/** (%) .
* @param statItems , statQuery
* @return
*/
public void attachRatioValue(List<StatItem> statItems, StatQuery statQuery) {
int decimalPoint = statQuery.getDecimalPoint();
List<NumberValueInfo> numberValueInfoList = statQuery.getNumberValueInfoList();
for(StatItem statItem : statItems) {
for(int i = 0; i < numberValueInfoList.size(); i++) {
NumberValueInfo numberValueInfo = numberValueInfoList.get(i);
String aggregateType = numberValueInfo.getAggregateType();
if(aggregateType.equals("ratio")) {
int refIndex = numberValueInfo.getRatioRefIndex();
int totValue = statItem.getNumberValue()[refIndex];
if(totValue == 0) {
statItem.getNumberValue()[i] = 0;
} else {
int originalValue = statItem.getNumberValue()[i];
double ratioValue = (double) originalValue / (double) totValue;
double percent = ratioValue * Math.pow(10, 2f+decimalPoint);
statItem.getNumberValue()[i] = (int) Math.floor(percent);
}
}
}
}
}
public DataObject selectOtherCode(String type, String uniqId) {
DataObject result = null;
switch(type) {
case "SGG_CD" :
List<DataObject> sggs = sigunguBean.getSigunguList(new SigunguQuery().setSggIDs(uniqId));
if(sggs != null && !sggs.isEmpty()) {
sggs.get(0).set("NAME", sggs.get(0).string("SGG_NM"));
result = sggs.get(0);
}
break;
case "DEPT_CD" :
List<DataObject> depts = departmentBean.getDepartmentList(new DepartmentQuery().setDeptIDs(uniqId));
if(depts != null && !depts.isEmpty()) {
depts.get(0).set("NAME", depts.get(0).string("DEPT_NM"));
result = depts.get(0);
}
break;
case "VLTN_ID" :
DataObject vltn = vltnMapper.selectVltnInfo(new VltnQuery().setVltnId(uniqId));
if(vltn != null && !vltn.isEmpty()) {
vltn.set("NAME", vltn.string("VLTN_NM"));
result = vltn;
}
break;
case "USER_ID" :
List<DataObject> users = userBean.getUserList(new UserQuery().setUserIDs(uniqId));
if(users != null && !users.isEmpty()) {
users.get(0).set("NAME", users.get(0).string("USER_NM"));
result = users.get(0);
}
break;
}
return result;
}
/** .
* @param stat
* @return
*/
public void sort(Stat stat) {
List<StatItem> statItems = stat.getStatItems();
if(statItems != null && statItems.size() > 0) {
Comparator<StatItem> comparator = getStatItemComparator(statItems.get(0));
statItems = statItems.stream().sorted(comparator).collect(Collectors.toList());
stat.setStatItems(statItems);
}
}
public Comparator<StatItem> getStatItemComparator(StatItem sample){
String[] itemIds = sample.getItemId();
int level = itemIds.length;
Comparator<StatItem> chainComparator = getStatItemNLevelComparator(1);
if(level > 1) {
for(int i=2; i <= level; i++) {
chainComparator = chainComparator.thenComparing(getStatItemNLevelComparator(i));
}
}
return chainComparator;
}
public Comparator<StatItem> getStatItemNLevelComparator(int level){
Comparator<StatItem> nLevelComparator = (statItemA, statItemB) -> {
String[] statItemAIds = statItemA.getItemId();
String[] statItemBIds = statItemB.getItemId();
Comparator<String[]> tempComparator = getIndexOfStringArrayComparator(level-1);
return tempComparator.compare(statItemAIds, statItemBIds);
};
return nLevelComparator;
}
public Comparator<String[]> getStringArrayChainComparator(int lastIndex){
Comparator<String[]> chainComparator = getIndexOfStringArrayComparator(0);
if(lastIndex > 0) {
for(int i=1; i <= lastIndex; i++) {
chainComparator = chainComparator.thenComparing(getIndexOfStringArrayComparator(i));
}
}
return chainComparator;
}
public Comparator<String[]> getIndexOfStringArrayComparator(int index) {
Comparator<String[]> onlyNComparator = (arr1, arr2) -> {
String str1 = arr1[index];
String str2 = arr2[index];
return str1.compareTo(str2);
};
return onlyNComparator;
}
}

@ -0,0 +1,202 @@
package cokr.xit.fims.stat.service.bean;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cokr.xit.base.code.CommonCode;
import cokr.xit.fims.base.FimsUser;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.rent.RentQuery;
import cokr.xit.fims.rent.service.LsctMpngService;
import cokr.xit.fims.rent.service.RentEntService;
import cokr.xit.fims.stat.NumberValueInfo;
import cokr.xit.fims.stat.Stat;
import cokr.xit.fims.stat.StatQuery;
import cokr.xit.fims.stat.service.StatService;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
@Service("statService")
public class StatServiceBean extends AbstractServiceBean implements StatService {
@Resource(name = "statBean")
private StatBean statBean;
/**임대 기업 대장 서비스*/
@Resource(name = "rentEntService")
private RentEntService rentEntService;
/**임대차계약 대장 서비스*/
@Resource(name = "lsctMpngService")
private LsctMpngService lsctMpngService;
@Override
public Stat getStatistics(StatQuery statQuery, Map<String, List<CommonCode>> commonCodes) {
Stat stat = new Stat();
List<DataObject> queryResult = new ArrayList<>();
SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd");
Date curDate = new Date();
String today = yyyyMMdd.format(curDate);
boolean daySetting = false;
if(statQuery.getStructureType().equals("aggregate")) {
String dayColumn = ifEmpty(statQuery.getDayColumn(), () -> "");
String lastDay = ifEmpty(statQuery.getLastDay(), () -> "");
String firstDay = ifEmpty(statQuery.getFirstDay(), () -> "");
if(!dayColumn.equals("")) {
daySetting = true;
}
String[] numberValueLabel = null;
String namedNumberValueSeperator = ifEmpty(statQuery.getNamedNumberValueSeperator(), () -> "");
if(namedNumberValueSeperator.equals("completeAndTotal")) { //완료자료 및 전체자료
String globalAggregate = statQuery.getGlobalAggregate();
String globalSumRefCol = ifEmpty(statQuery.getGlobalSumRefCol(), () -> "") ;
List<NumberValueInfo> numberValueInfoList = new ArrayList<NumberValueInfo>();
NumberValueInfo col1 = new NumberValueInfo();
col1.setSeperatorRefCol("COMPLETE_YN");
col1.setConditionValue("Y");
col1.setAggregateType(globalAggregate);
col1.setSumRefCol(globalSumRefCol);
numberValueInfoList.add(col1);
NumberValueInfo col2 = new NumberValueInfo();
col2.setAggregateType(globalAggregate);
col2.setSumRefCol(globalSumRefCol);
numberValueInfoList.add(col2);
statQuery.setNumberValueInfoList(numberValueInfoList);
numberValueLabel = new String[] {"처리","전체"};
daySetting = true;
} else if(namedNumberValueSeperator.equals("lastFewDays")) {
daySetting = true;
int dayRange = statQuery.getDayRange() == 0 ? 15 : statQuery.getDayRange();
if(dayColumn.equals("")) {
dayColumn = "REG_DT";
}
lastDay = today;
firstDay = CmmnUtil.addDay(lastDay, (-1 * (dayRange-1)));
String globalAggregate = statQuery.getGlobalAggregate();
List<NumberValueInfo> numberValueInfoList = new ArrayList<NumberValueInfo>();
for(int i=0; i<dayRange; i++) {
NumberValueInfo numberValueInfo = new NumberValueInfo();
numberValueInfo.setSeperatorRefCol(dayColumn);
numberValueInfo.setConditionValue(CmmnUtil.addDay(firstDay,i));
numberValueInfo.setSeperatorCtgrType("date");
numberValueInfo.setSeperatorCtgrType("YYYYMMDD");
numberValueInfo.setAggregateType(globalAggregate);
numberValueInfoList.add(numberValueInfo);
}
statQuery.setNumberValueInfoList(numberValueInfoList);
numberValueLabel = new String[dayRange];
for(int i=0; i < dayRange; i++) {
if(i == (dayRange-1)) {
numberValueLabel[i] = "금일";
} else {
numberValueLabel[i] = Integer.toString((dayRange - (i+1)));
}
}
}
String domain = statQuery.getStatDomain();
if(domain.equals("")) {
throw new RuntimeException("통계 유형 확인 오류");
}
String domainKey = "";
//
if(domain.equals("crdn")) {
domainKey = "CRDN_ID";
} else if(domain.equals("aprvStts")) {
domainKey = "LSCT_MPNG_ID";
// 사용자 정보
FimsUser fimsUser = (FimsUser)currentUser().getUser();
// 사용자와 매핑되어있는 임대업체 정보 조회
RentQuery req = new RentQuery();
req.setUserId(fimsUser.getId());
req.setOrderBy(null);
List<DataObject> entRegNoList = rentEntService.getUserRentEntMpngs(req);
String[] entRegNos = new String[entRegNoList.size()];
if (entRegNoList != null) {
for (int iLoop = 0; iLoop < entRegNoList.size(); iLoop++) {
entRegNos[iLoop] = entRegNoList.get(iLoop).string("ENT_REG_NO");
}
}
// req.setSchEntRegNos(entRegNos);
req.setOrderBy(null);
if(daySetting) {
statBean.daySetting(req, req.getClass().getSimpleName(), dayColumn, firstDay, lastDay);
}
queryResult = lsctMpngService.getLsctAprvToMpngList(req);
}
if(!domainKey.equals("")) {
Iterator<DataObject> iterator = queryResult.iterator();
while(iterator.hasNext()) {
DataObject dataObject = iterator.next();
String dataId = dataObject.string(domainKey);
dataObject.set("DATA_ID", dataId);
}
}
//통계 생성
stat = statBean.groupByCartegory(queryResult, statQuery);
//통계 항목명 변환
statBean.attachItemName(stat.getStatItems(), statQuery, commonCodes);
//비율 값 계산
boolean exsistRatioValue = false;
for(NumberValueInfo numberValueInfo : statQuery.getNumberValueInfoList()) {
if(numberValueInfo.getAggregateType().equals("ratio")) {
exsistRatioValue = true;
}
}
if(exsistRatioValue){
statBean.attachRatioValue(stat.getStatItems(), statQuery);
}
//수치값 제목(건수, 금액, 비율 등)
if(numberValueLabel != null) {
stat.setNumberValueLabel(numberValueLabel);
}
//정렬
statBean.sort(stat);
stat.setAggregateYn("Y");
}
return stat;
}
}

@ -0,0 +1,125 @@
package cokr.xit.fims.stat.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.code.CommonCode;
import cokr.xit.base.user.dao.UserMapper;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.cmmn.service.bean.StngBean;
import cokr.xit.fims.stat.CodeSubsetInfo;
import cokr.xit.fims.stat.GroupInfo;
import cokr.xit.fims.stat.NumberValueInfo;
import cokr.xit.fims.stat.Stat;
import cokr.xit.fims.stat.StatQuery;
import cokr.xit.fims.stat.service.StatService;
/** .<br />
* { }/stat .
* @author leebj
*/
@Controller
@RequestMapping(name="통계", value=Stat01Controller.CLASS_URL)
public class Stat01Controller extends ApplicationController {
public static final String CLASS_URL = "/stat/stat01";
public class METHOD_URL {
public static final String
getStatistics = "/010/info.do"
;
}
@Resource(name="statService")
private StatService statService;
@Resource(name="userMapper")
protected UserMapper userMapper;
@Resource(name = "stngBean")
private StngBean stngBean;
/**
* @return
*/
@RequestMapping(name="통계 요청", value=METHOD_URL.getStatistics)
public ModelAndView getStatistics(StatQuery statQuery) {
ModelAndView mav = new ModelAndView("jsonView");
List<String> codeGroup = new ArrayList<String>();
List<GroupInfo> groupInfoList = statQuery.getGroupInfoList();
if(groupInfoList != null) {
for(int i=0; i < groupInfoList.size(); i++) {
GroupInfo groupInfo = groupInfoList.get(i);
String ctgrType = ifEmpty(groupInfo.getCtgrType(), () -> "");
String dtlCtgr = ifEmpty(groupInfo.getDtlCtgr(), () -> "");
if(ctgrType.equals("code")) {
codeGroup.add(dtlCtgr);
} else if(ctgrType.equals("otherCode")) {
if(dtlCtgr.equals("VLTN_CD")) {
codeGroup.add("FIM054");
codeGroup.add("FIM004");
codeGroup.add("FIM005");
codeGroup.add("FIM006");
codeGroup.add("FIM061");
codeGroup.add("FIM064");
}
}
}
}
List<NumberValueInfo> numberValueInfoList = statQuery.getNumberValueInfoList();
if(numberValueInfoList != null) {
for(int i=0; i < numberValueInfoList.size(); i++) {
NumberValueInfo numberValueInfo = numberValueInfoList.get(i);
String ctgrType = ifEmpty(numberValueInfo.getSeperatorCtgrType(), () -> "");
String dtlCtgr = ifEmpty(numberValueInfo.getSeperatorDtlCtgr(), () -> "");
if(ctgrType.equals("code")) {
codeGroup.add(dtlCtgr);
} else if(ctgrType.equals("otherCode")) {
if(dtlCtgr.equals("VLTN_CD")) {
codeGroup.add("FIM054");
codeGroup.add("FIM004");
codeGroup.add("FIM005");
codeGroup.add("FIM006");
codeGroup.add("FIM061");
codeGroup.add("FIM064");
}
}
}
}
Map<String, List<CommonCode>> commonCodes = new HashMap<String, List<CommonCode>>();
if(codeGroup.size() > 0) {
commonCodes = getCodesOf(codeGroup.toArray(new String[codeGroup.size()]));
}
if(statQuery.getCodeSubsetInfoList() != null && !statQuery.getCodeSubsetInfoList().isEmpty()) {
for(CodeSubsetInfo subsetInfo : statQuery.getCodeSubsetInfoList()) {
CommonCode newCode = new CommonCode();
newCode.setGroupID(subsetInfo.getSourceGroup());
newCode.setCode(subsetInfo.getTargetCode());
newCode.setValue(subsetInfo.getTargetCodeVal());
commonCodes.get(subsetInfo.getSourceGroup()).add(newCode);
}
}
Stat stat = statService.getStatistics(statQuery, commonCodes);
mav.addObject("stat", stat);
return mav;
}
}
Loading…
Cancel
Save