urlPrefixedWithTask 설정 추가, 소스 정리

main
mjkhan21 10 months ago
parent 3c1d9f7f05
commit eea5d35102

@ -169,6 +169,12 @@
<artifactId>xit-epost</artifactId>
<version>23.04.01-SNAPSHOT</version>
</dependency>
<!-- postplus 연계 -->
<dependency>
<groupId>cokr.xit.interfaces</groupId>
<artifactId>xit-postplus</artifactId>
<version>23.04.01-SNAPSHOT</version>
</dependency>
<!-- PDF 라이브러리 -->
<dependency>

@ -18,29 +18,20 @@ import org.springframework.stereotype.Component;
@Component
@Order(-10001)
public class ResponseHeaderFilter implements Filter {
public ResponseHeaderFilter() {}
@Override
public void destroy() {}
@Override
public void init(FilterConfig filterConfig) {}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, new HttpServletResponseWrapper((HttpServletResponse) response) {
@Override
public void addCookie(Cookie cookie) {
if(cookie.getValue().isEmpty() && cookie.getMaxAge() == 0) {
cookie.setValue("null");
}
cookie.setHttpOnly(true);
super.addCookie(cookie);
@ -60,21 +51,17 @@ public class ResponseHeaderFilter implements Filter {
@Override
public void setHeader(String name, String value) {
if(name.equalsIgnoreCase("X-Xss-Protection")) {
if(super.containsHeader("Content-Type")) {
if(super.getContentType() != null) {
if(super.getContentType().startsWith("application/json")) {
if(super.getContentType().startsWith("application/json"))
return;
}
}
}
}
super.setHeader(name, value);
return;
}
});
}
}
}

@ -1,6 +1,5 @@
package cokr.xit.base;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.MimeMappings;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
@ -17,4 +16,4 @@ public class ServletCustomizer implements WebServerFactoryCustomizer<TomcatServl
mappings.add("ico", "image/x-icon");
factory.setMimeMappings(mappings);
}
}
}

