You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
359 lines
10 KiB
Java
359 lines
10 KiB
Java
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 {
|
|
|
|
|
|
@RequestMapping(name="설정읽기", value="/confRead")
|
|
@ResponseBody
|
|
public String confRead(HttpServletRequest req, @RequestBody HashMap<String, Object> map) {
|
|
String returnStr = "";
|
|
|
|
|
|
String filePath = map.get("filePath").toString();
|
|
String dec = ConfUtil.read(filePath);
|
|
System.out.println(dec);
|
|
|
|
returnStr = dec;
|
|
|
|
return returnStr;
|
|
}
|
|
|
|
@RequestMapping(name="설정암호화", value="/confEnc")
|
|
@ResponseBody
|
|
public String confEnc(HttpServletRequest req, @RequestBody HashMap<String, Object> map) {
|
|
String returnStr = "";
|
|
|
|
|
|
String filePath = map.get("filePath").toString();
|
|
String dec = ConfUtil.enc(filePath);
|
|
System.out.println(dec);
|
|
|
|
returnStr = dec;
|
|
|
|
return returnStr;
|
|
}
|
|
|
|
@RequestMapping(name="문자열암호화", value="/strEnc")
|
|
@ResponseBody
|
|
public String strEnc(HttpServletRequest req) {
|
|
String returnStr = "";
|
|
|
|
XitAria xa = new XitAria("xit-aria");
|
|
|
|
String str = req.getParameter("str");
|
|
String enc = xa.encrypt(str);
|
|
|
|
returnStr = enc;
|
|
|
|
return returnStr;
|
|
}
|
|
|
|
@RequestMapping(name="문자열복호화", value="/strDec")
|
|
@ResponseBody
|
|
public String strDec(HttpServletRequest req, @RequestBody HashMap<String, Object> map) {
|
|
String returnStr = "";
|
|
|
|
XitAria xa = new XitAria("xit-aria");
|
|
|
|
String str = map.get("str").toString();
|
|
String dec = xa.decrypt(str);
|
|
|
|
returnStr = dec;
|
|
|
|
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);
|
|
}
|
|
|
|
}
|