김의진 1 month ago
commit 65c61e6440

@ -101,6 +101,14 @@ public class ChongnoTaskProcessor extends TaskProcessor {
private int capacity = -1; private int capacity = -1;
private int getCapacity() {
if (capacity < 0) {
CommonCode code = codeMapper.getCode("FIM022", "114");
capacity = toInt(notEmpty(code, "capacity").getEtc1());
}
return capacity;
}
@Override @Override
public Map<Crdn, LevyExcl> getExcluded(List<Crdn> crdns) { public Map<Crdn, LevyExcl> getExcluded(List<Crdn> crdns) {
Map<Crdn, LevyExcl> excluded = super.getExcluded(crdns); Map<Crdn, LevyExcl> excluded = super.getExcluded(crdns);
@ -108,10 +116,7 @@ public class ChongnoTaskProcessor extends TaskProcessor {
if (!TASK_SE_CD.equals(first.getTaskSeCd())) if (!TASK_SE_CD.equals(first.getTaskSeCd()))
return excluded; return excluded;
if (capacity < 0) { int capacity = getCapacity();
CommonCode code = codeMapper.getCode("FIM022", "114");
capacity = toInt(notEmpty(code, "capacity").getEtc1());
}
if (capacity == 0) if (capacity == 0)
return excluded; return excluded;
@ -119,6 +124,11 @@ public class ChongnoTaskProcessor extends TaskProcessor {
for (Crdn crdn: crdns) { for (Crdn crdn: crdns) {
if (excluded.containsKey(crdn)) continue; if (excluded.containsKey(crdn)) continue;
LevyExcl levyExcl = getLevyExcl(capacity, vhrno, crdn);
if (levyExcl != null)
excluded.put(crdn, levyExcl); // 정원초과 -> 계도(시범운영)
/*
int vhclCpct = crdn.getVhclCpct(); int vhclCpct = crdn.getVhclCpct();
if (vhclCpct == 0) { if (vhclCpct == 0) {
// 정원미확인 -> 초기상태 // 정원미확인 -> 초기상태
@ -131,23 +141,46 @@ public class ChongnoTaskProcessor extends TaskProcessor {
} else } else
excluded.put(crdn, newLevyExcl(crdn, "1", "103")); // 부과제외(일반차량) excluded.put(crdn, newLevyExcl(crdn, "1", "103")); // 부과제외(일반차량)
} }
*/
} }
return excluded; return excluded;
} }
/** . /** .
* @param vhrno Vhrno * @param vhrno Vhrno
* @param crdn * @param crdn
* @return * @return
*/
private boolean isTarget(Vhrno vhrno, Crdn crdn) { private boolean isTarget(Vhrno vhrno, Crdn crdn) {
return true;
/*
vhrno.setFullNumber(crdn.getVhrno()); vhrno.setFullNumber(crdn.getVhrno());
return Vhrno.VAN.equals(vhrno.getVehicleType()) return Vhrno.VAN.equals(vhrno.getVehicleType())
|| vhrno.isCommercial(); && vhrno.isCommercial();
*/ }
*/
private LevyExcl getLevyExcl(int capacity, Vhrno vhrno, Crdn crdn) {
int vhclCpct = crdn.getVhclCpct();
if (vhclCpct == 0) // 정원미확인 -> 초기상태
return null; //newLevyExcl(crdn, "1", "115");
if (vhrno == null)
vhrno = new Vhrno();
vhrno.setFullNumber(crdn.getVhrno());
// 일반 운수사업용 승합차면 단속대상
boolean target =
Vhrno.VAN.equals(vhrno.getVehicleType())
&& vhrno.isCommercial();
if (!target)
return newLevyExcl(crdn, "1", "103"); // 부과제외(일반차량)
if (vhclCpct < capacity) // 정원미만
return newLevyExcl(crdn, "1", "114");
// 정원초과, 승합차, 운수사업 일반 -> 단속대상: 계도(시범운영)
// 계도기간 종료 후 단속대상은 null return
return newLevyExcl(crdn, "2", "206");
} }
@Override @Override
@ -158,24 +191,25 @@ public class ChongnoTaskProcessor extends TaskProcessor {
if (excl != null) if (excl != null)
return excl; return excl;
if (capacity < 0) { int capacity = getCapacity();
CommonCode code = codeMapper.getCode("FIM022", "114"); return capacity != 0 ?
capacity = toInt(notEmpty(code, "capacity").getEtc1()); getLevyExcl(capacity, null, crdn) :
} null;
if (capacity == 0) /*
return null;
int vhclCpct = crdn.getVhclCpct(); int vhclCpct = crdn.getVhclCpct();
if (vhclCpct == 0) // 정원미확인 -> 초기상태 if (vhclCpct == 0) // 정원미확인 -> 초기상태
return null; //newLevyExcl(crdn, "1", "115"); return null; //newLevyExcl(crdn, "1", "115");
boolean target = isTarget(new Vhrno(), crdn);
if (vhclCpct < capacity) // 정원미만 if (vhclCpct < capacity) // 정원미만
return newLevyExcl(crdn, "1", "114"); return newLevyExcl(crdn, "1", "114");
boolean enforce = vhclCpct >= capacity && isTarget(new Vhrno(), crdn); boolean enforce = vhclCpct >= capacity && target;
if (enforce) // 정원초과, 승합차, 운수사업 일반 -> 단속대상: 계도(시범운영) if (enforce) // 정원초과, 승합차, 운수사업 일반 -> 단속대상: 계도(시범운영)
return newLevyExcl(crdn, "2", "206"); return newLevyExcl(crdn, "2", "206");
else else
return newLevyExcl(crdn, "1", "103"); // 부과제외(일반차량) return newLevyExcl(crdn, "1", "103"); // 부과제외(일반차량)
*/
} }
} }

