no message

main
이범준 1 year ago
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…
Cancel
Save