Compare commits

..

No commits in common. "423f896c391b044fe6fd22df98a0cb738e25cdb9" and "62b4989fc3249de76e6cf431ad529416825e9d99" have entirely different histories.

795 changed files with 15439 additions and 55726 deletions

4
.gitignore vendored
View File

@ -36,7 +36,3 @@ out/
### VS Code ###
.vscode/
.vs/
src/main/resources/application-cks1.properties
src/main/resources/application-cks2.properties

View File

@ -1,4 +1,4 @@
#해양경찰청 외사포털
#해양경찰청 외사종합포털
java 11
postgreSql 14.2

View File

@ -1,7 +1,7 @@
plugins {
id 'org.springframework.boot' version '2.7.2'
id 'io.spring.dependency-management' version '1.0.12.RELEASE'
id 'java'
id 'org.springframework.boot' version '2.7.2'
id 'io.spring.dependency-management' version '1.0.12.RELEASE'
id 'java'
}
group = 'com.dbnt'
@ -9,34 +9,17 @@ version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
configureEach {
exclude group: 'ch.qos.logback', module: 'logback-classic'
exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
}
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenLocal()
mavenCentral()
maven {
url "https://maven.egovframe.kr:8080/maven/"
}
maven {
url "https://maven.egovframe.go.kr/maven/"
metadataSources {
artifact()
}
}
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.24'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor:2.7.2'
annotationProcessor 'org.projectlombok:lombok:1.18.24'
implementation 'org.springframework.boot:spring-boot-starter-actuator:2.7.2'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.7.2'
implementation 'org.springframework.boot:spring-boot-starter-security:2.7.2'
@ -48,19 +31,12 @@ dependencies {
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.0.4.RELEASE'
developmentOnly 'org.springframework.boot:spring-boot-devtools:2.7.2'
implementation 'org.apache.tomcat:tomcat-catalina-ha:9.0.62'
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
runtimeOnly 'org.postgresql:postgresql:42.3.6'
implementation 'com.oracle.database.jdbc:ojdbc8:21.7.0.0'
implementation files('libs/tibero6-jdbc.jar')
/*전자정부*/
implementation(group: 'org.egovframe.rte', name: 'org.egovframe.rte.ptl.mvc', version:'4.1.0') {
exclude(module: 'commons-logging')
}
implementation group: 'org.egovframe.rte', name: 'org.egovframe.rte.fdl.cmmn', version:'4.1.0'
// json
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
@ -68,6 +44,9 @@ dependencies {
implementation 'org.apache.poi:poi:4.1.0'
implementation 'org.apache.poi:poi-ooxml:4.1.0'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor:2.7.2'
annotationProcessor 'org.projectlombok:lombok:1.18.24'
//crossEditor
//implementation files('libs/commons-codec-1.15.jar') // .
implementation files('libs/commons-fileupload-1.4.jar')

View File

@ -1,37 +1,26 @@
package com.dbnt.faisp.config;
import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
import com.dbnt.faisp.main.codeMgt.model.CodeMgt;
import com.dbnt.faisp.main.faRpt.model.FaRptBoard;
import com.dbnt.faisp.main.faRpt.model.Sri;
import com.dbnt.faisp.main.faRpt.service.FaRptService;
import com.dbnt.faisp.main.faRpt.service.SriService;
import com.dbnt.faisp.main.fpiMgt.affair.model.DashboardAffair;
import com.dbnt.faisp.main.fpiMgt.affair.model.AffairBoard;
import com.dbnt.faisp.main.fpiMgt.affair.service.AffairService;
import com.dbnt.faisp.main.menuMgt.model.MenuMgt;
import com.dbnt.faisp.main.menuMgt.service.MenuMgtService;
import com.dbnt.faisp.main.organMgt.service.OrganConfigService;
import com.dbnt.faisp.main.publicBoard.model.PublicBoard;
import com.dbnt.faisp.main.publicBoard.service.PublicBoardService;
import com.dbnt.faisp.main.userInfo.model.UserAlarm;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.userInfo.service.UserAlarmService;
import com.dbnt.faisp.main.userInfo.service.UserLogService;
import com.dbnt.faisp.util.Utils;
import com.dbnt.faisp.main.userInfo.service.UserInfoService;
import lombok.RequiredArgsConstructor;
import org.egovframe.rte.fdl.cmmn.trace.LeaveaTrace;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -44,15 +33,7 @@ public class BaseController {
private final MenuMgtService menuMgtService;
private final PublicBoardService publicBoardService;
private final FaRptService faRptService;
private final SriService sriService;
private final AffairService affairService;
private final UserAlarmService userAlarmService;
private final AuthMgtService authMgtService;
private final UserLogService userLogService;
/** TRACE */
@Resource(name = "leaveaTrace")
LeaveaTrace leaveaTrace;
@GetMapping("/")
public ModelAndView loginCheck(@AuthenticationPrincipal UserInfo loginUser) {
@ -67,13 +48,13 @@ public class BaseController {
@GetMapping("/login")
public ModelAndView goLogin() {
ModelAndView mav = new ModelAndView("login/login2");
ModelAndView mav = new ModelAndView("login/login");
return mav;
}
@GetMapping("/login-error")
public ModelAndView loginError() {
ModelAndView mav = new ModelAndView("login/login2");
ModelAndView mav = new ModelAndView("login/login");
mav.addObject("loginError", true);
return mav;
}
@ -85,47 +66,27 @@ public class BaseController {
}
@GetMapping("/dashboard")
public ModelAndView dashboard(@AuthenticationPrincipal UserInfo loginUser, HttpSession session) {
public ModelAndView dashboard(@AuthenticationPrincipal UserInfo loginUser) {
ModelAndView mav = new ModelAndView("login/dashboard");
setSession(loginUser, session);
mav.addObject("lastLoginDt", userLogService.selectLastLoginDt((String) session.getAttribute("belongValue")));
DashboardAffair affair = new DashboardAffair();
affair.setUserSeq(loginUser.getUserSeq());
affair.setOgCd(loginUser.getOgCd());
mav.addObject("apprvStayList", affairService.selectApprvStayList(affair));
UserAlarm alarm = new UserAlarm();
alarm.setUserSeq(loginUser.getUserSeq());
alarm.setViewYn("N");
alarm.setRowCnt(9);
mav.addObject("dashboardAlarmList", userAlarmService.selectAlarmList(alarm));
PublicBoard noticeParams = new PublicBoard();
noticeParams.setPublicType("PLB001");
noticeParams.setRowCnt(5);
noticeParams.setDownOrganCdList(loginUser.getDownOrganCdList());
noticeParams.setUpOrganCdList(loginUser.getUpOrganCdList());
mav.addObject("noticeList", publicBoardService.selectContentList(noticeParams));
FaRptBoard faRpt = new FaRptBoard();
faRpt.setActiveTab("receive");
faRpt.setRowCnt(9);
faRpt.setRowCnt(5);
faRpt.setStatus("DST007");
faRpt.setReceiveUserSeq(loginUser.getUserSeq());
mav.addObject("faRptList", faRptService.selectFaRptList(faRpt));
Sri sri = new Sri();
sri.setActiveTab("receive");
sri.setRowCnt(9);
sri.setStatus("DST007");
sri.setReceiveUserSeq(loginUser.getUserSeq());
mav.addObject("sriList", sriService.selectSriList(sri));
PublicBoard params = new PublicBoard();
params.setPublicType("PLB001");
params.setRowCnt(12);
params.setDownOrganCdList(loginUser.getDownOrganCdList());
params.setUpOrganCdList(loginUser.getUpOrganCdList());
mav.addObject("noticeList", publicBoardService.selectContentList(params));
params.setPublicType("PLB003");
params.setRowCnt(6);
mav.addObject("referenceList", publicBoardService.selectContentList(params));
AffairBoard affair = new AffairBoard();
affair.setAffairCategory("CAT215");
affair.setRatingOrgan(loginUser.getOgCd());
affair.setRowCnt(5);
mav.addObject("affair1List", affairService.selectAffairBoardList(affair));
affair.setAffairCategory("CAT216");
mav.addObject("affair2List", affairService.selectAffairBoardList(affair));
return mav;
}
@ -142,37 +103,32 @@ public class BaseController {
setSession(loginUser, request.getSession());
return new ModelAndView("redirect:/dashboard");
}
@GetMapping("/apprvStayDocRedirect")
public ModelAndView apprvStayDocRedirect (DashboardAffair doc){
ModelAndView mav = new ModelAndView();
String url = menuMgtService.selectMenuUrl(doc.getBoard());
if(url.contains("?")){
url+="&refDocKey="+doc.getKey();
}else{
url+="?refDocKey="+doc.getKey();
}
mav.setViewName("redirect:"+url);
return mav;
}
public void setSession(@AuthenticationPrincipal UserInfo loginUser, HttpSession session){
loginUser.setDownOrganCdList(organConfigService.selectDownOrganList(loginUser.getOgCd()));
loginUser.setUpOrganCdList(organConfigService.selectUpOrganList(loginUser.getOgCd()));
loginUser.setDownOrganCdList(organConfigService.selectDownOrganListWhereUserOgCd(loginUser.getOgCd()));
loginUser.setUpOrganCdList(organConfigService.selectUpOrganListWhereUserOgCd(loginUser.getOgCd()));
session.setAttribute("menuList", menuMgtService.selectAccessMenuListWhereUserSeq(loginUser.getUserSeq()));
Map<String, List<CodeMgt>> codeMap = codeMgtService.getCommonCode();
List<MenuMgt> menuList = menuMgtService.selectSortedAccessMenuList(loginUser.getUserSeq());
String belongValue = "";
belongValue += Utils.searchCodeValue(loginUser.getOgCd(), codeMap.get("OG"));
belongValue += Utils.searchCodeValue(loginUser.getOfcCd(), codeMap.get(loginUser.getOgCd()));
belongValue += Utils.searchCodeValue(loginUser.getTitleCd(), codeMap.get("JT"));
belongValue += loginUser.getUserNm()+"("+loginUser.getUserId()+")";
session.setAttribute("menuList", new ArrayList<>(menuList));
session.setAttribute("commonCode", new HashMap<>(codeMap));
session.setAttribute("commonCode", codeMap);
session.setAttribute("userSeq", loginUser.getUserSeq());
session.setAttribute("userOrgan", loginUser.getOgCd());
String belongValue = "";
belongValue += searchCodeValue(loginUser.getOgCd(), codeMap.get("OG"));
belongValue += searchCodeValue(loginUser.getOfcCd(), codeMap.get("OFC"));
belongValue += searchCodeValue(loginUser.getTitleCd(), codeMap.get("JT"));
belongValue += loginUser.getUserNm()+"("+loginUser.getUserId()+")";
session.setAttribute("belongValue", belongValue);
}
private String searchCodeValue(String itemCd, List<CodeMgt> codeList){
if(itemCd==null){
return "";
}else{
for(CodeMgt code: codeList){
if(itemCd.equals(code.getItemCd())){
return code.getItemValue()+" ";
}
}
}
return "";
}
}

View File

@ -11,13 +11,9 @@ import java.util.List;
@Setter
@NoArgsConstructor
public class BaseModel {
@Transient
private String accessAuth;
@Transient
private List<String> upOrganCdList;
@Transient
private List<String> groupOrganCdList;
@Transient
private List<String> downOrganCdList;
@Transient
private Integer pageIndex=1; //요청페이지
@ -34,8 +30,6 @@ public class BaseModel {
@Transient
private Integer contentCnt=0;
@Transient
private String searchKeyword;
@Transient
private String dateSelector;
@Transient
private String startDate;
@ -45,10 +39,6 @@ public class BaseModel {
private Boolean dashboardFlag = false;
@Transient
private Integer refDocKey;
@Transient
private String modalType;
@Transient
private String excel;
public void setQueryInfo(){
setFirstIndex((getPageIndex()-1)*getRowCnt());

View File

@ -1,7 +1,6 @@
package com.dbnt.faisp.config;
import lombok.RequiredArgsConstructor;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@ -11,54 +10,10 @@ import java.io.IOException;
@Service
@RequiredArgsConstructor
public class BaseService extends EgovAbstractServiceImpl {
public class BaseService {
@Value("${spring.servlet.multipart.location}")
protected String locationPath;
@Value("${file.dir.publicBoard}")
protected String publicBoardPath;
@Value("${file.dir.faRpt}")
protected String faRptPath;
@Value("${file.dir.vulnerable}")
protected String vulnerablePath;
@Value("${file.dir.part}")
protected String partPath;
@Value("${file.dir.equip}")
protected String equipPath;
@Value("${file.dir.sailor}")
protected String sailorPath;
@Value("${file.dir.affair}")
protected String affairPath;
@Value("${file.dir.affair.plan}")
protected String affairPlanPath;
@Value("${file.dir.affair.result}")
protected String affairResultPath;
@Value("${file.dir.editor}")
protected String editorPath;
@Value("${file.dir.sri}")
protected String sriPath;
@Value("${file.dir.ciw}")
protected String ciwPath;
@Value("${file.dir.cia.safety}")
protected String ciaSafetyPath;
@Value("${file.dir.cia.company}")
protected String ciaCompanyPath;
@Value("${file.dir.cia.foreigner}")
protected String ciaForeignerPath;
@Value("${file.dir.cia.edu}")
protected String ciaEduPath;
@Value("${file.dir.activityCase}")
protected String activityCasePath;
@Value("${file.dir.majorStatus}")
protected String majorStatusPath;
@Value("${file.dir.monitoring}")
protected String monitoringPath;
@Value("${file.dir.intelligenceNetwork}")
protected String intelligenceNetworkPath;
@Value("${file.dir.affairTemp}")
protected String affairTempPath;
@Value("${file.dir.translator}")
protected String translatorPath;
protected String calculationSize(double fileSize){
String[] units = {"bytes", "KB", "MB", "GB", "TB", "PB"};
@ -70,11 +25,11 @@ public class BaseService extends EgovAbstractServiceImpl {
}
}
protected void deleteStoredFile(File deleteFile){
public void deleteStoredFile(File deleteFile){
deleteFile.delete();
}
protected void saveFile(MultipartFile file, File saveFile){
public void saveFile(MultipartFile file, File saveFile){
if(file.getSize()!=0){ // 저장될 파일 확인
if(!saveFile.exists()){ // 저장될 경로 확인
if(saveFile.getParentFile().mkdirs()){

View File

@ -1,19 +0,0 @@
package com.dbnt.faisp.config;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
@RestController
@RequiredArgsConstructor
public class CustomErrorController implements ErrorController {
@GetMapping("/errors")
public ModelAndView errorsToRedirectRoot() {
return new ModelAndView("redirect:/");
}
}

View File

@ -35,18 +35,20 @@ import javax.servlet.http.HttpSession;
@RestController
@RequiredArgsConstructor
public class EditorController{
public class EditorController {
@Value("${site.domain}")
protected String siteDomain;
@Value("${file.dir}")
protected String fileDir;
@Value("${file.dir.editor}")
protected String editorPath;
@Value("${editor.img.view}")
protected String imgView;
@Value("${spring.servlet.multipart.location}")
protected String locationPath;
@Value("${file.dir.editor}")
protected String editorPath;
@PostMapping("/Crosseditor/uploadImg")
public @ResponseBody JSONObject uploadImg(Model model, HttpServletRequest request, HttpServletResponse response, HttpSession session) {
@ -69,7 +71,7 @@ public class EditorController{
String extNm = attach_file_Name.substring( attach_file_Name.lastIndexOf( "." ) + 1);
if("jpg,png,jpeg".contains(extNm.toLowerCase())) {
File dir = new File(locationPath+editorPath);
File dir = new File(fileDir+File.separator+editorPath);
if (!dir.exists()) {
try{
@ -88,7 +90,7 @@ public class EditorController{
System.out.println("Directory already exists");
}
File file = new File(locationPath+editorPath, attach_save_Name +"."+ extNm);
File file = new File(fileDir+File.separator+editorPath, attach_save_Name +"."+ extNm);
FileCopyUtils.copy(mFile.getBytes(), file);
InputStream is = new FileInputStream(file);
BufferedImage input = ImageIO.read(is);

View File

@ -30,7 +30,6 @@ public class FaispInterceptor implements HandlerInterceptor {
UserAlarm param = new UserAlarm();
param.setUserSeq((Integer) request.getSession().getAttribute("userSeq"));
param.setViewYn("N");
param.setRowCnt(15);
param.setQueryInfo();
mav.addObject("alarmList", userAlarmService.selectAlarmList(param));
mav.addObject("alarmListCnt", userAlarmService.selectAlarmListCnt(param));
@ -41,11 +40,12 @@ public class FaispInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//페이지 렌더링 후 실행.
if(handler instanceof HandlerMethod){
String uri = request.getRequestURI();
if(request.getParameter("dashboardFlag") == null){
// 대시보드 ajax 조회 로그 저장시 키 중첩으로 오류 발생.
// 대시보드 ajax 조회는 로그를 쌓지 않음.
UserRequestLog log = new UserRequestLog();
log.setContactIp(Utils.getClientIP(request));
log.setRequestUrl(uri);
log.setRequestUrl(request.getRequestURI());
log.setRequestMethod(request.getMethod());
log.setSearchParams(request.getQueryString());
log.setHandlerDescription(((HandlerMethod) handler).toString());

View File

@ -1,97 +1,59 @@
package com.dbnt.faisp.config;
import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
import com.dbnt.faisp.main.counterIntelligence.activityCase.service.ActivityCaseService;
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceActivity;
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceWork;
import com.dbnt.faisp.main.counterIntelligence.service.CounterIntelligenceService;
import com.dbnt.faisp.main.faRpt.model.FaRptBoard;
import com.dbnt.faisp.main.faRpt.model.Sri;
import com.dbnt.faisp.main.faRpt.service.FaRptService;
import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.sailor.Sailor;
import com.dbnt.faisp.main.faStatistics.unlawfulFishing.service.FishingBoatService;
import com.dbnt.faisp.main.faStatistics.unlawfulFishing.service.SailorService;
import com.dbnt.faisp.main.fpiMgt.affair.model.AffairBoard;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.FishingBoatService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.SailorService;
import com.dbnt.faisp.main.fpiMgt.affair.service.AffairService;
import com.dbnt.faisp.main.fpiMgt.affairPlan.model.PlanBoard;
import com.dbnt.faisp.main.fpiMgt.affairPlan.service.PlanService;
import com.dbnt.faisp.main.fpiMgt.affairResult.model.ResultBoard;
import com.dbnt.faisp.main.fpiMgt.affairResult.service.ResultService;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.model.OperationPlan;
import com.dbnt.faisp.main.fpiMgt.intelligenceNetwork.service.IntelligenceNetworkService;
import com.dbnt.faisp.main.fpiMgt.monitoring.model.MonitoringDesignation;
import com.dbnt.faisp.main.fpiMgt.monitoring.model.MonitoringResult;
import com.dbnt.faisp.main.fpiMgt.monitoring.service.MonitoringService;
import com.dbnt.faisp.main.faRpt.service.SriService;
import com.dbnt.faisp.main.ivsgtMgt.boardInvestigation.model.InvestigationBoard;
import com.dbnt.faisp.main.ivsgtMgt.boardInvestigation.service.IvsgtService;
import com.dbnt.faisp.main.ivsgtMgt.majorStatus.model.MajorStatus;
import com.dbnt.faisp.main.ivsgtMgt.majorStatus.service.MajorStatusService;
import com.dbnt.faisp.main.publicBoard.model.PublicBoard;
import com.dbnt.faisp.main.fpiMgt.sri.service.SriService;
import com.dbnt.faisp.main.ivsgtMgt.boardInvestigation.service.BoardInvestigationService;
import com.dbnt.faisp.main.publicBoard.service.PublicBoardService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor;
import ognl.Ognl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@RestController
@RequiredArgsConstructor
@RequestMapping("/file")
public class FileController{
public class FileController {
@Value("${spring.servlet.multipart.location}")
protected String locationPath;
@Value("${file.dir.editor}")
protected String editorPath;
@Value("${file.dir.affairTemp}")
protected String affairTempPath;
private final FaRptService faRptService;
private final PlanService planService;
private final PublicBoardService publicBoardService;
private final AffairService affairService;
private final ResultService resultService;
private final IvsgtService ivsgtService;
private final BoardInvestigationService boardInvestigationService;
private final FishingBoatService fishingBoatService;
private final SailorService sailorService;
private final SriService sriService;
private final CounterIntelligenceService ciService;
private final MajorStatusService majorStatusService;
private final IntelligenceNetworkService inrelligenceNetworkService;
private final MonitoringService monitoringService;
private final AuthMgtService authMgtService;
private final ActivityCaseService activityCaseService;
@Value("${file.dir}")
protected String fileDir;
@Value("${file.dir.editor}")
protected String editorPath;
@GetMapping("/editorFileDisplay")
public ResponseEntity<Resource> editorFileDisplay(HttpServletRequest request,
HttpServletResponse response,
String fileNm) {
String pathStr = locationPath+editorPath+File.separator+fileNm;
String pathStr = fileDir+File.separator+editorPath+File.separator+fileNm;
Resource resource = new FileSystemResource(pathStr);
if(!resource.exists()){
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
@ -114,7 +76,7 @@ public class FileController{
Integer parentKey,
Integer fileSeq) {
FileInfo fileInfo = getFileInfo(board, parentKey, fileSeq);
String pathStr = fileInfo.getSavePath()+File.separator+fileInfo.getConvNm();
String pathStr = fileInfo.getSavePath()+fileInfo.getConvNm();
Resource resource = new FileSystemResource(pathStr);
if(!resource.exists()){
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
@ -134,36 +96,16 @@ public class FileController{
public void fileDownload(HttpServletRequest request,
HttpServletResponse response,
String board,
Integer menuKey,
Integer parentKey,
Integer fileSeq,
@AuthenticationPrincipal UserInfo loginUser) throws Exception {
FileInfo fileInfo = null;
if(Utils.isEmpty(menuKey)){
fileInfo = getFileInfo(board, parentKey, fileSeq);
}else{
if(menuKey!=0){
String accessAuth = authMgtService.selectAccessAuth(menuKey, loginUser.getUserSeq());
Map<String, Object> wrtInfo = getWrtInfo(menuKey, parentKey);
if(!Utils.isEmpty(accessAuth)){
if(wrtOrganCheck(loginUser.getUserSeq(), accessAuth, wrtInfo, loginUser.getDownOrganCdList())){
fileInfo = getFileInfoToMenuKey(menuKey, parentKey, fileSeq);
}else{
throw new Exception();
}
}else{
throw new Exception();
}
}else{
fileInfo = getFileInfoToMenuKey(menuKey, parentKey, fileSeq);
}
}
Integer fileSeq) {
FileInfo fileInfo = getFileInfo(board, parentKey, fileSeq);
BufferedInputStream in;
BufferedOutputStream out;
try {
File file = new File(fileInfo.getSavePath(), fileInfo.getConvNm());
Utils.setDisposition(fileInfo.getFullName(), request, response);
setDisposition(fileInfo.getFullName(), request, response);
in = new BufferedInputStream(new FileInputStream(file));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
@ -174,220 +116,83 @@ public class FileController{
e.printStackTrace();
}
}
private boolean wrtOrganCheck(Integer userSeq, String accessAuth, Map<String, Object> wrtInfo, List<String> mgtOrganList) {
if (accessAuth.equals("ACC003")){
return mgtOrganList.contains(wrtInfo.get("wrtOrgan").toString());
}else if(accessAuth.equals("ACC002")||accessAuth.equals("ACC001")){
return userSeq.equals(wrtInfo.get("wrtUserSeq"));
}
return false;
}
@GetMapping("/downloadAffairFiles")
public void downloadAffairFiles(HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value="fileNm", defaultValue = "견문보고서 첨부파일_") String fileNm,
@RequestParam(value="affairKeyList") List<Integer> affairKeyList){
List<FileInfo> fileList = affairService.selectAffairFileList(affairKeyList);
makeZipAndOut(request, response, fileNm, fileList);
}
@GetMapping("/downloadMajorStatusFiles")
public void downloadMajorStatusFiles(HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value="majorKeyList") List<Integer> majorKeyList){
List<FileInfo> fileList = majorStatusService.selectMajorFileList(majorKeyList);
makeZipAndOut(request, response, "주요사건처리현황 첨부파일_", fileList);
}
private void makeZipAndOut(HttpServletRequest request,
HttpServletResponse response,
String fileName, List<FileInfo> fileList) {
List<Map<String, String>> fileInfoList = new ArrayList<>();
for(FileInfo file: fileList){
Map<String, String> fileInfoMap = new HashMap<>();
fileInfoMap.put("filePath", file.getSavePath()+File.separator+file.getConvNm());
fileInfoMap.put("originalName", file.getOrigNm()+"."+file.getFileExtn());
fileInfoList.add(fileInfoMap);
}
String zipFile = locationPath+affairTempPath;
File saveFolder = new File(zipFile);
if (!saveFolder.exists() || saveFolder.isFile()) {
saveFolder.mkdirs();
}
String downloadFileName = fileName+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".zip";
zipFile += File.separator+downloadFileName;
try{
// ZipOutputStream을 FileOutputStream 으로 감쌈
FileOutputStream fout = new FileOutputStream(zipFile);
ZipOutputStream zout = new ZipOutputStream(fout);
for(Map<String, String> fileMap: fileInfoList){
//본래 파일명 유지, 경로제외 파일압축을 위해 new File로
ZipEntry zipEntry = new ZipEntry(fileMap.get("originalName"));
zout.putNextEntry(zipEntry);
//경로포함 압축
//zout.putNextEntry(new ZipEntry(sourceFiles.get(i)));
FileInputStream fin = new FileInputStream(fileMap.get("filePath"));
byte[] buffer = new byte[1024];
int length;
// input file을 1024바이트로 읽음, zip stream에 읽은 바이트를 씀
while((length = fin.read(buffer)) > 0){
zout.write(buffer, 0, length);
}
zout.closeEntry();
fin.close();
}
zout.close();
Utils.setDisposition(downloadFileName, request, response);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(zipFile));
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
/*byte[] data=new byte[2048];
int input=0;
while((input=in.read(data))!=-1){
out.write(data,0,input);
out.flush();
}*/
if(out!=null) out.close();
if(in!=null) in.close();
} catch(IOException e){
e.printStackTrace();
}
}
private FileInfo getFileInfo(String board, Integer parentKey, Integer fileSeq){
FileInfo downloadFile = null;
switch (board){
case "faRpt": downloadFile = faRptService.selectFaRptFile(parentKey, fileSeq); break;
case "affairPlan": downloadFile = planService.selectPlanFile(parentKey, fileSeq); break;
case "publicFile": downloadFile = publicBoardService.selectPublicFile(parentKey, fileSeq); break;
case "affair": downloadFile = affairService.selectAffairFile(parentKey, fileSeq); break;
case "affairResult": downloadFile = resultService.selectResultFile(parentKey, fileSeq); break;
case "ivsgt": downloadFile = ivsgtService.selectIvsgtFile(parentKey, fileSeq); break;
case "sailor": downloadFile = sailorService.selectSailorFile(parentKey, fileSeq); break;
case "sri": downloadFile = sriService.selectFaSriFile(parentKey, fileSeq); break;
case "ciWork": downloadFile = ciService.selectCiWorkFile(parentKey, fileSeq); break;
case "majorFile" : downloadFile = majorStatusService.selectMajorFile(parentKey, fileSeq); break;
case "ciActivity": downloadFile = ciService.selectCiaForeignerFile(parentKey, fileSeq); break;
case "operationPlan": downloadFile = inrelligenceNetworkService.selectOperationPlanFile(parentKey, fileSeq); break;
case "designation": downloadFile = monitoringService.selectDesignationFile(parentKey, fileSeq); break;
case "monitoringResult": downloadFile = monitoringService.selectMonitoringResultFile(parentKey, fileSeq); break;
case "monitoringReport": downloadFile = monitoringService.selectMonitoringReportFile(parentKey, fileSeq); break;
case "activityCase": downloadFile = activityCaseService.selectActivityCaseFile(parentKey, fileSeq); break;
case "faRpt":
downloadFile = faRptService.selectFaRptFile(parentKey, fileSeq);
break;
case "affairPlan":
downloadFile = planService.selectPlanFile(parentKey, fileSeq);
break;
case "publicFile":
downloadFile = publicBoardService.selectPublicFile(parentKey, fileSeq);
break;
case "affair":
downloadFile = affairService.selectAffairFile(parentKey, fileSeq);
break;
case "affairResult":
downloadFile = resultService.selectResultFile(parentKey, fileSeq);
break;
case "ivsgt":
downloadFile = boardInvestigationService.selectIvsgtFile(parentKey, fileSeq);
break;
case "sailor":
downloadFile = fishingBoatService.selectSailorFile(parentKey, fileSeq);
break;
case "sri":
downloadFile = sriService.selectFaSriFile(parentKey, fileSeq);
break;
}
return downloadFile;
}
private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws IOException {
String browser = getBrowser(request);
private FileInfo getFileInfoToMenuKey(Integer menuKey, Integer parentKey, Integer fileSeq){
FileInfo downloadFile = null;
switch (menuKey){
case 0: downloadFile = publicBoardService.selectPublicFile(parentKey, fileSeq); break;
case 1: downloadFile = faRptService.selectFaRptFile(parentKey, fileSeq); break;
case 29: downloadFile = planService.selectPlanFile(parentKey, fileSeq); break;
case 30:case 33: downloadFile = affairService.selectAffairFile(parentKey, fileSeq); break;
case 31: downloadFile = resultService.selectResultFile(parentKey, fileSeq); break;
case 2: downloadFile = ivsgtService.selectIvsgtFile(parentKey, fileSeq); break;
case 44: downloadFile = sailorService.selectSailorFile(parentKey, fileSeq); break;
case 40: downloadFile = sriService.selectFaSriFile(parentKey, fileSeq); break;
case 5: downloadFile = majorStatusService.selectMajorFile(parentKey, fileSeq); break;
case 6: downloadFile = ciService.selectCiWorkFile(parentKey, fileSeq); break;
case 7: case 8: case 9: case 10:downloadFile = ciService.selectCiaForeignerFile(parentKey, fileSeq); break;
case 32: downloadFile = inrelligenceNetworkService.selectOperationPlanFile(parentKey, fileSeq); break;
case 36: downloadFile = monitoringService.selectDesignationFile(parentKey, fileSeq); break;
case 37: downloadFile = monitoringService.selectMonitoringResultFile(parentKey, fileSeq); break;
case 370: downloadFile = monitoringService.selectMonitoringReportFile(parentKey, fileSeq); break;
String dispositionPrefix = "attachment; filename=";
String encodedFilename = null;
if (browser.equals("MSIE")) {
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Firefox")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Opera")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Chrome")) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < filename.length(); i++) {
char c = filename.charAt(i);
if (c > '~') {
sb.append(URLEncoder.encode("" + c, "UTF-8"));
} else {
sb.append(c);
}
}
encodedFilename = sb.toString();
} else {
throw new IOException("Not supported browser");
}
response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename);
if ("Opera".equals(browser)) {
response.setContentType("application/octet-stream;charset=UTF-8");
}
return downloadFile;
}
private Map<String, Object> getWrtInfo(Integer menuKey, Integer parentKey){
Map<String, Object> wrtInfo = new HashMap<>();
switch (menuKey){
case 0:
PublicBoard board = publicBoardService.selectPublicBoard(parentKey);
wrtInfo.put("wrtOrgan", board.getWrtOrgan());
wrtInfo.put("wrtUserSeq", board.getWrtUserSeq());
break;
case 1:
FaRptBoard faRpt = faRptService.selectFaRptBoard(parentKey, null);
wrtInfo.put("wrtOrgan", faRpt.getWrtOrgan());
wrtInfo.put("wrtUserSeq", faRpt.getWrtUserSeq());
break;
case 2:
InvestigationBoard invest = ivsgtService.selectBoardInvestigation(parentKey);
wrtInfo.put("wrtOrgan", invest.getWrtOrgan());
wrtInfo.put("wrtUserSeq", invest.getWrtUserSeq());
break;
case 5:
MajorStatus major = majorStatusService.selectMajor(parentKey);
wrtInfo.put("wrtOrgan", major.getWrtOrgan());
wrtInfo.put("wrtUserSeq", major.getWrtUserSeq());
break;
case 6:
CounterIntelligenceWork ciw = ciService.selectCounterIntelligenceWork(parentKey);
wrtInfo.put("wrtOrgan", ciw.getWrtOrgan());
wrtInfo.put("wrtUserSeq", ciw.getWrtUserSeq());
break;
case 7: case 8: case 9: case 10:
CounterIntelligenceActivity cia = ciService.selectCia(parentKey);
wrtInfo.put("wrtOrgan", cia.getWrtOrgan());
wrtInfo.put("wrtUserSeq", cia.getWrtUserSeq());
break;
case 29:
PlanBoard plan = planService.selectPlanBoard(parentKey);
wrtInfo.put("wrtOrgan", plan.getWrtOrgan());
wrtInfo.put("wrtUserSeq", plan.getWrtUserSeq());
break;
case 30:case 33:
AffairBoard affair = affairService.selectAffairBoard(parentKey);
wrtInfo.put("wrtOrgan", affair.getWrtOrgan());
wrtInfo.put("wrtUserSeq", affair.getWrtUserSeq());
break;
case 31:
ResultBoard affairResult = resultService.selectResultBoard(parentKey);
wrtInfo.put("wrtOrgan", affairResult.getWrtOrgan());
wrtInfo.put("wrtUserSeq", affairResult.getWrtUserSeq());
break;
case 32:
OperationPlan operationPlan = inrelligenceNetworkService.selectOperationPlan(parentKey);
wrtInfo.put("wrtOrgan", operationPlan.getWrtOrgan());
wrtInfo.put("wrtUserSeq", operationPlan.getWrtUserSeq());
break;
case 36:
MonitoringDesignation designation = monitoringService.selectDesignation(parentKey);
wrtInfo.put("wrtOrgan", designation.getWrtOrgan());
wrtInfo.put("wrtUserSeq", designation.getWrtUserSeq());
break;
case 37:case 370:
MonitoringResult monitoringResult = monitoringService.selectResult(parentKey);
wrtInfo.put("wrtOrgan", monitoringResult.getWrtOrgan());
wrtInfo.put("wrtUserSeq", monitoringResult.getWrtUserSeq());
break;
case 40:
Sri sri = sriService.selectFaSriBoard(parentKey, null);
wrtInfo.put("wrtOrgan", sri.getWrtOrgan());
wrtInfo.put("wrtUserSeq", sri.getWrtUserSeq());
break;
case 44:
Sailor sailor = sailorService.selectSailor(parentKey);
wrtInfo.put("wrtOrgan", sailor.getWrtOrgan());
wrtInfo.put("wrtUserSeq", sailor.getWrtUserSeq());
break;
private String getBrowser(HttpServletRequest request) {
String header = request.getHeader("User-Agent");
if (header.indexOf("MSIE") > -1) {
return "MSIE";
} else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지
return "Trident";
} else if (header.indexOf("Chrome") > -1) {
return "Chrome";
} else if (header.indexOf("Opera") > -1) {
return "Opera";
}
return wrtInfo;
return "Firefox";
}
}

View File

@ -1,4 +1,4 @@
package com.dbnt.faisp.config.database;
package com.dbnt.faisp.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ -39,7 +39,7 @@ public class KwmsDatabaseConfig {
//Hibernate 설정
HashMap<String, Object> properties = new HashMap<>();
properties.put("hibernate.hbm2ddl.auto", "none");
properties.put("hibernate.dialect", TiberoDialect.class.getName());
properties.put("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");
em.setJpaPropertyMap(properties);
return em;
}

View File

@ -1,4 +1,4 @@
package com.dbnt.faisp.config.database;
package com.dbnt.faisp.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@ -1,10 +1,12 @@
package com.dbnt.faisp.config;
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.UnlawfulFishingParam;
import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.CSStatistics;
import com.dbnt.faisp.main.faStatistics.unlawfulFishing.model.crackdownStatus.CrackdownStatusDTO;
import com.dbnt.faisp.main.faStatistics.unlawfulFishing.service.FishingBoatService;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.model.crackdownStatus.CrackdownStatus;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.FishingBoatRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.ProcessResultRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.SailorRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.repository.ViolationRepository;
import com.dbnt.faisp.main.faStatistics.crackdownsStatus.service.CrackdownStatusService;
import com.dbnt.faisp.main.menuMgt.model.MenuMgt;
import com.dbnt.faisp.main.menuMgt.service.MenuMgtService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
@ -16,7 +18,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import java.time.LocalDateTime;
import java.util.List;
@ -28,7 +29,11 @@ public class ModalController {
private final MenuMgtService menuMgtService;
private final UserInfoService userInfoService;
private final CodeMgtService codeMgtService;
private final FishingBoatService fishingBoatService;
private final CrackdownStatusService crackdownStatusService;
private final ViolationRepository violationRepository;
private final ProcessResultRepository processResultRepository;
private final FishingBoatRepository fishingBoatRepository;
private final SailorRepository sailorRepository;
@GetMapping("/menuModal")
public ModelAndView menuModalPage(@AuthenticationPrincipal UserInfo loginUser, MenuMgt menuMgt){
@ -43,13 +48,14 @@ public class ModalController {
}
@GetMapping("/userModal")
public ModelAndView userMoadlPage(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo, String pageName){
public ModelAndView userMoadlPage(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo){
ModelAndView mav = new ModelAndView("common/modal/userModal");
userInfo.setQueryInfo();
if(userInfo.getUserStatus() == null || userInfo.getUserStatus().equals("")) {
userInfo.setUserStatus("USC003");
}
mav.addObject("pageName", pageName);
mav.addObject("OgList", codeMgtService.selectCodeMgtList("OG"));
mav.addObject("OfcList", codeMgtService.selectCodeMgtList("OFC"));
mav.addObject("userInfoList", userInfoService.selectUserInfoList(userInfo));
userInfo.setContentCnt(userInfoService.selectUserInfoListCnt(userInfo));
userInfo.setPaginationInfo();
@ -58,21 +64,21 @@ public class ModalController {
}
@GetMapping("/crackdownStatusModal")
public ModelAndView crackdownStatusModal(@AuthenticationPrincipal UserInfo loginUser, UnlawfulFishingParam params){
public ModelAndView crackdownStatusModal(@AuthenticationPrincipal UserInfo loginUser, CrackdownStatus crackdownStatus){
ModelAndView mav = new ModelAndView("common/modal/crackdownStatusModal");
if(params.getYear()==null){
params.setYear(LocalDateTime.now().getYear());
crackdownStatus.setQueryInfo();
List<CrackdownStatus> crackdownList = crackdownStatusService.selectCrackdownStatusList(crackdownStatus);
for (CrackdownStatus cds: crackdownList) {
cds.setViolationList(violationRepository.findByFbKey(cds.getFbKey()));
cds.setProcessResult(processResultRepository.findByCdsKey(cds.getCdsKey()).orElse(null));
cds.setFishingBoat(fishingBoatRepository.findByCdsKey(cds.getCdsKey()).orElse(null));
cds.setSailorList(sailorRepository.findByFbKey(cds.getFbKey()));
}
List<Integer> yearList = fishingBoatService.selectFishingBoatYearParam(params);
if(!yearList.contains(params.getYear())){
yearList.add(params.getYear());
}
List<CrackdownStatusDTO> csDTOList = fishingBoatService.selectCrackdownStatusList(params);
CSStatistics statistics = fishingBoatService.calculationCSStatistics(csDTOList);
mav.addObject("statistics", statistics);
mav.addObject("crackdownStatusList", csDTOList);
mav.addObject("yearList", yearList);
mav.addObject("searchParams", params);
mav.addObject("crackdownList", crackdownList);
crackdownStatus.setContentCnt(crackdownStatusService.selectCrackdownStatusListCnt(crackdownStatus));
crackdownStatus.setPaginationInfo();
mav.addObject("searchParams", crackdownStatus);
return mav;
}
}

View File

@ -11,7 +11,6 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.session.SessionRegistryImpl;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder;
import org.springframework.security.web.AuthenticationEntryPoint;
@ -112,54 +111,42 @@ public class SecurityConfig{
@Bean
protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeRequests() // 페이지 권한 설정
.antMatchers(
"/css/**",
"/font/**",
"/img/**",
"/js/**",
"/vendor/**",
"/login",
"/Crosseditor/uploadImg",
"/user/findUser"
).permitAll() // 권한 없이 접근 허용
.antMatchers(
"/dashboard",
"/resetSession",
"/selectBoxOptions",
"/apprvStayDoc",
"/myInfo/**",
"/modal/**",
"/publicBoard/**",
"/faRpt/**",
"/ivsgt/**",
"/target/**",
"/equip/**",
"/affairPlan/**",
"/affair/**",
"/affairStatistics/**",
"/affairResult/**",
"/faStatistics/**",
"/unlawfulFishing/**",
"/translator/**",
"/police/**",
"/sri/**",
"/counterIntelligence/**",
"/monitoring/**",
"/intelligenceNetwork/**",
"/budget/**",
"/faics/**",
"/deadline/**",
"/search/**"
).hasRole(Role.USER.name()) // USER 접근 허용
.antMatchers(
"/authMgt/**",
"/userMgt/**"
).hasRole(Role.SUB_ADMIN.name()) // SUB_ADMIN 접근 허용
.antMatchers(
"/codeMgt/**",
"/organMgt/**",
"/menuMgt/**"
).hasRole(Role.ADMIN.name()) // ADMIN 접근 허용
.antMatchers(
"/dashboard",
"/myInfo/**",
"/modal/**",
"/selectBoxOptions",
"/publicBoard/**",
"/faRpt/**",
"/ivsgt/**",
"/target/**",
"/equip/**",
"/affairPlan/**",
"/affair/**",
"/affairResult/**",
"/faStatistics/**",
"/translator/**",
"/police/**",
"/sri/**",
"/resetSession"
).hasRole(Role.USER.name()) // USER 접근 허용
.antMatchers(
"/authMgt/**",
"/userMgt/**"
).hasRole(Role.SUB_ADMIN.name()) // SUB_ADMIN 접근 허용
.antMatchers(
"/codeMgt/**",
"/organMgt/**",
"/menuMgt/**"
).hasRole(Role.ADMIN.name()) // ADMIN 접근 허용
.antMatchers(
"/login",
"/css/**",
"/img/**",
"/js/**",
"/vendor/**",
"/Crosseditor/uploadImg"
).permitAll() // 로그인 페이지는 권한 없이 접근 허용
.and() // 로그인 설정
.formLogin().loginPage("/login") // Custom login form 사용
.failureHandler(loginFailureHandler()) // 로그인 실패시 동작 수행
@ -180,12 +167,7 @@ public class SecurityConfig{
// https://computer-science-student.tistory.com/497
http.headers().frameOptions().sameOrigin();
// 나모에디터 이미지 업로드시 csrf 토큰을 추가할 수 없어서 예외처리.
// 비밀번호찾기 토큰없이 사용
http.csrf().ignoringAntMatchers(
"/Crosseditor/uploadImg",
"/user/findUser"
);
http.csrf().ignoringAntMatchers("/Crosseditor/uploadImg");
return http.build();
}

View File

@ -1,6 +1,7 @@
package com.dbnt.faisp.config.tomcat;
package com.dbnt.faisp.config;
import org.apache.catalina.connector.Connector;
import org.apache.coyote.ProtocolHandler;
import org.apache.coyote.ajp.AbstractAjpProtocol;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
@ -8,8 +9,10 @@ import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.net.InetAddress;
@Configuration
public class TomcatAjpConfiguration {
public class TomcatConfiguration {
@Value("${tomcat.ajp.protocol}")
private String protocol;

View File

@ -20,12 +20,11 @@ public class WebMvcConfig implements WebMvcConfigurer {
"/favicon.ico",
"/editorFileDisplay",
"/fileDisplay",
"/Crosseditor/**",
"/css/**",
"/font/**",
"/img/**",
"/js/**",
"/vendor/**",
"/Crosseditor/**",
"/CrossUploader/**"
);
}

View File

@ -1,6 +0,0 @@
package com.dbnt.faisp.config.database;
import org.hibernate.dialect.Oracle10gDialect;
public class TiberoDialect extends Oracle10gDialect{
}

View File

@ -1,112 +0,0 @@
package com.dbnt.faisp.config.tomcat;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.ha.session.ClusterSessionListener;
import org.apache.catalina.ha.session.DeltaManager;
import org.apache.catalina.ha.session.JvmRouteBinderValve;
import org.apache.catalina.ha.tcp.ReplicationValve;
import org.apache.catalina.ha.tcp.SimpleTcpCluster;
import org.apache.catalina.tribes.Channel;
import org.apache.catalina.tribes.group.GroupChannel;
import org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor;
import org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor;
import org.apache.catalina.tribes.group.interceptors.TcpFailureDetector;
import org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor;
import org.apache.catalina.tribes.membership.McastService;
import org.apache.catalina.tribes.membership.StaticMember;
import org.apache.catalina.tribes.transport.ReplicationTransmitter;
import org.apache.catalina.tribes.transport.nio.NioReceiver;
import org.apache.catalina.tribes.transport.nio.PooledParallelSender;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatContextCustomizer;
import org.springframework.stereotype.Component;
@Component
public class TomcatClusterContextCustomizer implements TomcatContextCustomizer {
@Value("${tomcat.cluster.static-member-host:}")
private String staticMemberHost;
@Value("${tomcat.cluster.static-member-port:}")
private Integer staticMemberPort;
@Value("${tomcat.cluster.static-member-unique-id:}")
private String staticMemberUniqueId;
@Value("${tomcat.cluster.receiver-address:}")
private String receiverAddress;
@Value("${tomcat.cluster.receiver-port:}")
private Integer receiverPort;
@Override
public void customize( final Context context ) {
context.setDistributable(true);
DeltaManager manager = new DeltaManager();
manager.setExpireSessionsOnShutdown(false);
manager.setNotifyListenersOnReplication(true);
context.setManager(manager);
configureCluster( (Engine)context.getParent().getParent() );
}
private void configureCluster(Engine engine) {
//cluster setting
SimpleTcpCluster cluster = new SimpleTcpCluster();
cluster.setChannelStartOptions(Channel.SND_RX_SEQ|Channel.SND_TX_SEQ);
cluster.setChannelSendOptions(Channel.SEND_OPTIONS_ASYNCHRONOUS);
//channel setting
GroupChannel channel = new GroupChannel();
StaticMembershipInterceptor interceptor = new StaticMembershipInterceptor();
// 대상 정보
StaticMember staticMember = new StaticMember();
staticMember.setPort(staticMemberPort);
staticMember.setSecurePort(-1);
staticMember.setHost(staticMemberHost);
staticMember.setUniqueId(staticMemberUniqueId);
interceptor.addStaticMember(staticMember);
//receiver(현재 자신의 정보)
NioReceiver receiver = new NioReceiver();
receiver.setAddress(receiverAddress);
receiver.setMaxThreads(6);
receiver.setPort(receiverPort);
channel.setChannelReceiver(receiver);
channel.addInterceptor(interceptor);
/* cluster.setChannelSendOptions(6);
//channel
GroupChannel channel = new GroupChannel();
//membership setting
McastService mcastService = new McastService();
mcastService.setAddress("228.0.0.4");
mcastService.setPort(45564); // TCP&UDP port 오픈 필요
mcastService.setFrequency(500);
mcastService.setDropTime(3000);
channel.setMembershipService(mcastService);
//receiver
NioReceiver receiver = new NioReceiver();
receiver.setAddress("auto");
receiver.setMaxThreads(6);
receiver.setPort(5000); // TCP port 오픈 필요
channel.setChannelReceiver(receiver);
*/
//sender
ReplicationTransmitter sender = new ReplicationTransmitter();
sender.setTransport(new PooledParallelSender());
channel.setChannelSender(sender);
//interceptor
channel.addInterceptor(new TcpPingInterceptor());
channel.addInterceptor(new TcpFailureDetector());
channel.addInterceptor(new MessageDispatchInterceptor());
cluster.addValve(new ReplicationValve());
cluster.addValve(new JvmRouteBinderValve());
cluster.setChannel(channel);
cluster.addClusterListener(new ClusterSessionListener());
engine.setCluster(cluster);
}
}

View File

@ -1,24 +0,0 @@
package com.dbnt.faisp.config.tomcat;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Configuration;
@Configuration
@RequiredArgsConstructor
public class TomcatClusterUtil implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
private final TomcatClusterContextCustomizer tomcatClusterContextCustomizer;
@Value("${tomcat.cluster.enabled}")
private boolean clusterEnabled;
@Override
public void customize( final TomcatServletWebServerFactory factory ) {
if(clusterEnabled){
factory.addContextCustomizers(tomcatClusterContextCustomizer);
}
}
}

View File

@ -1,31 +0,0 @@
package com.dbnt.faisp.egovframe.com.cmm;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.trace.handler.TraceHandler;
/**
* @Class Name : EgovComTraceHandler.java
* @Description : trace
* @Modification Information
*
*
* ------- ------- -------------------
* 2011. 09. 30. JJY
*
* @author JJY
* @since 2011. 9. 30.
*
*/
@Slf4j
public class EgovComTraceHandler implements TraceHandler {
/**
* .
*/
public void todo(Class<?> clazz, String message) {
//log.debug("log ==> DefaultTraceHandler run...............");
log.debug("[TRACE]CLASS::: {}", clazz.getName());
log.debug("[TRACE]MESSAGE::: {}", message);
//이곳에서 후속처리로 필요한 액션을 취할 수 있다.
}
}

View File

@ -1,87 +0,0 @@
package com.dbnt.faisp.egovframe.com.config;
import com.dbnt.faisp.egovframe.com.cmm.EgovComTraceHandler;
import org.egovframe.rte.fdl.cmmn.trace.LeaveaTrace;
import org.egovframe.rte.fdl.cmmn.trace.handler.TraceHandler;
import org.egovframe.rte.fdl.cmmn.trace.manager.DefaultTraceHandleManager;
import org.egovframe.rte.fdl.cmmn.trace.manager.TraceHandlerService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.util.AntPathMatcher;
import java.util.HashMap;
import java.util.Map;
/**
* @ClassName : EgovConfigAppCommon.java
* @Description : Bean
*
* @author :
* @since : 2021. 7. 20
* @version : 1.0
*
* <pre>
* << (Modification Information) >>
*
*
* ------------- ------------ ---------------------
* 2021. 7. 20
* 2023. 5. 05 crlee remove EgovMessageSource config
* </pre>
*
*/
@Configuration
@ComponentScan(basePackages = "com.dbnt.faisp", includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, value = Service.class),
@ComponentScan.Filter(type = FilterType.ANNOTATION, value = Repository.class)
}, excludeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, value = Controller.class),
@ComponentScan.Filter(type = FilterType.ANNOTATION, value = Configuration.class)
})
public class EgovConfigAppCommon {
/**
* @return AntPathMatcher . Ant
*/
@Bean
public AntPathMatcher antPathMatcher() {
return new AntPathMatcher();
}
/**
* @return [LeaveaTrace ] defaultTraceHandler
*/
@Bean
public EgovComTraceHandler defaultTraceHandler() {
return new EgovComTraceHandler();
}
/**
* @return [LeaveaTrace ] traceHandlerService . TraceHandler
*/
@Bean
public DefaultTraceHandleManager traceHandlerService() {
DefaultTraceHandleManager defaultTraceHandleManager = new DefaultTraceHandleManager();
defaultTraceHandleManager.setReqExpMatcher(antPathMatcher());
defaultTraceHandleManager.setPatterns(new String[] {"*"});
defaultTraceHandleManager.setHandlers(new TraceHandler[] {defaultTraceHandler()});
return defaultTraceHandleManager;
}
/**
* @return [LeaveaTrace ] LeaveaTrace
*/
@Bean
public LeaveaTrace leaveaTrace() {
LeaveaTrace leaveaTrace = new LeaveaTrace();
leaveaTrace.setTraceHandlerServices(new TraceHandlerService[] {traceHandlerService()});
return leaveaTrace;
}
}

View File

@ -5,7 +5,6 @@ import com.dbnt.faisp.kwms.service.KwmsService;
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.main.userInfo.service.UserInfoService;
import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ -24,50 +23,26 @@ public class KwmsController {
@GetMapping("/getEmpInfoToJoinForm")
public ModelAndView getEmpInfo(VEmployee empInfo){
ModelAndView mav = new ModelAndView("login/joinForm");
if(Utils.isEmpty(empInfo.getDic())){
if(userInfoService.selectUserInfoToDicCode(empInfo.getDic()) == null){
UserInfo userInfo = kwmsService.selectEmpInfo(empInfo.getDic());
if(userInfo==null){
mav.addObject("joinFlag", "F");
mav.addObject("userInfo", empInfo);
mav.addObject("msg", "검색 결과가 없습니다.");
}else{
mav.addObject("joinFlag", "T");
mav.addObject("userInfo", userInfo);
mav.addObject("ogList", codeMgtService.selectCodeMgtList("OG"));
mav.addObject("ofcList", codeMgtService.selectCodeMgtList("OFC"));
mav.addObject("titleList", codeMgtService.selectCodeMgtList("JT"));
mav.addObject("outturnList", codeMgtService.selectCodeMgtList("OTC"));
mav.addObject("seriesList", codeMgtService.selectCodeMgtList("SRC"));
mav.addObject("languageList", codeMgtService.selectCodeMgtList("LNG"));
}
}else{
mav.addObject("joinFlag", "F");
mav.addObject("userInfo", empInfo);
mav.addObject("msg", "-포함 입력 ex) M00-00000");
}else{
UserInfo savedUser = userInfoService.selectUserInfoToDicCode(empInfo.getDic());
if(savedUser == null){
UserInfo userInfo = kwmsService.selectEmpInfo(empInfo.getDic());
if(userInfo==null){
mav.addObject("joinFlag", "F");
mav.addObject("userInfo", empInfo);
mav.addObject("msg", "검색 결과가 없습니다.");
}else{
mav.addObject("joinFlag", "T");
mav.addObject("userInfo", userInfo);
mav.addObject("ogList", codeMgtService.selectCodeMgtList("OG"));
mav.addObject("ofcList", codeMgtService.selectCodeMgtList(userInfo.getOgCd()));
mav.addObject("titleList", codeMgtService.selectCodeMgtList("JT"));
mav.addObject("dutyList", codeMgtService.selectCodeMgtList("DT"));
mav.addObject("outturnList", codeMgtService.selectCodeMgtList("OTC"));
mav.addObject("seriesList", codeMgtService.selectCodeMgtList(userInfo.getOutturnCd()));
mav.addObject("languageList", codeMgtService.selectCodeMgtList("LNG"));
mav.addObject("eduGrdList", codeMgtService.selectCodeMgtList("UED"));
}
}else{
if(savedUser.getUserStatus().equals("USC004")){
UserInfo userInfo = kwmsService.selectEmpInfo(empInfo.getDic());
userInfo.setUserSeq(savedUser.getUserSeq());
mav.addObject("joinFlag", "T");
mav.addObject("userInfo", userInfo);
mav.addObject("ogList", codeMgtService.selectCodeMgtList("OG"));
mav.addObject("ofcList", codeMgtService.selectCodeMgtList(userInfo.getOgCd()));
mav.addObject("titleList", codeMgtService.selectCodeMgtList("JT"));
mav.addObject("dutyList", codeMgtService.selectCodeMgtList("DT"));
mav.addObject("outturnList", codeMgtService.selectCodeMgtList("OTC"));
mav.addObject("seriesList", codeMgtService.selectCodeMgtList(userInfo.getOutturnCd()));
mav.addObject("languageList", codeMgtService.selectCodeMgtList("LNG"));
mav.addObject("eduGrdList", codeMgtService.selectCodeMgtList("UED"));
}else{
mav.addObject("joinFlag", "F");
mav.addObject("userInfo", empInfo);
mav.addObject("msg", "이미 가입된 식별번호입니다.");
}
}
mav.addObject("msg", "이미 가입된 식별번호입니다.");
}
return mav;
}
@ -85,7 +60,7 @@ public class KwmsController {
mav.addObject("joinFlag", "T");
mav.addObject("userInfo", userInfo);
mav.addObject("ogList", codeMgtService.selectCodeMgtList("OG"));
mav.addObject("ofcList", codeMgtService.selectCodeMgtList(userInfo.getOgCd()));
mav.addObject("ofcList", codeMgtService.selectCodeMgtList("OFC"));
mav.addObject("titleList", codeMgtService.selectCodeMgtList("JT"));
mav.addObject("outturnList", codeMgtService.selectCodeMgtList("OTC"));
mav.addObject("seriesList", codeMgtService.selectCodeMgtList("SRC"));

View File

@ -28,8 +28,6 @@ public class VEmployee {
private String sexcd;
@Column(name = "BIRTHDT")
private String birthdt;
@Column(name = "TDEPTNM")
private String tdeptnm;
@Column(name = "LDEPTNM")
private String ldeptnm;
@Column(name = "JIKGUBNM")

View File

@ -7,9 +7,7 @@ import com.dbnt.faisp.main.userInfo.model.UserCareer;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.main.userInfo.repository.UserCareerRepository;
import lombok.RequiredArgsConstructor;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@ -19,12 +17,11 @@ import java.util.List;
@Service
@RequiredArgsConstructor
public class KwmsService extends EgovAbstractServiceImpl {
public class KwmsService {
private final VEmployeeRepository vEmployeeRepository;
private final CodeMgtService codeMgtService;
private final UserCareerRepository careerRepository;
@Transactional
public UserInfo selectEmpInfo(String dicCode){
VEmployee empInfo = vEmployeeRepository.findByDic(dicCode).orElse(null);
if(empInfo==null){
@ -40,31 +37,13 @@ public class KwmsService extends EgovAbstractServiceImpl {
userInfo.setUserId(empInfo.getUserid());
userInfo.setUserNm(empInfo.getName());
userInfo.setSex(empInfo.getSexcd().strip().equals("F")?"SEX001":"SEX002");
if(empInfo.getLdeptnm()!=null){
String[] positionAry = empInfo.getLdeptnm().split(" ");
userInfo.setOgCd(codeMgtService.searchCodeToCategoryAndValue("OG", positionAry[0]));
if (positionAry.length>1){
userInfo.setOfcCd(codeMgtService.searchCodeToCategoryAndValue(userInfo.getOgCd(), positionAry[1]));
}
}else{
String[] positionAry = empInfo.getTdeptnm().split(" ");
String ogCd = null;
String ofcValue = null;
for(String value: positionAry){
String temp = codeMgtService.searchCodeToCategoryAndValueEtc("OG", value);
if(temp == null){
ofcValue = value;
}else{
ogCd = temp;
}
}
userInfo.setOgCd(ogCd);
userInfo.setOfcCd(codeMgtService.searchCodeToCategoryAndValue(ogCd, ofcValue));
String[] positionAry = empInfo.getLdeptnm().split(" ");
userInfo.setOgCd(codeMgtService.searchCodeToCategoryAndValue("OG", positionAry[0]));
if (positionAry.length>1){
userInfo.setOfcCd(codeMgtService.searchCodeToCategoryAndValue("OFC", positionAry[1]));
}
userInfo.setTitleCd(codeMgtService.searchCodeToCategoryAndValue("JT", empInfo.getJikgubnm()));
if(empInfo.getKyunggwa()!=null){
userInfo.setOutturnCd(codeMgtService.searchCodeToCategoryAndValue("OTC", empInfo.getKyunggwa()));
}
userInfo.setOutturnCd(codeMgtService.searchCodeToCategoryAndValue("OTC", empInfo.getKyunggwa()));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
empInfo.setBirthdt(

View File

@ -5,7 +5,6 @@ import com.dbnt.faisp.main.authMgt.model.AuthMgt;
import com.dbnt.faisp.main.userInfo.service.UserInfoService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
@ -19,16 +18,12 @@ public class AuthMgtController {
private final AuthMgtService authMgtService;
@GetMapping("/authMgtPage")
public ModelAndView authMgtPage(@AuthenticationPrincipal UserInfo loginUser, UserInfo userInfo) {
public ModelAndView authMgtPage(UserInfo userInfo) {
ModelAndView mav = new ModelAndView("adminPage/authMgt/authMgt");
userInfo.setQueryInfo();
userInfo.setDownOrganCdList(loginUser.getDownOrganCdList());
mav.addObject("userInfoList", userInfoService.selectUserInfoList(userInfo));
userInfo.setContentCnt(userInfoService.selectUserInfoListCnt(userInfo));
userInfo.setPaginationInfo();
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
mav.addObject("searchParams", userInfo);
return mav;
}
@ -43,8 +38,9 @@ public class AuthMgtController {
}
@PostMapping("/saveAuth")
public void saveAuth(@RequestBody AuthMgt authMgt){
public String saveAuth(@RequestBody AuthMgt authMgt){
authMgtService.saveAuth(authMgt);
return "";
}
}

View File

@ -6,5 +6,4 @@ import org.springframework.data.jpa.repository.JpaRepository;
public interface ApprovalConfigRepository extends JpaRepository<ApprovalConfig, ApprovalConfig.ApprovalConfigId> {
void deleteByMenuKey(Integer menuKey);
}

View File

@ -7,10 +7,8 @@ import com.dbnt.faisp.main.authMgt.model.AuthMgt;
import com.dbnt.faisp.main.authMgt.repository.AccessConfigRepository;
import com.dbnt.faisp.main.authMgt.repository.ApprovalConfigRepository;
import lombok.RequiredArgsConstructor;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -18,7 +16,7 @@ import java.util.Map;
@Service
@RequiredArgsConstructor
public class AuthMgtService extends EgovAbstractServiceImpl {
public class AuthMgtService {
private final AuthMgtMapper authMgtMapper;
private final AccessConfigRepository accessConfigRepository;
private final ApprovalConfigRepository approvalConfigRepository;
@ -30,10 +28,6 @@ public class AuthMgtService extends EgovAbstractServiceImpl {
return authMgtMapper.selectAccessConfigList(params);
}
public String selectAccessAuth(Integer menuKey, Integer userSeq){
return accessConfigRepository.findById(new AccessConfig.AccessConfigId(menuKey, userSeq)).orElse(new AccessConfig()).getAccessAuth();
}
public List<ApprovalConfig> selectApprovalConfigList(Integer userSeq, String url) {
Map<String, Object> params = new HashMap<>();
params.put("userSeq", userSeq);
@ -42,27 +36,8 @@ public class AuthMgtService extends EgovAbstractServiceImpl {
}
public void saveAuth(AuthMgt authMgt) {
List<ApprovalConfig> approvalConfigList = authMgt.getApprovalConfigList();
List<AccessConfig> accessConfigList = authMgt.getAccessConfigList();
List<AccessConfig> tempList = new ArrayList<>();
for(ApprovalConfig approvalConfig: approvalConfigList){
boolean menuFlag = false;
for(AccessConfig accessConfig: accessConfigList){
if (accessConfig.getAccessAuth() != null && approvalConfig.getApprovalAuth() != null && accessConfig.getMenuKey().equals(approvalConfig.getMenuKey())){
menuFlag = true;
}
}
if(!menuFlag){
AccessConfig temp = new AccessConfig();
temp.setMenuKey(approvalConfig.getMenuKey());
temp.setUserSeq(approvalConfig.getUserSeq());
temp.setAccessAuth("ACC002");
tempList.add(temp);
}
}
accessConfigList.addAll(tempList);
approvalConfigRepository.saveAll(approvalConfigList);
accessConfigRepository.saveAll(accessConfigList);
accessConfigRepository.saveAll(authMgt.getAccessConfigList());
approvalConfigRepository.saveAll(authMgt.getApprovalConfigList());
}
public List<Integer> selectApprvUserList(String wrtOrgan, Integer menuKey, String apprvAuth) {

View File

@ -1,393 +0,0 @@
package com.dbnt.faisp.main.budget;
import com.dbnt.faisp.main.budget.common.ResultResponseCode;
import com.dbnt.faisp.main.budget.model.*;
import com.dbnt.faisp.main.budget.model.result.*;
import com.dbnt.faisp.main.budget.service.BudgetService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.main.userInfo.service.UserInfoService;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
@SuppressWarnings("unchecked")
@RequiredArgsConstructor
@RestController
@RequestMapping("/budget")
public class BudgetController {
private final UserInfoService userInfoService;
private final BudgetService budgetService;
/* 예산편성 - 화면 */
@GetMapping("/budgeting")
public ModelAndView viewShipList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/budgeting");
if (requestDto.getYear() == null) {
LocalDate date = LocalDate.now();
requestDto.setYear(date.getYear());
}
System.out.println(requestDto.getYear());
List<BudgetingList> list = budgetService.selectBudgetingList(loginUser, requestDto);
List<Integer> yearList = budgetService.selectBudgetingYearList(loginUser);
long sum = 0;
for (int i = 0; i < list.size(); i++) {
sum += list.get(i).getAmount();
}
requestDto.setSum(sum);
// System.out.println(yearList.get(1).getYear());
// System.out.println(yearList.size());
mav.addObject("list", list);
mav.addObject("yearList", yearList);
mav.addObject("searchParams", requestDto);
return mav;
}
// 예산편성 - 연도 추가
@PostMapping("/budgeting/year")
public ResultResponse<?> copyBudgeting(@AuthenticationPrincipal UserInfo loginUser, @RequestBody BudgetDto.BudgetingCopyReqeust requestDto) {
budgetService.copyYearBudgeting(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
// 예산편성 - 연도 삭제
@PostMapping("/budgeting/deleteYear")
public ResultResponse<?> deleteYearBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingCopyReqeust requestDto) {
budgetService.deleteBudgetingYear(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
//예산편성 - 항목추가/변경 모달(버튼)
@GetMapping("/budgeting/modal/edit")
public ModelAndView editModal(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto) {
ModelAndView mav = new ModelAndView("budget/budgetingEditModal");
// System.out.println(requestDto.getNameL1());
if (requestDto.getNameL1() != null) {
mav.addObject("info", requestDto);
mav.addObject("cmd", "update");
} else {
mav.addObject("info");
mav.addObject("cmd", "insert");
}
return mav;
}
//예산편성 - 항목추가
@PostMapping("/budgeting/code")
public ResultResponse<?> insertBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto) {
return new ResultResponse(budgetService.insertBudgetingList(loginUser, requestDto));
}
//예산편성 - 항목변경
@PostMapping("/budgeting/updateCode")
public ResultResponse<?> updateBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingUpdateReqeust requestDto) {
return new ResultResponse(budgetService.updateBudgetingList(loginUser, requestDto));
}
//예산편성 - 항목삭제
@PostMapping("/budgeting/deleteCode")
public ResultResponse<?> deleteBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto) {
return new ResultResponse(budgetService.deleteBudgetingList(loginUser, requestDto));
}
// 예산편성 - 예산편성 버튼(modal)
@GetMapping("/budgeting/modal/org")
public ModelAndView orgModal(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingSearchReqeust requestDto) {
ModelAndView mav = new ModelAndView("budget/budgetingOrgModal");
List<BudgetingList> list = budgetService.selectBudgetingList(loginUser, requestDto);
mav.addObject("list", list);
mav.addObject("searchParams", requestDto);
return mav;
}
// 예산편성 - 예산편성(저장)
@PostMapping("/budgeting/save")
public ResultResponse<?> saveBudgeting(@AuthenticationPrincipal UserInfo loginUser, @RequestBody BudgetDto.BudgetingSaveReqeust requestDto) {
budgetService.saveBudgetingList(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
// 예산편성 - 예산삭제 (0원 세팅)
@PostMapping("/deleteBudgeting") //@AuthenticationPrincipal
public ResultResponse<?> deleteBudgeting(UserInfo loginUser, BudgetDto.BudgetingSaveReqeust requestDto) {
budgetService.deleteBudgeting(loginUser, requestDto);
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
}
// 예산배정
@GetMapping("/assign")
public ModelAndView viewAssignList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/assign");
String userOrgCode;
if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode();
// List<AssignResult> list = budgetService.selectBudgetAssignInfo(loginUser, requestDto);
List<AssignResult> list = budgetService.selectBudgetAssignInfoList(requestDto);
mav.addObject("list", list);
} else {
// 로그인된 해당청 기본선택
userOrgCode = loginUser.getOgCd();
requestDto.setCode(userOrgCode);
mav.addObject("list");
// 첫해 첫날 ~ 오늘날짜 기본세팅
LocalDate date = LocalDate.now();
String CurrentYear = date.getYear() + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date);
}
//하위청 리스트 - 검색용
mav.addObject("downOrgList", budgetService.selectDownOrg(loginUser.getOgCd()));
//하위청 리스트 - 목록용
mav.addObject("downList", budgetService.selectDownOrg(requestDto.getCode()));
mav.addObject("loginOrgan", loginUser.getOgCd());
mav.addObject("searchParams", requestDto);
return mav;
}
// 예산배정 - 리스트 수정
@GetMapping("/assign/modal/edit")
public ModelAndView viewAssignModal(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/assignEditModal");
String userOrgCode;
LocalDate date = LocalDate.now();
requestDto.setModalDate(date);
if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode();
// List<AssignResult> list = budgetService.selectBudgetAssignInfo(loginUser, requestDto);
List<AssignResult> list = budgetService.selectBudgetAssignInfoList(requestDto);
mav.addObject("list", list);
} else {
// 로그인된 해당청 기본선택
userOrgCode = userInfoService.selectUserInfo(loginUser.getUserSeq()).getOgCd();
String HighOrgCode = budgetService.selectGetHighOrgCode(userOrgCode);
if (HighOrgCode == null) { // 1, 2단계시
requestDto.setCode(userOrgCode);
} else { // 3단계 이하 관서시
requestDto.setCode(HighOrgCode);
userOrgCode = HighOrgCode;
}
mav.addObject("list");
}
//하위청 리스트
List<CodeResult> downOrgList = budgetService.selectDownOrg(loginUser.getOgCd());
mav.addObject("downOrgList", downOrgList);
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
mav.addObject("codeList", codeList);
mav.addObject("searchParams", requestDto);
return mav;
}
// 예산배정 - 등록(저장버튼)
@PostMapping("/assign/save")
public List<ResultResponse<?>> saveAssign(@AuthenticationPrincipal UserInfo loginUser, @RequestBody List<BudgetDto.AssignSaveReqeust> requestList) {
List<ResultResponse<?>> responseList = new ArrayList<>();
for(BudgetDto.AssignSaveReqeust requestDto : requestList){
responseList.add(new ResultResponse(budgetService.updateAssignList(loginUser, requestDto)));
}
return responseList;
}
// 집행관리
@GetMapping("/expense")
public ModelAndView viewExpenseList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/expense");
String userOrgCode;
if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode();
// List<ExpenseResult> list = budgetService.selectBudgetExpenseInfo(loginUser, requestDto);
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser(loginUser.getUserId());
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
List<ExpenseResult> list = budgetService.selectBudgetExpenseInfoList(params);
mav.addObject("list", list);
} else {
// 로그인된 해당청 기본선택
userOrgCode = loginUser.getOgCd();
requestDto.setCode(userOrgCode);
mav.addObject("list");
// 첫해 첫날 ~ 오늘날짜 기본세팅
LocalDate date = LocalDate.now();
String CurrentYear = date.getYear() + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date);
}
//하위청 리스트 - 검색용
mav.addObject("downOrgList", budgetService.selectDownOrg(loginUser.getOgCd()));
//하위청 리스트 - 목록용
mav.addObject("downList", budgetService.selectDownOrg(requestDto.getCode()));
mav.addObject("loginOrgan", loginUser.getOgCd());
mav.addObject("searchParams", requestDto);
return mav;
}
@PostMapping("/expense")
public ResultResponse<?> saveExpense(@AuthenticationPrincipal UserInfo loginUser, @RequestBody BudgetDto.ExpenseSaveReqeust requestDto) {
return new ResultResponse(budgetService.insertExpense(loginUser, requestDto));
}
/* 집행? - 팝업화면 */
@GetMapping("/expense/modal/view")
public ModelAndView viewExpenseModal(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.ExpenseSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/expenseEditModal");
List<ExpenseInfoResult> list = budgetService.selectBudgetExpense(loginUser, requestDto);
mav.addObject("list", list);
mav.addObject("searchParams", requestDto);
return mav;
}
/* 집행표 - 화면 */
@GetMapping("/stats")
public ModelAndView viewStatsAllList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/stats");
if(requestDto.getCode()==null){
//기초 검색 데이터 세팅
requestDto.setCode(loginUser.getOgCd());
requestDto.setWon(1);
LocalDate date = LocalDate.now();
requestDto.setStDate(LocalDate.parse(date.getYear()+"-01-01"));
requestDto.setEdDate(date);
}
mav.addObject("budgetCode", budgetService.selectBudgetCodeToYear(requestDto.getStDate().getYear()));
BudgetParams params = new BudgetParams();
params.setCode(requestDto.getCode());
params.setWon(requestDto.getWon());
params.setYear(((Integer)requestDto.getStDate().getYear()).toString());
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
mav.addObject("totalList", budgetService.selectStatsTotal(params));
mav.addObject("statsList", budgetService.selectStatsList(params, loginUser.getDownOrganCdList()));
mav.addObject("loginOrgan", loginUser.getOgCd());
if(loginUser.getOgCd().equals("OG001")){
//하위청 리스트
List<CodeResult> downOrgList = budgetService.selectDownOrg(loginUser.getOgCd());
mav.addObject("downOrgList", downOrgList);
}
mav.addObject("searchParams", requestDto);
return mav;
}
/* 집행표 - 화면 */
@GetMapping("/stats/org")
public ModelAndView viewExpenseList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto) {
ModelAndView mav = new ModelAndView("budget/statsOrg");
String userOrgCode;
if (requestDto.getYear() != null) {
userOrgCode = requestDto.getCode();
// List<ExpenseResult> list = budgetService.selectSpGetbudgetStatOrg(loginUser, requestDto);
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser(loginUser.getUserId());
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
params.setWon(requestDto.getWon());
List<ExpenseResult> list = budgetService.selectBudgetExpenseInfoList(params);
mav.addObject("list", list);
} else {
// 로그인된 해당청 기본선택
userOrgCode = userInfoService.selectUserInfo(loginUser.getUserSeq()).getOgCd();
String HighOrgCode = budgetService.selectGetHighOrgCode(userOrgCode);
if (HighOrgCode == null) { // 1, 2단계시
requestDto.setCode(userOrgCode);
} else { // 3단계 이하 관서시
requestDto.setCode(HighOrgCode);
userOrgCode = HighOrgCode;
}
mav.addObject("list");
// 첫해 첫날 ~ 오늘날짜 기본세팅
LocalDate date = LocalDate.now();
String CurrentYear = String.valueOf(date.getYear()) + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear));
requestDto.setEdDate(date);
}
//하위청 리스트 - 검색용
mav.addObject("downOrgList", budgetService.selectDownOrg(loginUser.getOgCd()));
//하위청 리스트 - 목록용
mav.addObject("downList", budgetService.selectDownOrg(requestDto.getCode()));
mav.addObject("loginOrgan", loginUser.getOgCd());
mav.addObject("searchParams", requestDto);
return mav;
}
/* 세부내역별현황 - 화면 */
@GetMapping("/stats/detail")
public ModelAndView viewStatsDetailList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto, Pageable pageable) {
ModelAndView mav = new ModelAndView("budget/statsDetail");
requestDto.setCode(loginUser.getOgCd());
List<Integer> yearList = budgetService.selectBudgetingYearList(loginUser);
if (requestDto.getStDate() != null) {
// List<StatsItemResult> list = budgetService.selectSpGetbudgetStatDetail(loginUser, requestDto);
List<StatsDetailResult> list = budgetService.selectStatDetailList(requestDto);
List<L3CodeResult> codeList = budgetService.selectSpGetL3Code(loginUser, requestDto.getYear());
mav.addObject("list", list);
mav.addObject("codeList", codeList);
} else {
LocalDate date = LocalDate.now();
List<L3CodeResult> codeList = budgetService.selectSpGetL3Code(loginUser, date.getYear());
requestDto.setYear(requestDto.getYear()==null?date.getYear():requestDto.getYear());
mav.addObject("list");
mav.addObject("codeList", codeList);
// 첫해 첫날 ~ 오늘날짜 기본세팅
String CurrentYear = requestDto.getYear() + "-01-01";
requestDto.setStDate(LocalDate.parse(CurrentYear));
if(requestDto.getYear().equals(date.getYear())){
requestDto.setEdDate(date);
}else{
requestDto.setEdDate(LocalDate.parse(requestDto.getYear()+"-12-31"));
}
}
mav.addObject("yearList", yearList);
mav.addObject("searchParams", requestDto);
return mav;
}
@GetMapping("/stats/code")
@ResponseBody
public List<L3CodeResult> selectCodeL3(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.L3CodeRequest requestDto) {
List<L3CodeResult> list = budgetService.selectSpGetL3Code(loginUser, requestDto.getYear());
return list;
}
}

View File

@ -1,18 +0,0 @@
package com.dbnt.faisp.main.budget.common;
import com.dbnt.faisp.main.budget.common.ResultResponseCode;
public class BaseException extends RuntimeException {
private static final long serialVersionUID = 163922632784183581L;
private ResultResponseCode code;
public BaseException(ResultResponseCode code) {
this.code = code;
}
public ResultResponseCode getCode(){
return code;
}
}

View File

@ -1,53 +0,0 @@
package com.dbnt.faisp.main.budget.common;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Collections;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@AllArgsConstructor
@Getter
public enum ResultResponseCode {
SUCCESS(200, "정상처리되었습니다.","Success"),
DATA_NOT_FOUND(604, "존재하지 않는 데이터입니다.","InternalNotFound"),
FORBIDDEN(403,"해당요청에 대한 권한이 없습니다.","Forbidden"),
PARAM_NOT_NULL(900, " - 필수 입력 사항입니다.", "NotNull"),
PARAM_NOT_EMPTY(900, " - 필수 입력 사항입니다.", "NotEmpty"),
INTERNAL_PARAM_EMPTY(900, "필수 항목이 누락되었습니다.", "InternalParamEmpty"),
FILE_EMPTY(900, "필수 파일이 존재하지 않습니다.", "FileEmpty"),
PARAM_PERMIT_TYPE(901, "잘못된 형식의 데이터입니다.", "ParamType"),
NOT_FOUND_SENDER(903, "발송대상이 없습니다.","NotFoundSender"),
TYPE_MISMATCH(905, "잘못된 형식의 데이터입니다..", "typeMismatch"),
DUPLICATE_CODE(906, "이미 등록된 코드명칭입니다.", "DuplicateCode"),
DELETE_FOUND_VALUE(907, "예산표에 값이 있습니다. 예산삭제 후 해당 코드를 삭제하십시요.", "DELETE_FOUND_VALUE"),
NOT_FOUND_CODE(908, "없는 코드 또는 명칭입니다." ,"NotFoundCodE"),
NOT_FOUND_YEAR(909 , " 없는 연도의 코드입니다.", "NotFoundYear"),
FOUND_YEAR(910, "이미 등록되어 있는 연도의 코드입니다.", "FoundYear"),
EXPENSE_OVER_VALUE(911, "총 지출금액이 배정된 예산보다 큽니다.", "ExepenseOverValue"),
ERROR(999, "오류가 발생하였습니다.","ERROR");
private static final Map<String, String> CODE_MAP = Collections.unmodifiableMap(Stream.of(values()).collect(Collectors.toMap(ResultResponseCode::getType, ResultResponseCode::name)));
private int code;
private String message;
private String type;
public static ResultResponseCode of(final String code) {
try {
return ResultResponseCode.valueOf(CODE_MAP.get(code));
}catch(NullPointerException NPE) {
return ResultResponseCode.valueOf("ERROR");
}
}
}

View File

@ -1,41 +0,0 @@
package com.dbnt.faisp.main.budget.mapper;
import com.dbnt.faisp.main.budget.model.*;
import com.dbnt.faisp.main.budget.model.result.*;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface BudgetMapper {
List<BudgetingList> callSpGetBudgetPlanInfo(BudgetParams param);
List<Integer> callSpGetBudgetCodeYearList();
UpdateResult callSpCopyBudgetItem(BudgetParams param);
UpdateResult callBruteForceDeleteBudgetItem(BudgetParams param);
UpdateResult callSpUpdateBudgetPlanCodeItem(BudgetParams param);
UpdateResult callSpDeleteBudgetPlan(BudgetParams param);
List<AssignResult> callSpGetBudgetAssignInfo(BudgetParams param);
List<CodeResult> callSpGetDownOrg(BudgetParams param);
List<CodeResult> selectDownOrgList(BudgetParams params);
List<CodeResult> callSpGetLowerOrgCodeByName();
String callSpGetHighOrgCode(BudgetParams params);
UpdateResult callSpAddBudgetAssign(BudgetParams params);
List<ExpenseResult> callSpGetBudgetExpenseInfo(BudgetParams params);
List<ExpenseInfoResult> callSpGetBudgetExpense(BudgetParams params);
UpdateResult callSpAddBudgetExpense(BudgetParams params);
List<ExpenseResult> callSpGetbudgetStatOrg(BudgetParams params);
List<StatsItemResult> callSpGetbudgetStatDetail(BudgetParams params);
List<L3CodeResult> callSpGetBudgetCodeL3(BudgetParams params);
List<BudgetName> selectBudgetInfoList(BudgetParams params);
List<AssignAmount> selectBudgetAssignAmountList(BudgetParams params);
List<ExpenseAmount> selectBudgetExpenseAmountList(BudgetParams params);
List<StatsDetailResult> selectStatDetailList(BudgetParams params);
List<TblBudgetCodeL1> selectBudgetCodeL1List(String year);
List<TblBudgetCodeL2> selectBudgetCodeL2List(String l1Code);
List<StatsDetailResult> selectStatsTotal(BudgetParams params);
List<StatsDetailResult> selectStats(BudgetParams params);
}

View File

@ -1,14 +0,0 @@
package com.dbnt.faisp.main.budget.model;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class BudgetCode {
List<TblBudgetCodeL1> codeL1List;
List<TblBudgetCodeL2> codeL2List;
List<TblBudgetCodeL3> codeL3List;
}

View File

@ -1,156 +0,0 @@
package com.dbnt.faisp.main.budget.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
public class BudgetDto {
@Data
@AllArgsConstructor
@ToString
public static class BudgetingListResponse {
private String budgetNameL1;
private String budgetNameL2;
private String budgetNameL3;
}
@Data
@AllArgsConstructor
@ToString
public static class BudgetingSearchReqeust {
private Integer year;
private Long sum;
}
@Data
@AllArgsConstructor
@ToString
public static class BudgetingInsertReqeust {
private String year;
private String nameL1;
private String nameL2;
private String nameL3;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class BudgetingSaveReqeust {
private String year;
private String nameL1;
private String nameL2;
private String nameL3;
private Integer amount;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class AssignSaveReqeust {
private String year;
private String code;
private Integer amount;
private String org;
private String org1;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class BudgetingCopyReqeust {
private String year;
private String copyYear;
}
@Data
@AllArgsConstructor
@ToString
public static class BudgetingUpdateReqeust {
private String year;
private String nameL1;
private String nameL2;
private String nameL3;
private String prevNameL1;
private String prevNameL2;
private String prevNameL3;
}
@Data
@AllArgsConstructor
@ToString
public static class AssignSearchReqeust {
private Integer year;
private String code;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate stDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate edDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate modalDate;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class ExpenseSaveReqeust {
private String year;
private String nameL1;
private String nameL2;
private String nameL3;
private String item;
private Integer amount;
private String org;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate expenseDate;
}
@Data
@AllArgsConstructor
@ToString
public static class StatsSearchReqeust {
private Integer year;
private String code;
private String item;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate stDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate edDate;
private Integer won;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public static class ExpenseSearchReqeust {
private String year;
private String nameL1;
private String nameL2;
private String nameL3;
private Integer amount;
}
@Data
@AllArgsConstructor
@ToString
public static class L3CodeRequest {
private Integer year;
}
}

View File

@ -1,40 +0,0 @@
package com.dbnt.faisp.main.budget.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDate;
@Getter
@Setter
@NoArgsConstructor
public class BudgetParams {
private String code;
private String code1;
private String code2;
private String code3;
private String year;
private String copyYear;
private String org;
private String org1;
private String user;
private String id;
private String item;
private Integer won = 1;
private String newCode1;
private String newCode2;
private String newCode3;
private String nameL1;
private String nameL2;
private String nameL3;
private Integer amount;
private String dt;
private LocalDate stDate;
private LocalDate edDate;
}

View File

@ -1,14 +0,0 @@
package com.dbnt.faisp.main.budget.model;
import com.dbnt.faisp.main.budget.model.result.StatsDetailResult;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class BudgetStat {
String organ;
List<StatsDetailResult> amountList;
}

View File

@ -1,15 +0,0 @@
package com.dbnt.faisp.main.budget.model;
import lombok.Getter;
@Getter
public class BudgetingList {
String budgetNameL1;
String budgetNameL2;
String budgetNameL3;
String budgetCodeL3;
Integer amount;
String remark;
String modiId;
String modiDate;
}

View File

@ -1,50 +0,0 @@
package com.dbnt.faisp.main.budget.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.time.LocalDateTime;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "tbl_budget_code_l1")
public class TblBudgetCodeL1 {
@Id
@Column(name = "l1_code")
private String l1Code;
@Column(name = "l1_name")
private String l1Name;
@Column(name = "l1_year")
private String l1Year;
@Column(name = "use_tag")
private String useTag;
@Column(name = "seq_ord")
private Integer seqOrd;
@Column(name = "remark")
private String remark;
@Column(name = "modi_date")
private LocalDateTime modiDate;
@Transient
private Integer colspan;
public void setData(String l1Code, String l1Name, String l1Year, String useTag, Integer seqOrd, String remark, LocalDateTime modiDate){
this.l1Code = l1Code;
this.l1Name = l1Name;
this.l1Year = l1Year;
this.useTag = useTag;
this.seqOrd = seqOrd;
this.remark = remark;
this.modiDate = modiDate;
}
}

View File

@ -1,49 +0,0 @@
package com.dbnt.faisp.main.budget.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.time.LocalDateTime;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "tbl_budget_code_l2")
public class TblBudgetCodeL2 {
@Id
@Column(name = "l2_code")
private String l2Code;
@Column(name = "l2_name")
private String l2Name;
@Column(name = "l1_code")
private String l1Code;
@Column(name = "use_tag")
private String useTag;
@Column(name = "seq_ord")
private Integer seqOrd;
@Column(name = "remark")
private String remark;
@Column(name = "modi_date")
private LocalDateTime modiDate;
@Transient
private Integer colspan;
public void setData(String l2Code, String l2Name, String l1Code, String useTag, Integer seqOrd, String remark, LocalDateTime modiDate){
this.l2Code = l2Code;
this.l2Name = l2Name;
this.l1Code = l1Code;
this.useTag = useTag;
this.seqOrd = seqOrd;
this.remark = remark;
this.modiDate = modiDate;
}
}

View File

@ -1,49 +0,0 @@
package com.dbnt.faisp.main.budget.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.time.LocalDateTime;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "tbl_budget_code_l3")
public class TblBudgetCodeL3 {
@Id
@Column(name = "l3_code")
private String l3Code;
@Column(name = "l3_name")
private String l3Name;
@Column(name = "l2_code")
private String l2Code;
@Column(name = "use_tag")
private String useTag;
@Column(name = "seq_ord")
private Integer seqOrd;
@Column(name = "remark")
private String remark;
@Column(name = "modi_date")
private LocalDateTime modiDate;
@Transient
private Integer colspan;
public void setData(String l3Code, String l3Name, String l2Code, String useTag, Integer seqOrd, String remark, LocalDateTime modiDate){
this.l3Code = l3Code;
this.l3Name = l3Name;
this.l2Code = l2Code;
this.useTag = useTag;
this.seqOrd = seqOrd;
this.remark = remark;
this.modiDate = modiDate;
}
}

View File

@ -1,50 +0,0 @@
package com.dbnt.faisp.main.budget.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.time.LocalDateTime;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "tbl_budget_history")
public class TblBudgetHistory {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "seq")
private Integer seq;
@Column(name = "budget_code")
private String budgetCode;
@Column(name = "org_code")
private String orgCode;
@Column(name = "update_title")
private String updateTitle;
@Column(name = "old_amount")
private Integer oldAmount;
@Column(name = "new_amount")
private Integer newAmonut;
@Column(name = "modi_id")
private String modiId;
@Column(name = "modi_date")
private LocalDateTime modiDate;
public void setData(String budgetCode, String orgCode, String updateTitle, Integer oldAmount, Integer newAmonut, String modiId, LocalDateTime modiDate){
this.budgetCode = budgetCode;
this.orgCode = orgCode;
this.updateTitle = updateTitle;
this.oldAmount = oldAmount;
this.newAmonut = newAmonut;
this.modiId = modiId;
this.modiDate = modiDate;
}
}

View File

@ -1,47 +0,0 @@
package com.dbnt.faisp.main.budget.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.time.LocalDateTime;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "tbl_budget_plan")
public class TblBudgetPlan {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "seq")
private Integer seq;
@Column(name = "budget_code")
private String budgetCode;
@Column(name = "org_code")
private String orgCode;
@Column(name = "amount")
private Integer amount;
@Column(name = "remark")
private String remark;
@Column(name = "modi_id")
private String modiId;
@Column(name = "modi_date")
private LocalDateTime modiDate;
public void setData(String budgetCode, String orgCode, Integer amount, String remark, String modiId, LocalDateTime modiDate){
this.budgetCode = budgetCode;
this.orgCode = orgCode;
this.amount = amount;
this.remark = remark;
this.modiId = modiId;
this.modiDate = modiDate;
}
}

View File

@ -1,12 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
@Getter
public class AssignAmount {
Integer orderSeq;
String organCd;
String budgetCode;
Integer periodAssignAmount;
Integer sumAssignAmount;
}

View File

@ -1,29 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AssignResult extends BudgetName{
String totalAssignAmount = "0";
String periodAssignAmount1 = "0";
String sumAssignAmount1 = "0";
String periodAssignAmount2 = "0";
String sumAssignAmount2 = "0";
String periodAssignAmount3 = "0";
String sumAssignAmount3 = "0";
String periodAssignAmount4 = "0";
String sumAssignAmount4 = "0";
String periodAssignAmount5 = "0";
String sumAssignAmount5 = "0";
String periodAssignAmount6 = "0";
String sumAssignAmount6 = "0";
String periodAssignAmount7 = "0";
String sumAssignAmount7 = "0";
String periodAssignAmount8 = "0";
String sumAssignAmount8 = "0";
String periodAssignAmount9 = "0";
String sumAssignAmount9 = "0";
}

View File

@ -1,15 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class BudgetName {
String orgCount;
String budgetNameL1;
String budgetNameL2;
String budgetNameL3;
String budgetCodeL3;
String planAmount = "0";
}

View File

@ -1,10 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
@Getter
public class CodeResult {
String orgName;
String orgCode;
}

View File

@ -1,14 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
@Getter
public class ExpenseAmount {
Integer orderSeq;
String organCd;
String budgetCode;
Integer periodAssignAmount;
Integer expenseAssignAmount;
Integer balanceAmount;
Double expenseRate;
}

View File

@ -1,13 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
@Getter
public class ExpenseInfoResult {
String seq;
String expenseDate;
String expenseItem;
String amount;
String modiId;
String modiDate;
}

View File

@ -1,61 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ExpenseResult extends BudgetName{
Double totalAssignAmount = 0d;
Double expenseTAmount = 0d;
Double balanceTAmount = 0d;
Double taRate = 0d;
Double periodAssignAmount1 = 0d;
Double expensePAmount1 = 0d;
Double balanceAmount1 = 0d;
Double expenseRate1 = 0d;
Double periodAssignAmount2 = 0d;
Double expensePAmount2 = 0d;
Double balanceAmount2 = 0d;
Double expenseRate2 = 0d;
Double periodAssignAmount3 = 0d;
Double expensePAmount3 = 0d;
Double balanceAmount3 = 0d;
Double expenseRate3 = 0d;
Double periodAssignAmount4 = 0d;
Double expensePAmount4 = 0d;
Double balanceAmount4 = 0d;
Double expenseRate4 = 0d;
Double periodAssignAmount5 = 0d;
Double expensePAmount5 = 0d;
Double balanceAmount5 = 0d;
Double expenseRate5 = 0d;
Double periodAssignAmount6 = 0d;
Double expensePAmount6 = 0d;
Double balanceAmount6 = 0d;
Double expenseRate6 = 0d;
Double periodAssignAmount7 = 0d;
Double expensePAmount7 = 0d;
Double balanceAmount7 = 0d;
Double expenseRate7 = 0d;
Double periodAssignAmount8 = 0d;
Double expensePAmount8 = 0d;
Double balanceAmount8 = 0d;
Double expenseRate8 = 0d;
Double periodAssignAmount9 = 0d;
Double expensePAmount9 = 0d;
Double balanceAmount9 = 0d;
Double expenseRate9 = 0d;
}

View File

@ -1,10 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
@Getter
public class L3CodeResult {
String l3Name;
String l3Code;
}

View File

@ -1,37 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import com.dbnt.faisp.main.budget.common.ResultResponseCode;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class ResultResponse<T> {
private int code;
private String message;
private T data;
public ResultResponse(int code, String message) {
this.code = code;
this.message = message;
}
public ResultResponse(ResultResponseCode responseCode) {
this.code = responseCode.getCode();
this.message = responseCode.getMessage();
}
public ResultResponse<?> successResponse(T data) {
this.code = ResultResponseCode.SUCCESS.getCode();
this.message = ResultResponseCode.SUCCESS.getMessage();
this.data = data;
return new ResultResponse<>(this.code, this.message, this.data);
}
}

View File

@ -1,17 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class StatsDetailResult {
String parentOrgan;
String organCd;
String budgetCode;
Double planAmount = 0d;
Double assignAmount = 0d;
Double expenseAmount = 0d;
Double balanceAmount = 0d;
Double rate = 0d;
}

View File

@ -1,13 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
@Getter
public class StatsItemResult {
String orgName;
String planAmount;
String totalAssignAmount;
String expenseTAmount;
String balanceTAmount;
String expenseTotalRate;
}

View File

@ -1,10 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
@Getter
public class UpdateResult {
Integer resultCount;
String resultCode;
String errorMessage;
}

View File

@ -1,8 +0,0 @@
package com.dbnt.faisp.main.budget.model.result;
import lombok.Getter;
@Getter
public class YearResult {
Integer year;
}

View File

@ -1,204 +0,0 @@
package com.dbnt.faisp.main.budget.repository;
import com.dbnt.faisp.main.budget.model.*;
import com.dbnt.faisp.main.budget.model.result.*;
import com.dbnt.faisp.main.codeMgt.model.CodeCatg;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.sql.Date;
import java.util.List;
@Repository
public interface BudgetRepository extends JpaRepository<CodeCatg, String> {
@Query(value = " select "
+ "budget_name_l1 as budgetNameL1,"
+ "budget_name_l2 as budgetNameL2,"
+ "budget_name_l3 as budgetNameL3,"
+ "budget_code_l3 as budgetCodeL3,"
+ "amount,"
+ "remark,"
+ "modi_id as modiId,"
+ "modi_date as modiDate "
+ " from public.sp_get_budget_plan_info(:code1, :code2, :code3) ", nativeQuery = true)
List<BudgetingList> callSpGetBudgetPlanInfo(
@Param("code1") String code1,
@Param("code2") String code2,
@Param("code3") String code3);
//(공통) - 생선된 년도 (셀렉트박스)
@Query(value ="select l1_year as year from public.sp_get_budget_code_year_list( );", nativeQuery = true)
List<YearResult> callSpGetBudgetCodeYearList();
//예산편성 - 연도추가
@Query(value ="call public.sp_copy_budget_item (:year,:copyYear,:id,NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpCopyBudgetItem(
@Param("year") String year,
@Param("copyYear") String org,
@Param("id") String id);
//예산편성 - 연도삭제
@Query(value ="call public.sp_brute_force_delete_budget_item(:year, :id,NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callBruteForceDeleteBudgetItem(
@Param("year") String year,
@Param("id") String id);
//예산편성 - 항목추가
@Query(value ="call public.sp_add_budget_plan_codename (:year, :code1, :code2, :code3, :org, :id ,NULL, NULL, NULL);", nativeQuery = true)
UpdateResult callSpAddBudgetPlanCodeName(
@Param("year") String year,
@Param("code1") String nameL1,
@Param("code2") String nameL2,
@Param("code3") String nameL3,
@Param("org") String org,
@Param("id") String id);
//예산편성 - 항목변경
@Query(value ="call public.sp_update_budget_plan_codename(:year, :code1, :code2, :code3, :newCode1, :newCode2, :newCode3, :org,:id,NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpUpdateBudgetPlanCodeName(
@Param("year") String year,
@Param("code1") String prevNameL1,
@Param("code2") String prevNameL2,
@Param("code3") String prevNameL3,
@Param("newCode1") String nameL1,
@Param("newCode2") String nameL2,
@Param("newCode3") String nameL3,
@Param("org") String org,
@Param("id") String id);
//예산편성 - 항목삭제
@Query(value ="call public.sp_delete_budget_plan_codename(:year, :code1, :code2, :code3, :org,:id,NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpDeleteBudgetPlanCodeName(
@Param("year") String year,
@Param("code1") String nameL1,
@Param("code2") String nameL2,
@Param("code3") String nameL3,
@Param("org") String org,
@Param("id") String id);
//예산편성 - 예산저장
@Query(value ="call public.sp_update_budget_plan_item (:year, :code1, :code2, :code3, :amount, :org, :id,NULL, NULL, NULL);", nativeQuery = true)
UpdateResult callSpUpdateBudgetPlanCodeItem(
@Param("year") String year,
@Param("code1") String nameL1,
@Param("code2") String nameL2,
@Param("code3") String nameL3,
@Param("amount") Integer amount,
@Param("org") String org,
@Param("id") String id);
//예산편성 - 예산삭제
@Query(value ="call public.sp_clear_budget_plan(:year, :org, :id,NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpDeleteBudgetPlan(
@Param("year") String year,
@Param("org") String org,
@Param("id") String id);
// 예산배정
@Query(value ="select * from public.sp_get_budget_assign_info(:year, :code, :user ,:stDate, :edDate)", nativeQuery = true)
List<AssignResult> callSpGetBudgetAssignInfo(
@Param("year") String year,
@Param("code") String code,
@Param("user") String user,
@Param("stDate") Date stDate,
@Param("edDate") Date edDate
);
//(공통) 2단계로 하위청 뿌려주기
@Query(value ="select org_code as orgCode, org_name as orgName from public.sp_get_down_org(:org);", nativeQuery = true)
List<CodeResult> callSpGetDownOrg(
@Param("org") String org
);
//
@Query(value ="select org_code as orgCode, org_name as orgName from public.sp_get_lower_org_code_by_name('본청');", nativeQuery = true)
List<CodeResult> callSpGetLowerOrgCodeByName(
);
//상위 기관 코드 가져오기 (3단계인경우만)
@Query(value ="select * from public.sp_get_high_org_code(:org);", nativeQuery = true)
String callSpGetHighOrgCode(
@Param("org") String org
);
// 예산배정 - 등록(저장버튼)
@Query(value ="call public.sp_add_budget_assign(:code, :org, :org1, cast (:amount as bigint), to_date(:dt,'YYYY-MM-DD'), 'admin', NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpAddBudgetAssign(
@Param("code") String year,
@Param("org") String org,
@Param("org1") String org1,
@Param("amount") Integer amount,
@Param("dt") String dt);
// 집행관리
@Query(value ="select * from public.sp_get_budget_expense_info(:year,:code,:user,:stDate,:edDate);", nativeQuery = true)
List<ExpenseResult> callSpGetBudgetExpenseInfo(
@Param("year") String year,
@Param("code") String code,
@Param("user") String user,
@Param("stDate") Date stDate,
@Param("edDate") Date edDate
);
@Query(value ="select * from public.sp_get_budget_expense(:year,:code1,:code2,:code3,:org,1,2,20,1);", nativeQuery = true)
List<ExpenseInfoResult> callSpGetBudgetExpense(
@Param("year") String year,
@Param("code1") String code1,
@Param("code2") String code2,
@Param("code3") String code3,
@Param("org") String org
);
@Query(value ="call public.sp_add_budget_EXPENSE(:year,:code1,:code2,:code3, :org, :item ,cast (:amount as bigint), to_date(:dt,'YYYY-MM-DD'),'admin',NULL,NULL,NULL);", nativeQuery = true)
UpdateResult callSpAddBudgetExpense(
@Param("year") String year,
@Param("code1") String code1,
@Param("code2") String code2,
@Param("code3") String code3,
@Param("org") String org,
@Param("item") String item,
@Param("amount") Integer amount,
@Param("dt") Date dt
);
@Query(value ="call public.sp_update_budget_expense(:seq,:item ,cast (:amount as bigint),NULL,NULL,NULL,NULL,NULL);;", nativeQuery = true)
List<ExpenseResult> callSpUpdateBudgetExpense(
@Param("seq") Integer seq,
@Param("item") String item,
@Param("amount") Integer amount
);
@Query(value ="select * from public.sp_get_budget_statistics_by_org(:year,:code,:user,:stDate,:edDate,:won);", nativeQuery = true)
List<ExpenseResult> callSpGetbudgetStatOrg(
@Param("year") String year,
@Param("code") String code,
@Param("user") String user,
@Param("stDate") Date stDate,
@Param("edDate") Date edDate,
@Param("won") int won
);
@Query(value ="select * from public.sp_get_budget_statistics_by_item(:year,:code,:item, :user,:stDate,:edDate,:won);", nativeQuery = true)
List<StatsItemResult> callSpGetbudgetStatDetail(
@Param("year") String year,
@Param("code") String code,
@Param("item") String item,
@Param("user") String user,
@Param("stDate") Date stDate,
@Param("edDate") Date edDate,
@Param("won") int won
);
@Query(value ="select * from public.sp_get_budget_code_l3(:year,null,null,null);", nativeQuery = true)
List<L3CodeResult> callSpGetBudgetCodeL3(
@Param("year") String year
);
}

View File

@ -1,13 +0,0 @@
package com.dbnt.faisp.main.budget.repository;
import com.dbnt.faisp.main.budget.model.TblBudgetCodeL1;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface TblBudgetCodeL1Repository extends JpaRepository<TblBudgetCodeL1, String> {
Optional<TblBudgetCodeL1> findByL1NameAndL1YearAndUseTag(String l1Name, String l1Year, String useTag);
Optional<TblBudgetCodeL1> findTop1ByL1YearOrderByL1CodeDesc(String l1Year);
List<TblBudgetCodeL1> findByL1YearOrderByL1Code(String year);
}

View File

@ -1,15 +0,0 @@
package com.dbnt.faisp.main.budget.repository;
import com.dbnt.faisp.main.budget.model.TblBudgetCodeL2;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface TblBudgetCodeL2Repository extends JpaRepository<TblBudgetCodeL2, String> {
Optional<TblBudgetCodeL2> findByL2NameAndL1CodeAndUseTag(String codeL2Name, String l1Code, String y);
Optional<TblBudgetCodeL2> findTop1ByL1CodeOrderByL2CodeDesc(String l1Code);
List<TblBudgetCodeL2> findByL1CodeOrderByL2Code(String l1Code);
}

View File

@ -1,15 +0,0 @@
package com.dbnt.faisp.main.budget.repository;
import com.dbnt.faisp.main.budget.model.TblBudgetCodeL3;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface TblBudgetCodeL3Repository extends JpaRepository<TblBudgetCodeL3, String> {
Optional<TblBudgetCodeL3> findByL3NameAndL2CodeAndUseTag(String codeL3Name, String l2Code, String useTag);
Optional<TblBudgetCodeL3> findTop1ByL2CodeOrderByL3CodeDesc(String l2Code);
List<TblBudgetCodeL3> findByL2CodeAndUseTagOrderByL3Code(String l2Code, String useTag);
}

View File

@ -1,8 +0,0 @@
package com.dbnt.faisp.main.budget.repository;
import com.dbnt.faisp.main.budget.model.TblBudgetHistory;
import org.springframework.data.jpa.repository.JpaRepository;
public interface TblBudgetHistoryRepository extends JpaRepository<TblBudgetHistory, Integer> {
}

View File

@ -1,10 +0,0 @@
package com.dbnt.faisp.main.budget.repository;
import com.dbnt.faisp.main.budget.model.TblBudgetPlan;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface TblBudgetPlanRepository extends JpaRepository<TblBudgetPlan, Integer> {
Optional<TblBudgetPlan> findTop1ByBudgetCodeAndOrgCode(String budgetCode, String orgCode);
}

View File

@ -1,679 +0,0 @@
package com.dbnt.faisp.main.budget.service;
import com.dbnt.faisp.main.budget.common.BaseException;
import com.dbnt.faisp.main.budget.common.ResultResponseCode;
import com.dbnt.faisp.main.budget.mapper.BudgetMapper;
import com.dbnt.faisp.main.budget.model.*;
import com.dbnt.faisp.main.budget.model.result.*;
import com.dbnt.faisp.main.budget.repository.*;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@Service
@Transactional
@RequiredArgsConstructor
public class BudgetService extends EgovAbstractServiceImpl {
private final TblBudgetCodeL1Repository codeL1Repository;
private final TblBudgetCodeL2Repository codeL2Repository;
private final TblBudgetCodeL3Repository codeL3Repository;
private final TblBudgetHistoryRepository historyRepository;
private final TblBudgetPlanRepository planRepository;
private final BudgetRepository budgetRepository;
private final BudgetMapper budgetMapper;
public List<BudgetingList> selectBudgetingList(UserInfo loginUser, BudgetDto.BudgetingSearchReqeust requestDto){
/*return budgetRepository.callSpGetBudgetPlanInfo(requestDto.getYear(), "OG001", "admin");*/
BudgetParams param = new BudgetParams();
param.setCode1(requestDto.getYear().toString());
param.setCode2("OG001");
param.setCode3("admin");
return budgetMapper.callSpGetBudgetPlanInfo(param);
}
public List<Integer> selectBudgetingYearList(UserInfo loginUser){
// return budgetRepository.callSpGetBudgetCodeYearList();
return budgetMapper.callSpGetBudgetCodeYearList();
}
// 예산편성 - 연도추가(버튼)
@Transactional
public void copyYearBudgeting(UserInfo loginUser, BudgetDto.BudgetingCopyReqeust requestDto){
// System.out.println(requestDto.getYear());
// System.out.println(requestDto.getCopyYear());
// UpdateResult result = budgetRepository.callSpCopyBudgetItem(requestDto.getYear(), requestDto.getCopyYear(), loginUser.getUserId());
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setCopyYear(requestDto.getCopyYear());
params.setId(loginUser.getUserId());
UpdateResult result = budgetMapper.callSpCopyBudgetItem(params);
if(result.getResultCode().equals("100")) {
return;
} else {
// System.out.println(result.getErrorMessage());
// System.out.println(result.getResultCode());
// System.out.println(result.getResultCount());
throw new BaseException(ResultResponseCode.FOUND_YEAR);
}
}
//예산편성 - 연도삭제(버튼)
@Transactional
public void deleteBudgetingYear(UserInfo loginUser, BudgetDto.BudgetingCopyReqeust requestDto){
// System.out.println(requestDto.getYear());
// System.out.println(requestDto.getCopyYear());
// UpdateResult result = budgetRepository.callBruteForceDeleteBudgetItem(requestDto.getYear(), "admin");
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setId("admin");
UpdateResult result = budgetMapper.callBruteForceDeleteBudgetItem(params);
if(result.getResultCode().equals("100")) {
return;
}else if( result.getResultCode().equals("93")){
// System.out.println(result.getErrorMessage());
// System.out.println(result.getResultCode());
// System.out.println(result.getResultCount());
throw new BaseException(ResultResponseCode.NOT_FOUND_YEAR);
} else {
// System.out.println(result.getErrorMessage());
// System.out.println(result.getResultCode());
// System.out.println(result.getResultCount());
throw new BaseException(ResultResponseCode.DELETE_FOUND_VALUE);
}
}
//예산편성 - 항목추가
@Transactional
public ResultResponseCode insertBudgetingList(UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto){
// UpdateResult result = budgetRepository.callSpAddBudgetPlanCodeName(requestDto.getYear(),requestDto.getNameL1(),requestDto.getNameL2(),requestDto.getNameL3(), "OG001", "admin");
// BudgetParams params = new BudgetParams();
// params.setYear(requestDto.getYear());
// params.setCode1(requestDto.getNameL1());
// params.setCode2(requestDto.getNameL2());
// params.setCode3(requestDto.getNameL3());
// params.setOrg("OG001");
// params.setId("admin");
// UpdateResult result = budgetMapper.callSpAddBudgetPlanCodeName(params);
LocalDateTime modiDate = LocalDateTime.now();
String year = requestDto.getYear();
String codeL1Name = requestDto.getNameL1();
String codeL2Name = requestDto.getNameL2();
String codeL3Name = requestDto.getNameL3();
TblBudgetCodeL1 codeL1 = codeL1Repository.findByL1NameAndL1YearAndUseTag(codeL1Name, year, "Y").orElse(new TblBudgetCodeL1());
if(codeL1.getL1Code() == null){
TblBudgetCodeL1 lastL1Code = codeL1Repository.findTop1ByL1YearOrderByL1CodeDesc(year).orElse(null);
String l1Code = makeCode(year.substring(2), lastL1Code==null?null:lastL1Code.getL1Code());
Integer seqOrd = lastL1Code==null?1:(lastL1Code.getSeqOrd()+1);
codeL1.setData(l1Code, codeL1Name, year, "Y", seqOrd, "항목추가", modiDate);
codeL1Repository.save(codeL1);
}
String l1Code = codeL1.getL1Code();
TblBudgetCodeL2 codeL2 = codeL2Repository.findByL2NameAndL1CodeAndUseTag(codeL2Name, l1Code, "Y").orElse(new TblBudgetCodeL2());;
if(codeL2.getL1Code() == null){
TblBudgetCodeL2 lastL2Code = codeL2Repository.findTop1ByL1CodeOrderByL2CodeDesc(l1Code).orElse(null);
String l2Code = makeCode(l1Code, lastL2Code==null?null: lastL2Code.getL2Code());
Integer seqOrd = lastL2Code==null?1:(lastL2Code.getSeqOrd()+1);
codeL2.setData(l2Code, codeL1Name, l1Code, "Y", seqOrd, "항목추가", modiDate);
codeL2Repository.save(codeL2);
}
String l2Code = codeL2.getL2Code();
TblBudgetCodeL3 codeL3 = codeL3Repository.findByL3NameAndL2CodeAndUseTag(codeL3Name, l2Code, "Y").orElse(new TblBudgetCodeL3());;
if(codeL3.getL3Code() == null){
TblBudgetCodeL3 lastL3Code = codeL3Repository.findTop1ByL2CodeOrderByL3CodeDesc(l2Code).orElse(null);
String l3Code = makeCode(l2Code, lastL3Code==null?null: lastL3Code.getL3Code());
Integer seqOrd = lastL3Code==null?1:(lastL3Code.getSeqOrd()+1);
codeL3.setData(l3Code, codeL3Name, l2Code, "Y", seqOrd, "항목추가", modiDate);
codeL3Repository.save(codeL3);
}else{
// throw new BaseException(ResultResponseCode.DUPLICATE_CODE);
return ResultResponseCode.DUPLICATE_CODE;
}
String l3Code = codeL3.getL3Code();
TblBudgetHistory history = new TblBudgetHistory();
history.setData(l3Code, loginUser.getOgCd(), "예산편성 등록", 0, 0, loginUser.getUserId(), modiDate);
historyRepository.save(history);
TblBudgetPlan plan = new TblBudgetPlan();
plan.setData(l3Code, loginUser.getOgCd(), 0, null, loginUser.getUserId(), modiDate);
planRepository.save(plan);
return ResultResponseCode.SUCCESS;
}
private String makeCode(String upCode, String lastCode){
if (lastCode==null){
return upCode+"001";
}else{
String codeSeq = "00"+(Integer.parseInt(lastCode.substring(lastCode.length()-3))+1);
return upCode+codeSeq.substring(codeSeq.length()-3);
}
}
//예산편성 - 항목변경
@Transactional
public ResultResponseCode updateBudgetingList(UserInfo loginUser, BudgetDto.BudgetingUpdateReqeust requestDto){
TblBudgetCodeL1 codeL1 = codeL1Repository.findByL1NameAndL1YearAndUseTag(requestDto.getPrevNameL1(), requestDto.getYear(), "Y").orElse(new TblBudgetCodeL1());
TblBudgetCodeL2 codeL2 = codeL2Repository.findByL2NameAndL1CodeAndUseTag(requestDto.getPrevNameL2(), codeL1.getL1Code(), "Y").orElse(new TblBudgetCodeL2());
TblBudgetCodeL3 codeL3 = codeL3Repository.findByL3NameAndL2CodeAndUseTag(requestDto.getPrevNameL3(), codeL2.getL2Code(), "Y").orElse(null);
if(codeL3 == null){
return ResultResponseCode.NOT_FOUND_CODE;
}
if(!codeL3.getL3Name().equals(requestDto.getNameL3())){
TblBudgetCodeL3 duplCodeChk = codeL3Repository.findByL3NameAndL2CodeAndUseTag(requestDto.getNameL3(), codeL2.getL2Code(), "Y").orElse(null);
if(duplCodeChk!=null){
return ResultResponseCode.DUPLICATE_CODE;
}else{
codeL3.setL3Name(requestDto.getNameL3());
codeL3Repository.save(codeL3);
}
}
if(!codeL2.getL2Name().equals(requestDto.getNameL2())){
TblBudgetCodeL2 duplCodeChk = codeL2Repository.findByL2NameAndL1CodeAndUseTag(requestDto.getNameL2(), codeL1.getL1Code(), "Y").orElse(null);
if(duplCodeChk!=null){
return ResultResponseCode.DUPLICATE_CODE;
}else{
codeL2.setL2Name(requestDto.getNameL2());
codeL2Repository.save(codeL2);
}
}
if(!codeL1.getL1Name().equals(requestDto.getNameL1())){
TblBudgetCodeL1 duplCodeChk = codeL1Repository.findByL1NameAndL1YearAndUseTag(requestDto.getNameL1(), requestDto.getYear(), "Y").orElse(null);
if(duplCodeChk!=null){
return ResultResponseCode.DUPLICATE_CODE;
}else{
codeL1.setL1Name(requestDto.getNameL1());
codeL1Repository.save(codeL1);
}
}
return ResultResponseCode.SUCCESS;
}
//예산편성 - 항목삭제
@Transactional
public ResultResponseCode deleteBudgetingList(UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto){
/*잔여 예산 확인*/
TblBudgetCodeL1 codeL1 = codeL1Repository.findByL1NameAndL1YearAndUseTag(requestDto.getNameL1(), requestDto.getYear(), "Y").orElse(new TblBudgetCodeL1());
TblBudgetCodeL2 codeL2 = codeL2Repository.findByL2NameAndL1CodeAndUseTag(requestDto.getNameL2(), codeL1.getL1Code(), "Y").orElse(new TblBudgetCodeL2());
TblBudgetCodeL3 codeL3 = codeL3Repository.findByL3NameAndL2CodeAndUseTag(requestDto.getNameL3(), codeL2.getL2Code(), "Y").orElse(null);
if(codeL3 == null){
return ResultResponseCode.NOT_FOUND_CODE;
}
TblBudgetPlan savedAmount = planRepository.findTop1ByBudgetCodeAndOrgCode(codeL3.getL3Code(), loginUser.getOgCd()).orElse(null);
if(savedAmount==null){
return ResultResponseCode.NOT_FOUND_CODE;
}else if(savedAmount.getAmount()>0){
return ResultResponseCode.DELETE_FOUND_VALUE;
}else{
codeL3.setUseTag("N");
codeL3Repository.save(codeL3);
}
return ResultResponseCode.SUCCESS;
}
// 예산편성 - 예산편성 저장(modal)
@Transactional
public void saveBudgetingList(UserInfo loginUser, BudgetDto.BudgetingSaveReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setCode1(requestDto.getNameL1());
params.setCode2(requestDto.getNameL2());
params.setCode3(requestDto.getNameL3());
params.setAmount(requestDto.getAmount());
params.setOrg("OG001");
params.setId("admin");
UpdateResult result = budgetMapper.callSpUpdateBudgetPlanCodeItem(params);
if(result.getResultCode().equals("100")) {
return;
} else {
throw new BaseException(ResultResponseCode.DUPLICATE_CODE);
}
}
//예산편성 - 예산삭제(버튼)
@Transactional
public void deleteBudgeting(UserInfo loginUser, BudgetDto.BudgetingSaveReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setOrg("OG001");
params.setId("admin");
UpdateResult result = budgetMapper.callSpDeleteBudgetPlan(params);
if(result.getResultCode().equals("100")) {
return;
} else {
throw new BaseException(ResultResponseCode.NOT_FOUND_CODE);
}
}
// 예산배정
public List<AssignResult> selectBudgetAssignInfo(UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
return budgetMapper.callSpGetBudgetAssignInfo(params);
}
public List<AssignResult> selectBudgetAssignInfoList(BudgetDto.AssignSearchReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
List<AssignResult> assignResultList = new ArrayList<>();
List<BudgetName> budgetList = budgetMapper.selectBudgetInfoList(params);
List<AssignAmount> assignAmountList = budgetMapper.selectBudgetAssignAmountList(params);
for(BudgetName budget: budgetList){
AssignResult result = new AssignResult();
result.setBudgetNameL1(budget.getBudgetNameL1());
result.setBudgetNameL2(budget.getBudgetNameL2());
result.setBudgetNameL3(budget.getBudgetNameL3());
result.setBudgetCodeL3(budget.getBudgetCodeL3());
result.setPlanAmount(budget.getPlanAmount());
for(AssignAmount amount: assignAmountList){
if(result.getBudgetCodeL3().equals(amount.getBudgetCode())){
int totalAssignAmount = result.getTotalAssignAmount()==null?0:Integer.parseInt(result.getTotalAssignAmount());
totalAssignAmount += amount.getSumAssignAmount();
result.setTotalAssignAmount(Integer.toString(totalAssignAmount));
switch (amount.getOrderSeq()){
case 1:
result.setPeriodAssignAmount1(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount1(amount.getSumAssignAmount().toString());
break;
case 2:
result.setPeriodAssignAmount2(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount2(amount.getSumAssignAmount().toString());
break;
case 3:
result.setPeriodAssignAmount3(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount3(amount.getSumAssignAmount().toString());
break;
case 4:
result.setPeriodAssignAmount4(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount4(amount.getSumAssignAmount().toString());
break;
case 5:
result.setPeriodAssignAmount5(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount5(amount.getSumAssignAmount().toString());
break;
case 6:
result.setPeriodAssignAmount6(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount6(amount.getSumAssignAmount().toString());
break;
case 7:
result.setPeriodAssignAmount7(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount7(amount.getSumAssignAmount().toString());
break;
case 8:
result.setPeriodAssignAmount8(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount8(amount.getSumAssignAmount().toString());
break;
case 9:
result.setPeriodAssignAmount9(amount.getPeriodAssignAmount().toString());
result.setSumAssignAmount9(amount.getSumAssignAmount().toString());
break;
}
}
}
assignResultList.add(result);
}
return assignResultList;
}
//(공통) 2단계로 하위청 뿌려주기
public List<CodeResult> selectDownOrg(String userOrgCode){
// return budgetRepository.callSpGetDownOrg(userOrgCode);
BudgetParams params = new BudgetParams();
params.setOrg(userOrgCode);
// return budgetMapper.callSpGetDownOrg(params);
return budgetMapper.selectDownOrgList(params);
}
//
public List<CodeResult> selectGetLowerOrgCodeByName(UserInfo loginUser){
// return budgetRepository.callSpGetLowerOrgCodeByName();
return budgetMapper.callSpGetLowerOrgCodeByName();
}
//상위 기관 코드 가져오기 (3단계인경우만)
public String selectGetHighOrgCode(String userOrgCode){
// return budgetRepository.callSpGetHighOrgCode(userOrgCode);
BudgetParams params = new BudgetParams();
params.setOrg(userOrgCode);
return budgetMapper.callSpGetHighOrgCode(params);
}
// 예산배정 - 등록(저장버튼)
@Transactional
public ResultResponseCode updateAssignList(UserInfo loginUser, BudgetDto.AssignSaveReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setCode(requestDto.getCode());
params.setOrg(requestDto.getOrg());
params.setOrg1(requestDto.getOrg1());
params.setAmount(requestDto.getAmount());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
params.setDt(LocalDate.now().format(formatter));
UpdateResult result = budgetMapper.callSpAddBudgetAssign(params);
if(result.getResultCode().equals("100")) {
return ResultResponseCode.SUCCESS;
}else if(result.getResultCode().equals("72")) {
return ResultResponseCode.EXPENSE_OVER_VALUE;
} else {
return ResultResponseCode.DUPLICATE_CODE;
}
// return ResultResponseCode.ERROR;
}
//집행관리
public List<ExpenseResult> selectBudgetExpenseInfo(UserInfo loginUser, BudgetDto.AssignSearchReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
return budgetMapper.callSpGetBudgetExpenseInfo(params);
}
public List<ExpenseResult> selectBudgetExpenseInfoList(BudgetParams params){
List<ExpenseResult> expenseList = new ArrayList<>();
List<BudgetName> budgetList = budgetMapper.selectBudgetInfoList(params);
List<ExpenseAmount> amountList = budgetMapper.selectBudgetExpenseAmountList(params);
Integer wonUnit = params.getWon();
for(BudgetName budget : budgetList){
ExpenseResult result = new ExpenseResult();
result.setBudgetNameL1(budget.getBudgetNameL1());
result.setBudgetNameL2(budget.getBudgetNameL2());
result.setBudgetNameL3(budget.getBudgetNameL3());
result.setBudgetCodeL3(budget.getBudgetCodeL3());
result.setPlanAmount(budget.getPlanAmount());
for(ExpenseAmount amount : amountList){
if(result.getBudgetCodeL3().equals(amount.getBudgetCode())){
result.setTotalAssignAmount(result.getTotalAssignAmount()+(double)(amount.getPeriodAssignAmount()/wonUnit));
result.setExpenseTAmount(result.getExpenseTAmount()+(double)(amount.getExpenseAssignAmount()/wonUnit));
result.setBalanceTAmount(result.getBalanceTAmount()+ (double)(amount.getBalanceAmount()/wonUnit));
switch (amount.getOrderSeq()){
case 1:
result.setPeriodAssignAmount1((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount1((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount1((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate1(amount.getExpenseRate());
break;
case 2:
result.setPeriodAssignAmount2((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount2((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount2((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate2(amount.getExpenseRate());
break;
case 3:
result.setPeriodAssignAmount3((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount3((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount3((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate3(amount.getExpenseRate());
break;
case 4:
result.setPeriodAssignAmount4((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount4((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount4((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate4(amount.getExpenseRate());
break;
case 5:
result.setPeriodAssignAmount5((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount5((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount5((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate5(amount.getExpenseRate());
break;
case 6:
result.setPeriodAssignAmount6((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount6((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount6((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate6(amount.getExpenseRate());
break;
case 7:
result.setPeriodAssignAmount7((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount7((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount7((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate7(amount.getExpenseRate());
break;
case 8:
result.setPeriodAssignAmount8((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount8((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount8((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate8(amount.getExpenseRate());
break;
case 9:
result.setPeriodAssignAmount9((double)amount.getPeriodAssignAmount()/wonUnit);
result.setExpensePAmount9((double)amount.getExpenseAssignAmount()/wonUnit);
result.setBalanceAmount9((double)amount.getBalanceAmount()/wonUnit);
result.setExpenseRate9(amount.getExpenseRate());
break;
}
}
}
expenseList.add(result);
}
for(ExpenseResult result : expenseList){
result.setTaRate(Math.round((result.getExpenseTAmount()/(result.getBalanceTAmount()+result.getExpenseTAmount()))*10000)/100.0);
}
return expenseList;
}
public List<ExpenseInfoResult> selectBudgetExpense(UserInfo loginUser, BudgetDto.ExpenseSearchReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setCode1(requestDto.getNameL1());
params.setCode2(requestDto.getNameL2());
params.setCode3(requestDto.getNameL3());
params.setOrg(loginUser.getOgCd());
return budgetMapper.callSpGetBudgetExpense(params);
}
@Transactional
public ResultResponseCode insertExpense(UserInfo loginUser, BudgetDto.ExpenseSaveReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear());
params.setCode1(requestDto.getNameL1());
params.setCode2(requestDto.getNameL2());
params.setCode3(requestDto.getNameL3());
params.setOrg(loginUser.getOgCd());
params.setItem(requestDto.getItem());
params.setAmount(requestDto.getAmount());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
params.setDt(formatter.format(requestDto.getExpenseDate()));
UpdateResult result = budgetMapper.callSpAddBudgetExpense(params);
if(result.getResultCode().equals("100")) {
return ResultResponseCode.SUCCESS;
}else if(result.getResultCode().equals("71")) {
return ResultResponseCode.EXPENSE_OVER_VALUE;
} else {
return ResultResponseCode.ERROR;
}
}
public List<ExpenseResult> selectSpGetbudgetStatOrg(UserInfo loginUser,BudgetDto.StatsSearchReqeust requestDto){
// System.out.println(requestDto.getYear());
// System.out.println(requestDto.getCode());
// System.out.println(java.sql.Date.valueOf(requestDto.getStDate()));
// System.out.println(requestDto.getEdDate());
// System.out.println(requestDto.getWon());
// return budgetRepository.callSpGetbudgetStatOrg(requestDto.getYear(), requestDto.getCode(), "admin", java.sql.Date.valueOf(requestDto.getStDate()), java.sql.Date.valueOf(requestDto.getEdDate()), requestDto.getWon());
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
params.setWon(requestDto.getWon());
return budgetMapper.callSpGetbudgetStatOrg(params);
}
public List<StatsItemResult> selectSpGetbudgetStatDetail(UserInfo loginUser,BudgetDto.StatsSearchReqeust requestDto){
// System.out.println(requestDto.getYear());
// System.out.println(requestDto.getCode());
// System.out.println(java.sql.Date.valueOf(requestDto.getStDate()));
// System.out.println(requestDto.getEdDate());
// System.out.println(requestDto.getWon());
// return budgetRepository.callSpGetbudgetStatDetail(requestDto.getYear(), requestDto.getCode(), requestDto.getItem(), "admin", java.sql.Date.valueOf(requestDto.getStDate()), java.sql.Date.valueOf(requestDto.getEdDate()), requestDto.getWon());
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setItem(requestDto.getItem());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
params.setWon(requestDto.getWon());
return budgetMapper.callSpGetbudgetStatDetail(params);
}
public List<StatsDetailResult> selectStatDetailList(BudgetDto.StatsSearchReqeust requestDto){
BudgetParams params = new BudgetParams();
params.setYear(requestDto.getYear().toString());
params.setCode(requestDto.getCode());
params.setItem(requestDto.getItem());
params.setUser("admin");
params.setStDate(requestDto.getStDate());
params.setEdDate(requestDto.getEdDate());
params.setWon(requestDto.getWon());
List<StatsDetailResult> statsList = new ArrayList<>();
List<StatsDetailResult> tempList = budgetMapper.selectStatDetailList(params);
if(requestDto.getCode().equals("OG001")){
StatsDetailResult total = new StatsDetailResult();
for(StatsDetailResult stats: tempList){
if(stats.getParentOrgan()!=null){
params.setCode(stats.getOrganCd());
List<StatsDetailResult> subList = budgetMapper.selectStatDetailList(params);
StatsDetailResult subTotal = new StatsDetailResult();
subTotal.setOrganCd(stats.getOrganCd());
subTotal.setParentOrgan(stats.getOrganCd());
for(StatsDetailResult sub: subList){
total.setAssignAmount(total.getAssignAmount()+sub.getAssignAmount());
total.setExpenseAmount(total.getExpenseAmount()+sub.getExpenseAmount());
subTotal.setAssignAmount(subTotal.getAssignAmount()+sub.getAssignAmount());
subTotal.setExpenseAmount(subTotal.getExpenseAmount()+sub.getExpenseAmount());
}
statsList.add(subTotal);
statsList.addAll(subList);
}else{
total.setAssignAmount(total.getAssignAmount()+stats.getAssignAmount());
total.setExpenseAmount(total.getExpenseAmount()+stats.getExpenseAmount());
statsList.add(stats);
}
}
tempList.clear();
tempList.addAll(statsList);
statsList.clear();
statsList.add(total);
statsList.addAll(tempList);
}else{
statsList.addAll(tempList);
}
Double wonUnit = params.getWon().doubleValue();
for(StatsDetailResult stat : statsList){
stat.setPlanAmount(stat.getPlanAmount()/wonUnit);
stat.setAssignAmount(stat.getAssignAmount()/wonUnit);
stat.setExpenseAmount(stat.getExpenseAmount()/wonUnit);
stat.setBalanceAmount(stat.getAssignAmount()-stat.getExpenseAmount());
stat.setRate((double)Math.round(stat.getExpenseAmount()/stat.getAssignAmount()*10000)/100);
}
return statsList;
}
public List<L3CodeResult> selectSpGetL3Code(UserInfo loginUser, Integer year){
// return budgetRepository.callSpGetBudgetCodeL3(year);
BudgetParams params = new BudgetParams();
params.setYear(year.toString());
return budgetMapper.callSpGetBudgetCodeL3(params);
}
public BudgetCode selectBudgetCodeToYear(Integer year) {
BudgetCode budgetCode = new BudgetCode();
List<TblBudgetCodeL1> codeL1List = budgetMapper.selectBudgetCodeL1List(year.toString());
List<TblBudgetCodeL2> codeL2List = new ArrayList<>();
List<TblBudgetCodeL3> codeL3List = new ArrayList<>();
for(TblBudgetCodeL1 codeL1: codeL1List){
List<TblBudgetCodeL2> temp2List = budgetMapper.selectBudgetCodeL2List(codeL1.getL1Code());
int l1Colspan = 0;
for(TblBudgetCodeL2 codeL2: temp2List){
List<TblBudgetCodeL3> temp3List = codeL3Repository.findByL2CodeAndUseTagOrderByL3Code(codeL2.getL2Code(), "Y");
codeL2.setColspan(temp3List.size());
l1Colspan += temp3List.size();
codeL3List.addAll(temp3List);
}
codeL2List.addAll(temp2List);
codeL1.setColspan(l1Colspan);
}
budgetCode.setCodeL1List(codeL1List);
budgetCode.setCodeL2List(codeL2List);
budgetCode.setCodeL3List(codeL3List);
return budgetCode;
}
public List<StatsDetailResult> selectStatsTotal(BudgetParams params){
List<StatsDetailResult> statsTotalList = budgetMapper.selectStatsTotal(params);
int wonUnit = params.getWon();
for(StatsDetailResult total: statsTotalList){
total.setPlanAmount(total.getPlanAmount()/wonUnit);
total.setAssignAmount(total.getAssignAmount()/wonUnit);
total.setExpenseAmount(total.getExpenseAmount()/wonUnit);
total.setBalanceAmount(total.getAssignAmount()-total.getExpenseAmount());
total.setRate(Math.round((total.getExpenseAmount()/total.getAssignAmount())*10000)/100d);
}
return statsTotalList;
}
public List<BudgetStat> selectStatsList(BudgetParams params, List<String> downOrganList){
List<BudgetStat> statList = new ArrayList<>();
for(String organ: downOrganList){
BudgetStat stat = new BudgetStat();
stat.setOrgan(organ);
params.setCode(organ);
stat.setAmountList(budgetMapper.selectStats(params));
statList.add(stat);
}
return statList;
}
}

View File

@ -16,7 +16,7 @@ import java.util.Comparator;
@DynamicUpdate
@Table(name = "code_mgt")
@IdClass(CodeMgt.CodeMgtId.class)
public class CodeMgt implements Serializable{
public class CodeMgt {
@Id
@Column(name = "category_cd")
private String categoryCd;
@ -29,8 +29,6 @@ public class CodeMgt implements Serializable{
private String useChk;
@Column(name = "order_num")
private Integer orderNum;
@Column(name = "value_etc")
private String valueEtc;
@Transient
private String status;

View File

@ -3,9 +3,7 @@ package com.dbnt.faisp.main.codeMgt.repository;
import com.dbnt.faisp.main.codeMgt.model.CodeCatg;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface CodeCatgRepository extends JpaRepository<CodeCatg, String> {
List<CodeCatg> findAllByOrderByCategoryCd();
}

View File

@ -12,10 +12,7 @@ public interface CodeMgtRepository extends JpaRepository<CodeMgt, CodeMgt.CodeMg
List<CodeMgt> findByCategoryCdOrderByItemCdAsc(String categoryCd);
List<CodeMgt> findByCategoryCdAndUseChkOrderByOrderNumAsc(String categoryCd, String useChk);
Optional<CodeMgt> findByCategoryCdAndItemValue(String categoryCd, String itemValue);
Optional<CodeMgt> findByCategoryCdAndValueEtc(String categoryCd, String valueEtc);
List<CodeMgt> findByUseChkOrderByItemCdAsc(String useChk);
List<CodeMgt> findByOrderByOrderNumAscItemCdAsc();
List<CodeMgt> findByOrderByOrderNumAsc();
Optional<CodeMgt> findTop1ByCategoryCdOrderByItemCdDesc(String categoryCd);
CodeMgt findTop1ByItemCd(String itemCd);
}

View File

@ -6,7 +6,6 @@ import com.dbnt.faisp.main.codeMgt.model.CodeMgt;
import com.dbnt.faisp.main.codeMgt.repository.CodeCatgRepository;
import com.dbnt.faisp.main.codeMgt.repository.CodeMgtRepository;
import lombok.RequiredArgsConstructor;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -14,7 +13,7 @@ import java.util.*;
@Service
@RequiredArgsConstructor
public class CodeMgtService extends EgovAbstractServiceImpl {
public class CodeMgtService{
private final CodeMgtRepository codeMgtRepository;
private final CodeCatgRepository codeCatgRepository;
@ -66,7 +65,7 @@ public class CodeMgtService extends EgovAbstractServiceImpl {
}
public List<CodeCatg> selectCodeCatgAndChild() {
List<CodeCatg> codeCatgList = codeCatgRepository.findAllByOrderByCategoryCd();
List<CodeCatg> codeCatgList = codeCatgRepository.findAll();
for(CodeCatg codeCatg: codeCatgList){
codeCatg.setItemList(codeMgtRepository.findByCategoryCdOrderByItemCdAsc(codeCatg.getCategoryCd()));
}
@ -74,8 +73,8 @@ public class CodeMgtService extends EgovAbstractServiceImpl {
}
public Map<String, List<CodeMgt>> getCommonCode() {
List<CodeCatg> categoryList = codeCatgRepository.findAllByOrderByCategoryCd();
List<CodeMgt> codeList = codeMgtRepository.findByOrderByOrderNumAscItemCdAsc();
List<CodeCatg> categoryList = codeCatgRepository.findAll();
List<CodeMgt> codeList = codeMgtRepository.findByOrderByOrderNumAsc();
Map<String, List<CodeMgt>> categoryMap = new HashMap<>();
for(CodeCatg category: categoryList){
List<CodeMgt> childList = new ArrayList<>();
@ -99,52 +98,14 @@ public class CodeMgtService extends EgovAbstractServiceImpl {
}
public String searchCodeToCategoryAndValue(String categoryCd, String value){
CodeMgt code = codeMgtRepository.findByCategoryCdAndItemValue(categoryCd, value).orElse(null);
if(code==null){
CodeMgt lastCode = codeMgtRepository.findTop1ByCategoryCdOrderByItemCdDesc(categoryCd).orElse(null);
String lastCodeSeq = "1";
if(lastCode!=null){
lastCodeSeq = lastCode.getItemCd().replace(lastCode.getCategoryCd(), "");
}
String tempItemCd = "000" + (Integer.parseInt(lastCodeSeq)+1);
CodeMgt newCode = new CodeMgt();
newCode.setCategoryCd(categoryCd);
newCode.setItemCd(categoryCd+(tempItemCd.substring(tempItemCd.length() - 3)));
newCode.setItemValue(value);
newCode.setUseChk("T");
codeMgtRepository.save(newCode);
// 새 관서 등록시 부서 추가될 수 있도록 공통코드 카테고리 추가.
if(categoryCd.equals("OG")){
CodeCatg newCategory = new CodeCatg();
newCategory.setCategoryCd(newCode.getItemCd());
newCategory.setCategoryValue(newCode.getItemValue());
newCategory.setDescription(newCode.getItemValue()+" 부서");
codeCatgRepository.save(newCategory);
}
return newCode.getItemCd();
}
return code.getItemCd();
}
public String searchCodeToCategoryAndValueEtc(String categoryCd, String valueEtc){
CodeMgt code = codeMgtRepository.findByCategoryCdAndValueEtc(categoryCd, valueEtc).orElse(null);
if (code == null){
return null;
}
return code.getItemCd();
return code==null?null:code.getItemCd();
}
public List<CodeCatg> selectAllCategoryList() {
return codeCatgRepository.findAllByOrderByCategoryCd();
return codeCatgRepository.findAll();
}
public List<CodeMgt> selectAllCodeList() {
return codeMgtRepository.findByOrderByOrderNumAscItemCdAsc();
}
public String searchValue(String itemCd) {
return codeMgtRepository.findTop1ByItemCd(itemCd).getItemValue();
return codeMgtRepository.findByOrderByOrderNumAsc();
}
}

View File

@ -1,320 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence;
import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.counterIntelligence.model.*;
import com.dbnt.faisp.main.counterIntelligence.service.CounterIntelligenceService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.List;
@RestController
@RequiredArgsConstructor
@RequestMapping("/counterIntelligence")
public class CounterIntelligenceController {
private final CounterIntelligenceService ciService;
private final AuthMgtService authMgtService;
private final CodeMgtService codeMgtService;
@GetMapping("/ciWorkList")
public ModelAndView ciWorkListPage(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceWork ciWork){
ModelAndView mav = new ModelAndView("counterIntelligence/ciWork/ciWorkBoard");
mav.addObject("searchUrl", "/counterIntelligence/ciWorkList");
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciWorkList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
if(accessAuth.equals("ACC003")){
mav.addObject("downOrganCdList", loginUser.getDownOrganCdList());
ciWork.setDownOrganCdList(loginUser.getDownOrganCdList());
}else{
ciWork.setWrtOrgan(loginUser.getOgCd());
}
ciWork.setQueryInfo();
mav.addObject("ciWorkList", ciService.selectCounterIntelligenceWorkList(ciWork));
ciWork.setContentCnt(ciService.selectCounterIntelligenceWorkCnt(ciWork));
ciWork.setPaginationInfo();
mav.addObject("searchParams", ciWork);
return mav;
}
@GetMapping("/ciWorkEditModal")
public ModelAndView ciWorkEditModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceWork ciWork){
ModelAndView mav = new ModelAndView("counterIntelligence/ciWork/ciWorkEditModal");
mav.addObject("ciwrCodeList", codeMgtService.selectCodeMgtList("CIWR"));
if(ciWork.getCiwKey()==null){
ciWork.setWrtOrgan(loginUser.getOgCd());
ciWork.setWrtPart(loginUser.getOfcCd());
ciWork.setWrtUserSeq(loginUser.getUserSeq());
ciWork.setWrtUserGrd(loginUser.getTitleCd());
ciWork.setWrtUserNm(loginUser.getUserNm());
ciWork.setWrtDt(LocalDateTime.now());
}else{
ciWork = ciService.selectCounterIntelligenceWork(ciWork.getCiwKey());
}
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciWorkList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("ciWork", ciWork);
return mav;
}
@GetMapping("/ciWorkViewModal")
public ModelAndView ciWorkViewModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceWork ciWork){
ModelAndView mav = new ModelAndView("counterIntelligence/ciWork/ciWorkViewModal");
mav.addObject("lineSeparator", '\n');
mav.addObject("viewUserSeq", loginUser.getUserSeq());
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciWorkList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("ciWork", ciService.selectCounterIntelligenceWork(ciWork.getCiwKey()));
return mav;
}
@PostMapping("/saveCiWork")
public Integer saveCiWork(CounterIntelligenceWork ciWork,
MultipartHttpServletRequest request,
@RequestParam(value = "fileSeq", required = false) List<Integer> deleteFileSeq){
ciWork.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
return ciService.saveCiWork(ciWork, deleteFileSeq);
}
@PostMapping("/deleteCiWork")
public Integer deleteCiWork(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceWork ciWork){
// String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/counterIntelligence/ciWorkList").get(0).getAccessAuth();
return ciService.deleteCiWork(ciWork.getCiwKey());
/*if(accessAuth.equals("ACC003")){
return ciService.deleteCiWork(ciWork.getCiwKey());
}else{
return 0;
}*/
}
@GetMapping("/CiWorkStatistics")
public ModelAndView ciWorkStatistics(@AuthenticationPrincipal UserInfo loginUser, CiWorkStatistics ciWorkStatistics){
if(ciWorkStatistics.getYear()==null){
ciWorkStatistics.setYear(LocalDateTime.now().getYear());
}
ModelAndView mav = new ModelAndView("counterIntelligence/ciWork/ciWorkStatistics");
mav.addObject("yearList", ciService.selectCiWorkYearList());
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciWorkList").get(0).getAccessAuth();
if(accessAuth.equals("ACC003")) {
ciWorkStatistics.setDownOrganCdList(loginUser.getDownOrganCdList());
}else{
ciWorkStatistics.setOgCd(loginUser.getOgCd());
}
mav.addObject("ciWorkStatisticsList", ciService.selectCiWorkStatisticsList(ciWorkStatistics));
mav.addObject("searchParams", ciWorkStatistics);
return mav;
}
@PostMapping("/saveCiActivity")
public Integer saveCiActivity(CounterIntelligenceActivity cia,@AuthenticationPrincipal UserInfo loginUser,
MultipartHttpServletRequest request,
@RequestParam(value = "fileSeq", required = false) List<Integer> deleteFileSeq){
cia.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
if(cia.getCiKey()==null){
cia.setWrtOrgan(loginUser.getOgCd());
cia.setWrtPart(loginUser.getOfcCd());
cia.setWrtUserSeq(loginUser.getUserSeq());
cia.setWrtUserGrd(loginUser.getTitleCd());
cia.setWrtUserNm(loginUser.getUserNm());
cia.setWrtDt(LocalDateTime.now());
}
Integer ciKey = ciService.saveCiActivity(cia, deleteFileSeq);
return ciKey;
}
@GetMapping("/ciaSafetyDemandList")
public ModelAndView ciaSafetyDemandList(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView("counterIntelligence/ciaSafetyDemandList");
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciaSafetyDemandList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
cia.setDownOrganCdList(loginUser.getDownOrganCdList());
cia.setWrtUserSeq(loginUser.getUserSeq());
cia.setQueryInfo();
mav.addObject("sdiList", ciService.selectCiaSafetyDemandList(cia));
cia.setContentCnt(ciService.selectCiaSafetyDemandListCnt(cia));
cia.setPaginationInfo();
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
mav.addObject("loginUserSeq", loginUser.getUserSeq());
mav.addObject("searchParams", cia);
return mav;
}
@GetMapping("/ciaManageCompanyList")
public ModelAndView ciaManageCompanyList(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView("counterIntelligence/ciaManageCompanyList");
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciaManageCompanyList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
cia.setWrtUserSeq(loginUser.getUserSeq());
cia.setDownOrganCdList(loginUser.getDownOrganCdList());
cia.setQueryInfo();
mav.addObject("mciList", ciService.selectCiaManageCompanyList(cia));
cia.setContentCnt(ciService.selectCiaManageCompanyListCnt(cia));
cia.setPaginationInfo();
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
mav.addObject("loginUserSeq", loginUser.getUserSeq());
mav.addObject("searchParams", cia);
return mav;
}
@GetMapping("/ciaForeignerList")
public ModelAndView ciaForeignerList(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView("counterIntelligence/ciaForeignerList");
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciaForeignerList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
cia.setWrtUserSeq(loginUser.getUserSeq());
cia.setDownOrganCdList(loginUser.getDownOrganCdList());
cia.setQueryInfo();
mav.addObject("fiList", ciService.selectCiaForeignerList(cia));
cia.setContentCnt(ciService.selectCiaForeignerListCnt(cia));
cia.setPaginationInfo();
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
mav.addObject("loginUserSeq", loginUser.getUserSeq());
mav.addObject("searchParams", cia);
return mav;
}
@GetMapping("/ciaEduList")
public ModelAndView ciaEduList(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView("counterIntelligence/ciaEduList");
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciaEduList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
cia.setWrtUserSeq(loginUser.getUserSeq());
cia.setDownOrganCdList(loginUser.getDownOrganCdList());
cia.setQueryInfo();
mav.addObject("eiList", ciService.selectCiaEduList(cia));
cia.setContentCnt(ciService.selectCiaEduListCnt(cia));
cia.setPaginationInfo();
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
mav.addObject("loginUserSeq", loginUser.getUserSeq());
mav.addObject("searchParams", cia);
return mav;
}
@GetMapping("/ciaEditModal")
public ModelAndView ciaEditModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView();
switch (cia.getCiType()){
case "SDI":
mav.setViewName("counterIntelligence/ciaSafetyDemandEditModal");
break;
case "MCI":
mav.setViewName("counterIntelligence/ciaManageCompanyEditModal");
break;
case "FI":
mav.setViewName("counterIntelligence/ciaForeignerEditModal");
break;
case "EI":
mav.setViewName("counterIntelligence/ciaEduEditModal");
break;
}
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
mav.addObject("cia", ciService.selectCiaInfo(cia));
return mav;
}
@GetMapping("/ciaViewModal")
public ModelAndView ciaViewModal(@AuthenticationPrincipal UserInfo loginUser, CounterIntelligenceActivity cia){
ModelAndView mav = new ModelAndView();
String accessAuth = null;
switch (cia.getCiType()){
case "SDI":
mav.setViewName("counterIntelligence/ciaSafetyDemandViewModal");
accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciaSafetyDemandList").get(0).getAccessAuth();
break;
case "MCI":
mav.setViewName("counterIntelligence/ciaManageCompanyViewModal");
accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciaManageCompanyList").get(0).getAccessAuth();
break;
case "FI":
mav.setViewName("counterIntelligence/ciaForeignerViewModal");
accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciaForeignerList").get(0).getAccessAuth();
break;
case "EI":
mav.setViewName("counterIntelligence/ciaEduViewModal");
accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/ciaEduList").get(0).getAccessAuth();
break;
}
mav.addObject("accessAuth", accessAuth);
mav.addObject("lineSeparator", '\n');
mav.addObject("viewUserSeq", loginUser.getUserSeq());
mav.addObject("cia", ciService.selectCiaInfo(cia));
return mav;
}
@PostMapping("/deleteCounterIntelligenceActivity")
public void deleteCounterIntelligenceActivity(@AuthenticationPrincipal UserInfo loginUser,@RequestBody CounterIntelligenceActivity cia){
cia.setContentStatus("DST008");
ciService.deleteCounterIntelligenceActivity(cia);
}
@GetMapping("/getCiaForeignerImg")
public void getCiaForeignerImg(CiaFile cf , HttpServletResponse response) throws Exception {
CiaFile dbImg = ciService.selectCiaForeignerFile(cf.getCiKey(),cf.getFileSeq());
String realFile = dbImg.getSavePath()+"/"+ dbImg.getConvNm();
String fileNm = dbImg.getConvNm();
BufferedOutputStream out = null;
InputStream in = null;
try {
response.setContentType("image/jpeg;charset=UTF-8");
response.setHeader("Content-Disposition", "inline;filename=" + fileNm);
File file = new File(realFile);
// File file = new File(realFile + "/" + fileNm);
if(file.exists()){
in = new FileInputStream(file);
out = new BufferedOutputStream(response.getOutputStream());
int len;
byte[] buf = new byte[1024];
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
}
} catch (Exception e) {
} finally {
if(out != null){ out.flush(); }
if(out != null){ out.close(); }
if(in != null){ in.close(); }
}
}
}

View File

@ -1,209 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase;
import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
import com.dbnt.faisp.main.codeMgt.model.CodeMgt;
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.*;
import com.dbnt.faisp.main.counterIntelligence.activityCase.service.ActivityCaseService;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequiredArgsConstructor
@RequestMapping("/counterIntelligence")
public class ActivityCaseController {
private final ActivityCaseService activityCaseService;
private final AuthMgtService authMgtService;
@GetMapping("/activityCaseList")
public ModelAndView activityCaseListPage(@AuthenticationPrincipal UserInfo loginUser, ActivityCaseBoard activityCase){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseBoard");
mav.addObject("searchUrl", "/counterIntelligence/activityCaseList");
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/activityCaseList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("ogCd", loginUser.getOgCd());
if(accessAuth.equals("ACC003")){
activityCase.setDownOrganCdList(loginUser.getDownOrganCdList());
}else{
activityCase.setWrtOrgan(loginUser.getOgCd());
}
activityCase.setWrtUserSeq(loginUser.getUserSeq());
activityCase.setQueryInfo();
mav.addObject("activityCaseList", activityCaseService.selectActivityCaseList(activityCase));
activityCase.setContentCnt(activityCaseService.selectActivityCaseCnt(activityCase));
activityCase.setPaginationInfo();
mav.addObject("searchParams", activityCase);
return mav;
}
@GetMapping("/activityCaseEditModal")
public ModelAndView activityCaseEditModal(@AuthenticationPrincipal UserInfo loginUser, ActivityCase activityCase, ActivityCaseInfo activityCaseInfo){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseEditModal");
if(activityCase.getReceiptKey()==null){
activityCase.setWrtOrgan(loginUser.getOgCd());
activityCase.setWrtPart(loginUser.getOfcCd());
activityCase.setWrtUserSeq(loginUser.getUserSeq());
activityCase.setWrtUserGrd(loginUser.getTitleCd());
activityCase.setWrtUserNm(loginUser.getUserNm());
}else{
activityCase = activityCaseService.selectActivityCase(activityCase.getReceiptKey());
if(activityCaseInfo.getCaseKey()!=null){
activityCaseInfo = activityCaseService.selectActivityCaseInfo(activityCaseInfo.getCaseKey());
}
}
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/activityCaseList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("activityCase", activityCase);
mav.addObject("activityCaseInfo", activityCaseInfo);
return mav;
}
@GetMapping("/getSuspectDiv")
public ModelAndView suspectDiv(){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/suspectDiv");
return mav;
}
@PostMapping("/getApprvDiv")
@ResponseBody
public ModelAndView apprvDiv(@RequestBody List<ActivityCaseApprv> apprvList){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/apprvDiv");
mav.addObject("userList", apprvList);
return mav;
}
@GetMapping("/activityCaseSummaryModal")
public ModelAndView activityCaseSummaryModal(@AuthenticationPrincipal UserInfo loginUser, ActivityCaseSummary activityCase){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseSummaryModal");
mav.addObject("modalType", activityCase.getModalType());
List<ActivityCaseSummary> activityCaseList = activityCaseService.selectActivityCaseInfoList(activityCase.getReceiptKey());
mav.addObject("viewUserSeq", loginUser.getUserSeq());
mav.addObject("wrtUserSeq", activityCaseList.get(activityCaseList.size()-1).getWrtUserSeq());
mav.addObject("lastCaseType", activityCaseList.get(activityCaseList.size()-1).getCaseType());
mav.addObject("lastStatus", activityCaseList.get(activityCaseList.size()-1).getStatus());
mav.addObject("receiptKey", activityCase.getReceiptKey());
mav.addObject("activityCaseList", activityCaseList);
return mav;
}
@GetMapping("/activityCaseViewModal")
public ModelAndView activityCaseViewModal(@AuthenticationPrincipal UserInfo loginUser, ActivityCaseInfo activityCaseInfo){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseViewModal");
mav.addObject("modalType", activityCaseInfo.getModalType());
activityCaseInfo = activityCaseService.selectActivityCaseInfo(activityCaseInfo.getCaseKey());
ActivityCase activityCase = activityCaseService.selectActivityCase(activityCaseInfo.getReceiptKey());
mav.addObject("viewUserSeq", loginUser.getUserSeq());
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/activityCaseList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("activityCase", activityCase);
mav.addObject("activityCaseInfo", activityCaseInfo);
boolean printFlag = false;
for(ActivityCaseApprv apprv: activityCaseInfo.getApprvList()){
if((!Utils.isEmpty(apprv.getApprvYn()) && apprv.getApprvYn().equals("Y"))
&& (!Utils.isEmpty(apprv.getApprvType()) && !apprv.getApprvType().equals("ACAT001"))){
printFlag = true;
}
}
mav.addObject("printFlag", printFlag);
return mav;
}
@PostMapping("/saveActivityCase")
public Integer saveActivityCase(ActivityCase activityCase,
ActivityCaseInfo activityCaseInfo,
MultipartHttpServletRequest request,
@RequestParam(value = "fileSeq", required = false) List<Integer> deleteFileSeq){
activityCaseInfo.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
return activityCaseService.saveActivityCase(activityCase, activityCaseInfo, deleteFileSeq);
}
@PostMapping("/saveActivityCaseApprv")
public void saveActivityCaseApprv(@RequestBody ActivityCaseApprv apprv){
activityCaseService.saveActivityCaseApprv(apprv);
}
@PostMapping("/deleteActivityCase")
@ResponseBody
public void deleteActivityCase(@AuthenticationPrincipal UserInfo loginUser, @RequestBody ActivityCase activityCase){
activityCaseService.deleteActivityCase(activityCase.getReceiptKey());
}
@PostMapping("/deleteActivityCaseInfo")
@ResponseBody
public void deleteActivityCaseInfo(@AuthenticationPrincipal UserInfo loginUser, @RequestBody ActivityCaseInfo acInfo) {
activityCaseService.deleteActivityCaseInfo(acInfo.getCaseKey());
}
@GetMapping("/activityCaseMgt")
public ModelAndView activityCaseMgt(@AuthenticationPrincipal UserInfo loginUser, ActivityCaseBoard activityCase){
ModelAndView mav = new ModelAndView("counterIntelligence/activityCase/activityCaseMgt");
mav.addObject("searchUrl", "/counterIntelligence/activityCaseMgt");
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/counterIntelligence/activityCaseMgt").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("ogCd", loginUser.getOgCd());
if(accessAuth.equals("ACC003")){
activityCase.setDownOrganCdList(loginUser.getDownOrganCdList());
}else{
activityCase.setWrtOrgan(loginUser.getOgCd());
}
activityCase.setWrtUserSeq(loginUser.getUserSeq());
activityCase.setQueryInfo();
mav.addObject("activityCaseList", activityCaseService.selectActivityCaseMgt(activityCase));
activityCase.setContentCnt(activityCaseService.selectActivityCaseMgtCnt(activityCase));
activityCase.setPaginationInfo();
mav.addObject("searchParams", activityCase);
return mav;
}
@GetMapping("/activityCasePrint")
public Map<String, Object> activityCasePrint(ActivityCaseInfo info, HttpSession session){
Map<String, List<CodeMgt>> codeMap = (Map<String, List<CodeMgt>>) session.getAttribute("commonCode");
Map<String, Object> map = new HashMap<>();
info = activityCaseService.selectActivityCaseInfo(info.getCaseKey());
ActivityCase activityCase = activityCaseService.selectActivityCase(info.getReceiptKey());
String reception = "";
String reference = "";
switch (activityCase.getWrtOrgan()){
case "OG001":
reception = "해양경찰청장";
reference = "외사과장";
break;
case "OG027":
reception = "서해5도특별경비단장";
reference = "경비작전과장";
break;
default:
String organNm = Utils.searchCodeValue(activityCase.getWrtOrgan(), codeMap.get("OG")).trim();
if(organNm.endsWith("청")){
reception = organNm.substring(0, organNm.length()-1)+"지방청장";
}else{
reception = organNm.substring(0, organNm.length()-1)+"경찰서장";
}
reference = "정보외사과장";
break;
}
map.put("reception", reception);
map.put("reference", reference);
map.put("activityCase", activityCaseService.getActivityCasePrintData(activityCase, codeMap));
map.put("activityCaseInfo", activityCaseService.getActivityCaseInfoPrintData(info, codeMap));
return map;
}
}

View File

@ -1,25 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.mapper;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCase;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseBoard;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseSummary;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
@Mapper
public interface ActivityCaseMapper {
List<ActivityCaseBoard> selectActivityCaseList(ActivityCaseBoard activityCase);
Integer selectActivityCaseCnt(ActivityCaseBoard activityCase);
List<ActivityCaseSummary> selectActivityCaseInfoList(Integer receiptKey);
Integer selectReceiptNum(int year);
Integer selectCaseNum(Map<String, Object> map);
List<ActivityCaseBoard> selectActivityCaseMgt(ActivityCaseBoard activityCase);
Integer selectActivityCaseMgtCnt(ActivityCaseBoard activityCase);
}

View File

@ -1,46 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.model;
import com.dbnt.faisp.config.BaseModel;
import com.dbnt.faisp.main.counterIntelligence.model.CiwFile;
import com.dbnt.faisp.main.counterIntelligence.model.HashTagLinkCiw;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "activity_case")
public class ActivityCase extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "receipt_key")
private Integer receiptKey;
@Column(name = "receipt_num")
private String receiptNum;
@Column(name = "wrt_organ")
private String wrtOrgan;
@Column(name = "wrt_part")
private String wrtPart;
@Column(name = "wrt_user_seq")
private Integer wrtUserSeq;
@Column(name = "wrt_user_grd")
private String wrtUserGrd;
@Column(name = "wrt_user_nm")
private String wrtUserNm;
@Transient
private List<ActivityCaseSuspect> suspectList;
}

View File

@ -1,55 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.model;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "activity_case_apprv")
@IdClass(ActivityCaseApprv.ActivityCaseApprvId.class)
public class ActivityCaseApprv {
@Id
@Column(name = "case_key")
private Integer caseKey;
@Id
@Column(name = "user_seq")
private Integer userSeq;
@Column(name = "apprv_type")
private String apprvType;
@Column(name = "og_cd")
private String ogCd;
@Column(name = "ofc_cd")
private String ofcCd;
@Column(name = "title_cd")
private String titleCd;
@Column(name = "user_nm")
private String userNm;
@Column(name = "instructions")
private String instructions;
@Column(name = "apprv_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime apprvDt;
@Column(name = "apprv_yn")
private String apprvYn;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class ActivityCaseApprvId implements Serializable {
private Integer caseKey;
private Integer userSeq;
}
}

View File

@ -1,40 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.model;
import com.dbnt.faisp.config.BaseModel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Getter
@Setter
@NoArgsConstructor
public class ActivityCaseBoard extends BaseModel {
private Integer receiptKey;
private String receiptNum;
private String wrtOrgan;
private String wrtPart;
private Integer wrtUserSeq;
private String wrtUserGrd;
private String wrtUserNm;
private Integer reportCnt;
private String caseType;
private String caseNum;
private String title;
private String content;
private LocalDate reportDate;
private LocalDate activityStartDate;
private LocalDate activityEndDate;
private LocalDateTime wrtDt;
private String status;
private String suspectNm;
private String suspectBirthDate;
private String suspectAddress;
private Integer suspectCnt;
private String activityResult;
private String apprvType;
private String apprvUserNm;
private String description;
}

View File

@ -1,46 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.model;
import com.dbnt.faisp.config.FileInfo;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.io.Serializable;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "activity_case_file")
@IdClass(ActivityCaseFile.ActivityCaseFileId.class)
public class ActivityCaseFile extends FileInfo {
@Id
@Column(name = "case_key")
private Integer caseKey;
@Id
@Column(name = "file_seq")
private Integer fileSeq;
@Column(name = "orig_nm")
private String origNm;
@Column(name = "conv_nm")
private String convNm;
@Column(name = "file_extn")
private String fileExtn;
@Column(name = "file_size")
private String fileSize;
@Column(name = "save_path")
private String savePath;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class ActivityCaseFileId implements Serializable {
private Integer caseKey;
private Integer fileSeq;
}
}

View File

@ -1,58 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.model;
import com.dbnt.faisp.config.BaseModel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "activity_case_info")
public class ActivityCaseInfo extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "case_key")
private Integer caseKey;
@Column(name = "receipt_key")
private Integer receiptKey;
@Column(name = "case_num")
private String caseNum;
@Column(name = "report_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate reportDate;
@Column(name = "case_type")
private String caseType;
@Column(name = "title")
private String title;
@Column(name = "content")
private String content;
@Column(name = "description")
private String description;
@Column(name = "activity_result")
private String activityResult;
@Column(name = "wrt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime wrtDt;
@Column(name = "status")
private String status;
@Transient
private List<ActivityCaseApprv> apprvList;
@Transient
private List<ActivityCaseFile> fileList;
@Transient
private List<MultipartFile> multipartFileList;
}

View File

@ -1,36 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.model;
import com.dbnt.faisp.config.BaseModel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
public class ActivityCaseSummary extends BaseModel {
private Integer receiptKey;
private String receiptNum;
private String wrtOrgan;
private String wrtPart;
private Integer wrtUserSeq;
private String wrtUserGrd;
private String wrtUserNm;
private Integer caseKey;
private String caseNum;
private LocalDate reportDate;
private String caseType;
private String title;
private LocalDateTime wrtDt;
private String status;
private Integer apprvCnt;
private Integer allCnt;
private Integer fileCnt;
}

View File

@ -1,56 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.model;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDate;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "activity_case_suspect")
@IdClass(ActivityCaseSuspect.ActivityCaseSuspectId.class)
public class ActivityCaseSuspect {
@Id
@Column(name = "receipt_key")
private Integer receiptKey;
@Id
@Column(name = "suspect_seq")
private Integer suspectSeq;
@Column(name = "type")
private String type;
@Column(name = "name")
private String name;
@Column(name = "sex")
private String sex;
@Column(name = "birth_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate birthDate;
@Column(name = "phone")
private String phone;
@Column(name = "address")
private String address;
@Column(name = "area")
private String area;
@Column(name = "job")
private String job;
@Column(name = "etc")
private String etc;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class ActivityCaseSuspectId implements Serializable {
private Integer receiptKey;
private Integer suspectSeq;
}
}

View File

@ -1,15 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.repository;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseApprv;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseFile;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface ActivityCaseApprvRepository extends JpaRepository<ActivityCaseApprv, ActivityCaseApprv.ActivityCaseApprvId> {
List<ActivityCaseApprv> findByCaseKey(Integer caseKey);
}

View File

@ -1,16 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.repository;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseFile;
import com.dbnt.faisp.main.counterIntelligence.model.CiwFile;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface ActivityCaseFileRepository extends JpaRepository<ActivityCaseFile, ActivityCaseFile.ActivityCaseFileId> {
List<ActivityCaseFile> findByCaseKey(Integer caseKey);
Optional<ActivityCaseFile> findTopByCaseKeyOrderByFileSeqDesc(Integer caseKey);
List<ActivityCaseFile> findByCaseKeyOrderByFileSeqAsc(Integer caseKey);
}

View File

@ -1,17 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.repository;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
public interface ActivityCaseInfoRepository extends JpaRepository<ActivityCaseInfo, Integer> {
@Modifying(clearAutomatically = true)
@Query("update ActivityCaseInfo set status = :status where receiptKey = :receiptKey")
void bulkModifyingByReceiptKeyToStatus(Integer receiptKey, String status);
@Modifying(clearAutomatically = true)
@Query("update ActivityCaseInfo set status = :status where caseKey = :caseKey")
void bulkModifyingByCaseKeyToStatus(Integer caseKey, String status);
}

View File

@ -1,9 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.repository;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCase;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ActivityCaseRepository extends JpaRepository<ActivityCase, Integer> {
}

View File

@ -1,13 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.repository;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.ActivityCaseSuspect;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface ActivityCaseSuspectRepository extends JpaRepository<ActivityCaseSuspect, ActivityCaseSuspect.ActivityCaseSuspectId> {
List<ActivityCaseSuspect> findByReceiptKeyOrderBySuspectSeqDesc(Integer receiptKey);
}

View File

@ -1,191 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.activityCase.service;
import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.config.FileInfo;
import com.dbnt.faisp.main.codeMgt.model.CodeMgt;
import com.dbnt.faisp.main.counterIntelligence.activityCase.mapper.ActivityCaseMapper;
import com.dbnt.faisp.main.counterIntelligence.activityCase.model.*;
import com.dbnt.faisp.main.counterIntelligence.activityCase.repository.*;
import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@Service
@RequiredArgsConstructor
public class ActivityCaseService extends BaseService {
private final ActivityCaseRepository acRepository;
private final ActivityCaseSuspectRepository acsRepository;
private final ActivityCaseInfoRepository aciRepository;
private final ActivityCaseFileRepository acfRepository;
private final ActivityCaseApprvRepository acaRepository;
private final ActivityCaseMapper acMapper;
public List<ActivityCaseBoard> selectActivityCaseList(ActivityCaseBoard activityCase){
return acMapper.selectActivityCaseList(activityCase);
}
public Integer selectActivityCaseCnt(ActivityCaseBoard activityCase){
return acMapper.selectActivityCaseCnt(activityCase);
}
public ActivityCase selectActivityCase(Integer receiptKey) {
ActivityCase activityCase = acRepository.findById(receiptKey).orElse(null);
activityCase.setSuspectList(acsRepository.findByReceiptKeyOrderBySuspectSeqDesc(receiptKey));
return activityCase;
}
public ActivityCaseInfo selectActivityCaseInfo(Integer caseKey) {
ActivityCaseInfo activityCaseInfo = aciRepository.findById(caseKey).orElse(null);
activityCaseInfo.setApprvList(acaRepository.findByCaseKey(caseKey));
activityCaseInfo.setFileList(acfRepository.findByCaseKeyOrderByFileSeqAsc(caseKey));
return activityCaseInfo;
}
@Transactional
public Integer saveActivityCase(ActivityCase activityCase, ActivityCaseInfo activityCaseInfo, List<Integer> deleteFileSeq) {
Integer receiptKey = null;
if(Utils.isEmpty(activityCase.getReceiptKey())){
if(Utils.isEmpty(activityCase.getReceiptNum())){
activityCase.setReceiptNum(makeReceiptNum(LocalDate.now().getYear()));
}
receiptKey = acRepository.save(activityCase).getReceiptKey();
}else{
receiptKey = activityCase.getReceiptKey();
}
int suspectSeq = 1;
for(ActivityCaseSuspect suspect: activityCase.getSuspectList()){
suspect.setSuspectSeq(suspectSeq++);
suspect.setReceiptKey(receiptKey);
}
acsRepository.saveAll(activityCase.getSuspectList());
if(Utils.isEmpty(activityCaseInfo.getCaseNum())){
activityCaseInfo.setCaseNum(makeCaseNum(LocalDate.now().getYear(), activityCase.getReceiptNum()));
}
activityCaseInfo.setReceiptKey(receiptKey);
activityCaseInfo.setWrtDt(LocalDateTime.now());
Integer caseKey = aciRepository.save(activityCaseInfo).getCaseKey();
if(deleteFileSeq != null && deleteFileSeq.size()>0){
deleteActivityCaseFile(caseKey, deleteFileSeq);
}
if(activityCaseInfo.getMultipartFileList()!=null && activityCaseInfo.getMultipartFileList().size()>0){
saveUploadFiles(caseKey, activityCaseInfo.getMultipartFileList());
}
if(activityCaseInfo.getApprvList()!=null && activityCaseInfo.getApprvList().size()>0){
for(ActivityCaseApprv apprv: activityCaseInfo.getApprvList()){
apprv.setCaseKey(caseKey);
}
acaRepository.saveAll(activityCaseInfo.getApprvList());
}
return caseKey;
}
private void deleteActivityCaseFile(Integer caseKey, List<Integer> deleteFileSeq) {
List<ActivityCaseFile> activityCaseFileList = acfRepository.findByCaseKey(caseKey);
for(ActivityCaseFile file: activityCaseFileList){
if(deleteFileSeq.contains(file.getFileSeq())){
deleteStoredFile(new File(file.getSavePath(), file.getConvNm()));
acfRepository.delete(file);
}
}
}
private void saveUploadFiles(Integer caseKey, List<MultipartFile> multipartFileList){
ActivityCaseFile lastFileInfo = acfRepository.findTopByCaseKeyOrderByFileSeqDesc(caseKey).orElse(null);
int fileSeq = lastFileInfo==null?1:(lastFileInfo.getFileSeq()+1);
for(MultipartFile file : multipartFileList){
String saveName = UUID.randomUUID().toString();
String path = locationPath+activityCasePath;
saveFile(file, new File(path+File.separator+saveName));
String originalFilename = file.getOriginalFilename();
int extnIdx = originalFilename.lastIndexOf(".");
ActivityCaseFile fileInfo = new ActivityCaseFile();
fileInfo.setCaseKey(caseKey);
fileInfo.setFileSeq(fileSeq++);
fileInfo.setOrigNm(originalFilename.substring(0, extnIdx));
fileInfo.setFileExtn(originalFilename.substring(extnIdx+1));
fileInfo.setConvNm(saveName);
fileInfo.setFileSize(calculationSize(file.getSize()));
fileInfo.setSavePath(path);
acfRepository.save(fileInfo);
}
}
public FileInfo selectActivityCaseFile(Integer caseKey, Integer fileSeq) {
return acfRepository.findById(new ActivityCaseFile.ActivityCaseFileId(caseKey, fileSeq)).orElse(null);
}
@Transactional
public void deleteActivityCase(Integer receiptKey) {
aciRepository.bulkModifyingByReceiptKeyToStatus(receiptKey, "DST008");
}
@Transactional
public void deleteActivityCaseInfo(Integer caseKey) {
aciRepository.bulkModifyingByCaseKeyToStatus(caseKey, "DST008");
}
private String makeReceiptNum(int year){
String receiptNum = "000"+acMapper.selectReceiptNum(year);
return year+"-"+receiptNum.substring(receiptNum.length()-4);
}
private String makeCaseNum(int year, String receiptNum){
Map<String, Object> params = new HashMap<>();
params.put("receiptNum", receiptNum);
params.put("year", year);
String caseNum = "000"+acMapper.selectCaseNum(params);
return year+"-"+caseNum.substring(caseNum.length()-4);
}
public List<ActivityCaseSummary> selectActivityCaseInfoList(Integer receiptKey) {
return acMapper.selectActivityCaseInfoList(receiptKey);
}
@Transactional
public void saveActivityCaseApprv(ActivityCaseApprv apprv) {
ActivityCaseApprv savedApprv = acaRepository.findById(new ActivityCaseApprv.ActivityCaseApprvId(apprv.getCaseKey(), apprv.getUserSeq())).orElse(null);
if(savedApprv!=null){
savedApprv.setInstructions(apprv.getInstructions());
savedApprv.setApprvYn(apprv.getApprvYn());
savedApprv.setApprvDt(LocalDateTime.now());
acaRepository.save(savedApprv);
}
}
public List<ActivityCaseBoard> selectActivityCaseMgt(ActivityCaseBoard activityCase) {
return acMapper.selectActivityCaseMgt(activityCase);
}
public Integer selectActivityCaseMgtCnt(ActivityCaseBoard activityCase) {
return acMapper.selectActivityCaseMgtCnt(activityCase);
}
public ActivityCaseInfo getActivityCaseInfoPrintData(ActivityCaseInfo info, Map<String, List<CodeMgt>> codeMap) {
for(ActivityCaseApprv apprv: info.getApprvList()){
apprv.setOfcCd(Utils.searchCodeValue(apprv.getOfcCd(), codeMap.get(apprv.getOgCd())));
apprv.setOgCd(Utils.searchCodeValue(apprv.getOgCd(), codeMap.get("OG")));
apprv.setTitleCd(Utils.searchCodeValue(apprv.getTitleCd(), codeMap.get("JT")));
apprv.setApprvType(Utils.searchCodeValue(apprv.getApprvType(), codeMap.get("ACAT")));
}
return info;
}
public ActivityCase getActivityCasePrintData(ActivityCase activityCase, Map<String, List<CodeMgt>> codeMap) {
activityCase.setWrtPart(Utils.searchCodeValue(activityCase.getWrtPart(), codeMap.get(activityCase.getWrtOrgan())));
activityCase.setWrtOrgan(Utils.searchCodeValue(activityCase.getWrtOrgan(), codeMap.get("OG")));
activityCase.setWrtUserGrd(Utils.searchCodeValue(activityCase.getWrtUserGrd(), codeMap.get("JT")));
for(ActivityCaseSuspect suspect: activityCase.getSuspectList()){
suspect.setType(Utils.searchCodeValue(suspect.getType(), codeMap.get("ACS")));
suspect.setSex(Utils.searchCodeValue(suspect.getSex(), codeMap.get("SEX")));
}
return activityCase;
}
}

View File

@ -1,41 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.mapper;
import com.dbnt.faisp.main.counterIntelligence.model.CiWorkStatistics;
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceActivity;
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceWork;
import com.dbnt.faisp.main.counterIntelligence.model.ForeignerInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface CounterIntelligenceMapper {
List<CounterIntelligenceWork> selectCounterIntelligenceWorkList(CounterIntelligenceWork ciWork);
Integer selectCounterIntelligenceWorkCnt(CounterIntelligenceWork ciWork);
String selectHashTags(Integer ciwKey);
List<CiWorkStatistics> selectCiWorkStatisticsList(CiWorkStatistics ciWorkStatistics);
List<Integer> selectCiWorkYearList();
List<CounterIntelligenceActivity> selectCiaSafetyDemandList(CounterIntelligenceActivity cia);
Integer selectCiaSafetyDemandListCnt(CounterIntelligenceActivity cia);
List<CounterIntelligenceActivity> selectCiaManageCompanyList(CounterIntelligenceActivity cia);
Integer selectCiaManageCompanyListCnt(CounterIntelligenceActivity cia);
List<ForeignerInfo> selectCiaForeignerList(CounterIntelligenceActivity cia);
Integer selectCiaForeignerListCnt(CounterIntelligenceActivity cia);
List<CounterIntelligenceActivity> selectCiaEduList(CounterIntelligenceActivity cia);
Integer selectCiaEduListCnt(CounterIntelligenceActivity cia);
}

View File

@ -1,24 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
public class CiWorkStatistics {
private String workRating;
private Integer newWorkCnt=0;
private Integer doingWorkCnt=0;
private Integer prevYearWorkEndCnt=0;
private Integer thisYearWorkEndCnt=0;
private Integer year;
private String ogCd;
private List<String> downOrganCdList;
}

View File

@ -1,46 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import com.dbnt.faisp.config.FileInfo;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.io.Serializable;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "cia_file")
@IdClass(CiaFile.CiaFileId.class)
public class CiaFile extends FileInfo {
@Id
@Column(name = "ci_key")
private Integer ciKey;
@Id
@Column(name = "file_seq")
private Integer fileSeq;
@Column(name = "orig_nm")
private String origNm;
@Column(name = "conv_nm")
private String convNm;
@Column(name = "file_extn")
private String fileExtn;
@Column(name = "file_size")
private String fileSize;
@Column(name = "save_path")
private String savePath;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class CiaFileId implements Serializable {
private Integer ciKey;
private Integer fileSeq;
}
}

View File

@ -1,46 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import com.dbnt.faisp.config.FileInfo;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.io.Serializable;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "ciw_file")
@IdClass(CiwFile.CiwFileId.class)
public class CiwFile extends FileInfo {
@Id
@Column(name = "ciw_key")
private Integer ciwKey;
@Id
@Column(name = "file_seq")
private Integer fileSeq;
@Column(name = "orig_nm")
private String origNm;
@Column(name = "conv_nm")
private String convNm;
@Column(name = "file_extn")
private String fileExtn;
@Column(name = "file_size")
private String fileSize;
@Column(name = "save_path")
private String savePath;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class CiwFileId implements Serializable {
private Integer ciwKey;
private Integer fileSeq;
}
}

View File

@ -1,103 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import com.dbnt.faisp.config.BaseModel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "counter_intelligence_activity")
public class CounterIntelligenceActivity extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ci_key")
private Integer ciKey;
@Column(name = "ci_type")
private String ciType;
@Column(name = "content_status")
private String contentStatus;
@Column(name = "wrt_organ")
private String wrtOrgan;
@Column(name = "wrt_part")
private String wrtPart;
@Column(name = "wrt_user_seq")
private Integer wrtUserSeq;
@Column(name = "wrt_user_grd")
private String wrtUserGrd;
@Column(name = "wrt_user_nm")
private String wrtUserNm;
@Column(name = "wrt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime wrtDt;
@Transient
private String localInfo;
@Transient
private String outlookProblem;
@Transient
private Integer fileCnt;
@Transient
private SafetyDemandInfo safetyDemandInfo;
@Transient
private ManageCompanyInfo manageCompanyInfo;
@Transient
private ForeignerInfo foreignerInfo;
@Transient
private EduInfo eduInfo;
@Transient
private String mgtOrgan;
@Transient
private String companyNm;
@Transient
private String companyLocation;
@Transient
private String relatedField;
@Transient
private String description;
@Transient
private String cellPhone;
@Transient
private String department;
@Transient
private String name;
@Transient
private String manager;
@Transient
private String commuLocation;
@Transient
private String commuNational;
@Transient
private String commuAddress;
@Transient
private String selectReason;
@Transient
private String monitoringInfo;
@Transient
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate eduDate;
@Transient
private String eduType;
@Transient
private Integer peopleCnt;
@Transient
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate fixDate;
@Transient
private List<CiaFile> fileList;
@Transient
private List<MultipartFile> multipartFileList;
}

View File

@ -1,78 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import com.dbnt.faisp.config.BaseModel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "counter_intelligence_work")
public class CounterIntelligenceWork extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ciw_key")
private Integer ciwKey;
@Column(name = "status")
private String status;
@Column(name = "work_rating")
private String workRating;
@Column(name = "work_start_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate workStartDate;
@Column(name = "work_plan_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate workPlanDate;
@Column(name = "work_end_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate workEndDate;
@Column(name = "re_rating_date1")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate reRatingDate1;
@Column(name = "re_rating_date2")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate reRatingDate2;
@Column(name = "title")
private String title;
@Column(name = "summary_info")
private String summaryInfo;
@Column(name = "content")
private String content;
@Column(name = "wrt_organ")
private String wrtOrgan;
@Column(name = "wrt_part")
private String wrtPart;
@Column(name = "wrt_user_seq")
private Integer wrtUserSeq;
@Column(name = "wrt_user_grd")
private String wrtUserGrd;
@Column(name = "wrt_user_nm")
private String wrtUserNm;
@Column(name = "wrt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime wrtDt;
@Transient
private String hashTags;
@Transient
private Integer fileCnt;
@Transient
private List<CiwFile> fileList;
@Transient
private List<MultipartFile> multipartFileList;
@Transient
private List<HashTagLinkCiw> tagLinkList;
}

View File

@ -1,39 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import javax.persistence.*;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "edu_info")
public class EduInfo {
@Id
@Column(name = "ci_key")
private Integer ciKey;
@Column(name = "mgt_organ")
private String mgtOrgan;
@Column(name = "edu_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate eduDate;
@Column(name = "edu_type")
private String eduType;
@Column(name = "people_cnt")
private Integer peopleCnt;
@Column(name = "description")
private String description;
}

View File

@ -1,44 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import javax.persistence.*;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "foreigner_info")
public class ForeignerInfo {
@Id
@Column(name = "ci_key")
private Integer ciKey;
@Column(name = "mgt_organ")
private String mgtOrgan;
@Column(name = "manager")
private String manager;
@Column(name = "commu_location")
private String commuLocation;
@Column(name = "commu_national")
private String commuNational;
@Column(name = "commu_address")
private String commuAddress;
@Column(name = "select_reason")
private String selectReason;
@Column(name = "monitoring_info")
private String monitoringInfo;
@Column(name = "fix_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate fixDate;
}

View File

@ -1,36 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.io.Serializable;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "hash_tag_link_ciw")
@IdClass(HashTagLinkCiw.HashTagLinkCiwId.class)
public class HashTagLinkCiw {
@Id
@Column(name = "ciw_key")
private Integer ciwKey;
@Id
@Column(name = "tag_key")
private Integer tagKey;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class HashTagLinkCiwId implements Serializable {
private Integer ciwKey;
private Integer tagKey;
}
}

View File

@ -1,41 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "manage_company_info")
public class ManageCompanyInfo {
@Id
@Column(name = "ci_key")
private Integer ciKey;
@Column(name = "mgt_organ")
private String mgtOrgan;
@Column(name = "company_nm")
private String companyNm;
@Column(name = "company_location")
private String companyLocation;
@Column(name = "related_field")
private String relatedField;
@Column(name = "description")
private String description;
@Column(name = "cell_phone")
private String cellPhone;
@Column(name = "department")
private String department;
@Column(name = "name")
private String name;
}

View File

@ -1,29 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "safety_demand_info")
public class SafetyDemandInfo {
@Id
@Column(name = "ci_key")
private Integer ciKey;
@Column(name = "local_info")
private String localInfo;
@Column(name = "outlook_problem")
private String outlookProblem;
}

View File

@ -1,22 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.repository;
import com.dbnt.faisp.main.counterIntelligence.model.CiaFile;
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceWork;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface CiaFileRepository extends JpaRepository<CiaFile, CiaFile.CiaFileId> {
List<CiaFile> findByCiKey(Integer ciKey);
Optional<CiaFile> findTopByCiKeyOrderByFileSeqDesc(Integer ciKey);
CiaFile findByCiKeyAndFileSeq(Integer ciKey, Integer fileSeq);
}

View File

@ -1,14 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.repository;
import com.dbnt.faisp.main.counterIntelligence.model.CiwFile;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface CiwFileRepository extends JpaRepository<CiwFile, CiwFile.CiwFileId> {
List<CiwFile> findByCiwKey(Integer ciwKey);
Optional<CiwFile> findTopByCiwKeyOrderByFileSeqDesc(Integer ciwKey);
}

View File

@ -1,9 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.repository;
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceActivity;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CounterIntelligenceActivityRepository extends JpaRepository<CounterIntelligenceActivity, Integer> {
}

View File

@ -1,9 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.repository;
import com.dbnt.faisp.main.counterIntelligence.model.CounterIntelligenceWork;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CounterIntelligenceWorkRepository extends JpaRepository<CounterIntelligenceWork, Integer> {
}

View File

@ -1,13 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.repository;
import com.dbnt.faisp.main.counterIntelligence.model.EduInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface EduInfoRepository extends JpaRepository<EduInfo, Integer> {
}

View File

@ -1,13 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.repository;
import com.dbnt.faisp.main.counterIntelligence.model.ForeignerInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface ForeignerInfoRepository extends JpaRepository<ForeignerInfo, Integer> {
}

View File

@ -1,9 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.repository;
import com.dbnt.faisp.main.counterIntelligence.model.HashTagLinkCiw;
import org.springframework.data.jpa.repository.JpaRepository;
public interface HashTagLinkCiwRepository extends JpaRepository<HashTagLinkCiw, HashTagLinkCiw.HashTagLinkCiwId> {
void deleteByCiwKey(Integer ciwKey);
}

View File

@ -1,13 +0,0 @@
package com.dbnt.faisp.main.counterIntelligence.repository;
import com.dbnt.faisp.main.counterIntelligence.model.ManageCompanyInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface ManageCompanyInfoRepository extends JpaRepository<ManageCompanyInfo, Integer> {
}

Some files were not shown because too many files have changed in this diff Show More