no message
parent
6aa661501e
commit
0ff98a45d5
@ -1,7 +0,0 @@
|
||||
package cokr.xit.cp.smg.dao;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
|
||||
public interface CpMapper extends AbstractMapper {
|
||||
|
||||
}
|
||||
@ -1,13 +0,0 @@
|
||||
package cokr.xit.fims.base;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class Backup {
|
||||
String originalTable;
|
||||
String backupTable;
|
||||
String pkName;
|
||||
String[] pks;
|
||||
}
|
||||
@ -1,30 +0,0 @@
|
||||
package cokr.xit.fims.base.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.base.Backup;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Mapper("adminMapper")
|
||||
public interface AdminMapper extends AbstractMapper {
|
||||
|
||||
List<DataObject> selectAllList(Map<String, String> map);
|
||||
|
||||
int insertOriginalData(Backup backup);
|
||||
|
||||
int deleteOriginalData(Backup backup);
|
||||
|
||||
int insertBackupData(Backup backup);
|
||||
|
||||
int deleteBackupData(Backup backup);
|
||||
|
||||
int copyTask(Map<String, Object> param);
|
||||
|
||||
List<String> selectVltnList(Map<String, Object> param);
|
||||
|
||||
int copyVltn(Map<String, Object> param);
|
||||
}
|
||||
@ -1,72 +0,0 @@
|
||||
package cokr.xit.fims.base.service.bean;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cokr.xit.fims.base.Backup;
|
||||
import cokr.xit.fims.base.dao.AdminMapper;
|
||||
import cokr.xit.foundation.component.AbstractBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Component("adminBean")
|
||||
public class AdminBean extends AbstractBean {
|
||||
|
||||
@Resource(name = "adminMapper")
|
||||
private AdminMapper adminMapper;
|
||||
|
||||
public List<DataObject> getAllList(String originalTable, String pkName) {
|
||||
Map<String,String> map = new HashMap<String,String>();
|
||||
map.put("originalTable", originalTable);
|
||||
map.put("pkName", pkName);
|
||||
return adminMapper.selectAllList(map);
|
||||
}
|
||||
|
||||
public List<DataObject> getAllList(String backupTable, String originalTable, String pkName) {
|
||||
Map<String,String> map = new HashMap<String,String>();
|
||||
map.put("originalTable", originalTable);
|
||||
map.put("backupTable", backupTable);
|
||||
map.put("pkName", pkName);
|
||||
return adminMapper.selectAllList(map);
|
||||
}
|
||||
|
||||
public boolean activate(Backup backup) {
|
||||
return adminMapper.insertOriginalData(backup) > 0;
|
||||
}
|
||||
|
||||
public boolean deactivate(Backup backup) {
|
||||
|
||||
adminMapper.deleteBackupData(backup);
|
||||
|
||||
int result1 = adminMapper.insertBackupData(backup);
|
||||
int result2 = adminMapper.deleteOriginalData(backup);
|
||||
|
||||
return ((result1 != 0) && (result1 == result2));
|
||||
}
|
||||
|
||||
public boolean copySggStng(String taskSeCd, String srcSgg, String trgtSgg) {
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
param.put("taskSeCd",taskSeCd);
|
||||
param.put("srcSgg",srcSgg);
|
||||
param.put("trgtSgg",trgtSgg);
|
||||
|
||||
adminMapper.copyTask(param);
|
||||
|
||||
List<String> vltnCds = adminMapper.selectVltnList(param);
|
||||
if(vltnCds == null || vltnCds.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
param.put("vltnCds", vltnCds);
|
||||
int result2 = adminMapper.copyVltn(param);
|
||||
if(result2 == vltnCds.size()) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,278 +0,0 @@
|
||||
package cokr.xit.fims.base.web;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import cokr.xit.base.code.service.CodeQuery;
|
||||
import cokr.xit.base.code.service.bean.CodeBean;
|
||||
import cokr.xit.base.web.ApplicationController;
|
||||
import cokr.xit.fims.base.Backup;
|
||||
import cokr.xit.fims.base.service.bean.AdminBean;
|
||||
import cokr.xit.fims.cmmn.DirectoryStructureToJson;
|
||||
import cokr.xit.fims.cmmn.DirectoryStructureToJson.Node;
|
||||
import cokr.xit.fims.cmmn.Hangul;
|
||||
import cokr.xit.fims.crdn.service.ImportService;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import cokr.xit.interfaces.smg.service.SmgService;
|
||||
|
||||
@Controller
|
||||
@RequestMapping(name="최고관리자", value="/admin")
|
||||
public class AdminController extends ApplicationController {
|
||||
|
||||
@Resource(name="adminBean")
|
||||
private AdminBean adminBean;
|
||||
|
||||
@Resource(name="codeBean")
|
||||
private CodeBean codeBean;
|
||||
|
||||
@Resource(name="smgService")
|
||||
private SmgService smgService;
|
||||
|
||||
@Resource(name="importService")
|
||||
private ImportService importService;
|
||||
|
||||
|
||||
@RequestMapping(name="최고관리자 메인",value="/main.do")
|
||||
public ModelAndView adminMain(HttpServletResponse hres) {
|
||||
ModelAndView mav = new ModelAndView();
|
||||
|
||||
if(!currentUser().getInstitute().equals("ADMIN00")) {
|
||||
hres.setStatus(HttpStatus.FORBIDDEN.value());
|
||||
mav.setViewName("jsonView");
|
||||
mav.addObject("message","메뉴 접근 권한이 없습니다.");
|
||||
} else {
|
||||
mav.setViewName("fims/admin-main");
|
||||
mav.addObject("pageName","adminMain");
|
||||
}
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
@RequestMapping(name="배치 수동 실행",value="/executeBatch.do")
|
||||
public ModelAndView executeBatch(String batch) {
|
||||
ModelAndView mav = new ModelAndView();
|
||||
|
||||
switch (batch) {
|
||||
case "smgReceive" : {
|
||||
smgService.receivePetitions();
|
||||
break;
|
||||
}
|
||||
case "smgSend" : {
|
||||
smgService.sendReplies();
|
||||
break;
|
||||
}
|
||||
case "epostSend" : {
|
||||
|
||||
break;
|
||||
}
|
||||
case "epostReceive" : {
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
}
|
||||
mav.setViewName("jsonView");
|
||||
return mav;
|
||||
}
|
||||
|
||||
@RequestMapping(name="업무통보 수동 실행",value="/executeAlert.do")
|
||||
public ModelAndView executeAlert(String alertName, String interfaceKey) {
|
||||
ModelAndView mav = new ModelAndView();
|
||||
|
||||
switch (alertName) {
|
||||
case "smgReceive" : {
|
||||
|
||||
if(interfaceKey == null || interfaceKey.equals("")) {
|
||||
throw new RuntimeException("인터페이스키 없음");
|
||||
}
|
||||
|
||||
List<String> interfaceKeys = new ArrayList<String>();
|
||||
interfaceKeys.add(interfaceKey);
|
||||
importService.createCrdns(interfaceKeys);
|
||||
|
||||
break;
|
||||
}
|
||||
case "smgSend" : {
|
||||
|
||||
break;
|
||||
}
|
||||
case "epostSend" : {
|
||||
|
||||
break;
|
||||
}
|
||||
case "epostReceive" : {
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
}
|
||||
mav.setViewName("jsonView");
|
||||
return mav;
|
||||
}
|
||||
|
||||
@RequestMapping(name="서버 파일 현황 조회",value="/getFileTree.do")
|
||||
public ModelAndView getFileTree() throws Exception {
|
||||
|
||||
ModelAndView mav = new ModelAndView();
|
||||
mav.setViewName("jsonView");
|
||||
|
||||
Node tree = DirectoryStructureToJson.getNode(new File("files"));
|
||||
mav.addObject("tree", tree);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@RequestMapping(name="최고관리자 서버 폴더 생성", value="/createDirectory.do")
|
||||
public ModelAndView createDirectory(@RequestParam(value="directories[]") String... directories) throws Exception {
|
||||
|
||||
boolean saved = false;
|
||||
|
||||
String path = String.join(File.separator, directories);
|
||||
File newDir = new File(path);
|
||||
saved = newDir.mkdir();
|
||||
|
||||
ModelAndView mav = new ModelAndView();
|
||||
mav.setViewName("jsonView");
|
||||
mav.addObject("saved", saved);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@RequestMapping(name="최고관리자 서버 파일 추가", value="/importFile.do")
|
||||
public ModelAndView importFile(MultipartFile newFile, @RequestParam(value="directories[]") String... directories) throws Exception {
|
||||
|
||||
boolean saved = false;
|
||||
|
||||
String path = String.join(File.separator, directories);
|
||||
path = path + File.separator + newFile.getOriginalFilename();
|
||||
|
||||
File file = new File(path);
|
||||
newFile.transferTo(file);
|
||||
|
||||
saved = file.exists();
|
||||
|
||||
ModelAndView mav = new ModelAndView();
|
||||
mav.setViewName("jsonView");
|
||||
mav.addObject("saved", saved);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@RequestMapping(name="최고관리자 서버 파일 내용 보기", value="/getFileText.do")
|
||||
public ModelAndView getFileText(@RequestParam(value="directories[]") String... directories) throws Exception {
|
||||
String fileCn = "";
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
String path = String.join(File.separator, directories);
|
||||
|
||||
int inputData = 0;
|
||||
try {
|
||||
Hangul hangul = new Hangul(3);
|
||||
String detect = hangul.encodingDetect(path);
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path),Charset.forName(detect)));
|
||||
|
||||
while ((inputData = br.read()) != -1) {
|
||||
sb.append((char)inputData) ;
|
||||
}
|
||||
|
||||
fileCn = sb.toString();
|
||||
|
||||
br.close();
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
|
||||
ModelAndView mav = new ModelAndView();
|
||||
mav.setViewName("jsonView");
|
||||
mav.addObject("fileCn", fileCn);
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping(name="시군구 추가/삭제 메인", value="/sggAddDelInfo.do")
|
||||
public ModelAndView sggAddDelMain() {
|
||||
ModelAndView mav = new ModelAndView();
|
||||
|
||||
mav.setViewName("fims/admin-sggAddDel-info");
|
||||
mav.addObject("pageName","adminSggAddDel");
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping(name="백업 테이블 및 실사용 테이블 자료 조회", value="/sggBackup/list.do")
|
||||
public ModelAndView getBackupList(String backupTable, String originalTable, String pkName) {
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
|
||||
List<DataObject> originalDataList = adminBean.getAllList(originalTable, pkName);
|
||||
List<DataObject> backupDataList = adminBean.getAllList(backupTable, originalTable, pkName);
|
||||
|
||||
mav.addObject("originalDataList", originalDataList);
|
||||
mav.addObject("backupDataList", backupDataList);
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
@PostMapping(name="백업 테이블 자료를 사용 테이블로 복사", value="/sggBackup/activate.do")
|
||||
public ModelAndView add(Backup backup) {
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
|
||||
boolean saved = adminBean.activate(backup);
|
||||
|
||||
mav.addObject("saved", saved);
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
@PostMapping(name="사용 테이블 자료 삭제 및 백업", value="/sggBackup/deactivate.do")
|
||||
public ModelAndView del(Backup backup) {
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
|
||||
boolean saved = adminBean.deactivate(backup);
|
||||
|
||||
mav.addObject("saved", saved);
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping(name="시군구 설정 복사 메인", value="/copySggStngInfo.do")
|
||||
public ModelAndView copySggStngMain() {
|
||||
ModelAndView mav = new ModelAndView();
|
||||
|
||||
CodeQuery cq = new CodeQuery();
|
||||
cq.setGroupIDs("FIM054");
|
||||
List<DataObject> taskSeCdList = codeBean.getCodeList(cq);
|
||||
mav.addObject("taskSeCdList", taskSeCdList);
|
||||
|
||||
List<DataObject> sggList = adminBean.getAllList("TB_SGG", "SGG_NM");
|
||||
mav.addObject("sggList", sggList);
|
||||
|
||||
mav.setViewName("fims/admin-copySggStng-info");
|
||||
mav.addObject("pageName","admin-copySggStng");
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping(name="시군구 설정 복사", value="/copySggStng.do")
|
||||
public ModelAndView copy(String taskSeCd, String srcSgg, String trgtSgg) {
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
|
||||
boolean saved = adminBean.copySggStng(taskSeCd, srcSgg, trgtSgg);
|
||||
|
||||
mav.addObject("saved", saved);
|
||||
|
||||
return mav;
|
||||
}
|
||||
}
|
||||
@ -1,168 +0,0 @@
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,35 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 단속 납부자 이력
|
||||
* @author leebj
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class CrdnPayerHstry extends AbstractEntity {
|
||||
|
||||
/**
|
||||
* 변경 이력 ID
|
||||
*/
|
||||
private String chgHstryId;
|
||||
|
||||
/**
|
||||
* 단속 ID
|
||||
*/
|
||||
private String crdnId;
|
||||
|
||||
/**
|
||||
* 납부자 ID
|
||||
*/
|
||||
private String rtpyrId;
|
||||
|
||||
/**
|
||||
* 주소 일련번호
|
||||
*/
|
||||
private String addrSn;
|
||||
|
||||
}
|
||||
@ -1,48 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
/**단속 납부자 이력 정보 조회 요청
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-08-16 leebj 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
public class CrdnPayerHstryQuery extends CmmnQuery {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String crdnId; // 단속 ID
|
||||
private String rtpyrId; // 납부자 ID
|
||||
private String addrSn; // 주소 일련번호
|
||||
|
||||
public String getCrdnId() {
|
||||
return ifEmpty(crdnId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnPayerHstryQuery> T setCrdnId(String crdnId) {
|
||||
this.crdnId = crdnId;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getRtpyrId() {
|
||||
return ifEmpty(rtpyrId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnPayerHstryQuery> T setRtpyrId(String rtpyrId) {
|
||||
this.rtpyrId = rtpyrId;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getAddrSn() {
|
||||
return ifEmpty(addrSn, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnPayerHstryQuery> T setAddrSn(String addrSn) {
|
||||
this.rtpyrId = addrSn;
|
||||
return self();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,87 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**단속 상태 이력
|
||||
*
|
||||
* <p>상세 설명: 단속 상태 이력 엔티티를 데이터베이스에 저장하는 클래스다.
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-07-19 JoJH 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class CrdnSttsHstry extends AbstractEntity {
|
||||
|
||||
/**
|
||||
* 상태 이력 ID
|
||||
*/
|
||||
private String sttsHstryId;
|
||||
|
||||
/**
|
||||
* 단속 ID
|
||||
*/
|
||||
private String crdnId;
|
||||
|
||||
/**
|
||||
* 이전 상태 코드
|
||||
*/
|
||||
private String bfrSttsCd;
|
||||
|
||||
/**
|
||||
* 이전 상태 변경 일시
|
||||
*/
|
||||
private String bfrSttsChgDt;
|
||||
|
||||
/**
|
||||
* 단속 상태 코드
|
||||
*/
|
||||
private String crdnSttsCd;
|
||||
|
||||
/**
|
||||
* 업무 상세 ID
|
||||
*/
|
||||
private String taskDtlId;
|
||||
|
||||
/**
|
||||
* 기타 내용
|
||||
*/
|
||||
private String etcCn;
|
||||
|
||||
/**
|
||||
* 사용 여부
|
||||
*/
|
||||
private String useYn;
|
||||
|
||||
/**
|
||||
* 등록 일시
|
||||
*/
|
||||
private String regDt;
|
||||
|
||||
/**
|
||||
* 등록자
|
||||
*/
|
||||
private String rgtr;
|
||||
|
||||
/**
|
||||
* 수정 일시
|
||||
*/
|
||||
private String mdfcnDt;
|
||||
|
||||
/**
|
||||
* 수정자
|
||||
*/
|
||||
private String mdfr;
|
||||
|
||||
/**
|
||||
* 단속 상태 변경 일시 - TB_CRDN(단속)
|
||||
*/
|
||||
private String crdnSttsChgDt;
|
||||
|
||||
}
|
||||
|
||||
@ -1,62 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
/**단속 상태 이력 정보 조회 요청
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-07-19 JoJH 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
public class CrdnSttsHstryQuery extends CmmnQuery {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String sttsHstryId; // 상태 이력 ID
|
||||
private String crdnId; // 단속 ID
|
||||
private String crdnSttsCd; // 단속 상태 코드
|
||||
private String taskDtlId; // 업무 상세 ID
|
||||
|
||||
public String getSttsHstryId() {
|
||||
return ifEmpty(sttsHstryId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnSttsHstryQuery> T setSttsHstryId(String sttsHstryId) {
|
||||
this.sttsHstryId = sttsHstryId;
|
||||
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCrdnId() {
|
||||
return ifEmpty(crdnId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnSttsHstryQuery> T setCrdnId(String crdnId) {
|
||||
this.crdnId = crdnId;
|
||||
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCrdnSttsCd() {
|
||||
return ifEmpty(crdnSttsCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnSttsHstryQuery> T setCrdnSttsCd(String crdnSttsCd) {
|
||||
this.crdnSttsCd = crdnSttsCd;
|
||||
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getTaskDtlId() {
|
||||
return ifEmpty(taskDtlId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnSttsHstryQuery> T setTaskDtlId(String taskDtlId) {
|
||||
this.taskDtlId = taskDtlId;
|
||||
|
||||
return self();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,65 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DirectoryStructureToJson {
|
||||
|
||||
public static Node getNode(File fileNode) throws IOException{
|
||||
|
||||
if(fileNode.isDirectory() || fileNode.getName().equals("files")){
|
||||
return new Node(fileNode.getName(),"directory", getDirList(fileNode));
|
||||
}else{
|
||||
return new Node(fileNode.getName(),"file",null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static List<Node> getDirList(File node) throws IOException{
|
||||
List<Node> children=new ArrayList<>();
|
||||
for(File n : node.listFiles()){
|
||||
children.add(getNode(n));
|
||||
}
|
||||
return children;
|
||||
}
|
||||
|
||||
public static class Node {
|
||||
private String text;
|
||||
private String type;
|
||||
private List<Node> children;
|
||||
|
||||
public Node() { }
|
||||
|
||||
public Node(String text, String type, List<Node> children) {
|
||||
this.text = text;
|
||||
this.type = type;
|
||||
this.children = children;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public List<Node> getChildren() {
|
||||
return children;
|
||||
}
|
||||
|
||||
public void setChildren(List<Node> children) {
|
||||
this.children = children;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class ExtrArtclStng extends AbstractEntity {
|
||||
private String sggCd;
|
||||
private String taskSeCd;
|
||||
private String tmplatId;
|
||||
|
||||
private String extrFormId; //추출항목ID
|
||||
private String extrArtclNm; //추출항목명
|
||||
private String extrArtclDscrp; //추출항목설명
|
||||
|
||||
private String otptArtclSeq; //출력항목순서
|
||||
private String leftPstn; //좌측 위치
|
||||
private String topPstn; //상단 위치
|
||||
private String widthSz; //영역크기 길이
|
||||
private String heightSz; //영역크기 높이
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class ExtrForm extends AbstractEntity {
|
||||
private String extrBscId;
|
||||
private String sggCd;
|
||||
private String taskSeCd;
|
||||
private String tmplatId;
|
||||
private String mobilePageTmplt;
|
||||
private List<ExtrArtclStng> extrArtclStngList;
|
||||
private String[] extrFormIDs;
|
||||
}
|
||||
@ -1,18 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
public class ExtrStngQuery extends CmmnQuery {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String tmplatId;
|
||||
|
||||
public String getTmplatId() {
|
||||
return ifEmpty(tmplatId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends ExtrStngQuery> T setTmplatId(String tmplatId) {
|
||||
this.tmplatId = tmplatId;
|
||||
return self();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import cokr.xit.applib.PrintOption;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class FimsPrintOption extends PrintOption {
|
||||
|
||||
/**
|
||||
* 업무구분
|
||||
*/
|
||||
private String taskSeCd;
|
||||
|
||||
}
|
||||
@ -1,217 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import com.ibm.icu.text.CharsetDetector;
|
||||
import com.ibm.icu.text.CharsetMatch;
|
||||
|
||||
public class Hangul {
|
||||
|
||||
public Hangul(int hangulIsNByte){
|
||||
this.hangulIsNByte = hangulIsNByte;
|
||||
}
|
||||
|
||||
private int hangulIsNByte;
|
||||
|
||||
public int is() {
|
||||
return this.hangulIsNByte;
|
||||
}
|
||||
|
||||
/**
|
||||
* 문자열의 바이트 수 구하기
|
||||
*
|
||||
* @param str
|
||||
* @return
|
||||
*/
|
||||
public int getByteLength(String str) {
|
||||
if(str == null) {
|
||||
return 0;
|
||||
}
|
||||
int byteLen = 0;
|
||||
|
||||
for(int i=0;i<str.length();i++) {
|
||||
char ch = str.charAt(i);
|
||||
|
||||
if((ch > 127) || (ch < 0)) {
|
||||
byteLen += this.is();
|
||||
} else {
|
||||
byteLen += 1;
|
||||
}
|
||||
}
|
||||
|
||||
return byteLen;
|
||||
}
|
||||
|
||||
/**
|
||||
* 문자열을 바이트 단위로 패딩
|
||||
*
|
||||
* @param str
|
||||
* @param byteLen
|
||||
* @param ch
|
||||
* @return
|
||||
*/
|
||||
public String lpadByte(String str, int byteLen, String ch) {
|
||||
String result = str;
|
||||
|
||||
int strLen = this.getByteLength(str);
|
||||
|
||||
for(int i=0; i < byteLen - strLen ; i++) {
|
||||
result = ch + result;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 문자열을 바이트 단위로 패딩
|
||||
*
|
||||
* @param str
|
||||
* @param byteLen
|
||||
* @param ch
|
||||
* @return
|
||||
*/
|
||||
public String rpadByte(String str, int byteLen, String ch) {
|
||||
String result = str;
|
||||
|
||||
int strLen = this.getByteLength(str);
|
||||
|
||||
for(int i=0; i < byteLen - strLen ; i++) {
|
||||
result += ch;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 문자열을 바이트 단위로 substring하기
|
||||
*
|
||||
* @param str
|
||||
* @param beginBytes
|
||||
* @param endBytes
|
||||
* @return
|
||||
*/
|
||||
public String substringByBytes(String str, int beginBytes, int endBytes) {
|
||||
if (str == null || str.length() == 0) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if (beginBytes < 0) {
|
||||
beginBytes = 0;
|
||||
}
|
||||
|
||||
if (endBytes < 1) {
|
||||
return "";
|
||||
}
|
||||
|
||||
int len = str.length();
|
||||
|
||||
int beginIndex = -1;
|
||||
int endIndex = 0;
|
||||
|
||||
int curBytes = 0;
|
||||
String ch = null;
|
||||
for (int i = 0; i < len; i++) {
|
||||
ch = str.substring(i, i + 1);
|
||||
curBytes += this.getByteLength(ch);
|
||||
|
||||
|
||||
if (beginIndex == -1 && curBytes >= beginBytes) {
|
||||
beginIndex = i;
|
||||
}
|
||||
|
||||
if (curBytes > endBytes) {
|
||||
break;
|
||||
} else {
|
||||
endIndex = i + 1;
|
||||
}
|
||||
}
|
||||
|
||||
return str.substring(beginIndex, endIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* 문자열을 바이트 단위로 substring하기
|
||||
*
|
||||
* @param str
|
||||
* @param beginBytes
|
||||
* @return
|
||||
*/
|
||||
public String substringByBytes(String str, int beginBytes) {
|
||||
if (str == null || str.length() == 0) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if (beginBytes < 0) {
|
||||
beginBytes = 0;
|
||||
}
|
||||
|
||||
int len = str.length();
|
||||
|
||||
int beginIndex = -1;
|
||||
|
||||
int curBytes = 0;
|
||||
String ch = null;
|
||||
for (int i = 0; i < len; i++) {
|
||||
ch = str.substring(i, i + 1);
|
||||
curBytes += this.getByteLength(ch);
|
||||
|
||||
|
||||
if (beginIndex == -1 && curBytes >= beginBytes) {
|
||||
beginIndex = i;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return str.substring(beginIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* 텍스트 인코딩 확인
|
||||
*
|
||||
* @param path
|
||||
* @return 캐릭터셋
|
||||
*/
|
||||
public String encodingDetect(String path) throws IOException {
|
||||
File f = new File(path);
|
||||
|
||||
return encodingDetect(f);
|
||||
}
|
||||
|
||||
public String encodingDetect(File f) throws IOException {
|
||||
CharsetDetector detector;
|
||||
CharsetMatch match;
|
||||
|
||||
FileInputStream fis = null;
|
||||
try {
|
||||
String result = "";
|
||||
|
||||
fis = new FileInputStream(f);
|
||||
|
||||
byte[] byteData = new byte[(int) f.length()];
|
||||
|
||||
fis.read(byteData);
|
||||
fis.close();
|
||||
detector = new CharsetDetector();
|
||||
|
||||
detector.setText(byteData);
|
||||
match = detector.detect();
|
||||
|
||||
System.out.println("encoding is \"" + match.getName() + "\"");
|
||||
|
||||
if(match.getName().equals("UTF-8") || match.getName().equals("EUC-KR")) {
|
||||
result = match.getName();
|
||||
} else {
|
||||
result = "EUC-KR";
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
finally {
|
||||
IOUtils.closeQuietly(fis);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,30 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class OtptArtclStng extends AbstractEntity {
|
||||
private String sggCd;
|
||||
private String taskSeCd;
|
||||
private String sndngSeCd;
|
||||
private String paperSeCd;
|
||||
|
||||
private String otptFormId; //출력항목ID
|
||||
private String otptArtclNm; //출력항목명
|
||||
|
||||
private String otptArtclSeq; //출력항목순서
|
||||
private String leftPstn; //좌측 위치
|
||||
private String topPstn; //상단 위치
|
||||
private String widthSz; //영역크기 길이
|
||||
private String heightSz; //영역크기 높이
|
||||
private String textSort; //텍스트정렬
|
||||
private String lineChgYn; //줄바꿈여부
|
||||
private String fontNm; //글꼴명
|
||||
private String fontSz; //글자크기
|
||||
private String fontColr; //글자색
|
||||
private String fontStyle; //글자스타일
|
||||
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class OtptForm extends AbstractEntity {
|
||||
private String otptBscId;
|
||||
private String sggCd;
|
||||
private String taskSeCd;
|
||||
private String sndngSeCd;
|
||||
private String paperSeCd;
|
||||
private String foldLinePstnSeCd;//접는선 위치 구분코드
|
||||
private String bcrnImgPath; //배경이미지경로
|
||||
private String bcrnImgFileNm; //배경이미지파일
|
||||
private String otptPhotoCnt; //출력사진 수
|
||||
private List<OtptArtclStng> otptArtclStngList;
|
||||
private String[] otptFormIDs;
|
||||
}
|
||||
@ -1,31 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
public class OtptStngQuery extends CmmnQuery {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
//발송구분코드
|
||||
private String sndngSeCd;
|
||||
|
||||
//출력용지구분코드
|
||||
private String paperSeCd;
|
||||
|
||||
public String getSndngSeCd() {
|
||||
return ifEmpty(sndngSeCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends OtptStngQuery> T setSndngSeCd(String sndngSeCd) {
|
||||
this.sndngSeCd = sndngSeCd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getPaperSeCd() {
|
||||
return ifEmpty(paperSeCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends OtptStngQuery> T setPaperSeCd(String paperSeCd) {
|
||||
this.paperSeCd = paperSeCd;
|
||||
return self();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,21 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class OutsourcingArtclStng extends AbstractEntity {
|
||||
private String sggCd;
|
||||
private String taskSeCd;
|
||||
private String sndngSeCd;
|
||||
|
||||
private String outsourcingFormId; //항목ID
|
||||
private String artclNm; //항목명
|
||||
|
||||
private String artclOrdr; //항목순서
|
||||
private String artclSz; //항목 바이트수
|
||||
private String paddingDirection; //공백방향
|
||||
private String formatting; //포매팅
|
||||
}
|
||||
@ -1,317 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.egovframe.rte.fdl.string.EgovStringUtil;
|
||||
|
||||
import cokr.xit.base.file.ZIP;
|
||||
import cokr.xit.foundation.Downloadable;
|
||||
import cokr.xit.foundation.data.DataFormat;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public class OutsourcingFileMaker {
|
||||
protected String printKorName;
|
||||
protected FimsPrintOption printOption;
|
||||
protected List<DataObject> data;
|
||||
protected List<DataObject> printStngItems;
|
||||
|
||||
protected String resultZipFilePath;
|
||||
|
||||
public OutsourcingFileMaker(String printKorName, FimsPrintOption printOption, List<DataObject> printStngItems,
|
||||
List<DataObject> data){
|
||||
this.printKorName = printKorName;
|
||||
this.printOption = printOption;
|
||||
this.data = data;
|
||||
this.printStngItems = printStngItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* 서식에서 사용하는 출력항목 중 사용하는 항목만 추출한다.
|
||||
*/
|
||||
public List<PredefinedSet> filterUsedArtcls() {
|
||||
List<String> otptArtclNmList = this.printStngItems.stream().map((item) -> { return item.string("ARTCL_NM"); }).toList();
|
||||
|
||||
List<PredefinedSet> result = OutsourcingFileMaker.predifinedSetForOutsourcing().stream()
|
||||
.filter((item) -> {
|
||||
return otptArtclNmList.contains(item.getArtclNm());
|
||||
}).toList();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 다운로드 이력에 남길 항목명을 추출한다.
|
||||
*/
|
||||
public List<String> filterDownloadDataNames() {
|
||||
|
||||
List<String> result = this.filterUsedArtcls().stream()
|
||||
.filter((item) -> {
|
||||
return item.isDownloadData();
|
||||
})
|
||||
.map(PredefinedSet::getArtclDscrp).toList();
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
public Map<String, Object> makeFile() {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
Hangul hangul = new Hangul(2);
|
||||
|
||||
SimpleDateFormat ymdhmsFormat = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
String currentTime = ymdhmsFormat.format(new Date());
|
||||
String year = currentTime.substring(0, 4);
|
||||
String month = currentTime.substring(4, 6);
|
||||
String day = currentTime.substring(6, 8);
|
||||
String yyyymmdd = year+month+day;
|
||||
|
||||
String outsourcingResultPath = "files"+File.separator+"temp"+File.separator+"outsourcing"
|
||||
+ File.separator + year + File.separator + month + File.separator + day
|
||||
+ File.separator + currentTime;
|
||||
|
||||
File folder = new File(outsourcingResultPath);
|
||||
if(!folder.exists()) {
|
||||
folder.mkdirs();
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
|
||||
String imagesFolderName = yyyymmdd + printKorName;
|
||||
String metaFileName = yyyymmdd + printKorName + "(외주파일).txt";
|
||||
|
||||
String imagesFolderPath = outsourcingResultPath + File.separator + imagesFolderName;
|
||||
String metaFilePath = outsourcingResultPath + File.separator + metaFileName;
|
||||
|
||||
File imagesFolderPathFile = new File(imagesFolderPath);
|
||||
if (!imagesFolderPathFile.exists()) {
|
||||
imagesFolderPathFile.mkdirs();
|
||||
}
|
||||
|
||||
for(int i=0; i < data.size(); i++) {
|
||||
DataObject dataObject = data.get(i);
|
||||
|
||||
CmmnUtil.setOcrInfo(dataObject);
|
||||
CmmnUtil.setBarcode(dataObject);
|
||||
String sndngDtlId = dataObject.string("SNDNG_DTL_ID");
|
||||
|
||||
int crdnPhotoCnt = dataObject.number("CRDN_PHOTO_CNT").intValue();
|
||||
|
||||
for(int j=0; j < crdnPhotoCnt; j++){
|
||||
String orgnFilePath = dataObject.string("CRDN_PHOTO"+(j+1));
|
||||
String fileKey = dataObject.string("CRDN_PHOTO"+(j+1)+"KEY");
|
||||
|
||||
if(EgovStringUtil.null2void(orgnFilePath).equals("")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!orgnFilePath.startsWith("files")) {
|
||||
orgnFilePath = CmmnUtil.copyStaticResource(orgnFilePath, false);
|
||||
}
|
||||
|
||||
File orgnFile = new File(orgnFilePath);
|
||||
if(!orgnFile.exists() || !orgnFile.canRead()) {
|
||||
continue;
|
||||
}
|
||||
InputStream orgnFileInputStream = new FileInputStream(orgnFile);
|
||||
|
||||
String modifiedFileName = "P"+sndngDtlId+CmmnUtil.indexToAlphabet(j, true, true)+"."+"JPG";
|
||||
|
||||
String modifiedFilePath = imagesFolderPath + File.separator + modifiedFileName;
|
||||
|
||||
File modifiedFile = new File(modifiedFilePath);
|
||||
|
||||
if(dataObject.get("MOS"+fileKey) != null) {
|
||||
CmmnUtil.createMaskedImage(orgnFileInputStream, modifiedFile, CmmnUtil.getDataObjectListFromMap(dataObject,"MOS"+fileKey));
|
||||
} else {
|
||||
Files.copy(orgnFileInputStream, modifiedFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
}
|
||||
dataObject.set("CRDN_PHOTO"+(j+1), modifiedFilePath);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
File metaFile = new File(metaFilePath);
|
||||
if (!metaFile.exists()) {
|
||||
if(!metaFile.createNewFile()) {
|
||||
throw new RuntimeException("외주파일생성 중 오류가 발생하였습니다.");
|
||||
};
|
||||
}
|
||||
FileWriter fw = new FileWriter(metaFile);
|
||||
BufferedWriter writer = new BufferedWriter(fw);
|
||||
|
||||
|
||||
for(int i=0; i < data.size(); i++) {
|
||||
DataObject dataObject = data.get(i);
|
||||
|
||||
if(i != 0) {
|
||||
writer.write("\n");
|
||||
}
|
||||
String line = "";
|
||||
for(DataObject printStngItem : printStngItems){
|
||||
String artclNm = printStngItem.string("ARTCL_NM");
|
||||
int byteCnt = printStngItem.number("ARTCL_SZ").intValue();
|
||||
String artclValue = "";
|
||||
|
||||
//조회한 데이터와 관련없는 항목(출력일시 등)
|
||||
if(artclNm.equals("OTPT_YMD") || artclNm.equals("OTPT_YEAR")
|
||||
|| artclNm.equals("OTPT_MONTH") || artclNm.equals("OTPT_DAY")) {
|
||||
switch(artclNm) {
|
||||
case "OTPT_YMD" :
|
||||
artclValue = yyyymmdd;
|
||||
break;
|
||||
case "OTPT_YEAR" :
|
||||
artclValue = year;
|
||||
break;
|
||||
case "OTPT_MONTH" :
|
||||
artclValue = month;
|
||||
break;
|
||||
case "OTPT_DAY" :
|
||||
artclValue = day;
|
||||
break;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
artclValue = dataObject.string(artclNm);
|
||||
}
|
||||
|
||||
//포매팅
|
||||
if(!printStngItem.string("FORMATTING").equals("")) {
|
||||
String formatting = printStngItem.string("FORMATTING");
|
||||
switch (formatting) {
|
||||
case "zip(hypen)": {
|
||||
artclValue = CmmnUtil.zipCodeFormat(artclValue);
|
||||
break;
|
||||
}
|
||||
case "rgNo(hypen)": {
|
||||
artclValue = CmmnUtil.rgNoFormat(artclValue);
|
||||
break;
|
||||
}
|
||||
case "amount(comma)": {
|
||||
artclValue = DataFormat.n_nn0(artclValue);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if(formatting.startsWith("date(")) {
|
||||
String dtlFormatting = formatting.substring(5, formatting.length()-1);
|
||||
|
||||
if(dtlFormatting.contains("~") && artclValue.contains("~")) {
|
||||
String from = CmmnUtil.dateNFormat(artclValue.split("~",-1)[0], dtlFormatting.split("~",-1)[0]);
|
||||
String to = CmmnUtil.dateNFormat(artclValue.split("~",-1)[1], dtlFormatting.split("~",-1)[1]);
|
||||
|
||||
artclValue = from + "~" + to;
|
||||
} else {
|
||||
artclValue = CmmnUtil.dateNFormat(artclValue, dtlFormatting);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//공백 패딩 방향
|
||||
if(printStngItem.string("PADDING_DIRECTION").equals("left")) {
|
||||
line += hangul.lpadByte(artclValue, byteCnt, " ");
|
||||
} else {
|
||||
line += hangul.rpadByte(artclValue, byteCnt, " ");
|
||||
}
|
||||
|
||||
}
|
||||
writer.write(line);
|
||||
}
|
||||
|
||||
writer.close();
|
||||
|
||||
String zipFileName = yyyymmdd + printKorName + ".zip";
|
||||
String zipFilePath = outsourcingResultPath + File.separator + zipFileName;
|
||||
|
||||
ZIP zip = new ZIP();
|
||||
zip.compress(zipFilePath, metaFilePath, imagesFolderPath);
|
||||
|
||||
metaFile.delete();
|
||||
File[] images = imagesFolderPathFile.listFiles();
|
||||
for(File image : images) {
|
||||
image.delete();
|
||||
}
|
||||
imagesFolderPathFile.delete();
|
||||
|
||||
resultZipFilePath = zipFilePath;
|
||||
result.put("download", this.getDownloadable().setFilename(zipFileName));
|
||||
result.put("downloadData", data);
|
||||
result.put("dataNames", this.filterDownloadDataNames());
|
||||
} catch(FileNotFoundException e) {
|
||||
throw new RuntimeException("파일을 찾을 수 없습니다.");
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("외주파일생성 중 오류가 발생하였습니다.");
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public void write(OutputStream out) {
|
||||
try {
|
||||
FileInputStream fis = new FileInputStream(resultZipFilePath);
|
||||
fis.transferTo(out);
|
||||
fis.close();
|
||||
new File(resultZipFilePath).delete();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public Downloadable getDownloadable() {
|
||||
return new Downloadable()
|
||||
.setContentType("application/zip")
|
||||
.setWriter(this::write);
|
||||
}
|
||||
|
||||
public static List<PredefinedSet> predifinedSetForOutsourcing() {
|
||||
List<PredefinedSet> predefinedSetList = new ArrayList<>();
|
||||
predefinedSetList.add(new PredefinedSet("SNDNG_DTL_ID", "발송상세아이디").offLog());
|
||||
predefinedSetList.add(new PredefinedSet("VLTN_LAW_NM", "위반법명"));
|
||||
predefinedSetList.add(new PredefinedSet("BARCODE", "바코드").offLog());
|
||||
predefinedSetList.add(new PredefinedSet("CRDN_DT", "단속일시"));
|
||||
predefinedSetList.add(new PredefinedSet("DUDT_YMD", "납부기한"));
|
||||
predefinedSetList.add(new PredefinedSet("VHRNO", "차량번호"));
|
||||
predefinedSetList.add(new PredefinedSet("FFNLG_CARMDL_NM", "과태료차종명"));
|
||||
predefinedSetList.add(new PredefinedSet("VHCL_NM", "차량명"));
|
||||
predefinedSetList.add(new PredefinedSet("CRDN_PLC", "단속장소"));
|
||||
predefinedSetList.add(new PredefinedSet("RTPYR_ADDR", "납부자기본주소"));
|
||||
predefinedSetList.add(new PredefinedSet("RTPYR_DTL_ADDR", "납부자상세주소"));
|
||||
predefinedSetList.add(new PredefinedSet("RTPYR_ZIP", "납부자우편번호"));
|
||||
predefinedSetList.add(new PredefinedSet("RTPYR_NM", "납부자명"));
|
||||
predefinedSetList.add(new PredefinedSet("OPNN_RANGE", "의견진술기간"));
|
||||
predefinedSetList.add(new PredefinedSet("CRDN_SE_NM", "단속구분명"));
|
||||
predefinedSetList.add(new PredefinedSet("ATCH_FILE_CNT", "첨부파일갯수"));
|
||||
predefinedSetList.add(new PredefinedSet("FFNLG_CRDN_AMT", "과태료단속금액"));
|
||||
predefinedSetList.add(new PredefinedSet("SUM_AMT", "합계금액"));
|
||||
predefinedSetList.add(new PredefinedSet("RG_NO", "등기번호"));
|
||||
predefinedSetList.add(new PredefinedSet("OCR0", "OCR0").offLog());
|
||||
predefinedSetList.add(new PredefinedSet("OCR0_1", "OCR0_1").offLog());
|
||||
predefinedSetList.add(new PredefinedSet("OCR0_2", "OCR0_2").offLog());
|
||||
predefinedSetList.add(new PredefinedSet("OCR_BAND1", "OCR_BAND1").offLog());
|
||||
predefinedSetList.add(new PredefinedSet("OCR_BAND2", "OCR_BAND2").offLog());
|
||||
predefinedSetList.add(new PredefinedSet("BANK_NM", "가상계좌은행명"));
|
||||
predefinedSetList.add(new PredefinedSet("VR_ACTNO", "가상계좌"));
|
||||
predefinedSetList.add(new PredefinedSet("EPAYNO", "전자납부번호"));
|
||||
predefinedSetList.add(new PredefinedSet("EMPTY", "공백").offLog());
|
||||
return predefinedSetList;
|
||||
}
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class OutsourcingForm extends AbstractEntity {
|
||||
|
||||
private String outsourcingBscId;
|
||||
private String sggCd;
|
||||
private String taskSeCd;
|
||||
private String sndngSeCd;
|
||||
private List<OutsourcingArtclStng> zipArtclStngList;
|
||||
private String[] outsourcingFormIDs;
|
||||
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
public class OutsourcingStngQuery extends CmmnQuery {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
//발송구분코드
|
||||
private String sndngSeCd;
|
||||
|
||||
public String getSndngSeCd() {
|
||||
return ifEmpty(sndngSeCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends OutsourcingStngQuery> T setSndngSeCd(String sndngSeCd) {
|
||||
this.sndngSeCd = sndngSeCd;
|
||||
return self();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,26 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class PredefinedSet {
|
||||
public PredefinedSet(String artclNm, String artclDscrp) {
|
||||
this.artclNm = artclNm;
|
||||
this.artclDscrp = artclDscrp;
|
||||
this.downloadData = true;
|
||||
}
|
||||
protected String artclNm;
|
||||
protected String artclDscrp;
|
||||
protected boolean downloadData; //다운로드 이력 기재 항목 여부
|
||||
|
||||
/**
|
||||
* 해당 항목을 다운로드 이력 제외 항목으로 설정한다.
|
||||
*/
|
||||
public PredefinedSet offLog() {
|
||||
this.downloadData = false;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class Pstn {
|
||||
public Pstn(float left, float top){
|
||||
this.left = left;
|
||||
this.top = top;
|
||||
}
|
||||
|
||||
private float left;
|
||||
private float top;
|
||||
|
||||
public float[] to2Float() {
|
||||
return new float[] { this.left, this.top };
|
||||
}
|
||||
}
|
||||
@ -1,75 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class PstnAndSize {
|
||||
public PstnAndSize(float left, float top, float width, float height){
|
||||
this.left = left;
|
||||
this.top = top;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
public PstnAndSize(Pstn pstn, Size size){
|
||||
this.left = pstn.getLeft();
|
||||
this.top = pstn.getTop();
|
||||
this.width = size.getWidth();
|
||||
this.height = size.getHeight();
|
||||
}
|
||||
|
||||
public PstnAndSize(Pstn pstn, float width, float height){
|
||||
this.left = pstn.getLeft();
|
||||
this.top = pstn.getTop();
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
public PstnAndSize(float left, float top, Size size){
|
||||
this.left = left;
|
||||
this.top = top;
|
||||
this.width = size.getWidth();
|
||||
this.height = size.getHeight();
|
||||
}
|
||||
|
||||
private float left;
|
||||
private float top;
|
||||
private float width;
|
||||
private float height;
|
||||
|
||||
public Pstn getPstn() {
|
||||
return new Pstn(this.left, this.top);
|
||||
}
|
||||
public Size getSize() {
|
||||
return new Size(this.width, this.height);
|
||||
}
|
||||
|
||||
public float[] to4Float() {
|
||||
return new float[] { this.left, this.top, this.width, this.height };
|
||||
}
|
||||
|
||||
public PstnAndSize x2Width() {
|
||||
this.width = this.width * 2.0f;
|
||||
return this;
|
||||
}
|
||||
public PstnAndSize x2Height() {
|
||||
this.height = this.height * 2.0f;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PstnAndSize transXY(float transX, float transY) {
|
||||
this.left = this.left * transX;
|
||||
this.top = this.top * transY;
|
||||
this.width = this.width * transX;
|
||||
this.height = this.height * transY;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PstnAndSize addPstn(Pstn pstn) {
|
||||
this.left = this.left + pstn.getLeft();
|
||||
this.top = this.top + pstn.getTop();
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class Size {
|
||||
public Size(float width, float height){
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
private float width;
|
||||
private float height;
|
||||
|
||||
public float[] to2Float() {
|
||||
return new float[] { this.width, this.height };
|
||||
}
|
||||
}
|
||||
@ -1,13 +0,0 @@
|
||||
package cokr.xit.fims.cmmn;
|
||||
|
||||
public class UnnamedItems {
|
||||
|
||||
protected String[] items;
|
||||
|
||||
public void set(int i, String str) {
|
||||
this.items[i-1] = str;
|
||||
}
|
||||
public String[] get() {
|
||||
return this.items;
|
||||
}
|
||||
}
|
||||
@ -1,98 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstryQuery;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/** 단속 납부자 이력 정보 DAO
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-08-16 leebj 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Mapper("crdnPayerHstryMapper")
|
||||
public interface CrdnPayerHstryMapper extends AbstractMapper {
|
||||
|
||||
/**지정한 조건에 따라 단속 납부자 이력 목록을 조회하여 반환한다.<br />
|
||||
* @param req 단속 납부자 이력 조회 조건
|
||||
* @return 단속 납부자 이력 목록
|
||||
*/
|
||||
List<DataObject> selectCrdnPayerHstryList(CrdnPayerHstryQuery req);
|
||||
|
||||
/**지정한 조건에 따라 단속 납부자 이력 객체들을 반환한다.
|
||||
* @param req 단속 납부자 이력 조회 조건
|
||||
* @return 단속 납부자 이력 객체 목록
|
||||
*/
|
||||
List<CrdnPayerHstry> selectCrdnPayerHstrys(CrdnPayerHstryQuery req);
|
||||
|
||||
/**단속 납부자 이력 정보를 등록한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>"crdnPayerHstry" - 단속 납부자 이력</li>
|
||||
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||
* </ul>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int insertCrdnPayerHstry(Map<String, Object> params);
|
||||
|
||||
/**단속 납부자 이력 정보를 등록한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
default boolean insertCrdnPayerHstry(CrdnPayerHstry crdnPayerHstry) {
|
||||
return crdnPayerHstry != null && insertCrdnPayerHstry(params().set("crdnPayerHstry", crdnPayerHstry)) == 1;
|
||||
}
|
||||
|
||||
/**단속 납부자 주소 이력 정보를 등록한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>"crdnPayerHstry" - 단속 납부자 이력</li>
|
||||
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||
* </ul>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int insertCrdnPayerAddrHstry(Map<String, Object> params);
|
||||
|
||||
/**단속 납부자 주소 이력 정보를 등록한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
default boolean insertCrdnPayerAddrHstry(CrdnPayerHstry crdnPayerHstry) {
|
||||
return crdnPayerHstry != null && insertCrdnPayerAddrHstry(params().set("crdnPayerAddrHstry", crdnPayerHstry)) == 1;
|
||||
}
|
||||
|
||||
/**단속(TB_CRDN) 대장의 납부자 ID를 수정한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>"crdnPayerHstry" - 단속 납부자 이력</li>
|
||||
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||
* </ul>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateCrdnRtpyrId(Map<String, Object> params);
|
||||
|
||||
/**단속(TB_CRDN) 대장의 납부자 ID를 수정한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
default boolean updateCrdnPayer(CrdnPayerHstry crdnPayerHstry) {
|
||||
return crdnPayerHstry != null && updateCrdnRtpyrId(params().set("crdnPayerHstry", crdnPayerHstry)) == 1;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,89 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstryQuery;
|
||||
|
||||
/** 단속 상태 이력 정보 DAO
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-07-19 JoJH 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Mapper("crdnSttsHstryMapper")
|
||||
public interface CrdnSttsHstryMapper extends AbstractMapper {
|
||||
/**지정한 조건에 따라 단속 상태 이력 목록을 조회하여 반환한다.<br />
|
||||
* @param req 단속 상태 이력 조회 조건
|
||||
* @return 단속 상태 이력 목록
|
||||
*/
|
||||
List<DataObject> selectCrdnSttsHstryList(CrdnSttsHstryQuery req);
|
||||
|
||||
/**지정한 조건에 따라 단속 상태 이력 객체들을 반환한다.
|
||||
* @param req 단속 상태 이력 조회 조건
|
||||
* @return 단속 상태 이력 객체 목록
|
||||
*/
|
||||
List<DataObject> selectCrdnSttsHstrys(CrdnSttsHstryQuery req);
|
||||
|
||||
/**지정한 조건에 따라 단속 상태 이력 객체의 마지막 1개를 반환한다.
|
||||
* @param crdnId 단속 ID
|
||||
* @return 지정한 단속 ID의 단속 상태 이력 객체
|
||||
*/
|
||||
default DataObject selectCrdnSttsHstryInfo(String crdnId, String crdnSttsCd, String useYn) {
|
||||
CrdnSttsHstryQuery req = new CrdnSttsHstryQuery();
|
||||
|
||||
req.setCrdnId(crdnId);
|
||||
req.setCrdnSttsCd(crdnSttsCd);
|
||||
req.setUseYn(useYn);
|
||||
req.setOrderBy("STTS_HSTRY_ID DESC");
|
||||
|
||||
List<DataObject> crdnSttsHstrys = selectCrdnSttsHstrys(req);
|
||||
|
||||
return !crdnSttsHstrys.isEmpty() ? crdnSttsHstrys.get(0) : null;
|
||||
}
|
||||
|
||||
/**단속 상태 이력 정보를 등록한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>"crdnSttsHstry" - 단속 상태 이력</li>
|
||||
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||
* </ul>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int insertCrdnSttsHstry(CrdnSttsHstry crdnSttsHstry);
|
||||
|
||||
/**단속 상태 이력 정보를 수정한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>"crdnSttsHstry" - 단속 상태 이력</li>
|
||||
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||
* </ul>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateCrdnSttsHstry(CrdnSttsHstry crdnSttsHstry);
|
||||
|
||||
/**지정한 단속 상태 이력을 삭제한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>"crdnSttsHstry" - 단속 상태 이력</li>
|
||||
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||
* </ul>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int deleteCrdnSttsHstry(CrdnSttsHstry crdnSttsHstry);
|
||||
|
||||
/**단속(TB_CRDN) 대장의 단속 상태 코드를 수정한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>"excl01" - 부과 제외 대장</li>
|
||||
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||
* </ul>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry);
|
||||
|
||||
}
|
||||
@ -1,39 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.cmmn.ExtrArtclStng;
|
||||
import cokr.xit.fims.cmmn.ExtrForm;
|
||||
import cokr.xit.fims.cmmn.ExtrStngQuery;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Mapper("extrStngMapper")
|
||||
public interface ExtrStngMapper extends AbstractMapper {
|
||||
|
||||
/**지정한 조건에 따라 자료 추출 템플릿 문구를 조회한다.<br />
|
||||
* @param query 자료 추출 설정 조회 조건
|
||||
* @return 자료 추출 템플릿 문구
|
||||
*/
|
||||
DataObject selectExtrBscStng(ExtrStngQuery extrStngQuery);
|
||||
|
||||
int insertBscStng(ExtrForm extrForm);
|
||||
|
||||
int updateBscStng(ExtrForm extrForm);
|
||||
|
||||
/**지정한 조건에 따라 추출 항목 설정을 조회한다.<br />
|
||||
* @param query 자료 추출 설정 조회 조건
|
||||
* @return 자료 추출 설정 항목
|
||||
*/
|
||||
List<DataObject> selectExtrArtclStngList(ExtrStngQuery extrStngQuery);
|
||||
|
||||
int updateArtclStng(ExtrArtclStng update);
|
||||
|
||||
int deleteArtclStng(ExtrForm extrForm);
|
||||
|
||||
int insertArtclStng(ExtrArtclStng insert);
|
||||
|
||||
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.dao;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Mapper("linkMapper")
|
||||
public interface LinkMapper extends AbstractMapper {
|
||||
|
||||
/**전자고지 발송 마스터 정보를 등록한다.
|
||||
* @param params 전자고지 발송 마스터 정보
|
||||
* @return 저장여부
|
||||
*/
|
||||
int insertElectronicNoticeSndngMaster(DataObject params);
|
||||
|
||||
/**전자고지 발송 디테일 정보를 등록한다.
|
||||
* @param params 전자고지 발송 디테일 정보
|
||||
* @return 저장여부
|
||||
*/
|
||||
int insertElectronicNoticeSndngDetail(DataObject params);
|
||||
|
||||
}
|
||||
@ -1,40 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.cmmn.OtptArtclStng;
|
||||
import cokr.xit.fims.cmmn.OtptForm;
|
||||
import cokr.xit.fims.cmmn.OtptStngQuery;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Mapper("otptStngMapper")
|
||||
public interface OtptStngMapper extends AbstractMapper {
|
||||
|
||||
/**지정한 조건에 따라 출력물 전역 설정을 조회한다.<br />
|
||||
* @param query 출력물 설정 조회 조건
|
||||
* @return 출력물 전역 설정
|
||||
*/
|
||||
DataObject selectOtptBscStng(OtptStngQuery otptStngQuery);
|
||||
|
||||
int insertBscStng(OtptForm otptForm);
|
||||
|
||||
int updateBscStng(OtptForm otptForm);
|
||||
|
||||
/**지정한 조건에 따라 출력 항목 설정을 조회한다.<br />
|
||||
* @param query 출력물 설정 조회 조건
|
||||
* @return 출력물 설정 항목
|
||||
*/
|
||||
List<DataObject> selectOtptArtclStngList(OtptStngQuery query);
|
||||
|
||||
int updateArtclStng(OtptArtclStng update);
|
||||
|
||||
int deleteArtclStng(OtptForm otptForm);
|
||||
|
||||
int insertArtclStng(OtptArtclStng insert);
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.cmmn.OutsourcingArtclStng;
|
||||
import cokr.xit.fims.cmmn.OutsourcingForm;
|
||||
import cokr.xit.fims.cmmn.OutsourcingStngQuery;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Mapper("outsourcingStngMapper")
|
||||
public interface OutsourcingStngMapper extends AbstractMapper {
|
||||
|
||||
/**지정한 조건에 따라 외주파일 출력 항목 설정을 조회한다.<br />
|
||||
* @param query 출력물 설정 조회 조건
|
||||
* @return 출력물 설정 항목
|
||||
*/
|
||||
List<DataObject> selectArtclStngList(OutsourcingStngQuery query);
|
||||
|
||||
int updateArtclStng(OutsourcingArtclStng update);
|
||||
|
||||
int deleteArtclStng(OutsourcingForm outsourcingForm);
|
||||
|
||||
int insertArtclStng(OutsourcingArtclStng insert);
|
||||
|
||||
}
|
||||
@ -1,164 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.ftp;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import org.apache.commons.net.ftp.FTPClient;
|
||||
import org.apache.commons.net.ftp.FTPFile;
|
||||
import org.apache.commons.net.ftp.FTPReply;
|
||||
|
||||
public class FTPUtil {
|
||||
public static boolean fileDown(RemoteSystemInfo rs, String remoteWorkPath, String downloadRoot) {
|
||||
|
||||
File f = new File(downloadRoot + remoteWorkPath);
|
||||
f.mkdirs();
|
||||
|
||||
FTPClient client = null;
|
||||
|
||||
String thisSystemFileSeperator = File.separator;
|
||||
|
||||
String remoteSystemFileSeparator = rs.getOsType().equals("linux") ? "/" : "\\";
|
||||
|
||||
if(!thisSystemFileSeperator.equals(remoteSystemFileSeparator)) {
|
||||
remoteWorkPath = remoteWorkPath.replaceAll(
|
||||
Matcher.quoteReplacement(thisSystemFileSeperator),
|
||||
Matcher.quoteReplacement(remoteSystemFileSeparator)
|
||||
);
|
||||
}
|
||||
|
||||
client = new FTPClient();
|
||||
client.setControlEncoding("UTF-8");
|
||||
try {
|
||||
client.connect(rs.getIp(), Integer.parseInt(rs.getPort()));
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("접속 오류.");
|
||||
}
|
||||
|
||||
// 접속을 확인.
|
||||
int resultCode = client.getReplyCode();
|
||||
if (!FTPReply.isPositiveCompletion(resultCode)) {
|
||||
throw new RuntimeException("접속 오류 : FTP server refused connection.");
|
||||
}
|
||||
|
||||
try {
|
||||
client.setSoTimeout(1000);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("접속 오류.");
|
||||
}
|
||||
|
||||
boolean loginResult = false;
|
||||
try {
|
||||
// 로그인을 한다.
|
||||
loginResult = client.login(rs.getId(), rs.getPw());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("로그인 오류 : Login Error");
|
||||
}
|
||||
|
||||
if (!loginResult) {
|
||||
throw new RuntimeException("로그인 오류 : Login Error");
|
||||
}
|
||||
|
||||
List<String> remoteFiles = new ArrayList<>();
|
||||
List<String> remoteDirectories = new ArrayList<>();
|
||||
|
||||
// FTP에서 파일 리스트와 디렉토리 정보를 취득한다.
|
||||
if (!FTPUtil.getFileList(client, remoteSystemFileSeparator, remoteWorkPath, remoteFiles, remoteDirectories)) {
|
||||
// 리스트 취득 실패시 프로그램을 종료한다.
|
||||
throw new RuntimeException("파일 조회 오류 발생 : File search Error");
|
||||
}
|
||||
|
||||
for (String remoteDirectory : remoteDirectories) {
|
||||
System.out.println("디렉토리-"+remoteDirectory);
|
||||
|
||||
String newFolderPath = "";
|
||||
if(thisSystemFileSeperator.equals(remoteSystemFileSeparator)) {
|
||||
newFolderPath = downloadRoot + remoteDirectory;
|
||||
} else {
|
||||
newFolderPath = downloadRoot + remoteDirectory.replaceAll(
|
||||
Matcher.quoteReplacement(remoteSystemFileSeparator),
|
||||
Matcher.quoteReplacement(thisSystemFileSeperator)
|
||||
);
|
||||
}
|
||||
|
||||
File folder = new File(newFolderPath);
|
||||
folder.mkdirs();
|
||||
}
|
||||
|
||||
|
||||
for (String remoteFile : remoteFiles) {
|
||||
System.out.println("파일-"+remoteFile);
|
||||
|
||||
String tempFileOutputPath = "";
|
||||
|
||||
if(thisSystemFileSeperator.equals(remoteSystemFileSeparator)) {
|
||||
tempFileOutputPath = downloadRoot + remoteFile;
|
||||
} else {
|
||||
tempFileOutputPath = downloadRoot + remoteFile.replaceAll(
|
||||
Matcher.quoteReplacement(remoteSystemFileSeparator),
|
||||
Matcher.quoteReplacement(thisSystemFileSeperator)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
try (FileOutputStream fo = new FileOutputStream(tempFileOutputPath)){
|
||||
//FTPClient의 retrieveFile함수로 보내면 다운로드가 이루어 진다.
|
||||
if (client.retrieveFile(remoteFile, fo)) {
|
||||
System.out.println("Download - " + remoteFile);
|
||||
}
|
||||
} catch(Exception e) {
|
||||
throw new RuntimeException("파일 다운로드 오류");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
try {
|
||||
client.disconnect();
|
||||
} catch(Exception e) {
|
||||
throw new RuntimeException("파일 다운로드 오류");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// FTP의 파일 리스트와 디렉토리 정보를 취득하는 함수.
|
||||
public static boolean getFileList(FTPClient client, String fileSeparator, String work, List<String> files, List<String> directories) {
|
||||
|
||||
// FTP의 디렉토리 커서를 이동한다.
|
||||
try {
|
||||
if (client.changeWorkingDirectory(work)) {
|
||||
|
||||
// 해당 디렉토리의 파일 리스트를 취득한다.
|
||||
for (FTPFile file : client.listFiles()) {
|
||||
|
||||
if (!file.isFile()) {
|
||||
// 디렉토리리면 함수의 재귀적 방식으로 하위 탐색을 시작한다.
|
||||
if(!getFileList(client, fileSeparator, work + file.getName() + fileSeparator, files, directories)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// directories 리스트에 디렉토리 경로를 추가한다.
|
||||
directories.add(work + file.getName() + fileSeparator);
|
||||
} else {
|
||||
// files 리스트에 경로를 추가한다.
|
||||
files.add(work + file.getName());
|
||||
}
|
||||
|
||||
}
|
||||
// FTP의 디렉토리 커서를 상위로 이동하는 함수
|
||||
// client.changeToParentDirectory();
|
||||
|
||||
// FTP의 디렉토리 커서를 이동한다.
|
||||
return client.changeWorkingDirectory(fileSeparator);
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("ftp오류."+e);
|
||||
}
|
||||
|
||||
// 커서 이동에 실패하면 false를 리턴한다.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -1,15 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.ftp;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class RemoteSystemInfo {
|
||||
String ip;
|
||||
String port;
|
||||
String id;
|
||||
String pw;
|
||||
String osType;
|
||||
String workPath;
|
||||
}
|
||||
@ -1,79 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.hwp.format;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.applib.hwp.format.HWPFormat;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.fims.mngt.OgdpUtil;
|
||||
import cokr.xit.foundation.data.DataFormat;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**
|
||||
* 단속확인서
|
||||
*/
|
||||
public class CrdnConfirm extends HWPFormat {
|
||||
|
||||
public CrdnConfirm(Print print, FimsPrintOption printOption, List<DataObject> dataObjectList) {
|
||||
super(print, printOption, dataObjectList);
|
||||
this.maxRunCount = dataObjectList.size();
|
||||
this.formatFilePath = "template/hwp/crdnConfirm.hwp";
|
||||
this.print.setFormatKorName("단속확인서");
|
||||
this.print.setFormatName("crdnConfirm");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getDownloadDataNames() {
|
||||
return List.of("과태료구분","차량번호","단속일시","위반내용","단속장소","단속동","단속조","소유자명","소유자주소");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void runAsWriter() {
|
||||
|
||||
|
||||
String printRequestYmd = print.getPrintRequestDt().substring(0, 8);
|
||||
String yyyy = printRequestYmd.substring(0, 4);
|
||||
String mm = printRequestYmd.substring(4, 6);
|
||||
String dd = printRequestYmd.substring(6, 8);
|
||||
String ymd = yyyy+"년 "+mm+"월 "+dd+"일";
|
||||
|
||||
String instNm = OgdpUtil.getInstituteLeader((String)print.getPrintRequestUserInfo().getInfo().get("instNm"), false);
|
||||
|
||||
|
||||
DataObject one = data.get(currentRunCount);
|
||||
DataObject newObj = (DataObject) new DataObject()
|
||||
.set("과태료", one.string("TASK_SE_NM"))
|
||||
.set("차량번호", one.string("VHRNO"))
|
||||
.set("단속일시", DataFormat.yyyy_mm_dd_hh_mm_ss(one.string("CRDN_YMD_TM")))
|
||||
.set("위반내용", one.string("VLTN_ARTCL"))
|
||||
.set("단속장소", one.string("CRDN_PLC"))
|
||||
.set("단속동", one.string("CRDN_STDG_NM"))
|
||||
.set("단속조", one.string("TEAM_NM"))
|
||||
.set("소유자", one.string("RTPYR_NM"))
|
||||
.set("주소", one.string("RTPYR_FULL_ADDR"))
|
||||
.set("우편번호", one.string("RTPYR_ZIP"))
|
||||
.set("연월일", ymd)
|
||||
.set("발신", instNm);
|
||||
|
||||
if(!one.string("PHOTO1").equals("")) {
|
||||
newObj.set("왼쪽위사진", writer.image().add(one.string("PHOTO1")));
|
||||
}
|
||||
if(!one.string("PHOTO2").equals("")) {
|
||||
newObj.set("오른쪽위사진", writer.image().add(one.string("PHOTO2")));
|
||||
}
|
||||
if(!one.string("PHOTO3").equals("")) {
|
||||
newObj.set("왼쪽아래사진", writer.image().add(one.string("PHOTO3")));
|
||||
}
|
||||
if(!one.string("PHOTO4").equals("")) {
|
||||
newObj.set("오른쪽아래사진", writer.image().add(one.string("PHOTO4")));
|
||||
}
|
||||
|
||||
writer.table(0, 0, 13).setValues(List.of(newObj));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,96 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.hwp.format;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.applib.hwp.format.HWPFormat;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.fims.mngt.OgdpUtil;
|
||||
import cokr.xit.foundation.data.DataFormat;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**
|
||||
* 단속내역서
|
||||
*/
|
||||
public class CrdnList extends HWPFormat {
|
||||
|
||||
public CrdnList(Print print, FimsPrintOption printOption, List<DataObject> dataObjectList) {
|
||||
super(print, printOption, dataObjectList);
|
||||
this.maxRunCount = 1;
|
||||
this.formatFilePath = "template/hwp/crdnList.hwp";
|
||||
this.print.setFormatKorName("단속내역서");
|
||||
this.print.setFormatName("crdnList");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getDownloadDataNames() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("과태료구분");
|
||||
list.add("시군구명");
|
||||
list.add("단속일시");
|
||||
list.add("단속장소");
|
||||
list.add("차량번호");
|
||||
list.add("대체차량번호");
|
||||
list.add("고지번호");
|
||||
list.add("부과금액");
|
||||
list.add("가상계좌번호");
|
||||
list.add("전자납부번호");
|
||||
list.add("처리상태");
|
||||
list.add("처리일자");
|
||||
list.add("납부기한");
|
||||
list.add("수납일자");
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void runAsWriter() {
|
||||
|
||||
String globalRtpyrNm = data.get(0).string("RTPYR_NM");
|
||||
String globalRtpyrNo = data.get(0).string("RTPYR_NO");
|
||||
String globalRtpyrFullAddr = data.get(0).string("RTPYR_FULL_ADDR");
|
||||
int globalTotalAmount = data.stream().mapToInt(i -> i.number("LEVY_AMT").intValue()).sum();
|
||||
|
||||
writer.setValue("출력일시", DataFormat.yyyy_mm_dd_hh_mm_ss(print.getPrintRequestDt()));
|
||||
writer.setValue("성명", globalRtpyrNm);
|
||||
if(print.getPrivateInfoYn(printOption)) {
|
||||
writer.setValue("주민번호", globalRtpyrNo);
|
||||
} else {
|
||||
writer.setValue("주민번호", "*************");
|
||||
}
|
||||
writer.setValue("주소", globalRtpyrFullAddr);
|
||||
writer.setValue("총건수", DataFormat.n_nn0(this.data.size()));
|
||||
writer.setValue("총금액", DataFormat.n_nn0(globalTotalAmount));
|
||||
|
||||
String instNm = (String) print.getPrintRequestUserInfo().getInfo().get("instNm");
|
||||
instNm = OgdpUtil.getLastWord(instNm);
|
||||
writer.setValue("발신", instNm);
|
||||
|
||||
List<DataObject> list = IntStream.rangeClosed(1, this.data.size()).boxed().map(i -> {
|
||||
DataObject one = data.get(i-1);
|
||||
return (DataObject) new DataObject()
|
||||
.set("과태료", one.string("TASK_SE_NM"))
|
||||
.set("시군구명", one.string("SGG_NM"))
|
||||
.set("단속일시", DataFormat.yyyy_mm_dd_hh_mm_ss(one.string("CRDN_YMD_TM")))
|
||||
.set("단속장소", one.string("CRDN_PLC"))
|
||||
.set("차량번호", one.string("VHRNO"))
|
||||
.set("대체차량번호", one.string("RPM_SZR_VHRNO"))
|
||||
.set("고지번호", one.string("GOJI_NO"))
|
||||
.set("금액", DataFormat.n_nn0(one.string("LEVY_AMT")))
|
||||
.set("가상계좌번호", one.string("VR_ACTNO"))
|
||||
.set("전자납부번호", one.string("EPAYNO"))
|
||||
.set("처리상태", one.string("CRDN_STTS_NM"))
|
||||
.set("처리일자", DataFormat.yyyy_mm_dd(one.string("CRDN_STTS_CHG_DT").substring(0, 8)))
|
||||
.set("납부기한", DataFormat.yyyy_mm_dd(one.string("DUDT_YMD")))
|
||||
.set("수납일자", DataFormat.yyyy_mm_dd(one.string("RCVMT_YMD")));
|
||||
}).toList();
|
||||
writer.table(2, 0, 3).setValues(list);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,139 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.hwp.format;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.applib.hwp.format.HWPFormat;
|
||||
import cokr.xit.base.docs.hwp.HWPWriter;
|
||||
import cokr.xit.fims.cmmn.CmmnUtil;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.foundation.data.DataFormat;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import kr.dogfoot.hwplib.object.HWPFile;
|
||||
|
||||
|
||||
public class CvlcptOrgn extends HWPFormat {
|
||||
private List<DataObject> data2 = null;
|
||||
|
||||
public CvlcptOrgn(Print print, FimsPrintOption printOption, List<DataObject> dataObjectList) {
|
||||
super(print, printOption, dataObjectList);
|
||||
this.maxRunCount = 1;
|
||||
this.formatFilePath = "template/hwp/cvlcptOrgnl_text.hwp";
|
||||
this.print.setFormatKorName("민원원본내역");
|
||||
this.print.setFormatName("cvlcptOrgnl");
|
||||
|
||||
this.data2 = new ArrayList<DataObject>();
|
||||
if(!dataObjectList.get(0).string("PHOTO0").equals("")) {
|
||||
|
||||
int photoCnt = dataObjectList.get(0).number("ORGN_PHOTO_CNT").intValue();
|
||||
int PHOTO_COUNT_PER_PAGE = 4;
|
||||
|
||||
for(int i=0; i < photoCnt; i += PHOTO_COUNT_PER_PAGE) {
|
||||
|
||||
DataObject photoObj = new DataObject();
|
||||
|
||||
photoObj.set("PHOTO1", dataObjectList.get(0).string("PHOTO"+i));
|
||||
if(i+1 < photoCnt)
|
||||
photoObj.set("PHOTO2", dataObjectList.get(0).string("PHOTO"+(i+1)));
|
||||
if(i+2 < photoCnt)
|
||||
photoObj.set("PHOTO3", dataObjectList.get(0).string("PHOTO"+(i+2)));
|
||||
if(i+3 < photoCnt)
|
||||
photoObj.set("PHOTO4", dataObjectList.get(0).string("PHOTO"+(i+3)));
|
||||
|
||||
data2.add(photoObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getDownloadDataNames() {
|
||||
return List.of("접수번호","신청자","접수일자","처리기한","민원목록번호","민원내용");
|
||||
}
|
||||
|
||||
@Override
|
||||
public HWPFormat makeFile(){
|
||||
HWPFile hwpFile = HWPWriter.classpath(this.formatFilePath);
|
||||
this.writer = new HWPWriter(hwpFile);
|
||||
|
||||
runAsWriter();
|
||||
String tempPath = this.print.pathForNewFile();
|
||||
writer.write(tempPath);
|
||||
resultFilesPath.add(tempPath);
|
||||
|
||||
writer = null;
|
||||
currentRunCount++;
|
||||
|
||||
if(data2 != null && data2.size() > 0) {
|
||||
|
||||
formatFilePath = "template/hwp/cvlcptOrgnl_photo.hwp";
|
||||
maxRunCount = data2.size()+1;
|
||||
|
||||
while(currentRunCount != maxRunCount) {
|
||||
HWPFile hwpFile_i = HWPWriter.classpath(this.formatFilePath);
|
||||
this.writer = new HWPWriter(hwpFile_i);
|
||||
runAsWriter();
|
||||
String tempPath_i = this.print.pathForNewFile();
|
||||
writer.write(tempPath_i);
|
||||
resultFilesPath.add(tempPath_i);
|
||||
|
||||
writer = null;
|
||||
currentRunCount++;
|
||||
}
|
||||
}
|
||||
|
||||
this.merge();
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void runAsWriter() {
|
||||
|
||||
if(this.formatFilePath.equals("template/hwp/cvlcptOrgnl_text.hwp")) {
|
||||
|
||||
DataObject one = data.get(0);
|
||||
|
||||
writer.setValue("신청자", one.string("CVLCPT_APLCNT_NM"));
|
||||
writer.setValue("접수일자", DataFormat.yyyy_mm_dd(one.string("CVLCPT_RCPT_YMD")));
|
||||
|
||||
String cvlcptRrcsPrnmntDt = one.string("CVLCPT_PRCS_PRNMNT_DT");
|
||||
if(cvlcptRrcsPrnmntDt.length() > 8) {
|
||||
cvlcptRrcsPrnmntDt = cvlcptRrcsPrnmntDt.substring(0, 8);
|
||||
}
|
||||
|
||||
writer.setValue("처리기한", DataFormat.yyyy_mm_dd(cvlcptRrcsPrnmntDt));
|
||||
writer.setValue("접수번호", one.string("CVLCPT_RCPT_NO"));
|
||||
writer.setValue("목록번호", one.string("CVLCPT_LIST_NO"));
|
||||
|
||||
String cvlcptAplyCn = one.string("CVLCPT_APLY_CN");
|
||||
cvlcptAplyCn = CmmnUtil.escapeHTMLEntity(cvlcptAplyCn);
|
||||
writer.setValue("민원내용", cvlcptAplyCn);
|
||||
|
||||
} else {
|
||||
|
||||
DataObject one = data2.get(currentRunCount-1);
|
||||
DataObject newObj = new DataObject();
|
||||
if(!one.string("PHOTO1").equals("")) {
|
||||
newObj.set("왼쪽위사진", writer.image().add(one.string("PHOTO1")));
|
||||
}
|
||||
if(!one.string("PHOTO2").equals("")) {
|
||||
newObj.set("오른쪽위사진", writer.image().add(one.string("PHOTO2")));
|
||||
}
|
||||
if(!one.string("PHOTO3").equals("")) {
|
||||
newObj.set("왼쪽아래사진", writer.image().add(one.string("PHOTO3")));
|
||||
}
|
||||
if(!one.string("PHOTO4").equals("")) {
|
||||
newObj.set("오른쪽아래사진", writer.image().add(one.string("PHOTO4")));
|
||||
}
|
||||
writer.table(0, 0, 2).setValues(List.of(newObj));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,77 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.hwp.format;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.applib.hwp.format.HWPFormat;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public class DlbrDecsnList extends HWPFormat {
|
||||
|
||||
public DlbrDecsnList(Print print, FimsPrintOption printOption, List<DataObject> dataObjectList) {
|
||||
super(print, printOption, dataObjectList);
|
||||
this.maxRunCount = dataObjectList.size();
|
||||
this.formatFilePath = "template/hwp/opnnDlbrDecsnForm.hwp";
|
||||
this.print.setFormatKorName("의견제출심의결의서");
|
||||
this.print.setFormatName("dlbrDecsnList");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getDownloadDataNames() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("접수번호");
|
||||
list.add("접수일");
|
||||
list.add("위반정보");
|
||||
list.add("진술자명");
|
||||
list.add("진술자생년월일");
|
||||
list.add("소유주관계");
|
||||
list.add("진술자주소");
|
||||
list.add("진술자연락처");
|
||||
list.add("차량번호");
|
||||
list.add("단속일시");
|
||||
list.add("단속장소");
|
||||
list.add("의견체출내용");
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void runAsWriter() {
|
||||
|
||||
DataObject one = data.get(currentRunCount);
|
||||
|
||||
writer.setValue("접수번호", one.string("RCPT_NO_MASK"));
|
||||
writer.setValue("접수일", one.string("RCPT_YMD_MASK"));
|
||||
writer.setValue("위반정보", one.string("TASK_SE_NM"));
|
||||
writer.setValue("진술자명", one.string("STTR_NM"));
|
||||
writer.setValue("진술자생년월일", one.string("STTR_BRDT_MASK"));
|
||||
writer.setValue("진술자연락처", one.string("STTR_CTTPC"));
|
||||
writer.setValue("소유주관계", one.string("OWNR_REL_NM"));
|
||||
writer.setValue("진술자주소", one.string("STTR_WHOL_ADDR"));
|
||||
writer.setValue("차량번호", one.string("VHRNO"));
|
||||
writer.setValue("단속일시", one.string("CRDN_YMD_TM_MASK"));
|
||||
writer.setValue("단속장소", one.string("CRDN_PLC"));
|
||||
writer.setValue("의견제출내용", one.string("OPNN_SBMSN_CN"));
|
||||
writer.setValue("심의회원직급1", one.string("DLBR_MBR_JBGD1"));
|
||||
writer.setValue("심의회원명1", one.string("DLBR_MBR_NM1"));
|
||||
writer.setValue("심의회원직급2", one.string("DLBR_MBR_JBGD2"));
|
||||
writer.setValue("심의회원명2", one.string("DLBR_MBR_NM2"));
|
||||
writer.setValue("심의회원직급3", one.string("DLBR_MBR_JBGD3"));
|
||||
writer.setValue("심의회원명3", one.string("DLBR_MBR_NM3"));
|
||||
writer.setValue("심의회원직급4", one.string("DLBR_MBR_JBGD4"));
|
||||
writer.setValue("심의회원명4", one.string("DLBR_MBR_NM4"));
|
||||
writer.setValue("심의회원직급5", one.string("DLBR_MBR_JBGD5"));
|
||||
writer.setValue("심의회원명5", one.string("DLBR_MBR_NM5"));
|
||||
writer.setValue("심의회원직급6", one.string("DLBR_MBR_JBGD6"));
|
||||
writer.setValue("심의회원명6", one.string("DLBR_MBR_NM6"));
|
||||
writer.setValue("심의회원직급7", one.string("DLBR_MBR_JBGD7"));
|
||||
writer.setValue("심의회원명7", one.string("DLBR_MBR_NM7"));
|
||||
writer.setValue("담당자검토의견", one.string("PIC_RVW_OPNN"));
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,80 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.hwp.format;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.applib.hwp.format.HWPFormat;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.fims.mngt.OgdpUtil;
|
||||
import cokr.xit.foundation.data.DataFormat;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**
|
||||
* 납부확인서
|
||||
*/
|
||||
public class RcvmtConfirm extends HWPFormat {
|
||||
|
||||
public RcvmtConfirm(Print print, FimsPrintOption printOption, List<DataObject> dataObjectList) {
|
||||
super(print, printOption, dataObjectList);
|
||||
|
||||
this.maxRunCount = dataObjectList.size();
|
||||
this.formatFilePath = "template/hwp/rcvmtConfirm.hwp";
|
||||
print.setFormatKorName("납부확인서");
|
||||
print.setFormatName("rcvmtConfirm");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getDownloadDataNames() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("위반명");
|
||||
list.add("위반차량");
|
||||
list.add("대체차량");
|
||||
list.add("위반금액");
|
||||
list.add("단속일자");
|
||||
list.add("단속장소");
|
||||
list.add("소유자");
|
||||
list.add("주민번호");
|
||||
list.add("소유자주소");
|
||||
list.add("고지번호");
|
||||
list.add("수납일자");
|
||||
list.add("수납금액");
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void runAsWriter() {
|
||||
|
||||
String instNm = OgdpUtil.getInstituteLeader((String) print.getPrintRequestUserInfo().getInfo().get("instNm"), false);
|
||||
|
||||
|
||||
DataObject one = data.get(currentRunCount);
|
||||
DataObject newObj = (DataObject) new DataObject()
|
||||
.set("위반명1", one.string("TASK_SE_NM"))
|
||||
.set("위반명2", one.string("TASK_SE_NM"))
|
||||
.set("위반차량", one.string("VHRNO"))
|
||||
.set("대체차량", one.string("RPM_SZR_VHRNO"))
|
||||
.set("위반금액", DataFormat.n_nn0(one.string("FFNLG_AMT")))
|
||||
.set("단속일자", DataFormat.yyyy_mm_dd(one.string("CRDN_YMD")))
|
||||
.set("단속장소", one.string("CRDN_PLC"))
|
||||
.set("소유자", one.string("RTPYR_NM"))
|
||||
.set("주민번호", one.string("RTPYR_NO"))
|
||||
.set("주소", one.string("RTPYR_FULL_ADDR"))
|
||||
.set("고지번호", one.string("GOJI_NO"))
|
||||
.set("수납일자", DataFormat.yyyy_mm_dd(one.string("RCVMT_YMD")))
|
||||
.set("수납금액", DataFormat.n_nn0(one.string("RCVMT_AMT")))
|
||||
.set("연월일시분초", DataFormat.yyyy_mm_dd_hh_mm_ss(print.getPrintRequestDt()))
|
||||
.set("확인자", print.getPrintRequestUserInfo().getName())
|
||||
.set("발신", instNm)
|
||||
;
|
||||
|
||||
|
||||
writer.table(0, 0, 12).setValues(List.of(newObj));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,112 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.hwp.format;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import org.egovframe.rte.fdl.string.EgovStringUtil;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.applib.hwp.OffcsCellFinder;
|
||||
import cokr.xit.applib.hwp.format.HWPFormat;
|
||||
import cokr.xit.fims.cmmn.CmmnUtil;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.fims.mngt.OgdpUtil;
|
||||
import cokr.xit.foundation.data.DataFormat;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import kr.dogfoot.hwplib.object.bodytext.control.table.Cell;
|
||||
import kr.dogfoot.hwplib.object.bodytext.paragraph.Paragraph;
|
||||
|
||||
/**
|
||||
* 채권신고서
|
||||
*/
|
||||
public class ReportOnClaims extends HWPFormat {
|
||||
|
||||
public ReportOnClaims(Print print, FimsPrintOption printOption, List<DataObject> dataObjectList) {
|
||||
super(print, printOption, dataObjectList);
|
||||
this.maxRunCount = 1;
|
||||
this.formatFilePath = "template/hwp/reportOnClaims.hwp";
|
||||
this.print.setFormatKorName("채권신고서");
|
||||
this.print.setFormatName("reportOnClaims");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getDownloadDataNames() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("과세번호");
|
||||
list.add("법정기일");
|
||||
list.add("세목");
|
||||
list.add("세액");
|
||||
list.add("가산금");
|
||||
list.add("합계");
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void runAsWriter() {
|
||||
|
||||
Map<String,String> globalVariable = printOption.getGlobalVariable();
|
||||
|
||||
String offcsFilePath = EgovStringUtil.null2void(globalVariable.get("offcsFilePath"));
|
||||
if(!offcsFilePath.equals("")) {
|
||||
BiConsumer<Paragraph, Rectangle> bc = writer.image().add(offcsFilePath);
|
||||
|
||||
Cell cell = OffcsCellFinder.find(writer);
|
||||
if(cell != null) {
|
||||
Paragraph para = cell.getParagraphList().getParagraph(0);
|
||||
int width = (int)cell.getListHeader().getWidth(),
|
||||
height = (int)cell.getListHeader().getHeight();
|
||||
bc.accept(para, new Rectangle(1, 1, width, height));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
writer.setValue("주소", globalVariable.get("deptAddr"));
|
||||
writer.setValue("전화", globalVariable.get("deptTelno"));
|
||||
writer.setValue("팩스", globalVariable.get("deptFxno"));
|
||||
writer.setValue("담당자", print.getPrintRequestUserInfo().getName());
|
||||
writer.setValue("사건번호", EgovStringUtil.null2void(globalVariable.get("caseNo")));
|
||||
writer.setValue("체납자성명", EgovStringUtil.null2void(globalVariable.get("rtpyrNm")));
|
||||
writer.setValue("체납자번호", EgovStringUtil.null2void(globalVariable.get("rtpyrNo")));
|
||||
writer.setValue("체납자주소", EgovStringUtil.null2void(globalVariable.get("rtpyrFullAddr")));
|
||||
int sumOfList = data.stream().mapToInt(item -> item.number("SUM_AMT").intValue()).sum();
|
||||
writer.setValue("채권청구액", DataFormat.n_nn0(sumOfList));
|
||||
writer.setValue("합계금액", DataFormat.n_nn0(sumOfList));
|
||||
writer.setValue("합계금액한글", CmmnUtil.convertNumberToHangul(sumOfList));
|
||||
|
||||
String printRequestYmd = print.getPrintRequestDt().substring(0, 8);
|
||||
String yyyy = printRequestYmd.substring(0, 4);
|
||||
String mm = printRequestYmd.substring(4, 6);
|
||||
String dd = printRequestYmd.substring(6, 8);
|
||||
String ymd = yyyy+"년 "+mm+"월 "+dd+"일";
|
||||
writer.setValue("연월일", ymd);
|
||||
|
||||
String instNm = (String) print.getPrintRequestUserInfo().getInfo().get("instNm");
|
||||
instNm = OgdpUtil.getLastWord(instNm);
|
||||
instNm = OgdpUtil.getInstituteLeader(instNm, false);
|
||||
writer.setValue("발신", instNm);
|
||||
|
||||
List<DataObject> list = IntStream.rangeClosed(1, this.data.size()).boxed().map(i -> {
|
||||
DataObject one = data.get(i-1);
|
||||
DataObject newObj = (DataObject) new DataObject()
|
||||
.set("년도", one.string("FYR"))
|
||||
.set("과세번호", one.string("GOJI_NO"))
|
||||
.set("법정기일", DataFormat.yyyy_mm_dd(one.string("DUDT_YMD")))
|
||||
.set("세목", one.string("TXITM_NM"))
|
||||
.set("세액", DataFormat.n_nn0(one.string("LEVY_PCPTAX")))
|
||||
.set("가산금", DataFormat.n_nn0(one.string("LEVY_ADAMT")))
|
||||
.set("합계", DataFormat.n_nn0(one.string("SUM_AMT")));
|
||||
return newObj;
|
||||
}).toList();
|
||||
writer.table(0, 9, 2).setValues(list);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,115 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.hwp.format;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import org.egovframe.rte.fdl.string.EgovStringUtil;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.applib.hwp.OffcsCellFinder;
|
||||
import cokr.xit.applib.hwp.format.HWPFormat;
|
||||
import cokr.xit.fims.cmmn.CmmnUtil;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.fims.mngt.OgdpUtil;
|
||||
import cokr.xit.foundation.data.DataFormat;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import kr.dogfoot.hwplib.object.bodytext.control.table.Cell;
|
||||
import kr.dogfoot.hwplib.object.bodytext.paragraph.Paragraph;
|
||||
|
||||
/**
|
||||
* 교부청구서
|
||||
*/
|
||||
public class RequestForDelivery extends HWPFormat {
|
||||
|
||||
public RequestForDelivery(Print print, FimsPrintOption printOption, List<DataObject> dataObjectList) {
|
||||
super(print, printOption, dataObjectList);
|
||||
this.maxRunCount = 1;
|
||||
this.formatFilePath = "template/hwp/requestForDelivery.hwp";
|
||||
this.print.setFormatKorName("교부청구서");
|
||||
this.print.setFormatName("requestForDelivery");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getDownloadDataNames() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("징수과목");
|
||||
list.add("고지번호");
|
||||
list.add("과태료계");
|
||||
list.add("법정기일");
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void runAsWriter() {
|
||||
|
||||
Map<String,String> globalVariable = printOption.getGlobalVariable();
|
||||
|
||||
String offcsFilePath = EgovStringUtil.null2void(globalVariable.get("offcsFilePath"));
|
||||
if(!offcsFilePath.equals("")) {
|
||||
BiConsumer<Paragraph, Rectangle> bc = writer.image().add(offcsFilePath);
|
||||
|
||||
Cell cell = OffcsCellFinder.find(writer);
|
||||
if(cell != null) {
|
||||
Paragraph para = cell.getParagraphList().getParagraph(0);
|
||||
int width = (int)cell.getListHeader().getWidth(),
|
||||
height = (int)cell.getListHeader().getHeight();
|
||||
bc.accept(para, new Rectangle(1, 1, width, height));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
writer.setValue("문서번호", EgovStringUtil.null2void(globalVariable.get("docNo")));
|
||||
writer.setValue("사건번호", EgovStringUtil.null2void(globalVariable.get("caseNo")));
|
||||
writer.setValue("수신", EgovStringUtil.null2void(globalVariable.get("receiver")));
|
||||
writer.setValue("체납자성명", EgovStringUtil.null2void(globalVariable.get("rtpyrNm")));
|
||||
writer.setValue("체납자번호", EgovStringUtil.null2void(globalVariable.get("rtpyrNo")));
|
||||
writer.setValue("차량번호", EgovStringUtil.null2void(globalVariable.get("vhrno")));
|
||||
writer.setValue("주소", EgovStringUtil.null2void(globalVariable.get("rtpyrFullAddr")));
|
||||
|
||||
int sumOfList = data.stream().mapToInt(item -> item.number("SUM_AMT").intValue()).sum();
|
||||
writer.setValue("합계금액", DataFormat.n_nn0(sumOfList));
|
||||
writer.setValue("교부청구금액", DataFormat.n_nn0(sumOfList));
|
||||
writer.setValue("교부청구금액한글", CmmnUtil.convertNumberToHangul(sumOfList));
|
||||
writer.setValue("개설은행", EgovStringUtil.null2void(globalVariable.get("dtbnBankNm")));
|
||||
writer.setValue("계좌번호", EgovStringUtil.null2void(globalVariable.get("dtbnActno")));
|
||||
|
||||
String instNm = (String) print.getPrintRequestUserInfo().getInfo().get("instNm");
|
||||
String deptNm = (String) print.getPrintRequestUserInfo().getInfo().get("deptNm");
|
||||
writer.setValue("예금주", instNm + " " + deptNm);
|
||||
|
||||
String printRequestYmd = print.getPrintRequestDt().substring(0, 8);
|
||||
String yyyy = printRequestYmd.substring(0, 4);
|
||||
String mm = printRequestYmd.substring(4, 6);
|
||||
String dd = printRequestYmd.substring(6, 8);
|
||||
String ymd = yyyy+"년 "+mm+"월 "+dd+"일";
|
||||
writer.setValue("연월일", ymd);
|
||||
|
||||
instNm = OgdpUtil.getLastWord(instNm);
|
||||
instNm = OgdpUtil.getInstituteLeader(instNm, false);
|
||||
writer.setValue("발신", instNm);
|
||||
|
||||
List<DataObject> list = IntStream.rangeClosed(1, this.data.size()).boxed().map(i -> {
|
||||
DataObject one = data.get(i-1);
|
||||
DataObject newObj = (DataObject) new DataObject()
|
||||
.set("징수과목", one.string("TXITM_NM"))
|
||||
.set("고지번호", one.string("GOJI_NO"))
|
||||
.set("과태료계", DataFormat.n_nn0(one.string("SUM_AMT")))
|
||||
.set("법정기일", DataFormat.yyyy_mm_dd(one.string("DUDT_YMD")))
|
||||
;
|
||||
return newObj;
|
||||
}).toList();
|
||||
writer.table(0, 9, 1).setValues(list);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,85 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.hwp.format;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import org.egovframe.rte.fdl.string.EgovStringUtil;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.applib.hwp.OffcsCellFinder;
|
||||
import cokr.xit.applib.hwp.format.HWPFormat;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import kr.dogfoot.hwplib.object.bodytext.control.table.Cell;
|
||||
import kr.dogfoot.hwplib.object.bodytext.paragraph.Paragraph;
|
||||
|
||||
public class SvbtcList extends HWPFormat {
|
||||
|
||||
public SvbtcList(Print print, FimsPrintOption printOption, List<DataObject> dataObjectList) {
|
||||
super(print, printOption, dataObjectList);
|
||||
this.maxRunCount = 1;
|
||||
this.formatFilePath = "template/hwp/svbtcList.hwp";
|
||||
this.print.setFormatKorName("공시송달");
|
||||
this.print.setFormatName("svbtc");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getDownloadDataNames() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("수령인명");
|
||||
list.add("수령인주소");
|
||||
list.add("차량번호");
|
||||
list.add("위반일자");
|
||||
list.add("위반장소");
|
||||
list.add("반송일자");
|
||||
list.add("반송사유");
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void runAsWriter() {
|
||||
|
||||
String offcsFilePath = EgovStringUtil.null2void(data.get(0).string("OFFCS_FILE_PATH"));
|
||||
if(!offcsFilePath.equals("")) {
|
||||
BiConsumer<Paragraph, Rectangle> bc = writer.image().add(offcsFilePath);
|
||||
|
||||
Cell cell = OffcsCellFinder.find(writer);
|
||||
if(cell != null) {
|
||||
Paragraph para = cell.getParagraphList().getParagraph(0);
|
||||
int width = (int)cell.getListHeader().getWidth(),
|
||||
height = (int)cell.getListHeader().getHeight();
|
||||
bc.accept(para, new Rectangle(1, 1, width, height));
|
||||
}
|
||||
}
|
||||
|
||||
writer.setValue("문서번호", data.get(0).string("INPUT_DOC_NO"));
|
||||
writer.setValue("제목", data.get(0).string("INPUT_TTL_NM"));
|
||||
writer.setValue("공고기간", data.get(0).string("INPUT_SVBTC_DATE"));
|
||||
writer.setValue("기관장", data.get(0).string("INST_LEADER"));
|
||||
writer.setValue("부서명", data.get(0).string("SGG_DEPT_NM"));
|
||||
writer.setValue("부서전화번호", "☎" + data.get(0).string("DEPT_TELNO"));
|
||||
|
||||
|
||||
List<DataObject> list = IntStream.rangeClosed(1, this.data.size()).boxed().map(i -> {
|
||||
DataObject one = data.get(i-1);
|
||||
return (DataObject) new DataObject()
|
||||
.set("성명", one.string("RCPN_NM_MASK"))
|
||||
.set("주소", one.string("WHOL_ADDR_MASK"))
|
||||
.set("차량번호", one.string("VHRNO_MASK"))
|
||||
.set("위반장소", one.string("CRDN_PLC"))
|
||||
.set("위반일자", one.string("CRDN_DT"))
|
||||
.set("반송일자", one.string("DLVR_YMD_MASK"))
|
||||
.set("반송사유", one.string("UNDLVR_RSN_NM"))
|
||||
;
|
||||
}).toList();
|
||||
writer.table(2, 2, 2).setValues(list);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,113 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.extraction;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import org.apache.pdfbox.contentstream.PDFStreamEngine;
|
||||
import org.apache.pdfbox.contentstream.operator.DrawObject;
|
||||
import org.apache.pdfbox.contentstream.operator.Operator;
|
||||
import org.apache.pdfbox.contentstream.operator.OperatorName;
|
||||
import org.apache.pdfbox.contentstream.operator.state.Concatenate;
|
||||
import org.apache.pdfbox.contentstream.operator.state.Restore;
|
||||
import org.apache.pdfbox.contentstream.operator.state.Save;
|
||||
import org.apache.pdfbox.contentstream.operator.state.SetGraphicsStateParameters;
|
||||
import org.apache.pdfbox.contentstream.operator.state.SetMatrix;
|
||||
import org.apache.pdfbox.cos.COSBase;
|
||||
import org.apache.pdfbox.cos.COSName;
|
||||
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
|
||||
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
||||
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
|
||||
import org.apache.pdfbox.util.Matrix;
|
||||
|
||||
public class ExtractImageEngine extends PDFStreamEngine {
|
||||
|
||||
private List<String> base64List = new ArrayList<String>();
|
||||
|
||||
public List<String> getBase64List() {
|
||||
return base64List;
|
||||
}
|
||||
|
||||
public void clearBase64List() {
|
||||
this.base64List = new ArrayList<String>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*
|
||||
* @throws IOException If there is an error loading text stripper properties.
|
||||
*/
|
||||
public ExtractImageEngine() throws IOException {
|
||||
addOperator(new Concatenate(this));
|
||||
addOperator(new DrawObject(this));
|
||||
addOperator(new SetGraphicsStateParameters(this));
|
||||
addOperator(new Save(this));
|
||||
addOperator(new Restore(this));
|
||||
addOperator(new SetMatrix(this));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This is used to handle an operation.
|
||||
*
|
||||
* @param operator The operation to perform.
|
||||
* @param operands The list of arguments.
|
||||
*
|
||||
* @throws IOException If there is an error processing the operation.
|
||||
*/
|
||||
@Override
|
||||
protected void processOperator( Operator operator, List<COSBase> operands) throws IOException {
|
||||
String operation = operator.getName();
|
||||
if (OperatorName.DRAW_OBJECT.equals(operation)) {
|
||||
COSName objectName = (COSName) operands.get( 0 );
|
||||
PDXObject xobject = getResources().getXObject( objectName );
|
||||
if( xobject instanceof PDImageXObject) {
|
||||
PDImageXObject image = (PDImageXObject)xobject;
|
||||
int imageWidth = image.getWidth();
|
||||
int imageHeight = image.getHeight();
|
||||
System.out.println("*******************************************************************");
|
||||
System.out.println("Found image [" + objectName.getName() + "]");
|
||||
|
||||
Matrix ctmNew = getGraphicsState().getCurrentTransformationMatrix();
|
||||
float imageXScale = ctmNew.getScalingFactorX();
|
||||
float imageYScale = ctmNew.getScalingFactorY();
|
||||
|
||||
// position in user space units. 1 unit = 1/72 inch at 72 dpi
|
||||
System.out.println("position in PDF = " + ctmNew.getTranslateX() + ", " + ctmNew.getTranslateY() + " in user space units");
|
||||
// raw size in pixels
|
||||
System.out.println("raw image size = " + imageWidth + ", " + imageHeight + " in pixels");
|
||||
// displayed size in user space units
|
||||
System.out.println("displayed size = " + imageXScale + ", " + imageYScale + " in user space units");
|
||||
// displayed size in inches at 72 dpi rendering
|
||||
imageXScale /= 72;
|
||||
imageYScale /= 72;
|
||||
System.out.println("displayed size = " + imageXScale + ", " + imageYScale + " in inches at 72 dpi rendering");
|
||||
// displayed size in millimeters at 72 dpi rendering
|
||||
imageXScale *= 25.4f;
|
||||
imageYScale *= 25.4f;
|
||||
System.out.println("displayed size = " + imageXScale + ", " + imageYScale + " in millimeters at 72 dpi rendering");
|
||||
|
||||
if(imageXScale > 30 && imageYScale > 30 && imageXScale < 120 && imageYScale < 120) {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
BufferedImage buffImage = image.getImage();
|
||||
ImageIO.write(buffImage, "png", baos);
|
||||
byte[] bytesimage = baos.toByteArray();
|
||||
String imageStr = Base64.getEncoder().encodeToString(bytesimage);
|
||||
base64List.add(imageStr);
|
||||
}
|
||||
System.out.println();
|
||||
} else if(xobject instanceof PDFormXObject) {
|
||||
PDFormXObject form = (PDFormXObject)xobject;
|
||||
showForm(form);
|
||||
}
|
||||
} else {
|
||||
super.processOperator( operator, operands);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,72 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.extraction;
|
||||
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.io.IOException;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.pdmodel.PDPage;
|
||||
import org.apache.pdfbox.text.PDFTextStripper;
|
||||
import org.apache.pdfbox.text.PDFTextStripperByArea;
|
||||
|
||||
public class ExtractText {
|
||||
|
||||
public static final String REGEXP_PATTERN_NUMBER = "^[\\d]*$";
|
||||
|
||||
public static String getExtractByStng(PDDocument document, int pageNum,
|
||||
float x, float y, float w, float h) {
|
||||
|
||||
try {
|
||||
PDFTextStripperByArea textStripper = new PDFTextStripperByArea();
|
||||
|
||||
Rectangle2D rect = new java.awt.geom.Rectangle2D.Float(x, y, w, h);
|
||||
textStripper.addRegion("region", rect);
|
||||
|
||||
PDPage docPage = document.getPage(pageNum-1);
|
||||
|
||||
textStripper.extractRegions(docPage);
|
||||
|
||||
String textForRegion = textStripper.getTextForRegion("region");
|
||||
|
||||
System.out.println("영역지정으로 추출된 텍스트");
|
||||
System.out.println(textForRegion);
|
||||
|
||||
return textForRegion;
|
||||
|
||||
} catch (IOException e) {
|
||||
|
||||
throw new RuntimeException("자료추출 오류."+e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static String getExtractEpayNo(PDDocument pdDocument, int pageNum) {
|
||||
String epayNo = "";
|
||||
|
||||
PDFTextStripper Tstripper = new PDFTextStripper();
|
||||
|
||||
Tstripper.setStartPage(pageNum);
|
||||
Tstripper.setEndPage(pageNum);
|
||||
String summaryText = null;
|
||||
|
||||
try {
|
||||
summaryText = Tstripper.getText(pdDocument);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("자료추출 오류."+e);
|
||||
}
|
||||
|
||||
String[] textArr = summaryText.split("\r?\n|\r");
|
||||
|
||||
for(int i=0; i < textArr.length; i++) {
|
||||
boolean isNumber = Pattern.matches(REGEXP_PATTERN_NUMBER, textArr[i]);
|
||||
if(isNumber) {
|
||||
if(textArr[i].length() == 19) {
|
||||
epayNo = textArr[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
return epayNo;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.extraction;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class Extraction {
|
||||
|
||||
/**
|
||||
* 페이지번호
|
||||
*/
|
||||
int page;
|
||||
|
||||
/**
|
||||
* 단속사진 base64 문자열
|
||||
*/
|
||||
List<String> base64List;
|
||||
|
||||
/**
|
||||
* 텍스트 항목
|
||||
*/
|
||||
Map<String, String> textItem;
|
||||
|
||||
|
||||
}
|
||||
@ -1,84 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.extraction;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.pdfbox.Loader;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.pdmodel.PDPage;
|
||||
import org.apache.pdfbox.pdmodel.PDPageTree;
|
||||
|
||||
import cokr.xit.fims.cmmn.CmmnUtil;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public class PDFExtractionUtil {
|
||||
public static List<Extraction> extract(String pdfPath, List<DataObject> extractStngs) {
|
||||
|
||||
List<Extraction> extractList = new ArrayList<Extraction>();
|
||||
|
||||
File file = null;
|
||||
try {
|
||||
file = new File(pdfPath);
|
||||
} catch (Exception e2) {
|
||||
throw new RuntimeException("자료추출 오류."+e2);
|
||||
}
|
||||
PDDocument pdDocument = null;
|
||||
try {
|
||||
pdDocument = Loader.loadPDF(file);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("자료추출 오류."+e);
|
||||
}
|
||||
|
||||
|
||||
PDPageTree pages = pdDocument.getPages();
|
||||
int pageCount = pages.getCount();
|
||||
|
||||
int pageIndex = 0;
|
||||
|
||||
Extraction extraction = new Extraction();
|
||||
|
||||
for(;pageIndex < pageCount; pageIndex++) {
|
||||
|
||||
Map<String,String> textItem = new HashMap<String,String>();
|
||||
|
||||
extraction = new Extraction();
|
||||
extraction.setPage(pageIndex+1);
|
||||
|
||||
for(DataObject extractStng : extractStngs) {
|
||||
|
||||
float x = CmmnUtil.mmToPt(extractStng.number("LEFT_PSTN").floatValue());
|
||||
float y = CmmnUtil.mmToPt(extractStng.number("TOP_PSTN").floatValue());
|
||||
float w = CmmnUtil.mmToPt(extractStng.number("WIDTH_SZ").floatValue());
|
||||
float h = CmmnUtil.mmToPt(extractStng.number("HEIGHT_SZ").floatValue());
|
||||
|
||||
String text0 = ExtractText.getExtractByStng(pdDocument, pageIndex+1, x, y, w, h);
|
||||
textItem.put(extractStng.string("EXTR_ARTCL_NM"), text0);
|
||||
}
|
||||
|
||||
extraction.setTextItem(textItem);
|
||||
|
||||
|
||||
PDPage page = pages.get(pageIndex);
|
||||
List<String> b64imageList = new ArrayList<>();
|
||||
try {
|
||||
ExtractImageEngine printer = new ExtractImageEngine();
|
||||
printer.processPage(page);
|
||||
b64imageList = printer.getBase64List();
|
||||
printer.clearBase64List();
|
||||
|
||||
} catch (IOException e1) {
|
||||
throw new RuntimeException("자료추출 오류."+e1);
|
||||
}
|
||||
extraction.setBase64List(b64imageList);
|
||||
|
||||
|
||||
extractList.add(extraction);
|
||||
}
|
||||
|
||||
return extractList;
|
||||
}
|
||||
}
|
||||
@ -1,24 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.extraction.format;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import cokr.xit.fims.cmmn.PredefinedSet;
|
||||
|
||||
/**
|
||||
* 전자고지
|
||||
*/
|
||||
public class ElectronicNotice extends PDFExtractFormat {
|
||||
|
||||
public ElectronicNotice(){
|
||||
this.predefinedSetList = new ArrayList<PredefinedSet>();
|
||||
predefinedSetList.add(new PredefinedSet("photoArea","사진영역"));
|
||||
predefinedSetList.add(new PredefinedSet("vhcleNo","차량번호"));
|
||||
predefinedSetList.add(new PredefinedSet("ihidnum","주민번호"));
|
||||
predefinedSetList.add(new PredefinedSet("moblphonNo","휴대폰번호"));
|
||||
predefinedSetList.add(new PredefinedSet("nm","성명"));
|
||||
predefinedSetList.add(new PredefinedSet("adres","주소"));
|
||||
predefinedSetList.add(new PredefinedSet("detailAdres","상세주소"));
|
||||
predefinedSetList.add(new PredefinedSet("zip","우편번호"));
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,37 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.extraction.format;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.fims.cmmn.PredefinedSet;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public abstract class PDFExtractFormat {
|
||||
|
||||
protected List<PredefinedSet> predefinedSetList = new ArrayList<PredefinedSet>();
|
||||
|
||||
public void appendPredefinedYn(List<DataObject> extrArtclStngList) {
|
||||
|
||||
if(extrArtclStngList!=null && !extrArtclStngList.isEmpty()) {
|
||||
|
||||
List<PredefinedSet> prototypeStngs = this.getPredefinedSetList();
|
||||
|
||||
for(DataObject extrArtclStng : extrArtclStngList) {
|
||||
String extrArtclNm = (String) extrArtclStng.get("EXTR_ARTCL_NM");
|
||||
|
||||
List<PredefinedSet> prototypeStng = prototypeStngs.stream().filter(item -> item.getArtclNm().equals(extrArtclNm)).toList();
|
||||
if(prototypeStng != null && !prototypeStng.isEmpty()) {
|
||||
extrArtclStng.set("PREDEFINED_YN", "Y");
|
||||
} else {
|
||||
extrArtclStng.set("PREDEFINED_YN", "N");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public List<PredefinedSet> getPredefinedSetList(){
|
||||
return this.predefinedSetList;
|
||||
}
|
||||
}
|
||||
@ -1,142 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.print;
|
||||
|
||||
import cokr.xit.fims.cmmn.PredefinedSet;
|
||||
import cokr.xit.fims.cmmn.Pstn;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class DefaultOtptArtclStng extends PredefinedSet {
|
||||
/**
|
||||
* 기본 출력 요소 생성
|
||||
*/
|
||||
public DefaultOtptArtclStng(String componentType, String artclNm, String artclDscrp, String otptBscVl){
|
||||
super(artclNm, artclDscrp);
|
||||
|
||||
this.componentType = componentType;
|
||||
this.otptBscVl=otptBscVl;
|
||||
|
||||
this.widthSz=0;
|
||||
this.heightSz=0;
|
||||
|
||||
this.fontNm="gulimche";
|
||||
this.fontSz=10;
|
||||
this.fontColr="BLACK";
|
||||
this.fontStyle="FILL";
|
||||
|
||||
this.textSort = "left";
|
||||
this.lineChgYn = "N";
|
||||
|
||||
this.forPost = false;
|
||||
this.unique = false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 용지가 A4일 때의 기본위치를 설정한다. 해당 출력요소는 1장의 출력물에서 1개만 존재한다.
|
||||
*/
|
||||
public DefaultOtptArtclStng a4(float leftPstn, float topPstn) {
|
||||
this.a4 = new Pstn(leftPstn, topPstn);
|
||||
this.unique = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 용지가 레터일 때의 기본위치를 설정한다. 해당 출력요소는 1장의 출력물에서 1개만 존재한다.
|
||||
*/
|
||||
public DefaultOtptArtclStng letter(float leftPstn, float topPstn) {
|
||||
this.letter = new Pstn(leftPstn, topPstn);
|
||||
this.unique = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 해당 출력요소를 우편물과 관련된 출력요소로 설정한다.
|
||||
*/
|
||||
public DefaultOtptArtclStng post() {
|
||||
this.forPost = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOtptArtclStng offLog() {
|
||||
this.downloadData = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 출력요소의 기본 텍스트정렬을 설정한다.
|
||||
*/
|
||||
public DefaultOtptArtclStng align(String alignValue) {
|
||||
this.textSort = alignValue;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 출력요소의 기본 영역크기를 설정한다.
|
||||
*/
|
||||
public DefaultOtptArtclStng size(float width, float height) {
|
||||
this.widthSz = width;
|
||||
this.heightSz = height;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 출력요소의 기본 글꼴을 설정한다.
|
||||
*/
|
||||
public DefaultOtptArtclStng font(String fontNm, int fontSz, String fontColr, String fontStyle) {
|
||||
this.fontNm = fontNm;
|
||||
this.fontSz = fontSz;
|
||||
this.fontColr = fontColr;
|
||||
this.fontStyle = fontStyle;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 출력요소의 x축 위치정보를 가져온다.
|
||||
*/
|
||||
public float getLeftPstn(String paper) {
|
||||
switch (paper) {
|
||||
case "01": {
|
||||
return this.getA4().getLeft();
|
||||
}
|
||||
case "02": {
|
||||
return this.getLetter().getLeft();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 출력요소의 y축 위치정보를 가져온다.
|
||||
*/
|
||||
public float getTopPstn(String paper) {
|
||||
switch (paper) {
|
||||
case "01": {
|
||||
return this.getA4().getTop();
|
||||
}
|
||||
case "02": {
|
||||
return this.getLetter().getTop();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private String componentType; //컴포넌트 유형(텍스트 또는 이미지)
|
||||
private String otptBscVl; //기본값
|
||||
private boolean unique; //출력물 내 유일 요소 여부
|
||||
private boolean forPost; //우편물 관련 요소 여부
|
||||
|
||||
|
||||
private Pstn a4; //A4 위치값
|
||||
private Pstn letter; //레터 위치값
|
||||
private float widthSz; //영역크기 길이
|
||||
private float heightSz; //영역크기 높이
|
||||
private String textSort; //텍스트정렬
|
||||
private String lineChgYn;
|
||||
private String fontNm; //글꼴명
|
||||
private int fontSz; //글자크기
|
||||
private String fontColr; //글자색
|
||||
private String fontStyle; //글자스타일
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.print;
|
||||
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
||||
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractBean;
|
||||
|
||||
public abstract class PDF extends AbstractBean {
|
||||
/**pdf 파일(*.pdf)의 mime type */
|
||||
public static final String MIME_TYPE = "application/pdf";
|
||||
|
||||
protected PDDocument doc;
|
||||
protected PDPageContentStream contentStream;
|
||||
protected PDRectangle paperSize;
|
||||
}
|
||||
@ -1,46 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.print;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
|
||||
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
|
||||
|
||||
public class PDFColors {
|
||||
public static final PDColor RED = new PDColor(new float[] { 1, 0, 0 }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor GREEN = new PDColor(new float[] { 0, 1, 0 }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor BLUE = new PDColor(new float[] { 0, 0, 1 }, PDDeviceRGB.INSTANCE);
|
||||
|
||||
public static final PDColor YELLOW = new PDColor(new float[] { 1, 1, 0 }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor ORANGE = new PDColor(new float[] { 1, 0.502f, 0 }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor YELLOW_GREEN = new PDColor(new float[] { 0.502f, 1, 0 }, PDDeviceRGB.INSTANCE);
|
||||
|
||||
public static final PDColor CYAN = new PDColor(new float[] { 0, 1, 1 }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor GREEN_CYAN = new PDColor(new float[] { 0, 1, 0.502f }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor CYAN_BLUE = new PDColor(new float[] { 0, 0.502f, 1 }, PDDeviceRGB.INSTANCE);
|
||||
|
||||
public static final PDColor MAGENTA = new PDColor(new float[] { 1, 0, 1 }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor VIOLET = new PDColor(new float[] { 0.502f, 0, 1 }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor DEEP_PINK = new PDColor(new float[] { 1, 0, 0.502f }, PDDeviceRGB.INSTANCE);
|
||||
|
||||
public static final PDColor WHITE = new PDColor(new float[] { 1, 1, 1 }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor LIGHT_GREY = new PDColor(new float[] { 0.753f, 0.753f, 0.753f }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor GREY = new PDColor(new float[] { 0.627f, 0.627f, 0.627f }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor DARK_GREY = new PDColor(new float[] { 0.376f, 0.376f, 0.376f }, PDDeviceRGB.INSTANCE);
|
||||
public static final PDColor BLACK = new PDColor(new float[] { 0, 0, 0 }, PDDeviceRGB.INSTANCE);
|
||||
|
||||
public static PDColor getColor(String colorName) {
|
||||
|
||||
try {
|
||||
Field field = PDFColors.class.getDeclaredField(colorName);
|
||||
if(field == null) {
|
||||
return BLACK;
|
||||
}
|
||||
|
||||
field.setAccessible(true);
|
||||
PDColor value = (PDColor)field.get(PDFColors.class);
|
||||
return value;
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("색상 설정 오류");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,21 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.print;
|
||||
|
||||
public class PDFCoordinate {
|
||||
private float x;
|
||||
private float y;
|
||||
private float maxY;
|
||||
public PDFCoordinate(float xpt, float ypt, float maxY) {
|
||||
this.x = xpt;
|
||||
this.y = ypt;
|
||||
this.maxY = maxY;
|
||||
}
|
||||
|
||||
public float[] offset() {
|
||||
return new float[] {x, -y};
|
||||
}
|
||||
|
||||
public float[] absolute() {
|
||||
return new float[] {x, maxY-y};
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,138 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.print;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.pdmodel.PDPage;
|
||||
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
||||
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
||||
import org.apache.pdfbox.pdmodel.font.PDType0Font;
|
||||
import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
|
||||
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
|
||||
import org.apache.pdfbox.pdmodel.graphics.state.RenderingMode;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
|
||||
import cokr.xit.foundation.Downloadable;
|
||||
|
||||
public class PDFWriter extends PDF {
|
||||
|
||||
public PDFWriter(){
|
||||
this.doc = new PDDocument();
|
||||
}
|
||||
|
||||
public PDFWriter paper(String type){
|
||||
if(type.equals("A4")) {
|
||||
this.paperSize = PDRectangle.A4;
|
||||
} else if(type.equals("LETTER")) {
|
||||
this.paperSize = PDRectangle.LETTER;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public PDRectangle getPaperSize(){
|
||||
return this.paperSize;
|
||||
}
|
||||
|
||||
public PDType0Font font(String path) throws IOException{
|
||||
return PDType0Font.load(doc, new ClassPathResource(path).getInputStream());
|
||||
}
|
||||
|
||||
public PDFWriter beginPage() throws IOException {
|
||||
PDPage blankPage = new PDPage(paperSize);
|
||||
doc.addPage(blankPage);
|
||||
|
||||
// 작업 페이지 설정
|
||||
PDPage page = doc.getPage(doc.getNumberOfPages()-1);
|
||||
// 컨텐츠 스트림 열기
|
||||
contentStream = new PDPageContentStream(doc, page);
|
||||
return this;
|
||||
}
|
||||
|
||||
public PDFWriter setLineDashPattern(float[] pattern, float phase) throws IOException{
|
||||
contentStream.setLineDashPattern(pattern, phase);
|
||||
return this;
|
||||
}
|
||||
public PDFWriter moveTo(float x, float y) throws IOException {
|
||||
contentStream.moveTo(x, y);
|
||||
return this;
|
||||
}
|
||||
|
||||
public PDFWriter lineTo(float x, float y) throws IOException {
|
||||
contentStream.lineTo(x, y);
|
||||
return this;
|
||||
}
|
||||
public PDFWriter stroke() throws IOException {
|
||||
contentStream.stroke();
|
||||
return this;
|
||||
}
|
||||
public PDFWriter beginText() throws IOException {
|
||||
contentStream.beginText();
|
||||
return this;
|
||||
}
|
||||
public PDFWriter setFont(PDType0Font font, int fontSize) throws IOException {
|
||||
contentStream.setFont(font, fontSize);
|
||||
return this;
|
||||
}
|
||||
public PDFWriter setRenderingMode(RenderingMode fontStyle) throws IOException {
|
||||
contentStream.setRenderingMode(fontStyle);
|
||||
return this;
|
||||
}
|
||||
public PDFWriter setNonStrokingColor(PDColor fontColr) throws IOException {
|
||||
contentStream.setNonStrokingColor(fontColr);
|
||||
return this;
|
||||
}
|
||||
public PDFWriter newLineAtOffset(float tx, float ty) throws IOException {
|
||||
contentStream.newLineAtOffset(tx, ty);
|
||||
return this;
|
||||
}
|
||||
public PDFWriter showText(String text) throws IOException {
|
||||
contentStream.showText(text);
|
||||
return this;
|
||||
}
|
||||
public PDFWriter endText() throws IOException {
|
||||
contentStream.endText();
|
||||
return this;
|
||||
}
|
||||
|
||||
public PDFWriter image(InputStream imageStream, float x, float y, float width, float height) throws IOException {
|
||||
PDImageXObject image = PDImageXObject.createFromByteArray(doc, imageStream.readAllBytes(), "temp");
|
||||
contentStream.drawImage(image, x, y, width, height);
|
||||
return this;
|
||||
}
|
||||
|
||||
public PDFWriter endPage() throws IOException {
|
||||
contentStream.close();
|
||||
contentStream = null;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public void write(OutputStream out) {
|
||||
try {
|
||||
doc.save(out);
|
||||
doc.close();
|
||||
} catch (Exception e) {
|
||||
throw runtimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public File write(String filepath) {
|
||||
File file = new File(filepath);
|
||||
try (FileOutputStream out = new FileOutputStream(file)) {
|
||||
write(out);
|
||||
return file;
|
||||
} catch (Exception e) {
|
||||
throw runtimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public Downloadable getDownloadable() {
|
||||
return new Downloadable()
|
||||
.setContentType(MIME_TYPE)
|
||||
.setWriter(this::write);
|
||||
}
|
||||
}
|
||||
@ -1,364 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.print.format;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.fims.mngt.OgdpUtil;
|
||||
import cokr.xit.foundation.data.DataFormat;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**
|
||||
* 사전통지서
|
||||
*/
|
||||
public class Advntce extends PDFPrintFormat {
|
||||
@Override
|
||||
public void initDefaultStng() {
|
||||
addForPost(
|
||||
image("postSenderLogo","우편물송신자로고","").a4(10, 0).letter(10, 0).size(0, 0),
|
||||
text("postSenderInst","우편물송신자기관","").a4(10, 5).letter(10, 5),
|
||||
text("postSenderDept","우편물송신자부서","").a4(50, 5).letter(50, 5),
|
||||
text("postSenderAddr","우편물송신자주소","").a4(10, 15).letter(10, 15),
|
||||
text("postSenderDtlAddr","우편물송신자상세주소","").a4(10, 25).letter(10, 25),
|
||||
text("postSenderZip","우편물송신자우편번호","").a4(10, 35).letter(10, 35),
|
||||
text("postSenderTel","우편물송신자전화번호","").a4(10, 45).letter(10, 45),
|
||||
text("postSenderFax","우편물송신자팩스번호","").a4(50, 45).letter(50, 45),
|
||||
|
||||
text("postReceiverAddr","우편물수신자주소","").a4(100, 40).letter(100, 40).size(90, 0).align("right"),
|
||||
text("postReceiverDtlAddr","우편물수신자상세주소","").a4(100, 50).letter(100, 50).size(90, 0).align("right"),
|
||||
text("postReceiver","우편물수신자명","").a4(100, 60).letter(100, 60).size(90, 0).align("right"),
|
||||
text("postReceiverZip","우편물수신자우편번호","").a4(100, 70).letter(100, 70).size(90, 0).align("right")
|
||||
);
|
||||
|
||||
add(
|
||||
image("background","배경이미지","").a4(0, 0).letter(0, 0).size(0, 0),
|
||||
images("crdnPhoto","단속사진","").a4(110, 100).letter(116, 95).size(90, 80),
|
||||
image("rprsCrdnPhoto","대표단속사진","").a4(10, 200).letter(10, 186).size(80, 80),
|
||||
|
||||
text("rtpyrNm","수신자명",""),
|
||||
text("rtpyrNo","수신자번호",""),
|
||||
text("rtpyrAddr","수신자주소",""),
|
||||
text("rtpyrDtlAddr","수신자상세주소",""),
|
||||
text("rtpyrFullAddr","수신자전체주소",""),
|
||||
|
||||
text("vhrno","차량번호",""),
|
||||
text("crdnYmd","단속일자",""),
|
||||
text("crdnYmdTm","단속일시",""),
|
||||
text("crdnPlc","단속장소",""),
|
||||
text("ffnlgCarmdlNm","차종",""),
|
||||
text("vltnArtcl","위반내용",""),
|
||||
text("vltnLawNm","위반법령",""),
|
||||
text("crdnSn","증거번호",""),
|
||||
text("ffnlgCrdnAmt","최초금액",""),
|
||||
|
||||
text("advntceAmt","사전통지금액",""),
|
||||
text("advntceDudtYmd","납부기한",""),
|
||||
|
||||
text("vrActno","대표가상계좌번호",""),
|
||||
text("vrActno1","가상계좌번호1",""),
|
||||
text("vrActno2","가상계좌번호2",""),
|
||||
text("vrActno3","가상계좌번호3",""),
|
||||
text("vrActno4","가상계좌번호4",""),
|
||||
text("vrActno5","가상계좌번호5",""),
|
||||
text("vrActno6","가상계좌번호6",""),
|
||||
text("vrActno7","가상계좌번호7",""),
|
||||
text("vrActno8","가상계좌번호8",""),
|
||||
text("vrActno9","가상계좌번호9",""),
|
||||
text("vrActno10","가상계좌번호10",""),
|
||||
text("epayNo","전자납부번호",""),
|
||||
|
||||
text("otptYmd","출력일자","").offLog(),
|
||||
text("otptDt","출력일시","").offLog(),
|
||||
text("otptYYYY","출력년도","").offLog(),
|
||||
text("otptMM","출력월","").offLog(),
|
||||
text("otptDD","출력일","").offLog(),
|
||||
|
||||
text("offcsText","관인명","").offLog(),
|
||||
image("offcs","관인이미지","").size(20, 20).offLog(),
|
||||
|
||||
text("undefined","(미정)","미정항목").offLog()
|
||||
);
|
||||
}
|
||||
public Advntce() {
|
||||
super();
|
||||
}
|
||||
public Advntce(Print print, FimsPrintOption printOption,
|
||||
DataObject otptBscStng, List<DataObject> otptArtclStngList, String paperSeCd, List<DataObject> data){
|
||||
super(print,printOption,otptBscStng,otptArtclStngList,paperSeCd, data);
|
||||
this.print.setFormatKorName("사전통지서");
|
||||
}
|
||||
|
||||
/**
|
||||
* 출력요소에 매핑될 값을 반환한다.
|
||||
*/
|
||||
@Override
|
||||
public String getMappingValue(String otptArtclNm, String defaultValue, boolean forPost,
|
||||
DataObject dataObject, FimsPrintOption printOption, Print print) {
|
||||
|
||||
String result = "";
|
||||
if(forPost) {
|
||||
return this.getValueForPost(otptArtclNm, defaultValue, dataObject, printOption, print);
|
||||
}
|
||||
|
||||
Map<String, String> globalVariable = printOption.getGlobalVariable();
|
||||
|
||||
switch(otptArtclNm) {
|
||||
case "background" -> {
|
||||
if(globalVariable.get("bcrnImgPath") != null) {
|
||||
result = globalVariable.get("bcrnImgPath");
|
||||
}
|
||||
}
|
||||
case "rprsCrdnPhoto" -> { //대표사진
|
||||
result = dataObject.string("CRDN_PHOTO1");
|
||||
}
|
||||
case "rprsCrdnPhotoKey" -> { //대표사진
|
||||
result = dataObject.string("CRDN_PHOTO1"+"KEY");
|
||||
}
|
||||
case "rtpyrNm" -> {
|
||||
result = dataObject.string("RTPYR_NM");
|
||||
}
|
||||
case "rtpyrNo" -> {
|
||||
result = dataObject.string("RTPYR_NO");
|
||||
}
|
||||
case "rtpyrAddr" -> {
|
||||
result = dataObject.string("RTPYR_ADDR");
|
||||
}
|
||||
case "rtpyrDtlAddr" -> {
|
||||
result = dataObject.string("RTPYR_DTL_ADDR");
|
||||
}
|
||||
case "rtpyrFullAddr" -> {
|
||||
result = dataObject.string("RTPYR_FULL_ADDR");
|
||||
}
|
||||
case "rtpyrZip" -> {
|
||||
result = dataObject.string("RTPYR_ZIP");
|
||||
}
|
||||
case "vhrno" -> {
|
||||
result = dataObject.string("VHRNO");
|
||||
}
|
||||
case "crdnYmd" -> {
|
||||
result = DataFormat.yyyy_mm_dd(dataObject.string("CRDN_YMD"));
|
||||
}
|
||||
case "crdnYmdTm" -> {
|
||||
result = DataFormat.yyyy_mm_dd_hh_mm_ss(dataObject.string("CRDN_YMD_TM"));
|
||||
}
|
||||
case "crdnPlc" -> {
|
||||
result = dataObject.string("CRDN_PLC");
|
||||
}
|
||||
case "ffnlgCarmdlNm" -> {
|
||||
result = dataObject.string("FFNLG_CARMDL_NM");
|
||||
}
|
||||
case "vltnArtcl" -> {
|
||||
result = dataObject.string("VLTN_ARTCL");
|
||||
}
|
||||
case "vltnLawNm" -> {
|
||||
result = dataObject.string("VLTN_LAW_NM");
|
||||
}
|
||||
case "crdnSn" -> {
|
||||
result = dataObject.string("CRDN_SN");
|
||||
}
|
||||
case "ffnlgCrdnAmt" -> {
|
||||
result = dataObject.string("FFNLG_CRDN_AMT");
|
||||
}
|
||||
case "advntceAmt" -> {
|
||||
result = DataFormat.n_nn0(dataObject.string("ADVNTCE_AMT"));
|
||||
}
|
||||
case "advntceDudtYmd" -> {
|
||||
result = DataFormat.yyyy_mm_dd(dataObject.string("ADVNTCE_DUDT_YMD"));
|
||||
}
|
||||
|
||||
case "vrActno" -> {
|
||||
result = dataObject.string("VR_ACTNO");
|
||||
}
|
||||
case "vrActno1" -> {
|
||||
result = dataObject.string("VR_ACTNO1");
|
||||
}
|
||||
case "vrActno2" -> {
|
||||
result = dataObject.string("VR_ACTNO2");
|
||||
}
|
||||
case "vrActno3" -> {
|
||||
result = dataObject.string("VR_ACTNO3");
|
||||
}
|
||||
case "vrActno4" -> {
|
||||
result = dataObject.string("VR_ACTNO4");
|
||||
}
|
||||
case "vrActno5" -> {
|
||||
result = dataObject.string("VR_ACTNO5");
|
||||
}
|
||||
case "vrActno6" -> {
|
||||
result = dataObject.string("VR_ACTNO6");
|
||||
}
|
||||
case "vrActno7" -> {
|
||||
result = dataObject.string("VR_ACTNO7");
|
||||
}
|
||||
case "vrActno8" -> {
|
||||
result = dataObject.string("VR_ACTNO8");
|
||||
}
|
||||
case "vrActno9" -> {
|
||||
result = dataObject.string("VR_ACTNO9");
|
||||
}
|
||||
case "vrActno10" -> {
|
||||
result = dataObject.string("VR_ACTNO10");
|
||||
}
|
||||
case "epayNo" -> {
|
||||
result = dataObject.string("EPAY_NO");
|
||||
}
|
||||
|
||||
case "otptYmd" -> {
|
||||
result = DataFormat.yyyy_mm_dd(print.getPrintRequestDt().substring(0,8));
|
||||
}
|
||||
case "otptDt" -> {
|
||||
result = DataFormat.yyyy_mm_dd_hh_mm_ss(print.getPrintRequestDt());
|
||||
}
|
||||
case "otptYYYY" -> {
|
||||
result = print.getPrintRequestDt().substring(0,4);
|
||||
}
|
||||
case "otptMM" -> {
|
||||
result = print.getPrintRequestDt().substring(4,6);
|
||||
}
|
||||
case "otptDD" -> {
|
||||
result = print.getPrintRequestDt().substring(6,8);
|
||||
}
|
||||
|
||||
case "offcsText" -> {
|
||||
String instNm = (String) print.getPrintRequestUserInfo().getInfo().get("instNm");
|
||||
instNm = OgdpUtil.getLastWord(instNm);
|
||||
instNm = OgdpUtil.getInstituteLeader(instNm, true);
|
||||
result = instNm;
|
||||
}
|
||||
case "offcs" -> {
|
||||
result = globalVariable.get("offcsFilePath");
|
||||
}
|
||||
|
||||
case "undefined" -> {
|
||||
result = defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 우편물 출력요소에 매핑될 값을 반환한다.
|
||||
*/
|
||||
@Override
|
||||
public String getValueForPost(String otptArtclNm, String defaultValue,
|
||||
DataObject dataObject, FimsPrintOption printOption, Print print) {
|
||||
String result = "";
|
||||
|
||||
switch(otptArtclNm) {
|
||||
case "postReceiverAddr" -> {
|
||||
result = dataObject.string("RTPYR_ADDR");
|
||||
}
|
||||
case "postReceiverDtlAddr" -> {
|
||||
result = dataObject.string("RTPYR_DTL_ADDR");
|
||||
}
|
||||
case "postReceiverZip" -> {
|
||||
result = dataObject.string("RTPYR_ZIP");
|
||||
}
|
||||
case "postReceiver" -> {
|
||||
result = dataObject.string("RTPYR_NM");
|
||||
}
|
||||
case "postSenderLogo" -> {
|
||||
result = printOption.getGlobalVariable().get("logoFilePath");
|
||||
}
|
||||
case "postSenderInst" -> {
|
||||
result = (String)print.getPrintRequestUserInfo().getInfo().get("instNm");
|
||||
}
|
||||
case "postSenderDept" -> {
|
||||
result = (String)print.getPrintRequestUserInfo().getInfo().get("deptNm");
|
||||
}
|
||||
case "postSenderAddr" -> {
|
||||
result = printOption.getGlobalVariable().get("instAddr");
|
||||
}
|
||||
case "postSenderDtlAddr" -> {
|
||||
result = printOption.getGlobalVariable().get("instDaddr");
|
||||
}
|
||||
case "postSenderZip" -> {
|
||||
result = printOption.getGlobalVariable().get("instZip");
|
||||
}
|
||||
case "postSenderTel" -> {
|
||||
result = printOption.getGlobalVariable().get("deptTelno");
|
||||
}
|
||||
case "postSenderFax" -> {
|
||||
result = printOption.getGlobalVariable().get("deptFxno");
|
||||
}
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<String> getMappingValues(String otptArtclNm, String defaultValue, boolean forPost,
|
||||
DataObject dataObject, FimsPrintOption printOption, Print print) {
|
||||
List<String> result = new ArrayList<String>();
|
||||
|
||||
switch(otptArtclNm) {
|
||||
case "crdnPhoto" -> {
|
||||
int i = 1;
|
||||
while(!dataObject.string("CRDN_PHOTO"+i).equals("")) {
|
||||
result.add(dataObject.string("CRDN_PHOTO"+i));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
case "crdnPhotoKey" -> {
|
||||
int i = 1;
|
||||
while(!dataObject.string("CRDN_PHOTO"+i+"KEY").equals("")) {
|
||||
result.add(dataObject.string("CRDN_PHOTO"+i+"KEY"));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 출력용 샘플 데이터를 생성한다.
|
||||
*/
|
||||
@Override
|
||||
public DataObject createSampleData() {
|
||||
DataObject dataObject = new DataObject();
|
||||
dataObject.put("RTPYR_NM", "홍길동");
|
||||
dataObject.put("RTPYR_ADDR", "무슨도 무슨시 무슨구");
|
||||
dataObject.put("RTPYR_DTL_ADDR", "ㅇㅇ아파트 999호");
|
||||
dataObject.put("RTPYR_FULL_ADDR", "무슨도 무슨시 무슨구 ㅇㅇ아파트 999호");
|
||||
dataObject.put("RTPYR_ZIP", "12345");
|
||||
dataObject.put("VHRNO", "00가0000");
|
||||
dataObject.put("CRDN_YMD", "20231204");
|
||||
dataObject.put("CRDN_YMD_TM", "20231204080808");
|
||||
dataObject.put("CRDN_PLC", "사거리 건너편");
|
||||
dataObject.put("FFNLG_CARMDL_NM", "승용");
|
||||
dataObject.put("VLTN_ARTCL", "주차위반");
|
||||
dataObject.put("VLTN_LAW_NM", "00법 제0조 제0항");
|
||||
dataObject.put("CRDN_SN", "1234567890");
|
||||
dataObject.put("VR_ACTNO", "000000-00-000000");
|
||||
dataObject.put("VR_ACTNO1", "111111-00-000000");
|
||||
dataObject.put("VR_ACTNO2", "222222-00-000000");
|
||||
dataObject.put("VR_ACTNO3", "333333-00-000000");
|
||||
dataObject.put("VR_ACTNO4", "444444-00-000000");
|
||||
dataObject.put("VR_ACTNO5", "555555-00-000000");
|
||||
dataObject.put("VR_ACTNO6", "666666-00-000000");
|
||||
dataObject.put("VR_ACTNO7", "777777-00-000000");
|
||||
dataObject.put("VR_ACTNO8", "888888-00-000000");
|
||||
dataObject.put("VR_ACTNO9", "999999-00-000000");
|
||||
dataObject.put("VR_ACTNO10", "101010-00-000000");
|
||||
dataObject.put("EPAY_NO", "00000-0-00-00-000000000");
|
||||
dataObject.put("FFNLG_CRDN_AMT", "100000");
|
||||
dataObject.put("ADVNTCE_AMT", "80000");
|
||||
dataObject.put("ADVNTCE_DUDT_YMD", "20231231");
|
||||
|
||||
dataObject.put("CRDN_PHOTO1", "samplefiles/crdn1.png");
|
||||
dataObject.put("CRDN_PHOTO2", "samplefiles/crdn2.png");
|
||||
dataObject.put("CRDN_PHOTO3", "samplefiles/crdn3.png");
|
||||
dataObject.put("CRDN_PHOTO4", "samplefiles/crdn4.png");
|
||||
dataObject.put("CRDN_PHOTO5", "samplefiles/crdn5.png");
|
||||
dataObject.put("CRDN_PHOTO6", "samplefiles/crdn6.png");
|
||||
dataObject.put("CRDN_PHOTO7", "samplefiles/crdn7.png");
|
||||
|
||||
return dataObject;
|
||||
}
|
||||
}
|
||||
@ -1,446 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.print.format;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.fims.cmmn.CmmnUtil;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.fims.mngt.OgdpUtil;
|
||||
import cokr.xit.foundation.data.DataFormat;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public class Nht extends PDFPrintFormat {
|
||||
@Override
|
||||
public void initDefaultStng() {
|
||||
addForPost(
|
||||
image("postSenderLogo","우편물송신자로고","").a4(10, 0).letter(10, 0).size(0, 0),
|
||||
text("postSenderInst","우편물송신자기관","").a4(10, 5).letter(10, 5),
|
||||
text("postSenderDept","우편물송신자부서","").a4(50, 5).letter(50, 5),
|
||||
text("postSenderAddr","우편물송신자주소","").a4(10, 15).letter(10, 15),
|
||||
text("postSenderDtlAddr","우편물송신자상세주소","").a4(10, 25).letter(10, 25),
|
||||
text("postSenderZip","우편물송신자우편번호","").a4(10, 35).letter(10, 35),
|
||||
text("postSenderTel","우편물송신자전화번호","").a4(10, 45).letter(10, 45),
|
||||
text("postSenderFax","우편물송신자팩스번호","").a4(50, 45).letter(50, 45),
|
||||
|
||||
text("postReceiverAddr","우편물수신자주소","").a4(100, 40).letter(100, 40).size(90, 0).align("right"),
|
||||
text("postReceiverDtlAddr","우편물수신자상세주소","").a4(100, 50).letter(100, 50).size(90, 0).align("right"),
|
||||
text("postReceiver","우편물수신자명","").a4(100, 60).letter(100, 60).size(90, 0).align("right"),
|
||||
text("postReceiverZip","우편물수신자우편번호","").a4(100, 70).letter(100, 70).size(90, 0).align("right")
|
||||
);
|
||||
|
||||
add(
|
||||
image("background","배경이미지","").a4(0, 0).letter(0, 0).size(0, 0),
|
||||
images("crdnPhoto","단속사진","").a4(110, 100).letter(116, 95).size(90, 80),
|
||||
image("rprsCrdnPhoto","대표단속사진","").a4(10, 200).letter(10, 186).size(80, 80),
|
||||
|
||||
text("ocr1","OCR32자리",""),
|
||||
text("ocr2","OCR54자리1",""),
|
||||
text("ocr3","OCR54자리2",""),
|
||||
|
||||
text("rtpyrNm","수신자명",""),
|
||||
text("rtpyrNo","수신자번호",""),
|
||||
text("rtpyrAddr","수신자주소",""),
|
||||
text("rtpyrDtlAddr","수신자상세주소",""),
|
||||
text("rtpyrFullAddr","수신자전체주소",""),
|
||||
|
||||
text("vhrno","차량번호",""),
|
||||
text("crdnYmd","단속일자",""),
|
||||
text("crdnYmdTm","단속일시",""),
|
||||
text("crdnPlc","단속장소",""),
|
||||
text("ffnlgCarmdlNm","차종",""),
|
||||
text("vltnArtcl","위반내용",""),
|
||||
text("vltnLawNm","위반법령",""),
|
||||
text("crdnSn","증거번호",""),
|
||||
text("ffnlgCrdnAmt","최초금액",""),
|
||||
|
||||
text("pcptax","본세",""),
|
||||
text("adamt","가산금",""),
|
||||
text("sumAmt","납기금액",""),
|
||||
text("dudtYmd","납기일자",""),
|
||||
text("dudtAftrPcptax","납기후본세",""),
|
||||
text("dudtAftrAdamt","납기후가산금",""),
|
||||
text("dudtAftrAmt","납기후금액",""),
|
||||
text("dudtAftrYmd","납기후일자",""),
|
||||
|
||||
text("vrActno","대표가상계좌번호",""),
|
||||
text("vrActno1","가상계좌번호1",""),
|
||||
text("vrActno2","가상계좌번호2",""),
|
||||
text("vrActno3","가상계좌번호3",""),
|
||||
text("vrActno4","가상계좌번호4",""),
|
||||
text("vrActno5","가상계좌번호5",""),
|
||||
text("vrActno6","가상계좌번호6",""),
|
||||
text("vrActno7","가상계좌번호7",""),
|
||||
text("vrActno8","가상계좌번호8",""),
|
||||
text("vrActno9","가상계좌번호9",""),
|
||||
text("vrActno10","가상계좌번호10",""),
|
||||
text("epayNo","전자납부번호",""),
|
||||
|
||||
text("otptYmd","출력일자","").offLog(),
|
||||
text("otptDt","출력일시","").offLog(),
|
||||
text("otptYYYY","출력년도","").offLog(),
|
||||
text("otptMM","출력월","").offLog(),
|
||||
text("otptDD","출력일","").offLog(),
|
||||
|
||||
text("offcsText","관인명","").offLog(),
|
||||
image("offcs","관인이미지","").size(20, 20).offLog(),
|
||||
|
||||
text("undefined","(미정)","미정항목").offLog()
|
||||
);
|
||||
}
|
||||
|
||||
public Nht() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Nht(Print print, FimsPrintOption printOption,
|
||||
DataObject otptBscStng, List<DataObject> otptArtclStngList, String paperSeCd, List<DataObject> data) {
|
||||
super(print,printOption,otptBscStng,otptArtclStngList,paperSeCd, data);
|
||||
this.print.setFormatKorName("고지서");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 출력요소에 매핑될 값을 반환한다.
|
||||
*/
|
||||
@Override
|
||||
public String getMappingValue(String otptArtclNm, String defaultValue, boolean forPost,
|
||||
DataObject dataObject, FimsPrintOption printOption, Print print) {
|
||||
|
||||
String result = "";
|
||||
if(forPost) {
|
||||
return this.getValueForPost(otptArtclNm, defaultValue, dataObject, printOption, print);
|
||||
}
|
||||
|
||||
Map<String, String> globalVariable = printOption.getGlobalVariable();
|
||||
|
||||
switch(otptArtclNm) {
|
||||
case "background" -> {
|
||||
if(globalVariable.get("bcrnImgPath") != null) {
|
||||
result = globalVariable.get("bcrnImgPath");
|
||||
}
|
||||
}
|
||||
case "rprsCrdnPhoto" -> { //대표사진
|
||||
result = dataObject.string("CRDN_PHOTO1");
|
||||
}
|
||||
case "rprsCrdnPhotoKey" -> { //대표사진
|
||||
result = dataObject.string("CRDN_PHOTO1"+"KEY");
|
||||
}
|
||||
case "rtpyrNm" -> {
|
||||
result = dataObject.string("RTPYR_NM");
|
||||
}
|
||||
case "rtpyrNo" -> {
|
||||
result = dataObject.string("RTPYR_NO");
|
||||
}
|
||||
case "rtpyrAddr" -> {
|
||||
result = dataObject.string("RTPYR_ADDR");
|
||||
}
|
||||
case "rtpyrDtlAddr" -> {
|
||||
result = dataObject.string("RTPYR_DTL_ADDR");
|
||||
}
|
||||
case "rtpyrFullAddr" -> {
|
||||
result = dataObject.string("RTPYR_FULL_ADDR");
|
||||
}
|
||||
case "rtpyrZip" -> {
|
||||
result = dataObject.string("RTPYR_ZIP");
|
||||
}
|
||||
case "vhrno" -> {
|
||||
result = dataObject.string("VHRNO");
|
||||
}
|
||||
case "crdnYmd" -> {
|
||||
result = DataFormat.yyyy_mm_dd(dataObject.string("CRDN_YMD"));
|
||||
}
|
||||
case "crdnYmdTm" -> {
|
||||
result = DataFormat.yyyy_mm_dd_hh_mm_ss(dataObject.string("CRDN_YMD_TM"));
|
||||
}
|
||||
case "crdnPlc" -> {
|
||||
result = dataObject.string("CRDN_PLC");
|
||||
}
|
||||
case "ffnlgCarmdlNm" -> {
|
||||
result = dataObject.string("FFNLG_CARMDL_NM");
|
||||
}
|
||||
case "vltnArtcl" -> {
|
||||
result = dataObject.string("VLTN_ARTCL");
|
||||
}
|
||||
case "vltnLawNm" -> {
|
||||
result = dataObject.string("VLTN_LAW_NM");
|
||||
}
|
||||
case "crdnSn" -> {
|
||||
result = dataObject.string("CRDN_SN");
|
||||
}
|
||||
case "ffnlgCrdnAmt" -> {
|
||||
result = dataObject.string("FFNLG_CRDN_AMT");
|
||||
}
|
||||
|
||||
case "pcptax" -> { //본세
|
||||
result = dataObject.string("PCPTAX");
|
||||
}
|
||||
case "adamt" -> { //가산금
|
||||
result = dataObject.string("ADAMT");
|
||||
}
|
||||
case "sumAmt" -> { //납기금액
|
||||
result = dataObject.string("SUM_AMT");
|
||||
}
|
||||
case "dudtYmd" -> { //납기일자
|
||||
result = dataObject.string("DUDT_YMD");
|
||||
}
|
||||
case "dudtAftrPcptax" -> { //납기후본세
|
||||
result = dataObject.string("PCPTAX");
|
||||
}
|
||||
case "dudtAftrAdamt" -> { //납기후가산금
|
||||
result = (dataObject.number("DUDT_AFTR_AMT").intValue() - dataObject.number("PCPTAX").intValue())+"";
|
||||
}
|
||||
case "dudtAftrAmt" -> { //납기후금액
|
||||
result = dataObject.string("DUDT_AFTR_AMT");
|
||||
}
|
||||
case "dudtAftrYmd" -> { //납기후일자
|
||||
result = dataObject.string("DUDT_AFTR_YMD");
|
||||
}
|
||||
|
||||
case "vrActno" -> {
|
||||
result = dataObject.string("VR_ACTNO");
|
||||
}
|
||||
case "vrActno1" -> {
|
||||
result = dataObject.string("VR_ACTNO1");
|
||||
}
|
||||
case "vrActno2" -> {
|
||||
result = dataObject.string("VR_ACTNO2");
|
||||
}
|
||||
case "vrActno3" -> {
|
||||
result = dataObject.string("VR_ACTNO3");
|
||||
}
|
||||
case "vrActno4" -> {
|
||||
result = dataObject.string("VR_ACTNO4");
|
||||
}
|
||||
case "vrActno5" -> {
|
||||
result = dataObject.string("VR_ACTNO5");
|
||||
}
|
||||
case "vrActno6" -> {
|
||||
result = dataObject.string("VR_ACTNO6");
|
||||
}
|
||||
case "vrActno7" -> {
|
||||
result = dataObject.string("VR_ACTNO7");
|
||||
}
|
||||
case "vrActno8" -> {
|
||||
result = dataObject.string("VR_ACTNO8");
|
||||
}
|
||||
case "vrActno9" -> {
|
||||
result = dataObject.string("VR_ACTNO9");
|
||||
}
|
||||
case "vrActno10" -> {
|
||||
result = dataObject.string("VR_ACTNO10");
|
||||
}
|
||||
case "epayNo" -> {
|
||||
result = dataObject.string("EPAY_NO");
|
||||
}
|
||||
|
||||
case "ocr1" -> {
|
||||
String deptCode = dataObject.string("DEPT_CD");
|
||||
String spclBizCd = dataObject.string("SPCL_BIZ_CD");
|
||||
String fyr = dataObject.string("FYR");
|
||||
String acntgSeCd = dataObject.string("ACNTG_SE_CD");
|
||||
String txitmCd = dataObject.string("TXITM_CD");
|
||||
String levyNo = dataObject.string("LEVY_NO");
|
||||
String ispySn = dataObject.string("ISPY_SN");
|
||||
result = CmmnUtil.getOcrband1(deptCode, spclBizCd, fyr, acntgSeCd, txitmCd, levyNo, ispySn);
|
||||
}
|
||||
case "ocr2" -> {
|
||||
String deptCode = dataObject.string("DEPT_CD");
|
||||
String spclBizCd = dataObject.string("SPCL_BIZ_CD");
|
||||
String fyr = dataObject.string("FYR");
|
||||
String acntgSeCd = dataObject.string("ACNTG_SE_CD");
|
||||
String txitmCd = dataObject.string("TXITM_CD");
|
||||
String levyNo = dataObject.string("LEVY_NO");
|
||||
String ispySn = dataObject.string("ISPY_SN");
|
||||
String ocrBand1 = CmmnUtil.getOcrband1(deptCode, spclBizCd, fyr, acntgSeCd, txitmCd, levyNo, ispySn);
|
||||
|
||||
String levySeCd = dataObject.string("LEVY_SE_CD");
|
||||
int sumAmt = dataObject.number("SUM_AMT").intValue(); // 합계 금액
|
||||
String dudtYmd = dataObject.string("DUDT_YMD");
|
||||
result = CmmnUtil.getOcrband2(ocrBand1, levySeCd, sumAmt, dudtYmd);
|
||||
}
|
||||
case "ocr3" -> {
|
||||
String deptCode = dataObject.string("DEPT_CD");
|
||||
String spclBizCd = dataObject.string("SPCL_BIZ_CD");
|
||||
String fyr = dataObject.string("FYR");
|
||||
String acntgSeCd = dataObject.string("ACNTG_SE_CD");
|
||||
String txitmCd = dataObject.string("TXITM_CD");
|
||||
String levyNo = dataObject.string("LEVY_NO");
|
||||
String ispySn = dataObject.string("ISPY_SN");
|
||||
String ocrBand1 = CmmnUtil.getOcrband1(deptCode, spclBizCd, fyr, acntgSeCd, txitmCd, levyNo, ispySn);
|
||||
|
||||
String levySeCd = dataObject.string("LEVY_SE_CD");
|
||||
int sumAmt = dataObject.number("SUM_AMT").intValue(); // 합계 금액
|
||||
String dudtYmd = dataObject.string("DUDT_YMD");
|
||||
String ocrBand2 = CmmnUtil.getOcrband2(ocrBand1, levySeCd, sumAmt, dudtYmd);
|
||||
|
||||
int afterSumAmt = dataObject.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액
|
||||
result = CmmnUtil.getOcrband3(ocrBand2, sumAmt, dudtYmd, afterSumAmt);
|
||||
}
|
||||
|
||||
case "otptYmd" -> {
|
||||
result = DataFormat.yyyy_mm_dd(print.getPrintRequestDt().substring(0,8));
|
||||
}
|
||||
case "otptDt" -> {
|
||||
result = DataFormat.yyyy_mm_dd_hh_mm_ss(print.getPrintRequestDt());
|
||||
}
|
||||
case "otptYYYY" -> {
|
||||
result = print.getPrintRequestDt().substring(0,4);
|
||||
}
|
||||
case "otptMM" -> {
|
||||
result = print.getPrintRequestDt().substring(4,6);
|
||||
}
|
||||
case "otptDD" -> {
|
||||
result = print.getPrintRequestDt().substring(6,8);
|
||||
}
|
||||
|
||||
case "offcsText" -> {
|
||||
String instNm = (String) print.getPrintRequestUserInfo().getInfo().get("instNm");
|
||||
instNm = OgdpUtil.getLastWord(instNm);
|
||||
instNm = OgdpUtil.getInstituteLeader(instNm, true);
|
||||
result = instNm;
|
||||
}
|
||||
case "offcs" -> {
|
||||
result = globalVariable.get("offcsFilePath");
|
||||
}
|
||||
|
||||
case "undefined" -> {
|
||||
result = defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 우편물 출력요소에 매핑될 값을 반환한다.
|
||||
*/
|
||||
@Override
|
||||
public String getValueForPost(String otptArtclNm, String defaultValue,
|
||||
DataObject dataObject, FimsPrintOption printOption, Print print) {
|
||||
String result = "";
|
||||
|
||||
switch(otptArtclNm) {
|
||||
case "postReceiverAddr" -> {
|
||||
result = dataObject.string("RTPYR_ADDR");
|
||||
}
|
||||
case "postReceiverDtlAddr" -> {
|
||||
result = dataObject.string("RTPYR_DTL_ADDR");
|
||||
}
|
||||
case "postReceiverZip" -> {
|
||||
result = dataObject.string("RTPYR_ZIP");
|
||||
}
|
||||
case "postReceiver" -> {
|
||||
result = dataObject.string("RTPYR_NM");
|
||||
}
|
||||
case "postSenderLogo" -> {
|
||||
result = printOption.getGlobalVariable().get("logoFilePath");
|
||||
}
|
||||
case "postSenderInst" -> {
|
||||
result = (String)print.getPrintRequestUserInfo().getInfo().get("instNm");
|
||||
}
|
||||
case "postSenderDept" -> {
|
||||
result = (String)print.getPrintRequestUserInfo().getInfo().get("deptNm");
|
||||
}
|
||||
case "postSenderAddr" -> {
|
||||
result = printOption.getGlobalVariable().get("instAddr");
|
||||
}
|
||||
case "postSenderDtlAddr" -> {
|
||||
result = printOption.getGlobalVariable().get("instDaddr");
|
||||
}
|
||||
case "postSenderZip" -> {
|
||||
result = printOption.getGlobalVariable().get("instZip");
|
||||
}
|
||||
case "postSenderTel" -> {
|
||||
result = printOption.getGlobalVariable().get("deptTelno");
|
||||
}
|
||||
case "postSenderFax" -> {
|
||||
result = printOption.getGlobalVariable().get("deptFxno");
|
||||
}
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getMappingValues(String otptArtclNm, String defaultValue, boolean forPost,
|
||||
DataObject dataObject, FimsPrintOption printOption, Print print) {
|
||||
List<String> result = new ArrayList<String>();
|
||||
|
||||
switch(otptArtclNm) {
|
||||
case "crdnPhoto" -> {
|
||||
int i = 1;
|
||||
while(!dataObject.string("CRDN_PHOTO"+i).equals("")) {
|
||||
result.add(dataObject.string("CRDN_PHOTO"+i));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 출력용 샘플 데이터를 생성한다.
|
||||
*/
|
||||
@Override
|
||||
public DataObject createSampleData() {
|
||||
DataObject dataObject = new DataObject();
|
||||
dataObject.put("RTPYR_NM", "홍길동");
|
||||
dataObject.put("RTPYR_ADDR", "무슨도 무슨시 무슨구");
|
||||
dataObject.put("RTPYR_DTL_ADDR", "ㅇㅇ아파트 999호");
|
||||
dataObject.put("RTPYR_FULL_ADDR", "무슨도 무슨시 무슨구 ㅇㅇ아파트 999호");
|
||||
dataObject.put("RTPYR_ZIP", "12345");
|
||||
dataObject.put("VHRNO", "00가0000");
|
||||
dataObject.put("CRDN_YMD", "20231204");
|
||||
dataObject.put("CRDN_YMD_TM", "20231204080808");
|
||||
dataObject.put("CRDN_PLC", "사거리 건너편");
|
||||
dataObject.put("FFNLG_CARMDL_NM", "승용");
|
||||
dataObject.put("VLTN_ARTCL", "주차위반");
|
||||
dataObject.put("VLTN_LAW_NM", "00법 제0조 제0항");
|
||||
dataObject.put("CRDN_SN", "1234567890");
|
||||
dataObject.put("VR_ACTNO", "000000-00-000000");
|
||||
dataObject.put("VR_ACTNO1", "111111-00-000000");
|
||||
dataObject.put("VR_ACTNO2", "222222-00-000000");
|
||||
dataObject.put("VR_ACTNO3", "333333-00-000000");
|
||||
dataObject.put("VR_ACTNO4", "444444-00-000000");
|
||||
dataObject.put("VR_ACTNO5", "555555-00-000000");
|
||||
dataObject.put("VR_ACTNO6", "666666-00-000000");
|
||||
dataObject.put("VR_ACTNO7", "777777-00-000000");
|
||||
dataObject.put("VR_ACTNO8", "888888-00-000000");
|
||||
dataObject.put("VR_ACTNO9", "999999-00-000000");
|
||||
dataObject.put("VR_ACTNO10", "101010-00-000000");
|
||||
dataObject.put("EPAY_NO", "00000-0-00-00-000000000");
|
||||
dataObject.put("FFNLG_CRDN_AMT", "100000");
|
||||
dataObject.put("ADVNTCE_AMT", "80000");
|
||||
dataObject.put("ADVNTCE_DUDT_YMD", "20231231");
|
||||
|
||||
dataObject.put("DEPT_CD", "4060411");
|
||||
dataObject.put("SPCL_BIZ_CD", "0000");
|
||||
dataObject.put("FYR", "2023");
|
||||
dataObject.put("ACNTG_SE_CD", "61");
|
||||
dataObject.put("TXITM_CD", "234006");
|
||||
dataObject.put("LEVY_NO", "123456");
|
||||
dataObject.put("ISPY_SN", "00");
|
||||
dataObject.put("LEVY_SE_CD", "01");
|
||||
|
||||
dataObject.put("PCPTAX", "80000"); //본세
|
||||
dataObject.put("ADAMT", "0"); //가산금
|
||||
dataObject.put("SUM_AMT", "80000"); //합계금액
|
||||
dataObject.put("DUDT_YMD", "20231215"); //납기일자
|
||||
dataObject.put("DUDT_AFTR_AMT", "100000"); //납기후 금액
|
||||
dataObject.put("DUDT_AFTR_YMD", "20231231"); //납기후 일자
|
||||
|
||||
dataObject.put("CRDN_PHOTO1", "samplefiles/crdn1.png");
|
||||
dataObject.put("CRDN_PHOTO2", "samplefiles/crdn2.png");
|
||||
dataObject.put("CRDN_PHOTO3", "samplefiles/crdn3.png");
|
||||
dataObject.put("CRDN_PHOTO4", "samplefiles/crdn4.png");
|
||||
dataObject.put("CRDN_PHOTO5", "samplefiles/crdn5.png");
|
||||
dataObject.put("CRDN_PHOTO6", "samplefiles/crdn6.png");
|
||||
dataObject.put("CRDN_PHOTO7", "samplefiles/crdn7.png");
|
||||
|
||||
return dataObject;
|
||||
}
|
||||
}
|
||||
@ -1,913 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.pdf.print.format;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
||||
import org.apache.pdfbox.pdmodel.font.PDType0Font;
|
||||
import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
|
||||
import org.apache.pdfbox.pdmodel.graphics.state.RenderingMode;
|
||||
import org.egovframe.rte.fdl.string.EgovStringUtil;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
|
||||
import cokr.xit.applib.Print;
|
||||
import cokr.xit.fims.cmmn.CmmnUtil;
|
||||
import cokr.xit.fims.cmmn.FimsPrintOption;
|
||||
import cokr.xit.fims.cmmn.Pstn;
|
||||
import cokr.xit.fims.cmmn.PstnAndSize;
|
||||
import cokr.xit.fims.cmmn.Size;
|
||||
import cokr.xit.fims.cmmn.pdf.print.DefaultOtptArtclStng;
|
||||
import cokr.xit.fims.cmmn.pdf.print.PDFColors;
|
||||
import cokr.xit.fims.cmmn.pdf.print.PDFCoordinate;
|
||||
import cokr.xit.fims.cmmn.pdf.print.PDFWriter;
|
||||
import cokr.xit.fims.sprt.MediaUtil;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public abstract class PDFPrintFormat {
|
||||
protected PDFWriter writer;
|
||||
|
||||
protected Print print;
|
||||
protected FimsPrintOption printOption;
|
||||
protected List<DataObject> data;
|
||||
|
||||
protected DataObject otptBscStng;
|
||||
protected List<DataObject> otptArtclStngList;
|
||||
protected String paperSeCd;
|
||||
protected float[] paperMilimeter = new float[2];
|
||||
protected List<DefaultOtptArtclStng> prototypeStngs = new ArrayList<DefaultOtptArtclStng>();
|
||||
|
||||
public abstract void initDefaultStng();
|
||||
|
||||
public PDFPrintFormat() {
|
||||
initDefaultStng();
|
||||
}
|
||||
|
||||
public PDFPrintFormat(Print print, FimsPrintOption printOption,
|
||||
DataObject otptBscStng, List<DataObject> otptArtclStngList, String paperSeCd, List<DataObject> data) {
|
||||
initDefaultStng();
|
||||
this.data = data;
|
||||
this.print = print;
|
||||
this.print.setExtension("pdf");
|
||||
this.printOption = printOption;
|
||||
this.otptBscStng = otptBscStng;
|
||||
this.otptArtclStngList = otptArtclStngList;
|
||||
this.paperSeCd = paperSeCd;
|
||||
if(paperSeCd.equals("01")) {
|
||||
this.paperMilimeter = new float[] {210.0f , 297.0f};
|
||||
} else if(paperSeCd.equals("02")){
|
||||
this.paperMilimeter = new float[] {216.0f , 279.0f};
|
||||
}
|
||||
}
|
||||
|
||||
public void setOtptBscStng(DataObject otptBscStng) {
|
||||
this.otptBscStng = otptBscStng;
|
||||
}
|
||||
|
||||
public void setOtptArtclStngList(List<DataObject> otptArtclStngList) {
|
||||
this.otptArtclStngList = otptArtclStngList;
|
||||
}
|
||||
|
||||
public List<DataObject> getOtptArtclStngList() {
|
||||
return this.otptArtclStngList;
|
||||
}
|
||||
|
||||
|
||||
public void setPaperSeCd(String paperSeCd) {
|
||||
this.paperSeCd = paperSeCd;
|
||||
|
||||
}
|
||||
|
||||
public void setPrint(Print print) {
|
||||
this.print = print;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* 포맷원형을 반환한다.
|
||||
*/
|
||||
public List<DefaultOtptArtclStng> getPrototypeStngs(){
|
||||
return this.prototypeStngs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 포맷원형을 반환한다.
|
||||
*/
|
||||
public List<DefaultOtptArtclStng> getPrototypeStngs(boolean unique){
|
||||
return this.prototypeStngs.stream().filter(item -> item.isUnique() == unique).toList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 텍스트 출력요소를 정의한다.
|
||||
*/
|
||||
public DefaultOtptArtclStng text(String artclNm, String artclDscrp, String otptBscVl){
|
||||
return new DefaultOtptArtclStng("text", artclNm, artclDscrp, otptBscVl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 이미지 출력요소 정의한다.
|
||||
*/
|
||||
public DefaultOtptArtclStng image(String artclNm, String artclDscrp, String otptBscVl){
|
||||
return new DefaultOtptArtclStng("image", artclNm, artclDscrp, otptBscVl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 이미지 묶음 출력요소 정의한다.
|
||||
*/
|
||||
public DefaultOtptArtclStng images(String artclNm, String artclDscrp, String otptBscVl){
|
||||
return new DefaultOtptArtclStng("images", artclNm, artclDscrp, otptBscVl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 포맷원형에 출력요소를 추가한다.
|
||||
*/
|
||||
public void add(DefaultOtptArtclStng... prototypeStngs){
|
||||
for(DefaultOtptArtclStng prototypeStng : prototypeStngs) {
|
||||
this.prototypeStngs.add(prototypeStng);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 포맷원형에 우편물 출력요소를 추가한다.
|
||||
*/
|
||||
public void addForPost(DefaultOtptArtclStng... prototypeStngs){
|
||||
for(DefaultOtptArtclStng prototypeStng : prototypeStngs) {
|
||||
this.prototypeStngs.add(prototypeStng.post());
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 출력요소에 매핑될 값을 반환한다.
|
||||
*/
|
||||
public abstract String getMappingValue(String otptArtclNm, String defaultValue, boolean forPost,
|
||||
DataObject dataObject, FimsPrintOption printOption, Print print);
|
||||
|
||||
public abstract List<String> getMappingValues(String otptArtclNm, String defaultValue, boolean forPost,
|
||||
DataObject dataObject, FimsPrintOption printOption, Print print);
|
||||
|
||||
/**
|
||||
* 우편물 출력요소에 매핑될 값을 반환한다.
|
||||
*/
|
||||
public abstract String getValueForPost(String otptArtclNm, String defaultValue,
|
||||
DataObject dataObject, FimsPrintOption printOption, Print print);
|
||||
|
||||
/**
|
||||
* 시군구별 출력설정요소에 속성(요소 유형, 출력설명, 출력물 내 유일 요소 여부, 우편물 관련 요소 여부, 기본값)을 추가한다.
|
||||
*/
|
||||
public void appendOtptAttribute(List<DataObject> otptArtclStngList) {
|
||||
|
||||
if(otptArtclStngList!=null && !otptArtclStngList.isEmpty()) {
|
||||
List<DefaultOtptArtclStng> prototypeStngs = this.getPrototypeStngs();
|
||||
|
||||
for(DataObject otptArtclStng : otptArtclStngList) {
|
||||
String otptArtclNm = (String) otptArtclStng.get("OTPT_ARTCL_NM");
|
||||
DefaultOtptArtclStng prototypeStng = prototypeStngs.stream()
|
||||
.filter(item -> item.getArtclNm().equals(otptArtclNm)).toList().get(0);
|
||||
|
||||
otptArtclStng.set("UNIQUE_YN", prototypeStng.isUnique() ? "Y" : "N");
|
||||
otptArtclStng.set("DSCRP", prototypeStng.getArtclDscrp());
|
||||
otptArtclStng.set("COMPONENT_TYPE", prototypeStng.getComponentType());
|
||||
otptArtclStng.set("POST_YN", prototypeStng.isForPost() ? "Y" : "N");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 출력용 샘플 데이터를 생성한다.
|
||||
*/
|
||||
public abstract DataObject createSampleData();
|
||||
|
||||
public List<DataObject> getMosSet(String imageKey, DataObject dataObject) {
|
||||
List<DataObject> list = CmmnUtil.getDataObjectListFromMap(dataObject,"MOS"+imageKey);
|
||||
|
||||
if(list != null) {
|
||||
return list;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 서식에서 사용하는 출력항목 중 사용하는 항목만 추출한다.
|
||||
*/
|
||||
public List<DefaultOtptArtclStng> filterUsedArtcls() {
|
||||
List<String> otptArtclNmList = this.otptArtclStngList.stream().map((item) -> { return item.string("OTPT_ARTCL_NM"); }).toList();
|
||||
|
||||
List<DefaultOtptArtclStng> result = this.getPrototypeStngs().stream()
|
||||
.filter((item) -> {
|
||||
return otptArtclNmList.contains(item.getArtclNm());
|
||||
}).toList();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 다운로드 이력에 남길 항목명을 추출한다.
|
||||
*/
|
||||
public List<String> filterDownloadDataNames() {
|
||||
|
||||
List<String> result = this.filterUsedArtcls().stream()
|
||||
.filter((item) -> {
|
||||
return item.isDownloadData();
|
||||
})
|
||||
.map(DefaultOtptArtclStng::getArtclDscrp).toList();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public Map<String, Object> makeFile() {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
writer = new PDFWriter();
|
||||
|
||||
//폰트 로드
|
||||
Map<String, PDType0Font> fontMap = this.getFontMap(writer);
|
||||
|
||||
//용지 크기 설정
|
||||
if(this.paperSeCd.equals("01")) {
|
||||
writer.paper("A4");
|
||||
} else {
|
||||
writer.paper("LETTER");
|
||||
}
|
||||
|
||||
|
||||
List<DefaultOtptArtclStng> prototypeStngList = this.getPrototypeStngs();
|
||||
|
||||
try {
|
||||
|
||||
|
||||
//출력요소별 속성 정보 추가
|
||||
this.appendOtptAttribute(this.otptArtclStngList);
|
||||
|
||||
//출력 요소 정렬
|
||||
Comparator<DataObject> comparator1 = (item1, item2) -> {
|
||||
int int1 = item1.string("UNIQUE_YN").equals("Y") ? 0 : 1;
|
||||
int int2 = item2.string("UNIQUE_YN").equals("Y") ? 0 : 1;
|
||||
return Integer.compare(int1, int2);
|
||||
};
|
||||
Comparator<DataObject> comparator2 = (item1, item2) -> {
|
||||
int int1 = item1.number("OTPT_ARTCL_SEQ").intValue();
|
||||
int int2 = item2.number("OTPT_ARTCL_SEQ").intValue();
|
||||
return Integer.compare(int1, int2);
|
||||
};
|
||||
otptArtclStngList = otptArtclStngList.stream()
|
||||
.sorted(comparator1.thenComparing(comparator2)).collect(Collectors.toList());
|
||||
|
||||
|
||||
//대표단속사진 설정 여부 확인
|
||||
boolean rprsCrdnPhotoYn = false;
|
||||
if(otptArtclStngList.stream().filter(item -> item.string("OTPT_ARTCL_NM").equals("rprsCrdnPhoto")).count() > 0) {
|
||||
rprsCrdnPhotoYn = true;
|
||||
}
|
||||
|
||||
for(DataObject dataObject : data) {
|
||||
writer.beginPage();
|
||||
|
||||
boolean completeFoldLine = false;
|
||||
|
||||
for(DataObject otptArtclStng : otptArtclStngList) {
|
||||
String otptArtclNm = otptArtclStng.string("OTPT_ARTCL_NM");
|
||||
|
||||
if(!otptArtclNm.equals("background") && !completeFoldLine) {
|
||||
//접는곳 점선 그리기
|
||||
if(!otptBscStng.string("FOLD_LINE_PSTN_SE_CD").equals("")) {
|
||||
this.renderFoldLine(writer, otptBscStng.string("FOLD_LINE_PSTN_SE_CD"));
|
||||
}
|
||||
completeFoldLine = true;
|
||||
}
|
||||
|
||||
DefaultOtptArtclStng prototypeStng = prototypeStngList.stream()
|
||||
.filter(item -> item.getArtclNm().equals(otptArtclNm)).toList().get(0);
|
||||
|
||||
float[] pstn = this.getPstnStng(prototypeStng, otptArtclStng, this.paperSeCd);
|
||||
float[] size = this.getSize(prototypeStng, otptArtclStng);
|
||||
|
||||
boolean forPost = prototypeStng.isForPost();
|
||||
String defaultValue = prototypeStng.getOtptBscVl();
|
||||
|
||||
if(prototypeStng.getComponentType().equals("text")) {
|
||||
String align = this.getAlign(prototypeStng, otptArtclStng);
|
||||
String lineChgYn = this.getLineChgYn(prototypeStng, otptArtclStng);
|
||||
PDType0Font font = this.getFontType(prototypeStng, otptArtclStng, fontMap);
|
||||
int fontSz = this.getFontSize(prototypeStng, otptArtclStng);
|
||||
RenderingMode fontStyle = this.getFontStyle(prototypeStng, otptArtclStng);
|
||||
PDColor fontColr = this.getFontColor(prototypeStng, otptArtclStng);
|
||||
|
||||
String textValue = this.getMappingValue(otptArtclNm,defaultValue,forPost,dataObject,printOption, this.print);
|
||||
|
||||
this.writeText(writer, textValue, pstn, size[0], align, lineChgYn
|
||||
, font, fontSz, fontStyle, fontColr);
|
||||
|
||||
} else if(prototypeStng.getComponentType().equals("image")) {
|
||||
|
||||
String imagePath = this.getMappingValue(otptArtclNm,defaultValue,forPost,dataObject,printOption,this.print);
|
||||
|
||||
if(EgovStringUtil.null2void(imagePath).equals("")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!imagePath.startsWith("files")) {
|
||||
imagePath = CmmnUtil.copyStaticResource(imagePath, false);
|
||||
}
|
||||
|
||||
File imageFile = new File(imagePath);
|
||||
InputStream is = new FileInputStream(imageFile);
|
||||
|
||||
String imageKey = "";
|
||||
List<DataObject> mosSet = null;
|
||||
if(otptArtclNm.equals("rprsCrdnPhoto")) {
|
||||
imageKey = this.getMappingValue(otptArtclNm+"Key",defaultValue,forPost,dataObject,printOption,this.print);
|
||||
mosSet = this.getMosSet(imageKey, dataObject);
|
||||
}
|
||||
this.insertImage(writer, is, pstn, size);
|
||||
|
||||
if(otptArtclNm.equals("rprsCrdnPhoto") && !imageKey.equals("") && mosSet != null) {
|
||||
|
||||
File imageFile0 = new File(imagePath);
|
||||
InputStream is0 = new FileInputStream(imageFile0);
|
||||
|
||||
List<PstnAndSize> transformedMosaicInfos = MediaUtil.getTransformedMosaic(
|
||||
mosSet, is0, new PstnAndSize(pstn[0],pstn[1], size[0], size[1])
|
||||
);
|
||||
|
||||
for(int k=0; k < transformedMosaicInfos.size(); k++) {
|
||||
PstnAndSize mosaicInfo = transformedMosaicInfos.get(k);
|
||||
|
||||
InputStream blackImageStream = new ClassPathResource("samplefiles/black.png").getInputStream();
|
||||
this.insertImage(writer, blackImageStream,
|
||||
mosaicInfo.getPstn().to2Float(), mosaicInfo.getSize().to2Float());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
} else if(prototypeStng.getComponentType().equals("images")) {
|
||||
|
||||
List<String> imagePaths = this.getMappingValues(otptArtclNm,defaultValue,forPost,dataObject,printOption,this.print);
|
||||
|
||||
List<String> imageKeys = new ArrayList<String>();
|
||||
List<List<DataObject>> mosSets = new ArrayList<List<DataObject>>();
|
||||
if(otptArtclNm.equals("crdnPhoto")) {
|
||||
imageKeys = this.getMappingValues(otptArtclNm+"Key",defaultValue,forPost,dataObject,printOption,this.print);
|
||||
if(rprsCrdnPhotoYn && imagePaths.size() > 0) {
|
||||
imageKeys.remove(0);
|
||||
}
|
||||
for(String imageKey : imageKeys) {
|
||||
mosSets.add(this.getMosSet(imageKey, dataObject));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(otptArtclNm.equals("crdnPhoto")) {
|
||||
if(rprsCrdnPhotoYn && imagePaths.size() > 0) {
|
||||
imagePaths.remove(0);
|
||||
}
|
||||
}
|
||||
|
||||
int printCntSetting = otptBscStng.number("OTPT_PHOTO_CNT").intValue();
|
||||
int dataImageCnt = imagePaths.size();
|
||||
|
||||
if(printCntSetting != 0 && dataImageCnt != 0) {
|
||||
|
||||
List<PstnAndSize> devideInfos = this.devideImageArea(pstn, size, printCntSetting, dataImageCnt);
|
||||
|
||||
for (int i=0; i< devideInfos.size(); i++){
|
||||
PstnAndSize devideInfo = devideInfos.get(i);
|
||||
|
||||
if(EgovStringUtil.null2void(imagePaths.get(i)).equals("")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!imagePaths.get(i).startsWith("files")) {
|
||||
imagePaths.set(i, CmmnUtil.copyStaticResource(imagePaths.get(i), false));
|
||||
}
|
||||
|
||||
String imagePath = imagePaths.get(i);
|
||||
|
||||
File imageFile = new File(imagePath);
|
||||
InputStream is = new FileInputStream(imageFile);
|
||||
|
||||
this.insertImage(writer, is,
|
||||
devideInfo.getPstn().to2Float(), devideInfo.getSize().to2Float());
|
||||
|
||||
|
||||
if(otptArtclNm.equals("crdnPhoto") && !imageKeys.isEmpty() && !mosSets.isEmpty()) {
|
||||
|
||||
if(mosSets.get(i) != null) {
|
||||
String imagePath0 = imagePaths.get(i);
|
||||
|
||||
File imageFile0 = new File(imagePath0);
|
||||
InputStream is0 = new FileInputStream(imageFile0);
|
||||
|
||||
List<PstnAndSize> transformedMosaicInfos = MediaUtil.getTransformedMosaic(
|
||||
mosSets.get(i), is0, devideInfo
|
||||
);
|
||||
|
||||
for(int k=0; k < transformedMosaicInfos.size(); k++) {
|
||||
PstnAndSize mosaicInfo = transformedMosaicInfos.get(k);
|
||||
InputStream blackImageStream = new ClassPathResource("samplefiles/black.png").getInputStream();
|
||||
this.insertImage(writer, blackImageStream,
|
||||
mosaicInfo.getPstn().to2Float(), mosaicInfo.getSize().to2Float());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}//출력항목 loop 끝
|
||||
|
||||
if(!completeFoldLine) {
|
||||
if(!otptBscStng.string("FOLD_LINE_PSTN_SE_CD").equals("")) {
|
||||
this.renderFoldLine(writer, otptBscStng.string("FOLD_LINE_PSTN_SE_CD"));
|
||||
}
|
||||
}
|
||||
|
||||
writer.endPage();
|
||||
|
||||
} //출력자료건수 loop 끝
|
||||
|
||||
|
||||
String downloadFileName = this.print.getFormatKorName()+"_"+this.print.getPrintRequestDt()+".pdf";
|
||||
result.put("download", writer.getDownloadable().setFilename(downloadFileName));
|
||||
result.put("downloadData", data);
|
||||
result.put("dataNames", this.filterDownloadDataNames());
|
||||
|
||||
} catch(FileNotFoundException e) {
|
||||
throw new RuntimeException("파일을 찾을 수 없습니다.");
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("출력오류."+e);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* mm단위로 입력된 값을 pdf좌표계 형식으로 변환한다.
|
||||
*/
|
||||
public PDFCoordinate toPDFCoordinate(float[] XYmm) {
|
||||
float Xmm = XYmm[0];
|
||||
float Ymm = XYmm[1];
|
||||
|
||||
float Xpt = CmmnUtil.mmToPt(Xmm);
|
||||
float Ypt = CmmnUtil.mmToPt(Ymm);
|
||||
|
||||
float YptMax = CmmnUtil.mmToPt(this.paperMilimeter[1]);
|
||||
|
||||
return new PDFCoordinate(Xpt, Ypt, YptMax);
|
||||
}
|
||||
|
||||
/**
|
||||
* 텍스트를 pdf에 입력한다.
|
||||
*/
|
||||
public void writeText(PDFWriter writer, String allText,
|
||||
float[] XYmm, float textAreaWidth_mm, String align, String newLineYn,
|
||||
PDType0Font font, int fontSize, RenderingMode fontStyle, PDColor fontColor) {
|
||||
try {
|
||||
if(allText == null) {
|
||||
allText = "";
|
||||
}
|
||||
if(newLineYn == null || newLineYn.equals("")) {
|
||||
newLineYn = "N";
|
||||
}
|
||||
|
||||
float[] xyAbsolute = this.toPDFCoordinate(XYmm).absolute();
|
||||
|
||||
float textAreaWidth_pt = CmmnUtil.mmToPt(textAreaWidth_mm);
|
||||
|
||||
float allTextWidth = calcTextWidth(font, fontSize, allText);
|
||||
|
||||
String textArr[];
|
||||
if(allText.equals("") || allText.length() == 1 || textAreaWidth_pt == 0
|
||||
|| (allTextWidth <= textAreaWidth_pt)
|
||||
|| newLineYn.equals("N")) {
|
||||
|
||||
textArr = new String[] { allText };
|
||||
|
||||
} else {
|
||||
|
||||
textArr = splitByLineForLargeText(font, fontSize, allText, textAreaWidth_pt);
|
||||
|
||||
}
|
||||
|
||||
String firstLine = textArr[0];
|
||||
float firstLineWidth = calcTextWidth(font, fontSize, firstLine);
|
||||
|
||||
writer.beginText();
|
||||
writer.setFont(font, fontSize);
|
||||
writer.setRenderingMode(fontStyle);
|
||||
writer.setNonStrokingColor(fontColor);
|
||||
|
||||
float resultY = xyAbsolute[1] - fontSize;
|
||||
|
||||
float firstLineAlignCorrection = 0;
|
||||
if(align.equals("right")) {
|
||||
firstLineAlignCorrection = textAreaWidth_pt - firstLineWidth;
|
||||
} else if(align.equals("center")) {
|
||||
firstLineAlignCorrection = (textAreaWidth_pt - firstLineWidth)/2.0f;
|
||||
}
|
||||
|
||||
float resultX = xyAbsolute[0] + firstLineAlignCorrection;
|
||||
|
||||
writer.newLineAtOffset(resultX, resultY);
|
||||
writer.showText(textArr[0]);
|
||||
|
||||
if(textArr.length > 1) {
|
||||
float beforeLineWidth = firstLineWidth;
|
||||
|
||||
for(int i = 1; i < textArr.length; i++) {
|
||||
String thisLine = textArr[i];
|
||||
float thisLineWidth = this.calcTextWidth(font, fontSize, thisLine);
|
||||
float alignCorrection = 0;
|
||||
|
||||
if(align.equals("right")) {
|
||||
alignCorrection = beforeLineWidth - thisLineWidth;
|
||||
} if(align.equals("center")) {
|
||||
alignCorrection = (beforeLineWidth - thisLineWidth)/2.0f;
|
||||
}
|
||||
|
||||
writer.newLineAtOffset(alignCorrection, -(fontSize + 1));
|
||||
writer.showText(thisLine);
|
||||
|
||||
beforeLineWidth = thisLineWidth;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
writer.endText();
|
||||
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("PDF 파일 출력 중 오류가 발생하였습니다."+e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 글꼴모양,폰트크기 등에 따른 텍스트의 가로 길이(pt)를 계산한다.
|
||||
*/
|
||||
public float calcTextWidth(PDType0Font font, int fontSize, String text) {
|
||||
try {
|
||||
return (font.getStringWidth(text) / 1000.0f) * fontSize;
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("PDF 파일 출력 중 오류가 발생하였습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 출력할 텍스트가 지정한 영역 안에 들어가지 않을 경우 줄바꿈 처리를 위해 텍스트를 나누어 배열로 반환한다.
|
||||
*/
|
||||
public String[] splitByLineForLargeText(PDType0Font font, int fontSize, String allText, float textAreaWidth_pt) {
|
||||
|
||||
float allTextWidth = calcTextWidth(font, fontSize, allText);
|
||||
|
||||
if(allText.equals("") || allText.length() == 1 || textAreaWidth_pt == 0
|
||||
|| (allTextWidth <= textAreaWidth_pt)
|
||||
) {
|
||||
return new String[] { allText };
|
||||
}
|
||||
|
||||
ArrayList<String> textList = new ArrayList<String>();
|
||||
|
||||
while(!allText.equals("")) {
|
||||
int lengthForLine = this.getLengthForLine(font, fontSize, allText, textAreaWidth_pt);
|
||||
String newLine = allText.substring(0,lengthForLine);
|
||||
textList.add(newLine);
|
||||
allText = allText.substring(lengthForLine);
|
||||
}
|
||||
|
||||
return textList.toArray(new String[textList.size()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 텍스트를 줄바꿈 처리할 경우 첫 라인에 출력될 글자 수를 반환한다.
|
||||
*/
|
||||
private int getLengthForLine(PDType0Font font, int fontSize, String allText, float textAreaWidth_pt) {
|
||||
int forLine = allText.length();
|
||||
if(forLine <= 1) {
|
||||
return forLine;
|
||||
};
|
||||
|
||||
for( ; ; forLine--) {
|
||||
if(forLine == 1) {
|
||||
break;
|
||||
}
|
||||
|
||||
boolean hit = ( this.calcTextWidth(font, fontSize, allText.substring(0, forLine)) <= textAreaWidth_pt );
|
||||
if(hit) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return forLine;
|
||||
}
|
||||
|
||||
/**
|
||||
* pdf에 이미지를 삽입한다.
|
||||
*/
|
||||
public void insertImage(PDFWriter writer, InputStream imageStream, float[] XYmm,
|
||||
float[] SIZEmm) {
|
||||
|
||||
float[] xyAbsolute = this.toPDFCoordinate(XYmm).absolute();
|
||||
|
||||
float[] size = new float[] {
|
||||
CmmnUtil.mmToPt(SIZEmm[0]),CmmnUtil.mmToPt(SIZEmm[1])
|
||||
};
|
||||
try {
|
||||
writer.image(imageStream, xyAbsolute[0], xyAbsolute[1]-size[1], size[0], size[1]);
|
||||
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("PDF 파일 출력 중 오류가 발생하였습니다."+e);
|
||||
}
|
||||
}
|
||||
|
||||
public List<PstnAndSize> devideImageArea(float[] totAreaPstn, float[] totAreaSize, int imageCntSetting, int dataImageCnt) {
|
||||
List<PstnAndSize> result = new ArrayList<PstnAndSize>();
|
||||
|
||||
int printable = imageCntSetting <= dataImageCnt ? imageCntSetting : dataImageCnt;
|
||||
|
||||
if(printable <= 1) {
|
||||
result.add(new PstnAndSize(totAreaPstn[0], totAreaPstn[1], totAreaSize[0], totAreaSize[1]));
|
||||
return result;
|
||||
}
|
||||
|
||||
boolean longerThenWidth = totAreaSize[1] > totAreaSize[0];
|
||||
|
||||
int xLengthOfD2 = 0;
|
||||
int yLengthOfD2 = 0;
|
||||
|
||||
if(printable == 2){
|
||||
if(longerThenWidth) {
|
||||
xLengthOfD2 = 1;
|
||||
yLengthOfD2 = 2;
|
||||
} else {
|
||||
xLengthOfD2 = 2;
|
||||
yLengthOfD2 = 1;
|
||||
}
|
||||
} else if(printable == 3 || printable == 4){
|
||||
xLengthOfD2 = 2;
|
||||
yLengthOfD2 = 2;
|
||||
} else if(printable == 5 || printable == 6){
|
||||
if(longerThenWidth) {
|
||||
xLengthOfD2 = 2;
|
||||
yLengthOfD2 = 3;
|
||||
} else {
|
||||
xLengthOfD2 = 3;
|
||||
yLengthOfD2 = 2;
|
||||
}
|
||||
} else {
|
||||
throw new RuntimeException("PDF 파일 출력 중 오류가 발생하였습니다.");
|
||||
}
|
||||
|
||||
PstnAndSize[][] d2Array = new PstnAndSize[xLengthOfD2][yLengthOfD2];
|
||||
Size cellSize = new Size(totAreaSize[0] / (xLengthOfD2 * 1.0f), totAreaSize[1] / (yLengthOfD2 * 1.0f));
|
||||
|
||||
d2Array[0][0] = new PstnAndSize(totAreaPstn[0], totAreaPstn[1], cellSize.getWidth(), cellSize.getHeight());
|
||||
d2Array = this.fillImageCells(d2Array);
|
||||
|
||||
//출력영역 크기 병합
|
||||
if(printable == 3 || printable == 5) {
|
||||
|
||||
boolean longerThenWidth_cell = cellSize.getHeight() > cellSize.getWidth();
|
||||
if(longerThenWidth_cell) {
|
||||
d2Array = this.mergeLastImageCell(d2Array, "left");
|
||||
} else {
|
||||
d2Array = this.mergeLastImageCell(d2Array, "up");
|
||||
}
|
||||
|
||||
}
|
||||
for(int y=0; y < yLengthOfD2; y++) {
|
||||
for(int x=0; x < xLengthOfD2; x++) {
|
||||
if(d2Array[x][y] != null) {
|
||||
result.add(d2Array[x][y]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private PstnAndSize[][] fillImageCells(PstnAndSize[][] d2) {
|
||||
int xLengthOfD2 = d2.length;
|
||||
int yLengthOfD2 = d2[0].length;
|
||||
|
||||
PstnAndSize firstCell = d2[0][0];
|
||||
|
||||
Size cellSize = firstCell.getSize();
|
||||
float cellWidth = cellSize.getWidth();
|
||||
float cellHeight = cellSize.getHeight();
|
||||
|
||||
Pstn startPoint = firstCell.getPstn();
|
||||
float spX = startPoint.getLeft();
|
||||
float spY = startPoint.getTop();
|
||||
|
||||
for(int x=0; x < xLengthOfD2; x++) {
|
||||
for(int y=0; y < yLengthOfD2; y++) {
|
||||
if(x != 0 || y != 0) {
|
||||
d2[x][y] = new PstnAndSize(spX + (cellWidth * (x * 1.0f)), spY + (cellHeight * (y * 1.0f)), cellSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return d2;
|
||||
}
|
||||
|
||||
public PstnAndSize[][] mergeLastImageCell(PstnAndSize[][] d2, String mergeDirection) {
|
||||
if(!mergeDirection.equals("up") && !mergeDirection.equals("left")) {
|
||||
throw new RuntimeException("PDF 파일 출력 중 오류가 발생하였습니다.");
|
||||
}
|
||||
|
||||
int xLengthOfD2 = d2.length;
|
||||
int yLengthOfD2 = d2[0].length;
|
||||
|
||||
int lastCellIndexX = xLengthOfD2-1;
|
||||
int lastCellIndexY = yLengthOfD2-1;
|
||||
|
||||
int mergeTargetCellIndexX = 0;
|
||||
int mergeTargetCellIndexY = 0;
|
||||
|
||||
if(mergeDirection.equals("up")) {
|
||||
mergeTargetCellIndexX = lastCellIndexX;
|
||||
mergeTargetCellIndexY = lastCellIndexY-1;
|
||||
}
|
||||
if(mergeDirection.equals("left")) {
|
||||
mergeTargetCellIndexX = lastCellIndexX-1;
|
||||
mergeTargetCellIndexY = lastCellIndexY;
|
||||
}
|
||||
|
||||
//병합대상셀
|
||||
if(mergeDirection.equals("up")) {
|
||||
d2[mergeTargetCellIndexX][mergeTargetCellIndexY] = (d2[mergeTargetCellIndexX][mergeTargetCellIndexY]).x2Height();
|
||||
}
|
||||
if(mergeDirection.equals("left")) {
|
||||
d2[mergeTargetCellIndexX][mergeTargetCellIndexY] = (d2[mergeTargetCellIndexX][mergeTargetCellIndexY]).x2Width();
|
||||
}
|
||||
|
||||
//마지막셀
|
||||
d2[lastCellIndexX][lastCellIndexY] = null;
|
||||
|
||||
return d2;
|
||||
}
|
||||
|
||||
/**
|
||||
* pdf에 봉합선을 넣는다.
|
||||
*/
|
||||
public void renderFoldLine(PDFWriter writer, String foldCode) {
|
||||
if(foldCode.equals("") && !foldCode.equals("01") && !foldCode.equals("02")) {
|
||||
return;
|
||||
}
|
||||
|
||||
float paperWidth = writer.getPaperSize().getWidth();
|
||||
|
||||
float partHeight;
|
||||
if(foldCode.equals("01")) {
|
||||
if(PDRectangle.A4.equals(writer.getPaperSize())) {
|
||||
partHeight = 99;
|
||||
} else {
|
||||
partHeight = 93;
|
||||
}
|
||||
} else {
|
||||
partHeight = 93;
|
||||
}
|
||||
|
||||
float margin = 0;
|
||||
if(foldCode.equals("02")) {
|
||||
margin = 18;
|
||||
}
|
||||
|
||||
float bottomFold = margin + partHeight; //하단접는곳
|
||||
float topFold = margin + (partHeight * 2); //상단접는곳
|
||||
|
||||
float bottomFold_pt = CmmnUtil.mmToPt(bottomFold);
|
||||
float topFold_pt = CmmnUtil.mmToPt(topFold);
|
||||
|
||||
try {
|
||||
writer.setLineDashPattern(new float[]{3,1}, 0);
|
||||
writer.moveTo(0, topFold_pt);
|
||||
writer.lineTo(paperWidth, topFold_pt);
|
||||
writer.stroke();
|
||||
writer.moveTo(0, bottomFold_pt);
|
||||
writer.lineTo(paperWidth, bottomFold_pt);
|
||||
writer.stroke();
|
||||
writer.setLineDashPattern(new float[]{}, 0);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("PDF 파일 출력 중 오류가 발생하였습니다."+e);
|
||||
}
|
||||
}
|
||||
|
||||
public float[] getPstnStng(DefaultOtptArtclStng prototypeStng, DataObject sggStng, String paperSeCd) {
|
||||
if(!sggStng.string("LEFT_PSTN").equals("") && !sggStng.string("TOP_PSTN").equals("")) {
|
||||
return new float[] {
|
||||
sggStng.number("LEFT_PSTN").floatValue(),
|
||||
sggStng.number("TOP_PSTN").floatValue()
|
||||
};
|
||||
} else {
|
||||
return new float[] {
|
||||
prototypeStng.getLeftPstn(paperSeCd),
|
||||
prototypeStng.getTopPstn(paperSeCd)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public PDType0Font getFontType(DefaultOtptArtclStng prototypeStng, DataObject sggStng, Map<String, PDType0Font> fontMap) {
|
||||
if(sggStng != null && !sggStng.isEmpty() && !sggStng.string("FONT_NM").equals("")) {
|
||||
return fontMap.get(sggStng.string("FONT_NM"));
|
||||
} else {
|
||||
return fontMap.get(prototypeStng.getFontNm());
|
||||
}
|
||||
}
|
||||
|
||||
public int getFontSize(DefaultOtptArtclStng prototypeStng, DataObject sggStng) {
|
||||
if(!sggStng.string("FONT_SZ").equals("")) {
|
||||
return sggStng.number("FONT_SZ").intValue();
|
||||
} else {
|
||||
return prototypeStng.getFontSz();
|
||||
}
|
||||
}
|
||||
|
||||
public RenderingMode getFontStyle(DefaultOtptArtclStng prototypeStng, DataObject sggStng) {
|
||||
if(!sggStng.string("FONT_STYLE").equals("")) {
|
||||
return RenderingMode.valueOf(sggStng.string("FONT_STYLE"));
|
||||
} else {
|
||||
return RenderingMode.valueOf(prototypeStng.getFontStyle());
|
||||
}
|
||||
}
|
||||
|
||||
public PDColor getFontColor(DefaultOtptArtclStng prototypeStng, DataObject sggStng) {
|
||||
if(!sggStng.string("FONT_COLR").equals("")) {
|
||||
return PDFColors.getColor(sggStng.string("FONT_COLR"));
|
||||
} else {
|
||||
return PDFColors.getColor(prototypeStng.getFontColr());
|
||||
}
|
||||
}
|
||||
|
||||
public float[] getSize(DefaultOtptArtclStng prototypeStng, DataObject sggStng) {
|
||||
if(!sggStng.string("WIDTH_SZ").equals("")) {
|
||||
return new float[] {
|
||||
sggStng.number("WIDTH_SZ").floatValue(),
|
||||
sggStng.number("HEIGHT_SZ").floatValue()
|
||||
};
|
||||
} else {
|
||||
return new float[] {
|
||||
prototypeStng.getWidthSz(),
|
||||
prototypeStng.getHeightSz()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public String getAlign(DefaultOtptArtclStng prototypeStng, DataObject sggStng) {
|
||||
if(!sggStng.string("TEXT_SORT").equals("")) {
|
||||
return sggStng.string("TEXT_SORT");
|
||||
} else {
|
||||
return prototypeStng.getTextSort();
|
||||
}
|
||||
}
|
||||
|
||||
public String getLineChgYn(DefaultOtptArtclStng prototypeStng, DataObject sggStng) {
|
||||
if(!sggStng.string("LINE_CHG_YN").equals("")) {
|
||||
return sggStng.string("LINE_CHG_YN");
|
||||
} else {
|
||||
return prototypeStng.getLineChgYn();
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, PDType0Font> getFontMap(PDFWriter writer) {
|
||||
try {
|
||||
|
||||
Map<String, PDType0Font> fontMap = Map.of(
|
||||
"gulim", writer.font("fonts/gulim.ttf"),
|
||||
"gulimche", writer.font("fonts/gulimche.ttf"),
|
||||
"batang", writer.font("fonts/batang.ttf"),
|
||||
"batangche", writer.font("fonts/batangche.ttf"),
|
||||
"dotum", writer.font("fonts/dotum.ttf"),
|
||||
"dotumche", writer.font("fonts/dotumche.ttf"),
|
||||
"gungsuh", writer.font("fonts/gungsuh.ttf"),
|
||||
"gungsuhche", writer.font("fonts/gungsuhche.ttf")
|
||||
);
|
||||
return fontMap;
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("글꼴 로드 오류"+e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,49 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstryQuery;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**단속 납부자 이력 관리 서비스 인터페이스.
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-08-16 leebj 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
public interface CrdnPayerHstryService {
|
||||
/**지정한 조건에 따라 단속 납부자 이력 목록을 조회하여 반환한다.
|
||||
* @param req 단속 납부자 이력 조회 조건
|
||||
* @return 단속 납부자 이력 목록
|
||||
*/
|
||||
List<DataObject> getCrdnPayerHstryList(CrdnPayerHstryQuery req);
|
||||
|
||||
/**지정한 조건에 따라 단속 납부자 이력 객체들을 반환한다.
|
||||
* @param req 단속 납부자 이력 조회 조건
|
||||
* @return 단속 납부자 이력 객체 목록
|
||||
*/
|
||||
List<CrdnPayerHstry> getCrdnPayerHstrys(CrdnPayerHstryQuery req);
|
||||
|
||||
/**단속 납부자 이력 정보를 등록한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
boolean create(CrdnPayerHstry crdnPayerHstry);
|
||||
|
||||
/**단속 납부자 이력 정보를 등록하고, 단속 대장의 납부자 정보를 수정한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
boolean createHstryUpdateCrdnPayer(CrdnPayerHstry crdnPayerHstry);
|
||||
}
|
||||
@ -1,60 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstryQuery;
|
||||
|
||||
/**단속 상태 이력 관리 서비스 인터페이스.
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-07-19 JoJH 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
public interface CrdnSttsHstryService {
|
||||
/**지정한 조건에 따라 단속 상태 이력 목록을 조회하여 반환한다.
|
||||
* @param req 단속 상태 이력 조회 조건
|
||||
* @return 단속 상태 이력 목록
|
||||
*/
|
||||
List<DataObject> getCrdnSttsHstryList(CrdnSttsHstryQuery req);
|
||||
|
||||
/**지정한 조건에 따라 단속 상태 이력 객체들을 반환한다.
|
||||
* @param req 단속 상태 이력 조회 조건
|
||||
* @return 단속 상태 이력 객체 목록
|
||||
*/
|
||||
List<DataObject> getCrdnSttsHstrys(CrdnSttsHstryQuery req);
|
||||
|
||||
/**단속 상태 이력 정보를 등록한다.
|
||||
* @param crdnSttsHstry 단속 상태 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
boolean create(CrdnSttsHstry crdnSttsHstry);
|
||||
|
||||
/**단속 상태 이력 정보를 수정한다.
|
||||
* @param crdnSttsHstry 단속 상태 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
boolean update(CrdnSttsHstry crdnSttsHstry);
|
||||
|
||||
/**단속 상태 이력 정보를 삭제한다.
|
||||
* @param crdnSttsHstry 단속 상태 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
boolean remove(CrdnSttsHstry crdnSttsHstry);
|
||||
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service;
|
||||
|
||||
public interface LinkService {
|
||||
String insertElectronicNoticeSndng(String filePath, String sggCd, String taskSeCd, String tmplatId);
|
||||
}
|
||||
@ -1,137 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service.bean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstryQuery;
|
||||
import cokr.xit.fims.cmmn.dao.CrdnPayerHstryMapper;
|
||||
import cokr.xit.foundation.component.AbstractBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**단속 납부자 이력 정보 관리 Bean
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-08-16 leebj 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Component("crdnPayerHstryBean")
|
||||
public class CrdnPayerHstryBean extends AbstractBean {
|
||||
|
||||
/** 단속 납부자 이력 정보 DAO */
|
||||
@Resource(name = "crdnPayerHstryMapper")
|
||||
private CrdnPayerHstryMapper crdnPayerHstryMapper;
|
||||
|
||||
/**지정한 조건에 따라 단속 납부자 이력 목록을 조회하여 반환한다.
|
||||
* @param req 단속 납부자 이력 조회 조건
|
||||
* @return 단속 납부자 이력 목록
|
||||
*/
|
||||
public List<DataObject> getCrdnPayerHstryList(CrdnPayerHstryQuery req) {
|
||||
return crdnPayerHstryMapper.selectCrdnPayerHstryList(req);
|
||||
}
|
||||
|
||||
/**지정한 조건에 따라 단속 납부자 이력 객체들을 반환한다.
|
||||
* @param req 단속 납부자 이력 조회 조건
|
||||
* @return 단속 납부자 이력 객체 목록
|
||||
*/
|
||||
public List<CrdnPayerHstry> getCrdnPayerHstrys(CrdnPayerHstryQuery req) {
|
||||
return crdnPayerHstryMapper.selectCrdnPayerHstrys(req);
|
||||
}
|
||||
|
||||
/**단속 납부자 이력 정보를 등록한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean createCrdnPayerHstry(CrdnPayerHstry crdnPayerHstry) {
|
||||
return crdnPayerHstryMapper.insertCrdnPayerHstry(crdnPayerHstry);
|
||||
}
|
||||
|
||||
/**단속 납부자 주소 이력 정보를 등록한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean createCrdnPayerAddrHstry(CrdnPayerHstry crdnPayerHstry) {
|
||||
return crdnPayerHstryMapper.insertCrdnPayerAddrHstry(crdnPayerHstry);
|
||||
}
|
||||
|
||||
/**단속 납부자 이력 정보를 등록하고, 단속 대장의 납부자 정보를 수정한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean updateCrdnPayer(CrdnPayerHstry crdnPayerHstry) {
|
||||
return crdnPayerHstryMapper.updateCrdnPayer(crdnPayerHstry);
|
||||
}
|
||||
|
||||
/**단속 납부자 이력 및 주소 이력 정보를 등록하고, 단속 대장의 납부자 정보를 수정한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean createHstryUpdateCrdnPayer(CrdnPayerHstry crdnPayerHstry) {
|
||||
boolean rtnScs = false; // DB 처리 결과
|
||||
|
||||
// 단속 납부자 이력 정보를 등록한다.
|
||||
rtnScs = createCrdnPayerHstry(crdnPayerHstry);
|
||||
if (!rtnScs) {
|
||||
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
// 단속 납부자 주소 이력 정보를 등록한다.
|
||||
rtnScs = createCrdnPayerAddrHstry(crdnPayerHstry);
|
||||
if (!rtnScs) {
|
||||
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
// 단속 대장의 납부자 ID, 주소 일련번호를 변경한다.
|
||||
rtnScs = updateCrdnPayer(crdnPayerHstry);
|
||||
if (!rtnScs) {
|
||||
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
return rtnScs;
|
||||
}
|
||||
|
||||
/**단속 납부자 주소 이력 정보를 등록하고, 단속 대장의 납부자 정보를 수정한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean createHstryUpdateCrdnPayerAddr(CrdnPayerHstry crdnPayerHstry) {
|
||||
boolean rtnScs = false; // DB 처리 결과
|
||||
|
||||
// 단속 납부자 주소 이력 정보를 등록한다.
|
||||
rtnScs = createCrdnPayerAddrHstry(crdnPayerHstry);
|
||||
if (!rtnScs) {
|
||||
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
// 단속 대장의 납부자 ID, 주소 일련번호를 변경한다.
|
||||
rtnScs = updateCrdnPayer(crdnPayerHstry);
|
||||
if (!rtnScs) {
|
||||
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
return rtnScs;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,50 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service.bean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstryQuery;
|
||||
import cokr.xit.fims.cmmn.service.CrdnPayerHstryService;
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**단속 납부자 이력 서비스 구현체.
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-08-16 leebj 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Service("crdnPayerHstryService")
|
||||
public class CrdnPayerHstryServiceBean extends AbstractServiceBean implements CrdnPayerHstryService {
|
||||
/** 단속 납부자 이력 정보 Bean */
|
||||
@Resource(name = "crdnPayerHstryBean")
|
||||
private CrdnPayerHstryBean crdnPayerHstryBean;
|
||||
|
||||
@Override
|
||||
public List<DataObject> getCrdnPayerHstryList(CrdnPayerHstryQuery req) {
|
||||
return crdnPayerHstryBean.getCrdnPayerHstryList(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CrdnPayerHstry> getCrdnPayerHstrys(CrdnPayerHstryQuery req) {
|
||||
return crdnPayerHstryBean.getCrdnPayerHstrys(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean create(CrdnPayerHstry crdnPayerHstry) {
|
||||
return crdnPayerHstryBean.createCrdnPayerHstry(crdnPayerHstry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createHstryUpdateCrdnPayer(CrdnPayerHstry crdnPayerHstry) {
|
||||
return crdnPayerHstryBean.createHstryUpdateCrdnPayer(crdnPayerHstry);
|
||||
}
|
||||
}
|
||||
@ -1,224 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service.bean;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstryQuery;
|
||||
import cokr.xit.fims.cmmn.dao.CrdnSttsHstryMapper;
|
||||
import cokr.xit.foundation.component.AbstractBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**단속 상태 이력 정보 관리 Bean
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-07-19 JoJH 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Component("crdnSttsHstryBean")
|
||||
public class CrdnSttsHstryBean extends AbstractBean {
|
||||
|
||||
/** 단속 상태 이력 정보 DAO */
|
||||
@Resource(name = "crdnSttsHstryMapper")
|
||||
private CrdnSttsHstryMapper crdnSttsHstryMapper;
|
||||
|
||||
/**지정한 조건에 따라 단속 상태 이력 목록을 조회하여 반환한다.
|
||||
* @param req 단속 상태 이력 조회 조건
|
||||
* @return 단속 상태 이력 목록
|
||||
*/
|
||||
public List<DataObject> getCrdnSttsHstryList(CrdnSttsHstryQuery req) {
|
||||
return crdnSttsHstryMapper.selectCrdnSttsHstryList(req);
|
||||
}
|
||||
|
||||
/**지정한 조건에 따라 단속 상태 이력 객체들을 반환한다.
|
||||
* @param req 단속 상태 이력 조회 조건
|
||||
* @return 단속 상태 이력 객체 목록
|
||||
*/
|
||||
public List<DataObject> getCrdnSttsHstrys(CrdnSttsHstryQuery req) {
|
||||
return crdnSttsHstryMapper.selectCrdnSttsHstrys(req);
|
||||
}
|
||||
|
||||
/**단속 ID에 따라 마지막 단속 상태 이력 객체를 반환한다.
|
||||
* @param crdnId 단속 ID
|
||||
* @return 단속 상태 이력 객체 목록
|
||||
*/
|
||||
public DataObject getCrdnSttsHstryInfo(String crdnId, String crdnSttsCd, String useYn) {
|
||||
return crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd, useYn);
|
||||
}
|
||||
|
||||
/**단속 상태 이력 정보를 등록한다.
|
||||
* @param crdnSttsHstry 단속 상태 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean create(CrdnSttsHstry crdnSttsHstry) {
|
||||
if (crdnSttsHstry.getUseYn() == null) {
|
||||
crdnSttsHstry.setUseYn("Y");
|
||||
}
|
||||
|
||||
return crdnSttsHstryMapper.insertCrdnSttsHstry(crdnSttsHstry) == 1;
|
||||
}
|
||||
|
||||
/**단속 상태 이력 정보를 수정한다.
|
||||
* @param crdnSttsHstry 단속 상태 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean update(CrdnSttsHstry crdnSttsHstry) {
|
||||
return crdnSttsHstryMapper.updateCrdnSttsHstry(crdnSttsHstry) == 1;
|
||||
}
|
||||
|
||||
/**단속 상태 이력 정보를 삭제한다. 단속ID로 입력되면 여러건이 삭제가 가능하다.
|
||||
* @param crdnSttsHstry 단속 상태 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean remove(CrdnSttsHstry crdnSttsHstry) {
|
||||
return crdnSttsHstryMapper.deleteCrdnSttsHstry(crdnSttsHstry) >= 1;
|
||||
}
|
||||
|
||||
/**단속 대장의 상태 정보를 수정한다.
|
||||
* @param excl 부과제외 대장
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean updateCrdn(CrdnSttsHstry crdnSttsHstry) {
|
||||
return crdnSttsHstryMapper.updateCrdnSttsCd(crdnSttsHstry) == 1;
|
||||
}
|
||||
|
||||
/**단속 상태 이력 정보를 등록하고, 단속 대장의 단속상태 정보를 수정한다.
|
||||
* @param crdnSttsHstry 단속 상태 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean createHstryUpdateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry) {
|
||||
// 변수 선언
|
||||
int rtnNocs = -1;
|
||||
|
||||
// 사용 여부
|
||||
if (crdnSttsHstry.getUseYn() == null) {
|
||||
crdnSttsHstry.setUseYn("Y");
|
||||
}
|
||||
// 단속 상태 변경 일시
|
||||
if (crdnSttsHstry.getCrdnSttsChgDt() == null || crdnSttsHstry.getCrdnSttsChgDt().equals("")) {
|
||||
// 현재 날짜 구하기
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
crdnSttsHstry.setCrdnSttsChgDt(dateFormat.format(System.currentTimeMillis()));
|
||||
}
|
||||
|
||||
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록한다.
|
||||
rtnNocs = crdnSttsHstryMapper.insertCrdnSttsHstry(crdnSttsHstry);
|
||||
if (rtnNocs != 1) {
|
||||
throw new RuntimeException("단속상태이력 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
// 단속(TB_CRDN) 대장을 수정한다.
|
||||
rtnNocs = crdnSttsHstryMapper.updateCrdnSttsCd(crdnSttsHstry);
|
||||
if (rtnNocs != 1) {
|
||||
throw new RuntimeException("단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**단속 상태 이력 정보를 삭제하고, 하고 단속 대장의 단속상태 정보를 수정한다.
|
||||
* @param crdnSttsHstry 단속 상태 이력
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean removeHstryUpdateCrdnSttsCd(String crdnId, String crdnSttsCd, String deltSttsCd, String deltEtcCn, boolean insertBfrSttsYn) {
|
||||
// 변수 선언
|
||||
int rtnNocs = -1;
|
||||
|
||||
// 단속 ID에 해당하는 단속상태코드의 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 조회 한다.
|
||||
DataObject crdnSttsHstryInfo = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd, "Y");
|
||||
|
||||
if (crdnSttsHstryInfo == null) {
|
||||
throw new RuntimeException("단속상태이력 자료가 존재하지 않습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
if (!crdnSttsCd.equals("")) {
|
||||
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
|
||||
crdnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID"));
|
||||
crdnSttsHstry.setUseYn("N");
|
||||
|
||||
rtnNocs = crdnSttsHstryMapper.updateCrdnSttsHstry(crdnSttsHstry);
|
||||
if (rtnNocs != 1) {
|
||||
throw new RuntimeException("단속상태이력 대장에 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
}
|
||||
|
||||
// 삭제 단속상태코드가 있다면.. 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록한다.
|
||||
if (!deltSttsCd.equals("")) {
|
||||
// 단속상태가 의견제출접수(31)가 아니면서, 삭제상태코드가 의견제출삭제(92)나 경찰서이첩삭제(97) 일 경우
|
||||
if (!crdnSttsCd.equals("31") && "92,97".contains(deltSttsCd)) {
|
||||
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장에서 의견제출접수(31) 이력을 조회후 사용여부를 미사용("N")으로 수정.
|
||||
crdnSttsHstryInfo = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, "31", "Y");
|
||||
|
||||
if (crdnSttsHstryInfo == null) {
|
||||
throw new RuntimeException("단속상태이력에 의견제출 접수 이력이 존재하지 않습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
CrdnSttsHstry opnnSttsHstry = new CrdnSttsHstry();
|
||||
opnnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID"));
|
||||
opnnSttsHstry.setUseYn("N");
|
||||
|
||||
rtnNocs = crdnSttsHstryMapper.updateCrdnSttsHstry(opnnSttsHstry);
|
||||
if (rtnNocs != 1) {
|
||||
throw new RuntimeException("단속상태이력 대장에 의견제출접수 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
}
|
||||
|
||||
CrdnSttsHstry deleteSttsHstry = new CrdnSttsHstry();
|
||||
deleteSttsHstry.setCrdnId(crdnSttsHstryInfo.string("CRDN_ID"));
|
||||
deleteSttsHstry.setBfrSttsCd(crdnSttsHstryInfo.string("CRDN_STTS_CD"));
|
||||
deleteSttsHstry.setBfrSttsChgDt(crdnSttsHstryInfo.string("REG_DT"));
|
||||
deleteSttsHstry.setCrdnSttsCd(deltSttsCd);
|
||||
deleteSttsHstry.setEtcCn(deltEtcCn);
|
||||
deleteSttsHstry.setUseYn("N");
|
||||
|
||||
rtnNocs = crdnSttsHstryMapper.insertCrdnSttsHstry(deleteSttsHstry);
|
||||
if (rtnNocs != 1) {
|
||||
throw new RuntimeException("삭제 단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
}
|
||||
|
||||
if (insertBfrSttsYn) {
|
||||
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록한다.
|
||||
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
|
||||
crdnSttsHstry.setCrdnId(crdnSttsHstryInfo.string("CRDN_ID"));
|
||||
crdnSttsHstry.setBfrSttsCd(deltSttsCd);
|
||||
crdnSttsHstry.setBfrSttsChgDt(crdnSttsHstry.getCreatedAt());
|
||||
crdnSttsHstry.setCrdnSttsCd(crdnSttsHstryInfo.string("BFR_STTS_CD"));
|
||||
crdnSttsHstry.setCrdnSttsChgDt(crdnSttsHstryInfo.string("BFR_STTS_CHG_DT"));
|
||||
crdnSttsHstry.setUseYn("Y");
|
||||
|
||||
boolean rtnScs = createHstryUpdateCrdnSttsCd(crdnSttsHstry);
|
||||
if (!rtnScs) {
|
||||
throw new RuntimeException("단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,58 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service.bean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstryQuery;
|
||||
import cokr.xit.fims.cmmn.service.CrdnSttsHstryService;
|
||||
|
||||
/**단속 상태 이력 서비스 구현체.
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-07-19 JoJH 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Service("crdnSttsHstryService")
|
||||
public class CrdnSttsHstryServiceBean extends AbstractServiceBean implements CrdnSttsHstryService {
|
||||
|
||||
/** 단속 상태 이력 정보 Bean */
|
||||
@Resource(name = "crdnSttsHstryBean")
|
||||
private CrdnSttsHstryBean crdnSttsHstryBean;
|
||||
|
||||
@Override
|
||||
public List<DataObject> getCrdnSttsHstryList(CrdnSttsHstryQuery req) {
|
||||
return crdnSttsHstryBean.getCrdnSttsHstryList(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DataObject> getCrdnSttsHstrys(CrdnSttsHstryQuery req) {
|
||||
return crdnSttsHstryBean.getCrdnSttsHstrys(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean create(CrdnSttsHstry crdnSttsHstry) {
|
||||
return crdnSttsHstryBean.create(crdnSttsHstry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(CrdnSttsHstry crdnSttsHstry) {
|
||||
return crdnSttsHstryBean.update(crdnSttsHstry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove(CrdnSttsHstry crdnSttsHstry) {
|
||||
return crdnSttsHstryBean.remove(crdnSttsHstry);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,129 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service.bean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cokr.xit.fims.cmmn.ExtrArtclStng;
|
||||
import cokr.xit.fims.cmmn.ExtrForm;
|
||||
import cokr.xit.fims.cmmn.ExtrStngQuery;
|
||||
import cokr.xit.fims.cmmn.PredefinedSet;
|
||||
import cokr.xit.fims.cmmn.dao.ExtrStngMapper;
|
||||
import cokr.xit.fims.cmmn.pdf.extraction.format.ElectronicNotice;
|
||||
import cokr.xit.fims.cmmn.pdf.extraction.format.PDFExtractFormat;
|
||||
import cokr.xit.foundation.component.AbstractBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Component("extrStngBean")
|
||||
public class ExtrStngBean extends AbstractBean {
|
||||
|
||||
@Resource(name = "extrStngMapper")
|
||||
private ExtrStngMapper extrStngMapper;
|
||||
|
||||
/**지정한 조건에 따라 자료 추출 템플릿 문구를 조회한다.
|
||||
* @param query 조회 조건
|
||||
* @return 출력물 전역 설정
|
||||
*/
|
||||
public DataObject getExtrBscStng(ExtrStngQuery extrStngQuery) {
|
||||
return extrStngMapper.selectExtrBscStng(extrStngQuery);
|
||||
}
|
||||
|
||||
|
||||
/**지정한 조건에 따라 추출요소별 설정을 조회한다.
|
||||
* @param query 조회 조건
|
||||
* @return 출력 요소 설정
|
||||
*/
|
||||
public Map<String, Object> getExtrArtclStngMap(ExtrStngQuery query){
|
||||
Map<String,Object> extrStngMap = new HashMap<String,Object>();
|
||||
|
||||
PDFExtractFormat pdfFormat = null;
|
||||
pdfFormat = new ElectronicNotice();
|
||||
|
||||
List<DataObject> extrArtclStngList = extrStngMapper.selectExtrArtclStngList(query);
|
||||
if(extrArtclStngList == null) {
|
||||
extrArtclStngList = new ArrayList<DataObject>();
|
||||
}
|
||||
pdfFormat.appendPredefinedYn(extrArtclStngList);
|
||||
|
||||
List<PredefinedSet> predefinedSetList = pdfFormat.getPredefinedSetList();
|
||||
|
||||
List<DataObject> predefinedDataList = extrArtclStngList.stream().filter(item -> item.string("PREDEFINED_YN").equals("Y")).toList();
|
||||
List<DataObject> customDataList = extrArtclStngList.stream().filter(item -> item.string("PREDEFINED_YN").equals("N")).toList();
|
||||
|
||||
Map<String, Object> predefined = new HashMap<String,Object>();
|
||||
predefined.put("dataList", predefinedDataList);
|
||||
|
||||
Map<String, Object> custom = new HashMap<String,Object>();
|
||||
custom.put("dataList", customDataList);
|
||||
|
||||
extrStngMap.put("predefinedSetList", predefinedSetList);
|
||||
extrStngMap.put("predefined", predefined);
|
||||
extrStngMap.put("custom", custom);
|
||||
return extrStngMap;
|
||||
}
|
||||
|
||||
|
||||
public boolean saveExtrBscStng(ExtrForm extrForm) {
|
||||
|
||||
boolean result = false;
|
||||
String userId = currentUser().getId();
|
||||
|
||||
if(ifEmpty(extrForm.getExtrBscId(), ()-> "").equals("")) {
|
||||
extrForm.setCreatedBy(userId);
|
||||
result = extrStngMapper.insertBscStng(extrForm) == 1 ? true : false;
|
||||
|
||||
} else {
|
||||
extrForm.setModifiedBy(userId);
|
||||
result = extrStngMapper.updateBscStng(extrForm) == 1 ? true : false;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public boolean saveExtrArtclStng(ExtrForm extrForm) {
|
||||
try {
|
||||
|
||||
String userId = currentUser().getId();
|
||||
List<ExtrArtclStng> extrArtclStngList = extrForm.getExtrArtclStngList();
|
||||
|
||||
List<String> updateKeyList = new ArrayList<String>();
|
||||
List<ExtrArtclStng> insertList = new ArrayList<ExtrArtclStng>();
|
||||
|
||||
if(extrArtclStngList != null && !extrArtclStngList.isEmpty()) {
|
||||
|
||||
List<ExtrArtclStng> updateList = extrArtclStngList.stream().filter(item -> !ifEmpty(item.getExtrFormId(), () -> "").equals("")).toList();
|
||||
if(!updateList.isEmpty()) {
|
||||
for(ExtrArtclStng update : updateList) {
|
||||
update.setModifiedBy(userId);
|
||||
extrStngMapper.updateArtclStng(update);
|
||||
updateKeyList.add(update.getExtrFormId());
|
||||
}
|
||||
}
|
||||
insertList = extrArtclStngList.stream().filter(item -> ifEmpty(item.getExtrFormId(), () -> "").equals("")).toList();
|
||||
}
|
||||
|
||||
if(!updateKeyList.isEmpty()) {
|
||||
extrForm.setExtrFormIDs(updateKeyList.toArray(new String[updateKeyList.size()]));
|
||||
}
|
||||
extrForm.setModifiedBy(userId);
|
||||
extrStngMapper.deleteArtclStng(extrForm);
|
||||
|
||||
if(!insertList.isEmpty()) {
|
||||
for(ExtrArtclStng insert : insertList) {
|
||||
insert.setCreatedBy(userId);
|
||||
extrStngMapper.insertArtclStng(insert);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("[F]추출 설정 저장 중 오류가 발생하였습니다.");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -1,75 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service.bean;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cokr.xit.fims.cmmn.dao.LinkMapper;
|
||||
import cokr.xit.foundation.component.AbstractBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Component("linkBean")
|
||||
public class LinkBean extends AbstractBean {
|
||||
|
||||
@Resource(name = "linkMapper")
|
||||
private LinkMapper linkMapper;
|
||||
|
||||
public boolean insertElectronicNoticeSndng(DataObject masterInfo, List<DataObject> detailInfos) {
|
||||
|
||||
int effected = linkMapper.insertElectronicNoticeSndngMaster(masterInfo);
|
||||
if(effected != 1) {
|
||||
throw new RuntimeException("발송 마스터 등록 오류");
|
||||
}
|
||||
|
||||
effected = 0;
|
||||
for(int i=0; i < detailInfos.size(); i++) {
|
||||
detailInfos.get(i).set("unitySndngMastrId", masterInfo.string("unitySndngMastrId"));
|
||||
effected = linkMapper.insertElectronicNoticeSndngDetail(detailInfos.get(i));
|
||||
if(effected != 1) {
|
||||
throw new RuntimeException("발송 상세 등록 오류");
|
||||
}
|
||||
}
|
||||
|
||||
if(effected != 1) {
|
||||
throw new RuntimeException("발송 상세 등록 오류");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public String makeJson(String jsonTemplate, Map<String, String> extractedText, List<String> crdnPhotoBase64) {
|
||||
String result = jsonTemplate;
|
||||
|
||||
Iterator<String> it = extractedText.keySet().iterator();
|
||||
while(it.hasNext()) {
|
||||
String key = it.next();
|
||||
String value = extractedText.get(key);
|
||||
|
||||
result = result.replaceAll("^##"+key+"##$", value);
|
||||
}
|
||||
|
||||
|
||||
int i=0;
|
||||
if(result.contains("##photo0##")) {
|
||||
boolean flag = true;
|
||||
while(flag) {
|
||||
String value = "";
|
||||
if((i+1) <= crdnPhotoBase64.size()) {
|
||||
value = crdnPhotoBase64.get(i);
|
||||
}
|
||||
result = result.replaceAll("^##photo"+i+"##$", value);
|
||||
|
||||
i++;
|
||||
if(!result.contains("##photo"+i+"##")) {
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -1,82 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service.bean;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import cokr.xit.fims.cmmn.ExtrStngQuery;
|
||||
import cokr.xit.fims.cmmn.dao.ExtrStngMapper;
|
||||
import cokr.xit.fims.cmmn.pdf.extraction.Extraction;
|
||||
import cokr.xit.fims.cmmn.pdf.extraction.PDFExtractionUtil;
|
||||
import cokr.xit.fims.cmmn.service.LinkService;
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Service("linkService")
|
||||
public class LinkServiceBean extends AbstractServiceBean implements LinkService {
|
||||
|
||||
@Resource(name = "linkBean")
|
||||
private LinkBean linkBean;
|
||||
|
||||
@Resource(name = "extrStngMapper")
|
||||
private ExtrStngMapper extrStngMapper;
|
||||
|
||||
@Override
|
||||
public String insertElectronicNoticeSndng(String filePath, String sggCd, String taskSeCd, String tmplatId) {
|
||||
|
||||
ExtrStngQuery extrStngQuery = new ExtrStngQuery();
|
||||
extrStngQuery.setSggCd(sggCd).setTaskSeCd(taskSeCd);
|
||||
extrStngQuery.setTmplatId(tmplatId);
|
||||
List<DataObject> extractStngs = extrStngMapper.selectExtrArtclStngList(extrStngQuery);
|
||||
|
||||
List<Extraction> extractionInfos = PDFExtractionUtil.extract(filePath, extractStngs);
|
||||
|
||||
|
||||
for(int i=0; i < extractionInfos.size(); i++) {
|
||||
|
||||
Map<String, String> extractedText = extractionInfos.get(i).getTextItem();
|
||||
List<String> crdnPhotoBase64 = extractionInfos.get(i).getBase64List();
|
||||
|
||||
//마스터
|
||||
DataObject masterInfo = new DataObject();
|
||||
masterInfo.set("signguCode", sggCd);
|
||||
masterInfo.set("ffnlgCode", taskSeCd);
|
||||
masterInfo.set("tmplatId", tmplatId);
|
||||
masterInfo.set("sndngCo", extractionInfos.size());
|
||||
masterInfo.set("sndngDt", extractedText.get("sndngDt")); //발송일시
|
||||
masterInfo.set("closDt", extractedText.get("closDt")); //마감일시
|
||||
//디테일
|
||||
DataObject detailInfo = new DataObject();
|
||||
detailInfo.set("signguCode", sggCd);
|
||||
detailInfo.set("ffnlgCode", taskSeCd);
|
||||
detailInfo.set("vhcleNo", extractedText.get("vhcleNo"));
|
||||
detailInfo.set("ihidnum", extractedText.get("ihidnum"));
|
||||
detailInfo.set("moblphonNo", extractedText.get("moblphonNo"));
|
||||
detailInfo.set("nm", extractedText.get("nm"));
|
||||
detailInfo.set("adres", extractedText.get("adres"));
|
||||
detailInfo.set("detailAdres", extractedText.get("detailAdres"));
|
||||
detailInfo.set("zip", extractedText.get("zip"));
|
||||
|
||||
//템플릿메시지데이터
|
||||
detailInfo.set("tmpltMsgData", "");
|
||||
|
||||
//모바일페이지
|
||||
String jsonTemplate = extrStngMapper.selectExtrBscStng(extrStngQuery).string("MOBILE_PAGE_TMPLT");
|
||||
String json = linkBean.makeJson(jsonTemplate, extractedText, crdnPhotoBase64);
|
||||
detailInfo.set("mobilePageCn", json);
|
||||
|
||||
//
|
||||
detailInfo.set("mainCode", "");
|
||||
//
|
||||
detailInfo.set("useInsttIdntfcId", "");
|
||||
|
||||
//테이블 인서트
|
||||
linkBean.insertElectronicNoticeSndng(masterInfo, List.of(detailInfo));
|
||||
}
|
||||
|
||||
return "[S]";
|
||||
}
|
||||
}
|
||||
@ -1,146 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service.bean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cokr.xit.fims.cmmn.OtptArtclStng;
|
||||
import cokr.xit.fims.cmmn.OtptForm;
|
||||
import cokr.xit.fims.cmmn.OtptStngQuery;
|
||||
import cokr.xit.fims.cmmn.dao.OtptStngMapper;
|
||||
import cokr.xit.fims.cmmn.pdf.print.DefaultOtptArtclStng;
|
||||
import cokr.xit.fims.cmmn.pdf.print.format.Advntce;
|
||||
import cokr.xit.fims.cmmn.pdf.print.format.Nht;
|
||||
import cokr.xit.fims.cmmn.pdf.print.format.PDFPrintFormat;
|
||||
import cokr.xit.foundation.component.AbstractBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Component("otptStngBean")
|
||||
public class OtptStngBean extends AbstractBean {
|
||||
|
||||
@Resource(name = "otptStngMapper")
|
||||
private OtptStngMapper otptStngMapper;
|
||||
|
||||
/**지정한 조건에 따라 출력물 전역 설정을 조회한다.
|
||||
* @param query 조회 조건
|
||||
* @return 출력물 전역 설정
|
||||
*/
|
||||
public DataObject getOtptBscStng(OtptStngQuery otptStngQuery) {
|
||||
return otptStngMapper.selectOtptBscStng(otptStngQuery);
|
||||
}
|
||||
|
||||
/**지정한 조건에 따라 출력요소별 설정을 조회한다.
|
||||
* @param query 조회 조건
|
||||
* @return 출력 요소 설정
|
||||
*/
|
||||
public Map<String, Object> getOtptArtclStngMap(OtptStngQuery query){
|
||||
Map<String,Object> otptStngMap = new HashMap<String,Object>();
|
||||
|
||||
PDFPrintFormat pdfFormat = null;
|
||||
switch(query.getSndngSeCd()) {
|
||||
case "02" :
|
||||
pdfFormat = new Advntce();
|
||||
break;
|
||||
case "03" :
|
||||
pdfFormat = new Nht();
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
List<DataObject> otptArtclStngList = otptStngMapper.selectOtptArtclStngList(query);
|
||||
if(otptArtclStngList == null) {
|
||||
otptArtclStngList = new ArrayList<DataObject>();
|
||||
}
|
||||
|
||||
pdfFormat.appendOtptAttribute(otptArtclStngList);
|
||||
|
||||
List<DefaultOtptArtclStng> uniquePrototypeList = pdfFormat.getPrototypeStngs(true);
|
||||
List<DefaultOtptArtclStng> multiplePrototypeList = pdfFormat.getPrototypeStngs(false);
|
||||
|
||||
List<DataObject> uniqueDataList = otptArtclStngList.stream().filter(item -> item.string("UNIQUE_YN").equals("Y")).toList();
|
||||
List<DataObject> multipleDataList = otptArtclStngList.stream().filter(item -> item.string("UNIQUE_YN").equals("N")).toList();
|
||||
|
||||
Map<String, Object> unique = new HashMap<String,Object>();
|
||||
unique.put("prototypeList", uniquePrototypeList);
|
||||
unique.put("dataList", uniqueDataList);
|
||||
|
||||
Map<String, Object> multiple = new HashMap<String,Object>();
|
||||
multiple.put("prototypeList", multiplePrototypeList);
|
||||
multiple.put("dataList", multipleDataList);
|
||||
|
||||
|
||||
otptStngMap.put("unique", unique);
|
||||
otptStngMap.put("multiple", multiple);
|
||||
return otptStngMap;
|
||||
}
|
||||
|
||||
public boolean saveOtptBscStng(OtptForm otptForm) {
|
||||
|
||||
boolean result = false;
|
||||
String userId = currentUser().getId();
|
||||
|
||||
if(ifEmpty(otptForm.getOtptBscId(), ()-> "").equals("")) {
|
||||
otptForm.setCreatedBy(userId);
|
||||
result = otptStngMapper.insertBscStng(otptForm) == 1 ? true : false;
|
||||
|
||||
} else {
|
||||
otptForm.setModifiedBy(userId);
|
||||
result = otptStngMapper.updateBscStng(otptForm) == 1 ? true : false;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/** 출력 요소 설정을 저장 및 삭제 처리한다.
|
||||
* @param otptForm 출력 설정
|
||||
* @return 저장여부
|
||||
*/
|
||||
public boolean saveOtptArtclStng(OtptForm otptForm) {
|
||||
try {
|
||||
|
||||
String userId = currentUser().getId();
|
||||
List<OtptArtclStng> otptArtclStngList = otptForm.getOtptArtclStngList();
|
||||
|
||||
List<String> updateKeyList = new ArrayList<String>();
|
||||
List<OtptArtclStng> insertList = new ArrayList<OtptArtclStng>();
|
||||
|
||||
if(otptArtclStngList != null && !otptArtclStngList.isEmpty()) {
|
||||
|
||||
List<OtptArtclStng> updateList = otptArtclStngList.stream().filter(item -> !ifEmpty(item.getOtptFormId(), () -> "").equals("")).toList();
|
||||
if(!updateList.isEmpty()) {
|
||||
for(OtptArtclStng update : updateList) {
|
||||
update.setModifiedBy(userId);
|
||||
otptStngMapper.updateArtclStng(update);
|
||||
updateKeyList.add(update.getOtptFormId());
|
||||
}
|
||||
}
|
||||
insertList = otptArtclStngList.stream().filter(item -> ifEmpty(item.getOtptFormId(), () -> "").equals("")).toList();
|
||||
}
|
||||
|
||||
if(!updateKeyList.isEmpty()) {
|
||||
otptForm.setOtptFormIDs(updateKeyList.toArray(new String[updateKeyList.size()]));
|
||||
}
|
||||
otptForm.setModifiedBy(userId);
|
||||
otptStngMapper.deleteArtclStng(otptForm);
|
||||
|
||||
if(!insertList.isEmpty()) {
|
||||
for(OtptArtclStng insert : insertList) {
|
||||
insert.setCreatedBy(userId);
|
||||
otptStngMapper.insertArtclStng(insert);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("출력 설정 저장 중 오류가 발생하였습니다.");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,111 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.service.bean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cokr.xit.fims.cmmn.OutsourcingArtclStng;
|
||||
import cokr.xit.fims.cmmn.OutsourcingFileMaker;
|
||||
import cokr.xit.fims.cmmn.OutsourcingForm;
|
||||
import cokr.xit.fims.cmmn.OutsourcingStngQuery;
|
||||
import cokr.xit.fims.cmmn.PredefinedSet;
|
||||
import cokr.xit.fims.cmmn.dao.OutsourcingStngMapper;
|
||||
import cokr.xit.foundation.component.AbstractBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Component("outsourcingStngBean")
|
||||
public class OutsourcingStngBean extends AbstractBean {
|
||||
|
||||
@Resource(name = "outsourcingStngMapper")
|
||||
private OutsourcingStngMapper outsourcingStngMapper;
|
||||
|
||||
|
||||
public List<DataObject> getArtclStngList(OutsourcingStngQuery query){
|
||||
return outsourcingStngMapper.selectArtclStngList(query);
|
||||
}
|
||||
|
||||
|
||||
public Map<String, Object> getArtclStngMap(OutsourcingStngQuery query) {
|
||||
Map<String,Object> outsourcingStngMap = new HashMap<String,Object>();
|
||||
|
||||
List<PredefinedSet> predefinedSetList = OutsourcingFileMaker.predifinedSetForOutsourcing();
|
||||
outsourcingStngMap.put("predefinedSetList", OutsourcingFileMaker.predifinedSetForOutsourcing());
|
||||
|
||||
//
|
||||
List<DataObject> outsourcingArtclStngList = outsourcingStngMapper.selectArtclStngList(query);
|
||||
if(outsourcingArtclStngList == null) {
|
||||
outsourcingArtclStngList = new ArrayList<DataObject>();
|
||||
}
|
||||
|
||||
for(DataObject outsourcingArtclStng : outsourcingArtclStngList) {
|
||||
String outsourcingArtclNm = (String) outsourcingArtclStng.get("ARTCL_NM");
|
||||
|
||||
Optional<PredefinedSet> optional = predefinedSetList.stream()
|
||||
.filter(item -> item.getArtclNm().equals(outsourcingArtclNm)).findFirst();
|
||||
|
||||
if(optional.isEmpty()) {
|
||||
outsourcingArtclStng.set("DSCRP", outsourcingArtclStng.get("ARTCL_NM"));
|
||||
} else {
|
||||
PredefinedSet predefinedSet = optional.get();
|
||||
outsourcingArtclStng.set("DSCRP", predefinedSet.getArtclDscrp());
|
||||
}
|
||||
|
||||
}
|
||||
outsourcingStngMap.put("dataList", outsourcingArtclStngList);
|
||||
|
||||
|
||||
|
||||
return outsourcingStngMap;
|
||||
}
|
||||
|
||||
/** 출력 요소 설정을 저장 및 삭제 처리한다.
|
||||
* @param outsourcingForm 출력 설정
|
||||
* @return 저장여부
|
||||
*/
|
||||
public boolean saveOutsourcingArtclStng(OutsourcingForm outsourcingForm) {
|
||||
try {
|
||||
|
||||
String userId = currentUser().getId();
|
||||
List<OutsourcingArtclStng> outsourcingArtclStngList = outsourcingForm.getZipArtclStngList();
|
||||
|
||||
List<String> updateKeyList = new ArrayList<String>();
|
||||
List<OutsourcingArtclStng> insertList = new ArrayList<OutsourcingArtclStng>();
|
||||
|
||||
if(outsourcingArtclStngList != null && !outsourcingArtclStngList.isEmpty()) {
|
||||
|
||||
List<OutsourcingArtclStng> updateList = outsourcingArtclStngList.stream().filter(item -> !ifEmpty(item.getOutsourcingFormId(), () -> "").equals("")).toList();
|
||||
if(!updateList.isEmpty()) {
|
||||
for(OutsourcingArtclStng update : updateList) {
|
||||
update.setModifiedBy(userId);
|
||||
outsourcingStngMapper.updateArtclStng(update);
|
||||
updateKeyList.add(update.getOutsourcingFormId());
|
||||
}
|
||||
}
|
||||
insertList = outsourcingArtclStngList.stream().filter(item -> ifEmpty(item.getOutsourcingFormId(), () -> "").equals("")).toList();
|
||||
}
|
||||
|
||||
if(!updateKeyList.isEmpty()) {
|
||||
outsourcingForm.setOutsourcingFormIDs(updateKeyList.toArray(new String[updateKeyList.size()]));
|
||||
}
|
||||
outsourcingForm.setModifiedBy(userId);
|
||||
outsourcingStngMapper.deleteArtclStng(outsourcingForm);
|
||||
|
||||
if(!insertList.isEmpty()) {
|
||||
for(OutsourcingArtclStng insert : insertList) {
|
||||
insert.setCreatedBy(userId);
|
||||
outsourcingStngMapper.insertArtclStng(insert);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("출력 설정 저장 중 오류가 발생하였습니다.");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -1,75 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.web;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstryQuery;
|
||||
import cokr.xit.fims.cmmn.service.CrdnPayerHstryService;
|
||||
|
||||
/**단속 납부자 이력 서비스의 웹 컨트롤러
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-08-16 leebj 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@RequestMapping(name = "단속 납부자 이력", value = "/crdnPayerHstry")
|
||||
public class CrdnPayerHstryController extends AbstractController {
|
||||
/**단속 납부자 이력 서비스*/
|
||||
@Resource(name = "crdnPayerHstryService")
|
||||
private CrdnPayerHstryService crdnPayerHstryService;
|
||||
|
||||
/**단속 납부자 이력 관리 메인화면(crdnPayerHstry/crdnPayerHstry-main)을 연다.
|
||||
* 조건없는 {@link #getCrdnPayerHstryList(CrdnPayerHstryQuery) 단속 납부자 이력 조회 결과}를 포함시킨다.
|
||||
* @return /crdnPayerHstry/crdnPayerHstry-main
|
||||
*/
|
||||
@RequestMapping(name = "단속 납부자 이력 메인", value = "/main.do")
|
||||
public ModelAndView main() {
|
||||
ModelAndView mav = getCrdnPayerHstryList(new CrdnPayerHstryQuery().setPageNum(1));
|
||||
mav.setViewName("/crdnPayerHstry/crdnPayerHstry-main");
|
||||
return mav.addObject("crdnPayerHstryList", toJson(mav.getModel().get("crdnPayerHstryList")));
|
||||
}
|
||||
|
||||
/**단속 납부자 이력 목록을 조회하여 반환한다.<br />
|
||||
* {@link CrdnPayerHstryService#getCrdnPayerHstryList(CrdnPayerHstryQuery)} 참고
|
||||
* @param req 단속 납부자 이력 조회 조건
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "crdnPayerHstryList": [단속 납부자 이력 목록]
|
||||
* "crdnPayerHstryStart": 단속 납부자 이력 목록 시작 인덱스
|
||||
* "crdnPayerHstryFetch": 한 번에 가져오는 단속 납부자 이력 목록 수
|
||||
* "crdnPayerHstryTotal": 조회 결과 찾은 전체 단속 납부자 이력 수
|
||||
* }</code></pre>
|
||||
*/
|
||||
@RequestMapping(name = "단속 납부자 이력 조회", value = "/list.do")
|
||||
public ModelAndView getCrdnPayerHstryList(CrdnPayerHstryQuery req) {
|
||||
List<?> result = crdnPayerHstryService.getCrdnPayerHstryList(setFetchSize(req));
|
||||
return setCollectionInfo(new ModelAndView("jsonView"), result, "crdnPayerHstry");
|
||||
}
|
||||
|
||||
/**단속 납부자 이력를 등록한다.
|
||||
* @param crdnPayerHstry 단속 납부자 이력 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 등록되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "단속 납부자 이력 등록", value = "/create.do")
|
||||
public ModelAndView create(CrdnPayerHstry crdnPayerHstry) {
|
||||
boolean saved = crdnPayerHstryService.create(crdnPayerHstry);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,104 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.web;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstryQuery;
|
||||
import cokr.xit.fims.cmmn.service.CrdnSttsHstryService;
|
||||
|
||||
/**단속 상태 이력 서비스의 웹 컨트롤러
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-07-19 JoJH 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@RequestMapping(name = "단속 상태 이력", value = "/crdnSttsHstry")
|
||||
public class CrdnSttsHstryController extends AbstractController {
|
||||
|
||||
/**단속 상태 이력 서비스*/
|
||||
@Resource(name = "crdnSttsHstryService")
|
||||
private CrdnSttsHstryService crdnSttsHstryService;
|
||||
|
||||
/**단속 상태 이력 관리 메인화면(crdnSttsHstry/crdnSttsHstry-main)을 연다.
|
||||
* 조건없는 {@link #getCrdnSttsHstryList(CrdnSttsHstryQuery) 단속 상태 이력 조회 결과}를 포함시킨다.
|
||||
* @return /crdnSttsHstry/crdnSttsHstry-main
|
||||
*/
|
||||
@RequestMapping(name = "단속 상태 이력 메인", value = "/main.do")
|
||||
public ModelAndView main() {
|
||||
ModelAndView mav = getCrdnSttsHstryList(new CrdnSttsHstryQuery().setPageNum(1));
|
||||
mav.setViewName("/crdnSttsHstry/crdnSttsHstry-main");
|
||||
return mav.addObject("crdnSttsHstryList", toJson(mav.getModel().get("crdnSttsHstryList")));
|
||||
}
|
||||
|
||||
/**단속 상태 이력 목록을 조회하여 반환한다.<br />
|
||||
* {@link CrdnSttsHstryService#getCrdnSttsHstryList(CrdnSttsHstryQuery)} 참고
|
||||
* @param req 단속 상태 이력 조회 조건
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "crdnSttsHstryList": [단속 상태 이력 목록]
|
||||
* "crdnSttsHstryStart": 단속 상태 이력 목록 시작 인덱스
|
||||
* "crdnSttsHstryFetch": 한 번에 가져오는 단속 상태 이력 목록 수
|
||||
* "crdnSttsHstryTotal": 조회 결과 찾은 전체 단속 상태 이력 수
|
||||
* }</code></pre>
|
||||
*/
|
||||
@RequestMapping(name = "단속 상태 이력 조회", value = "/list.do")
|
||||
public ModelAndView getCrdnSttsHstryList(CrdnSttsHstryQuery req) {
|
||||
List<?> result = crdnSttsHstryService.getCrdnSttsHstryList(setFetchSize(req));
|
||||
return setCollectionInfo(new ModelAndView("jsonView"), result, "crdnSttsHstry");
|
||||
}
|
||||
|
||||
/**단속 상태 이력를 등록한다.
|
||||
* @param crdnSttsHstry 단속 상태 이력 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 등록되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "단속 상태 이력 등록", value = "/create.do")
|
||||
public ModelAndView create(CrdnSttsHstry crdnSttsHstry) {
|
||||
boolean saved = crdnSttsHstryService.create(crdnSttsHstry);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**단속 상태 이력 정보를 수정한다.
|
||||
* @param crdnSttsHstry 단속 상태 이력 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 수정되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "단속 상태 이력 수정", value = "/update.do")
|
||||
public ModelAndView update(CrdnSttsHstry crdnSttsHstry) {
|
||||
boolean saved = crdnSttsHstryService.update(crdnSttsHstry);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**지정한 단속 상태 이력를 제거한다.
|
||||
* @param crdnSttsHstryIDs 단속 상태 이력 아이디
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "affected": 저장된 정보수
|
||||
* "saved": 저장되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "단속 상태 이력 제거", value = "/remove.do")
|
||||
public ModelAndView remove(CrdnSttsHstry crdnSttsHstry) {
|
||||
boolean saved = crdnSttsHstryService.remove(crdnSttsHstry);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
}
|
||||
@ -1,40 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.web;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import cokr.xit.base.web.ApplicationController;
|
||||
import cokr.xit.fims.crdn.service.ImportService;
|
||||
|
||||
@Controller("fimsInterface")
|
||||
@RequestMapping(value = "/intf/fims", name = "연계")
|
||||
public class InterfaceController extends ApplicationController {
|
||||
@Resource(name = "importService")
|
||||
private ImportService importService;
|
||||
|
||||
/**국민 신문고에서 받은 민원을 등록했음을 통보한다.
|
||||
* @param interfaceSequences 민원의 인터페이스 키 목록
|
||||
* @return jsonView
|
||||
* <ul><li>received - 통보 수신 여부(true || false)</li>
|
||||
* <li>saved - 저장 여부(true || false)</li>
|
||||
* </ul>
|
||||
*/
|
||||
@PostMapping(value = "/smg/petition/receive.do", name = "국민 신문고 민원 수신")
|
||||
public ModelAndView importSmgPetition(@RequestBody List<String> intfSeqs) {
|
||||
boolean empty = isEmpty(intfSeqs);
|
||||
log().debug("interfaceSequences received: {}", empty ? "none" : String.join(", ", intfSeqs));
|
||||
|
||||
int affected = importService.createCrdns(intfSeqs);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("received", !empty)
|
||||
.addObject("affected", affected)
|
||||
.addObject("saved", true);
|
||||
}
|
||||
}
|
||||
@ -1,62 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.web;
|
||||
|
||||
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.fims.base.service.bean.OgdpBean;
|
||||
import cokr.xit.fims.cmmn.dao.ExtrStngMapper;
|
||||
import cokr.xit.fims.cmmn.service.LinkService;
|
||||
import cokr.xit.fims.cmmn.service.bean.LinkBean;
|
||||
import cokr.xit.foundation.UserInfo;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
|
||||
@Controller
|
||||
@RequestMapping(name = "연계 처리", value = "/link")
|
||||
public class LinkController extends AbstractController {
|
||||
|
||||
@Resource(name = "linkBean")
|
||||
private LinkBean linkBean;
|
||||
|
||||
@Resource(name = "linkService")
|
||||
private LinkService linkService;
|
||||
|
||||
@Resource(name = "ogdpBean")
|
||||
private OgdpBean ogdpBean;
|
||||
|
||||
@Resource(name = "extrStngMapper")
|
||||
private ExtrStngMapper extrStngMapper;
|
||||
|
||||
@RequestMapping(name = "파일 처리", value = "/fileProcess.do")
|
||||
public ModelAndView fileProcess(String filePath, String job, String param) {
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
|
||||
boolean saved = false;
|
||||
UserInfo userInfo = currentUser();
|
||||
ogdpBean.initUserInfo(userInfo);
|
||||
String sggCd = (String) userInfo.getInfo().get("sggCd");
|
||||
|
||||
System.out.println("파라미터 : "+ param);
|
||||
|
||||
DataObject dataObject = fromJson(param, DataObject.class);
|
||||
|
||||
|
||||
//차세대 세외수입 pdf파일 정보 추출
|
||||
if(job.equals("01")) {
|
||||
String taskSeCd = dataObject.string("taskSeCd");
|
||||
String tmplatId = dataObject.string("tmplatId");
|
||||
|
||||
linkService.insertElectronicNoticeSndng(filePath, sggCd, taskSeCd, tmplatId);
|
||||
|
||||
|
||||
}
|
||||
|
||||
mav.addObject("saved", saved);
|
||||
return mav;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,361 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.web;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import cokr.xit.base.code.CommonCode;
|
||||
import cokr.xit.base.user.SigunguQuery;
|
||||
import cokr.xit.base.user.dao.UserMapper;
|
||||
import cokr.xit.base.user.service.bean.SigunguBean;
|
||||
import cokr.xit.base.web.ApplicationController;
|
||||
import cokr.xit.fims.base.FimsUser;
|
||||
import cokr.xit.fims.cmmn.ExtrForm;
|
||||
import cokr.xit.fims.cmmn.ExtrStngQuery;
|
||||
import cokr.xit.fims.cmmn.OtptForm;
|
||||
import cokr.xit.fims.cmmn.OtptStngQuery;
|
||||
import cokr.xit.fims.cmmn.OutsourcingForm;
|
||||
import cokr.xit.fims.cmmn.OutsourcingStngQuery;
|
||||
import cokr.xit.fims.cmmn.service.StngService;
|
||||
import cokr.xit.fims.cmmn.service.bean.ExtrStngBean;
|
||||
import cokr.xit.fims.cmmn.service.bean.OtptStngBean;
|
||||
import cokr.xit.fims.cmmn.service.bean.OutsourcingStngBean;
|
||||
import cokr.xit.fims.cmmn.service.bean.StngBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**설정 관리 서비스의 웹 컨트롤러
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2024-02-20 leebj 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping(name="설정관리", value=StngController.CLASS_URL)
|
||||
public class StngController extends ApplicationController {
|
||||
public static final String CLASS_URL = "/stng/stng01";
|
||||
|
||||
public class METHOD_URL {
|
||||
public static final String
|
||||
otptStngMain = "/010/main.do",
|
||||
getOtptStngInfo = "/010/info.do",
|
||||
saveOtptStngInfo = "/010/save.do",
|
||||
extrStngMain = "/020/main.do",
|
||||
getExtrStngInfo = "/020/info.do",
|
||||
saveExtrStngInfo = "/020/save.do",
|
||||
outsourcingStngMain = "/030/main.do",
|
||||
getOutsourcingStngInfo = "/030/info.do",
|
||||
saveOutsourcingStngInfo = "/030/save.do"
|
||||
;
|
||||
}
|
||||
|
||||
@Resource(name = "stngService")
|
||||
private StngService stngService;
|
||||
|
||||
@Resource(name = "stngBean")
|
||||
private StngBean stngBean;
|
||||
|
||||
@Resource(name = "sigunguBean")
|
||||
private SigunguBean sigunguBean;
|
||||
|
||||
@Resource(name = "otptStngBean")
|
||||
private OtptStngBean otptStngBean;
|
||||
|
||||
@Resource(name = "outsourcingStngBean")
|
||||
private OutsourcingStngBean outsourcingStngBean;
|
||||
|
||||
@Resource(name = "extrStngBean")
|
||||
private ExtrStngBean extrStngBean;
|
||||
|
||||
@Resource(name = "userMapper")
|
||||
private UserMapper userMapper;
|
||||
|
||||
|
||||
/** 출력물 설정 메인 화면을 연다.
|
||||
* @return 출력물 설정 메인 화면
|
||||
*/
|
||||
@RequestMapping(name="출력물 설정 메인 화면", value=METHOD_URL.otptStngMain)
|
||||
public ModelAndView otptStngMain() {
|
||||
ModelAndView mav = new ModelAndView("fims/stng01010-main");
|
||||
mav.addObject("pageName", "stng01010");
|
||||
|
||||
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054","FIM047","FIM078","FIM080");
|
||||
|
||||
mav.addObject("FIM047List", commonCodes.get("FIM047"));
|
||||
mav.addObject("FIM054List", commonCodes.get("FIM054"));
|
||||
mav.addObject("TaskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")));
|
||||
mav.addObject("FIM078List", commonCodes.get("FIM078"));
|
||||
mav.addObject("FIM080List", commonCodes.get("FIM080"));
|
||||
addCodes(commonCodes, mav, "FIM047", "FIM054", "FIM078","FIM080");
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
/** 출력물 설정 정보를 불러온다.
|
||||
* @return 출력물 설정 정보
|
||||
*/
|
||||
@RequestMapping(name="출력물 설정 정보 조회", value=METHOD_URL.getOtptStngInfo)
|
||||
public ModelAndView getOtptStngInfo(OtptStngQuery otptStngQuery) {
|
||||
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
|
||||
//출력 설정 제목
|
||||
FimsUser currentUser = (FimsUser) currentUser().getUser();
|
||||
String sggCd = currentUser.getOrgID();
|
||||
DataObject sgg = sigunguBean.getSigunguList(new SigunguQuery().setSggIDs(sggCd)).get(0);
|
||||
String sggNm = sgg.string("SGG_NM");
|
||||
|
||||
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054","FIM047","FIM078");
|
||||
List<CommonCode> FIM047 = commonCodes.get("FIM047");
|
||||
List<CommonCode> FIM054 = commonCodes.get("FIM054");
|
||||
List<CommonCode> FIM078 = commonCodes.get("FIM078");
|
||||
|
||||
String taskSeNm = FIM054.stream().
|
||||
filter(item -> item.getCode().equals(otptStngQuery.getTaskSeCd())).findFirst().get().getValue();
|
||||
|
||||
String sndngSeNm = FIM047.stream().
|
||||
filter(item -> item.getCode().equals(otptStngQuery.getSndngSeCd())).findFirst().get().getValue();
|
||||
|
||||
String otptPaperSeNm = FIM078.stream().
|
||||
filter(item -> item.getCode().equals(otptStngQuery.getPaperSeCd())).findFirst().get().getValue();
|
||||
|
||||
String otptStngTitle = "["+sggNm+", "+taskSeNm+"]"+" "+sndngSeNm+" "+"("+otptPaperSeNm+")";
|
||||
mav.addObject("otptStngTitle", otptStngTitle);
|
||||
|
||||
//출력물 기본 설정
|
||||
DataObject otptBscStng = new DataObject();
|
||||
otptBscStng = otptStngBean.getOtptBscStng(otptStngQuery);
|
||||
mav.addObject("otptGlobalStng", otptBscStng);
|
||||
|
||||
//출력 요소별 설정
|
||||
Map<String,Object> otptArtclStngMap = otptStngBean.getOtptArtclStngMap(otptStngQuery);
|
||||
|
||||
mav.addObject("otptArtclStngMap", otptArtclStngMap);
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
/** 출력물 설정 정보를 저장한다.
|
||||
* @return 저장 여부
|
||||
*/
|
||||
@RequestMapping(name="출력물 설정 정보 저장", value=METHOD_URL.saveOtptStngInfo)
|
||||
public ModelAndView saveOtptStngInfo(OtptForm otptForm, MultipartFile backgroundFile) {
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
boolean saved = false;
|
||||
|
||||
if(backgroundFile != null && !backgroundFile.isEmpty() && backgroundFile.getSize() != 0) {
|
||||
FimsUser currentUser = (FimsUser) currentUser().getUser();
|
||||
String sggCd = currentUser.getOrgID();
|
||||
|
||||
String bgPath = "files/attachment/etc/background/"+sggCd;
|
||||
|
||||
String ext = FilenameUtils.getExtension(backgroundFile.getOriginalFilename());
|
||||
String fileName = otptForm.getTaskSeCd()+"-"+otptForm.getSndngSeCd()+"-"+otptForm.getPaperSeCd()+"."+ext;
|
||||
|
||||
File workDir = new File(bgPath);
|
||||
workDir.mkdirs();
|
||||
try {
|
||||
String bgFullPath = bgPath + "/" + fileName;
|
||||
File newFile = new File(bgFullPath);
|
||||
if(newFile.exists()) {
|
||||
if(!newFile.delete()) {
|
||||
throw new RuntimeException("배경 이미지 업로드 중 오류가 발생하였습니다.");
|
||||
}
|
||||
}
|
||||
backgroundFile.transferTo(newFile);
|
||||
|
||||
otptForm.setBcrnImgPath(bgFullPath);
|
||||
otptForm.setBcrnImgFileNm(backgroundFile.getOriginalFilename());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("배경 이미지 업로드 중 오류가 발생하였습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
saved = otptStngBean.saveOtptBscStng(otptForm);
|
||||
if(saved) {
|
||||
saved = otptStngBean.saveOtptArtclStng(otptForm);
|
||||
}
|
||||
|
||||
mav.addObject("saved", saved);
|
||||
return mav;
|
||||
}
|
||||
|
||||
|
||||
/** PDF 자료 추출 설정 메인 화면을 연다.
|
||||
* @return PDF 자료 추출 설정 메인 화면
|
||||
*/
|
||||
@RequestMapping(name="PDF 자료 추출 설정 메인 화면", value=METHOD_URL.extrStngMain)
|
||||
public ModelAndView extrStngMain() {
|
||||
ModelAndView mav = new ModelAndView("fims/stng01020-main");
|
||||
mav.addObject("pageName", "stng01020");
|
||||
|
||||
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054","FIM047","FIM078","FIM080","EIF001");
|
||||
|
||||
mav.addObject("FIM047List", commonCodes.get("FIM047"));
|
||||
mav.addObject("FIM054List", commonCodes.get("FIM054"));
|
||||
mav.addObject("TaskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")));
|
||||
mav.addObject("FIM078List", commonCodes.get("FIM078"));
|
||||
mav.addObject("FIM080List", commonCodes.get("FIM080"));
|
||||
mav.addObject("TmplatList", commonCodes.get("EIF001"));
|
||||
addCodes(commonCodes, mav, "FIM047", "FIM054", "FIM078","FIM080");
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
/** PDF 자료 추출 설정 정보를 불러온다.
|
||||
* @return PDF 자료 추출 설정 정보
|
||||
*/
|
||||
@RequestMapping(name="PDF 자료 추출 설정 정보 조회", value=METHOD_URL.getExtrStngInfo)
|
||||
public ModelAndView getExtrStngInfo(ExtrStngQuery extrStngQuery) {
|
||||
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
|
||||
//설정 제목
|
||||
FimsUser currentUser = (FimsUser) currentUser().getUser();
|
||||
String sggCd = currentUser.getOrgID();
|
||||
DataObject sgg = sigunguBean.getSigunguList(new SigunguQuery().setSggIDs(sggCd)).get(0);
|
||||
String sggNm = sgg.string("SGG_NM");
|
||||
|
||||
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054","FIM047","FIM078");
|
||||
List<CommonCode> FIM054 = commonCodes.get("FIM054");
|
||||
|
||||
|
||||
String taskSeNm = FIM054.stream().
|
||||
filter(item -> item.getCode().equals(extrStngQuery.getTaskSeCd())).findFirst().get().getValue();
|
||||
|
||||
String templateName = "";
|
||||
if(extrStngQuery.getTmplatId().equals("JU001")) {
|
||||
templateName = "사전통지서";
|
||||
} else if(extrStngQuery.getTmplatId().equals("JU002")){
|
||||
templateName = "본고지(수시분)";
|
||||
}
|
||||
|
||||
String extrStngTitle = "["+sggNm+", "+taskSeNm+"]"+" "+templateName;
|
||||
mav.addObject("extrStngTitle", extrStngTitle);
|
||||
|
||||
|
||||
//추출 기본 설정
|
||||
DataObject extrBscStng = extrStngBean.getExtrBscStng(extrStngQuery);
|
||||
if(extrBscStng == null) {
|
||||
mav.addObject("EXTR_BSC_ID", "");
|
||||
mav.addObject("MOBILE_PAGE_TMPLT", "");
|
||||
} else {
|
||||
mav.addObject("EXTR_BSC_ID", extrBscStng.string("EXTR_BSC_ID"));
|
||||
mav.addObject("MOBILE_PAGE_TMPLT", extrBscStng.string("MOBILE_PAGE_TMPLT"));
|
||||
}
|
||||
|
||||
//추출 요소별 설정
|
||||
Map<String,Object> extrArtclStngMap = extrStngBean.getExtrArtclStngMap(extrStngQuery);
|
||||
mav.addObject("extrArtclStngMap", extrArtclStngMap);
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
/** PDF 추출 설정 정보를 저장한다.
|
||||
* @return 저장 여부
|
||||
*/
|
||||
@RequestMapping(name="PDF 자료 추출 설정 정보 저장", value=METHOD_URL.saveExtrStngInfo)
|
||||
public ModelAndView saveExtrStngInfo(ExtrForm extrForm) {
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
boolean saved = false;
|
||||
|
||||
saved = extrStngBean.saveExtrBscStng(extrForm);
|
||||
if(saved) {
|
||||
saved = extrStngBean.saveExtrArtclStng(extrForm);
|
||||
}
|
||||
|
||||
mav.addObject("saved", saved);
|
||||
return mav;
|
||||
}
|
||||
|
||||
/** 외주요청파일 서식 설정 메인 화면을 연다.
|
||||
* @return 외주요청파일 서식 설정 메인 화면
|
||||
*/
|
||||
@RequestMapping(name="외주요청파일 서식 설정 메인 화면", value=METHOD_URL.outsourcingStngMain)
|
||||
public ModelAndView outsourcingStngMain() {
|
||||
ModelAndView mav = new ModelAndView("fims/stng01030-main");
|
||||
mav.addObject("pageName", "stng01030");
|
||||
|
||||
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054","FIM047","FIM078","FIM080");
|
||||
|
||||
mav.addObject("FIM047List", commonCodes.get("FIM047"));
|
||||
mav.addObject("FIM054List", commonCodes.get("FIM054"));
|
||||
mav.addObject("TaskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")));
|
||||
mav.addObject("FIM078List", commonCodes.get("FIM078"));
|
||||
mav.addObject("FIM080List", commonCodes.get("FIM080"));
|
||||
addCodes(commonCodes, mav, "FIM047", "FIM054", "FIM078","FIM080");
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
|
||||
/** 외주요청파일 서식 설정 정보를 불러온다.
|
||||
* @return 외주요청파일 서식 설정 정보
|
||||
*/
|
||||
@RequestMapping(name="외주요청파일 서식 설정 정보 조회", value=METHOD_URL.getOutsourcingStngInfo)
|
||||
public ModelAndView getOutsourcingStngInfo(OutsourcingStngQuery outsourcingStngQuery) {
|
||||
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
|
||||
//설정 제목
|
||||
FimsUser currentUser = (FimsUser) currentUser().getUser();
|
||||
String sggCd = currentUser.getOrgID();
|
||||
DataObject sgg = sigunguBean.getSigunguList(new SigunguQuery().setSggIDs(sggCd)).get(0);
|
||||
String sggNm = sgg.string("SGG_NM");
|
||||
|
||||
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054","FIM047","FIM078");
|
||||
List<CommonCode> FIM047 = commonCodes.get("FIM047");
|
||||
List<CommonCode> FIM054 = commonCodes.get("FIM054");
|
||||
|
||||
String taskSeNm = FIM054.stream().
|
||||
filter(item -> item.getCode().equals(outsourcingStngQuery.getTaskSeCd())).findFirst().get().getValue();
|
||||
|
||||
String sndngSeNm = FIM047.stream().
|
||||
filter(item -> item.getCode().equals(outsourcingStngQuery.getSndngSeCd())).findFirst().get().getValue();
|
||||
|
||||
String outsourcingStngTitle = "["+sggNm+", "+taskSeNm+"]"+" "+sndngSeNm;
|
||||
mav.addObject("outsourcingStngTitle", outsourcingStngTitle);
|
||||
|
||||
//기본 설정
|
||||
DataObject zipGlobalStng = new DataObject();
|
||||
//zipGlobalStng = outsourcingStngBean.getBscStng();
|
||||
zipGlobalStng.put("OUTSOURCING_BSC_ID","");
|
||||
mav.addObject("zipGlobalStng", zipGlobalStng);
|
||||
|
||||
//요소별 설정
|
||||
Map<String,Object> zipArtclStngMap = outsourcingStngBean.getArtclStngMap(outsourcingStngQuery);
|
||||
|
||||
mav.addObject("zipArtclStngMap", zipArtclStngMap);
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
|
||||
/** 외주요청파일 서식 설정 정보를 저장한다.
|
||||
* @return 저장 여부
|
||||
*/
|
||||
@RequestMapping(name="외주요청파일 서식 설정 정보 저장", value=METHOD_URL.saveOutsourcingStngInfo)
|
||||
public ModelAndView saveOutsourcingStngInfo(OutsourcingForm outsourcingForm) {
|
||||
ModelAndView mav = new ModelAndView("jsonView");
|
||||
boolean saved = false;
|
||||
|
||||
//saved = outsourcingStngBean.saveBscStng(otptForm);
|
||||
//if(saved) {
|
||||
saved = outsourcingStngBean.saveOutsourcingArtclStng(outsourcingForm);
|
||||
//}
|
||||
|
||||
mav.addObject("saved", saved);
|
||||
return mav;
|
||||
}
|
||||
}
|
||||
@ -1,68 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.xls;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.poi.hssf.util.HSSFColor;
|
||||
|
||||
import cokr.xit.base.docs.xls.Comment;
|
||||
import cokr.xit.base.docs.xls.Format;
|
||||
import cokr.xit.base.docs.xls.Style;
|
||||
import cokr.xit.foundation.data.DataFormat;
|
||||
|
||||
public class FormatMaker {
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public static Format photoCellForApproval(Format format, Comment comment, String key) {
|
||||
return format.of(key)
|
||||
.value(obj -> {
|
||||
if(((Map)obj).get(key) == null) {
|
||||
return "없음";
|
||||
}
|
||||
String value = (String)((Map)obj).get(key);
|
||||
if(value.equals("")) {
|
||||
return "없음";
|
||||
}
|
||||
if(!(new File(value)).exists()) {
|
||||
return "이미지 경로 존재하지 않음";
|
||||
}
|
||||
if((new File(value)).length() == 0) {
|
||||
return "이미지 크기 오류";
|
||||
}
|
||||
if((new File(value)).length() > (1024 * 1024 * 3)){
|
||||
return "사진크기(3MB)초과";
|
||||
}
|
||||
return " ";
|
||||
})
|
||||
.onCell(obj -> {
|
||||
if(((Map)obj).get(key) == null) { return; }
|
||||
String value = (String)((Map)obj).get(key);
|
||||
if(value.equals("")) { return; }
|
||||
if(!(new File(value)).exists()) { return; }
|
||||
if((new File(value)).length() == 0) { return; }
|
||||
if((new File(value)).length() > (1024 * 1024 * 3)){ return; }
|
||||
|
||||
comment.setImageComment((String)((Map)obj).get(key));
|
||||
})
|
||||
.style(new Style().foregroundColor(HSSFColor.HSSFColorPredefined.YELLOW.getIndex()));
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public static Format yyyy_mm_dd_hh_mm_ss(Format format, String key) {
|
||||
return format.of(key).value(o -> {
|
||||
return DataFormat.yyyy_mm_dd_hh_mm_ss(((Map) o).get(key));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public static Format yyyy_mm_dd(Format format, String key) {
|
||||
return format.of(key).value(o -> {
|
||||
return DataFormat.yyyy_mm_dd(((Map) o).get(key));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,24 +0,0 @@
|
||||
package cokr.xit.fims.cmmn.xls;
|
||||
|
||||
import org.apache.poi.hssf.util.HSSFColor;
|
||||
import org.apache.poi.ss.usermodel.Font;
|
||||
import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
||||
|
||||
import cokr.xit.base.docs.xls.Style;
|
||||
import cokr.xit.base.docs.xls.XLSWriter;
|
||||
|
||||
|
||||
public class StyleMaker {
|
||||
|
||||
public static Style headerStyle(XLSWriter xlsx) {
|
||||
return new Style()
|
||||
.foregroundColor(HSSFColor.HSSFColorPredefined.GREY_25_PERCENT.getIndex())
|
||||
.configure(styl -> {
|
||||
Font font = xlsx.workbook().createFont();
|
||||
font.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
|
||||
styl.font(font);
|
||||
styl.alignment(HorizontalAlignment.CENTER);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,400 +0,0 @@
|
||||
package cokr.xit.fims.crdn;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**단속 자료 정보
|
||||
* @author leebj
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class Crdn extends AbstractEntity {
|
||||
public static String INF_TYPE = "100";
|
||||
|
||||
/**
|
||||
* 단속 ID
|
||||
*/
|
||||
private String crdnId;
|
||||
|
||||
/**
|
||||
* 시군구 코드
|
||||
*/
|
||||
private String sggCd;
|
||||
|
||||
/**
|
||||
* 업무 구분 코드
|
||||
*/
|
||||
private String taskSeCd;
|
||||
|
||||
/**
|
||||
* 단속 등록 구분 코드
|
||||
*/
|
||||
private String crdnRegSeCd;
|
||||
|
||||
/**
|
||||
* 단속 입력 구분 코드
|
||||
*/
|
||||
private String crdnInptSeCd;
|
||||
|
||||
/**
|
||||
* 연계 ID
|
||||
*/
|
||||
private String linkId;
|
||||
|
||||
/**
|
||||
* 단속 구분 코드
|
||||
*/
|
||||
private String crdnSeCd;
|
||||
|
||||
/**
|
||||
* 납부자 ID
|
||||
*/
|
||||
private String rtpyrId;
|
||||
|
||||
/**
|
||||
* 주소 일련번호
|
||||
*/
|
||||
private String addrSn;
|
||||
|
||||
/**
|
||||
* 단속 일자
|
||||
*/
|
||||
private String crdnYmd;
|
||||
|
||||
/**
|
||||
* 단속 시각
|
||||
*/
|
||||
private String crdnTm;
|
||||
|
||||
/**
|
||||
* 차량번호
|
||||
*/
|
||||
private String vhrno;
|
||||
|
||||
/**
|
||||
* 단속 법정동 명
|
||||
*/
|
||||
private String crdnStdgNm;
|
||||
|
||||
/**
|
||||
* 단속 도로 명
|
||||
*/
|
||||
private String crdnRoadNm;
|
||||
|
||||
/**
|
||||
* 단속 장소
|
||||
*/
|
||||
private String crdnPlc;
|
||||
|
||||
/**
|
||||
* 상세 단속 장소
|
||||
*/
|
||||
private String dtlCrdnPlc;
|
||||
|
||||
/**
|
||||
* 조 ID
|
||||
*/
|
||||
private String teamId;
|
||||
|
||||
/**
|
||||
* 위반 ID
|
||||
*/
|
||||
private String vltnId;
|
||||
|
||||
/**
|
||||
* 단속 특별구역 코드
|
||||
*/
|
||||
private String crdnSpareaCd;
|
||||
|
||||
/**
|
||||
* 단속 시작 시각
|
||||
*/
|
||||
private String crdnBgngTm;
|
||||
|
||||
/**
|
||||
* 단속 종료 시간
|
||||
*/
|
||||
private String crdnEndTm;
|
||||
|
||||
/**
|
||||
* 단속 일련번호
|
||||
*/
|
||||
private String crdnSn;
|
||||
|
||||
/**
|
||||
* GPS X
|
||||
*/
|
||||
private String gpsX;
|
||||
|
||||
/**
|
||||
* GPS Y
|
||||
*/
|
||||
private String gpsY;
|
||||
|
||||
/**
|
||||
* 모자이크 X
|
||||
*/
|
||||
private String moscX;
|
||||
|
||||
/**
|
||||
* 모자이크 Y
|
||||
*/
|
||||
private String moscY;
|
||||
|
||||
/**
|
||||
* 견인 여부
|
||||
*/
|
||||
private String towngYn;
|
||||
|
||||
/**
|
||||
* 첨부 파일 수
|
||||
*/
|
||||
private Integer atchFileCnt;
|
||||
|
||||
/**
|
||||
* 차대번호
|
||||
*/
|
||||
private String vin;
|
||||
|
||||
/**
|
||||
* 말소등록일자
|
||||
*/
|
||||
private String ersrRegYmd;
|
||||
|
||||
/**
|
||||
* 차량 명
|
||||
*/
|
||||
private String vhclNm;
|
||||
|
||||
/**
|
||||
* 차량 색상
|
||||
*/
|
||||
private String vhclColr;
|
||||
|
||||
/**
|
||||
* 사용 연료 코드
|
||||
*/
|
||||
private String useFuelCd;
|
||||
|
||||
/**
|
||||
* 과태료 차종 코드
|
||||
*/
|
||||
private String ffnlgCarmdlCd;
|
||||
|
||||
/**
|
||||
* 주차 가능 결과 코드
|
||||
*/
|
||||
private String prkPsbltyRsltCd;
|
||||
|
||||
/**
|
||||
* 위반 횟수
|
||||
*/
|
||||
private String vltnNmtm;
|
||||
|
||||
/**
|
||||
* 시간외 여부
|
||||
*/
|
||||
private String ovtmYn;
|
||||
|
||||
/**
|
||||
* 시간외 분할 여부
|
||||
*/
|
||||
private String ovtmPrttnYn;
|
||||
|
||||
/**
|
||||
* 과태료 단속 금액
|
||||
*/
|
||||
private Integer ffnlgCrdnAmt;
|
||||
|
||||
/**
|
||||
* 과태료 감경율
|
||||
*/
|
||||
private String ffnlgRdcrt;
|
||||
|
||||
/**
|
||||
* 과태료 금액
|
||||
*/
|
||||
private Integer ffnlgAmt;
|
||||
|
||||
/**
|
||||
* 사전통지 시작 일자
|
||||
*/
|
||||
private String advntceBgngYmd;
|
||||
|
||||
/**
|
||||
* 사전통지 납기 일자
|
||||
*/
|
||||
private String advntceDudtYmd;
|
||||
|
||||
/**
|
||||
* 사전통지 금액
|
||||
*/
|
||||
private Integer advntceAmt;
|
||||
|
||||
/**
|
||||
* 의견 제출 여부
|
||||
*/
|
||||
private String opnnSbmsnYn;
|
||||
|
||||
/**
|
||||
* 기타 내용
|
||||
*/
|
||||
private String etcCn;
|
||||
|
||||
/**
|
||||
* 부과 ID
|
||||
*/
|
||||
private String levyId;
|
||||
|
||||
/**
|
||||
* 단속 상태 코드
|
||||
*/
|
||||
private String crdnSttsCd;
|
||||
|
||||
/**
|
||||
* 단속 상태 변경 일시
|
||||
*/
|
||||
private String crdnSttsChgDt;
|
||||
|
||||
/**
|
||||
* 가산 금액
|
||||
*/
|
||||
private Integer adtnAmt;
|
||||
|
||||
/**
|
||||
* 감경 금액
|
||||
*/
|
||||
private Integer minusAmt;
|
||||
|
||||
/**
|
||||
* 수납 금액
|
||||
*/
|
||||
private Integer rcvmtAmt;
|
||||
|
||||
/**
|
||||
* 이전 단속 ID
|
||||
*/
|
||||
private String bfrCrdnId;
|
||||
|
||||
/**
|
||||
* 세외수입 단속 연계 여부
|
||||
*/
|
||||
private String nxrpCrdnLinkYn;
|
||||
|
||||
/**
|
||||
* 세외수입 단속 연계 사용자 ID
|
||||
*/
|
||||
private String nxrpCrdnLinkUserId;
|
||||
|
||||
/**
|
||||
* 세외수입 단속 연계 일시
|
||||
*/
|
||||
private String nxrpCrdnLinkDt;
|
||||
|
||||
/**
|
||||
* 세외수입 대장 키
|
||||
*/
|
||||
private String nxrpAcbKey;
|
||||
|
||||
/**
|
||||
* 삭제 여부
|
||||
*/
|
||||
private String delYn;
|
||||
|
||||
/**
|
||||
* 삭제 일시
|
||||
*/
|
||||
private String delDt;
|
||||
|
||||
/**
|
||||
* 삭제자
|
||||
*/
|
||||
private String dltr;
|
||||
|
||||
/**
|
||||
* 삭제 사유
|
||||
*/
|
||||
private String delRsn;
|
||||
|
||||
/**
|
||||
* 연계 테이블 명
|
||||
*/
|
||||
private String linkTblNm;
|
||||
|
||||
/**
|
||||
* 민원 연계 여부
|
||||
*/
|
||||
private String cvlcptLinkYn;
|
||||
|
||||
/**
|
||||
* 위반코드
|
||||
*/
|
||||
private String vltnCd;
|
||||
|
||||
/**
|
||||
* 납부자 구분 코드
|
||||
*/
|
||||
private String rtpyrSeCd;
|
||||
|
||||
/**
|
||||
* 납부자 명
|
||||
*/
|
||||
private String rtpyrNm;
|
||||
|
||||
/**
|
||||
* 납부자 번호
|
||||
*/
|
||||
private String rtpyrNo;
|
||||
|
||||
/**
|
||||
* 납부자 우편번호
|
||||
*/
|
||||
private String zip;
|
||||
|
||||
/**
|
||||
* 납부자 주소
|
||||
*/
|
||||
private String addr;
|
||||
|
||||
/**
|
||||
* 납부자 상세주소
|
||||
*/
|
||||
private String dtlAddr;
|
||||
|
||||
/**
|
||||
* 부과 제외 구분 코드
|
||||
*/
|
||||
private String levyExclSeCd;
|
||||
|
||||
/**
|
||||
* 부과 제외 사유 코드
|
||||
*/
|
||||
private String levyExclRsnCd;
|
||||
|
||||
/**
|
||||
* 부과 제외 일자
|
||||
*/
|
||||
private String levyExclYmd;
|
||||
|
||||
/**
|
||||
* 조원1
|
||||
*/
|
||||
private String teamer1;
|
||||
|
||||
/**
|
||||
* 조원2
|
||||
*/
|
||||
private String teamer2;
|
||||
|
||||
/**
|
||||
* 조원3
|
||||
*/
|
||||
private String teamer3;
|
||||
|
||||
/**
|
||||
* 조원4
|
||||
*/
|
||||
private String teamer4;
|
||||
|
||||
}
|
||||
@ -1,447 +0,0 @@
|
||||
package cokr.xit.fims.crdn;
|
||||
|
||||
import cokr.xit.fims.cmmn.CmmnQuery;
|
||||
|
||||
/**단속 대장 정보 조회 요청
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-06-23 leebj 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
public class CrdnQuery extends CmmnQuery {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
//조회유형
|
||||
private String gridType;
|
||||
private String inspectionDataType;
|
||||
|
||||
//현재정보
|
||||
private String currentUserId;
|
||||
private String currentUserAcnt;
|
||||
private String currentInstitute;
|
||||
|
||||
//ID
|
||||
private String crdnId;
|
||||
private String[] crdnIds;
|
||||
private String amtDcsnCdGroupId;
|
||||
private String dtlAmtDcsnGroupId;
|
||||
private String fileLayoutId;
|
||||
|
||||
//날짜
|
||||
private String aplcnYmd;
|
||||
private String schCvlcptRcptYmdFrom;
|
||||
private String schCvlcptRcptYmdTo;
|
||||
private String schCvlcptPrcsPrnmntDtFrom;
|
||||
private String schCvlcptPrcsPrnmntDtTo;
|
||||
private String schRdctYmdFrom;
|
||||
private String schRdctYmdTo;
|
||||
private String crdnYmd;
|
||||
private String schCrdnYmdFrom;
|
||||
private String schCrdnYmdTo;
|
||||
private String schDmndYmdFrom;
|
||||
private String schDmndYmdTo;
|
||||
|
||||
//from, to
|
||||
private Integer schCrdnCntFrom;
|
||||
private Integer schCrdnCntTo;
|
||||
|
||||
//코드
|
||||
private String amtDcsnCd;
|
||||
private String dtlAmtDcsnCd;
|
||||
private String crdnInptSeCd;
|
||||
private String cvlcptPrcsCd;
|
||||
private String crdnSttsCd;
|
||||
private String ansSeCd;
|
||||
private String ansRsnCd;
|
||||
|
||||
//포함, 제외, 특정 자료
|
||||
private String schOnlySamePlace;
|
||||
private String schOnlyUnpay;
|
||||
private String schExclEnd;
|
||||
private String schExclOvtime;
|
||||
|
||||
//YN
|
||||
private String dstrbncYn;
|
||||
private String towngYn;
|
||||
|
||||
//기타
|
||||
private String vhrno;
|
||||
private String cvlcptPrcsPicNm;
|
||||
private String teamNm;
|
||||
private String nxrpSendStts;
|
||||
|
||||
public String getGridType() {
|
||||
return ifEmpty(gridType, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setGridType(String gridType) {
|
||||
this.gridType = gridType;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCurrentUserId() {
|
||||
return ifEmpty(currentUserId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setCurrentUserId(String currentUserId) {
|
||||
this.currentUserId = currentUserId;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCurrentUserAcnt() {
|
||||
return ifEmpty(currentUserAcnt, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setCurrentUserAcnt(String currentUserAcnt) {
|
||||
this.currentUserAcnt = currentUserAcnt;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCurrentInstitute() {
|
||||
return ifEmpty(currentInstitute, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setCurrentInstitute(String currentInstitute) {
|
||||
this.currentInstitute = currentInstitute;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getInspectionDataType() {
|
||||
return ifEmpty(inspectionDataType, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setInspectionDataType(String inspectionDataType) {
|
||||
this.inspectionDataType = inspectionDataType;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCrdnId() {
|
||||
return ifEmpty(crdnId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setCrdnId(String crdnId) {
|
||||
this.crdnId = crdnId;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String[] getCrdnIds() {
|
||||
return ifEmpty(crdnIds, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setCrdnIds(String... crdnIds) {
|
||||
this.crdnIds = crdnIds;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getDstrbncYn() {
|
||||
return ifEmpty(dstrbncYn, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setDstrbncYn(String dstrbncYn) {
|
||||
this.dstrbncYn = dstrbncYn;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getTowngYn() {
|
||||
return ifEmpty(towngYn, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setTowngYn(String towngYn) {
|
||||
this.towngYn = towngYn;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getVhrno() {
|
||||
return ifEmpty(vhrno, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setVhrno(String vhrno) {
|
||||
this.vhrno = vhrno;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCvlcptPrcsPicNm() {
|
||||
return ifEmpty(cvlcptPrcsPicNm, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setCvlcptPrcsPicNm(String cvlcptPrcsPicNm) {
|
||||
this.cvlcptPrcsPicNm = cvlcptPrcsPicNm;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getTeamNm() {
|
||||
return ifEmpty(teamNm, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setTeamNm(String teamNm) {
|
||||
this.teamNm = teamNm;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchCvlcptRcptYmdFrom() {
|
||||
return ifEmpty(schCvlcptRcptYmdFrom, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchCvlcptRcptYmdFrom(String schCvlcptRcptYmdFrom) {
|
||||
this.schCvlcptRcptYmdFrom = schCvlcptRcptYmdFrom;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchCvlcptRcptYmdTo() {
|
||||
return ifEmpty(schCvlcptRcptYmdTo, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchCvlcptRcptYmdTo(String schCvlcptRcptYmdTo) {
|
||||
this.schCvlcptRcptYmdTo = schCvlcptRcptYmdTo;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchCvlcptPrcsPrnmntDtFrom() {
|
||||
return ifEmpty(schCvlcptPrcsPrnmntDtFrom, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchCvlcptPrcsPrnmntDtFrom(String schCvlcptPrcsPrnmntDtFrom) {
|
||||
this.schCvlcptPrcsPrnmntDtFrom = schCvlcptPrcsPrnmntDtFrom;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchCvlcptPrcsPrnmntDtTo() {
|
||||
return ifEmpty(schCvlcptPrcsPrnmntDtTo, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchCvlcptPrcsPrnmntDtTo(String schCvlcptPrcsPrnmntDtTo) {
|
||||
this.schCvlcptPrcsPrnmntDtTo = schCvlcptPrcsPrnmntDtTo;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchRdctYmdFrom() {
|
||||
return ifEmpty(schRdctYmdFrom, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchRdctYmdFrom(String schRdctYmdFrom) {
|
||||
this.schRdctYmdFrom = schRdctYmdFrom;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchRdctYmdTo() {
|
||||
return ifEmpty(schRdctYmdTo, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchRdctYmdTo(String schRdctYmdTo) {
|
||||
this.schRdctYmdTo = schRdctYmdTo;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCrdnYmd() {
|
||||
return ifEmpty(crdnYmd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setCrdnYmd(String crdnYmd) {
|
||||
this.crdnYmd = crdnYmd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchCrdnYmdFrom() {
|
||||
return ifEmpty(schCrdnYmdFrom, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchCrdnYmdFrom(String schCrdnYmdFrom) {
|
||||
this.schCrdnYmdFrom = schCrdnYmdFrom;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchCrdnYmdTo() {
|
||||
return ifEmpty(schCrdnYmdTo, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchCrdnYmdTo(String schCrdnYmdTo) {
|
||||
this.schCrdnYmdTo = schCrdnYmdTo;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchDmndYmdFrom() {
|
||||
return ifEmpty(schDmndYmdFrom, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchDmndYmdFrom(String schDmndYmdFrom) {
|
||||
this.schDmndYmdFrom = schDmndYmdFrom;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchDmndYmdTo() {
|
||||
return ifEmpty(schDmndYmdTo, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchDmndYmdTo(String schDmndYmdTo) {
|
||||
this.schDmndYmdTo = schDmndYmdTo;
|
||||
return self();
|
||||
}
|
||||
|
||||
public Integer getSchCrdnCntFrom() {
|
||||
return ifEmpty(schCrdnCntFrom, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchCrdnCntFrom(Integer schCrdnCntFrom) {
|
||||
this.schCrdnCntFrom = schCrdnCntFrom;
|
||||
return self();
|
||||
}
|
||||
|
||||
public Integer getSchCrdnCntTo() {
|
||||
return ifEmpty(schCrdnCntTo, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchCrdnCntTo(Integer schCrdnCntTo) {
|
||||
this.schCrdnCntTo = schCrdnCntTo;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchOnlySamePlace() {
|
||||
return ifEmpty(schOnlySamePlace, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchOnlySamePlace(String schOnlySamePlace) {
|
||||
this.schOnlySamePlace = schOnlySamePlace;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchOnlyUnpay() {
|
||||
return ifEmpty(schOnlyUnpay, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchOnlyUnpay(String schOnlyUnpay) {
|
||||
this.schOnlyUnpay = schOnlyUnpay;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchExclEnd() {
|
||||
return ifEmpty(schExclEnd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchExclEnd(String schExclEnd) {
|
||||
this.schExclEnd = schExclEnd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getSchExclOvtime() {
|
||||
return ifEmpty(schExclOvtime, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setSchExclOvtime(String schExclOvtime) {
|
||||
this.schExclOvtime = schExclOvtime;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCrdnInptSeCd() {
|
||||
return ifEmpty(crdnInptSeCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setCrdnInptSeCd(String crdnInptSeCd) {
|
||||
this.crdnInptSeCd = crdnInptSeCd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCvlcptPrcsCd() {
|
||||
return ifEmpty(cvlcptPrcsCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setCvlcptPrcsCd(String cvlcptPrcsCd) {
|
||||
this.cvlcptPrcsCd = cvlcptPrcsCd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getCrdnSttsCd() {
|
||||
return ifEmpty(crdnSttsCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setCrdnSttsCd(String crdnSttsCd) {
|
||||
this.crdnSttsCd = crdnSttsCd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getAnsSeCd() {
|
||||
return ifEmpty(ansSeCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setAnsSeCd(String ansSeCd) {
|
||||
this.ansSeCd = ansSeCd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getAnsRsnCd() {
|
||||
return ifEmpty(ansRsnCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setAnsRsnCd(String ansRsnCd) {
|
||||
this.ansRsnCd = ansRsnCd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getAplcnYmd() {
|
||||
return ifEmpty(aplcnYmd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setAplcnYmd(String aplcnYmd) {
|
||||
this.aplcnYmd = aplcnYmd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getAmtDcsnCdGroupId() {
|
||||
return ifEmpty(amtDcsnCdGroupId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setAmtDcsnCdGroupId(String amtDcsnCdGroupId) {
|
||||
this.amtDcsnCdGroupId = amtDcsnCdGroupId;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getAmtDcsnCd() {
|
||||
return ifEmpty(amtDcsnCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setAmtDcsnCd(String amtDcsnCd) {
|
||||
this.amtDcsnCd = amtDcsnCd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getDtlAmtDcsnGroupId() {
|
||||
return ifEmpty(dtlAmtDcsnGroupId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setDtlAmtDcsnGroupId(String dtlAmtDcsnGroupId) {
|
||||
this.dtlAmtDcsnGroupId = dtlAmtDcsnGroupId;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getFileLayoutId() {
|
||||
return ifEmpty(fileLayoutId, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setFileLayoutId(String fileLayoutId) {
|
||||
this.fileLayoutId = fileLayoutId;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getDtlAmtDcsnCd() {
|
||||
return ifEmpty(dtlAmtDcsnCd, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setDtlAmtDcsnCd(String dtlAmtDcsnCd) {
|
||||
this.dtlAmtDcsnCd = dtlAmtDcsnCd;
|
||||
return self();
|
||||
}
|
||||
|
||||
public String getNxrpSendStts() {
|
||||
return ifEmpty(nxrpSendStts, () -> null);
|
||||
}
|
||||
|
||||
public <T extends CrdnQuery> T setNxrpSendStts(String nxrpSendStts) {
|
||||
this.nxrpSendStts = nxrpSendStts;
|
||||
return self();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,99 +0,0 @@
|
||||
package cokr.xit.fims.crdn;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**면제차량 정보
|
||||
* @author leebj
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class ExmptnVhcl extends AbstractEntity {
|
||||
|
||||
/**
|
||||
* 면제차량 ID
|
||||
*/
|
||||
private String exmptnVhclId;
|
||||
|
||||
/**
|
||||
* 이력 일련번호
|
||||
*/
|
||||
private String hstrySn;
|
||||
|
||||
/**
|
||||
* 시군구 코드
|
||||
*/
|
||||
private String sggCd;
|
||||
|
||||
/**
|
||||
* 차량번호
|
||||
*/
|
||||
private String vhrno;
|
||||
|
||||
/**
|
||||
* 면제 사유
|
||||
*/
|
||||
private String exmptnRsn;
|
||||
|
||||
/**
|
||||
* 문서 번호
|
||||
*/
|
||||
private String docNo;
|
||||
|
||||
/**
|
||||
* 소유자 명
|
||||
*/
|
||||
private String ownrNm;
|
||||
|
||||
/**
|
||||
* 면제 시작 일자
|
||||
*/
|
||||
private String exmptnBgngYmd;
|
||||
|
||||
/**
|
||||
* 면제 종료 일자
|
||||
*/
|
||||
private String exmptnEndYmd;
|
||||
|
||||
/**
|
||||
* 삭제 여부
|
||||
*/
|
||||
private String delYn;
|
||||
|
||||
/**
|
||||
* 등록 일시
|
||||
*/
|
||||
private String regDt;
|
||||
|
||||
/**
|
||||
* 등록자
|
||||
*/
|
||||
private String rgtr;
|
||||
|
||||
/**
|
||||
* 수정 일시
|
||||
*/
|
||||
private String mdfcnDt;
|
||||
|
||||
/**
|
||||
* 수정자
|
||||
*/
|
||||
private String mdfr;
|
||||
|
||||
/**
|
||||
* 삭제 일시
|
||||
*/
|
||||
private String delDt;
|
||||
|
||||
/**
|
||||
* 삭제자
|
||||
*/
|
||||
private String dltr;
|
||||
|
||||
/**
|
||||
* 삭제 사유
|
||||
*/
|
||||
private String delRsn;
|
||||
|
||||
}
|
||||
@ -1,88 +0,0 @@
|
||||
package cokr.xit.fims.crdn;
|
||||
|
||||
import cokr.xit.foundation.AbstractEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**단속팀 정보
|
||||
* @author leebj
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class Team extends AbstractEntity {
|
||||
|
||||
/**
|
||||
* 단속팀 ID
|
||||
*/
|
||||
private String teamId;
|
||||
|
||||
/**
|
||||
* 시군구 코드
|
||||
*/
|
||||
private String sggCd;
|
||||
|
||||
/**
|
||||
* 업무 구분 코드
|
||||
*/
|
||||
private String taskSeCd;
|
||||
|
||||
/**
|
||||
* 단속 구분 코드
|
||||
*/
|
||||
private String crdnSeCd;
|
||||
|
||||
/**
|
||||
* 조 명
|
||||
*/
|
||||
private String teamNm;
|
||||
|
||||
/**
|
||||
* 조원1
|
||||
*/
|
||||
private String teamer1;
|
||||
|
||||
/**
|
||||
* 조원2
|
||||
*/
|
||||
private String teamer2;
|
||||
|
||||
/**
|
||||
* 조원3
|
||||
*/
|
||||
private String teamer3;
|
||||
|
||||
/**
|
||||
* 조원4
|
||||
*/
|
||||
private String teamer4;
|
||||
|
||||
/**
|
||||
* 기타 내용
|
||||
*/
|
||||
private String etcCn;
|
||||
|
||||
/**
|
||||
* 사용 여부
|
||||
*/
|
||||
private String useYn;
|
||||
|
||||
/**
|
||||
* 등록일시
|
||||
*/
|
||||
private String regDt;
|
||||
|
||||
/**
|
||||
* 등록자
|
||||
*/
|
||||
private String rgtr;
|
||||
|
||||
/**
|
||||
* 수정일시
|
||||
*/
|
||||
private String mdfcnDt;
|
||||
|
||||
/**
|
||||
* 수정자
|
||||
*/
|
||||
private String mdfr;
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
package cokr.xit.fims.crdn.dao;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**단속 정보 조회 DAO
|
||||
* @author leebj
|
||||
*/
|
||||
@Mapper("crdnInfoMapper")
|
||||
public interface CrdnInfoMapper extends AbstractMapper {
|
||||
|
||||
/**단속 대장 정보를 조회한다.
|
||||
* @param crdnId 단속 아이디
|
||||
* @return 단속 정보
|
||||
*/
|
||||
DataObject selectCrdnInfo(String crdnId);
|
||||
|
||||
}
|
||||
@ -1,32 +0,0 @@
|
||||
package cokr.xit.fims.crdn.dao;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.crdn.Crdn;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
|
||||
/**단속 자료 등록 DAO
|
||||
* @author leebj
|
||||
*/
|
||||
@Mapper("crdnInstMapper")
|
||||
public interface CrdnInstMapper extends AbstractMapper {
|
||||
|
||||
/**단속 대장 정보를 등록한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>"crdn" - 단속 대장</li>
|
||||
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||
* </ul>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int insertCrdn(Crdn crdn);
|
||||
|
||||
/**단속 부가 정보를 등록한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>"crdn" - 단속 부가 정보</li>
|
||||
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||
* </ul>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int insertCrdnAddition(Crdn crdn);
|
||||
|
||||
}
|
||||
@ -1,65 +0,0 @@
|
||||
package cokr.xit.fims.crdn.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.crdn.CrdnQuery;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**단속 대장 목록 조회 DAO
|
||||
* @author leebj
|
||||
*/
|
||||
@Mapper("crdnListMapper")
|
||||
public interface CrdnListMapper extends AbstractMapper {
|
||||
|
||||
/**금일 등록한 단속자료 목록을 조회한다.<br />
|
||||
* {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고
|
||||
* @param query 단속자료 목록 조회 조건
|
||||
* @return 단속자료 목록
|
||||
*/
|
||||
List<DataObject> selectTodayCrackdownList(CrdnQuery query);
|
||||
|
||||
/**단속자료 목록을 조회한다.<br />
|
||||
* {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고
|
||||
* @param query 단속자료 목록 조회 조건
|
||||
* @return 단속자료 목록
|
||||
*/
|
||||
List<DataObject> selectCrackdownList(CrdnQuery query);
|
||||
|
||||
/**단속사진 검사 자료 목록을 조회한다.<br />
|
||||
* {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고
|
||||
* @param query 단속사진 검사 자료 목록 조회 조건
|
||||
* @return 단속사진 검사 자료 목록
|
||||
*/
|
||||
List<DataObject> selectPhotoInspectionDataList(CrdnQuery query);
|
||||
|
||||
/**동일 차량 단속 그룹 목록을 조회한다.<br />
|
||||
* {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고
|
||||
* @param query 동일 차량 단속 그룹 목록 조회 조건
|
||||
* @return 동일 차량 단속 그룹 목록
|
||||
*/
|
||||
List<DataObject> selectSameVehicleMainList(CrdnQuery query);
|
||||
|
||||
/**동일 차량 단속 자료 목록을 조회한다.<br />
|
||||
* {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고
|
||||
* @param query 동일 차량 단속 자료 목록 조회 조건
|
||||
* @return 동일 차량 단속 자료 목록
|
||||
*/
|
||||
List<DataObject> selectSameVehicleSubList(CrdnQuery query);
|
||||
|
||||
/**표지정보 미확인 자료 목록을 조회한다.<br />
|
||||
* {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)} 참고
|
||||
* @param query 표지정보 미확인 자료 목록 조회 조건
|
||||
* @return 표지정보 미확인 자료 목록
|
||||
*/
|
||||
List<DataObject> selectTagInformationUndefinedDataList(CrdnQuery query);
|
||||
|
||||
/**단속 건수를 반환한다.
|
||||
* @param crdnQuery 조회조건
|
||||
* @return 단속 건수
|
||||
*/
|
||||
int countCrdn(CrdnQuery crdnQuery);
|
||||
|
||||
}
|
||||
@ -1,89 +0,0 @@
|
||||
package cokr.xit.fims.crdn.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.crdn.CrdnQuery;
|
||||
import cokr.xit.fims.crdn.receive.eqpmnt.LayoutDescriptor;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Mapper("crdnStngMapper")
|
||||
public interface CrdnStngMapper extends AbstractMapper {
|
||||
|
||||
/**기본금액을 조회한다.<br />
|
||||
* {@link cokr.xit.fims.crdn.service.bean.CrdnStngBean#getBasicAmt(CrdnQuery)} 참고
|
||||
* @param query 단속자료 정보
|
||||
* @return 기본금액
|
||||
*/
|
||||
String selectBasicAmt(CrdnQuery query);
|
||||
|
||||
/**시군구코드에 따른 법정동명 목록을 조회한다.<br />
|
||||
* @param sggCd 시군구코드
|
||||
* @return 법정동 목록
|
||||
*/
|
||||
List<String> selectStdgNmList(String sggCd);
|
||||
|
||||
/**법정동명으로 법정동코드를 조회한다.<br />
|
||||
* @param map 시군구코드 및 법정동명
|
||||
* @return 법정동코드 목록
|
||||
*/
|
||||
List<String> selectStdgCdListByStdgNm(Map<String, Object> map);
|
||||
|
||||
/** 연계파일 레이아웃 목록을 조회한다.
|
||||
* @param query 연계파일 레이아웃 조회조건
|
||||
* @return 연계파일 레이아웃 목록
|
||||
*/
|
||||
List<DataObject> selectLinkFileLayoutMetadataList(CrdnQuery query);
|
||||
|
||||
/** 연계파일 레이아웃 정보를 조회한다.
|
||||
* @param 연계파일 레이아웃 ID
|
||||
* @return 연계파일 레이아웃 상세 정보
|
||||
*/
|
||||
DataObject selectLinkFileLayoutMetadataInfo(String fileLayoutId);
|
||||
|
||||
/** 연계파일 레이아웃 정보를 등록한다.
|
||||
* @param map 등록 요청 파라미터
|
||||
* @return 저장된 정보 수
|
||||
*/
|
||||
int insertCrdnFileLayout(Map<String, Object> map);
|
||||
|
||||
/** 파일연계 원격지 정보를 등록한다.
|
||||
* @param map 등록 요청 파라미터
|
||||
* @return 저장된 정보 수
|
||||
*/
|
||||
int insertFtpInfo(Map<String, Object> map);
|
||||
|
||||
/** 연계파일 레이아웃 정보를 수정한다.
|
||||
* @param map 수정 요청 파라미터
|
||||
* @return 저장된 정보 수
|
||||
*/
|
||||
int updateCrdnFileLayout(Map<String, Object> map);
|
||||
|
||||
/** 파일연계 원격지 정보를 수정한다.
|
||||
* @param map 수정 요청 파라미터
|
||||
* @return 저장된 정보 수
|
||||
*/
|
||||
int updateFtpInfo(Map<String, Object> map);
|
||||
|
||||
/** 연계파일 레이아웃 정보를 삭제한다.
|
||||
* @param map 삭제 요청 파라미터
|
||||
* @return 저장된 정보 수
|
||||
*/
|
||||
int deleteCrdnFileLayout(Map<String, Object> map);
|
||||
|
||||
/** 연계파일 레이아웃 엔티티 정보를 조회한다.
|
||||
* @param query 연계파일 레이아웃 조회조건
|
||||
* @return 연계파일 레이아웃 엔티티
|
||||
*/
|
||||
List<LayoutDescriptor> selectLinkFileLayoutMetadata(CrdnQuery query);
|
||||
|
||||
/** 레이아웃별 연계파일의 ftp정보를 조회한다.
|
||||
* @param fileLayoutId 파일 레이아웃 ID
|
||||
* @return ftp정보
|
||||
*/
|
||||
DataObject selectRemoteInfo(String fileLayoutId);
|
||||
|
||||
}
|
||||
@ -1,57 +0,0 @@
|
||||
package cokr.xit.fims.crdn.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.crdn.CrdnQuery;
|
||||
import cokr.xit.fims.crdn.Team;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Mapper("crdnTeamMapper")
|
||||
public interface CrdnTeamMapper extends AbstractMapper {
|
||||
|
||||
/**단속팀 목록을 조회한다.<br />
|
||||
* @param query 단속팀 목록 조회 조건
|
||||
* @return 단속팀 목록
|
||||
*/
|
||||
List<DataObject> selectTeamList(CrdnQuery query);
|
||||
|
||||
/**비사용 단속팀 목록을 조회한다.<br />
|
||||
* @param query 비사용 단속팀 목록 조회 조건
|
||||
* @return 비사용 단속팀 목록
|
||||
*/
|
||||
List<DataObject> selectRemovedTeamList(CrdnQuery query);
|
||||
|
||||
/**단속팀 정보를 삭제한다.<br />
|
||||
* @param team 단속팀 정보
|
||||
* @return 저장된 정보 수
|
||||
*/
|
||||
int deleteTeamInfo(Team team);
|
||||
|
||||
/**단속팀 정보를 등록한다.<br />
|
||||
* @param team 단속팀 정보
|
||||
* @return 저장된 정보 수
|
||||
*/
|
||||
int insertTeamInfo(Team team);
|
||||
|
||||
/**단속팀 정보를 수정한다.<br />
|
||||
* @param team 단속팀 정보
|
||||
* @return 저장된 정보 수
|
||||
*/
|
||||
int updateTeamInfo(Team team);
|
||||
|
||||
/**단속팀명으로 단속팀 정보를 조회한다.<br />
|
||||
* @param team 단속팀 정보
|
||||
* @return 단속팀 정보
|
||||
*/
|
||||
DataObject selectTeamInfoByName(Team team);
|
||||
|
||||
/**단속팀 정보를 조회한다.<br />
|
||||
* @param teamId 단속팀 ID
|
||||
* @return 단속팀 정보
|
||||
*/
|
||||
DataObject selectTeamInfo(String teamId);
|
||||
|
||||
}
|
||||
@ -1,95 +0,0 @@
|
||||
package cokr.xit.fims.crdn.dao;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.crdn.Crdn;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
|
||||
/**단속 관리 DAO
|
||||
* @author leebj
|
||||
*/
|
||||
@Mapper("crdnUpdtMapper")
|
||||
public interface CrdnUpdtMapper extends AbstractMapper {
|
||||
/**단속 상태를 변경한다.
|
||||
* @param crdn 단속 대장
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateCrdnStatus(Crdn crdn);
|
||||
|
||||
/**표지정보 미확인 자료를 확인 자료로 수정한다.
|
||||
* @param crdn 단속 대장
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateTagInfo(Crdn crdn);
|
||||
|
||||
/** 2시간 초과 여부를 변경한다.
|
||||
* @param crdn 단속 대장
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateOverTimeInfo(Crdn crdn);
|
||||
|
||||
/** 단속 자료의 금액을 변경한다.
|
||||
* @param crdn 단속 대장
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateCrdnAmt(Crdn crdn);
|
||||
|
||||
/** 단속 자료의 기타사항을 변경한다.
|
||||
* @param crdn 단속 대장
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateEtcCn(Crdn crdn);
|
||||
|
||||
/**단속정보를 변경한다.<br />
|
||||
* {@link cokr.xit.fims.crdn.service.bean.CrdnBean#update(Crdn)} 참고
|
||||
* @param crdn 단속정보
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateCrdn(Crdn crdn);
|
||||
|
||||
/**단속 부가 정보를 변경한다.<br />
|
||||
* {@link cokr.xit.fims.crdn.service.bean.CrdnBean#update(Crdn)} 참고
|
||||
* @param crdn 단속정보
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateCrdnAddition(Crdn crdn);
|
||||
|
||||
/**단속 정보를 변경한다.<br />
|
||||
* @param crdn 단속정보
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateEditCrdn(Crdn crdn);
|
||||
|
||||
/** 단속 정보를 삭제한다.
|
||||
* @param map 삭제 요청 파라미터
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int deleteCrdn(Map<String, Object> map);
|
||||
|
||||
/** 단속 부가 정보를 삭제한다.
|
||||
* @param map 삭제 요청 파라미터
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int deleteCrdnAdi(Map<String, Object> map);
|
||||
|
||||
/** 단속 정보의 납부자 ID를 삭제한다.
|
||||
* @param map 삭제 요청 파라미터
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int deleteCrdnPayer(Crdn crdn);
|
||||
|
||||
/**
|
||||
* @param
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateNxrpCrdnLinkYn(Crdn crdn);
|
||||
|
||||
/** 단속 정보의 사전통지 일자를 변경한다.
|
||||
* @param crdn 단속 대장
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateAdvntceYmd(Crdn crdn);
|
||||
|
||||
}
|
||||
@ -1,57 +0,0 @@
|
||||
package cokr.xit.fims.crdn.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.fims.crdn.CrdnQuery;
|
||||
import cokr.xit.fims.crdn.ExmptnVhcl;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Mapper("exmptnVhclMapper")
|
||||
public interface ExmptnVhclMapper extends AbstractMapper {
|
||||
|
||||
/**면제차량 목록을 조회한다.<br />
|
||||
* @param query 면제차량 목록 조회 조건
|
||||
* @return 면제차량 목록
|
||||
*/
|
||||
List<DataObject> selectExemptionVehicleList(CrdnQuery query);
|
||||
|
||||
/**면제차량 정보를 조회한다.<br />
|
||||
* @param exemptionVehicleId 면제차량 ID
|
||||
* @return 면제차량 정보
|
||||
*/
|
||||
DataObject selectExemptionVehicleInfo(String exemptionVehicleId);
|
||||
|
||||
/**면제차량 정보를 등록한다.
|
||||
* @param exmptnVhcl 면제차량 정보
|
||||
* return 저장된 정보 수
|
||||
*/
|
||||
int insertExemptionVehicleInfo(ExmptnVhcl exmptnVhcl);
|
||||
|
||||
/**면제차량 정보를 수정한다.
|
||||
* @param exmptnVhcl 면제차량 정보
|
||||
* return 저장된 정보 수
|
||||
*/
|
||||
int updateExemptionVehicleInfo(ExmptnVhcl exmptnVhcl);
|
||||
|
||||
/**면제차량 정보를 삭제한다.
|
||||
* @param exmptnVhcl 면제차량 정보
|
||||
* return 저장된 정보 수
|
||||
*/
|
||||
int deleteExemptionVehicleInfo(ExmptnVhcl exmptnVhcl);
|
||||
|
||||
/**면제차량 이력을 등록한다.
|
||||
* @param exmptnVhcl 면제차량 정보
|
||||
* return 저장된 정보 수
|
||||
*/
|
||||
int insertExemptionVehicleHistory(ExmptnVhcl exmptnVhcl);
|
||||
|
||||
/**면제차량 이력을 조회한다.<br />
|
||||
* @param exemptionVehicleId 면제차량 ID
|
||||
* @return 면제차량 이력
|
||||
*/
|
||||
List<DataObject> selectExemptionVehicleHistoryList(String exmptnVhclId);
|
||||
|
||||
}
|
||||
@ -1,78 +0,0 @@
|
||||
package cokr.xit.fims.crdn.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**외부연계 파일을 단속 자료로 변환하기 위한 Mapper
|
||||
* @author mjkhan
|
||||
*/
|
||||
@Mapper("importMapper")
|
||||
public interface ImportMapper extends AbstractMapper {
|
||||
/**국민신문고 민원의 기관코드, 부서코드를 조건으로 시군구코드를 조회한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>institutes - 기관코드</li>
|
||||
* <li>depts - 부서코드</li>
|
||||
* </ul>
|
||||
* @return 시군구코드 목록
|
||||
*/
|
||||
List<DataObject> selectSggList(Map<String, Object> params);
|
||||
|
||||
/**국민신문고 민원의 기관코드, 부서코드를 조건으로 시군구코드를 조회하여 {"기관코드-부서코드", "시군구코드"} 형식의 맵으로 반환한다.
|
||||
* @param institutes 기관코드
|
||||
* @param depts 부서코드
|
||||
* @return 기관코드-부서코드별 시군구코드
|
||||
*/
|
||||
default Map<String, String> selectSggs(Iterable<?> institutes, Iterable<?> depts) {
|
||||
DataObject params = params()
|
||||
.set("institutes", institutes)
|
||||
.set("depts", depts);
|
||||
|
||||
List<DataObject> list = selectSggList(params);
|
||||
return list.stream()
|
||||
.collect(Collectors.toMap(
|
||||
row -> row.get("INST_CD") + "-" + row.get("DEPT_CD"),
|
||||
row -> row.string("SGG_CD")
|
||||
));
|
||||
}
|
||||
|
||||
/**국민신문고 민원제목 + 내용에서 단속정보에 필요한 코드들을 추출한다.
|
||||
* @param params 파라미터
|
||||
* <ul><li>violation - 민원제목 + " " + 내용</li>
|
||||
* </ul>
|
||||
* @return 단속정보에 필요한 코드
|
||||
*/
|
||||
DataObject selectViolationCodes(Map<String, Object> params);
|
||||
|
||||
/**국민신문고 민원제목 + 내용에서 단속정보에 필요한 코드들을 추출한다.
|
||||
* @param violation - 민원제목 + " " + 내용
|
||||
* @return 단속정보에 필요한 코드
|
||||
*/
|
||||
default DataObject selectViolationCodes(String violation) {
|
||||
return selectViolationCodes(params().set("violation", violation));
|
||||
}
|
||||
|
||||
/**차종별 과태료 차종코드를 조회한다.
|
||||
* @return 차종별 과태료 차종코드 목록
|
||||
*/
|
||||
List<DataObject> selectCarMdlCd();
|
||||
|
||||
/**차종별 과태료 차종코드를 조회하여 {"차종종별 코드", "과태료 차종코드"} 형식의 맵으로 반환한다.<br />
|
||||
* 단, 차종종별코드가 "3"일 경우 최대적재량이 4000 kg 이하인 차량은 "3-1", 4000 kg보다 큰 차량은 "3-2"로
|
||||
* 차종종별 코드를 적용해야 한다.
|
||||
* @return {"차종종별 코드", "과태료 차종코드"} 맵
|
||||
*/
|
||||
default Map<String, String> selectCarMdl() {
|
||||
List<DataObject> list = selectCarMdlCd();
|
||||
return list.stream()
|
||||
.collect(Collectors.toMap(
|
||||
row -> row.string("VHCTY_ASORT_CODE"),
|
||||
row -> row.string("FFNLG_CARMDL_CD")
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -1,92 +0,0 @@
|
||||
package cokr.xit.fims.crdn.receive.eqpmnt;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Arrays;
|
||||
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import net.minidev.json.JSONArray;
|
||||
import net.minidev.json.JSONObject;
|
||||
import net.minidev.json.parser.JSONParser;
|
||||
|
||||
public class AttachedTxtParser extends LayoutParser{
|
||||
|
||||
public AttachedTxtParser(){
|
||||
super();
|
||||
this.groupingType = "TXT";
|
||||
this.need = new Need(true,true,true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void analyzeFileContent(DataObject dataObject, File file) {
|
||||
try {
|
||||
|
||||
JSONParser jsonParser = new JSONParser(-1);
|
||||
|
||||
JSONArray jsonArray = (JSONArray)jsonParser.parse(descriptor.getContentItems());
|
||||
|
||||
boolean isMetaData = dataObject.string("FILE_EXTENSION").toUpperCase().equals("TXT");
|
||||
|
||||
if(isMetaData) {
|
||||
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),Charset.forName("EUC-KR")));
|
||||
String content = org.apache.commons.io.IOUtils.toString(br);
|
||||
String[] contentDivision = null;
|
||||
String part = "";
|
||||
int contentDivisionIndex = 0;
|
||||
int partSplitCursor = 0;
|
||||
|
||||
if(!descriptor.getContentSecondSeperator().equals("")) {
|
||||
contentDivision = this.smartSplit(content, descriptor.getContentSecondSeperator());
|
||||
part = contentDivision[contentDivisionIndex];
|
||||
} else {
|
||||
part = content;
|
||||
}
|
||||
|
||||
for(int i=0; i<jsonArray.size(); i++) {
|
||||
|
||||
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
|
||||
|
||||
String key = jsonObject.keySet().iterator().next();
|
||||
|
||||
if(Arrays.asList(descriptor.getSecondSeperatorStarterItems().split(",",-1)).contains(key)) {
|
||||
contentDivisionIndex++;
|
||||
partSplitCursor = 0;
|
||||
if(contentDivision.length > contentDivisionIndex) {
|
||||
part = contentDivision[contentDivisionIndex];
|
||||
} else {
|
||||
part = "";
|
||||
}
|
||||
}
|
||||
|
||||
String[] partSplit = this.smartSplit(part, descriptor.getContentSeperator());
|
||||
|
||||
if(partSplit.length > partSplitCursor) {
|
||||
dataObject.put(key, partSplit[partSplitCursor]);
|
||||
} else {
|
||||
dataObject.put(key, "");
|
||||
}
|
||||
partSplitCursor++;
|
||||
}
|
||||
|
||||
br.close();
|
||||
} else {
|
||||
|
||||
for(int i=0; i<jsonArray.size(); i++) {
|
||||
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
|
||||
String key = jsonObject.keySet().iterator().next();
|
||||
dataObject.put(key, "");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,110 +0,0 @@
|
||||
package cokr.xit.fims.crdn.receive.eqpmnt;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class LayoutDescriptor {
|
||||
|
||||
/**
|
||||
* 파일 레이아웃 ID
|
||||
*/
|
||||
private String fileLayoutId;
|
||||
|
||||
/**
|
||||
* 시군구 코드
|
||||
*/
|
||||
private String sggCd;
|
||||
|
||||
/**
|
||||
* 업무 구분 코드
|
||||
*/
|
||||
private String taskSeCd;
|
||||
|
||||
/**
|
||||
* 기관 코드
|
||||
*/
|
||||
private String instCd;
|
||||
|
||||
/**
|
||||
* 부서 코드
|
||||
*/
|
||||
private String deptCd;
|
||||
|
||||
/**
|
||||
* 연계 파일 위치
|
||||
*/
|
||||
private String linkFileLocation;
|
||||
|
||||
/**
|
||||
* 파일그룹
|
||||
*/
|
||||
private String fileGroup;
|
||||
|
||||
/**
|
||||
* 파일그룹 내부 파일갯수
|
||||
*/
|
||||
private String countPerFileGroup;
|
||||
|
||||
/**
|
||||
* 파일그룹내 동일 항목
|
||||
*/
|
||||
private String sameItemsInFileGroup;
|
||||
|
||||
/**
|
||||
* 파일그룹내 증가 항목
|
||||
*/
|
||||
private String increaseItemInFileGroup;
|
||||
|
||||
/**
|
||||
* 파일그룹내 증가 형식
|
||||
*/
|
||||
private String increaseTypeInFileGroup;
|
||||
|
||||
/**
|
||||
* 파일명 길이
|
||||
*/
|
||||
private String fileNameLength;
|
||||
|
||||
/**
|
||||
* 파일명 내부 항목
|
||||
*/
|
||||
private String fileNameItmes;
|
||||
|
||||
/**
|
||||
* 파일명 구분자
|
||||
*/
|
||||
private String fileNameSeperator;
|
||||
|
||||
/**
|
||||
* 파일내용 항목
|
||||
*/
|
||||
private String contentItems;
|
||||
|
||||
/**
|
||||
* 파일내용 구분자
|
||||
*/
|
||||
private String contentSeperator;
|
||||
|
||||
/**
|
||||
* 파일내용 2차구분자
|
||||
*/
|
||||
private String contentSecondSeperator;
|
||||
|
||||
/**
|
||||
* 2차구분자 시작 항목
|
||||
*/
|
||||
private String secondSeperatorStarterItems;
|
||||
|
||||
/**
|
||||
* 레이아웃 업체명
|
||||
*/
|
||||
private String enterpriseName;
|
||||
|
||||
/**
|
||||
* 연계 업체 명
|
||||
*/
|
||||
private String linkEnterpriseName;
|
||||
|
||||
}
|
||||
@ -1,136 +0,0 @@
|
||||
package cokr.xit.fims.crdn.receive.eqpmnt;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.function.BiFunction;
|
||||
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
public class LayoutDiscriminator {
|
||||
|
||||
public static LayoutDescriptor choice(MultipartFile[] fileList, List<LayoutDescriptor> candidates) {
|
||||
|
||||
BiFunction<String, String, Integer> filter = (validType, thisValue) -> {
|
||||
for(Iterator<LayoutDescriptor> it = candidates.iterator(); it.hasNext();){
|
||||
LayoutDescriptor descriptor = it.next();
|
||||
|
||||
switch (validType) {
|
||||
case "fileGroupIsThis": {
|
||||
if(!descriptor.getFileGroup().equals(thisValue)){
|
||||
it.remove();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "notUseThisFileNameSeperator": {
|
||||
if(descriptor.getFileNameSeperator().equals(thisValue)){
|
||||
it.remove();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "fileNameLengthIsThis": {
|
||||
if(descriptor.getFileNameLength() != null) {
|
||||
if(!descriptor.getFileNameLength().equals(thisValue)){
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "fileNameLengthIsNotFixed": {
|
||||
if(descriptor.getFileNameLength() != null){
|
||||
it.remove();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return candidates.size();
|
||||
};
|
||||
|
||||
boolean hasTxt = false; //txt파일 포함 여부
|
||||
boolean hasJpg = false; //jpg파일 포함 여부
|
||||
boolean hasUnderbar = false; //파일명에 언더바 포함 여부
|
||||
boolean hasComma = false; //파일명에 콤마 포함 여부
|
||||
boolean sameAllFileNameLength = true; //모든 파일명 길이 동일 여부
|
||||
|
||||
int fileNameLengthTemp = 0;
|
||||
for(int i=0;i < fileList.length; i++) {
|
||||
|
||||
String fileName = fileList[i].getOriginalFilename();
|
||||
String extension = FilenameUtils.getExtension(fileName);
|
||||
String noExtensionName= FilenameUtils.removeExtension(fileName);
|
||||
|
||||
if(fileNameLengthTemp == 0) {
|
||||
fileNameLengthTemp = fileName.length();
|
||||
}
|
||||
|
||||
int fileNameLength = fileName.length();
|
||||
if(fileNameLength != fileNameLengthTemp) {
|
||||
sameAllFileNameLength = false;
|
||||
}
|
||||
|
||||
if(extension.toUpperCase().equals("TXT")) {
|
||||
hasTxt = true;
|
||||
}
|
||||
if(extension.toUpperCase().equals("JPG")) {
|
||||
hasJpg = true;
|
||||
}
|
||||
|
||||
if(noExtensionName.contains("_")) {
|
||||
hasUnderbar = true;
|
||||
}
|
||||
if(noExtensionName.contains(",")) {
|
||||
hasComma = true;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
String fileGroup = "";
|
||||
if(hasTxt) {
|
||||
fileGroup = "TXT";
|
||||
} else if(hasJpg) {
|
||||
fileGroup = "JPG";
|
||||
} else {
|
||||
fileGroup = "BIN";
|
||||
}
|
||||
|
||||
if(filter.apply("fileGroupIsThis", fileGroup) == 1) {
|
||||
return candidates.get(0);
|
||||
}
|
||||
|
||||
if(!hasUnderbar) {
|
||||
if(filter.apply("notUseThisSeperator", "_") == 1) {
|
||||
return candidates.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
if(!hasComma) {
|
||||
if(filter.apply("notUseThisFileNameSeperator", ",") == 1) {
|
||||
return candidates.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
if(sameAllFileNameLength) {
|
||||
MultipartFile sample = fileList[0];
|
||||
int nameLength = sample.getOriginalFilename().length();
|
||||
if(filter.apply("fileNameLengthIsThis", Integer.toString(nameLength)) == 1) {
|
||||
return candidates.get(0);
|
||||
}
|
||||
} else {
|
||||
if(filter.apply("fileNameLengthIsNotFixed", "") == 1) {
|
||||
return candidates.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if(candidates.size() != 1) {
|
||||
throw new RuntimeException("파일의 레이아웃 서식을 구분할 수 없습니다.");
|
||||
}
|
||||
|
||||
return candidates.get(0);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,434 +0,0 @@
|
||||
package cokr.xit.fims.crdn.receive.eqpmnt;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import cokr.xit.base.code.CommonCode;
|
||||
import cokr.xit.fims.cmmn.CodeConverter;
|
||||
import cokr.xit.fims.cmmn.Hangul;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import net.minidev.json.JSONArray;
|
||||
import net.minidev.json.JSONObject;
|
||||
import net.minidev.json.parser.JSONParser;
|
||||
import net.minidev.json.parser.ParseException;
|
||||
|
||||
abstract public class LayoutParser {
|
||||
|
||||
public LayoutParser() {
|
||||
allCode = new HashMap<String, List<CommonCode>>();
|
||||
|
||||
ArrayList<CommonCode> photoType = new ArrayList<CommonCode>();
|
||||
photoType.add(newCommonCode("1","입차사진"));
|
||||
photoType.add(newCommonCode("2","주차사진"));
|
||||
photoType.add(newCommonCode("3","위반사진"));
|
||||
photoType.add(newCommonCode("4","출차사진"));
|
||||
allCode.put("PHOTO_TYPE", photoType);
|
||||
|
||||
ArrayList<CommonCode> fileStatus = new ArrayList<CommonCode>();
|
||||
fileStatus.add(newCommonCode("S","정상등록자료"));
|
||||
fileStatus.add(newCommonCode("E","삭제자료"));
|
||||
allCode.put("FILE_STATUS", fileStatus);
|
||||
|
||||
ArrayList<CommonCode> crdnCn = new ArrayList<CommonCode>();
|
||||
crdnCn.add(newCommonCode("00","사용안함"));
|
||||
crdnCn.add(newCommonCode("01","일반차량(전기차)"));
|
||||
crdnCn.add(newCommonCode("02","장기주차(전기차)"));
|
||||
allCode.put("CRDN_CN", crdnCn);
|
||||
|
||||
}
|
||||
|
||||
public static CommonCode newCommonCode(String code, String value) {
|
||||
CommonCode commonCode = new CommonCode();
|
||||
commonCode.setCode(code);
|
||||
commonCode.setValue(value);
|
||||
return commonCode;
|
||||
}
|
||||
|
||||
protected int tempGroupSeq = 1;
|
||||
|
||||
public int getTempGroupSeq() {
|
||||
return this.tempGroupSeq;
|
||||
}
|
||||
public void setTempGroupSeq(int tempGroupSeq) {
|
||||
this.tempGroupSeq = tempGroupSeq;
|
||||
}
|
||||
|
||||
protected DataObject before = new DataObject();
|
||||
|
||||
protected String groupingType;
|
||||
protected Need need;
|
||||
|
||||
class Need {
|
||||
boolean fileNameAnalyze;
|
||||
boolean contentAnalyze;
|
||||
boolean checkChangeCrackdown;
|
||||
|
||||
Need(boolean fileNameAnalyze, boolean contentAnalyze, boolean checkChangeCrackdown){
|
||||
this.fileNameAnalyze = fileNameAnalyze;
|
||||
this.contentAnalyze = contentAnalyze;
|
||||
this.checkChangeCrackdown = checkChangeCrackdown;
|
||||
}
|
||||
}
|
||||
|
||||
String[] allItem = {
|
||||
"FILE_LAYOUT_ID",
|
||||
"FILE_GROUP_ID",
|
||||
"FILE_GROUP_TYPE","FILE_PATH","FILE_NAME","FILE_LAST_MODIFIED","FILE_SIZE","FILE_EXTENSION","LINK_ENT_NM",
|
||||
"FILE_SEQ","PHOTO_CNT","PHOTO_TYPE_CD","PHOTO_TYPE_NM","FILE_STATUS_CD","FILE_STATUS_NM",
|
||||
"VHRNO",
|
||||
"CRDN_TIMESTAMP","CRDN_YMD_TM","CRDN_YMD","CRDN_TM","CRDN_END_TM","CRDN_BGNG_TM",
|
||||
"CRDN_PLC","CRDN_ROAD_NM","CRDN_STDG_NM","GPS_X","GPS_Y","CRDN_SPAREA_NM","CRDN_SPAREA_CD",
|
||||
"BZENTY_CD","TEAM_ID","EQPMNT_CD","CRDN_SE_CD","CRDN_SE_NM",
|
||||
"MOSC_X","MOSC_Y","PLATE_WIDTH","PLATE_HEIGHT",
|
||||
"VLTN_CD","VLTN_NM","CRDN_CN_CD","CRDN_CN_NM",
|
||||
"CAR_VELOCITY"
|
||||
};
|
||||
|
||||
public DataObject createParsedDataObject() {
|
||||
DataObject dataObject = new DataObject();
|
||||
for(int i=0; i < allItem.length; i++) {
|
||||
dataObject.put(allItem[i], "");
|
||||
}
|
||||
return dataObject;
|
||||
}
|
||||
|
||||
Map<String, List<CommonCode>> allCode = new HashMap<String, List<CommonCode>>();
|
||||
|
||||
public void addCommonCode(Map<String, List<CommonCode>> commonCode) {
|
||||
this.allCode.putAll(commonCode);
|
||||
}
|
||||
|
||||
LayoutDescriptor descriptor = new LayoutDescriptor();
|
||||
|
||||
public void setDescriptor(LayoutDescriptor descriptor) {
|
||||
this.descriptor = descriptor;
|
||||
}
|
||||
|
||||
/**장비 단속 연계 파일에서 단속정보를 추출한다.<br />
|
||||
* @param fileList 연계파일리스트
|
||||
* @return 단속정보
|
||||
*/
|
||||
public List<DataObject> parsing(List<Path> fileList){
|
||||
List<DataObject> dataObjectList = new ArrayList<>();
|
||||
|
||||
//파일명으로 정렬(파싱 전)
|
||||
List<Path> sortedFileList = fileList.stream()
|
||||
.sorted((item1, item2) -> item1.toFile().getName().compareTo(item2.toFile().getName()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
sortedFileList.forEach(item -> {
|
||||
DataObject dataObject = this.createParsedDataObject();
|
||||
dataObject.put("FILE_GROUP_TYPE", this.groupingType);
|
||||
dataObject.put("FILE_LAYOUT_ID", descriptor.getFileLayoutId());
|
||||
|
||||
File file = item.toFile();
|
||||
this.setFileDefaultInfo(dataObject, file);
|
||||
|
||||
if(this.need.fileNameAnalyze) {
|
||||
String noExtensionName = FilenameUtils.removeExtension(dataObject.string("FILE_NAME"));
|
||||
this.analyzeFileName(dataObject, noExtensionName);
|
||||
this.refineValue(dataObject);
|
||||
}
|
||||
|
||||
if(this.need.contentAnalyze) {
|
||||
this.analyzeFileContent(dataObject, file);
|
||||
this.refineValue(dataObject);
|
||||
}
|
||||
|
||||
//단속구분코드 보정
|
||||
if(descriptor.getTaskSeCd().equals("PVS") || descriptor.getTaskSeCd().equals("BPV")) {
|
||||
if(descriptor.getEnterpriseName().equals("xit")) {
|
||||
if(!dataObject.string("GPS_X").equals("")) {
|
||||
dataObject.put("CRDN_SE_CD", "02");
|
||||
} else {
|
||||
dataObject.put("CRDN_SE_CD", "01");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(descriptor.getTaskSeCd().equals("BPV")) {
|
||||
if(descriptor.getEnterpriseName().equals("hitecom")) {
|
||||
dataObject.put("CRDN_SE_CD", "07");
|
||||
}
|
||||
}
|
||||
|
||||
if(!before.isEmpty()) {
|
||||
if(this.need.checkChangeCrackdown) {
|
||||
boolean isChangeTempGroup = this.isChangeCrackdown(dataObject, before);
|
||||
if(isChangeTempGroup) {
|
||||
tempGroupSeq++;
|
||||
}
|
||||
} else {
|
||||
tempGroupSeq++;
|
||||
}
|
||||
}
|
||||
|
||||
dataObject.put("TEMP_GROUP_ID", tempGroupSeq);
|
||||
dataObjectList.add(dataObject);
|
||||
before = dataObject;
|
||||
});
|
||||
|
||||
return dataObjectList;
|
||||
}
|
||||
|
||||
/**파일에서 파일관련 기본정보를 추출한다.<br />
|
||||
* @param dataObject 정보, File 파일
|
||||
* @return
|
||||
*/
|
||||
public void setFileDefaultInfo(DataObject dataObject, File file) {
|
||||
String filePath = file.getPath();
|
||||
dataObject.put("FILE_PATH", filePath);
|
||||
String fileName = file.getName();
|
||||
dataObject.put("FILE_NAME", fileName);
|
||||
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd / HH:mm:ss");
|
||||
dataObject.put("FILE_LAST_MODIFIED", sdf.format(new Date(file.lastModified())));
|
||||
dataObject.put("FILE_SIZE", file.length()+" byte");
|
||||
|
||||
String fileExtension = FilenameUtils.getExtension(fileName);
|
||||
dataObject.put("FILE_EXTENSION", fileExtension);
|
||||
|
||||
boolean isUserUpload = file.compareTo(new File(descriptor.getLinkFileLocation()+File.separator+fileName)) == 0;
|
||||
if(!isUserUpload) {
|
||||
dataObject.put("LINK_ENT_NM", descriptor.getLinkEnterpriseName());
|
||||
}
|
||||
}
|
||||
|
||||
/**파일명을 분석한다.<br />
|
||||
* @param dataObject
|
||||
* @return
|
||||
*/
|
||||
public void analyzeFileName(DataObject dataObject, String noExtensionName) {
|
||||
|
||||
String fileNameItmesJSONString = descriptor.getFileNameItmes();
|
||||
|
||||
try {
|
||||
JSONParser jsonParser = new JSONParser(-1);
|
||||
JSONArray jsonArray = (JSONArray)jsonParser.parse(fileNameItmesJSONString);
|
||||
|
||||
String[] fileNameSplit = {};
|
||||
if(descriptor.getFileNameSeperator().equals("byte")) {
|
||||
|
||||
fileNameSplit = this.smartSplit(noExtensionName, jsonArray);
|
||||
|
||||
} else {
|
||||
|
||||
fileNameSplit = this.smartSplit(noExtensionName, descriptor.getFileNameSeperator());
|
||||
}
|
||||
|
||||
for(int i=0; i<jsonArray.size(); i++) {
|
||||
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
|
||||
|
||||
String key = jsonObject.keySet().iterator().next();
|
||||
|
||||
if(fileNameSplit.length > i) {
|
||||
dataObject.put(key, fileNameSplit[i]);
|
||||
} else {
|
||||
dataObject.put(key, "");
|
||||
}
|
||||
}
|
||||
|
||||
} catch (ParseException e) {
|
||||
throw new RuntimeException("파일명 분석 오류."+e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**파일내용을 분석한다.<br />
|
||||
* @param dataObject
|
||||
* @return
|
||||
*/
|
||||
abstract public void analyzeFileContent(DataObject dataObject, File file);
|
||||
|
||||
/**파일명이나 파일내용을 파싱한 후 데이터를 정제한다.<br />
|
||||
* @param dataObject
|
||||
* @return
|
||||
*/
|
||||
public void refineValue(DataObject dataObject) {
|
||||
|
||||
//공백 제거
|
||||
for(int i=0; i < allItem.length; i++) {
|
||||
dataObject.put(allItem[i],dataObject.string(allItem[i]).trim());
|
||||
}
|
||||
|
||||
//단속일시 설정
|
||||
if(!dataObject.string("CRDN_TIMESTAMP").equals("")) {
|
||||
dataObject.put("CRDN_YMD", dataObject.string("CRDN_TIMESTAMP").substring(0, 8));
|
||||
dataObject.put("CRDN_TM", dataObject.string("CRDN_TIMESTAMP").substring(8, 14));
|
||||
dataObject.put("CRDN_YMD_TM", dataObject.string("CRDN_TIMESTAMP").substring(0, 14));
|
||||
} else if(!dataObject.string("CRDN_YMD_TM").equals("")) {
|
||||
dataObject.put("CRDN_YMD", dataObject.string("CRDN_YMD_TM").substring(0, 8));
|
||||
dataObject.put("CRDN_TM", dataObject.string("CRDN_YMD_TM").substring(8, 14));
|
||||
dataObject.put("CRDN_TIMESTAMP", dataObject.string("CRDN_YMD_TM")+"000");
|
||||
} else if(!dataObject.string("CRDN_YMD").equals("")){
|
||||
dataObject.put("CRDN_YMD_TM", dataObject.string("CRDN_YMD")+dataObject.string("CRDN_TM"));
|
||||
dataObject.put("CRDN_TIMESTAMP", dataObject.string("CRDN_YMD")+dataObject.string("CRDN_TM")+"000");
|
||||
}
|
||||
|
||||
//숫자형 값에서 불필요한 0제거
|
||||
String[] numberValues = {"PHOTO_CNT", "GPS_X", "GPS_Y", "MOSC_X", "MOSC_Y", "PLATE_WIDHT", "PLATE_HEIGHT"};
|
||||
this.refineNumberValue(dataObject, numberValues);
|
||||
|
||||
//코드변환
|
||||
CodeConverter codeConverter = new CodeConverter(allCode);
|
||||
|
||||
//위반내용
|
||||
String vltnGroup = "";
|
||||
switch (descriptor.getTaskSeCd()) {
|
||||
case "PVS" -> { vltnGroup = "FIM004"; }
|
||||
case "BPV" -> { vltnGroup = "FIM005"; }
|
||||
case "DPV" -> { vltnGroup = "FIM006"; }
|
||||
case "ECA" -> { vltnGroup = "FIM061"; }
|
||||
case "PES" -> { vltnGroup = "FIM064"; }
|
||||
}
|
||||
if(!vltnGroup.equals("")) {
|
||||
codeConverter.fillIfEmpty(dataObject, vltnGroup, "VLTN_CD", "VLTN_NM");
|
||||
}
|
||||
|
||||
//특별구역
|
||||
codeConverter.fillIfEmpty(dataObject, "FIM007", "CRDN_SPAREA_CD", "CRDN_SPAREA_NM");
|
||||
|
||||
codeConverter.fillIfEmpty(dataObject, "PHOTO_TYPE", "PHOTO_TYPE_CD", "PHOTO_TYPE_NM");
|
||||
codeConverter.fillIfEmpty(dataObject, "FILE_STATUS", "FILE_STATUS_CD", "FILE_STATUS_NM");
|
||||
codeConverter.fillIfEmpty(dataObject, "CRDN_CN", "CRDN_CN_CD", "CRDN_CN_NM");
|
||||
}
|
||||
|
||||
/** dataObject 내에서 숫자형 데이터 항목을 정제한다.<br />
|
||||
* @param dataObject, items 숫자형 데이터 이름
|
||||
* @return
|
||||
*/
|
||||
public void refineNumberValue(DataObject dataObject, String[] items) {
|
||||
for(int i=0;i<items.length;i++) {
|
||||
String itemValue = dataObject.string(items[i]);
|
||||
if(!itemValue.equals("")) {
|
||||
//소수부 0제거
|
||||
if(itemValue.contains(".")) {
|
||||
|
||||
boolean end = false;
|
||||
while(!end) {
|
||||
String removed = StringUtils.removeEnd(itemValue, "0");
|
||||
if(removed.equals(itemValue)) {
|
||||
end = true;
|
||||
} else {
|
||||
itemValue = removed;
|
||||
}
|
||||
}
|
||||
|
||||
if(itemValue.endsWith(".")){
|
||||
itemValue = itemValue + "0";
|
||||
}
|
||||
}
|
||||
|
||||
//정수부 0제거
|
||||
if(itemValue.startsWith("0") && !itemValue.equals("0") && !itemValue.startsWith("0.")) {
|
||||
itemValue = itemValue.replaceAll("^0+", "");
|
||||
if(itemValue.equals("") || itemValue.startsWith(".")) {
|
||||
itemValue = "0" + itemValue;
|
||||
}
|
||||
}
|
||||
|
||||
dataObject.put(items[i], itemValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**현재 연계 파일의 정보가 이전 연계 파일의 정보와 다른 단속건인지 판단한다.<br />
|
||||
* @param currentItem 현재 연계 파일 정보, beforeItem 이전 연계 파일 정보
|
||||
* @return 개별 단속자료 여부
|
||||
*/
|
||||
public boolean isChangeCrackdown(DataObject currentItem, DataObject beforeItem) {
|
||||
boolean isSameItemChange = false;
|
||||
String sameItems = descriptor.getSameItemsInFileGroup();
|
||||
String[] sameItemsSplit = sameItems.split(",",-1);
|
||||
for(int i=0; i < sameItemsSplit.length; i++) {
|
||||
if(!currentItem.string(sameItemsSplit[i]).equals(beforeItem.string(sameItemsSplit[i]))) {
|
||||
isSameItemChange = true;
|
||||
}
|
||||
}
|
||||
if(isSameItemChange) {
|
||||
return true;
|
||||
}
|
||||
|
||||
String increaseItem = descriptor.getIncreaseItemInFileGroup();
|
||||
if(increaseItem != null && !increaseItem.equals("")) {
|
||||
String increaseType = descriptor.getIncreaseTypeInFileGroup();
|
||||
|
||||
if(increaseType.equals("number")){
|
||||
if(currentItem.number(increaseItem).intValue() <= beforeItem.number(increaseItem).intValue()) {
|
||||
return true;
|
||||
}
|
||||
} else if(increaseType.equals("alphabet")) {
|
||||
if(currentItem.string(increaseItem).charAt(0) <= beforeItem.string(increaseItem).charAt(0)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**파일명이나 파일내용을 특정 구분자로 자른다.<br />
|
||||
* @param string 문자열, sep 구분자
|
||||
* @return
|
||||
*/
|
||||
public String[] smartSplit(String string, String sep) {
|
||||
if(sep.equals("LineBreak")) {
|
||||
return string.split("\r?\n|\r");
|
||||
} else {
|
||||
return string.split(Matcher.quoteReplacement(sep));
|
||||
}
|
||||
}
|
||||
|
||||
/**파일명이나 파일내용을 바이트로 자른다.<br />
|
||||
* @param string 문자열, sep 구분자
|
||||
* @return
|
||||
*/
|
||||
public String[] smartSplit(String string, JSONArray jsonArray) {
|
||||
Hangul hangul = new Hangul(2);
|
||||
|
||||
List<Integer> byteNums = new ArrayList<Integer>();
|
||||
for(int i=0; i<jsonArray.size(); i++) {
|
||||
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
|
||||
String key = jsonObject.keySet().iterator().next();
|
||||
int byteNum = Integer.parseInt((String)jsonObject.get(key));
|
||||
byteNums.add(byteNum);
|
||||
}
|
||||
|
||||
String[] result = new String[byteNums.size()];
|
||||
|
||||
int cursor = 1;
|
||||
for(int i=0; i<byteNums.size(); i++) {
|
||||
int byteNum = byteNums.get(i);
|
||||
result[i] = hangul.substringByBytes(string, cursor, cursor+(byteNum-1));
|
||||
cursor += byteNum;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**레이아웃 설정 정보의 byte를 합계를 반환한다.<br />
|
||||
* @param jsonArray 레이아웃 설정정보
|
||||
* @return
|
||||
*/
|
||||
public int getSumByte(JSONArray jsonArray){
|
||||
int result = 0;
|
||||
for(int i=0; i<jsonArray.size(); i++) {
|
||||
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
|
||||
String key = jsonObject.keySet().iterator().next();
|
||||
int byteNum = Integer.parseInt((String)jsonObject.get(key));
|
||||
result += byteNum;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -1,21 +0,0 @@
|
||||
package cokr.xit.fims.crdn.receive.eqpmnt;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
|
||||
public class OnlyImageParser extends LayoutParser {
|
||||
|
||||
public OnlyImageParser(){
|
||||
super();
|
||||
this.groupingType = "JPG";
|
||||
this.need = new Need(true,false,true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void analyzeFileContent(DataObject dataObject, File file) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,143 +0,0 @@
|
||||
package cokr.xit.fims.crdn.receive.eqpmnt;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Base64;
|
||||
import java.util.Base64.Decoder;
|
||||
import java.util.Base64.Encoder;
|
||||
|
||||
import cokr.xit.base.file.FileInfo;
|
||||
import cokr.xit.fims.cmmn.Hangul;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import net.minidev.json.JSONArray;
|
||||
import net.minidev.json.JSONObject;
|
||||
import net.minidev.json.parser.JSONParser;
|
||||
|
||||
public class SingleFileParser extends LayoutParser {
|
||||
|
||||
public SingleFileParser(){
|
||||
super();
|
||||
this.groupingType = "BIN";
|
||||
this.need = new Need(false,true,false);
|
||||
}
|
||||
|
||||
/**파일내용을 분석한다.<br />
|
||||
* @param dataObject
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void analyzeFileContent(DataObject dataObject, File file) {
|
||||
try {
|
||||
JSONParser jsonParser = new JSONParser(-1);
|
||||
|
||||
JSONArray jsonArray = (JSONArray)jsonParser.parse(descriptor.getContentItems());
|
||||
|
||||
//텍스트 영역 파싱
|
||||
BufferedReader textReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.forName("EUC-KR")));
|
||||
Hangul hangul = new Hangul(2);
|
||||
String textConent = hangul.substringByBytes(org.apache.commons.io.IOUtils.toString(textReader), 1, this.getSumByte(jsonArray));
|
||||
|
||||
String[] contentSplit = {};
|
||||
|
||||
if(descriptor.getContentSeperator().equals("byte")) {
|
||||
contentSplit = this.smartSplit(textConent, jsonArray);
|
||||
} else {
|
||||
contentSplit = this.smartSplit(textConent, descriptor.getContentSeperator());
|
||||
}
|
||||
|
||||
for(int i=0; i<jsonArray.size(); i++) {
|
||||
|
||||
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
|
||||
|
||||
String key = jsonObject.keySet().iterator().next();
|
||||
|
||||
if(contentSplit.length > i) {
|
||||
dataObject.put(key, contentSplit[i]);
|
||||
} else {
|
||||
dataObject.put(key, "");
|
||||
}
|
||||
}
|
||||
|
||||
textReader.close();
|
||||
|
||||
//이미지 영역 파싱
|
||||
BufferedReader imageReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.forName("ISO-8859-1")));
|
||||
|
||||
String imgContent = org.apache.commons.io.IOUtils.toString(imageReader).substring(this.getSumByte(jsonArray));
|
||||
|
||||
Encoder encoder = Base64.getEncoder();
|
||||
|
||||
String jpgString = "";
|
||||
String jpgName = "";
|
||||
boolean jpgIn = false;
|
||||
int jpgNum = 0;
|
||||
String jpgNamePiece = "";
|
||||
for (int i = 0; i < imgContent.length(); i++) {
|
||||
|
||||
boolean jpgStart = (i != imgContent.length()-1) && (imgContent.charAt(i) == 0xFF && imgContent.charAt(i+1) == 0xD8);
|
||||
boolean jpgEnd = (i != 0) && (imgContent.charAt(i-1) == 0xFF && imgContent.charAt(i) == 0xD9);
|
||||
|
||||
if(!jpgIn && !jpgStart) {
|
||||
jpgNamePiece += imgContent.charAt(i);
|
||||
}
|
||||
|
||||
if(jpgStart) {
|
||||
|
||||
jpgName = jpgNamePiece;
|
||||
jpgNamePiece = "";
|
||||
jpgIn = true;
|
||||
}
|
||||
|
||||
if(jpgIn) {
|
||||
jpgString += imgContent.charAt(i);
|
||||
}
|
||||
|
||||
if(jpgIn && jpgEnd) {
|
||||
|
||||
jpgNum++;
|
||||
|
||||
jpgString = new String(encoder.encode(jpgString.getBytes(Charset.forName("ISO-8859-1"))));
|
||||
|
||||
dataObject.put("B64IMAGE"+(jpgNum), jpgString);
|
||||
dataObject.put("B64IMAGE"+(jpgNum)+"_NM", jpgName);
|
||||
|
||||
jpgString = "";
|
||||
jpgIn = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
imageReader.close();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/** 베이스64문자열 이미지로 fileInfo를 생성한다. <br />
|
||||
* @param fileName 파일명, base64str 베이스64문자열, sortOrder 파일순서
|
||||
* @return fileInfo 파일정보
|
||||
*/
|
||||
public static FileInfo base64ToFileInfo(String fileName, String base64str, int sortOrder) {
|
||||
try {
|
||||
Decoder decoder = Base64.getDecoder();
|
||||
byte[] b64byte = decoder.decode(base64str.getBytes("ISO-8859-1"));
|
||||
InputStream is = new ByteArrayInputStream(b64byte);
|
||||
|
||||
FileInfo fileInfo = new FileInfo();
|
||||
fileInfo.setName(fileName+".jpg");
|
||||
fileInfo.setInputStream(is);
|
||||
fileInfo.setMimeType("image/jpeg");
|
||||
fileInfo.setSize(is.available());
|
||||
fileInfo.setSortOrder(sortOrder);
|
||||
return fileInfo;
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,101 +0,0 @@
|
||||
package cokr.xit.fims.crdn.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import cokr.xit.base.file.FileInfo;
|
||||
import cokr.xit.fims.crdn.Crdn;
|
||||
import cokr.xit.fims.crdn.CrdnQuery;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public interface CrdnService {
|
||||
|
||||
/** 단속자료 목록을 조회한다.
|
||||
* @param query 단속자료 목록 조회 조건
|
||||
* <ul><li>pageNum: 페이지 번호</li>
|
||||
* <li>fetchSize: 페이지 목록 건수</li>
|
||||
* </ul>
|
||||
* @return 단속자료 목록
|
||||
*/
|
||||
List<DataObject> getCrackdownList(CrdnQuery query);
|
||||
|
||||
/** 단속자료를 삭제한다.
|
||||
* @param crdnIds 삭제할 단속자료 ID 목록
|
||||
* @return 삭제여부
|
||||
*/
|
||||
String remove(String... crdnIds);
|
||||
|
||||
/** 단속 자료를 신규 등록한다.
|
||||
* @param nonQueryRequest 등록 요청, crdn 단속정보, newFileList 업로드 파일 목록
|
||||
* @return 저장여부
|
||||
*/
|
||||
String create(Map<String, Object> nonQueryRequest, Crdn crdn, List<FileInfo> newFileInfoList);
|
||||
|
||||
/** 단속 자료를 수정한다.
|
||||
* @param nonQueryRequest 수정 요청, crdn 단속정보, newFileInfoList 업로드 파일 목록
|
||||
* @return 저장여부
|
||||
*/
|
||||
String update(Map<String,Object> nonQueryRequest, Crdn crdn, List<FileInfo> newFileInfoList);
|
||||
|
||||
/** 시간초과 정보를 변경하고, 금액을 증가 또는 감소시킨다.
|
||||
* @param chgAmtSe 금액 변경 구분, crdnId 단속 ID
|
||||
* @return 저장여부
|
||||
*/
|
||||
String updateOverTimeInfo(String chgAmtSe, String crdnId);
|
||||
|
||||
/** 표지정보 미확인 자료를 확인 자료로 수정한다.
|
||||
* @param crdn 단속정보
|
||||
* @return 저장여부
|
||||
*/
|
||||
String updateTagInfo(Crdn crdn);
|
||||
|
||||
/** 단속 자료를 조회한다.
|
||||
* @param query 단속 조회 조건
|
||||
* @return 단속 정보
|
||||
*/
|
||||
DataObject getCrackdownInfo(CrdnQuery query);
|
||||
|
||||
/** 단속 자료를 수정한다.
|
||||
* @param crdn 단속정보
|
||||
* @return 저장 메시지
|
||||
*/
|
||||
String updateCrackdown(Crdn crdn);
|
||||
|
||||
/** 단속 자료를 삭제한다.
|
||||
* @param crdn 단속정보
|
||||
* @return 저장 메시지
|
||||
*/
|
||||
String removeCrackdown(Crdn crdn);
|
||||
|
||||
/** 단속 자료의 납부자 ID를 삭제한다.
|
||||
* @param crdn 단속정보
|
||||
* @return 저장 메시지
|
||||
*/
|
||||
String removeCrackdownPayer(Crdn crdn);
|
||||
|
||||
/** 단속 자료의 처리 상태 코드를 수정한다.
|
||||
* @param crdn 단속정보
|
||||
* @return 저장 메시지
|
||||
*/
|
||||
String updateCrackdownStatus(Crdn crdn);
|
||||
|
||||
/** 장비 연계파일을 삭제한다.
|
||||
* @param entType 업체유형, fileName 파일명
|
||||
* @return 저장 여부
|
||||
*/
|
||||
String removeEquipmentLinkFile(String workPath, String fileName);
|
||||
|
||||
/** 단속 사진에 대한 파일 처리를 실행한다.
|
||||
* @param crdn 단속정보, processList 파일 처리 목록
|
||||
* @return 처리 결과 메시지
|
||||
*/
|
||||
String changeCrdnImageFile(Crdn crdn, List<Map<String, Object>> processList);
|
||||
|
||||
/** 단속자료 건수를 조회한다.
|
||||
* @param crdnQuery 단속자료 조회조건
|
||||
* @return 단속자료 건수
|
||||
*/
|
||||
int countCrdn(CrdnQuery crdnQuery);
|
||||
|
||||
|
||||
}
|
||||
@ -1,116 +0,0 @@
|
||||
package cokr.xit.fims.crdn.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.fims.cmmn.ftp.RemoteSystemInfo;
|
||||
import cokr.xit.fims.crdn.CrdnQuery;
|
||||
import cokr.xit.fims.crdn.ExmptnVhcl;
|
||||
import cokr.xit.fims.crdn.Team;
|
||||
import cokr.xit.fims.crdn.receive.eqpmnt.LayoutDescriptor;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public interface CrdnStngService {
|
||||
|
||||
/** 연계파일 레이아웃 목록을 조회한다.
|
||||
* @param query 조회조건
|
||||
* @return 연계파일 레이아웃 목록
|
||||
*/
|
||||
List<DataObject> getLinkFileLayoutMetadataList(CrdnQuery query);
|
||||
|
||||
/** 연계파일 레이아웃 상세정보를 조회한다.
|
||||
* @param fileLayoutId 파일 레이아웃 ID
|
||||
* @return 연계파일 레이아웃 상세정보
|
||||
*/
|
||||
DataObject getLinkFileLayoutMetadataInfo(String fileLayoutId);
|
||||
|
||||
/** 연계파일 레이아웃 정보를 등록한다.
|
||||
* @param layoutDescriptor 레이아웃 정보, remoteSystemInfo 파일연계 원격시스템 정보
|
||||
* @return 결과메시지
|
||||
*/
|
||||
String createLinkFileLayoutMetadata(LayoutDescriptor layoutDescriptor, RemoteSystemInfo remoteSystemInfo);
|
||||
|
||||
/** 연계파일 레이아웃 정보를 수정한다.
|
||||
* @param layoutDescriptor 레이아웃 정보, remoteSystemInfo 파일연계 원격시스템 정보
|
||||
* @return 결과메시지
|
||||
*/
|
||||
String updateLinkFileLayoutMetadata(LayoutDescriptor layoutDescriptor, RemoteSystemInfo remoteSystemInfo);
|
||||
|
||||
/** 연계파일 레이아웃 정보를 삭제한다.
|
||||
* @param fileLayoutId 파일 레이아웃 ID
|
||||
* @return 결과메시지
|
||||
*/
|
||||
String removeLinkFileLayoutMetadata(String fileLayoutId);
|
||||
|
||||
/** 연계파일 레이아웃 엔티티 목록을 조회한다.
|
||||
* @param sggCd 시군구코드, taskSeCd 과태료구분, instCd 기관코드, deptCd 부서코드
|
||||
* @return 연계파일 레이아웃 정보
|
||||
*/
|
||||
List<LayoutDescriptor> getLinkFileLayoutMetadata(String sggCd, String taskSeCd, String instCd, String deptCd);
|
||||
|
||||
/** 단속팀 목록을 조회한다.
|
||||
* @param query 단속팀 목록 조회 조건
|
||||
* @return 단속팀 목록
|
||||
*/
|
||||
List<DataObject> getTeamList(CrdnQuery query);
|
||||
|
||||
/** 비사용 단속팀 목록을 조회한다.
|
||||
* @param query 비사용 단속팀 목록 조회 조건
|
||||
* @return 비사용 단속팀 목록
|
||||
*/
|
||||
List<DataObject> getRemovedTeamList(CrdnQuery query);
|
||||
|
||||
/** 단속팀 정보를 삭제한다.
|
||||
* @param teamId 단속팀 ID
|
||||
* @return 저장여부
|
||||
*/
|
||||
String removeTeamInfo(String teamId);
|
||||
|
||||
/** 단속팀 정보를 저장한다.
|
||||
* @param team 단속팀 정보
|
||||
* @return 저장여부
|
||||
*/
|
||||
String saveTeamInfo(Team team);
|
||||
|
||||
/** 단속팀 정보을 조회한다.
|
||||
* @param teamId 단속팀 ID
|
||||
* @return 단속팀 정보
|
||||
*/
|
||||
DataObject getTeamInfo(String teamId);
|
||||
|
||||
/** 면제차량 목록을 조회한다.
|
||||
* @param query 면제차량 목록 조회 조건
|
||||
* @return 단속팀 목록
|
||||
*/
|
||||
List<DataObject> getExemptionVehicleList(CrdnQuery query);
|
||||
|
||||
/** 면제차량 정보을 조회한다.
|
||||
* @param exemptionVehicleId 면제차량 ID
|
||||
* @return 면제차량 정보
|
||||
*/
|
||||
DataObject getExemptionVehicleInfo(String exemptionVehicleId);
|
||||
|
||||
/** 면제차량 정보를 등록한다.
|
||||
* @param exmptnVhcl 면제차량 정보
|
||||
* @return 저장여부
|
||||
*/
|
||||
String createExemptionVehicleInfo(ExmptnVhcl exmptnVhcl);
|
||||
|
||||
/** 면제차량 정보를 수정한다.
|
||||
* @param exmptnVhcl 면제차량 정보
|
||||
* @return 저장여부
|
||||
*/
|
||||
String updateExemptionVehicleInfo(ExmptnVhcl exmptnVhcl);
|
||||
|
||||
/** 면제차량 정보를 삭제한다.
|
||||
* @param exmptnVhcl 면제차량 정보
|
||||
* @return 저장여부
|
||||
*/
|
||||
String removeExemptionVehicleInfo(ExmptnVhcl exmptnVhcl);
|
||||
|
||||
/** 면제차량 이력을 조회한다.
|
||||
* @param exemptionVehicleId 면제차량 ID
|
||||
* @return 면제차량 이력
|
||||
*/
|
||||
List<DataObject> getExemptionVehicleHistoryList(String exmptnVhclId);
|
||||
|
||||
}
|
||||
@ -1,24 +0,0 @@
|
||||
package cokr.xit.fims.crdn.service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**외부 연계 파일에서 단속자료를 추출하여 등록하는 서비스
|
||||
* @author mjkhan
|
||||
*/
|
||||
public interface ImportService {
|
||||
/**국민신문고에서 수신한 연계파일에서 단속자료를 추출하여 등록한다.
|
||||
* @param interfaceSequences 외부연계 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int createCrdns(List<String> interfaceSequences);
|
||||
|
||||
/** 장비 연계 파일로 단속자료를 생성한다.
|
||||
* @param dataObject 연계 파일 정보
|
||||
* @return 저장 여부
|
||||
*/
|
||||
HashMap<String, Object> createCrdnByEquipmentLinkFile(Map<String,String> processInfo, List<DataObject> linkFileInfoList);
|
||||
}
|
||||
@ -1,416 +0,0 @@
|
||||
package cokr.xit.fims.crdn.service.bean;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cokr.xit.base.file.FileInfo;
|
||||
import cokr.xit.base.file.service.bean.FileBean;
|
||||
import cokr.xit.fims.cmmn.CmmnUtil;
|
||||
import cokr.xit.fims.cmmn.CrdnPayerHstry;
|
||||
import cokr.xit.fims.cmmn.CrdnSttsHstry;
|
||||
import cokr.xit.fims.cmmn.service.bean.CrdnPayerHstryBean;
|
||||
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
|
||||
import cokr.xit.fims.crdn.Crdn;
|
||||
import cokr.xit.fims.crdn.Team;
|
||||
import cokr.xit.fims.crdn.dao.CrdnInfoMapper;
|
||||
import cokr.xit.fims.crdn.dao.CrdnInstMapper;
|
||||
import cokr.xit.fims.crdn.dao.CrdnTeamMapper;
|
||||
import cokr.xit.fims.crdn.dao.CrdnUpdtMapper;
|
||||
import cokr.xit.fims.excl.LevyExcl;
|
||||
import cokr.xit.fims.excl.service.bean.LevyExclBean;
|
||||
import cokr.xit.fims.sprt.dao.TotalInfoMapper;
|
||||
import cokr.xit.foundation.UserInfo;
|
||||
import cokr.xit.foundation.component.AbstractBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/** 단속 관리 Bean
|
||||
* @author leebj
|
||||
*/
|
||||
@Component("crdnBean")
|
||||
public class CrdnBean extends AbstractBean {
|
||||
|
||||
@Resource(name = "crdnStngBean")
|
||||
private CrdnStngBean crdnStngBean;
|
||||
|
||||
@Resource(name = "levyExclBean")
|
||||
protected LevyExclBean levyExclBean;
|
||||
|
||||
@Resource(name = "crdnSttsHstryBean")
|
||||
private CrdnSttsHstryBean crdnSttsHstryBean;
|
||||
|
||||
@Resource(name = "crdnPayerHstryBean")
|
||||
private CrdnPayerHstryBean crdnPayerHstryBean;
|
||||
|
||||
@Resource(name = "fileBean")
|
||||
private FileBean fileBean;
|
||||
|
||||
@Resource(name = "crdnInfoMapper")
|
||||
private CrdnInfoMapper crdnInfoMapper;
|
||||
|
||||
@Resource(name = "crdnInstMapper")
|
||||
private CrdnInstMapper crdnInstMapper;
|
||||
|
||||
@Resource(name = "crdnUpdtMapper")
|
||||
private CrdnUpdtMapper crdnUpdtMapper;
|
||||
|
||||
@Resource(name = "crdnTeamMapper")
|
||||
private CrdnTeamMapper crdnTeamMapper;
|
||||
|
||||
@Resource(name = "totalInfoMapper")
|
||||
private TotalInfoMapper totalInfoMapper;
|
||||
|
||||
public boolean create(Map<String, Object> nonQueryRequest, Crdn crdn, List<FileInfo> fileInfoList) {
|
||||
if(fileInfoList != null && !fileInfoList.isEmpty()) {
|
||||
crdn.setAtchFileCnt(fileInfoList.size());
|
||||
} else {
|
||||
crdn.setAtchFileCnt(0);
|
||||
}
|
||||
|
||||
//금액 계산
|
||||
int[] basicAmt = crdnStngBean.getBasicAmt(crdn);
|
||||
crdn.setFfnlgCrdnAmt(basicAmt[0]);
|
||||
crdn.setFfnlgAmt(basicAmt[0]);
|
||||
crdn.setAdvntceAmt(basicAmt[1]);
|
||||
|
||||
//단속팀 정보 갱신
|
||||
if(!ifEmpty(crdn.getTeamId(), () -> "").equals("")) {
|
||||
DataObject teamInfo = crdnTeamMapper.selectTeamInfo(crdn.getTeamId());
|
||||
|
||||
Team team = new Team();
|
||||
team.setTaskSeCd(crdn.getTaskSeCd());
|
||||
team.setSggCd(crdn.getSggCd());
|
||||
team.setTeamNm(teamInfo.string("TEAM_NM"));
|
||||
team.setCrdnSeCd(crdn.getCrdnSeCd());
|
||||
team.setTeamer1(crdn.getTeamer1());
|
||||
team.setTeamer2(crdn.getTeamer2());
|
||||
team.setTeamer3(crdn.getTeamer3());
|
||||
team.setTeamer4(crdn.getTeamer4());
|
||||
|
||||
crdnStngBean.saveTeamInfo(true, team);
|
||||
}
|
||||
|
||||
//상태코드 설정
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
if(ifEmpty(crdn.getCrdnSttsCd(), () -> "").equals("")){ //상태코드가 없을경우
|
||||
if(ifEmpty(crdn.getCvlcptLinkYn(), () -> "").equals("Y")) { //민원연계자료일 경우
|
||||
crdn.setCrdnSttsCd("01"); //초기상태
|
||||
crdn.setCrdnSttsChgDt(dateFormat.format(System.currentTimeMillis()));
|
||||
} else { //민원연계자료가 아닐 경우
|
||||
if(ifEmpty(crdn.getRtpyrId(), () -> "").equals("")) { //납부자가 정보가 없을 경우
|
||||
crdn.setCrdnSttsCd("01"); //초기상태
|
||||
crdn.setCrdnSttsChgDt(dateFormat.format(System.currentTimeMillis()));
|
||||
} else {
|
||||
crdn.setCrdnSttsCd("21"); //납부자등록완료
|
||||
crdn.setCrdnSttsChgDt(dateFormat.format(System.currentTimeMillis()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//단속 대장 등록
|
||||
boolean result = this.createLedger(crdn);
|
||||
if (!result) {
|
||||
throw new RuntimeException("단속자료 등록 중 단속자료 등록에 실패하였습니다.");
|
||||
}
|
||||
|
||||
SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd");
|
||||
Date curTime = new Date();
|
||||
String strCurrentDate = yyyyMMdd.format(curTime);
|
||||
|
||||
String taskDtlId = crdn.getCrdnId();
|
||||
|
||||
if(crdn.getCrdnSttsCd().equals("83")) {
|
||||
// 부과제외(TB_LEVY_EXCL) 대장 등록
|
||||
LevyExcl excl01 = new LevyExcl();
|
||||
excl01.setCrdnId(crdn.getCrdnId());
|
||||
excl01.setLevyExclYmd(strCurrentDate);
|
||||
excl01.setLevyExclSeCd("2");
|
||||
excl01.setLevyExclRsnCd("192");
|
||||
excl01.setEtcCn("");
|
||||
|
||||
String rtnScs = levyExclBean.createLevyExcl(excl01);
|
||||
if (rtnScs.contains("[F]")) {
|
||||
throw new RuntimeException("단속자료 등록 중 부과제외 자료 등록에 실패하였습니다.");
|
||||
}
|
||||
|
||||
taskDtlId = excl01.getLevyExclId();
|
||||
}
|
||||
|
||||
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장 등록
|
||||
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
|
||||
crdnSttsHstry.setCrdnId(crdn.getCrdnId());
|
||||
crdnSttsHstry.setBfrSttsCd("");
|
||||
crdnSttsHstry.setBfrSttsChgDt("");
|
||||
crdnSttsHstry.setCrdnSttsCd(crdn.getCrdnSttsCd());
|
||||
crdnSttsHstry.setTaskDtlId(taskDtlId);
|
||||
crdnSttsHstry.setEtcCn("");
|
||||
|
||||
result = crdnSttsHstryBean.create(crdnSttsHstry);
|
||||
if (!result) {
|
||||
throw new RuntimeException("단속자료 등록 중 단속상태 이력 등록에 실패하였습니다.");
|
||||
}
|
||||
|
||||
//단속납부자이력(TB_CRDN_PAYER_HSTRY) 대장 등록
|
||||
if(!ifEmpty(crdn.getRtpyrId(), () -> "").equals("")) {
|
||||
CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry();
|
||||
crdnPayerHstry.setCrdnId(crdn.getCrdnId());
|
||||
crdnPayerHstry.setRtpyrId(crdn.getRtpyrId());
|
||||
crdnPayerHstry.setAddrSn(crdn.getAddrSn());
|
||||
result = crdnPayerHstryBean.createCrdnPayerHstry(crdnPayerHstry);
|
||||
if (!result) {
|
||||
throw new RuntimeException("단속자료 등록 중 단속 납부자 이력 등록에 실패하였습니다.");
|
||||
}
|
||||
|
||||
// 단속 대장의 납부자ID 수정 및 단속 납부자 이력(TB_CRDN_PAYER_HSTRY) 대장에 등록한다.
|
||||
result = crdnPayerHstryBean.createCrdnPayerAddrHstry(crdnPayerHstry);
|
||||
if (!result) {
|
||||
throw new RuntimeException("단속자료 등록 중 단속 납부자주소 이력 등록에 실패하였습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
//파일 등록
|
||||
if(fileInfoList != null && !fileInfoList.isEmpty()) {
|
||||
fileInfoList.forEach(fileInfo -> fileInfo.setInfoType(Crdn.INF_TYPE).setInfoKey(crdn.getCrdnId()));
|
||||
int effected = fileBean.create(fileInfoList);
|
||||
if(effected == 0) {
|
||||
throw new RuntimeException("단속자료 등록 중 파일 등록에 실패하였습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**단속 대장 정보를 등록한다.
|
||||
* @param crdn 단속 대장
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean createLedger(Crdn crdn) {
|
||||
|
||||
int effected = crdnInstMapper.insertCrdn(crdn);
|
||||
if(effected != 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
effected = crdnInstMapper.insertCrdnAddition(crdn);
|
||||
if(effected != 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**단속 대장 정보를 수정한다.
|
||||
* @param nonQueryRequest 수정 요청, crdn 단속 대장
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean updateLedger(Map<String,Object> nonQueryRequest, Crdn crdn) {
|
||||
String updateInfomationType = (String)ifEmpty(nonQueryRequest.get("updateInfomationType"), "") ;
|
||||
|
||||
switch (ifEmpty(updateInfomationType, () -> "")) {
|
||||
default:
|
||||
if(crdnUpdtMapper.updateCrdnAddition(crdn) != 1) {
|
||||
return false;
|
||||
}
|
||||
return crdnUpdtMapper.updateCrdn(crdn) == 1 ? true : false;
|
||||
}
|
||||
}
|
||||
|
||||
/**단속 정보를 삭제한다.
|
||||
* @param crdnIds 단속아이디 목록
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean remove(String... crdnIds) {
|
||||
if (isEmpty(crdnIds)) return false;
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<String, Object>();
|
||||
List<String> crdnIdList = Arrays.asList(crdnIds);
|
||||
paramMap.put("crdnIds", crdnIdList);
|
||||
paramMap.put("removedBy", UserInfo.current().getId());
|
||||
|
||||
return crdnUpdtMapper.deleteCrdn(paramMap) >= 1 ? true : false;
|
||||
}
|
||||
|
||||
/**단속 자료를 수정한다.
|
||||
* @param crdn 단속
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public String updateCrackdown(Crdn crdn) {
|
||||
// 변수 선언
|
||||
int effected = 0; // DB 처리 결과
|
||||
|
||||
//금액 계산
|
||||
int[] basicAmt = crdnStngBean.getBasicAmt(crdn);
|
||||
crdn.setFfnlgCrdnAmt(basicAmt[0]);
|
||||
crdn.setFfnlgAmt(basicAmt[0]);
|
||||
crdn.setAdvntceAmt(basicAmt[1]);
|
||||
|
||||
// 단속(TB_CRDN) 대장을 수정한다.
|
||||
effected = crdnUpdtMapper.updateEditCrdn(crdn);
|
||||
if (effected != 1) {
|
||||
throw new RuntimeException("단속 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
// 단속 부가 정보(TB_CRDN_ADI) 대장을 수정한다.
|
||||
effected = crdnUpdtMapper.updateCrdnAddition(crdn);
|
||||
if (effected != 1) {
|
||||
throw new RuntimeException("단속 부가 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
return "[S] 작업이 정상 처리 되었습니다.";
|
||||
}
|
||||
|
||||
/**단속 자료를 삭제한다.
|
||||
* @param crdn 단속
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public String removeCrackdown(Crdn crdn) {
|
||||
// 변수 선언
|
||||
boolean rtnScs = false; // DB 처리 결과
|
||||
int effected = 0;
|
||||
|
||||
// 단속 ID로 단속 정보 조회
|
||||
DataObject infoCrdn = crdnInfoMapper.selectCrdnInfo(crdn.getCrdnId());
|
||||
|
||||
// 단속상태이력(TB_CRDN_STTS_HSTRY)
|
||||
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
|
||||
crdnSttsHstry.setCrdnId(infoCrdn.string("CRDN_ID"));
|
||||
crdnSttsHstry.setBfrSttsCd(infoCrdn.string("CRDN_STTS_CD"));
|
||||
crdnSttsHstry.setBfrSttsChgDt(infoCrdn.string("CRDN_STTS_CHG_DT"));
|
||||
crdnSttsHstry.setCrdnSttsCd("99");
|
||||
|
||||
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록한다.
|
||||
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
|
||||
if (!rtnScs) {
|
||||
throw new RuntimeException("단속 삭제 중 단속 대장의 단속상태코드 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<String, Object>();
|
||||
List<String> crdnIdList = Arrays.asList(crdn.getCrdnId());
|
||||
paramMap.put("crdnIds", crdnIdList);
|
||||
paramMap.put("removedBy", UserInfo.current().getId());
|
||||
paramMap.put("delRsn", crdn.getDelRsn());
|
||||
|
||||
// 단속(TB_CRDN) 대장을 삭제한다.
|
||||
effected = crdnUpdtMapper.deleteCrdn(paramMap);
|
||||
if (effected != 1) {
|
||||
throw new RuntimeException("단속 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
// 단속(TB_CRDN) 대장을 삭제한다.
|
||||
effected = crdnUpdtMapper.deleteCrdnAdi(paramMap);
|
||||
if (effected != 1) {
|
||||
throw new RuntimeException("단속 부가 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
return "[S] 작업이 정상 처리 되었습니다.";
|
||||
}
|
||||
|
||||
/**단속 자료의 납부자 ID를 삭제한다.
|
||||
* @param crdn 단속
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public String removeCrackdownPayer(Crdn crdn) {
|
||||
// 단속(TB_CRDN) 대장에 납부자 ID를 삭제한다.
|
||||
int effected = crdnUpdtMapper.deleteCrdnPayer(crdn);
|
||||
if (effected != 1) {
|
||||
throw new RuntimeException("단속 자료의 납부자 정보가 없습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
return "[S] 작업이 정상 처리 되었습니다.";
|
||||
}
|
||||
|
||||
/**단속 자료의 처리 상태 코드를 수정한다.
|
||||
* @param crdn 단속
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public String updateCrackdownStatus(Crdn crdn) {
|
||||
// 단속 ID로 단속 정보 조회
|
||||
DataObject infoCrdn = crdnInfoMapper.selectCrdnInfo(crdn.getCrdnId());
|
||||
|
||||
// 단속상태이력(TB_CRDN_STTS_HSTRY)
|
||||
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
|
||||
crdnSttsHstry.setCrdnId(infoCrdn.string("CRDN_ID"));
|
||||
crdnSttsHstry.setBfrSttsCd(infoCrdn.string("CRDN_STTS_CD"));
|
||||
crdnSttsHstry.setBfrSttsChgDt(infoCrdn.string("CRDN_STTS_CHG_DT"));
|
||||
crdnSttsHstry.setEtcCn("[개별총정보-단속상태변경] " + crdn.getEtcCn());
|
||||
crdnSttsHstry.setCrdnSttsCd(crdn.getCrdnSttsCd());
|
||||
|
||||
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록한다.
|
||||
boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
|
||||
if (!rtnScs) {
|
||||
throw new RuntimeException("단속 대장의 단속상태코드 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
||||
}
|
||||
|
||||
return "[S] 작업이 정상 처리 되었습니다.";
|
||||
}
|
||||
|
||||
/** 장비 연계파일을 삭제한다.
|
||||
* @param workPath 작업 디렉토리, fileName 파일명
|
||||
* @return 저장 여부
|
||||
*/
|
||||
public boolean removeEquipmentLinkFile(String workPath, String fileName) {
|
||||
boolean saved = false;
|
||||
|
||||
try {
|
||||
|
||||
Stream<Path> walk = Files.walk(Paths.get(workPath));
|
||||
|
||||
List<String> deleteFilePaths = new ArrayList<String>();
|
||||
|
||||
walk.filter(Files::isRegularFile)
|
||||
.filter(p -> p.toFile().getName().equalsIgnoreCase(fileName))
|
||||
.collect(Collectors.toList())
|
||||
.forEach(item -> deleteFilePaths.add(item.toFile().getPath()));
|
||||
|
||||
for(String deleteFilePath : deleteFilePaths) {
|
||||
saved = (new File(deleteFilePath)).delete();
|
||||
}
|
||||
|
||||
//빈 디렉토리 삭제
|
||||
CmmnUtil.deleteEmptyDir(new File(workPath), false);
|
||||
|
||||
walk.close();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
return saved;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,374 +0,0 @@
|
||||
package cokr.xit.fims.crdn.service.bean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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.service.bean.CodeBean;
|
||||
import cokr.xit.base.file.FileInfo;
|
||||
import cokr.xit.base.file.service.FileQuery;
|
||||
import cokr.xit.base.file.service.bean.FileBean;
|
||||
import cokr.xit.fims.cmmn.CmmnUtil;
|
||||
import cokr.xit.fims.cmmn.service.bean.CrdnPayerHstryBean;
|
||||
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
|
||||
import cokr.xit.fims.cmmn.service.bean.StngBean;
|
||||
import cokr.xit.fims.crdn.Crdn;
|
||||
import cokr.xit.fims.crdn.CrdnQuery;
|
||||
import cokr.xit.fims.crdn.dao.CrdnInfoMapper;
|
||||
import cokr.xit.fims.crdn.dao.CrdnInstMapper;
|
||||
import cokr.xit.fims.crdn.dao.CrdnListMapper;
|
||||
import cokr.xit.fims.crdn.dao.CrdnStngMapper;
|
||||
import cokr.xit.fims.crdn.dao.CrdnUpdtMapper;
|
||||
import cokr.xit.fims.crdn.dao.ImportMapper;
|
||||
import cokr.xit.fims.crdn.service.CrdnService;
|
||||
import cokr.xit.fims.cvlc.dao.CrdnCvlcptMapper;
|
||||
import cokr.xit.fims.cvlc.service.bean.CrdnCvlcptMainBean;
|
||||
import cokr.xit.fims.excl.service.bean.LevyExclBean;
|
||||
import cokr.xit.fims.mngt.dao.TaskMapper;
|
||||
import cokr.xit.fims.sprt.dao.TotalInfoMapper;
|
||||
import cokr.xit.fims.sprt.service.bean.MediaBean;
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
@Service("crdnService")
|
||||
public class CrdnServiceBean extends AbstractServiceBean implements CrdnService {
|
||||
|
||||
@Resource(name="crdnCvlcptMapper")
|
||||
private CrdnCvlcptMapper crdnCvlcptMapper;
|
||||
|
||||
@Resource(name="crdnListMapper")
|
||||
private CrdnListMapper crdnListMapper;
|
||||
|
||||
@Resource(name="crdnInstMapper")
|
||||
private CrdnInstMapper crdnInstMapper;
|
||||
|
||||
@Resource(name="crdnUpdtMapper")
|
||||
private CrdnUpdtMapper crdnUpdtMapper;
|
||||
|
||||
@Resource(name="crdnInfoMapper")
|
||||
private CrdnInfoMapper crdnInfoMapper;
|
||||
|
||||
@Resource(name="crdnStngMapper")
|
||||
private CrdnStngMapper crdnStngMapper;
|
||||
|
||||
@Resource(name="totalInfoMapper")
|
||||
private TotalInfoMapper totalInfoMapper;
|
||||
|
||||
@Resource(name="taskMapper")
|
||||
private TaskMapper taskMapper;
|
||||
|
||||
@Resource(name="fileBean")
|
||||
private FileBean fileBean;
|
||||
|
||||
@Resource(name="codeBean")
|
||||
private CodeBean codeBean;
|
||||
|
||||
@Resource(name="stngBean")
|
||||
private StngBean stngBean;
|
||||
|
||||
@Resource(name="mediaBean")
|
||||
private MediaBean mediaBean;
|
||||
|
||||
@Resource(name="importBean")
|
||||
private ImportBean importBean;
|
||||
|
||||
@Resource(name="importMapper")
|
||||
private ImportMapper importMapper;
|
||||
|
||||
@Resource(name="crdnStngBean")
|
||||
private CrdnStngBean crdnStngBean;
|
||||
|
||||
@Resource(name="crdnCvlcptMainBean")
|
||||
private CrdnCvlcptMainBean crdnCvlcptMainBean;
|
||||
|
||||
@Resource(name="crdnBean")
|
||||
private CrdnBean crdnBean;
|
||||
|
||||
@Resource(name = "levyExclBean")
|
||||
private LevyExclBean levyExclBean;
|
||||
|
||||
@Resource(name="crdnSttsHstryBean")
|
||||
private CrdnSttsHstryBean crdnSttsHstryBean;
|
||||
|
||||
@Resource(name="crdnPayerHstryBean")
|
||||
private CrdnPayerHstryBean crdnPayerHstryBean;
|
||||
|
||||
@Override
|
||||
public List<DataObject> getCrackdownList(CrdnQuery query) {
|
||||
|
||||
List<DataObject> dataObjectList = new ArrayList<DataObject>();
|
||||
switch (ifEmpty(query.getGridType(), () -> "")) {
|
||||
case "tagInformationUndefinedData":
|
||||
if (query.getOrderBy() == null) {
|
||||
if (query.getBy() == null) {
|
||||
query.setOrderBy("CRDN_ID");
|
||||
} else {
|
||||
query.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(query.getBy()));
|
||||
}
|
||||
}
|
||||
dataObjectList = crdnListMapper.selectTagInformationUndefinedDataList(query);
|
||||
break;
|
||||
case "photo":
|
||||
if (query.getOrderBy() == null) {
|
||||
if (query.getBy() == null) {
|
||||
query.setOrderBy("VHRNO, CRDN_PLC, CRDN_ID");
|
||||
} else {
|
||||
query.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(query.getBy()));
|
||||
}
|
||||
}
|
||||
dataObjectList = crdnListMapper.selectPhotoInspectionDataList(query);
|
||||
break;
|
||||
case "sameVehicleMain":
|
||||
if(ifEmpty(query.getSchOnlySamePlace(),() -> "").equals("on")) {
|
||||
query.setOrderBy("VHRNO, CRDN_STDG_NM");
|
||||
} else {
|
||||
query.setOrderBy("VHRNO");
|
||||
}
|
||||
dataObjectList = crdnListMapper.selectSameVehicleMainList(query);
|
||||
break;
|
||||
case "sameVehicleSub":
|
||||
dataObjectList = crdnListMapper.selectSameVehicleSubList(query.setOrderBy("CRDN_ID"));
|
||||
break;
|
||||
case "todayInsert":
|
||||
query.setOrderBy("CRDN_ID");
|
||||
dataObjectList = crdnListMapper.selectTodayCrackdownList(query);
|
||||
break;
|
||||
default:
|
||||
if (query.getOrderBy() == null) {
|
||||
if (query.getBy() == null) {
|
||||
query.setOrderBy("CRDN_ID");
|
||||
} else {
|
||||
query.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(query.getBy()));
|
||||
}
|
||||
}
|
||||
dataObjectList = crdnListMapper.selectCrackdownList(query);
|
||||
break;
|
||||
}
|
||||
|
||||
if(ifEmpty(query.getGridType(), () -> "").equals("tagInformationUndefinedData")) {
|
||||
Iterator<DataObject> iterator = dataObjectList.iterator();
|
||||
while(iterator.hasNext()) {
|
||||
DataObject dataObject = iterator.next();
|
||||
String state = dataObject.string("CRDN_STTS_CD");
|
||||
int advntceAmt = dataObject.number("ADVNTCE_AMT").intValue();
|
||||
int ffnlgAmt = dataObject.number("FFNLG_AMT").intValue();
|
||||
int minusAmt = dataObject.number("MINUS_AMT").intValue();
|
||||
int adtnAmt = dataObject.number("ADTN_AMT").intValue();
|
||||
int rcvmtAmt = dataObject.number("RCVMT_AMT").intValue();
|
||||
|
||||
dataObject.set("BLNC", crdnStngBean.getBalance(state,advntceAmt,ffnlgAmt,minusAmt,adtnAmt,rcvmtAmt));
|
||||
}
|
||||
} else if(ifEmpty(query.getGridType(), () -> "").equals("photo")) {
|
||||
Iterator<DataObject> iterator = dataObjectList.iterator();
|
||||
while(iterator.hasNext()) {
|
||||
DataObject dataObject = iterator.next();
|
||||
|
||||
if(dataObject.number("ATCH_FILE_CNT").intValue() < 1) {
|
||||
dataObject.set("INSP_RSLT", "사진없음");
|
||||
dataObject.set("PRCS_MTHD", "해당자료에 사진을 등록하시기 바랍니다.");
|
||||
} else if(dataObject.number("CRDN_CNT").intValue() > 1) {
|
||||
dataObject.set("INSP_RSLT", "중복자료");
|
||||
if(query.getTaskSeCd().equals("PVS")) {
|
||||
dataObject.set("PRCS_MTHD", "한건을 시간초과로 처리하십시요.");
|
||||
} else {
|
||||
dataObject.set("PRCS_MTHD", "한건을 서손으로 처리하십시요.");
|
||||
}
|
||||
} else {
|
||||
dataObject.set("INSP_RSLT", "정상자료");
|
||||
dataObject.set("PRCS_MTHD", "정상자료");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dataObjectList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String remove(String... crdnIds) {
|
||||
boolean result = crdnBean.remove(crdnIds);
|
||||
if(result) {
|
||||
return "[S]";
|
||||
} else {
|
||||
return "[F]단속 자료 삭제 중 오류가 발생하였습니다.";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String create(Map<String, Object> nonQueryRequest, Crdn crdn, List<FileInfo> fileInfoList) {
|
||||
boolean result = crdnBean.create(nonQueryRequest, crdn, fileInfoList);
|
||||
if(result) {
|
||||
return "[S]";
|
||||
} else {
|
||||
return "[F]단속 자료 등록 중 오류가 발생하였습니다.";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String update(Map<String, Object> nonQueryRequest, Crdn crdn, List<FileInfo> newFileInfoList) {
|
||||
boolean result = crdnBean.updateLedger(nonQueryRequest, crdn);
|
||||
if(!result) {
|
||||
throw new RuntimeException("단속 정보 수정 중 오류가 발생하였습니다.");
|
||||
}
|
||||
|
||||
return "[S]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String updateOverTimeInfo(String chgAmtSe, String crdnId) {
|
||||
|
||||
DataObject crdnInfo = crdnInfoMapper.selectCrdnInfo(crdnId);
|
||||
Crdn crdn = new Crdn();
|
||||
crdn.setCrdnId(crdnInfo.string("CRDN_ID"));
|
||||
crdn.setTaskSeCd(crdnInfo.string("TASK_SE_CD"));
|
||||
crdn.setCrdnYmd(crdnInfo.string("CRDN_YMD"));
|
||||
crdn.setCrdnSpareaCd(crdnInfo.string("CRDN_SPAREA_CD"));
|
||||
crdn.setCrdnTm(crdnInfo.string("CRDN_TM"));
|
||||
crdn.setFfnlgCarmdlCd(crdnInfo.string("FFNLG_CARMDL_CD"));
|
||||
|
||||
if(chgAmtSe.equals("0")) {
|
||||
crdn.setOvtmYn("N");
|
||||
crdn.setOvtmPrttnYn("N");
|
||||
} else if(chgAmtSe.equals("1")) {
|
||||
crdn.setOvtmYn("Y");
|
||||
crdn.setOvtmPrttnYn("N");
|
||||
} else if(chgAmtSe.equals("2")) {
|
||||
crdn.setOvtmYn("Y");
|
||||
crdn.setOvtmPrttnYn("Y");
|
||||
} else {
|
||||
throw new RuntimeException("2시간 초과 처리 중 오류가 발생하였습니다.");
|
||||
}
|
||||
|
||||
if(crdnUpdtMapper.updateOverTimeInfo(crdn) != 1) {
|
||||
return "[F]2시간초과여부 변경 중 오류가 발생하였습니다.";
|
||||
}
|
||||
|
||||
if(chgAmtSe.equals("0") || chgAmtSe.equals("1")) {
|
||||
int[] basicAmt = crdnStngBean.getBasicAmt(crdn);
|
||||
crdn.setFfnlgCrdnAmt(basicAmt[0]);
|
||||
crdn.setFfnlgAmt(basicAmt[0]);
|
||||
crdn.setAdvntceAmt(basicAmt[1]);
|
||||
} else if(chgAmtSe.equals("2")) {
|
||||
crdn.setFfnlgCrdnAmt(10000);
|
||||
crdn.setFfnlgAmt(10000);
|
||||
crdn.setAdvntceAmt(8000);
|
||||
}
|
||||
|
||||
int effected = crdnUpdtMapper.updateCrdnAmt(crdn);
|
||||
if(effected != 1) {
|
||||
return "[F]단속자료 금액 변경 중 오류가 발생하였습니다.";
|
||||
}
|
||||
return "[S]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String updateTagInfo(Crdn crdn) {
|
||||
if(crdnUpdtMapper.updateTagInfo(crdn) == 1) {
|
||||
return "[S]";
|
||||
} else {
|
||||
return "[F]";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataObject getCrackdownInfo(CrdnQuery query) {
|
||||
return crdnInfoMapper.selectCrdnInfo(query.getCrdnId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String updateCrackdown(Crdn crdn) {
|
||||
return crdnBean.updateCrackdown(crdn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String removeCrackdown(Crdn crdn) {
|
||||
return crdnBean.removeCrackdown(crdn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String removeCrackdownPayer(Crdn crdn) {
|
||||
return crdnBean.removeCrackdownPayer(crdn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String updateCrackdownStatus(Crdn crdn) {
|
||||
return crdnBean.updateCrackdownStatus(crdn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String removeEquipmentLinkFile(String workPath, String fileName) {
|
||||
boolean result = crdnBean.removeEquipmentLinkFile(workPath, fileName);
|
||||
if(result) {
|
||||
return "[S]";
|
||||
} else {
|
||||
return "[F]장비연계파일 삭제 중 오류가 발생하였습니다.";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String changeCrdnImageFile(Crdn crdn, List<Map<String, Object>> processList) {
|
||||
|
||||
int createdCount = 0;
|
||||
int deletedCount = 0;
|
||||
boolean orderChange = false;
|
||||
|
||||
// 변수 선언
|
||||
boolean rtnScs = false; // DB 처리 결과
|
||||
String rtnMsg = "[F] "; // 처리 결과 메시지
|
||||
|
||||
int order = 0;
|
||||
for(Map<String, Object> process : processList) {
|
||||
if(process.get("process").equals("insert")) {
|
||||
createdCount += fileBean.create(List.of((FileInfo)process.get("obj")));
|
||||
}
|
||||
if(process.get("process").equals("delete")) {
|
||||
deletedCount += fileBean.deleteByIDs((String)process.get("key"));
|
||||
}
|
||||
if(process.get("process").equals("order")) {
|
||||
mediaBean.reorder((String)process.get("key"), order++);
|
||||
orderChange = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(!orderChange) {
|
||||
// 단속 ID로 파일(TB_FILE) 정보 조회
|
||||
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(Crdn.INF_TYPE)
|
||||
.setInfoKeys(crdn.getCrdnId())
|
||||
.setOrderBy("SRT_ORD,FILE_ID"));
|
||||
|
||||
if (infoFileList != null && infoFileList.size() > 0) {
|
||||
String[] fileIDs = new String[infoFileList.size()];
|
||||
|
||||
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
|
||||
fileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
|
||||
}
|
||||
|
||||
fileBean.reorder(fileIDs); // 첨부파일 재 정렬
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
crdn.setAtchFileCnt(crdn.getAtchFileCnt() + createdCount - deletedCount);
|
||||
rtnScs = totalInfoMapper.updateCrdnAtchFileCnt(crdn);
|
||||
if (!rtnScs) {
|
||||
throw new RuntimeException("단속 첨부 파일 갯수 수정에 실패하였습니다.");
|
||||
}
|
||||
|
||||
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
|
||||
|
||||
return rtnMsg;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int countCrdn(CrdnQuery crdnQuery) {
|
||||
return crdnListMapper.countCrdn(crdnQuery);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue