제주시 전기차 렌트차량단속자료 생성 기능 추가(테스트용)

main
이범준 2 months ago
parent e3d1977019
commit d3ee9a36ca

@ -0,0 +1,19 @@
package cokr.xit;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
public static String addDay(String yyyymmdd, int dayN) throws ParseException{
SimpleDateFormat sdf8 = (new SimpleDateFormat("yyyyMMdd"));
Calendar cal = Calendar.getInstance();
Date dateObj = sdf8.parse(yyyymmdd);
cal.setTime(dateObj);
cal.add(Calendar.DAY_OF_MONTH, dayN);
String calc = sdf8.format(cal.getTime());
return calc;
}
}

@ -0,0 +1,19 @@
package externalsystem.cleanparking;
import lombok.Getter;
@Getter
public class PlaceVO {
private String placeName;
private String stdgCode;
public PlaceVO setPlaceName(String placeName) {
this.placeName = placeName;
return this;
}
public PlaceVO setStdgCode(String stdgCode) {
this.stdgCode = stdgCode;
return this;
}
}

@ -0,0 +1,13 @@
package externalsystem.cleanparking;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class RentCorpVO {
private String corpName;
private String corpNo6;
private String corpNoEnc;
}

@ -1,17 +1,31 @@
package externalsystem.cleanparking.web;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.DateUtil;
import cokr.xit.base.crypto.bean.XitAria;
import cokr.xit.foundation.web.AbstractController;
import externalsystem.cleanparking.ConfUtil;
import externalsystem.cleanparking.PlaceVO;
import externalsystem.cleanparking.RentCorpVO;
@Controller
@RequestMapping(name="클린파킹", value="/cleanparking")
public class CpController extends AbstractController {
@ -76,4 +90,269 @@ public class CpController extends AbstractController {
return returnStr;
}
//단속자료생성메인
@RequestMapping(name="단속 자료 생성 화면", value="/createCrdnMain.do")
public ModelAndView createCrdnMain() {
ModelAndView mav = new ModelAndView();
mav.setViewName("cp/createCrdn-main");
mav.addObject("pageName", "createCrdn");
return mav;
}
//단속자료생성요청
@RequestMapping(name="단속 자료 생성", value="/createCrdn.do")
public ModelAndView createCrdn(HttpServletRequest req) {
ModelAndView mav = new ModelAndView("jsonView");
String selectedCorp = req.getParameter("rentCorp");
String vhrno = req.getParameter("vhrno");
System.out.println(selectedCorp);
System.out.println(vhrno);
RentCorpVO rentCorpVO = new RentCorpVO();
if(selectedCorp.equals("롯데렌탈")) {
rentCorpVO.setCorpName(selectedCorp);
rentCorpVO.setCorpNo6("110111");
rentCorpVO.setCorpNoEnc("vzsOW39f73ncSY/ssxvFbnwhF6FEv7kZ9HWEnI6PWMw=");
} else if(selectedCorp.equals("SK렌터카")) {
rentCorpVO.setCorpName(selectedCorp);
rentCorpVO.setCorpNo6("110111");
rentCorpVO.setCorpNoEnc("qk68JgkyNAIRy0SoobSo1/crcaBSTAEMe9m/tYIOd/A=");
} else {
mav.addObject("saved", false);
return mav;
}
//
Date now = new Date();
SimpleDateFormat sdf_yyyy = new SimpleDateFormat ("yyyy");
SimpleDateFormat sdf_ymd = new SimpleDateFormat ("yyyyMMdd");
SimpleDateFormat sdf_14 = new SimpleDateFormat ("yyyyMMddHHmmss");
String curYear = sdf_yyyy.format(now);
String cur14 = sdf_14.format(now);
String curYmd = sdf_ymd.format(now);
List<String> newlyDates = this.makeDateRange_newly(curYmd);
Collections.shuffle(newlyDates);
List<String> hourRange = this.makeHourRange();
Collections.shuffle(hourRange);
List<String> minuteRange = this.makeMinuteRange();
Collections.shuffle(minuteRange);
List<PlaceVO> placeList = this.makePlaceList();
Collections.shuffle(placeList);
String[] connInfo = {"org.mariadb.jdbc.Driver",
"jdbc:mariadb://211.119.124.122:53306/electricparking_jejusi",
"root","xit5811807"};
String sggCd = "50110";
Connection conn = null;
try {
conn = getConn(connInfo[0],connInfo[1],connInfo[2],connInfo[3]);
StringBuffer strSQL = new StringBuffer();
strSQL.append("SELECT MAX(MM_CODE) FROM CP_MAIN ");
strSQL.append("WHERE MM_CODE LIKE '"+sggCd+"%' ");
strSQL.append("AND SUBSTR(MM_CODE,6,4) = '"+curYear+"' ");
PreparedStatement ps = conn.prepareStatement(strSQL.toString());
//ps.setString
ResultSet rs = ps.executeQuery();
String nextMainKey = "";
if(rs.next()) {
String maxMainKey = rs.getString(1);
if(maxMainKey == null || maxMainKey.equals("")) {
nextMainKey = sggCd + curYear + "0000001";
} else {
nextMainKey = sggCd + curYear + StringUtils.leftPad(Integer.toString(Integer.parseInt(maxMainKey.substring(9))+1), 7, "0");
}
} else {
nextMainKey = sggCd+curYear + "0000001";
}
strSQL = new StringBuffer();
strSQL.append("SELECT MAX(OM_CODE) FROM CP_OWNER ");
strSQL.append("WHERE OM_CODE LIKE '"+sggCd+"%' ");
ps = conn.prepareStatement(strSQL.toString());
rs = ps.executeQuery();
String nextOwnerKey = "";
if(rs.next()) {
String maxOwnerKey = rs.getString(1);
if(maxOwnerKey == null || maxOwnerKey.equals("")) {
nextOwnerKey = sggCd + "00000001";
} else {
nextOwnerKey = sggCd + StringUtils.leftPad(Integer.toString(Integer.parseInt(maxOwnerKey.substring(5))+1), 8, "0");
}
} else {
nextOwnerKey = sggCd + "00000001";
}
strSQL = new StringBuffer();
strSQL.append("INSERT INTO CP_OWNER ");
strSQL.append(" VALUES ("
+"'"+nextOwnerKey+"',"
+"'"+sggCd+"',"
+"'"+rentCorpVO.getCorpName()+"',"
+"'"+rentCorpVO.getCorpNo6()+"',"
+"'"+rentCorpVO.getCorpNoEnc()+"',"
+"'13'," // 개인,외국인,법인사업자
+"'경기도 안양시 동안구 전파로 88',"
+"'N층',"
+"'14042',"
+"'411713182024',"
+"'0',"
+"'88',"
+"'0',"
+"'',"
+"'2',"
+"'"+cur14+"',"
+"'4117110100'"
+")"
);
ps = conn.prepareStatement(strSQL.toString());
//ps.setString
ps.executeUpdate();
strSQL = new StringBuffer();
strSQL.append("INSERT INTO CP_MAIN "
+" VALUES ("
+"'"+nextMainKey+"',"
+"'"+sggCd+"',"
+"'1'," // 수기등록
+"'3'," // 시청등록
+"'"+newlyDates.get(0)+"'," // 단속일
+"'"+hourRange.get(0)+minuteRange.get(0)+"'," // 단속시분
+"'1'," // 법코드
+"'',"
+"'',"
+"'전기차 위반 신고합니다.'," // 민원내용
+"'"+placeList.get(0).getPlaceName()+"'," // 단속장소
+"'"+placeList.get(0).getStdgCode()+"'," // 법정동코드
+"'',"
+"'',"
+"'0'," // 견인여부
+"''," // 단속일련번호
+"'0'," // 이미지갯수
+"'1',"
+"'"+vhrno+"'," // 차량번호
+"''," // 차대번호
+"''," // 차량구분1
+"''," // 차량구분2
+"'"+nextOwnerKey+"'," // 소유자코드
+"'',"
+"'',"
+"'80000'," // 사전감경금액
+"'100000'," // 금액
+"'0',"
+"'0',"
+"'0',"
+"'0',"
+"'0',"
+"'"+cur14+"'," // 생성일
+"'11'," // 상태코드
+"'"+cur14+"'," // 변경일시
+"'0',"
+"'',"
+"''," // 기타
+"'',"
+"'',"
+"'',"
+"'',"
+"'아반떼',"
+"'회색',"
+"'h',"
+"'',"
+"''"
+")"
);
ps = conn.prepareStatement(strSQL.toString());
//ps.setString
ps.executeUpdate();
conn.commit();
ps.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
mav.addObject("saved", false);
return mav;
}
boolean saved = true;
mav.addObject("saved", saved);
return mav;
}
private List<String> makeDateRange_newly(String curYmd) {
try {
List<String> result = new ArrayList<>();
for(int i=1; i<=30 ;i++) {
String dayn = DateUtil.addDay(curYmd, -i);
result.add(dayn);
}
return result;
} catch (Exception e){
return null;
}
}
private List<String> makeHourRange() {
List<String> result = new ArrayList<>();
for(int i=0; i<=23; i++) {
String item = Integer.toString(i);
if(item.length() == 1) {
item = "0"+item;
}
result.add(item);
}
return result;
}
private List<String> makeMinuteRange() {
List<String> result = new ArrayList<>();
for(int i=0; i<=59; i++) {
String item = Integer.toString(i);
if(item.length() == 1) {
item = "0"+item;
}
result.add(item);
}
return result;
}
private List<PlaceVO> makePlaceList() {
List<PlaceVO> result = new ArrayList<>();
result.add(new PlaceVO().setPlaceName("우도면 123").setStdgCode("5011033000"));
result.add(new PlaceVO().setPlaceName("우도면 456").setStdgCode("5011033000"));
result.add(new PlaceVO().setPlaceName("우도면 789").setStdgCode("5011033000"));
result.add(new PlaceVO().setPlaceName("애월읍 111").setStdgCode("5011025392"));
result.add(new PlaceVO().setPlaceName("애월읍 222").setStdgCode("5011025392"));
result.add(new PlaceVO().setPlaceName("애월읍 333").setStdgCode("5011025392"));
result.add(new PlaceVO().setPlaceName("조천읍 1-1").setStdgCode("5011025930"));
result.add(new PlaceVO().setPlaceName("조천읍 13-13").setStdgCode("5011025930"));
result.add(new PlaceVO().setPlaceName("조천읍 6-6").setStdgCode("5011025930"));
result.add(new PlaceVO().setPlaceName("한경면 1117").setStdgCode("5011031025"));
result.add(new PlaceVO().setPlaceName("한경면 1118").setStdgCode("5011031025"));
result.add(new PlaceVO().setPlaceName("한경면 1119").setStdgCode("5011031025"));
return result;
}
private Connection getConn(String driver, String connInfo, String id, String pw) throws Exception{
Class.forName(driver);
return DriverManager.getConnection(connInfo, id, pw);
}
}