@ -30,7 +30,7 @@ public class FimsConf extends AbstractComponent {
private List<String> tasks; // 업무코드
private List<String> taskUrlNames; // 업무URL명칭
private List<String> additionalTasks; // 추가업무코드
private boolean urlPrefixedWithTask; //URL에 업무코드 추가 여부
private List<String> sggNet; // 시군구별 내부망 IP대역
private List<String> externalEntNet; // 외부 협력업체PC IP

@ -3,7 +3,6 @@ package cokr.xit.fims.base;
import cokr.xit.base.user.GenericUser;
public class FimsUser extends GenericUser {
private static final long serialVersionUID = 1L;
@Override
@ -29,17 +28,14 @@ public class FimsUser extends GenericUser {
*
*/
private String positionName;
/**
* DN
*/
private String certificateDn;
/**
*
*/
private String cntnSeCd;
/**
*
*/
@ -89,5 +85,4 @@ public class FimsUser extends GenericUser {
public void setUserSeCd(String userSeCd) {
this.userSeCd = userSeCd;
}
}
}

@ -6,7 +6,6 @@ import cokr.xit.foundation.component.QueryRequest;
public class OgdpQuery extends QueryRequest {
private static final long serialVersionUID = 1L;
private String sggCd; // 시군구 코드
private String deptCd; // 부서 코드
private String instCd; // 기관 코드
@ -58,6 +57,4 @@ public class OgdpQuery extends QueryRequest {
this.delYn = delYn;
return self();
}
}
}

@ -9,11 +9,8 @@ import lombok.Setter;
@Setter
@Getter
public class SseEntity {
private long createdAt;
private SseEmitter emitter;
private DataObject progress;
public SseEntity(SseEmitter emitter) {
@ -21,5 +18,4 @@ public class SseEntity {
this.emitter = emitter;
this.progress = new DataObject();
}
}
}

@ -69,8 +69,6 @@ public interface OgdpMapper extends AbstractMapper {
</where>
""";
@Select(SQLUtil.SCRIPT_START+"""
/* 유저 수 조회(ogdpMapper.countUser) */
SELECT COUNT(*)
@ -128,7 +126,6 @@ public interface OgdpMapper extends AbstractMapper {
* @return
*/
default DataObject selectSggStngInfo(OgdpQuery req) {
// 사용 여부 확인
if (req.getUseYn() == null) {
req.setUseYn("Y");
@ -175,10 +172,6 @@ public interface OgdpMapper extends AbstractMapper {
"""+SQLUtil.SCRIPT_END)
DataObject selectSggStng(OgdpQuery req);
@Update(SQLUtil.SCRIPT_START+"""
/* 부서 설정 수정(ogdpMapper.updateDeptStng) */
UPDATE TB_DEPT
@ -213,17 +206,12 @@ public interface OgdpMapper extends AbstractMapper {
+SQLUtil.SCRIPT_END)
int updateDeptStng(Map<String, Object> params);
@Select(SQLUtil.SCRIPT_START
+ " /* 부서 설정 객체 가져오기(ogdpMapper.selectDeptInfo) */ "
+ select
+ SQLUtil.SCRIPT_END)
DataObject selectDeptStngInfo(OgdpQuery req);
@Select(SQLUtil.SCRIPT_START
+ " /* 부서 설정 객체 목록 가져오기(ogdpMapper.selectDeptList) */ "
+ SQLUtil.pagingPrefix
@ -232,6 +220,4 @@ public interface OgdpMapper extends AbstractMapper {
+ SQLUtil.pagingSuffix
+ SQLUtil.SCRIPT_END)
List<DataObject> selectDeptStngList(OgdpQuery query);
}
}

@ -15,7 +15,6 @@ import cokr.xit.foundation.data.DataObject;
@Component("adminBean")
public class AdminBean extends AbstractBean {
@Resource(name = "adminMapper")
private AdminMapper adminMapper;
@ -39,13 +38,13 @@ public class AdminBean extends AbstractBean {
}
public boolean deactivate(Backup backup) {
adminMapper.deleteBackupData(backup);
int result1 = adminMapper.insertBackupData(backup);
int result2 = adminMapper.deleteOriginalData(backup);
return ((result1 != 0) && (result1 == result2));
return result1 != 0
&& result1 == result2;
}
public boolean copySggStng(String taskSeCd, String srcSgg, String trgtSgg) {
@ -57,16 +56,11 @@ public class AdminBean extends AbstractBean {
adminMapper.copyTask(param);
List<String> vltnCds = adminMapper.selectVltnList(param);
if(vltnCds == null || vltnCds.isEmpty()) {
if(isEmpty(vltnCds))
return true;
}
param.put("vltnCds", vltnCds);
int result2 = adminMapper.copyVltn(param);
if(result2 == vltnCds.size()) {
return true;
} else {
return false;
}
return adminMapper.copyVltn(param) == vltnCds.size();
}
}
}

@ -1,6 +1,5 @@
package cokr.xit.fims.base.service.bean;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -22,23 +21,17 @@ import cokr.xit.foundation.UserInfo;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
@Component("ogdpBean")
public class OgdpBean extends AbstractBean {
@Resource(name="sigunguBean")
private SigunguBean sigunguBean;
@Resource(name="departmentBean")
private DepartmentBean departmentBean;
@Resource(name="ogdpMapper")
private OgdpMapper ogdpMapper;
@Resource(name="userMapper")
private UserMapper userMapper;
public Object selectAllOgdpList() {
List<DataObject> ogdpList = new ArrayList<>();
List<DataObject> sggs = sigunguBean.getSigunguList(new SigunguQuery());
@ -54,15 +47,14 @@ public class OgdpBean extends AbstractBean {
ogdpList.add(dept.clone());
}
DataObject sysAdmin = new DataObject();
sysAdmin.put("SGG_CD", "ADMIN");
sysAdmin.put("SGG_NM", "관리자 시군구");
sysAdmin.put("INST_CD", "ADMIN00");
sysAdmin.put("INST_NM", "관리자 기관");
sysAdmin.put("DEPT_CD", "ADMIN00");
sysAdmin.put("DEPT_NM", "관리자 부서");
ogdpList.add(sysAdmin);
ogdpList.add(new DataObject()
.set("SGG_CD", "ADMIN")
.set("SGG_NM", "관리자 시군구")
.set("INST_CD", "ADMIN00")
.set("INST_NM", "관리자 기관")
.set("DEPT_CD", "ADMIN00")
.set("DEPT_NM", "관리자 부서")
);
ogdpOutput(ogdpList);
return ogdpList;
@ -78,37 +70,29 @@ public class OgdpBean extends AbstractBean {
}
List<DataObject> sggs = sigunguBean.getSigunguList(sggQuery);
for(DataObject sgg : sggs) {
DataObject noDept = new DataObject();
noDept.put("SGG_CD", sgg.string("SGG_CD"));
noDept.put("SGG_NM", sgg.string("SGG_NM"));
noDept.put("INST_CD", sgg.string("INST_CD"));
noDept.put("INST_NM", sgg.string("INST_NM"));
noDept.put("DEPT_CD", "EMPTY00");
noDept.put("DEPT_NM", "(부서 없음)");
DataObject noDept = sgg.clone()
.set("DEPT_CD", "EMPTY00")
.set("DEPT_NM", "(부서 없음)");
ogdpList.add(noDept);
List<DataObject> depts = departmentBean.getDepartmentList(new DepartmentQuery().setSggID(sgg.string("SGG_CD")));
for(DataObject dept : depts) {
DataObject ogdp = new DataObject();
ogdp.put("SGG_CD", sgg.string("SGG_CD"));
ogdp.put("SGG_NM", sgg.string("SGG_NM"));
ogdp.put("INST_CD", sgg.string("INST_CD"));
ogdp.put("INST_NM", sgg.string("INST_NM"));
ogdp.put("DEPT_CD", dept.string("DEPT_CD"));
ogdp.put("DEPT_NM", dept.string("DEPT_NM"));
DataObject ogdp = sgg.clone()
.set("DEPT_CD", dept.string("DEPT_CD"))
.set("DEPT_NM", dept.string("DEPT_NM"));
ogdpList.add(ogdp);
}
}
if(!anonymous && currentUser().getInstitute().equals("ADMIN00")) {
DataObject sysAdmin = new DataObject();
sysAdmin.put("SGG_CD", "ADMIN");
sysAdmin.put("SGG_NM", "관리자 시군구");
sysAdmin.put("INST_CD", "ADMIN00");
sysAdmin.put("INST_NM", "관리자 기관");
sysAdmin.put("DEPT_CD", "ADMIN00");
sysAdmin.put("DEPT_NM", "관리자 부서");
ogdpList.add(sysAdmin);
if(!anonymous && "ADMIN00".equals(currentUser().getInstitute())) {
ogdpList.add(new DataObject()
.set("SGG_CD", "ADMIN")
.set("SGG_NM", "관리자 시군구")
.set("INST_CD", "ADMIN00")
.set("INST_NM", "관리자 기관")
.set("DEPT_CD", "ADMIN00")
.set("DEPT_NM", "관리자 부서")
);
}
ogdpOutput(ogdpList);
@ -116,24 +100,21 @@ public class OgdpBean extends AbstractBean {
}
private void ogdpOutput(List<DataObject> list) {
for(DataObject one : list) {
one.put("OGDP_CD", one.string("SGG_CD")+"/"+one.string("INST_CD") + ":" + one.string("DEPT_CD"));
one.put("OGDP_NM", one.string("SGG_NM") + " / " + one.string("INST_NM") + " : " + one.string("DEPT_NM"));
}
list.forEach(one ->
one.set("OGDP_CD", one.get("SGG_CD")+"/"+one.get("INST_CD") + ":" + one.get("DEPT_CD"))
.set("OGDP_NM", one.get("SGG_NM") + " / " + one.get("INST_NM") + " : " + one.get("DEPT_NM"))
);
}
public int countUser(String sggCd) {
return ogdpMapper.countUser(sggCd);
}
/**userInfo ,, .
* @param userInfo
* @return
*/
public void initUserInfo(UserInfo userInfo) {
DataObject ogdpInfo = userMapper.getUserInfo(userInfo.getId());
Map<String, Object> infoMap = userInfo.getInfo();
@ -175,7 +156,6 @@ public class OgdpBean extends AbstractBean {
return ogdpMapper.selectSggStngInfo(req);
}
public List<DataObject> getDeptStngList(OgdpQuery query) {
// 기본 정렬
if (query.getOrderBy() == null) {
@ -185,31 +165,18 @@ public class OgdpBean extends AbstractBean {
query.setOrderBy("D.DEPT_CD DESC");
}
}
return ogdpMapper.selectDeptStngList(query);
}
public DataObject getDeptStngInfo(OgdpQuery query) {
return ogdpMapper.selectDeptStngInfo(query);
}
public boolean updateDeptStng(FimsDepartment dept) {
boolean result = ogdpMapper.updateDeptStng(new DataObject().set("currentUser", currentUser()).set("dept", dept)) == 1;
return result;
return ogdpMapper.updateDeptStng(new DataObject()
.set("currentUser", currentUser())
.set("dept", dept)
) == 1;
}
}
}

@ -2,7 +2,6 @@ package cokr.xit.fims.base.service.bean;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
import javax.annotation.Resource;
@ -52,14 +51,12 @@ public class SseBean extends AbstractBean {
* @return SseBean
*/
public void send(Object msg) {
if(isEmpty(this.cursor)) {
if(isEmpty(this.cursor))
return;
}
SseEntity se = sseMap.get(this.cursor);
if (se == null) {
if (se == null)
return;
}
try {
se.getEmitter().send(msg);
} catch (ClientAbortException ex) {
@ -83,18 +80,15 @@ public class SseBean extends AbstractBean {
* @return
*/
public void end() {
if(isEmpty(this.cursor)) {
if(isEmpty(this.cursor))
return;
}
SseEntity se = sseMap.get(this.cursor);
if (se == null) {
if (se == null)
return;
}
String msg = "FIN";
try {
se.getEmitter().send(msg);
} catch (ClientAbortException ex) {
} catch (Exception e) {
e.printStackTrace();
} finally {
@ -109,26 +103,21 @@ public class SseBean extends AbstractBean {
@Scheduled(cron = "0 0 */1 * * *")
public void clearSseEmitter() {
long now = System.currentTimeMillis() - ONE_HOUR;
Iterator<String> it = sseMap.keys().asIterator();
System.out.println("size: "+sseMap.size());
while (it.hasNext()) {
String key = it.next();
for (String key: sseMap.keySet()) {
System.out.println("key: "+key);
SseEntity se = sseMap.get(key);
if (now > se.getCreatedAt()) {
System.out.println("clear old ssemitter "+key+" : "+format.format(se.getCreatedAt()));
if (se.getEmitter() != null) {
if (se.getEmitter() != null)
se.setEmitter(null);
}
sseMap.remove(key);
}
}
}
public SseBean setProgress(String key, Object value) {
if(isEmpty(this.cursor)) {
if(isEmpty(this.cursor))
return this;
}
SseEntity se = sseMap.get(this.cursor);
se.getProgress().set(key, value);
@ -159,19 +148,12 @@ public class SseBean extends AbstractBean {
public void sendProgress() {
if(isEmpty(this.cursor))
return;
SseEntity se = sseMap.get(this.cursor);
if (se == null) {
if (se == null)
return;
}
try {
se.getEmitter().send(objectMapper.writeValueAsString(se.getProgress()));
} catch (ClientAbortException ex) {
if (se != null && se.getEmitter() != null) {
se.getEmitter().complete();
se.setEmitter(null);
sseMap.remove(this.cursor);
}
} catch (Exception e) {
e.printStackTrace();
if (se != null && se.getEmitter() != null) {
@ -181,7 +163,4 @@ public class SseBean extends AbstractBean {
}
}
}
}
}

@ -7,12 +7,10 @@ import cokr.xit.base.security.access.service.ActionQuery;
@Controller
public class ActionGroupController extends cokr.xit.base.security.access.web.ActionGroupController {
@Override
public ModelAndView main() {
ModelAndView mav = getActionGroupList(new ActionQuery().setFetchAll(true));
ModelAndView mav = getActionGroupList(new ActionQuery());
mav.setViewName("base/actionGroup/actionGroup-main");
return mav.addObject("groupList", toJson(mav.getModel().get("groupList")));
}
}

@ -35,40 +35,30 @@ import cokr.xit.interfaces.smg.service.SmgService;
@Controller
@RequestMapping(name="최고관리자", value="/admin")
public class AdminController extends ApplicationController {
@Resource(name="adminBean")
private AdminBean adminBean;
@Resource(name="codeBean")
private CodeBean codeBean;
@Resource(name="smgService")
private SmgService smgService;
@Resource(name="importService")
private ImportService importService;
@RequestMapping(name="최고관리자 메인",value="/main.do")
public ModelAndView adminMain(HttpServletResponse hres) {
ModelAndView mav = new ModelAndView();
if(!currentUser().getInstitute().equals("ADMIN00")) {
if(!"ADMIN00".equals(currentUser().getInstitute())) {
hres.setStatus(HttpStatus.FORBIDDEN.value());
mav.setViewName("jsonView");
mav.addObject("message","메뉴 접근 권한이 없습니다.");
return new ModelAndView("jsonView")
.addObject("message","메뉴 접근 권한이 없습니다.");
} else {
mav.setViewName("fims/admin-main");
mav.addObject("pageName","adminMain");
return new ModelAndView("fims/admin-main")
.addObject("pageName","adminMain");
}
return mav;
}
@RequestMapping(name="배치 수동 실행",value="/executeBatch.do")
public ModelAndView executeBatch(String batch) {
ModelAndView mav = new ModelAndView();
switch (batch) {
case "smgReceive" : {
smgService.receivePetitions();
@ -89,20 +79,15 @@ public class AdminController extends ApplicationController {
default:
}
mav.setViewName("jsonView");
return mav;
return new ModelAndView("jsonView");
}
@RequestMapping(name="업무통보 수동 실행",value="/executeAlert.do")
public ModelAndView executeAlert(String alertName, String interfaceKey) {
ModelAndView mav = new ModelAndView();
switch (alertName) {
case "smgReceive" : {
if(interfaceKey == null || interfaceKey.equals("")) {
case "smgReceive": {
if(isEmpty(interfaceKey))
throw new RuntimeException("인터페이스키 없음");
}
List<String> interfaceKeys = new ArrayList<String>();
interfaceKeys.add(interfaceKey);
@ -110,33 +95,19 @@ public class AdminController extends ApplicationController {
break;
}
case "smgSend" : {
break;
}
case "epostSend" : {
break;
}
case "epostReceive" : {
break;
}
default:
case "smgSend": break;
case "epostSend": break;
case "epostReceive": break;
default: break;
}
mav.setViewName("jsonView");
return mav;
return new ModelAndView("jsonView");
}
@RequestMapping(name="서버 파일 현황 조회",value="/getFileTree.do")
public ModelAndView getFileTree() throws Exception {
ModelAndView mav = new ModelAndView();
mav.setViewName("jsonView");
ModelAndView mav = new ModelAndView("jsonView");
File files_folder = new File("files");
if(!files_folder.exists()) {
boolean mkdirs = files_folder.mkdirs();
if(!mkdirs) {
@ -145,43 +116,30 @@ public class AdminController extends ApplicationController {
}
}
Node tree = DirectoryStructureToJson.getNode(files_folder);
mav.addObject("tree", tree);
return mav;
return mav.addObject("tree", tree);
}
@RequestMapping(name="최고관리자 서버 폴더 생성", value="/createDirectory.do")
public ModelAndView createDirectory(@RequestParam(value="directories[]") String... directories) throws Exception {
boolean saved = false;
String path = String.join(File.separator, directories);
File newDir = new File(path);
saved = newDir.mkdir();
boolean saved = newDir.mkdir();
ModelAndView mav = new ModelAndView();
mav.setViewName("jsonView");
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
@RequestMapping(name="최고관리자 서버 파일 추가", value="/importFile.do")
public ModelAndView importFile(MultipartFile newFile, @RequestParam(value="directories[]") String... directories) throws Exception {
boolean saved = false;
String path = String.join(File.separator, directories);
path = path + File.separator + newFile.getOriginalFilename();
File file = new File(path);
newFile.transferTo(file);
boolean saved = file.exists();
saved = file.exists();
ModelAndView mav = new ModelAndView();
mav.setViewName("jsonView");
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
@RequestMapping(name="최고관리자 서버 파일 내용 보기", value="/getFileText.do")
@ -208,81 +166,60 @@ public class AdminController extends ApplicationController {
}
ModelAndView mav = new ModelAndView();
mav.setViewName("jsonView");
mav.addObject("fileCn", fileCn);
return mav;
return new ModelAndView("jsonView")
.addObject("fileCn", fileCn);
}
@GetMapping(name="시군구 추가/삭제 메인", value="/sggAddDelInfo.do")
public ModelAndView sggAddDelMain() {
ModelAndView mav = new ModelAndView();
mav.setViewName("fims/admin-sggAddDel-info");
mav.addObject("pageName","adminSggAddDel");
return mav;
return new ModelAndView("fims/admin-sggAddDel-info")
.addObject("pageName","adminSggAddDel");
}
@GetMapping(name="백업 테이블 및 실사용 테이블 자료 조회", value="/sggBackup/list.do")
public ModelAndView getBackupList(String backupTable, String originalTable, String pkName) {
ModelAndView mav = new ModelAndView("jsonView");
List<DataObject> originalDataList = adminBean.getAllList(originalTable, pkName);
List<DataObject> backupDataList = adminBean.getAllList(backupTable, originalTable, pkName);
mav.addObject("originalDataList", originalDataList);
mav.addObject("backupDataList", backupDataList);
return mav;
return new ModelAndView("jsonView")
.addObject("originalDataList", originalDataList)
.addObject("backupDataList", backupDataList);
}
@PostMapping(name="백업 테이블 자료를 사용 테이블로 복사", value="/sggBackup/activate.do")
public ModelAndView add(Backup backup) {
ModelAndView mav = new ModelAndView("jsonView");
boolean saved = adminBean.activate(backup);
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
@PostMapping(name="사용 테이블 자료 삭제 및 백업", value="/sggBackup/deactivate.do")
public ModelAndView del(Backup backup) {
ModelAndView mav = new ModelAndView("jsonView");
boolean saved = adminBean.deactivate(backup);
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
@GetMapping(name="시군구 설정 복사 메인", value="/copySggStngInfo.do")
public ModelAndView copySggStngMain() {
ModelAndView mav = new ModelAndView();
CodeQuery cq = new CodeQuery();
cq.setGroupIDs("FIM054");
List<DataObject> taskSeCdList = codeBean.getCodeList(cq);
mav.addObject("taskSeCdList", taskSeCdList);
List<DataObject> sggList = adminBean.getAllList("TB_SGG", "SGG_NM");
mav.addObject("sggList", sggList);
mav.setViewName("fims/admin-copySggStng-info");
mav.addObject("pageName","admin-copySggStng");
return mav;
return new ModelAndView("fims/admin-copySggStng-info")
.addObject("pageName","admin-copySggStng")
.addObject("taskSeCdList", taskSeCdList)
.addObject("sggList", sggList);
}
@GetMapping(name="시군구 설정 복사", value="/copySggStng.do")
public ModelAndView copy(String taskSeCd, String srcSgg, String trgtSgg) {
ModelAndView mav = new ModelAndView("jsonView");
boolean saved = adminBean.copySggStng(taskSeCd, srcSgg, trgtSgg);
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
}
}

@ -47,20 +47,15 @@ public class CodeController extends cokr.xit.base.code.web.CodeController {
if(userInfo.getInstitute().equals("ADMIN00")) {
mav.addObject("sggHasTask", "Y");
} else {
ogdpBean.initUserInfo(userInfo);
String sggCd = (String)userInfo.getInfo().get("sggCd");
CmmnQuery req = new CmmnQuery();
req.setUseYn("Y");
req.setSggCd(sggCd);
CmmnQuery req = new CmmnQuery()
.setUseYn("Y")
.setSggCd(sggCd);
List<DataObject> result = taskBean.getTasks(req);
if(result != null && !result.isEmpty()) {
mav.addObject("sggHasTask", "Y");
} else {
mav.addObject("sggHasTask", "N");
}
mav.addObject("sggHasTask", !isEmpty(result) ? "Y" : "N");
}
return mav;

@ -51,33 +51,22 @@ import cokr.xit.foundation.data.DataObject;
public class FileController extends cokr.xit.base.file.web.FileController {
@Resource(name = "fileMapper")
private FileMapper fileMapper;
@Resource(name="fileBean")
private FileBean fileBean;
@Override
public ModelAndView getFileList(FileQuery req) {
ModelAndView mav = new ModelAndView("jsonView");
//파일 목록
List<DataObject> fileInfoList = fileService().getFileList(req);
mav = setPagingInfo(mav, fileInfoList, "file");
return mav;
return setPagingInfo(new ModelAndView("jsonView"), fileInfoList, "file");
}
/** .
* @return
* @throws Exception
*/
@GetMapping(name = "메뉴얼 다운로드", value = "/downloadMenual.do")
public ModelAndView downloadMenual() throws Exception {
ModelAndView mav = new ModelAndView("downloadView");
String filePath = ("menual/메뉴얼.pptx");
ClassPathResource cps = new ClassPathResource(filePath);
String menualVersion = "";
@ -105,17 +94,15 @@ public class FileController extends cokr.xit.base.file.web.FileController {
}
};
mav.addObject("download",
new Downloadable()
.setContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation")
.setWriter(writer)
.setFilename("과태료통합관리시스템_메뉴얼"+"("+"v"+menualVersion+")"+".pptx")
return new ModelAndView("downloadView")
.addObject("download",
new Downloadable()
.setContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation")
.setWriter(writer)
.setFilename("과태료통합관리시스템_메뉴얼"+"("+"v"+menualVersion+")"+".pptx")
);
return mav;
}
@GetMapping(name = "SVG 이미지 파일 색상 변경", value = "/modifySvg/**")
public void modifySvg(HttpServletRequest request, HttpServletResponse response) throws URISyntaxException, IOException, ParserConfigurationException, SAXException {
String requestURI = request.getRequestURI().toString();
@ -125,8 +112,7 @@ public class FileController extends cokr.xit.base.file.web.FileController {
filepath = filepath.replaceAll("/", Matcher.quoteReplacement(File.separator));
filepath = "svg" + filepath;
ClassPathResource resource = new ClassPathResource(filepath);
InputStream is = resource.getInputStream();
InputStream is = new ClassPathResource(filepath).getInputStream();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
@ -136,8 +122,7 @@ public class FileController extends cokr.xit.base.file.web.FileController {
try {
String modify = request.getParameter("modify");
if(modify == null || modify.equals("")){
if(isEmpty(modify)){
} else if(modify.equals("active")){
updateTagFillColor(nodeList, "green");
} else if(modify.equals("alert")){
@ -161,21 +146,12 @@ public class FileController extends cokr.xit.base.file.web.FileController {
os.write(bytes);
os.flush();
os.close();
} catch (Exception e){
}
}
public static String DocumentToString( Document doc )
{
try
{
public static String DocumentToString( Document doc ) {
try {
StringWriter clsOutput = new StringWriter( );
Transformer clsTrans = TransformerFactory.newInstance( ).newTransformer( );
@ -187,15 +163,12 @@ public class FileController extends cokr.xit.base.file.web.FileController {
clsTrans.transform( new DOMSource( doc ), new StreamResult( clsOutput ) );
return clsOutput.toString( );
}
catch( Exception ex )
{
} catch( Exception ex ) {
return "";
}
}
private void updateTagFillColor(NodeList nodeList, String newFillColor) {
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
NamedNodeMap namedNodeMap = node.getAttributes();
@ -210,13 +183,8 @@ public class FileController extends cokr.xit.base.file.web.FileController {
}
}
@PostMapping(name = "처리 전 파일업로드", value = "/uploadBeforeProcess.do")
public ModelAndView uploadBeforeProcess(MultipartFile[] uploadFiles) {
ModelAndView mav = new ModelAndView("jsonView");
boolean saved = false;
MultipartFile uploadFile = uploadFiles[0];
String orginalFileName = uploadFile.getOriginalFilename();
String extension = FilenameUtils.getExtension(orginalFileName);
@ -230,17 +198,13 @@ public class FileController extends cokr.xit.base.file.web.FileController {
String filePath = folderPath + "/"+currentTime+"."+extension;
File file = new File(filePath);
try {
uploadFile.transferTo(file);
saved = true;
return new ModelAndView("jsonView")
.addObject("saved", true)
.addObject("filePath", filePath);
} catch (IOException e) {
throw new RuntimeException("파일업로드 오류"+e);
}
mav.addObject("saved", saved);
mav.addObject("filePath", filePath);
return mav;
}
}

@ -32,8 +32,7 @@ public class LoggingController extends cokr.xit.base.syslog.web.LoggingControlle
@Override
public ModelAndView getLogs(LogQuery req) {
if(req.getUserAccounts() != null && req.getUserAccounts().length > 0
if (req.getUserAccounts() != null && req.getUserAccounts().length > 0
&& req.getUserAccounts()[0] != null) {
String[] userAccounts = req.getUserAccounts();
for(int i=0; i < userAccounts.length ; i++) {

@ -30,53 +30,38 @@ import cokr.xit.foundation.web.RequestHandlerReader;
@Controller
public class MainController extends cokr.xit.base.web.MainController {
@Autowired
private TaskRequestMappingHandlerMapping requestHandlers;
@Autowired
private SseBean sseBean;
@Resource(name="ogdpBean")
private OgdpBean ogdpBean;
@Resource(name="userService")
private UserService userService;
@Resource(name="sigunguDepartmentService")
private SigunguDepartmentService sggDeptService;
@Resource(name="codeService")
private CodeService codeService;
@Resource(name="authorityService")
private AuthorityService authorityService;
@Override
public ModelAndView loginPage() {
ModelAndView mav = new ModelAndView("login");
List<DataObject> sggs = sggDeptService.getSigunguList(new SigunguQuery());
if (sggs.isEmpty()) {
if (sggs.isEmpty())
throw new RuntimeException("No sigungu info found.");
}
for(DataObject sgg : sggs) {
int count = ogdpBean.countUser(sgg.string("SGG_CD"));
String userUseYn = count > 0 ? "Y" : "N";
sgg.set("USER_USE_YN", userUseYn);
}
boolean multiple = sggs.size() > 1;
mav.addObject("sggs", toJson(sggs));
mav.addObject("multipleSggs", multiple);
mav.addObject("sggList", sggs);
mav.addObject("sysSggCd", System.getProperty("sgg"));
return mav;
return new ModelAndView("login")
.addObject("sggs", toJson(sggs))
.addObject("multipleSggs", sggs.size() > 1)
.addObject("sggList", sggs)
.addObject("sysSggCd", System.getProperty("sgg"));
}
@Override
@ -92,7 +77,7 @@ public class MainController extends cokr.xit.base.web.MainController {
@SuppressWarnings("unchecked")
private void attachTaskPrefixName(List<DataObject> urlTree) {
List<String> tasks = FimsConf.get().getTasks();
tasks.forEach(task->task = "/"+task);
tasks.forEach(task -> task = "/" + task);
List<String> taskUrlNames = FimsConf.get().getTaskUrlNames();
@ -114,28 +99,24 @@ public class MainController extends cokr.xit.base.web.MainController {
@GetMapping(name="회원가입 페이지", value="/signupPage.do")
public ModelAndView signupPage(String sggCd, String cntnSeCd) {
ModelAndView mav = new ModelAndView("fims/user/user01010-main");
mav.addObject("userInfo", "{}");
ModelAndView mav = new ModelAndView("fims/user/user01010-main")
.addObject("userInfo", "{}");
if(cntnSeCd.equals("01")) {
mav.addObject("cntnSeCd", "01");
mav.addObject("allOgdpList", ogdpBean.selectAllOgdpList());
mav.addObject("cntnSeCd", "01")
.addObject("allOgdpList", ogdpBean.selectAllOgdpList());
List<DataObject> ableOgdpList = ogdpBean.selectAbleOgdpList(true, sggCd);
mav.addObject("ableOgdpList", ableOgdpList);
Map<String, List<CommonCode>> commonCodes = codeService.getCodesOf("CMN008");
mav.addObject("CMN008List", commonCodes.get("CMN008"));
} else if(cntnSeCd.equals("02")) {
List<DataObject> sggs = sggDeptService.getSigunguList(new SigunguQuery().setSggIDs(sggCd));
mav.addObject("cntnSeCd", "02");
mav.addObject("sggCd", sggCd);
mav.addObject("institute", sggs.get(0).string("INST_CD"));
mav.addObject("userSeCd", "21");
mav.addObject("cntnSeCd", "02")
.addObject("sggCd", sggCd)
.addObject("institute", sggs.get(0).string("INST_CD"))
.addObject("userSeCd", "21");
}
return mav;
@ -143,21 +124,19 @@ public class MainController extends cokr.xit.base.web.MainController {
@RequestMapping(name="회원가입", value="/signup.do")
public ModelAndView signup(FimsUser user) {
ModelAndView mav = new ModelAndView("jsonView");
user.setAccount(user.getAccount().toUpperCase());
boolean saved = userService.create(user);
if("21".equals(user.getUserSeCd()))
authorityService.addUsers("ROLE_RENT", user.getId());
mav.addObject("saved",saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved",saved);
}
@RequestMapping(name="중복 확인", value="/duplicate.do")
public ModelAndView isDuplicate(String account, String sggCd) {
account = account.toUpperCase();
FimsUser user = userService.getUser(account, sggCd);
FimsUser user = userService.getUser(account.toUpperCase(), sggCd);
return new ModelAndView("jsonView")
.addObject("duplicate", user != null);
}
@ -165,7 +144,6 @@ public class MainController extends cokr.xit.base.web.MainController {
@RequestMapping(name="접속자 IP 확인", value="/ipInfo.do")
public ModelAndView ipInfo(HttpServletRequest hreq) {
String flag = hreq.getParameter("flag");
boolean flagUsable = false;
String remoteAddr = AppCmmnUtil.getClientIpAddr(hreq);
String net = "";
@ -182,38 +160,31 @@ public class MainController extends cokr.xit.base.web.MainController {
if(remoteAddr.equals(LOCAL[0]) || remoteAddr.equals(LOCAL[1])) {
net = "intra";
flagUsable = true;
} else if(remoteAddr.startsWith(PRIVATES[0])
|| remoteAddr.startsWith(PRIVATES[1])
|| remoteAddr.startsWith(PRIVATES[2])
|| remoteAddr.startsWith(PRIVATES[3])){
net = "intra";
flagUsable = true;
} else if(remoteAddr.startsWith(XIT_NET)) {
net = "intra";
flagUsable = true;
} else if(this.includeIp(remoteAddr,EXTERNAL_ENT_NET)){
net = "intra";
flagUsable = true;
} else if(this.includeIp(remoteAddr,SGG_NET)) {
net = "intra";
flagUsable = true;
}
boolean flagUsable = !isEmpty(net);
if(flag != null && !flag.equals("")){
if(!isEmpty(flag)){
if(flagUsable) {
net = flag;
}
}
if(net.equals("")) {
if(isEmpty(net))
net = "inter";
}
return new ModelAndView("jsonView")
.addObject("remoteAddr", remoteAddr)
.addObject("net", net)
;
.addObject("net", net);
}
private boolean includeIp(String ipAddr, List<String> ipBand){
@ -241,6 +212,4 @@ public class MainController extends cokr.xit.base.web.MainController {
public SseEmitter subscribe(HttpServletRequest req) {
return sseBean.start(req.getParameter("sseKey"));
}
}

@ -57,55 +57,44 @@ public class OgdpController extends ApplicationController {
@Resource(name="sigunguDepartmentService")
private SigunguDepartmentService sggDeptService;
@Resource(name="ogdpBean")
private OgdpBean ogdpBean;
/** 설정 정보 서비스 */
@Resource(name = "stngService")
private StngService stngService;
/** 업무 정보 Bean */
@Resource(name = "taskBean")
private TaskBean taskBean;
/** 위반 정보 Bean */
@Resource(name = "vltnBean")
private VltnBean vltnBean;
/** .
* @return fims/ogdp/ogdp01010-main
*/
@RequestMapping(name="시군구 설정 정보 관리 메인", value=METHOD_URL.sggStngMain)
public ModelAndView sggStngMain(String sggCd) {
ModelAndView mav = new ModelAndView();
UserInfo userInfo = currentUser();
if(userInfo.getInstitute().equals("ADMIN00")) {
if(isEmpty(sggCd)) {
mav.setViewName("fims/ogdp/select-sgg");
mav.addObject("pageName", "selectSgg");
if ("ADMIN00".equals(userInfo.getInstitute())) {
if (isEmpty(sggCd)) {
List<DataObject> sggList = sggDeptService.getSigunguList(new SigunguQuery()) ;
mav.addObject("sggList", sggList);
return new ModelAndView("fims/ogdp/select-sgg")
.addObject("pageName", "selectSgg")
.addObject("sggList", sggList);
} else {
mav.setViewName("fims/ogdp/ogdp01010-main");
mav.addObject("pageName", "ogdp01010");
mav.addObject("sggCd", sggCd);
return new ModelAndView("fims/ogdp/ogdp01010-main")
.addObject("pageName", "ogdp01010")
.addObject("sggCd", sggCd);
}
} else {
mav.setViewName("fims/ogdp/ogdp01010-main");
mav.addObject("pageName", "ogdp01010");
ogdpBean.initUserInfo(userInfo);
mav.addObject("sggCd", userInfo.getInfo().get("sggCd"));
return new ModelAndView("fims/ogdp/ogdp01010-main")
.addObject("pageName", "ogdp01010")
.addObject("sggCd", userInfo.getInfo().get("sggCd"));
}
return mav;
}
/** .<br />
@ -114,10 +103,8 @@ public class OgdpController extends ApplicationController {
*/
@RequestMapping(name="시군구 설정 조회", value=METHOD_URL.getSggStngInfo)
public ModelAndView getSggStngInfo(OgdpQuery req) {
ModelAndView mav = new ModelAndView("jsonView");
DataObject sggInfo = ogdpBean.getSggStngInfo(req);
mav.addObject("sggInfo", sggInfo);
return mav;
return new ModelAndView("jsonView").addObject("sggInfo", sggInfo);
}
/** .<br />
@ -149,29 +136,27 @@ public class OgdpController extends ApplicationController {
*/
@RequestMapping(name="시군구 설정 정보 수정", value=METHOD_URL.updateSggStng)
public ModelAndView updateSggStng(FimsSigungu sgg, MultipartFile symbol, MultipartFile logo, MultipartFile offcs) {
ModelAndView mav = new ModelAndView("jsonView");
String sggCd = sgg.getSggID();
if(symbol != null && !symbol.isEmpty() && symbol.getSize() != 0) {
if (symbol != null && !symbol.isEmpty() && symbol.getSize() != 0) {
Map<String,String> newSymbol = this.uploadForSgg(symbol, sggCd, "symbol");
sgg.setSymbolFilepath(newSymbol.get("filePath"));
sgg.setSymbolFilename(newSymbol.get("fileName"));
}
if(logo != null && !logo.isEmpty() && logo.getSize() != 0) {
if (logo != null && !logo.isEmpty() && logo.getSize() != 0) {
Map<String,String> newLogo = this.uploadForSgg(logo, sggCd, "logo");
sgg.setLogoFilepath(newLogo.get("filePath"));
sgg.setLogoFilename(newLogo.get("fileName"));
}
if(offcs != null && !offcs.isEmpty() && offcs.getSize() != 0) {
if (offcs != null && !offcs.isEmpty() && offcs.getSize() != 0) {
Map<String,String> newOffcs = this.uploadForSgg(offcs, sggCd, "offcs");
sgg.setOfficialSealFilepath(newOffcs.get("filePath"));
sgg.setOfficialSealFilename(newOffcs.get("fileName"));
}
boolean saved = ogdpBean.updateSggStng(sgg);
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
private Map<String, String> uploadForSgg(MultipartFile mf, String sggCd, String fileSe){
@ -181,17 +166,15 @@ public class OgdpController extends ApplicationController {
String ext = FilenameUtils.getExtension(mf.getOriginalFilename());
String fileName = sggCd+"."+ext;
File workDir = new File(workDirPath);
workDir.mkdirs();
ensureDir(workDirPath);
String newFileFullPath = workDirPath + "/" + fileName;
try {
File newFile = new File(newFileFullPath);
if(newFile.exists()) {
if(!newFile.delete()) {
if (newFile.exists()) {
if (!newFile.delete())
throw new RuntimeException("[F]이미지 업로드 중 오류가 발생하였습니다.");
}
}
mf.transferTo(newFile);
@ -213,15 +196,9 @@ public class OgdpController extends ApplicationController {
*/
@RequestMapping(name="업무 설정 정보 수정", value=METHOD_URL.updateTaskStng)
public ModelAndView updateTaskStng(Task task) {
ModelAndView mav = new ModelAndView("jsonView");
boolean saved = false;
String rtnMsg = stngService.updateTaskStng(task, task.getVltnStngList());
if(rtnMsg.contains("[S]")) {
saved = true;
}
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"));
}
/** , .
@ -233,15 +210,9 @@ public class OgdpController extends ApplicationController {
*/
@RequestMapping(name="시군구 과태료 업무 추가", value=METHOD_URL.createTaskStng)
public ModelAndView createTaskStng(String sggCd, String taskSeCd) {
ModelAndView mav = new ModelAndView("jsonView");
boolean saved = false;
String rtnMsg = stngService.createTaskStng(sggCd, taskSeCd);
if(rtnMsg.contains("[S]")) {
saved = true;
}
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved", rtnMsg.contains("[S]"));
}
/** .
@ -249,16 +220,11 @@ public class OgdpController extends ApplicationController {
*/
@RequestMapping(name="부서 설정 정보 관리 메인", value=METHOD_URL.deptStngMain)
public ModelAndView deptStngMain() {
ModelAndView mav = new ModelAndView();
mav.setViewName("fims/ogdp/ogdp02010-main");
mav.addObject("pageName", "ogdp02010");
List<DataObject> allSggList = sggDeptService.getSigunguList(new SigunguQuery());
mav.addObject("sggList", allSggList);
return mav;
return new ModelAndView("fims/ogdp/ogdp02010-main")
.addObject("pageName", "ogdp02010")
.addObject("sggList", allSggList);
}
/** .<br />
@ -268,7 +234,6 @@ public class OgdpController extends ApplicationController {
*/
@RequestMapping(name="부서 설정 목록 조회", value=METHOD_URL.getDeptStngList)
public ModelAndView getDeptStngList(OgdpQuery query) {
setFetchSize(query);
return setPagingInfo(new ModelAndView("jsonView"), ogdpBean.getDeptStngList(query),"");
@ -284,25 +249,14 @@ public class OgdpController extends ApplicationController {
*/
@RequestMapping(name="부서 설정 상세 조회", value=METHOD_URL.getDeptStngInfo)
public ModelAndView getDeptStngInfo(OgdpQuery query) {
DataObject deptInfo = new DataObject();
if(!isEmpty(query.getDeptCd())) {
deptInfo = ogdpBean.getDeptStngInfo(query);
} else {
deptInfo = null;
}
DataObject deptInfo = !isEmpty(query.getDeptCd()) ? ogdpBean.getDeptStngInfo(query) : null;
boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/ogdp/ogdp02020-info");
mav.addObject("pageName", "ogdp02020");
mav.addObject("deptInfo", json ? deptInfo : toJson(deptInfo));
return mav;
return new ModelAndView(json ? "jsonView" : "fims/ogdp/ogdp02020-info")
.addObject("pageName", "ogdp02020")
.addObject("deptInfo", json ? deptInfo : toJson(deptInfo));
}
/** .
* @param dept
* @return jsonView
@ -312,10 +266,8 @@ public class OgdpController extends ApplicationController {
*/
@RequestMapping(name="부서 설정 수정", value=METHOD_URL.updateDeptStng)
public ModelAndView updateDeptStng(FimsDepartment dept) {
ModelAndView mav = new ModelAndView("jsonView");
boolean saved = ogdpBean.updateDeptStng(dept);
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView").addObject("saved", saved);
}
}

@ -26,22 +26,16 @@ import cokr.xit.foundation.data.DataObject;
@Controller
public class UserController extends cokr.xit.base.user.web.UserController<FimsUser> {
@Resource(name="userService")
private UserService userService;
@Resource(name = "codeBean")
private CodeBean codeBean;
@Resource(name="codeService")
private CodeService codeService;
@Resource(name="authorityService")
private AuthorityService authorityService;
@Resource(name="ogdpBean")
private OgdpBean ogdpBean;
@Resource(name = "stngBean")
private StngBean stngBean;
@ -49,25 +43,17 @@ public class UserController extends cokr.xit.base.user.web.UserController<FimsUs
public ModelAndView main() {
ModelAndView mav = super.main();
Map<String, List<CommonCode>> commonCodes = codeService.getCodesOf("CMN009");
mav.addObject("CMN009List", commonCodes.get("CMN009"));
return mav;
return mav.addObject("CMN009List", commonCodes.get("CMN009"));
}
@Override
public ModelAndView getInfo(String userID) {
ModelAndView mav = new ModelAndView();
boolean json = !isEmpty(userID) && jsonResponse();
String viewName = json ? "jsonView" : "base/user/user-info";
ModelAndView mav = new ModelAndView(json ? "jsonView" : "base/user/user-info");
if (!isEmpty(userID)) {
DataObject userInfo = userService.getUserInfo(userID);
mav.setViewName(viewName);
mav.addObject("userInfo", json ? userInfo : toJson(userInfo));
} else {
mav.setViewName("base/user/user-info");
}
mav.addObject("allOgdpList", ogdpBean.selectAllOgdpList());
@ -89,8 +75,7 @@ public class UserController extends cokr.xit.base.user.web.UserController<FimsUs
@Override
public ModelAndView isDuplicate(String account, String institute) {
account = account.toUpperCase();
return super.isDuplicate(account, institute);
return super.isDuplicate(account.toUpperCase(), institute);
}
@Override
@ -103,10 +88,7 @@ public class UserController extends cokr.xit.base.user.web.UserController<FimsUs
@RequestMapping(name="내 정보 조회",value="/myInfo.do")
public ModelAndView myInfo() {
ModelAndView mav = new ModelAndView("jsonView");
SecuredUserInfo userInfo = currentUser();
//시군구,기관,부서
ogdpBean.initUserInfo(userInfo);
@ -118,15 +100,18 @@ public class UserController extends cokr.xit.base.user.web.UserController<FimsUs
boolean isPublicOfficer = fimsUser.getCntnSeCd().equals("01");
userInfo.getInfo().put("isPublicOfficer", isPublicOfficer);
List<String> user_auths = userInfo.getAuthorities().stream().map(Authority::getAuthority).toList();
List<String> user_taskList = codeBean.getCodeList(new CodeQuery().setGroupIDs("FIM054"))
.stream().map(row -> row.string("CODE")).toList()
.stream().filter(task -> {
List<String> user_auths = userInfo.getAuthorities().stream()
.map(Authority::getAuthority)
.toList();
List<String> user_taskList = codeBean.getCodeList(new CodeQuery().setGroupIDs("FIM054")).stream()
.map(row -> row.string("CODE"))
.filter(task -> {
for (String auth: user_auths)
if (auth.contains(task))
return true;
return false;
}).toList();
})
.toList();
boolean hasTaskAuth = !user_taskList.isEmpty();
if(userInfo.hasAuthorities("ROLE_TASK_ADMIN")) {
hasTaskAuth = true;
@ -142,45 +127,36 @@ public class UserController extends cokr.xit.base.user.web.UserController<FimsUs
userInfo.getInfo().put("sggLogoPath", sggStng.string("LOGO_FILE_PATH"));
userInfo.getInfo().put("sggSymbolPath", sggStng.string("SYMBOL_FILE_PATH"));
mav.addObject("myInfo", userInfo);
return mav;
return new ModelAndView("jsonView").addObject("myInfo", userInfo);
}
@RequestMapping(name="시스템 연계 정보",value="/sysLinkInfo.do")
public ModelAndView sysLinkInfo() {
ModelAndView mav = new ModelAndView("jsonView");
DataObject deptStng = stngBean.getStng("dept");
if(deptStng == null) {
deptStng = new DataObject();
}
DataObject sysLinkInfo = new DataObject();
sysLinkInfo.put("NXRP_LINK_YN", deptStng.string("NXRP_LINK_YN"));
sysLinkInfo.put("CVLCPT_LINK_SE_CD", deptStng.string("CVLCPT_LINK_SE_CD"));
DataObject deptStng = ifEmpty(stngBean.getStng("dept"), DataObject::new);
DataObject sysLinkInfo = new DataObject()
.set("NXRP_LINK_YN", deptStng.get("NXRP_LINK_YN"))
.set("CVLCPT_LINK_SE_CD", deptStng.get("CVLCPT_LINK_SE_CD"));
mav.addObject("sysLinkInfo", sysLinkInfo);
return mav;
return new ModelAndView("jsonView")
.addObject("sysLinkInfo", sysLinkInfo);
}
@RequestMapping(name="내 정보 변경 화면", value="/openMyInfo.do")
public ModelAndView openMyInfo() {
ModelAndView mav = new ModelAndView("fims/user/user01010-main");
DataObject userInfo = userService.getUserInfo(currentUser().getId());
mav.addObject("userInfo", toJson(userInfo));
ModelAndView mav = new ModelAndView("fims/user/user01010-main")
.addObject("userInfo", toJson(userInfo));
String cntnSeCd = userInfo.string("CNTN_SE_CD");
if(cntnSeCd.equals("01")) {
mav.addObject("cntnSeCd", "01");
mav.addObject("allOgdpList", ogdpBean.selectAllOgdpList());
if("01".equals(cntnSeCd)) {
List<DataObject> ableOgdpList = ogdpBean.selectAbleOgdpList(false, currentUser().getOrgID());
mav.addObject("ableOgdpList", ableOgdpList);
Map<String, List<CommonCode>> commonCodes = codeService.getCodesOf("CMN008");
mav.addObject("CMN008List", commonCodes.get("CMN008"));
mav.addObject("cntnSeCd", "01")
.addObject("allOgdpList", ogdpBean.selectAllOgdpList())
.addObject("ableOgdpList", ableOgdpList)
.addObject("CMN008List", commonCodes.get("CMN008"));
} else if(cntnSeCd.equals("02")) {
mav.addObject("cntnSeCd", "02");
}
@ -195,50 +171,40 @@ public class UserController extends cokr.xit.base.user.web.UserController<FimsUs
@RequestMapping(name="기본업무 저장",value="/saveDefaultTask.do")
public ModelAndView saveDefaultTask(String taskSeCd) {
ModelAndView mav = new ModelAndView("jsonView");
boolean saved = false;
saved = stngBean.saveDefaultTask(taskSeCd);
boolean saved = stngBean.saveDefaultTask(taskSeCd);
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
@RequestMapping(name="설정정보 조회",value="/stngInfo.do")
public ModelAndView getStngInfo(String type) {
ModelAndView mav = new ModelAndView("jsonView");
DataObject stngInfo = stngBean.getStng(type);
mav.addObject("stngInfo",stngInfo);
return mav;
return new ModelAndView("jsonView")
.addObject("stngInfo",stngInfo);
}
@RequestMapping(name="교부 계좌번호 수정",value="/updateDtbnActno.do")
public ModelAndView updateDtbnActno(String dtbnBankNm, String dtbnActno) {
ModelAndView mav = new ModelAndView("jsonView");
boolean saved = stngBean.updateDtbnActno(dtbnBankNm, dtbnActno);
mav.addObject("saved", saved);
return mav;
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
@RequestMapping(name="사용자 검색",value="/user02/010/main.do")
public ModelAndView findUserMain(HttpServletRequest hReq, String callbackFuncName) {
ModelAndView mav = new ModelAndView("fims/user/user02010-main");
// 사용자 정보
FimsUser currentUser = (FimsUser)currentUser().getUser();
return mav
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("pageName", "user02010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "user") // prefix
.addObject("infoPrefixUrl", "/user/user02") // prefixUrl
.addObject("callbackFuncName", callbackFuncName) // 콜백함수(callbackFuncName)
.addObject("sggCd", currentUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("deptCd", currentUser.getDeptCode()) // 부서 코드(DEPT_CD)
.addObject("userAcnt", currentUser.getAccount()) // 사용자 계정(USER_ACNT)
return new ModelAndView("fims/user/user02010-main")
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("pageName", "user02010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("infoPrefix", "user") // prefix
.addObject("infoPrefixUrl", "/user/user02") // prefixUrl
.addObject("callbackFuncName", callbackFuncName) // 콜백함수(callbackFuncName)
.addObject("sggCd", currentUser.getOrgID()) // 시군구 코드(SGG_CD)
.addObject("deptCd", currentUser.getDeptCode()) // 부서 코드(DEPT_CD)
.addObject("userAcnt", currentUser.getAccount()) // 사용자 계정(USER_ACNT)
;
}
@ -249,4 +215,4 @@ public class UserController extends cokr.xit.base.user.web.UserController<FimsUs
.addObject("affected", affected)
.addObject("saved", affected > 0);
}
}
}

@ -52,5 +52,4 @@ public interface CrdnPayerAddrHstryMapper extends AbstractMapper {
* @return
*/
int updateCrdnPayerAddr(CrdnPayerAddrHstry crdnPayerAddrHstry);
}

@ -4,10 +4,10 @@ import java.util.List;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.CrdnSttsHstryQuery;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;
/** DAO
*
@ -96,5 +96,4 @@ public interface CrdnSttsHstryMapper extends AbstractMapper {
* @return
*/
int updateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry);
}
}

@ -12,7 +12,6 @@ import cokr.xit.foundation.data.DataObject;
@Mapper("extrStngMapper")
public interface ExtrStngMapper extends AbstractMapper {
/** 릿 .<br />
* @param query
* @return 릿
@ -34,6 +33,4 @@ public interface ExtrStngMapper extends AbstractMapper {
int deleteArtclStng(ExtrForm extrForm);
int insertArtclStng(ExtrArtclStng insert);
}
}

@ -7,7 +7,6 @@ import cokr.xit.foundation.data.DataObject;
@Mapper("linkMapper")
public interface LinkMapper extends AbstractMapper {
/** .
* @param params
* @return
@ -19,5 +18,4 @@ public interface LinkMapper extends AbstractMapper {
* @return
*/
int insertElectronicNoticeSndngDetail(DataObject params);
}
}

@ -34,7 +34,4 @@ public interface OtptStngMapper extends AbstractMapper {
int deleteArtclStng(OtptForm otptForm);
int insertArtclStng(OtptArtclStng insert);
}
}

@ -12,7 +12,6 @@ import cokr.xit.foundation.data.DataObject;
@Mapper("outsourcingStngMapper")
public interface OutsourcingStngMapper extends AbstractMapper {
/** .<br />
* @param query
* @return
@ -24,5 +23,4 @@ public interface OutsourcingStngMapper extends AbstractMapper {
int deleteArtclStng(OutsourcingForm outsourcingForm);
int insertArtclStng(OutsourcingArtclStng insert);
}
}

@ -9,7 +9,6 @@ import cokr.xit.foundation.data.DataObject;
@Mapper("stngMapper")
public interface StngMapper extends AbstractMapper {
/** .
* @param userId ID
* @return
@ -51,5 +50,4 @@ public interface StngMapper extends AbstractMapper {
* @return
*/
int updateDefaultTask(Map<String, String> params);
}
}

@ -6,10 +6,10 @@ import lombok.Setter;
@Getter
@Setter
public class RemoteSystemInfo {
String ip;
String port;
String id;
String pw;
String osType;
String workPath;
private String ip;
private String port;
private String id;
private String pw;
private String osType;
private String workPath;
}

@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
@ -40,18 +39,18 @@ public class StngBean extends AbstractBean {
* @return
*/
public DataObject getStng(String type) {
if(type.equals("user")) {
if (type.equals("user")) {
return stngMapper.selectUserStng(currentUser().getId());
} else if(type.equals("dept")){
} else if (type.equals("dept")){
UserInfo userInfo = currentUser();
if(userInfo.getInstitute().equals("ADMIN00")) {
if (userInfo.getInstitute().equals("ADMIN00")) {
return new DataObject();
}
ogdpBean.initUserInfo(userInfo);
return stngMapper.selectDeptStng((String)userInfo.getInfo().get("deptCd"));
} else if(type.equals("sgg")){
} else if (type.equals("sgg")){
UserInfo userInfo = currentUser();
if(userInfo.getInstitute().equals("ADMIN00")) {
if (userInfo.getInstitute().equals("ADMIN00")) {
return new DataObject();
}
ogdpBean.initUserInfo(userInfo);
@ -59,7 +58,6 @@ public class StngBean extends AbstractBean {
} else {
return null;
}
}
/** .
@ -85,58 +83,48 @@ public class StngBean extends AbstractBean {
public void initUserInfo(SecuredUserInfo userInfo) {
boolean isAdmin = userInfo.isAdmin();
//모든 업무
List<String> taskList = codeBean.getCodeList((new CodeQuery()).setGroupIDs("FIM054")).stream()
.map(item -> item.string("CODE"))
.toList();
//서버에서 사용가능한 업무
List<String> taskListForServer = FimsConf.get().getTasks();
//사용자별 사용가능한 업무
List<String> availableTaskList = new ArrayList<String>();
if(userInfo.getInstitute().equals("ADMIN00")) { //1.최고관리자
List<String>
taskList = codeBean.getCodeList((new CodeQuery()).setGroupIDs("FIM054")).stream() //모든 업무
.map(item -> item.string("CODE"))
.toList(),
taskListForServer = FimsConf.get().getTasks(), //서버에서 사용가능한 업무
availableTaskList = new ArrayList<String>(); //사용자별 사용가능한 업무
if ("ADMIN00".equals(userInfo.getInstitute())) { //1.최고관리자
availableTaskList = taskList;
} else {
Map<String, Object> info = userInfo.getInfo();
if(info == null || info.get("sggCd") == null || info.get("sggCd").equals("")) {
if (info == null || isEmpty(info.get("sggCd"))) {
ogdpBean.initUserInfo(userInfo);
}
//사용자의 시군구에서 사용가능한 업무
List<String> taskListForSgg = taskBean.getTasks((new CmmnQuery()).setSggCd((String)userInfo.getInfo().get("sggCd")).setUseYn("Y"))
.stream().map(item -> item.string("TASK_SE_CD")).toList();
.stream()
.map(item -> item.string("TASK_SE_CD")).toList();
if(isAdmin) { //2.시스템관리자
for(String forSgg : taskListForSgg) {
availableTaskList.add(forSgg);
}
for(String forServer : taskListForServer) {
availableTaskList.add(forServer);
}
if (isAdmin) { //2.시스템관리자
availableTaskList.addAll(taskListForSgg);
availableTaskList.addAll(taskListForServer);
} else {
List<String> forServerAndSgg = new ArrayList<String>();
for(String forServer : taskListForServer) {
for(String forSgg : taskListForSgg) {
if(forServer.equals(forSgg)) {
if (forServer.equals(forSgg)) {
forServerAndSgg.add(forSgg);
}
}
}
if(userInfo.hasAuthorities("ROLE_TASK_ADMIN")) { //3.업무관리자
if (userInfo.hasAuthorities("ROLE_TASK_ADMIN")) { //3.업무관리자
availableTaskList = forServerAndSgg;
} else { //4.업무사용자,일반사용자
List<Authority> authorities = userInfo.getAuthorities();
if(authorities != null && !authorities.isEmpty()) {
if (!isEmpty(authorities)) {
for(String task : forServerAndSgg) {
for(Authority authority : authorities) {
String authId = authority.getId();
if(authId.contains(task)) {
if (authId.contains(task)) {
availableTaskList.add(task);
}
}
@ -146,30 +134,18 @@ public class StngBean extends AbstractBean {
}
}
//사용가능한 업무 목록 중복 제거
availableTaskList = availableTaskList.stream().distinct().collect(Collectors.toList());
//계정별 사용가능 업무
userInfo.getInfo().put("taskForUser", availableTaskList);
availableTaskList = availableTaskList.stream().distinct().toList(); //사용가능한 업무 목록 중복 제거
userInfo.getInfo().put("taskForUser", availableTaskList); //계정별 사용가능 업무
//계정별 기본업무
if(availableTaskList.size() == 1) {
if (availableTaskList.size() == 1) {
userInfo.getInfo().put("defaultTask", availableTaskList.get(0));
return;
}
DataObject defaultTaskInfo = stngMapper.selectDefaultTask(userInfo.getId());
if(defaultTaskInfo == null || defaultTaskInfo.string("TASK_SE_CD").equals("")) {
userInfo.getInfo().put("defaultTask", "");
} else {
String defaultTask = defaultTaskInfo.string("TASK_SE_CD");
if(!availableTaskList.contains(defaultTask)) {
userInfo.getInfo().put("defaultTask", "");
} else {
userInfo.getInfo().put("defaultTask", defaultTask);
}
}
String defaultTask = defaultTaskInfo == null ? "" : blankIfEmpty(defaultTaskInfo.string("TASK_SE_CD"));
userInfo.getInfo().put("defaultTask", !availableTaskList.contains(defaultTask) ? "" : defaultTask);
}
/** .
@ -181,22 +157,22 @@ public class StngBean extends AbstractBean {
*/
public boolean saveDefaultTask(String taskSeCd) {
DataObject info = stngMapper.selectDefaultTask(currentUser().getId());
int effected = 0;
Map<String, String> params = new HashMap<String,String>();
params.put("userId", currentUser().getId());
params.put("taskSeCd", taskSeCd);
if(info == null) {
int affected = 0;
if (info == null) {
params.put("rgtr", currentUser().getId());
effected = stngMapper.insertDefaultTask(params);
affected = stngMapper.insertDefaultTask(params);
} else {
params.put("mdfr", currentUser().getId());
params.put("taskMtchgId",info.string("TASK_MTCHG_ID"));
effected = stngMapper.updateDefaultTask(params);
affected = stngMapper.updateDefaultTask(params);
}
return effected == 1;
return affected == 1;
}
/** .
@ -204,23 +180,21 @@ public class StngBean extends AbstractBean {
* @return
*/
public List<CommonCode> filterTaskSectionCodeForSgg(List<CommonCode> taskSectionCodes) {
List<CommonCode> taskListForSgg = new ArrayList<CommonCode>();
if(currentUser().getInstitute().equals("ADMIN00")) {
taskListForSgg = taskSectionCodes;
if ("ADMIN00".equals(currentUser().getInstitute())) {
return taskSectionCodes;
} else {
SecuredUserInfo userInfo = currentUser();
Map<String, Object> info = userInfo.getInfo();
if(info == null || info.get("sggCd") == null || info.get("sggCd").equals("")) {
if (info == null || isEmpty(info.get("sggCd")))
ogdpBean.initUserInfo(userInfo);
}
List<String> taskSeCdListForSgg = taskBean.getTasks((new CmmnQuery()).setSggCd((String)userInfo.getInfo().get("sggCd")).setUseYn("Y"))
.stream().map(item -> item.string("TASK_SE_CD")).toList();
List<String> taskSeCdListForSgg = taskBean.getTasks((new CmmnQuery()).setSggCd((String)userInfo.getInfo().get("sggCd")).setUseYn("Y")).stream()
.map(item -> item.string("TASK_SE_CD"))
.toList();
taskListForSgg = taskSectionCodes.stream()
.filter(item -> taskSeCdListForSgg.contains(item.getCode())).toList();
return taskSectionCodes.stream()
.filter(item -> taskSeCdListForSgg.contains(item.getCode()))
.toList();
}
return taskListForSgg;
}
}

@ -10,11 +10,10 @@ import cokr.xit.foundation.data.DataObject;
*/
@Mapper("crdnInfoMapper")
public interface CrdnInfoMapper extends AbstractMapper {
/** .
* @param crdnId
* @return
*/
DataObject selectCrdnInfo(String crdnId);
}
}

@ -10,7 +10,6 @@ import cokr.xit.foundation.component.AbstractMapper;
*/
@Mapper("crdnInstMapper")
public interface CrdnInstMapper extends AbstractMapper {
/** .
* @param params
* <ul><li>"crdn" - </li>
@ -28,5 +27,4 @@ public interface CrdnInstMapper extends AbstractMapper {
* @return
*/
int insertCrdnAddition(Crdn crdn);
}
}

@ -13,7 +13,6 @@ import cokr.xit.foundation.data.DataObject;
*/
@Mapper("crdnListMapper")
public interface CrdnListMapper extends AbstractMapper {
/** .<br />
* {@link cokr.xit.fims.crdn.service.bean.CrdnService#getCrackdownList(CrdnQuery)}
* @param query
@ -61,5 +60,4 @@ public interface CrdnListMapper extends AbstractMapper {
* @return
*/
int countCrdn(CrdnQuery crdnQuery);
}
}

@ -11,7 +11,6 @@ import cokr.xit.foundation.data.DataObject;
@Mapper("crdnTeamMapper")
public interface CrdnTeamMapper extends AbstractMapper {
/** .<br />
* @param query
* @return
@ -53,5 +52,4 @@ public interface CrdnTeamMapper extends AbstractMapper {
* @return
*/
DataObject selectTeamInfo(String teamId);
}
}

@ -84,5 +84,4 @@ public interface CrdnUpdtMapper extends AbstractMapper {
* @return
*/
int updateAdvntceYmd(Crdn crdn);
}
}

@ -11,7 +11,6 @@ import cokr.xit.foundation.data.DataObject;
@Mapper("exmptnVhclMapper")
public interface ExmptnVhclMapper extends AbstractMapper {
/** .<br />
* @param query
* @return
@ -53,5 +52,4 @@ public interface ExmptnVhclMapper extends AbstractMapper {
* @return
*/
List<DataObject> selectExemptionVehicleHistoryList(String exmptnVhclId);
}
}

@ -22,11 +22,7 @@ public class AttachedTxtParser extends LayoutParser{
@Override
public void analyzeFileContent(DataObject dataObject, File file) {
try {
JSONParser jsonParser = new JSONParser(-1);
JSONArray jsonArray = (JSONArray)jsonParser.parse(descriptor.getContentItems());
JSONArray jsonArray = (JSONArray)new JSONParser(-1).parse(descriptor.getContentItems());
boolean isMetaData = dataObject.string("FILE_EXTENSION").toUpperCase().equals("TXT");
if (isMetaData) {
@ -44,10 +40,8 @@ public class AttachedTxtParser extends LayoutParser{
part = content;
}
for(int i = 0; i < jsonArray.size(); i++) {
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
String key = jsonObject.keySet().iterator().next();
if (Arrays.asList(descriptor.getSecondSeperatorStarterItems().split(",",-1)).contains(key)) {
@ -71,14 +65,14 @@ public class AttachedTxtParser extends LayoutParser{
}
br.close();
} else {
for(int i = 0; i < jsonArray.size(); i++) {
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
String key = jsonObject.keySet().iterator().next();
dataObject.put(key, "");
}
}
} catch (Exception e) {
throw new RuntimeException(e);
throw runtimeException(e);
}
}
}

@ -12,7 +12,6 @@ import cokr.xit.foundation.data.DataObject;
@Mapper("crdnEqpmntMapper")
public interface CrdnEqpmntMapper extends AbstractMapper {
/** .
* @param query
* @return
@ -66,5 +65,4 @@ public interface CrdnEqpmntMapper extends AbstractMapper {
* @return ftp
*/
DataObject selectRemoteInfo(String fileLayoutId);
}
}

@ -15,7 +15,6 @@ import cokr.xit.foundation.data.DataObject;
@Component("crdnEqpmntBean")
public class CrdnEqpmntBean extends AbstractBean {
@Resource(name = "crdnEqpmntMapper")
private CrdnEqpmntMapper crdnEqpmntMapper;
@ -44,17 +43,16 @@ public class CrdnEqpmntBean extends AbstractBean {
* </ul>
*/
public boolean createLinkFileLayoutMetadata(LayoutDescriptor layoutDescriptor, RemoteSystemInfo remoteSystemInfo) {
DataObject params = new DataObject();
params.set("currentUser", currentUser());
params.set("layoutDescriptor", layoutDescriptor);
params.set("remoteSystemInfo", remoteSystemInfo);
int effected = 0;
effected += crdnEqpmntMapper.insertCrdnFileLayout(params);
effected += crdnEqpmntMapper.insertFtpInfo(params);
if(effected != 2) {
DataObject params = new DataObject()
.set("currentUser", currentUser())
.set("layoutDescriptor", layoutDescriptor)
.set("remoteSystemInfo", remoteSystemInfo);
int affected = crdnEqpmntMapper.insertCrdnFileLayout(params)
+ crdnEqpmntMapper.insertFtpInfo(params);
if(affected != 2)
throw new RuntimeException("[F]레이아웃 등록 중 오류가 발생하였습니다.");
}
return true;
}
@ -66,24 +64,21 @@ public class CrdnEqpmntBean extends AbstractBean {
* </ul>
*/
public boolean updateLinkFileLayoutMetadata(LayoutDescriptor layoutDescriptor, RemoteSystemInfo remoteSystemInfo) {
DataObject params = new DataObject();
params.set("currentUser", currentUser());
params.set("layoutDescriptor", layoutDescriptor);
params.set("remoteSystemInfo", remoteSystemInfo);
DataObject params = new DataObject()
.set("currentUser", currentUser())
.set("layoutDescriptor", layoutDescriptor)
.set("remoteSystemInfo", remoteSystemInfo);
int effected = 0;
effected += crdnEqpmntMapper.updateCrdnFileLayout(params);
int affected = crdnEqpmntMapper.updateCrdnFileLayout(params);
DataObject remoteInfo = crdnEqpmntMapper.selectRemoteInfo(layoutDescriptor.getFileLayoutId());
if(remoteInfo == null) {
effected += crdnEqpmntMapper.insertFtpInfo(params);
} else {
effected += crdnEqpmntMapper.updateFtpInfo(params);
}
affected += remoteInfo == null ?
crdnEqpmntMapper.insertFtpInfo(params) :
crdnEqpmntMapper.updateFtpInfo(params);
if(effected != 2) {
if(affected != 2)
throw new RuntimeException("[F]레이아웃 수정 중 오류가 발생하였습니다.");
}
return true;
}
@ -95,14 +90,10 @@ public class CrdnEqpmntBean extends AbstractBean {
* </ul>
*/
public boolean removeLinkFileLayoutMetadata(String fileLayoutId) {
DataObject params = new DataObject();
params.set("currentUser", currentUser());
params.set("fileLayoutId", fileLayoutId);
int effected = crdnEqpmntMapper.deleteCrdnFileLayout(params);
if(effected != 1) {
return false;
}
return true;
DataObject params = new DataObject()
.set("currentUser", currentUser())
.set("fileLayoutId", fileLayoutId);
return crdnEqpmntMapper.deleteCrdnFileLayout(params) == 1;
}
/** .
@ -117,7 +108,6 @@ public class CrdnEqpmntBean extends AbstractBean {
CrdnQuery query = new CrdnQuery();
query.setFileLayoutId(fileLayoutId);
List<LayoutDescriptor> list = crdnEqpmntMapper.selectLinkFileLayoutMetadata(query);
return list == null ? null : list.get(0);
return isEmpty(list) ? null : list.get(0);
}
}
}

@ -73,8 +73,7 @@ public class Crdn01Controller extends ApplicationController {
@Task
@RequestMapping(name="장비단속파일 레이아웃 목록 조회", value=METHOD_URL.getLinkFileLayoutMetadataList)
public ModelAndView getLinkFileLayoutMetadataList(CrdnQuery query) {
setFetchSize(query);
query.setSggCd(currentUser().getOrgID());
setFetchSize(query.setSggCd(currentUser().getOrgID()));
List<DataObject> list = crdnStngService.getLinkFileLayoutMetadataList(query);
return setPagingInfo(new ModelAndView("jsonView"), list,"");
@ -87,15 +86,14 @@ public class Crdn01Controller extends ApplicationController {
@Task
@RequestMapping(name="장비단속파일 레이아웃 상세정보 조회", value=METHOD_URL.getLinkFileLayoutMetadataInfo)
public ModelAndView getLinkFileLayoutMetadataInfo(HttpServletRequest hReq, String fileLayoutId) {
String urlTaskSeCd = hReq.getServletPath().split("/")[1];
DataObject info = !isEmpty(fileLayoutId) ? crdnStngService.getLinkFileLayoutMetadataInfo(fileLayoutId) : null;
boolean json = jsonResponse();
boolean json = jsonResponse();
return new ModelAndView(json ? "jsonView" : "fims/crdn/crdn01020-info")
.addObject("pageName", "crdn01020")
.addObject("sggCd", currentUser().getOrgID())
.addObject("layoutInfo", json ? info : toJson(info))
.addObject("taskSeCd", urlTaskSeCd);
.addObject("taskSeCd", hReq.getParameter("taskSeCd"));
}
/** .<br />

@ -126,10 +126,10 @@ public class Crdn05Controller extends ApplicationController {
@Task
@RequestMapping(name="당일 입력 단속자료 목록 조회", value=METHOD_URL.getTodayCrdnDataList)
public ModelAndView getTodayCrdnDataList(CrdnQuery query) {
FimsUser currentUser = (FimsUser) currentUser().getUser();
UserInfo currentUser = currentUser();
setFetchSize(query)
.setGridType("todayInsert")
.setCurrentUserId(currentUser().getId())
.setCurrentUserId(currentUser.getId())
.setSggCd(currentUser.getOrgID());
return setPagingInfo(new ModelAndView("jsonView"), crdnService.getCrackdownList(query), "");
@ -143,11 +143,10 @@ public class Crdn05Controller extends ApplicationController {
@RequestMapping(name="단속자료 파일 등록 화면", value=METHOD_URL.getFileRegistrationScreen)
public ModelAndView getFileRegistrationScreen(HttpServletRequest hReq) {
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM054");
String urlTaskSeCd = hReq.getServletPath().split("/")[1];
return new ModelAndView("fims/crdn/crdn05020-info")
.addObject("pageName", "crdn05020")
.addObject("taskSeCd", urlTaskSeCd)
.addObject("taskSeCd", hReq.getParameter("taskSeCd"))
.addObject("FIM054List", commonCodes.get("FIM054"))
.addObject("TaskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")));
}
@ -159,15 +158,9 @@ public class Crdn05Controller extends ApplicationController {
@Task
@RequestMapping(name="단속연계파일 가져오기(FTP)", value=METHOD_URL.importFileFromServer)
public ModelAndView importFileFromServer(HttpServletRequest hReq) {
ModelAndView mav = new ModelAndView("jsonView");
String institute = currentUser().getInstitute();
String taskSeCd = hReq.getParameter("taskSeCd");
FimsUser currentUser = (FimsUser) currentUser().getUser();
String deptCd = currentUser.getDeptCode();
String sggCd = currentUser.getOrgID();
List<LayoutDescriptor> layoutDescriptors = crdnStngService.getLinkFileLayoutMetadata(sggCd, taskSeCd, institute, deptCd);
List<LayoutDescriptor> layoutDescriptors = crdnStngService.getLinkFileLayoutMetadata(currentUser.getOrgID(), hReq.getParameter("taskSeCd"), currentUser().getInstitute(), currentUser.getDeptCode());
ModelAndView mav = new ModelAndView("jsonView");
for(int i=0; i < layoutDescriptors.size(); i++) {
DataObject remoteInfo = crdnEqpmntMapper.selectRemoteInfo(layoutDescriptors.get(i).getFileLayoutId());
if (remoteInfo == null || isEmpty(remoteInfo.string("REMOTE_IP")))
@ -206,21 +199,18 @@ public class Crdn05Controller extends ApplicationController {
@Task
@RequestMapping(name="단속연계파일 가져오기(파일업로드)", value=METHOD_URL.importFileFromClient)
public ModelAndView importFileFromClient(HttpServletRequest hReq, MultipartFile[] uploadFiles) {
String institute = currentUser().getInstitute();
String taskSeCd = hReq.getParameter("taskSeCd");
FimsUser currentUser = (FimsUser) currentUser().getUser();
String deptCd = currentUser.getDeptCode();
String sggCd = currentUser.getOrgID();
List<LayoutDescriptor> layoutDescriptors = crdnStngService.getLinkFileLayoutMetadata(sggCd, taskSeCd, institute, deptCd);
UserInfo currentUser = currentUser();
List<LayoutDescriptor> layoutDescriptors = crdnStngService.getLinkFileLayoutMetadata(
currentUser.getOrgID(),
hReq.getParameter("taskSeCd"),
currentUser.getInstitute(),
currentUser.getDeptCode()
);
LayoutDescriptor layoutDescriptor = new LayoutDescriptor();
if (layoutDescriptors.size() == 1) {
layoutDescriptor = layoutDescriptors.get(0);
} else if (layoutDescriptors.size() >= 2) {
layoutDescriptor = LayoutDiscriminator.choice(uploadFiles, layoutDescriptors);
}
LayoutDescriptor layoutDescriptor =
layoutDescriptors.size() == 1 ? layoutDescriptors.get(0) :
layoutDescriptors.size() > 1 ? LayoutDiscriminator.choice(uploadFiles, layoutDescriptors) :
new LayoutDescriptor();
String workPath = layoutDescriptor.getLinkFileLocation();
ensureDir(workPath);
@ -247,18 +237,19 @@ public class Crdn05Controller extends ApplicationController {
@Task
@RequestMapping(name="장비업체 단속파일 목록 조회", value=METHOD_URL.getEquipmentFileInfoList)
public ModelAndView getEquipmentFileInfoList(HttpServletRequest hReq) {
String taskSeCd = hReq.getParameter("taskSeCd");
UserInfo currentUser = currentUser();
String institute = currentUser.getInstitute();
String deptCd = currentUser.getDeptCode();
String sggCd = currentUser.getOrgID();
List<LayoutDescriptor> layoutDescriptors = crdnStngService.getLinkFileLayoutMetadata(sggCd, taskSeCd, institute, deptCd);
if (layoutDescriptors == null || layoutDescriptors.isEmpty())
List<LayoutDescriptor> layoutDescriptors = crdnStngService.getLinkFileLayoutMetadata(
currentUser.getOrgID(),
hReq.getParameter("taskSeCd"),
currentUser.getInstitute(),
currentUser.getDeptCode()
);
if (isEmpty(layoutDescriptors))
throw new RuntimeException("연계파일 레이아웃 정보 조회에 실패하였습니다.");
int nextTempGroupSeq = 1;
List<DataObject> allParsedDataList = new ArrayList<DataObject>();
TaskProcessor taskProcessor = TaskProcessor.get();
Map<String, List<CommonCode>> codeInfo = getCodesOf("FIM007","FIM004","FIM005","FIM006","FIM005","FIM061");
for(int i = 0; i < layoutDescriptors.size(); i++) {
String workPath = layoutDescriptors.get(i).getLinkFileLocation();
@ -278,7 +269,7 @@ public class Crdn05Controller extends ApplicationController {
case "BIN" -> new SingleFileParser();
default -> null;
};
parser.setTaskProcessor(TaskProcessor.get());
parser.setTaskProcessor(taskProcessor);
parser.setTempGroupSeq(nextTempGroupSeq);
parser.addCommonCode(codeInfo);
parser.setDescriptor(layoutDescriptors.get(i));
@ -301,8 +292,7 @@ public class Crdn05Controller extends ApplicationController {
@Task
@RequestMapping(name="장비업체 단속파일 삭제", value=METHOD_URL.removeLinkFile)
public ModelAndView removeLinkFile(HttpServletRequest hReq) {
String fileLayoutId = hReq.getParameter("fileLayoutId");
LayoutDescriptor info = crdnEqpmntBean.getLinkFileLayoutMetadata(fileLayoutId);
LayoutDescriptor info = crdnEqpmntBean.getLinkFileLayoutMetadata(hReq.getParameter("fileLayoutId"));
String workPath = info.getLinkFileLocation();
String fileName = hReq.getParameter("fileName");
@ -355,18 +345,18 @@ public class Crdn05Controller extends ApplicationController {
@Task
@RequestMapping(name="단속자료 수기 등록 화면", value=METHOD_URL.getManualRegistrationScreen)
public ModelAndView getManualRegistrationScreen(HttpServletRequest hReq) {
String urlTaskSeCd = hReq.getServletPath().split("/")[1];
String taskSeCd = hReq.getParameter("taskSeCd");
String sggCd = currentUser().getOrgID();
List<String> stdgNmList = crdnStngMapper.selectStdgNmList(sggCd);
ModelAndView mav = new ModelAndView("fims/crdn/crdn05030-info")
.addObject("pageName", "crdn05030")
.addObject("taskSeCd", urlTaskSeCd)
.addObject("taskSeCd", taskSeCd)
.addObject("sggCd", sggCd)
.addObject("stdgNmList", stdgNmList);
TaskProcessor taskProcessor = TaskProcessor.get();
String vltnByTask = taskProcessor.getVltnCdGrp(urlTaskSeCd);
String vltnByTask = taskProcessor.getVltnCdGrp(taskSeCd);
Map<String, List<CommonCode>> commonCodes = getCodesOf("FIM011","FIM053","LVS005",vltnByTask);
mav.addObject("FIM011List", commonCodes.get("FIM011"))
.addObject("FIM053List", commonCodes.get("FIM053"))
@ -375,10 +365,10 @@ public class Crdn05Controller extends ApplicationController {
CrdnQuery query = new CrdnQuery()
.setSggCd(sggCd)
.setTaskSeCd(urlTaskSeCd);
.setTaskSeCd(taskSeCd);
List<DataObject> teamList = crdnStngService.getTeamList(query);
String[] extraCodeGroups = taskProcessor.getExtraCdGrps(urlTaskSeCd);
String[] extraCodeGroups = taskProcessor.getExtraCdGrps(taskSeCd);
if (!isEmpty(extraCodeGroups)) {
commonCodes = getCodesOf(extraCodeGroups);
commonCodes.forEach((codeGroup, codes) -> {

@ -14,7 +14,6 @@ import cokr.xit.foundation.data.DataObject;
*/
@Mapper("answerWordsMapper")
public interface AnswerWordsMapper extends AbstractMapper {
/** .
* @param crdnQuery
* @return
@ -74,4 +73,4 @@ public interface AnswerWordsMapper extends AbstractMapper {
* @return
*/
int deleteCvlcptAnswerWordsInfo(CrdnCvlcpt crdnCvlcpt);
}
}

@ -15,7 +15,6 @@ import cokr.xit.foundation.data.DataObject;
*/
@Mapper("crdnCvlcptMapper")
public interface CrdnCvlcptMapper extends AbstractMapper {
/** .
* @param cvlcpt
* @return
@ -126,4 +125,4 @@ public interface CrdnCvlcptMapper extends AbstractMapper {
* @return
*/
int insertCrdnAdditionFromSelect(DataObject params);
}
}

@ -15,7 +15,6 @@ import cokr.xit.foundation.data.DataObject;
*/
@Mapper("soCvlcptIndviDmndMapper")
public interface SoCvlcptIndviDmndMapper extends AbstractMapper {
/** .
* @param crdnQuery
* @return
@ -33,5 +32,4 @@ public interface SoCvlcptIndviDmndMapper extends AbstractMapper {
* @return
*/
int deleteDmndDataInfo(Map<String, Object> map);
}
}

@ -14,7 +14,6 @@ import cokr.xit.foundation.data.DataObject;
*/
@Mapper("warningWordsMapper")
public interface WarningWordsMapper extends AbstractMapper {
/** .
* @param crdnQuery
* @return
@ -32,5 +31,4 @@ public interface WarningWordsMapper extends AbstractMapper {
* return
*/
int updateWarningWordsInfo(CrdnCvlcpt crdnCvlcpt);
}
}

@ -9,7 +9,6 @@ import cokr.xit.fims.cvlc.CrdnCvlcpt;
import cokr.xit.foundation.data.DataObject;
public interface CrdnCvlcptService {
/** .
* @param query
* @return
@ -122,4 +121,4 @@ public interface CrdnCvlcptService {
* @return
*/
String executeDisabledTagInfoInquire(String... crdnIds);
}
}

@ -96,18 +96,17 @@ public class CrdnCvlcptMainBean extends AbstractBean {
Map<String,String> cvlcptLink = new HashMap<>();
this.setLinkObj(cvlcptLink, cvlcptInfo, isSendBack);
if(!isEmpty(cvlcptInfo.string("INTERFACE_SEQ_N"))) {
if (!isEmpty(cvlcptInfo.string("INTERFACE_SEQ_N"))) {
Petition petition = mapper.convertValue(cvlcptLink, Petition.class);
return smgSenderBean.createReply(petition);
} else if(!cvlcptInfo.string("DTL_ID").equals("")) {
} else if (!cvlcptInfo.string("DTL_ID").equals("")) {
return false;
} else {
} else
throw new RuntimeException("[F]민원 연계 오류");
}
}
public void setLinkObj(Map<String,String> cvlcptLink, DataObject cvlcptInfo, boolean isSendBack) {
if(!isEmpty(cvlcptInfo.string("INTERFACE_SEQ_N"))) {
if (!isEmpty(cvlcptInfo.string("INTERFACE_SEQ_N"))) {
cvlcptLink.put("interfaceSeqN", cvlcptInfo.string("CVLCPT_LINK_ID"));
cvlcptLink.put("sysGubunC", "EC010008"); //시스템 구분("EC010008")
cvlcptLink.put("petiAncCodeV", cvlcptInfo.string("PETI_ANC_CODE_V")); //민원 기관 코드(최초신청기관코드)
@ -143,12 +142,9 @@ public class CrdnCvlcptMainBean extends AbstractBean {
cvlcptLink.put("sendStatus", "");//전송상태
cvlcptLink.put("sendStatusMsg", "");//전송상태메시지
} else if(!cvlcptInfo.string("DTL_ID").equals("")) {
} else {
} else if (!isEmpty(cvlcptInfo.get("DTL_ID"))) {
} else
throw new RuntimeException("[F]민원 연계 오류");
}
}
/** .
@ -177,16 +173,16 @@ public class CrdnCvlcptMainBean extends AbstractBean {
.setTaskSeCd(dataInfo.string("TASK_SE_CD"))
.setSggCd(dataInfo.string("SGG_CD"));
if(dataInfo.string("CVLCPT_PRCS_CD").equals("02")) {
if (dataInfo.string("CVLCPT_PRCS_CD").equals("02")) {
crdnQuery.setAnsSeCd("3");
crdnQuery.setAnsRsnCd("3"+dataInfo.string("VLTN_CD"));
if("301".equals(crdnQuery.getAnsRsnCd()) && "Y".equals(dataInfo.string("DSTRBNC_YN"))) {
if ("301".equals(crdnQuery.getAnsRsnCd()) && "Y".equals(dataInfo.string("DSTRBNC_YN"))) {
crdnQuery.setDstrbncYn("Y");
}
} else if(dataInfo.string("CVLCPT_PRCS_CD").equals("03")
|| dataInfo.string("CVLCPT_PRCS_CD").equals("04")){
} else if (dataInfo.string("CVLCPT_PRCS_CD").equals("03")
|| dataInfo.string("CVLCPT_PRCS_CD").equals("04")){
crdnQuery.setAnsSeCd(dataInfo.string("LEVY_EXCL_SE_CD"));
crdnQuery.setAnsRsnCd(dataInfo.string("LEVY_EXCL_RSN_CD"));
} else {
@ -196,14 +192,14 @@ public class CrdnCvlcptMainBean extends AbstractBean {
DataObject bodyWordsInfo = answerWordsMapper.selectCvlcptAnswerWordsInfo(crdnQuery);
DataObject basicWordsInfo = answerWordsMapper.selectCvlcptAnswerBasicWordsInfo(crdnQuery);
if(bodyWordsInfo == null)
if (bodyWordsInfo == null)
return "";
String body = bodyWordsInfo.string("PRCS_RSLT_CN");
String head = basicWordsInfo.string("HEADER_CN");
String tail = basicWordsInfo.string("FOOTER_CN");
if(isEmpty(body))
if (isEmpty(body))
return "";
String joinWords = head + "\n\n" + body + "\n\n" + tail;
@ -225,7 +221,7 @@ public class CrdnCvlcptMainBean extends AbstractBean {
joinWords = joinWords.replaceAll("", "@");
String[] splited = joinWords.split(CrdnCvlcpt.MACRO_SEQ);
var seqCount = splited.length - 1;
if(seqCount > 0){
if (seqCount > 0){
int seq = 1;
for(; seq <= seqCount; seq++){
joinWords = joinWords.replaceFirst(CrdnCvlcpt.MACRO_SEQ, Integer.toString(seq));
@ -271,7 +267,7 @@ public class CrdnCvlcptMainBean extends AbstractBean {
.setTaskSeCd(crdnCvlcpt.getTaskSeCd());
DataObject info = answerWordsMapper.selectCvlcptAnswerBasicWordsInfo(query);
if(isEmpty(info)) {
if (isEmpty(info)) {
return answerWordsMapper.insertAnswerBasicWordsInfo(crdnCvlcpt) == 1;
} else {
return answerWordsMapper.updateAnswerBasicWordsInfo(crdnCvlcpt) == 1;
@ -286,21 +282,21 @@ public class CrdnCvlcptMainBean extends AbstractBean {
* </ul>
*/
public boolean saveAnswerBodyWordsInfo(CrdnCvlcpt crdnCvlcpt) {
if(isEmpty(crdnCvlcpt.getAnsWordsId())) {
if (isEmpty(crdnCvlcpt.getAnsWordsId())) {
String codeGroupId = TaskProcessor.get().getVltnCdGrp(crdnCvlcpt.getTaskSeCd());
String code = "";
if(crdnCvlcpt.getAnsRsnCd().startsWith("1") || crdnCvlcpt.getAnsRsnCd().startsWith("2")) {
if(crdnCvlcpt.getAnsRsnCd().startsWith("1")) {
if (crdnCvlcpt.getAnsRsnCd().startsWith("1") || crdnCvlcpt.getAnsRsnCd().startsWith("2")) {
if (crdnCvlcpt.getAnsRsnCd().startsWith("1")) {
crdnCvlcpt.setPrcsSmry("과태료 미부과");
}
if(crdnCvlcpt.getAnsRsnCd().startsWith("2")) {
if (crdnCvlcpt.getAnsRsnCd().startsWith("2")) {
crdnCvlcpt.setPrcsSmry("과태료 계고");
}
codeGroupId = "FIM022";
code = crdnCvlcpt.getAnsRsnCd();
} else if(crdnCvlcpt.getAnsRsnCd().startsWith("3")) {
} else if (crdnCvlcpt.getAnsRsnCd().startsWith("3")) {
crdnCvlcpt.setPrcsSmry("과태료 부과");
code = crdnCvlcpt.getAnsRsnCd().substring(1);

@ -97,7 +97,7 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
case "receiptData" -> {
String appendCopyToOriginal = "CVLCPT_RCPT_YMD, CVLCPT_RCPT_NO, CVLCPT_LIST_NO, CVLCPT_LINK_ID, CRDN_REG_SE_CD, CRDN_ID";
if(query.getOrderBy() == null) {
if (query.getOrderBy() == null) {
if (isEmpty(query.getBy())) {
query.setOrderBy(appendCopyToOriginal);
} else {
@ -139,7 +139,7 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
DataObject dataObject = crdnCvlcptMapper.selectAnswerPreview(query.getCrdnId());
//저장된 답변이 없으면
if(ifEmpty(dataObject.string("CVLCPT_PRCS_RSLT_CN"), () -> "").equals("")) {
if (isEmpty(dataObject.get("CVLCPT_PRCS_RSLT_CN"))) {
String resultWords = crdnCvlcptMainBean.mappingAnswerWords(query.getCrdnId(), query.getSggCd(), query.getCurrentUserAcnt());
dataObject.set("CVLCPT_PRCS_RSLT_CN", resultWords);
}
@ -153,32 +153,30 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
DataObject dataObject = crdnCvlcptMapper.selectCivilComplaintReceiptInitialDataInfo(query);
//첨부파일 조회
FileQuery fileQuery = new FileQuery();
fileQuery.setInfoType(Crdn.INF_TYPE);
fileQuery.setInfoKeys(query.getCrdnId());
FileQuery fileQuery = new FileQuery()
.setInfoType(Crdn.INF_TYPE)
.setInfoKeys(query.getCrdnId());
List<DataObject> fileList = mediaBean.getFileAndMosaic(fileQuery);
if(fileList != null && !fileList.isEmpty()) {
if (!isEmpty(fileList))
dataObject.set("fileList", fileList);
}
//동영상 존재 여부 확인
dataObject.set("VIDEO_EXIST_YN", "N");
String linkTblNm = dataObject.string("LINK_TBL_NM");
if(!isEmpty(linkTblNm)) {
if(linkTblNm.equals("TB_ESB_INTERFACE")) {
if (!isEmpty(linkTblNm)) {
if (linkTblNm.equals("TB_ESB_INTERFACE")) {
fileQuery.setInfoType("010");
} else if(linkTblNm.equals("TB_SAEOL_CVLCPT_DTL")) {
} else if (linkTblNm.equals("TB_SAEOL_CVLCPT_DTL")) {
fileQuery.setInfoType("020");
} else {
} else
throw new RuntimeException("파일 조회 중 오류가 발생하였습니다.");
}
fileQuery.setInfoKeys(dataObject.string("LINK_ID"));
List<DataObject> linkFileList = fileBean.getFileList(fileQuery);
if(linkFileList != null && !linkFileList.isEmpty()) {
if (!isEmpty(linkFileList)) {
for(int i=0; i < linkFileList.size(); i++) {
String mimeType = linkFileList.get(i).string("MIME_TYPE");
if(Arrays.asList(Sprt.VIDEO_MIME_TYPE).contains(mimeType)) {
if (Arrays.asList(Sprt.VIDEO_MIME_TYPE).contains(mimeType)) {
dataObject.set("VIDEO_EXIST_YN", "Y");
}
}
@ -191,7 +189,7 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
@Override
public String sendBackCivilComplaintInfo(String crdnId) {
boolean saved = crdnCvlcptSubBean.executelevyExcl("sendBack", crdnId);
if(!saved)
if (!saved)
throw new RuntimeException("반송 처리 중 서손처리에 실패하였습니다.");
DataObject crdnInfo = crdnInfoMapper.selectCrdnInfo(crdnId);
@ -208,7 +206,7 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
if (!retSuccess)
throw new RuntimeException("반송 처리 중 단속민원답변 수정에 실패하였습니다.");
if(crdnInfo.string("LINK_TBL_NM").equals("TB_ESB_INTERFACE")
if (crdnInfo.string("LINK_TBL_NM").equals("TB_ESB_INTERFACE")
|| crdnInfo.string("LINK_TBL_NM").equals("TB_SAEOL_CVLCPT_DTL")) {
boolean result = crdnCvlcptMainBean.insertTransmitInfo(true, crdnInfo.string("CVLCPT_LINK_ID"));
if (!result)
@ -222,7 +220,7 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
@Override
public String updateCvlcptProcessSection(Map<String, Object> nonQueryRequest, CrdnCvlcpt crdnCvlcpt, Crdn crdn) {
boolean saved = crdnCvlcptSubBean.updateSubInfo(nonQueryRequest, crdn);
if(!saved)
if (!saved)
throw new RuntimeException("민원자료 저장 중 오류가 발생하였습니다.");
DataObject crdnInfo = crdnInfoMapper.selectCrdnInfo(crdn.getCrdnId());
@ -241,7 +239,7 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
String newCvlcptTrsmCd = "";
String ansRsnCd = "";
String acceptType = blankIfEmpty(nonQueryRequest.get("acceptType"));
if(acceptType.equals("someAccept") || acceptType.equals("nonAccept")) { //일부수용,불수용
if (acceptType.equals("someAccept") || acceptType.equals("nonAccept")) { //일부수용,불수용
ansRsnCd = crdn.getLevyExclRsnCd();
} else {
ansRsnCd = "3"+crdn.getVltnCd();
@ -251,13 +249,13 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
.setAnsRsnCd(ansRsnCd)
.setSggCd(crdn.getSggCd())
.setTaskSeCd(crdn.getTaskSeCd());
if(crdn.getVltnCd().equals("01") && "Y".equals(crdnCvlcpt.getDstrbncYn())) {
if (crdn.getVltnCd().equals("01") && "Y".equals(crdnCvlcpt.getDstrbncYn())) {
crdnQuery.setDstrbncYn("Y");
}
// 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장 조회
DataObject infoCvlcptAnsWords = answerWordsMapper.selectCvlcptAnswerWordsInfo(crdnQuery);
if(acceptType.equals("someAccept") || acceptType.equals("nonAccept")) { //일부수용,불수용
if (acceptType.equals("someAccept") || acceptType.equals("nonAccept")) { //일부수용,불수용
// 비부과(서손)사유가 민원 답변대상인가? 민원 답변 문구(TB_CVLCPT_ANS_WORDS) 대장에 답변 사유 코드가 존재한다면..
if (infoCvlcptAnsWords != null) {
newCvlcptPrcsCd = "04"; // 민원 처리 코드 - 불수용(과태료 부과제외)
@ -298,9 +296,8 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
public String updateAnswerContent(CrdnCvlcpt crdnCvlcpt) {
int affected = crdnCvlcptMapper.updateAnswerContent(crdnCvlcpt);
if(affected != 1) {
if (affected != 1)
throw new RuntimeException("답변 내용 저장에 실패하였습니다.");
}
return "[S]";
@ -308,13 +305,11 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
@Override
public String updateAnswerTargetProcessStatus(String processType, String currentSggCd, String currentUserAcnt, String[] crdnIds) {
List<DataObject> targetDataList = crdnCvlcptMapper.selectAnswerTargetList(crdnIds);
for(int i=0; i < targetDataList.size(); i++) {
//단속상태 변경(차적조회완료 -> 부과대상)
if(targetDataList.get(i).string("CRDN_STTS_CD").equals("21")) {
if (targetDataList.get(i).string("CRDN_STTS_CD").equals("21")) {
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(targetDataList.get(i).string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(targetDataList.get(i).string("CRDN_STTS_CD"));
@ -330,31 +325,27 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
CrdnCvlcpt crdnCvlcpt = new CrdnCvlcpt();
crdnCvlcpt.setCvlcptLinkId(targetDataList.get(i).string("CVLCPT_LINK_ID"));
if(processType.equals("answerExecute")) {
if (processType.equals("answerExecute")) {
crdnCvlcpt.setCvlcptTrsmCd("04");
if(ifEmpty(targetDataList.get(i).string("CVLCPT_PRCS_RSLT_CN"), () -> "").equals("")) {
if (ifEmpty(targetDataList.get(i).string("CVLCPT_PRCS_RSLT_CN"), () -> "").equals("")) {
String answerWords = crdnCvlcptMainBean.mappingAnswerWords(targetDataList.get(i).string("CRDN_ID"), currentSggCd, currentUserAcnt);
crdnCvlcpt.setCvlcptPrcsRsltCn(answerWords);
}
} else if(processType.equals("answerComplete")){
} else if (processType.equals("answerComplete")){
crdnCvlcpt.setCvlcptTrsmCd("09");
} else {
} else
throw new RuntimeException("민원 전송 상태 변경에 실패하였습니다.");
}
int affected = crdnCvlcptMapper.updateAnswerTargetTransmitStatus(crdnCvlcpt);
if(affected != 1) {
if (affected != 1)
throw new RuntimeException("민원 전송 상태 변경 중 오류가 발생하였습니다.");
}
if(processType.equals("answerExecute")) {
if(targetDataList.get(i).string("LINK_TBL_NM").equals("TB_ESB_INTERFACE")
if (processType.equals("answerExecute")) {
if (targetDataList.get(i).string("LINK_TBL_NM").equals("TB_ESB_INTERFACE")
|| targetDataList.get(i).string("LINK_TBL_NM").equals("TB_SAEOL_CVLCPT_DTL")) {
boolean result = crdnCvlcptMainBean.insertTransmitInfo(false, targetDataList.get(i).string("CVLCPT_LINK_ID"));
if (!result) {
if (!result)
throw new RuntimeException("민원 전송 상태 변경 중 전송자료 등록에 실패하였습니다.");
}
}
}
@ -383,10 +374,10 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
@Override
public String saveAnswerWordsInfo(String saveData, CrdnCvlcpt crdnCvlcpt) {
boolean saved = false;
if(saveData.equals("basic")) {
if (saveData.equals("basic")) {
saved = crdnCvlcptMainBean.saveAnswerBasicWordsInfo(crdnCvlcpt);
}
if(saveData.equals("body")) {
if (saveData.equals("body")) {
saved = crdnCvlcptMainBean.saveAnswerBodyWordsInfo(crdnCvlcpt);
}
return saved ? "[S]" : "[F]";
@ -428,10 +419,10 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
public String executeDisabledTagInfoInquire(String... crdnIds) {
String disabledParkingDemonYn = FimsConf.get().getDisabledParkingDemonYn();
String disabledParkingDemonUrl = FimsConf.get().getDisabledParkingDemonUrl();
if(isEmpty(disabledParkingDemonYn)) {
if (isEmpty(disabledParkingDemonYn)) {
disabledParkingDemonYn = "N";
}
if(isEmpty(disabledParkingDemonUrl)) {
if (isEmpty(disabledParkingDemonUrl)) {
disabledParkingDemonUrl = "";
}
@ -441,14 +432,14 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
DataObject crdnInfo = crdnInfoMapper.selectCrdnInfo(crdnIds[i]);
String vhrno = crdnInfo.string("VHRNO");
if(isEmpty(vhrno))
if (isEmpty(vhrno))
continue;
if(!vehicleResultMap.containsKey(vhrno)) {
if (!vehicleResultMap.containsKey(vhrno)) {
DataObject inquireResult = new DataObject();
// 연계서비스 별도 프로세스 여부
if(disabledParkingDemonYn.equals("Y")) {
if (disabledParkingDemonYn.equals("Y")) {
String sUrl = disabledParkingDemonUrl + "/intf/disabledParking/parkingInfo";
HttpResponse<String> apiRslt = new WebClient().post(request -> {
@ -476,13 +467,13 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
}
boolean result = vehicleResultMap.get(vhrno);
if(result) {
if (result) {
boolean saved = crdnCvlcptSubBean.executelevyExcl("inquireTag", crdnInfo.string("CRDN_ID"));
if(!saved)
if (!saved)
throw new RuntimeException("서손처리에 실패하였습니다.");
boolean isFirstBorn = crdnInfo.string("CRDN_REG_SE_CD").equals("02");
boolean isNotYetTransmit = !Arrays.asList(new String[]{"04","05","06"}).contains(crdnInfo.string("CVLCPT_TRSM_CD"));
boolean isNotYetTransmit = !"04,05,06".contains(crdnInfo.string("CVLCPT_TRSM_CD"));
//자동등록된 연계자료이며, 전송 작업 처리 전 자료에 대해 민원 정보를 업데이트한다.
if (isFirstBorn && isNotYetTransmit) {
@ -508,7 +499,7 @@ public class CrdnCvlcptServiceBean extends AbstractServiceBean implements CrdnCv
Crdn crdn = new Crdn();
crdn.setCrdnId(crdnInfo.string("CRDN_ID"));
boolean saved = crdnUpdtMapper.updateTagInfo(crdn) == 1;
if(!saved)
if (!saved)
throw new RuntimeException("표지조회처리 중 표지확인여부 변경에 실패하였습니다.");
}
}

@ -176,7 +176,8 @@ public class Cvlc01Controller extends ApplicationController {
boolean json = jsonResponse();
return new ModelAndView(json ? "jsonView" : "fims/cvlc/cvlc01050-info")
.addObject("pageName", "cvlc01050")
.addObject("taskSeCd", hReq.getServletPath().split("/")[1])
.addObject("taskSeCd", hReq.getParameter("taskSeCd"))
// .addObject("taskSeCd", hReq.getServletPath().split("/")[1])
.addObject("FIM039List", commonCodes.get("FIM039"))
.addObject("cvlcptInfo", json ? info : toJson(info));
}
@ -232,7 +233,8 @@ public class Cvlc01Controller extends ApplicationController {
@Task
@RequestMapping(name="민원접수 초기자료 조회", value=METHOD_URL.getCivilComplaintReceiptInitialDataInfo)
public ModelAndView getCivilComplaintReceiptInitialDataInfo(HttpServletRequest hReq, CrdnQuery query) {
String urlTaskSeCd = hReq.getServletPath().split("/")[1];
String urlTaskSeCd = hReq.getParameter("taskSeCd");
// String urlTaskSeCd = hReq.getServletPath().split("/")[1];
DataObject info = crdnCvlcptService.getCivilComplaintReceiptInitialDataInfo(query);
FimsUser currentUser = (FimsUser) currentUser().getUser();

@ -163,17 +163,17 @@ public class Cvlc02Controller extends ApplicationController {
@Task
@RequestMapping(name="민원답변내용 미리보기", value=METHOD_URL.answerPreviewInfo)
public ModelAndView answerPreviewInfo(HttpServletRequest hReq, CrdnQuery query) {
String urlTaskSeCd = hReq.getServletPath().split("/")[1];
query
.setCurrentUserAcnt(currentUser().getAccount())
.setTaskSeCd(urlTaskSeCd)
.setTaskSeCd(hReq.getParameter("taskSeCd"))
// .setTaskSeCd(hReq.getServletPath().split("/")[1])
.setSggCd(currentUser().getOrgID());
DataObject cvlcptInfo = crdnCvlcptService.getAnswerPreview(query);
boolean json = jsonResponse();
return new ModelAndView(json ? "jsonView" : "fims/cvlc/cvlc02060-info")
.addObject("pageName", "cvlc02060")
.addObject("taskSeCd", urlTaskSeCd)
.addObject("taskSeCd", query.getTaskSeCd())
.addObject("cvlcptInfo", json ? cvlcptInfo : toJson(cvlcptInfo));
}

@ -157,7 +157,8 @@ public class LevyBean extends AbstractBean {
String taskSeCd = crdnInfo.string("TASK_SE_CD");
String sggCd = levy.getSggCd();
if (!TaskProcessor.get().isPreImposable(taskSeCd))
TaskProcessor taskProcessor = TaskProcessor.get();
if (!taskProcessor.isPreImposable(taskSeCd))
return "[F] 작업 중 " + crdnInfo.string("TASK_SE_NM") + " 업무는 사전부과를 할 수 없습니다.";
if (!isEmpty(crdnInfo.string("LEVY_ID")))
return "[F] 작업 중 이미 감경 부과된 자료가 있습니다.";
@ -170,13 +171,13 @@ public class LevyBean extends AbstractBean {
UserInfo userInfo = currentUser();
// 부과 정보
levy.setInstCd(userInfo.getInstitute()); // 기관 코드
levy.setInstCd(userInfo.getInstitute()); // 기관 코드
levy.setDeptCd(userInfo.getDeptCode()); // 부서 코드
levy.setSpclBizCd(crdnInfo.string("SPCL_BIZ_CD")); // 특별회계 사업 코드
levy.setFyr(levy.getLevyYmd().substring(0, 4)); // 회계연도
levy.setAcntgSeCd(crdnInfo.string("ACNTG_SE_CD")); // 회계 구분 코드
levy.setTxitmCd(crdnInfo.string("TXITM_CD")); // 세목 코드
levy.setOperItemCd(crdnInfo.string("OPER_ITEM_CD")); // 운영 항목 코드
levy.setSpclBizCd(crdnInfo.string("SPCL_BIZ_CD")); // 특별회계 사업 코드
levy.setFyr(levy.getLevyYmd().substring(0, 4)); // 회계연도
levy.setAcntgSeCd(crdnInfo.string("ACNTG_SE_CD")); // 회계 구분 코드
levy.setTxitmCd(crdnInfo.string("TXITM_CD")); // 세목 코드
levy.setOperItemCd(crdnInfo.string("OPER_ITEM_CD")); // 운영 항목 코드
// MAX+1 부과 번호
LevyQuery selectLevyNo = new LevyQuery();
selectLevyNo.setSggCd(sggCd);
@ -186,54 +187,52 @@ public class LevyBean extends AbstractBean {
selectLevyNo.setTxitmCd(crdnInfo.string("TXITM_CD"));
selectLevyNo.setOperItemCd(crdnInfo.string("OPER_ITEM_CD"));
levy.setLevyNo(levyMapper.selectMaxLevyNo(selectLevyNo)); // 부과 번호 (최종 부과번호+1 을 조회 한다.)
levy.setIspySn("00"); // 분납 일련번호
levy.setLevySeCd("02"); // 부과 구분 코드 FIM040
levy.setUntySeCd("02"); // 통합 구분 코드 FIM072
levy.setRdctSeCd("BPV".equals(taskSeCd) ? "02" : "01"); // 감경 구분 코드 FIM046 - 02 미감경 01 감경
levy.setFfnlgAmt(toInt(crdnInfo.get("FFNLG_AMT"))); // 과태료 금액
levy.setLevyPcptax(toInt(crdnInfo.get("ADVNTCE_AMT"))); // 부과 본세
levy.setLastAmt(toInt(crdnInfo.get("ADVNTCE_AMT"))); // 최종 금액
levy.setLevyAdamt(0); // 부과 가산금
levy.setIspyInt(0); // 분납 이자
levy.setRcvmtPcptax(0); // 수납 본세
levy.setRcvmtAdamt(0); // 수납 가산금
levy.setRdamtPcptax(0); // 감액 본세
levy.setRdamtAdamt(0); // 감액 가산금
levy.setTxtnThing(crdnInfo.string("VHRNO")); // 과세 물건
levy.setMngItem1(crdnInfo.string("CRDN_YMD_TM_MASK")); // 관리 아이템1 - 위반일시
levy.setLevyNo(levyMapper.selectMaxLevyNo(selectLevyNo)); // 부과 번호 (최종 부과번호+1 을 조회 한다.)
levy.setIspySn("00"); // 분납 일련번호
levy.setLevySeCd("02"); // 부과 구분 코드 FIM040
levy.setUntySeCd("02"); // 통합 구분 코드 FIM072
levy.setRdctSeCd(taskProcessor.getRdctSeCd(taskSeCd)); // 감경 구분 코드
levy.setFfnlgAmt(toInt(crdnInfo.get("FFNLG_AMT"))); // 과태료 금액
levy.setLevyPcptax(toInt(crdnInfo.get("ADVNTCE_AMT"))); // 부과 본세
levy.setLastAmt(toInt(crdnInfo.get("ADVNTCE_AMT"))); // 최종 금액
levy.setLevyAdamt(0); // 부과 가산금
levy.setIspyInt(0); // 분납 이자
levy.setRcvmtPcptax(0); // 수납 본세
levy.setRcvmtAdamt(0); // 수납 가산금
levy.setRdamtPcptax(0); // 감액 본세
levy.setRdamtAdamt(0); // 감액 가산금
levy.setTxtnThing(crdnInfo.string("VHRNO")); // 과세 물건
levy.setMngItem1(crdnInfo.string("CRDN_YMD_TM_MASK")); // 관리 아이템1 - 위반일시
levy.setMngItem2(crdnInfo.string("CRDN_STDG_NM") + " " + crdnInfo.string("CRDN_PLC")); // 관리 아이템2 - 장소
levy.setMngItem3(crdnInfo.string("VLTN_LAW_NM") + " " + crdnInfo.string("VLTN_LAW1") + " " + crdnInfo.string("VLTN_LAW2")); // 관리 아이템3 - 법령
levy.setMngItem4(crdnInfo.string("VLTN_ARTCL")); // 관리 아이템4 - 위반항목
levy.setMngItem5(""); // 관리 아이템5
levy.setMngItem4(crdnInfo.string("VLTN_ARTCL")); // 관리 아이템4 - 위반항목
levy.setMngItem5(""); // 관리 아이템5
levy.setMngItem6(crdnInfo.string("SGG_CD") + crdnInfo.string("CRDN_ID")); // 관리 아이템6 - 시군구코드 + 단속ID
// 부과(TB_LEVY) 대장을 등록한다.
int rtnNocs = levyMapper.insertLevy(levy);
if (rtnNocs != 1)
throw new RuntimeException("감경부과 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("감경부과 대장 등록에 실패하였습니다.");
// 단속상태이력(TB_CRDN_STTS_HSTRY)
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(crdnInfo.string("CRDN_ID")); // 단속 ID
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD")); // 이전 단속 상태 코드
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT")); // 이전 단속 상태 변경 일시
crdnSttsHstry.setCrdnSttsCd("23"); // 단속 상태 코드(FIM010) - 23: 사전부과
crdnSttsHstry.setTaskDtlId(levy.getLevyId()); // 부과 ID
crdnSttsHstry.setCrdnId(crdnInfo.string("CRDN_ID")); // 단속 ID
crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD")); // 이전 단속 상태 코드
crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT")); // 이전 단속 상태 변경 일시
crdnSttsHstry.setCrdnSttsCd("23"); // 단속 상태 코드(FIM010) - 23: 사전부과
crdnSttsHstry.setTaskDtlId(levy.getLevyId()); // 부과 ID
boolean rtnScs = false;
if (toInt(crdnInfo.get("CRDN_STTS_CD")) >= 1 && toInt(crdnInfo.get("CRDN_STTS_CD")) <= 22 ) {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
if (!rtnScs)
throw new RuntimeException("감경부과 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
// 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록한다.
rtnScs = crdnSttsHstryBean.create(crdnSttsHstry);
if (!rtnScs) {
if (!rtnScs)
throw new RuntimeException("감경부과 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
return "[S] 작업이 정상 처리 되었습니다.";

@ -94,6 +94,14 @@ public class TaskProcessor extends AbstractBean {
return "PVS".equals(taskSeCd) ? "한건을 시간초과로 처리하십시요." : "한건을 서손으로 처리하십시요.";
}
/** .
* @param taskSeCd
* @return
*/
public String getRdctSeCd(String taskSeCd) {
return "BPV".equals(taskSeCd) ? "02" : "01"; // FIM046 - 02 미감경 01 감경
}
/** .
* @param taskSeCd
* @return
@ -242,10 +250,7 @@ public class TaskProcessor extends AbstractBean {
* @return
*/
public boolean isPreImposable(String taskSeCd) {
return switch (taskSeCd) {
case "BPV", "PVS" -> true;
default -> false;
};
return "BPV,PVS".contains(taskSeCd);
}
/** .

@ -51,18 +51,11 @@ public class Nxrp01Controller extends AbstractController {
@Task({"ECA","DPV","PES","DVS"})
@RequestMapping(name="차세대 세외수입 과태료 대장 단속 정보 등록", value=METHOD_URL.createIndividualA01)
public ModelAndView createIndividualA01(NisIndivQuery req) {
boolean saved = false;
String rtnMsg = nisIndivService.createNisIndivA01(req);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/** .
@ -75,18 +68,11 @@ public class Nxrp01Controller extends AbstractController {
@Task("PVS")
@RequestMapping(name="차세대 세외수입 주정차 과태료 대장 단속 정보 등록", value=METHOD_URL.createIndividualB01)
public ModelAndView createIndividualB01(NisIndivQuery req) {
boolean saved = false;
String rtnMsg = nisIndivService.createNisIndivB01(req);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
/** .
@ -99,17 +85,10 @@ public class Nxrp01Controller extends AbstractController {
@Task("BPV")
@RequestMapping(name="차세대 세외수입 전용차로 과태료 대장 단속 정보 등록", value=METHOD_URL.createIndividualC01)
public ModelAndView createIndividualC01(NisIndivQuery req) {
boolean saved = false;
String rtnMsg = nisIndivService.createNisIndivC01(req);
if (rtnMsg.contains("[S]")) {
saved = true;
} else {
saved = false;
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
.addObject("saved", rtnMsg.contains("[S]"))
.addObject("rtnMsg", rtnMsg);
}
}
}

@ -633,10 +633,9 @@ public class Sndb01Controller extends ApplicationController {
mav.setViewName("fims/sndb/sndb01060-info");
// 사전통지 납기일자 조회
CmmnQuery cmmnReq = new CmmnQuery();
cmmnReq.setSggCd(req.getSggCd());
cmmnReq.setTaskSeCd(req.getTaskSeCd());
CmmnQuery cmmnReq = new CmmnQuery()
.setSggCd(req.getSggCd())
.setTaskSeCd(req.getTaskSeCd());
DataObject advntceInfo = taskBean.getAdvntceYmdInfo(cmmnReq);
mav.addObject("callPurpose", req.getCallPurpose()) // 호출 용도

@ -21,7 +21,6 @@ import cokr.xit.foundation.data.DataObject;
*/
@Mapper("totalInfoMapper")
public interface TotalInfoMapper extends AbstractMapper {
/** ID .
* @param crdnId ID
* @return
@ -53,5 +52,4 @@ public interface TotalInfoMapper extends AbstractMapper {
default boolean updateCrdnAtchFileCnt(Crdn crdn) {
return crdn != null && updateCrdnAtchFileCnt(params().set("crdn", crdn)) == 1;
}
}
}

@ -27,11 +27,9 @@ import cokr.xit.foundation.data.DataObject;
*/
@Component("sprt02Bean")
public class Sprt02Bean extends AbstractBean {
/** 개별 총정보 DAO */
@Resource(name = "totalInfoMapper")
private TotalInfoMapper totalInfoMapper;
/** 파일 Bean */
@Resource(name="fileBean")
private FileBean fileBean;
@ -57,40 +55,34 @@ public class Sprt02Bean extends AbstractBean {
* @return
*/
public String updateCrdnImageFile(Crdn crdn, List<FileInfo> newFileInfoList) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 파일 등록
int fileInsertEffected = fileBean.create(newFileInfoList);
int affected = fileBean.create(newFileInfoList);
// 단속 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(Crdn.INF_TYPE)
.setInfoKeys(crdn.getCrdnId())
.setOrderBy("FILE_ID"));
List<DataObject> infoFileList = fileBean.getFileList(
new FileQuery().setInfoType(Crdn.INF_TYPE)
.setInfoKeys(crdn.getCrdnId())
.setOrderBy("FILE_ID")
);
if (infoFileList != null && infoFileList.size() > 0) {
if (!isEmpty(infoFileList)) {
String[] fileIDs = new String[infoFileList.size()];
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
fileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
}
infoFileList.stream()
.map(row -> row.string("FILE_ID"))
.toList()
.toArray(fileIDs);
fileBean.reorder(fileIDs); // 첨부파일 재 정렬
}
crdn.setAtchFileCnt(crdn.getAtchFileCnt() + fileInsertEffected);
crdn.setAtchFileCnt(crdn.getAtchFileCnt() + affected);
// 단속 대장을 수정한다.
rtnScs = totalInfoMapper.updateCrdnAtchFileCnt(crdn);
if (!rtnScs) {
boolean rtnScs = totalInfoMapper.updateCrdnAtchFileCnt(crdn);
if (!rtnScs)
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("단속 첨부 파일 갯수 수정에 실패하였습니다.");
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
/** .
@ -98,43 +90,35 @@ public class Sprt02Bean extends AbstractBean {
* @return
*/
public String removeCrdnImageFile(String crdnId, Integer atchFileCnt, String... fileIDs) {
// 변수 선언
boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지
// 파일 삭제
int fileInsertEffected = fileBean.remove(fileIDs);
int affected = fileBean.remove(fileIDs);
// 단속 ID로 파일(TB_FILE) 정보 조회
List<DataObject> infoFileList = fileBean.getFileList(new FileQuery().setInfoType(Crdn.INF_TYPE)
.setInfoKeys(crdnId)
.setOrderBy("FILE_ID"));
List<DataObject> infoFileList = fileBean.getFileList(
new FileQuery().setInfoType(Crdn.INF_TYPE)
.setInfoKeys(crdnId)
.setOrderBy("FILE_ID")
);
if (infoFileList != null && infoFileList.size() > 0) {
if (!isEmpty(infoFileList)) {
String[] reorderFileIDs = new String[infoFileList.size()];
for (int iLoop = 0; iLoop < infoFileList.size(); iLoop++) {
reorderFileIDs[iLoop] = infoFileList.get(iLoop).string("FILE_ID");
}
infoFileList.stream()
.map(row -> row.string("FILE_ID"))
.toList()
.toArray(reorderFileIDs);
fileBean.reorder(reorderFileIDs); // 첨부파일 재 정렬
}
Crdn crdn = new Crdn();
crdn.setCrdnId(crdnId);
crdn.setAtchFileCnt(atchFileCnt - fileInsertEffected);
crdn.setAtchFileCnt(atchFileCnt - affected);
// 단속 대장을 수정한다.
rtnScs = totalInfoMapper.updateCrdnAtchFileCnt(crdn);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
boolean rtnScs = totalInfoMapper.updateCrdnAtchFileCnt(crdn);
if (!rtnScs)
throw new RuntimeException("단속 첨부 파일 갯수 수정에 실패하였습니다.");
}
rtnMsg = "[S] 작업이 정상 처리 되었습니다.";
return rtnMsg;
return "[S] 작업이 정상 처리 되었습니다.";
}
}
}

@ -27,11 +27,9 @@ import cokr.xit.foundation.data.DataObject;
*/
@Service("sprt02Service")
public class Sprt02ServiceBean extends AbstractServiceBean implements Sprt02Service {
/** 업무지원 Bean */
@Resource(name="sprt02Bean")
protected Sprt02Bean sprt02Bean;
/** 파일 Bean */
@Resource(name="fileBean")
private FileBean fileBean;
@ -44,25 +42,19 @@ public class Sprt02ServiceBean extends AbstractServiceBean implements Sprt02Serv
@Override
public DataObject getCrdnPayerInfo(SprtQuery req) {
// 단속, 납부자 조회
DataObject dataObject = sprt02Bean.getCrdnPayerInfo(req);
// 단속 파일 조회
List<DataObject> fileList = getCrdnFileList(req);
DataObject payerInfo = sprt02Bean.getCrdnPayerInfo(req);
if (!isEmpty(payerInfo)) // 단속 파일 조회
payerInfo.set("fileList", getCrdnFileList(req));
if (fileList != null && !fileList.isEmpty()) {
dataObject.set("fileList", fileList);
}
return dataObject;
return payerInfo;
}
@Override
public List<DataObject> getCrdnFileList(SprtQuery req) {
// 첨부 파일 조회
FileQuery fileQuery = new FileQuery();
fileQuery.setInfoType(Crdn.INF_TYPE);
fileQuery.setInfoKeys(req.getCrdnId());
FileQuery fileQuery = new FileQuery()
.setInfoType(Crdn.INF_TYPE)
.setInfoKeys(req.getCrdnId());
return fileBean.getFileList(fileQuery);
}
@ -76,5 +68,4 @@ public class Sprt02ServiceBean extends AbstractServiceBean implements Sprt02Serv
public String removeCrdnImageFile(String crdnId, Integer atchFileCnt, String... fileIDs) {
return sprt02Bean.removeCrdnImageFile(crdnId, atchFileCnt, fileIDs);
}
}
}

@ -5,10 +5,8 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
@Configuration
public class TaskMvcConfig extends DelegatingWebMvcConfiguration {
@Override
protected RequestMappingHandlerMapping createRequestMappingHandlerMapping() {
return new TaskRequestMappingHandlerMapping();
@ -18,5 +16,4 @@ public class TaskMvcConfig extends DelegatingWebMvcConfiguration {
TaskRequestMappingHandlerMapping taskRequestMappingHandlerMapping() {
return new TaskRequestMappingHandlerMapping();
}
}
}

@ -1,7 +1,6 @@
package cokr.xit.fims.task;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@ -18,12 +17,16 @@ public class TaskRequestMappingHandlerMapping extends RequestMappingHandlerMappi
@Override
@Nullable
public RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
if (!FimsConf.get().isUrlPrefixedWithTask())
return super.getMappingForMethod(method, handlerType);
RequestMappingInfo info = super.getMappingForMethod(method, handlerType);
Task task = AnnotatedElementUtils.findMergedAnnotation(method, Task.class);
return task != null && info != null ?
createRequestMappingInfo(task, method, info) :
info;
}
protected RequestMappingInfo createRequestMappingInfo(Task task, Method method, RequestMappingInfo info) {
@ -38,15 +41,6 @@ public class TaskRequestMappingHandlerMapping extends RequestMappingHandlerMappi
prefix = new String[1 + tasksArray.length];
System.arraycopy(new String[] {""}, 0, prefix, 0, 1);
System.arraycopy(tasksArray, 0, prefix, 1, tasksArray.length);
} else {
List<String> newTasks = FimsConf.get().getAdditionalTasks();
if (newTasks != null) {
ArrayList<String> list = new ArrayList<>();
for (String str: prefix)
list.add(str);
list.addAll(newTasks);
prefix = list.toArray(new String[list.size()]);
}
}
RequestMapping rm = AnnotatedElementUtils.findMergedAnnotation(method, RequestMapping.class);

@ -141,7 +141,8 @@ INSERT
) VALUES (
#{layoutDescriptor.fileLayoutId}
, #{remoteSystemInfo.ip}
, #{remoteSystemInfo.port}
<if test="remoteSystemInfo.port != null and remoteSystemInfo.port != ''">, #{remoteSystemInfo.port}</if>
<if test="remoteSystemInfo.port == null or remoteSystemInfo.port == ''">, NULL</if>
, #{remoteSystemInfo.id}
, #{remoteSystemInfo.pw}
, #{remoteSystemInfo.osType}

@ -242,6 +242,7 @@ SELECT C.CRDN_ID <!-- 단속 ID -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, CONCAT(C.CRDN_YMD,'',C.CRDN_TM) AS CRDN_YMD_TM <!-- 단속 일시 -->
, C.VHRNO <!-- 차량번호 -->
, CASE WHEN EV.EXMPTN_VHCL_ID IS NOT NULL THEN 'Y' ELSE 'N' END EXMPTN <!-- 면제차량 여부 -->
, COUNT(*) OVER (PARTITION BY C.VHRNO, C.CRDN_PLC) AS CRDN_CNT <!-- 위반건수 -->
, '' AS INSP_RSLT
, '' AS PRCS_MTHD
@ -255,7 +256,8 @@ SELECT C.CRDN_ID <!-- 단속 ID -->
, C.CRDN_INPT_SE_CD <!-- 자료출처 -->
, (SELECT GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM <!-- 자료출처 -->
FROM TB_CRDN C
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
LEFT OUTER JOIN TB_EXMPTN_VHCL EV ON C.SGG_CD = EV.SGG_CD AND C.VHRNO = EV.VHRNO AND C.CRDN_YMD BETWEEN EV.EXMPTN_BGNG_YMD AND EV.EXMPTN_END_YMD AND EV.DEL_YN = 'N'
WHERE C.DEL_YN = 'N'
AND C.SGG_CD = #{sggCd}
AND C.TASK_SE_CD = #{taskSeCd}

Loading…
Cancel
Save