미납차량판독 처리 수정

main
이범준 3 weeks ago
parent 2ce26843e5
commit e7ae77b78e

@ -766,22 +766,44 @@ public class FineTransServiceImpl implements FineTransService {
@Override
public Long countExemptCar(FineTransVO param) throws Exception {
Long res = (long) 0;;
Long res = (long) 0;
if(param.getCarNo().equals("????????????")){
if(param.getCarNo().indexOf("???") != -1){
return res;
}
if(param.getCarNo().indexOf("XXX") != -1){
return res;
}
return fineTransDao.countExemptCar(param);
}
@Override
public Long countWrongCar(FineTransVO param) throws Exception {
Long res = (long) 0;
if(param.getCarNo().indexOf("???") != -1){
return res;
}
if(param.getCarNo().indexOf("XXX") != -1){
return res;
}
return fineTransDao.countWrongCar(param);
}
@Override
public Long countSameCar(FineTransVO param) throws Exception {
Long res = (long) 0;
if(param.getCarNo().indexOf("???") != -1){
return res;
}
if(param.getCarNo().indexOf("XXX") != -1){
return res;
}
return fineTransDao.countSameCar(param);
}

@ -28,7 +28,7 @@ public interface CommCollectServerDao {
public List<Map<String, Object>> selectSmallCarInfo(Map<String, String> param);
public List<Map<String, Object>> selectReduCarList(Map<String, String> param);
public List<Map<String, Object>> selectExemptCarInfo(Map<String, String> param);
public List<Map<String, Object>> selectExemptCarInfoAuto(Map<String, String> param);
public List<Map<String, String>> selectExemptCarInfoAuto(Map<String, String> param);
}

@ -150,31 +150,26 @@
<update id="updateDecisionResult" parameterType="hashmap">
/* 자동판독결과 수정 */
UPDATE DEFAULT_FARE_READ_INFO_DAMO
SET
READ_RESULT_ID = #{READ_RESULT_ID},
READING_ID = #{READING_ID},
READ_KBN = #{READ_KBN},
READER = 'ADMIN',
READING_DATE = SYSDATE,
REMARKS = #{REMARKS},
EXEMPT_REASON_ID = #{EXEMPT_REASON_ID},
RECEIPT_RESULT_ID = '99',
RECEIPT_DATE = to_char(SYSDATE, 'YYYYMMDD'),
UPDATER = #{WORKER},
UPDATE_DATE = SYSDATE
WHERE WORKER_ID = #{workerId}
AND FARE_OFFICE_ID = #{fareOfficeId}
AND BOOTH_ID = #{boothId}
AND YEAR = #{year}
AND MONTH = #{month}
AND DAY = #{day}
AND WORK_TIMES = #{workTimes}
AND SEQNO = #{seqno}
UPDATE DEFAULT_FARE_READ_INFO_DAMO
SET READ_RESULT_ID = #{READ_RESULT_ID}
, READING_ID = #{READING_ID}
, READ_KBN = #{READ_KBN}
, READER = 'ADMIN'
, READING_DATE = SYSDATE
, REMARKS = #{REMARKS}
, EXEMPT_REASON_ID = #{EXEMPT_REASON_ID}
, RECEIPT_RESULT_ID = '99'
, RECEIPT_DATE = to_char(SYSDATE, 'YYYYMMDD')
, UPDATER = #{WORKER}
, UPDATE_DATE = SYSDATE
WHERE WORKER_ID = #{workerId}
AND FARE_OFFICE_ID = #{fareOfficeId}
AND BOOTH_ID = #{boothId}
AND YEAR = #{year}
AND MONTH = #{month}
AND DAY = #{day}
AND WORK_TIMES = #{workTimes}
AND SEQNO = #{seqno}
</update>

@ -328,20 +328,47 @@ ORDER BY CHANGED_DATA.CHANGED_DT
<select id="selectExemptCarInfoAuto" parameterType="hashmap" resultType="hashmap">
/* 면제 등록차량 조회 - 자동판독용(차량번호, 통행연월일)*/
SELECT decode(EXEMPT_KBN, '1', '11', '2', '13', '05') as EXEMPT_KBN
, decode(EXEMPT_KBN, '1', '장애인차량/국가유공자 차량', '2', '저공해 면제 차량', '면제지침 차량') as REMARKS
SELECT DECODE(EXEMPT_KBN
, '2', '14'
, '3', '11'
, '7', '15'
, '5', '10'
, '4', '05'
, '0', '05'
, '05') AS EXEMPT_REASON_ID
, DECODE(EXEMPT_KBN
, '2', '저공해 면제 차량'
, '3', '장애인차량'
, '7', '다자녀차량'
, '5', '승용겸화물'
, '4', '국가유공자차량'
, '0', '공문 면제 차량'
, '면제지침 차량') AS REMARKS
, DECODE(EXEMPT_KBN
, '2', 2
, '3', 3
, '7', 1
, '5', 7
, '4', 5
, '0', 4
, 9) AS EXEMPT_RANK
FROM EXEMPT_CARS_INFO
WHERE CAR_NO = #{carNo}
AND TO_CHAR(ENFORCE_DATE, 'YYYYMMDD') <![CDATA[ <= ]]> #{year}||#{month}||#{day}
AND TO_CHAR(ENFORCE_DATE, 'YYYYMMDD') <![CDATA[ <= ]]> (#{year}||#{month}||#{day})
AND TO_CHAR(END_DATE, 'YYYYMMDD') <![CDATA[ >= ]]> (#{year}||#{month}||#{day})
UNION ALL
SELECT '13' as EXEMPT_KBN
, '저공해 면제 차량' as REMARKS
SELECT '14' AS EXEMPT_REASON_ID
, '저공해 면제 차량' AS REMARKS
, 2 AS EXEMPT_RANK
FROM RFID_INFO
WHERE DAMAGE_NO = '0'
AND WEEK_WRONG_NO <![CDATA[ < ]]> 3
AND CAR_TYPE_KBN = '000E'
AND CAR_NO = #{carNo}
ORDER BY EXEMPT_RANK
</select>
</mapper>

@ -26,7 +26,7 @@ public interface CommCollectServerService {
public List<Map<String, Object>> selectSmallCarInfo(Map<String, String> param) throws Exception;
public List<Map<String, Object>> selectReduCarList(Map<String, String> param) throws Exception;
public List<Map<String, Object>> selectExemptCarInfo(Map<String, String> param) throws Exception;
public List<Map<String, Object>> selectExemptCarInfoAuto(Map<String, String> param) throws Exception;
public List<Map<String, String>> selectExemptCarInfoAuto(Map<String, String> param) throws Exception;

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import javax.annotation.Resource;
@ -103,12 +104,166 @@ public class CommCollectServerServiceImpl implements CommCollectServerService {
}
@Override
public List<Map<String, Object>> selectExemptCarInfoAuto(Map<String, String> param) throws Exception {
public List<Map<String, String>> selectExemptCarInfoAuto(Map<String, String> param) throws Exception {
List<Map<String, String>> resultList = new ArrayList<Map<String, String>>();
Map<String, String> resultMap = new HashMap<String, String>();
String strCarNo = param.get("carNo");
if(strCarNo == null || strCarNo.equals("")
|| strCarNo.indexOf("???") != -1 || strCarNo.indexOf("XXX") != -1){
return null;
}
boolean diplomatic = false;
if(strCarNo.startsWith("외빈") || strCarNo.startsWith("외교")
|| strCarNo.startsWith("영사") || strCarNo.startsWith("준영")
|| strCarNo.startsWith("국기") || strCarNo.startsWith("대표") || strCarNo.startsWith("협정")
|| strCarNo.startsWith("의전")){
diplomatic = true;
}
String temp = strCarNo.replace("-", "");
if(temp.length() == 6){
if(Pattern.matches("^[A-Z]*$", temp.substring(0,3)) && Pattern.matches("^[0-9]*$", temp.substring(3))){
diplomatic = true;
}
}
if(diplomatic){
resultMap.put("EXEMPT_REASON_ID", "13");
resultMap.put("REMARKS","외교차량");
resultMap.put("REMARKS2", "면제자동판단(외교차량)");
resultList.add(resultMap);
return resultList;
}
if(strCarNo.length() < 7 || strCarNo.length() > 9){
return null;
}
if(strCarNo.substring(0, 3).equals("998") || strCarNo.substring(0, 3).equals("999")){
resultMap.put("EXEMPT_REASON_ID", "09");
resultMap.put("REMARKS","긴급차량");
resultMap.put("REMARKS2", "면제자동판단(긴급자량)");
resultList.add(resultMap);
return resultList;
}
if(strCarNo.startsWith("영")){
return null;
}
String frontNum = "";
String middleHan = "";
if(strCarNo.length() == 7) { // 01가1234
frontNum = strCarNo.substring(strCarNo.length()-7, strCarNo.length()-5);
} else if(strCarNo.length() == 8) { // 123가1234, 서울1가1234
frontNum = strCarNo.substring(0, 3);
if(!isNumeric(frontNum)) {
frontNum = frontNum.substring(frontNum.length() -1, frontNum.length());
}
} else if(strCarNo.length() == 9) { // 서울01가1234
frontNum = strCarNo.substring(strCarNo.length() -7, strCarNo.length()-5);
}
if(!isNumeric(frontNum)){
return null;
}
middleHan = strCarNo.substring(strCarNo.length()-5, strCarNo.length()-4);
if(middleHan.equals("국") || middleHan.equals("합") || middleHan.equals("육") || middleHan.equals("해") || middleHan.equals("공")){
resultMap.put("EXEMPT_REASON_ID", "13");
resultMap.put("REMARKS", "군용차량");
resultMap.put("REMARKS2", "면제자동판단(군용차량)");
resultList.add(resultMap);
return resultList;
}
int carCode = 0;
if(frontNum.length() == 1){
if(Integer.parseInt(frontNum) >= 1 && Integer.parseInt(frontNum) <= 4){
carCode = 1;
} else if(Integer.parseInt(frontNum) >= 5 && Integer.parseInt(frontNum) <= 6){
carCode = 2;
} else if(Integer.parseInt(frontNum) >= 7 && Integer.parseInt(frontNum) <= 8){
carCode = 3;
}
} else if(frontNum.length() == 2){
if(Integer.parseInt(frontNum) >= 1 && Integer.parseInt(frontNum) <= 69){
carCode = 1;
} else if(Integer.parseInt(frontNum) >= 70 && Integer.parseInt(frontNum) <= 79){
carCode = 2;
} else if(Integer.parseInt(frontNum) >= 80 && Integer.parseInt(frontNum) <= 97){
carCode = 3;
} else if(Integer.parseInt(frontNum) >= 98 && Integer.parseInt(frontNum) <= 99){
carCode = 4;
}
} else if(frontNum.length() == 3){
if(Integer.parseInt(frontNum) >= 100 && Integer.parseInt(frontNum) <= 699){
carCode = 1;
} else if(Integer.parseInt(frontNum) >= 700 && Integer.parseInt(frontNum) <= 799){
carCode = 2;
} else if(Integer.parseInt(frontNum) >= 800 && Integer.parseInt(frontNum) <= 979){
carCode = 3;
} else if(Integer.parseInt(frontNum) >= 980 && Integer.parseInt(frontNum) <= 997){
carCode = 4;
}
}
if(carCode == 1){
if(middleHan.equals("바") || middleHan.equals("사") || middleHan.equals("아") || middleHan.equals("자")){
carCode = 6;
}
} else if(carCode == 2){
if(middleHan.equals("바") || middleHan.equals("사") || middleHan.equals("아") || middleHan.equals("자")){
carCode = 7;
}
}
if(carCode == 2){
resultMap.put("EXEMPT_REASON_ID", "12");
resultMap.put("REMARKS","11인승이상");
resultMap.put("REMARKS2", "면제자동판단(11인승 이상)");
resultList.add(resultMap);
return resultList;
}
if(carCode == 3){
resultMap.put("EXEMPT_REASON_ID", "10");
resultMap.put("REMARKS","화물자동차");
resultMap.put("REMARKS2", "면제자동판단(화물자동차)");
resultList.add(resultMap);
return resultList;
}
if(carCode == 4){
resultMap.put("EXEMPT_REASON_ID", "13");
resultMap.put("REMARKS","특수자동차");
resultMap.put("REMARKS2", "면제자동판단(특수자동차)");
resultList.add(resultMap);
return resultList;
}
if(carCode == 6){
resultMap.put("EXEMPT_REASON_ID", "13");
resultMap.put("REMARKS","택시");
resultMap.put("REMARKS2", "면제자동판단(택시)");
resultList.add(resultMap);
return resultList;
}
if(carCode == 7){
resultMap.put("EXEMPT_REASON_ID", "13");
resultMap.put("REMARKS","버스");
resultMap.put("REMARKS2", "면제자동판단(버스)");
resultList.add(resultMap);
return resultList;
}
return dao.selectExemptCarInfoAuto(param);
}

@ -100,87 +100,77 @@ public class CommWebBrowserController {
*
* <pre></pre>
*/
@RequestMapping(value="/cfs/trsmrcv/callDecisionTrough.do", method=RequestMethod.POST)
@RequestMapping(value={"/cfs/trsmrcv/callDecisionTrough.do"}, method=RequestMethod.POST)
public @ResponseBody Map<String, Object> callDecisionTrough(@RequestBody Map<String, String> param, HttpServletRequest request) throws Exception {
ResultSmartPlatform result = new ResultSmartPlatform();
Map<String, Object> mapOrg = new HashMap<String, Object>();
/*
*
*
*
*
* ...
*/
ResultSmartPlatform webRes = new ResultSmartPlatform();
Map<String, Object> webResData = new HashMap<String, Object>();
String carNo = param.get("carNo");
if(carNo == null){
carNo = "";
param.put("carNo", carNo);
}
if(carNo.equals("")
||carNo.indexOf("???") != -1
|| carNo.indexOf("XXX") != -1){
webResData = new HashMap<String, Object>();
webResData.put("resultExmpCd", "00");
webResData.put("resultDecode", "00");
webRes.setData(ResultSmartPlatform.RESULT_KEY_DEFAULT, webResData);
webRes.setMsg(ResultSmartPlatform.STATUS_SUCESS, "정상적으로 처리되었습니다.(대상 없음)");
return webRes.getResult();
}
Map<String, Object> map = null;
List<Map<String, Object>> obj = null;
try {
mapOrg.put("READ_RESULT_ID", "01");
mapOrg.put("READING_ID", "30");
mapOrg.put("READ_KBN", "1");
mapOrg.put("READER", "admin");
mapOrg.put("workerId", param.get("workerId"));
mapOrg.put("fareOfficeId", param.get("fareOfficeId"));
mapOrg.put("boothId", param.get("boothId"));
mapOrg.put("year", param.get("year"));
mapOrg.put("month", param.get("month"));
mapOrg.put("day", param.get("day"));
mapOrg.put("workTimes", param.get("workTimes"));
mapOrg.put("seqno", param.get("seqno"));
// 차량번호기준 면제 체크
String exmptCheckReturn = this.searchExmptCarNo(param.get("carNo"), true);
Map<String, String> exemptSearchMap = new HashMap<String, String>();
exemptSearchMap.put("carNo", param.get("carNo").toString());
exemptSearchMap.put("year", param.get("year").toString());
exemptSearchMap.put("month", param.get("month").toString());
exemptSearchMap.put("day", param.get("day").toString());
if(exmptCheckReturn.equals("03") == true) {
map = new HashMap<String, Object>();
map.put("resultExmpCd", "01");
map.put("resultDecode", "10");
map.put("remarks", "화물 차량/경형승합화물");
List<Map<String, String>> exemptResultSet = commCollectServerService.selectExemptCarInfoAuto(exemptSearchMap);
if(exemptResultSet != null && exemptResultSet.size() > 0) {
mapOrg.put("EXEMPT_REASON_ID", "10");
mapOrg.put("REMARKS", "면제자동판단(화물자동차)");
mapOrg.put("WORKER", "시스템");
webResData = new HashMap<String, Object>();
webResData.put("resultExmpCd", "01");
commCollectServerService.updateDecisionResult(mapOrg);
logger.info("자동판독 면제처리1 (" + param.get("carNo") + ")");
logger.info(map.toString());
result.setData(ResultSmartPlatform.RESULT_KEY_DEFAULT, map);
result.setMsg(ResultSmartPlatform.STATUS_SUCESS, "정상적으로 처리되었습니다.");
return result.getResult();
}
if(exmptCheckReturn.equals("05") == true) {
Map<String, String> mapTemp = new HashMap<String, String>();
mapTemp.put("carNo", param.get("carNo").toString());
mapTemp.put("year", param.get("year").toString());
mapTemp.put("month", param.get("month").toString());
mapTemp.put("day", param.get("day").toString());
Map<String,String> exemptResultSet1 = exemptResultSet.get(0);
obj = commCollectServerService.selectExemptCarInfoAuto(mapTemp);
if(obj != null && obj.size() > 0) {
map = new HashMap<String, Object>();
map.put("resultExmpCd", "01");
map.put("resultDecode", obj.get(0).get("EXEMPT_KBN").toString());
map.put("remarks", obj.get(0).get("REMARKS").toString());
mapOrg.put("EXEMPT_REASON_ID", obj.get(0).get("EXEMPT_KBN").toString());
mapOrg.put("REMARKS", obj.get(0).get("REMARKS").toString());
mapOrg.put("WORKER", "시스템");
commCollectServerService.updateDecisionResult(mapOrg);
logger.info("자동판독 면제처리2 (" + param.get("carNo") + ")");
logger.info(map.toString());
result.setData(ResultSmartPlatform.RESULT_KEY_DEFAULT, map);
result.setMsg(ResultSmartPlatform.STATUS_SUCESS, "정상적으로 처리되었습니다.");
return result.getResult();
webResData.put("resultDecode", exemptResultSet1.get("EXEMPT_REASON_ID"));
webResData.put("remarks", exemptResultSet1.get("REMARKS"));
Map<String, Object> udtMap = new HashMap<String, Object>();
udtMap.put("workerId", param.get("workerId"));
udtMap.put("fareOfficeId", param.get("fareOfficeId"));
udtMap.put("boothId", param.get("boothId"));
udtMap.put("year", param.get("year"));
udtMap.put("month", param.get("month"));
udtMap.put("day", param.get("day"));
udtMap.put("workTimes", param.get("workTimes"));
udtMap.put("seqno", param.get("seqno"));
udtMap.put("READ_RESULT_ID", "01");
udtMap.put("READING_ID", "30");
udtMap.put("READ_KBN", "1");
udtMap.put("READER", "admin");
udtMap.put("EXEMPT_REASON_ID", exemptResultSet1.get("EXEMPT_REASON_ID"));
if(exemptResultSet1.get("REMARKS2") != null && !exemptResultSet1.get("REMARKS2").equals("")){
udtMap.put("REMARKS", exemptResultSet1.get("REMARKS2"));
} else {
udtMap.put("REMARKS", exemptResultSet1.get("REMARKS"));
}
udtMap.put("WORKER", "시스템");
commCollectServerService.updateDecisionResult(udtMap);
webRes.setData(ResultSmartPlatform.RESULT_KEY_DEFAULT, webResData);
webRes.setMsg(ResultSmartPlatform.STATUS_SUCESS, "정상적으로 처리되었습니다.");
return webRes.getResult();
}
Map<String, String> codeMap_redu = new HashMap<String, String>();
codeMap_redu.put("00", "경차");
@ -189,12 +179,11 @@ public class CommWebBrowserController {
codeMap_redu.put("03", "저공해");
String reduCheckReturn = "";
obj = commCollectServerService.selectReduCarList(param);
if(obj != null && obj.size() > 0) {
List<Map<String, Object>> reduResultSet = commCollectServerService.selectReduCarList(param);
if(reduResultSet != null && reduResultSet.size() > 0) {
boolean localResidentsYn = false;
for(int i=0; i<obj.size(); i++){
if(obj.get(i).get("REDU_CD").toString().equals("02")){
for(int i=0; i<reduResultSet.size(); i++){
if(reduResultSet.get(i).get("REDU_CD").toString().equals("02")){
localResidentsYn = true;
}
}
@ -202,120 +191,39 @@ public class CommWebBrowserController {
if(localResidentsYn){
reduCheckReturn = "02";
} else {
reduCheckReturn = obj.get(0).get("REDU_CD").toString();
reduCheckReturn = reduResultSet.get(0).get("REDU_CD").toString();
}
}
if(!reduCheckReturn.equals("")){
map = new HashMap<String, Object>();
map.put("resultExmpCd", "20");
map.put("resultDecode", reduCheckReturn);
map.put("remarks", String.format("%s감면 차량", codeMap_redu.get(reduCheckReturn)));
webResData = new HashMap<String, Object>();
webResData.put("resultExmpCd", "20");
webResData.put("resultDecode", reduCheckReturn);
webResData.put("remarks", String.format("%s감면 차량", codeMap_redu.get(reduCheckReturn)));
logger.info("자동판독 감면처리 (" + param.get("carNo") + ")");
logger.info(map.toString());
result.setData(ResultSmartPlatform.RESULT_KEY_DEFAULT, map);
result.setMsg(ResultSmartPlatform.STATUS_SUCESS, "정상적으로 처리되었습니다.");
return result.getResult();
webRes.setData(ResultSmartPlatform.RESULT_KEY_DEFAULT, webResData);
webRes.setMsg(ResultSmartPlatform.STATUS_SUCESS, "정상적으로 처리되었습니다.");
return webRes.getResult();
}
map = new HashMap<String, Object>();
map.put("resultExmpCd", "00");
map.put("resultDecode", "00");
result.setMsg(ResultSmartPlatform.STATUS_SUCESS, "정상적으로 처리되었습니다.(대상 없음)");
result.setData(ResultSmartPlatform.RESULT_KEY_DEFAULT, map);
webResData = new HashMap<String, Object>();
webResData.put("resultExmpCd", "00");
webResData.put("resultDecode", "00");
webRes.setMsg(ResultSmartPlatform.STATUS_SUCESS, "정상적으로 처리되었습니다.(대상 없음)");
webRes.setData(ResultSmartPlatform.RESULT_KEY_DEFAULT, webResData);
}catch(RuntimeException e) {
result.setErrorMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE);
webRes.setErrorMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE);
} catch (Exception e) {
result.setErrorMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE);
}
webRes.setErrorMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE);
}
logger.info(result.getResult().get("resultMessage").toString());
return result.getResult();
return webRes.getResult();
}
//
private boolean isNumeric(String s) {
try {
Double.parseDouble(s);
return true;
} catch(NumberFormatException e) {
return false;
}
}
private String searchExmptCarNo(String strCarNo, boolean isAuto) {
// 차량번호로 면제 처리
// 비사업자용외 면제
List<String> list = new ArrayList<String>();
list.add("아");
list.add("사");
list.add("바");
list.add("자");
list.add("배");
if(isAuto == false) {
list.add("국");
list.add("합");
list.add("육");
list.add("해");
list.add("공");
list.add("외교");
list.add("영사");
list.add("준외");
list.add("준영");
list.add("협정");
list.add("대표");
}
for(int i = 0; i < list.size(); i++) {
if(strCarNo.contains(list.get(i)) == true)
return "03";
}
// 비승용차 면제
String strTemp = "";
if(strCarNo.length() == 9) { // 서울01가1234
strTemp = strCarNo.substring(strCarNo.length() -7, strCarNo.length()-5);
}
else if(strCarNo.length() == 7) { // 01가1234
strTemp = strCarNo.substring(strCarNo.length() -7, strCarNo.length()-5);
}
else if(strCarNo.length() == 8) { // 123가1234, 서울1가1234
strTemp = strCarNo.substring(0, 3);
if(isNumeric(strTemp) == true) {
return "";
}
else {
strTemp = strTemp.substring(strTemp.length() -1, strTemp.length());
}
}
if(Integer.parseInt(strTemp) >= 70)
return "03";
// 면제 테이블 조회
Map<String, String> param = new HashMap<String, String>();
param.put("carNo", strCarNo);
try {
List<Map<String, Object>> obj = commCollectServerService.selectExemptCarInfo(param);
if(obj != null && Integer.parseInt(obj.get(0).get("CNT").toString()) > 0) {
System.out.println(obj.get(0).get("CAR_NO"));
if(isAuto == true)
return "05";
else
return "03";
}
logger.info("면제 테이블 조회");
} catch (Exception e) {
logger.info("");
}
return "";
}
//
/**

Loading…
Cancel
Save