@ -2,8 +2,10 @@ spring:
datasource: datasource:
hikari: hikari:
fims: fims:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driver-class-name: org.mariadb.jdbc.Driver
jdbc-url: jdbc:log4jdbc:mariadb://98.1.1.94:53306/fims?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&useSSL=false&autocommit=false # driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jdbc-url: jdbc:mariadb://211.119.124.9:4407/fims_chongno?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&useSSL=false&autocommit=false
# jdbc-url: jdbc:log4jdbc:mariadb://98.1.1.94:53306/fims?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&useSSL=false&autocommit=false
username: fimsweb username: fimsweb
password: xit581!*)& password: xit581!*)&
auto-commit: false auto-commit: false

@ -63,16 +63,16 @@
</root> </root>
<logger name="jdbc" level="OFF"/> <logger name="jdbc" level="OFF"/>
<logger name="org.apache.commons" level="OFF"/> <logger name="org.apache.commons" level="OFF" additivity="false"/>
<logger name="org.mariadb" level="OFF"/> <logger name="org.mariadb" level="OFF" additivity="false"/>
<logger name="jdbc.connection" level="OFF"/> <logger name="jdbc.connection" level="OFF" additivity="false"/>
<logger name="jdbc.sqlonly" level="OFF"/> <logger name="jdbc.sqlonly" level="OFF" additivity="false"/>
<logger name="jdbc.resultset" level="OFF"/> <logger name="jdbc.resultset" level="OFF" additivity="false"/>
<logger name="jdbc.resultsettable" level="OFF"/> <logger name="jdbc.resultsettable" level="OFF" additivity="false"/>
<logger name="jdbc.audit" level="OFF"/> <logger name="jdbc.audit" level="OFF" additivity="false"/>
<logger name="jdbc.sqltiming" level="DEBUG" /> <logger name="jdbc.sqltiming" level="DEBUG"/>
<logger name="com.zaxxer" level="OFF"/> <logger name="com.zaxxer" level="OFF" additivity="false"/>
<logger name="org.quartz" level="Error"/> <logger name="org.quartz" level="Error" additivity="false"/>
<!-- 특정패키지 로깅레벨 설정 --> <!-- 특정패키지 로깅레벨 설정 -->
<logger name="cokr.xit" level="DEBUG" additivity="false"> <logger name="cokr.xit" level="DEBUG" additivity="false">

@ -10,5 +10,6 @@
"nxrpDemonYn" : "Y", "nxrpDemonYn" : "Y",
"violationFileDir": "files/cctv", "violationFileDir": "files/cctv",
"txtCharset": "UTF-8", "txtCharset": "UTF-8",
"disableLvis": true "disableLvis": true,
"lookupEqpPlc": true
} }