@ -0,0 +1,56 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
<form id="frmEdit--${pageName}">
<div class="d-flex flex-row justify-content-evenly">
<div class="card" style="width:800px;">
<h3>단속자료 생성</h3>
<div class="row">
<div class="col-md-12">
<label class="bg-lighter col-form-label w-px-150">지자체및시스템</label>
<input type="text" name="jijacheSystem" class="w-px-300"
readonly value="(지자체,시스템)은 (제주시,전기차)로 생성됩니다." />
</div>
<div class="col-md-12">
<label class="bg-lighter col-form-label w-px-150">임대기업</label>
<select name="rentCorp" class="form-select">
<option value="롯데렌탈">롯데렌탈</option>
<option value="SK렌터카">SK렌터카</option>
</select>
</div>
<div class="col-md-12">
<label class="bg-lighter col-form-label w-px-150">차량번호</label>
<input type="text" name="vhrno" class="w-px-300" />
</div>
</div>
<button type="button" id="btnCreateCrdn" class="btn btn-primary w-px-100">단속 자료 생성</button>
</div>
</div>
</form>
<script>
$("#btnCreateCrdn").on("click",function(){
if($("#frmEdit--${pageName}").find("[name='vhrno']").val() == ""){
alert("차량번호를 입력하세요.");
return;
}
var crdnFields = new FormFields("#frmEdit--${pageName}");
var obj = crdnFields.get();
ajax.post({
url : wctx.url("cleanparking/createCrdn.do"),
data : obj,
success : (resp) => {
if(resp.saved){
alert("성공!");
} else {
alert("실패!");
}
}
});
});
</script>

@ -30,7 +30,10 @@
<h5>주소</h5>
<button type="button" id="btnPopEstablishJuso" class="btn btn-primary">주소구축</button>
</div>
<div class="container-xxl container-p-y ms-1">
<h5>클린파킹</h5>
<button type="button" id="btnCreateCrdnPop" class="btn btn-primary">단속자료생성</button>
</div>
</div>
</div>
@ -213,6 +216,28 @@ $("#btnPopEstablishJuso").on("click", function(){
});
$("#btnCreateCrdnPop").on("click", function(){
$.ajax({
type : "GET",
ContentType : "text/html;charset=UTF-8",
url : "/cleanparking/createCrdnMain.do",
data: {},
success: (resp) => {
dialog.open({
id: "cpCreateCrdnDialog",
title: "클린파킹 단속 자료 생성",
content: resp ,
size: "md",
init:() => {}
});
},
error : function(xhr, status, error) {
},
complete : function(xhr, status) {
}
});
});
$(function(){
});

Loading…
Cancel
Save