롤백소스 일부 복구, 시군구매퍼,부서매퍼xml 추가

main
이범준 5 months ago
parent b5692344d5
commit 5b21460512

@ -212,7 +212,7 @@
</excludes> </excludes>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <!--<plugin>
<groupId>cokr.xit.app.plugin.maven</groupId> <groupId>cokr.xit.app.plugin.maven</groupId>
<artifactId>sgg-maven-plugin</artifactId> <artifactId>sgg-maven-plugin</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
@ -236,7 +236,7 @@
<conf>/template/disabled-parking-request.xml</conf> <conf>/template/disabled-parking-request.xml</conf>
</confs> </confs>
</configuration> </configuration>
</plugin> </plugin>-->
</plugins> </plugins>
</build> </build>

@ -4,7 +4,6 @@ import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.ApplicationPidFileWriter;
import org.springframework.context.annotation.ImportResource; import org.springframework.context.annotation.ImportResource;
import cokr.xit.base.ServletCustomizer; import cokr.xit.base.ServletCustomizer;
@ -34,7 +33,6 @@ public class FimsApplication extends XitBaseApplication {
application.setBannerMode(Banner.Mode.OFF); application.setBannerMode(Banner.Mode.OFF);
application.setLogStartupInfo(false); application.setLogStartupInfo(false);
application.addListeners(new ApplicationPidFileWriter("fims.pid"));
application.run(args); application.run(args);
} }

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.base.user.dao.DepartmentMapper">
<!-- 부서 정보 정보 매퍼
========== 변경 이력 ==========
2023-10-06 mjkhan 최초 작성
============================ -->
<resultMap id="deptRow" type="cokr.xit.base.user.Department"> <!-- 부서 정보 -->
<result property="deptID" column="DEPT_CD" /> <!-- 부서 코드 -->
<result property="sggID" column="SGG_CD" /> <!-- 시군구 코드 -->
<result property="instCode" column="INST_CD" /> <!-- 기관 코드 -->
<result property="name" column="DEPT_NM" /> <!-- 부서 명 -->
<result property="telno" column="DEPT_TELNO" /> <!-- 부서 전화번호 -->
<result property="faxno" column="DEPT_FXNO" /> <!-- 부서 팩스번호 -->
<result property="useYN" column="USE_YN" /> <!-- 사용 여부 -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
</resultMap>
<sql id="select">SELECT DEPT_CD <!-- 부서 코드 -->
, SGG_CD <!-- 시군구 코드 -->
, INST_CD <!-- 기관 코드 -->
, DEPT_NM <!-- 부서 명 -->
, DEPT_TELNO <!-- 부서 전화번호 -->
, DEPT_FXNO <!-- 부서 팩스번호 -->
, USE_YN <!-- 사용 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
FROM TB_DEPT</sql>
<select id="selectDepartmentList" parameterType="map" resultType="dataobject">/* 부서 정보 목록 조회(departmentMapper.selectDepartmentList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
<where><if test="by != null and term != null"> AND ${by} LIKE CONCAT('%', #{term}, '%')</if>
<if test="sggID != null"> AND SGG_CD = #{sggID}</if>
<if test="instCode != null"> AND INST_CD = #{instCode}</if>
<if test="deptIDs != null"> AND DEPT_CD IN (<foreach collection="deptIDs" item="deptID" separator=",">#{deptID}</foreach>)</if>
<if test="!includeAll"> AND USE_YN = 'Y'</if>
</where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /></select>
<select id="selectDepartments" parameterType="map" resultMap="deptRow">/* 부서 정보 객체 가져오기(departmentMapper.selectDepartments) */
<include refid="select" />
WHERE SGG_CD = #{sggID}
<if test="deptIDs != null">AND DEPT_CD IN (<foreach collection="deptIDs" item="deptID" separator=",">#{deptID}</foreach>)</if>
<include refid="utility.orderBy" /></select>
<sql id="sggDepts">SELECT A.SGG_CD, SGG_NM, A.INST_CD, INST_NM, DEPT_CD, DEPT_NM
FROM TB_SGG A LEFT OUTER JOIN TB_DEPT B
ON A.SGG_CD = B.SGG_CD AND A.INST_CD = B.INST_CD
AND A.USE_YN = 'Y' AND B.USE_YN = 'Y'</sql>
<select id="selectSggDepts" resultType="dataobject"><include refid="sggDepts" />
ORDER BY A.SGG_CD, A.INST_CD, DEPT_CD</select>
<insert id="insert" parameterType="cokr.xit.base.user.Department">/* 부서 정보 등록(departmentMapper.insert) */
INSERT INTO TB_DEPT (
DEPT_CD <!-- 부서 코드 -->
, SGG_CD <!-- 시군구 코드 -->
, INST_CD <!-- 기관 코드 -->
, DEPT_NM <!-- 부서 명 -->
, DEPT_TELNO <!-- 부서 전화번호 -->
, DEPT_FXNO <!-- 부서 팩스번호 -->
, USE_YN <!-- 사용 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
) VALUES (
#{deptID} <!-- 부서 코드 -->
, #{sggID} <!-- 시군구 코드 -->
, #{instCode} <!-- 기관 코드 -->
, #{name} <!-- 부서 명 -->
, #{telno} <!-- 부서 전화번호 -->
, #{faxno} <!-- 부서 팩스번호 -->
, #{useYN} <!-- 사용 여부 -->
, #{createdAt} <!-- 등록 일시 -->
, #{createdBy} <!-- 등록자 -->
, #{lastModified} <!-- 수정 일시 -->
, #{modifiedBy} <!-- 수정자 -->
)</insert>
<update id="update" parameterType="cokr.xit.base.user.Department">/* 부서 정보 수정(departmentMapper.update) */
UPDATE TB_DEPT
SET SGG_CD = #{sggID} <!-- 시군구 코드 -->
, INST_CD = #{instCode} <!-- 기관 코드 -->
, DEPT_NM = #{name} <!-- 부서 명 -->
, DEPT_TELNO = #{telno} <!-- 부서 전화번호 -->
, DEPT_FXNO = #{faxno} <!-- 부서 팩스번호 -->
, MDFCN_DT = #{lastModified} <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE DEPT_CD = #{deptID}</update>
<update id="delete" parameterType="map">/* 부서 정보 삭제(departmentMapper.deleteDepartment) */
UPDATE TB_DEPT
SET USE_YN = 'N'
, MDFCN_DT =<include refid="utility.now" />
, MDFR = #{currentUser.id}
<where><if test="sggIDs != null"> AND SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)</if>
<if test="deptIDs != null"> AND DEPT_CD IN (<foreach collection="deptIDs" item="deptID" separator=",">#{deptID}</foreach>)</if></where></update>
</mapper>

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.base.user.dao.SigunguMapper">
<!-- 시군구 정보 매퍼
========== 변경 이력 ==========
2023-10-06 mjkhan 최초 작성
============================ -->
<resultMap id="sggRow" type="cokr.xit.base.user.Sigungu"> <!-- 시군구 -->
<result property="sggID" column="SGG_CD" /> <!-- 시군구 코드 -->
<result property="sggName" column="SGG_NM" /> <!-- 시군구 이름 -->
<result property="instCode" column="INST_CD" /> <!-- 기관 코드 -->
<result property="instType" column="INST_SE_CD" /> <!-- 기관 구분 -->
<result property="instName" column="INST_NM" /> <!-- 기관 명 -->
<result property="instAddress" column="INST_ADDR" /> <!-- 기관 주소 -->
<result property="instDetailAddress" column="INST_DADDR" /> <!-- 기관 상세주소 -->
<result property="instZipCode" column="INST_ZIP" /> <!-- 기관 우편번호 -->
<result property="officialSealFilepath" column="OFFCS_FILE_PATH" /> <!-- 직인 파일 경로 -->
<result property="officialSealFilename" column="OFFCS_FILE_NM" /> <!-- 직인 파일 명 -->
<result property="useYN" column="USE_YN" /> <!-- 사용 여부 -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
</resultMap>
<sql id="select">SELECT SGG_CD <!-- 시군구 코드 -->
, SGG_NM <!-- 시군구 이름 -->
, INST_CD <!-- 기관 코드 -->
, INST_SE_CD <!-- 기관 구분 -->
, INST_NM <!-- 기관 명 -->
, INST_ADDR <!-- 기관 주소 -->
, INST_DADDR <!-- 기관 상세주소 -->
, INST_ZIP <!-- 기관 우편번호 -->
, OFFCS_FILE_PATH <!-- 직인 파일 경로 -->
, OFFCS_FILE_NM <!-- 직인 파일 명 -->
, USE_YN <!-- 사용 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
FROM TB_SGG</sql>
<select id="selectSigunguList" parameterType="map" resultType="dataobject">/* 시군구 목록 조회(sigunguMapper.selectSigunguList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
<where><if test="by != null and term != null"> AND ${by} LIKE CONCAT('%', #{term}, '%')</if>
<if test="sggIDs != null"> AND SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)</if>
<if test="instCodes != null"> AND INST_CD IN (<foreach collection="instCodes" item="instCode" separator=",">#{instCode}</foreach>)</if>
<if test="!includeAll">AND USE_YN = 'Y'</if></where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /></select>
<select id="selectSigungus" parameterType="map" resultMap="sggRow">/* 시군구 객체 가져오기(sigunguMapper.selectSigungus) */
<include refid="select" />
<where><if test="by != null and term != null"> AND ${by} LIKE CONCAT('%', #{term}, '%')</if>
<if test="sggIDs != null">AND SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)</if>
<if test="instCodes != null">AND INST_CD IN (<foreach collection="instCodes" item="instCode" separator=",">#{instCode}</foreach>)</if>
<if test="!includeAll"> AND USE_YN = 'Y'</if></where>
</select>
<insert id="insert" parameterType="cokr.xit.base.user.Sigungu">/* 시군구 등록(sigunguMapper.insert) */
INSERT INTO TB_SGG (
SGG_CD <!-- 시군구 코드 -->
, SGG_NM <!-- 시군구 이름 -->
, INST_CD <!-- 기관 코드 -->
, INST_SE_CD <!-- 기관 구분 -->
, INST_NM <!-- 기관 명 -->
, INST_ADDR <!-- 기관 주소 -->
, INST_DADDR <!-- 기관 상세주소 -->
, INST_ZIP <!-- 기관 우편번호 -->
, OFFCS_FILE_PATH <!-- 직인 파일 경로 -->
, OFFCS_FILE_NM <!-- 직인 파일 명 -->
, USE_YN <!-- 사용 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
) VALUES (
#{sggID} <!-- 시군구 코드 -->
, #{sggName} <!-- 시군구 이름 -->
, #{instCode} <!-- 기관 코드 -->
, #{instType} <!-- 기관 구분 -->
, #{instName} <!-- 기관 명 -->
, #{instAddress} <!-- 기관 주소 -->
, #{instDetailAddress} <!-- 기관 상세주소 -->
, #{instZipCode} <!-- 기관 우편번호 -->
, #{officialSealFilepath} <!-- 직인 파일 경로 -->
, #{officialSealFilename} <!-- 직인 파일 명 -->
, #{useYN} <!-- 사용 여부 -->
, #{createdAt} <!-- 등록 일시 -->
, #{createdBy} <!-- 등록자 -->
, #{lastModified} <!-- 수정 일시 -->
, #{modifiedBy} <!-- 수정자 -->
)</insert>
<update id="update" parameterType="cokr.xit.base.user.Sigungu">/* 시군구 수정(sigunguMapper.update) */
UPDATE TB_SGG
SET INST_CD = #{instCode} <!-- 기관 코드 -->
, INST_SE_CD = #{instType} <!-- 기관 구분 -->
, SGG_NM = #{sggName} <!-- 시군구 이름 -->
, INST_NM = #{instName} <!-- 기관 명 -->
, INST_ADDR = #{instAddress} <!-- 기관 주소 -->
, INST_DADDR = #{instDetailAddress} <!-- 기관 상세주소 -->
, INST_ZIP = #{instZipCode} <!-- 기관 우편번호 -->
, OFFCS_FILE_PATH = #{officialSealFilepath} <!-- 직인 파일 경로 -->
, OFFCS_FILE_NM = #{officialSealFilename} <!-- 직인 파일 명 -->
, USE_YN = #{useYN} <!-- 사용 여부 -->
, MDFCN_DT = #{lastModified} <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE SGG_CD = #{sggID}</update>
<update id="delete" parameterType="map">/* 시군구 삭제(sigunguMapper.delete) */
UPDATE TB_SGG
SET USE_YN = 'N'
, MDFCN_DT =<include refid="utility.now" />
, MDFR = #{currentUser.id}
WHERE SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)</update>
</mapper>

@ -54,8 +54,14 @@
<form id="formAuthentication" method="post"> <form id="formAuthentication" method="post">
<div class="input_wrap"> <div class="input_wrap">
<div class="input-group"> <div class="input-group">
<select id="institute" name="institute" class="form-select mb-2 h-px-40 no-max-w"> <select id="institute" name="institute" required title="기관명" class="form-select mb-2 h-px-40 no-max-w">
<option value="default">기본</option> <option value="">[기관 선택]</option>
<option value="default">시스템관리</option>
<c:forEach items="${instList}" var="item">
<option value="${item.INST_CD}"
<c:if test="${item.USER_USE_YN == 'N'}"> disabled </c:if>
>${item.INST_NM}</option>
</c:forEach>
</select> </select>
</div> </div>
<div class="input-group"> <div class="input-group">
@ -66,6 +72,10 @@
<input type="password" id="password" <input type="password" id="password"
required title="비밀번호 입력" class="typePassword required form-control inp-long" placeholder="비밀번호" autocomplete="false" /> required title="비밀번호 입력" class="typePassword required form-control inp-long" placeholder="비밀번호" autocomplete="false" />
<span class="input-group-text cursor-pointer"><i class="bx bxs-lock"></i></span> <span class="input-group-text cursor-pointer"><i class="bx bxs-lock"></i></span>
</div>
<div class="mt-3 form-chcek">
<input id="remember" type="checkbox" class="form-check-input">
<label class="form-check-label">로그인 정보 유지</label>
</div> </div>
<div class="input_wrap2"> <div class="input_wrap2">
<!-- <!--
@ -88,24 +98,26 @@
<template id="selectInstDialogTemplate"> <template id="selectInstDialogTemplate">
<select class="form-select form-control-sm" id="selectInst"> <select class="form-select form-control-sm" id="selectInst">
<option value="">선택</option> <option value="">선택</option>
<c:forEach items="${instList}" var="item">
<option value="${item.INST_CD}">${item.INST_NM}</option>
</c:forEach>
</select> </select>
</template> </template>
<jsp:include page="/WEB-INF/jsp/include/tail.jsp" /> <jsp:include page="/WEB-INF/jsp/include/tail.jsp" />
<script type="text/javascript"> <script type="text/javascript">
var INST_LIST = [];
${functions} ${functions}
function login() { function login() {
if (!$("#formAuthentication input").validInputs()) return; if (!$("#formAuthentication input,select").validInputs()) return;
var params = { var params = {
account:$("#userId").val(), account:$("#userId").val(),
password:$("#password").val(), password:$("#password").val(),
institute:$("#institute").val() institute:$("#institute").val(),
<%--, rememberCredentials:true--%> rememberCredentials: $("#remember").prop("checked")
}; };
json.post({ json.post({
@ -154,11 +166,6 @@ function fnOpenSignup(){
content : document.getElementById("selectInstDialogTemplate").innerHTML, content : document.getElementById("selectInstDialogTemplate").innerHTML,
size : "sm", size : "sm",
init : () => { init : () => {
var options = "";
for(var i=0; i < INST_LIST.length; i++){
options += "<option value='"+INST_LIST[i].INST_CD+"'>"+INST_LIST[i].INST_NM+"</option>";
}
$("#selectInst").append(options);
}, },
onOK : () => { onOK : () => {
if($("#selectInst").val() == ""){ if($("#selectInst").val() == ""){
@ -205,24 +212,35 @@ function fn_FindPw(){
$(function(){ $(function(){
$("#formAuthentication input").onEnterPress(login); $("#formAuthentication input").onEnterPress(login);
if ($("#userId").val())
$("#password").focus();
ajax.get({ let sysInst = "<%= systemInst %>";
url : wctx.url("/instList.do"), let cookieInst = "${cookie['userInstitute'].getValue()}";
data : { }, let cookieUserId = "${cookie['userAccount'].getValue()}";
success : (resp) => { let hasCookie = (cookieInst != "" && cookieUserId != "");
INST_LIST = resp.instList; let selectValue = "";
let isSelectable = false;
var options = "";
for(var i=0; i < INST_LIST.length; i++){ if(hasCookie){
options += "<option value='"+INST_LIST[i].INST_CD+"'>"+INST_LIST[i].INST_NM+"</option>"; selectValue = cookieInst;
isSelectable = $("#institute option[value='"+selectValue+"']").not("[disabled]").length;
if(isSelectable){
$("#institute").val(cookieInst);
$("#userId").val(cookieUserId);
$("#remember").prop("checked", true);
$("#password").focus();
return;
}
} }
$("#institute").append(options);
$("#institute").val(<%= systemInst %>); selectValue = sysInst;
isSelectable = $("#institute option[value='"+selectValue+"']").not("[disabled]").length;
if(isSelectable){
$("#institute").val(selectValue);
$("#userId").focus();
} else {
$("#institute").focus();
} }
});
}); });
</script> </script>

Loading…
Cancel
Save