@ -180,23 +180,26 @@ let cctv = {
} }
wait(false); wait(false);
let content = "<ul>" + [ let items = [
"업로드 파일: " + result.received, "업로드 파일: " + numberFormat.format(result.received),
"처리 대상: " + result.divided, "처리 대상: " + numberFormat.format(result.divided),
"정상: " + result.normal, "정상: " + numberFormat.format(result.normal),
"메타파일 누락: " + result.malformed, "단속 등록: " + numberFormat.format(result.success)
"", ];
"단속 등록: " + result.success, if (result.malformed || result.duplicates || result.invalidPlace)
"중복 제외: " + result.duplicates items.push("");
] if (result.malformed)
.map(str => "<li>" + str + "</li>") items.push("메타파일 누락: " + numberFormat.format(result.malformed));
.join("") + "</ul>"; if (result.duplicates)
items.push("중복 제외: " + numberFormat.format(result.duplicates));
if (result.invalidPlace)
items.push("단속장소 오류: " + numberFormat.format(result.invalidPlace));
dialog.alert({ dialog.alert({
content: content, content: "<ul class='text-start'>" + items.map(str => "<li>" + str + "</li>").join("") + "</ul>",
onOK: () => {}, onOK: () => {},
onClose: () => $C.getFiles(cctv.dir) onClose: () => $C.getFiles(cctv.dir)
}); });
} }
}; };

@ -197,22 +197,25 @@ let localFiles = {
} }
wait(false); wait(false);
let content = "<ul>" + [ let items = [
"업로드 파일: " + result.received, "업로드 파일: " + numberFormat.format(result.received),
"처리 대상: " + result.divided, "처리 대상: " + numberFormat.format(result.divided),
"정상: " + result.normal, "정상: " + numberFormat.format(result.normal),
"메타파일 누락: " + result.malformed, "단속 등록: " + numberFormat.format(result.success)
"", ];
"단속 등록: " + result.success, if (result.malformed || result.duplicates || result.invalidPlace)
"중복 제외: " + result.duplicates items.push("");
] if (result.malformed)
.map(str => "<li>" + str + "</li>") items.push("메타파일 누락: " + numberFormat.format(result.malformed));
.join("") + "</ul>"; if (result.duplicates)
items.push("중복 제외: " + numberFormat.format(result.duplicates));
if (result.invalidPlace)
items.push("단속장소 오류: " + numberFormat.format(result.invalidPlace));
dialog.alert({ dialog.alert({
content: content, content: "<ul class='text-start'>" + items.map(str => "<li>" + str + "</li>").join("") + "</ul>",
onOK: () => {uploadSet.clear();}, onOK: () => {uploadSet.clear();},
}); });
} }
}; };

@ -157,8 +157,7 @@
<div class="card-datatable text-nowrap"> <div class="card-datatable text-nowrap">
<div class="dataTables_wrapper dt-bootstrap5"> <div class="dataTables_wrapper dt-bootstrap5">
<div name="table-responsive" <div name="table-responsive" class="table-responsive h-px-500">
class="table-responsive h-px-500">
<table name="crdnTable" class="table-layout-fixed table table-bordered dataTable"> <table name="crdnTable" class="table-layout-fixed table table-bordered dataTable">
<thead class="sticky-thead"> <thead class="sticky-thead">
<tr name="crdnThead" data-search-target="[data-doctx='${pageName}']"> <tr name="crdnThead" data-search-target="[data-doctx='${pageName}']">
@ -305,7 +304,8 @@ $(document).ready(function(){
ctrl.dataset.onSort = sorter => { ctrl.dataset.onSort = sorter => {
let t = $P.getGridTemplate(), let t = $P.getGridTemplate(),
trs = Apply.fromDataset.getTbody(ctrl.dataset, t.found, t.notFound, t.replacer); trs = Apply.fromDataset.getTbody(ctrl.dataset, t.found, t.notFound, t.replacer);
$P.renderCrdnList(ctrl.dataset.totalSize, ctrl.dataset.length, trs); if (sorter.by)
$P.renderCrdnList(ctrl.dataset.totalSize, ctrl.dataset.length, trs);
document.querySelectorAll("div[data-doctx='${pageName}'] table[name='crdnTable'] th[data-sort]").forEach(th => { document.querySelectorAll("div[data-doctx='${pageName}'] table[name='crdnTable'] th[data-sort]").forEach(th => {
th.classList.remove( th.classList.remove(
@ -501,9 +501,10 @@ $(document).ready(function(){
} }
$P.renderCrdnList = (total, listLength, trs, option) => { $P.renderCrdnList = (total, listLength, trs, option) => {
debug("renderCrdnList");
let noMore = (listLength >= total); let noMore = (listLength >= total);
let initScroll = (ctrl.query.pageNum < 2); let initScroll = (ctrl.query.pageNum < 2);
if (option != null && option.reloaded){ if (option && option.reloaded){
initScroll = false; initScroll = false;
} }

@ -122,7 +122,9 @@ $(document).ready(function(){
ctrl.dataset.onSort = sorter => { ctrl.dataset.onSort = sorter => {
let t = $P.getGridTemplate(), let t = $P.getGridTemplate(),
trs = Apply.fromDataset.getTbody(ctrl.dataset, t.found, t.notFound, t.replacer); trs = Apply.fromDataset.getTbody(ctrl.dataset, t.found, t.notFound, t.replacer);
$P.renderExmptnVhclList(ctrl.dataset.totalSize, ctrl.dataset.length, trs);
if (sorter.by)
$P.renderExmptnVhclList(ctrl.dataset.totalSize, ctrl.dataset.length, trs);
document.querySelectorAll("div[data-doctx='${pageName}'] table[name='exmptnVhclTable'] th[data-sort]").forEach(th => { document.querySelectorAll("div[data-doctx='${pageName}'] table[name='exmptnVhclTable'] th[data-sort]").forEach(th => {
th.classList.remove( th.classList.remove(

@ -287,6 +287,23 @@ CREATE OR REPLACE TABLE TB_CRDN_FILE_LINK (
PRIMARY KEY (FILE_LINK_ID) PRIMARY KEY (FILE_LINK_ID)
) COMMENT = '단속 파일 연계'; ) COMMENT = '단속 파일 연계';
CREATE OR REPLACE TABLE TB_EQP_PLC (
EQPLC_CD VARCHAR(5) NOT NULL COMMENT 'ID(순번)',
CMPNY_CD VARCHAR(3) NOT NULL COMMENT '업체코드',
EQP_CD VARCHAR(3) NOT NULL COMMENT '장비코드',
PLC_NM VARCHAR(200) NOT NULL COMMENT '단속장소 이름',
STDG_NM VARCHAR(60) COMMENT '법정동명',
ROAD_NM VARCHAR(100) COMMENT '도로명',
PLC VARCHAR(200) COMMENT '단속장소',
LANE_NO VARCHAR(2) COMMENT '차선번호',
DRCTN VARCHAR(1) COMMENT '차선방향',
ETC_INFO VARCHAR(128) COMMENT '기타정보',
REG_DT VARCHAR(14) COMMENT '등록일시',
RGTR VARCHAR(10) COMMENT '등록자',
USE_YN VARCHAR(1) NOT NULL DEFAULT 'Y' COMMENT '사용여부',
PRIMARY KEY (EQPLC_CD)
) COMMENT = '단속장비 및 장소';
CREATE OR REPLACE TABLE TB_CAR_BSC_MTTR ( CREATE OR REPLACE TABLE TB_CAR_BSC_MTTR (
BSC_MTTR_ID VARCHAR(30) NOT NULL COMMENT '기본 사항 ID', BSC_MTTR_ID VARCHAR(30) NOT NULL COMMENT '기본 사항 ID',
MESSAGEID VARCHAR(10) NULL COMMENT '결과 메시지 ID', MESSAGEID VARCHAR(10) NULL COMMENT '결과 메시지 ID',
@ -705,6 +722,7 @@ CREATE OR REPLACE TABLE TB_CRDN_ADI (
CRDN_ID VARCHAR(20) NOT NULL COMMENT '단속 ID', CRDN_ID VARCHAR(20) NOT NULL COMMENT '단속 ID',
CRDN_SE_CD VARCHAR(2) NULL COMMENT '단속 구분 코드', CRDN_SE_CD VARCHAR(2) NULL COMMENT '단속 구분 코드',
TEAM_ID VARCHAR(10) NULL COMMENT '조 ID', TEAM_ID VARCHAR(10) NULL COMMENT '조 ID',
EQP_CD VARCHAR(3) NULL COMMENT '장비 코드',
DTL_CRDN_PLC VARCHAR(300) NULL COMMENT '상세 단속 장소', DTL_CRDN_PLC VARCHAR(300) NULL COMMENT '상세 단속 장소',
CRDN_SPAREA_CD VARCHAR(2) NULL COMMENT '단속 특별구역 코드', CRDN_SPAREA_CD VARCHAR(2) NULL COMMENT '단속 특별구역 코드',
CRDN_BGNG_TM VARCHAR(6) NULL COMMENT '단속 시작 시각', CRDN_BGNG_TM VARCHAR(6) NULL COMMENT '단속 시작 시각',

Loading…
Cancel
Save