Compare commits
4 Commits
b652e9f9cc
...
feature/co
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0b75f6d83 | ||
|
|
d797aae068 | ||
|
|
e546b17ff5 | ||
|
|
baf73eb534 |
@@ -46,6 +46,10 @@ extends EgovComAbstractDAO {
|
|||||||
return (Integer)this.select("dmsHdbDAO.selectDmsHdbListTotCnt_S", (Object)searchVO);
|
return (Integer)this.select("dmsHdbDAO.selectDmsHdbListTotCnt_S", (Object)searchVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List selectDmsHdbStat(DmsHdbDefaultVO searchVO) throws Exception {
|
||||||
|
return this.list("dmsHdbDAO.selectDmsHdbStat_D", (Object)searchVO);
|
||||||
|
}
|
||||||
|
|
||||||
public List selectDmsHdbReplyList(DmsHdbDefaultVO searchVO) {
|
public List selectDmsHdbReplyList(DmsHdbDefaultVO searchVO) {
|
||||||
return this.list("dmsHdbDAO.selectDmsHdbReplyList_D", (Object)searchVO);
|
return this.list("dmsHdbDAO.selectDmsHdbReplyList_D", (Object)searchVO);
|
||||||
}
|
}
|
||||||
@@ -70,8 +74,10 @@ extends EgovComAbstractDAO {
|
|||||||
return (List<DmsHdbGraphVO>) this.list("dmsHdbDAO.selectDmsHdbPerYearChart", (Object)searchVO);
|
return (List<DmsHdbGraphVO>) this.list("dmsHdbDAO.selectDmsHdbPerYearChart", (Object)searchVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DmsHdbGraphVO selectDmsHdbForMonthChart(DmsHdbDefaultVO searchVO) {
|
/*
|
||||||
return (DmsHdbGraphVO)this.select("dmsHdbDAO.selectDmsHdbForMonthChart", (Object)searchVO);
|
* public DmsHdbGraphVO selectDmsHdbForMonthChart(DmsHdbDefaultVO searchVO) {
|
||||||
}
|
* return (DmsHdbGraphVO)this.select("dmsHdbDAO.selectDmsHdbForMonthChart",
|
||||||
|
* (Object)searchVO); }
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ public interface DmsHdbService {
|
|||||||
|
|
||||||
public int selectDmsHdbListTotCnt(DmsHdbDefaultVO var1);
|
public int selectDmsHdbListTotCnt(DmsHdbDefaultVO var1);
|
||||||
|
|
||||||
|
public List selectDmsHdbStat(DmsHdbDefaultVO var1) throws Exception;
|
||||||
|
|
||||||
public String checkFileWhiteList(MultipartHttpServletRequest var1, String var2, String var3) throws Exception;
|
public String checkFileWhiteList(MultipartHttpServletRequest var1, String var2, String var3) throws Exception;
|
||||||
|
|
||||||
public List selectDmsHdbReplyList(DmsHdbDefaultVO var1);
|
public List selectDmsHdbReplyList(DmsHdbDefaultVO var1);
|
||||||
@@ -46,6 +48,6 @@ public interface DmsHdbService {
|
|||||||
|
|
||||||
public List<DmsHdbGraphVO> selectDmsHdbPerYearChart(DmsHdbDefaultVO var1);
|
public List<DmsHdbGraphVO> selectDmsHdbPerYearChart(DmsHdbDefaultVO var1);
|
||||||
|
|
||||||
public DmsHdbGraphVO selectDmsHdbForMonthChart(DmsHdbDefaultVO var1);
|
/* public DmsHdbGraphVO selectDmsHdbForMonthChart(DmsHdbDefaultVO var1); */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,10 @@ import egovframework.dms.prj.vo.DmsPrjDefaultVO;
|
|||||||
import egovframework.edosi.egov.helper.UserDetailsHelper;
|
import egovframework.edosi.egov.helper.UserDetailsHelper;
|
||||||
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
|
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
|
||||||
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||||
|
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -128,13 +131,33 @@ public class DmsHdbServiceImpl implements DmsHdbService {
|
|||||||
return resultVO;
|
return resultVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List selectDmsHdbList(DmsHdbDefaultVO searchVO) throws Exception {
|
@SuppressWarnings("unchecked")
|
||||||
return this.dmsHdbDAO.selectDmsHdbList(searchVO);
|
public List<EgovMap> selectDmsHdbList(DmsHdbDefaultVO searchVO) throws Exception {
|
||||||
|
|
||||||
|
List<EgovMap> list = this.dmsHdbDAO.selectDmsHdbList(searchVO);
|
||||||
|
|
||||||
|
for (EgovMap map : list) {
|
||||||
|
Object createDateObj = map.get("createDate");
|
||||||
|
|
||||||
|
if (createDateObj != null) {
|
||||||
|
// ISO 문자열: 2025-11-11T11:44:43
|
||||||
|
String createDateStr = createDateObj.toString();
|
||||||
|
|
||||||
|
// T → 공백 치환
|
||||||
|
map.put("createDate", createDateStr.replace('T', ' '));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int selectDmsHdbListTotCnt(DmsHdbDefaultVO searchVO) {
|
public int selectDmsHdbListTotCnt(DmsHdbDefaultVO searchVO) {
|
||||||
return this.dmsHdbDAO.selectDmsHdbListTotCnt(searchVO);
|
return this.dmsHdbDAO.selectDmsHdbListTotCnt(searchVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List selectDmsHdbStat(DmsHdbDefaultVO searchVO) throws Exception {
|
||||||
|
return this.dmsHdbDAO.selectDmsHdbStat(searchVO);
|
||||||
|
}
|
||||||
|
|
||||||
public String addMultiFiles(MultipartHttpServletRequest multiRequest, String targetNm) throws Exception {
|
public String addMultiFiles(MultipartHttpServletRequest multiRequest, String targetNm) throws Exception {
|
||||||
multiRequest.setCharacterEncoding("utf-8");
|
multiRequest.setCharacterEncoding("utf-8");
|
||||||
@@ -301,7 +324,8 @@ public class DmsHdbServiceImpl implements DmsHdbService {
|
|||||||
return this.dmsHdbDAO.selectDmsHdbPerYearChart(searchVO);
|
return this.dmsHdbDAO.selectDmsHdbPerYearChart(searchVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DmsHdbGraphVO selectDmsHdbForMonthChart(DmsHdbDefaultVO searchVO) {
|
/*
|
||||||
return this.dmsHdbDAO.selectDmsHdbForMonthChart(searchVO);
|
* public DmsHdbGraphVO selectDmsHdbForMonthChart(DmsHdbDefaultVO searchVO) {
|
||||||
}
|
* return this.dmsHdbDAO.selectDmsHdbForMonthChart(searchVO); }
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ import egovframework.edosi.egov.helper.UserDetailsHelper;
|
|||||||
import egovframework.edosi.filter.XssFilter;
|
import egovframework.edosi.filter.XssFilter;
|
||||||
import egovframework.edosi.resource.EdosiResource;
|
import egovframework.edosi.resource.EdosiResource;
|
||||||
import egovframework.rte.fdl.property.EgovPropertyService;
|
import egovframework.rte.fdl.property.EgovPropertyService;
|
||||||
|
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||||
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@@ -86,9 +87,6 @@ public class DmsHdbController {
|
|||||||
String prjSeq = request.getParameter("prjSeq");
|
String prjSeq = request.getParameter("prjSeq");
|
||||||
Map<String, Object> prjInfo = (Map<String, Object>) request.getSession().getAttribute("prjInfo");
|
Map<String, Object> prjInfo = (Map<String, Object>) request.getSession().getAttribute("prjInfo");
|
||||||
String prjNm = prjInfo == null ? null : (String) prjInfo.get("prjNm");
|
String prjNm = prjInfo == null ? null : (String) prjInfo.get("prjNm");
|
||||||
String hdbStsA = prjInfo == null ? null : (String) prjInfo.get("hdbStsA");
|
|
||||||
String hdbStsB = prjInfo == null ? null : (String) prjInfo.get("hdbStsB");
|
|
||||||
String hdbStsC = prjInfo == null ? null : (String) prjInfo.get("hdbStsC");
|
|
||||||
|
|
||||||
if (moveDetail != null || prjSeq != null) {
|
if (moveDetail != null || prjSeq != null) {
|
||||||
request.getSession().setAttribute("prjSeq", (Object)prjSeq);
|
request.getSession().setAttribute("prjSeq", (Object)prjSeq);
|
||||||
@@ -114,9 +112,6 @@ public class DmsHdbController {
|
|||||||
model.addAttribute("ROLE_CUS", (Object)UserDetailsHelper.isRole((String)"ROLE_CUS"));
|
model.addAttribute("ROLE_CUS", (Object)UserDetailsHelper.isRole((String)"ROLE_CUS"));
|
||||||
model.addAttribute("ROLE_EMP", (Object)UserDetailsHelper.isRole((String)"ROLE_EMP"));
|
model.addAttribute("ROLE_EMP", (Object)UserDetailsHelper.isRole((String)"ROLE_EMP"));
|
||||||
model.addAttribute("prjNm", prjNm);
|
model.addAttribute("prjNm", prjNm);
|
||||||
model.addAttribute("hdbStsA", hdbStsA);
|
|
||||||
model.addAttribute("hdbStsB", hdbStsB);
|
|
||||||
model.addAttribute("hdbStsC", hdbStsC);
|
|
||||||
this.initModelData(model, bmode);
|
this.initModelData(model, bmode);
|
||||||
return viewName;
|
return viewName;
|
||||||
}
|
}
|
||||||
@@ -159,6 +154,12 @@ public class DmsHdbController {
|
|||||||
if (totCnt > 0) {
|
if (totCnt > 0) {
|
||||||
List dmsHdbList = this.dmsHdbService.selectDmsHdbList(searchVO);
|
List dmsHdbList = this.dmsHdbService.selectDmsHdbList(searchVO);
|
||||||
model.addAttribute("resultList", (Object)dmsHdbList);
|
model.addAttribute("resultList", (Object)dmsHdbList);
|
||||||
|
List dmsHdbStatList = this.dmsHdbService.selectDmsHdbStat(searchVO);
|
||||||
|
EgovMap dmsHdbStat = null;
|
||||||
|
if (dmsHdbStatList != null && !dmsHdbStatList.isEmpty()) {
|
||||||
|
dmsHdbStat = (EgovMap) dmsHdbStatList.get(0);
|
||||||
|
}
|
||||||
|
model.addAttribute("dmsHdbStat", (Object)dmsHdbStat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
@@ -170,8 +171,11 @@ public class DmsHdbController {
|
|||||||
List<DmsHdbGraphVO> annualList = dmsHdbService.selectDmsHdbPerYearChart(searchVO);
|
List<DmsHdbGraphVO> annualList = dmsHdbService.selectDmsHdbPerYearChart(searchVO);
|
||||||
model.addAttribute("annualList", annualList);
|
model.addAttribute("annualList", annualList);
|
||||||
|
|
||||||
DmsHdbGraphVO monthlyList = dmsHdbService.selectDmsHdbForMonthChart(searchVO);
|
/*
|
||||||
model.addAttribute("monthlyList", monthlyList);
|
* DmsHdbGraphVO monthlyList =
|
||||||
|
* dmsHdbService.selectDmsHdbForMonthChart(searchVO);
|
||||||
|
* model.addAttribute("monthlyList", monthlyList);
|
||||||
|
*/
|
||||||
// model.addAttribute("year", year);
|
// model.addAttribute("year", year);
|
||||||
|
|
||||||
return "dms/dmsHdb/DmsHdbList";
|
return "dms/dmsHdb/DmsHdbList";
|
||||||
|
|||||||
@@ -51,9 +51,6 @@ public class TemplateController {
|
|||||||
HashMap<String, String> prjInfo = new HashMap<String, String>();
|
HashMap<String, String> prjInfo = new HashMap<String, String>();
|
||||||
prjInfo.put("prjSeq", prjSeq);
|
prjInfo.put("prjSeq", prjSeq);
|
||||||
prjInfo.put("prjNm", dmsPrjVO.getPrjNm());
|
prjInfo.put("prjNm", dmsPrjVO.getPrjNm());
|
||||||
prjInfo.put("hdbStsA", request.getParameter("hdbStsA"));
|
|
||||||
prjInfo.put("hdbStsB", request.getParameter("hdbStsB"));
|
|
||||||
prjInfo.put("hdbStsC", request.getParameter("hdbStsC"));
|
|
||||||
request.getSession().setAttribute("prjInfo", prjInfo);
|
request.getSession().setAttribute("prjInfo", prjInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,6 +171,77 @@
|
|||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="dmsHdbDAO.selectDmsHdbStat_D" parameterClass="dmsHdbSerarchVO" resultClass="egovMap">
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
COUNT(CASE
|
||||||
|
WHEN B.HDB_STS = 'A'
|
||||||
|
AND B.CREATE_DATE >= DATE_SUB(NOW(), INTERVAL 30 DAY)
|
||||||
|
AND B.REC_STS = 'A'
|
||||||
|
AND (B.TITLE != '' OR B.CONTENTS != '')
|
||||||
|
THEN 1
|
||||||
|
END) AS hdbStsA
|
||||||
|
|
||||||
|
, COUNT(CASE
|
||||||
|
WHEN B.HDB_STS = 'B'
|
||||||
|
AND B.CREATE_DATE >= DATE_SUB(NOW(), INTERVAL 30 DAY)
|
||||||
|
AND B.REC_STS = 'A'
|
||||||
|
AND (B.TITLE != '' OR B.CONTENTS != '')
|
||||||
|
THEN 1
|
||||||
|
END) AS hdbStsB
|
||||||
|
|
||||||
|
, COUNT(CASE
|
||||||
|
WHEN B.HDB_STS = 'C'
|
||||||
|
AND B.CREATE_DATE >= DATE_SUB(NOW(), INTERVAL 30 DAY)
|
||||||
|
AND B.REC_STS = 'A'
|
||||||
|
AND (B.TITLE != '' OR B.CONTENTS != '')
|
||||||
|
THEN 1
|
||||||
|
END) AS hdbStsC
|
||||||
|
|
||||||
|
, COUNT(CASE
|
||||||
|
WHEN B.HDB_STS = 'A'
|
||||||
|
AND YEAR(B.CREATE_DATE) = YEAR(NOW())
|
||||||
|
AND B.REC_STS = 'A'
|
||||||
|
AND (B.TITLE != '' OR B.CONTENTS != '')
|
||||||
|
THEN 1
|
||||||
|
END) AS hdbStsYrA
|
||||||
|
|
||||||
|
, COUNT(CASE
|
||||||
|
WHEN B.HDB_STS = 'B'
|
||||||
|
AND YEAR(B.CREATE_DATE) = YEAR(NOW())
|
||||||
|
AND B.REC_STS = 'A'
|
||||||
|
AND (B.TITLE != '' OR B.CONTENTS != '')
|
||||||
|
THEN 1
|
||||||
|
END) AS hdbStsYrB
|
||||||
|
|
||||||
|
, COUNT(CASE
|
||||||
|
WHEN B.HDB_STS = 'C'
|
||||||
|
AND YEAR(B.CREATE_DATE) = YEAR(NOW())
|
||||||
|
AND B.REC_STS = 'A'
|
||||||
|
AND (B.TITLE != '' OR B.CONTENTS != '')
|
||||||
|
THEN 1
|
||||||
|
END) AS hdbStsYrC
|
||||||
|
|
||||||
|
FROM
|
||||||
|
DMS_HDB B
|
||||||
|
WHERE 1=1
|
||||||
|
AND B.REC_STS = 'A'
|
||||||
|
AND (B.TITLE != '' OR B.CONTENTS != '')
|
||||||
|
|
||||||
|
<isNotEmpty property="prjSeq" prepend="AND">
|
||||||
|
B.PRJ_SEQ = #prjSeq#
|
||||||
|
</isNotEmpty>
|
||||||
|
|
||||||
|
<isNotEmpty property="searchKeyword">
|
||||||
|
<isEqual property="searchCondition" compareValue="1" prepend="AND">
|
||||||
|
B.TITLE LIKE CONCAT('%', #searchKeyword#, '%')
|
||||||
|
</isEqual>
|
||||||
|
<isEqual property="searchCondition" compareValue="2" prepend="AND">
|
||||||
|
B.WRITER_NM LIKE CONCAT('%', #searchKeyword#, '%')
|
||||||
|
</isEqual>
|
||||||
|
</isNotEmpty>
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="dmsHdbDAO.selectDmsHdbListTotCnt_S" parameterClass="dmsHdbSerarchVO" resultClass="int">
|
<select id="dmsHdbDAO.selectDmsHdbListTotCnt_S" parameterClass="dmsHdbSerarchVO" resultClass="int">
|
||||||
SELECT
|
SELECT
|
||||||
COUNT(*) totcnt
|
COUNT(*) totcnt
|
||||||
@@ -306,7 +377,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 현재 기준 한달간 현황 donut chart -->
|
<!-- 현재 기준 한달간 현황 donut chart -->
|
||||||
<select id="dmsHdbDAO.selectDmsHdbForMonthChart" parameterClass="dmsHdbSerarchVO" resultClass="egovframework.dms.hdb.vo.DmsHdbGraphVO">
|
<!-- <select id="dmsHdbDAO.selectDmsHdbForMonthChart" parameterClass="dmsHdbSerarchVO" resultClass="egovframework.dms.hdb.vo.DmsHdbGraphVO">
|
||||||
SELECT
|
SELECT
|
||||||
COUNT(CASE WHEN HDB_STS = 'A' THEN 1 END) AS hdbStsA,
|
COUNT(CASE WHEN HDB_STS = 'A' THEN 1 END) AS hdbStsA,
|
||||||
COUNT(CASE WHEN HDB_STS = 'B' THEN 1 END) AS hdbStsB,
|
COUNT(CASE WHEN HDB_STS = 'B' THEN 1 END) AS hdbStsB,
|
||||||
@@ -316,5 +387,5 @@
|
|||||||
AND D.PRJ_SEQ = #prjSeq#
|
AND D.PRJ_SEQ = #prjSeq#
|
||||||
AND (D.TITLE != '' OR D.CONTENTS != '')
|
AND (D.TITLE != '' OR D.CONTENTS != '')
|
||||||
<![CDATA[ AND D.CREATE_DATE >= DATE_SUB(NOW(), INTERVAL 30 DAY) ]]>
|
<![CDATA[ AND D.CREATE_DATE >= DATE_SUB(NOW(), INTERVAL 30 DAY) ]]>
|
||||||
</select>
|
</select> -->
|
||||||
</sqlMap>
|
</sqlMap>
|
||||||
@@ -128,9 +128,9 @@
|
|||||||
B.DEPT_CD,
|
B.DEPT_CD,
|
||||||
B.POSITION_NM,
|
B.POSITION_NM,
|
||||||
C.PRJ_NM,
|
C.PRJ_NM,
|
||||||
COUNT(CASE WHEN D.HDB_STS = 'A' AND YEAR(D.CREATE_DATE) = YEAR(NOW()) AND D.REC_STS = 'A' AND (D.TITLE != '' OR D.CONTENTS != '') THEN 1 END) AS hdbStsA,
|
COUNT(CASE WHEN D.HDB_STS = 'A' AND D.CREATE_DATE >= DATE_SUB(NOW(), INTERVAL 30 DAY) AND D.REC_STS = 'A' AND (D.TITLE != '' OR D.CONTENTS != '') THEN 1 END) AS hdbStsA,
|
||||||
COUNT(CASE WHEN D.HDB_STS = 'B' AND YEAR(D.CREATE_DATE) = YEAR(NOW()) AND D.REC_STS = 'A' AND (D.TITLE != '' OR D.CONTENTS != '') THEN 1 END) AS hdbStsB,
|
COUNT(CASE WHEN D.HDB_STS = 'B' AND D.CREATE_DATE >= DATE_SUB(NOW(), INTERVAL 30 DAY) AND D.REC_STS = 'A' AND (D.TITLE != '' OR D.CONTENTS != '') THEN 1 END) AS hdbStsB,
|
||||||
COUNT(CASE WHEN D.HDB_STS = 'C' AND YEAR(D.CREATE_DATE) = YEAR(NOW()) AND D.REC_STS = 'A' AND (D.TITLE != '' OR D.CONTENTS != '') THEN 1 END) AS hdbStsC
|
COUNT(CASE WHEN D.HDB_STS = 'C' AND D.CREATE_DATE >= DATE_SUB(NOW(), INTERVAL 30 DAY) AND D.REC_STS = 'A' AND (D.TITLE != '' OR D.CONTENTS != '') THEN 1 END) AS hdbStsC
|
||||||
FROM DMS_PRJ_AUTH_USER A
|
FROM DMS_PRJ_AUTH_USER A
|
||||||
JOIN HMS_USER B
|
JOIN HMS_USER B
|
||||||
ON A.USER_ID = B.USER_ID
|
ON A.USER_ID = B.USER_ID
|
||||||
|
|||||||
@@ -24,15 +24,17 @@
|
|||||||
<script src="/js/common/charts-plugin-datalabels.js"></script>
|
<script src="/js/common/charts-plugin-datalabels.js"></script>
|
||||||
|
|
||||||
<c:set var="now" value="<%= new java.util.Date() %>" />
|
<c:set var="now" value="<%= new java.util.Date() %>" />
|
||||||
|
<fmt:formatDate value="${now}" pattern="yyyy" var="curYear" />
|
||||||
<div class="location_box">
|
<div class="location_box">
|
||||||
<div class="loc_h3"><h3>${prjNm} <%=MainGlobals.MENU_HDB%>
|
<div class="loc_h3"><h3>${prjNm} <%=MainGlobals.MENU_HDB%>
|
||||||
(
|
(
|
||||||
<span class="year-text">
|
<span class="year-text">
|
||||||
<fmt:formatDate value="${now}" pattern="yyyy" /> 년 -
|
<%-- ${curYear} 년 --%>
|
||||||
|
한달간 처리 현황
|
||||||
</span>
|
</span>
|
||||||
<span class="sts-a">접수: ${hdbStsA}</span>,
|
<span class="sts-a">접수: ${dmsHdbStat.hdbStsA}</span>,
|
||||||
<span class="sts-b">처리중: ${hdbStsB}</span>,
|
<span class="sts-b">처리중: ${dmsHdbStat.hdbStsB}</span>,
|
||||||
<span class="sts-c">완료: ${hdbStsC}</span> )
|
<span class="sts-c">완료: ${dmsHdbStat.hdbStsC}</span> )
|
||||||
</h3><span></span></div>
|
</h3><span></span></div>
|
||||||
<span class="loccation"><img src="/images/admin/loccation_home.png" alt="홈" /> > <strong><%=MainGlobals.MENU_HDB%></strong></span>
|
<span class="loccation"><img src="/images/admin/loccation_home.png" alt="홈" /> > <strong><%=MainGlobals.MENU_HDB%></strong></span>
|
||||||
</div>
|
</div>
|
||||||
@@ -116,8 +118,7 @@
|
|||||||
</c:if>
|
</c:if>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<fmt:parseDate value="${list.createDate}" pattern="yyyy-MM-dd'T'HH:mm:ss" var="parsedCreateDate"/>
|
${list.createDate}
|
||||||
<fmt:formatDate value="${parsedCreateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
|
|
||||||
</td>
|
</td>
|
||||||
<td>${list.rdCnt }</td>
|
<td>${list.rdCnt }</td>
|
||||||
<%-- <td>${list.compScdDate}</td> --%>
|
<%-- <td>${list.compScdDate}</td> --%>
|
||||||
@@ -161,19 +162,33 @@
|
|||||||
sbData.append("]");
|
sbData.append("]");
|
||||||
|
|
||||||
// 한달 현황 (도넛)
|
// 한달 현황 (도넛)
|
||||||
DmsHdbGraphVO monthlyList = (DmsHdbGraphVO) request.getAttribute("monthlyList");
|
/* DmsHdbGraphVO monthlyList = (DmsHdbGraphVO) request.getAttribute("monthlyList");
|
||||||
|
|
||||||
int cntA = monthlyList.getHdbStsA(); // 접수
|
int cntA = monthlyList.getHdbStsA(); // 접수
|
||||||
int cntB = monthlyList.getHdbStsB(); // 처리중
|
int cntB = monthlyList.getHdbStsB(); // 처리중
|
||||||
int cntC = monthlyList.getHdbStsC(); // 완료
|
int cntC = monthlyList.getHdbStsC(); // 완료 */
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<div class="chart-container">
|
<div class="chart-container">
|
||||||
<!-- 막대 그래프 -->
|
<div class="chart-wrapper">
|
||||||
<div class="chart-box" style="flex:2;">
|
<div class="chart-title">
|
||||||
<canvas id="yearChart"></canvas>
|
<div class="chart-main-title">
|
||||||
</div>
|
${curYear}년 요청 통계
|
||||||
|
</div>
|
||||||
|
<div class="chart-sub-title"><strong>Total [ </strong>
|
||||||
|
<span class="sts-a">접수 ${dmsHdbStat.hdbStsYrA}건</span>
|
||||||
|
<span class="sep">/</span>
|
||||||
|
<span class="sts-b">처리중 ${dmsHdbStat.hdbStsYrB}건</span>
|
||||||
|
<span class="sep">/</span>
|
||||||
|
<span class="sts-c">완료 ${dmsHdbStat.hdbStsYrC}건</span>
|
||||||
|
<strong> ]</strong>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 막대 그래프 -->
|
||||||
|
<div class="chart-box" style="flex:2;">
|
||||||
|
<canvas id="yearChart"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!-- 도넛 그래프 -->
|
<!-- 도넛 그래프 -->
|
||||||
<div class="chart-box" style="flex:1; position:relative;">
|
<div class="chart-box" style="flex:1; position:relative;">
|
||||||
<canvas id="monthChart"></canvas>
|
<canvas id="monthChart"></canvas>
|
||||||
@@ -197,6 +212,11 @@ Chart.register(ChartDataLabels);
|
|||||||
const annualLabels = <%= sbLabels.toString() %>;
|
const annualLabels = <%= sbLabels.toString() %>;
|
||||||
const annualData = <%= sbData.toString() %>;
|
const annualData = <%= sbData.toString() %>;
|
||||||
|
|
||||||
|
const YEAR = '${curYear}';
|
||||||
|
const hdbStsA = Number('${dmsHdbStat.hdbStsA != null ? hdbStsA : 0}');
|
||||||
|
const hdbStsB = Number('${dmsHdbStat.hdbStsB != null ? hdbStsB : 0}');
|
||||||
|
const hdbStsC = Number('${dmsHdbStat.hdbStsC != null ? hdbStsC : 0}');
|
||||||
|
|
||||||
new Chart(
|
new Chart(
|
||||||
document.getElementById('yearChart'),
|
document.getElementById('yearChart'),
|
||||||
{
|
{
|
||||||
@@ -217,8 +237,8 @@ new Chart(
|
|||||||
|
|
||||||
plugins: {
|
plugins: {
|
||||||
title: {
|
title: {
|
||||||
display: true,
|
display: false,
|
||||||
text: '2025년 월별 요청 통계',
|
//text: YEAR + `년 요청 통계 (접수 ${hdbStsA}건 / 처리중 ${hdbStsB}건 / 완료 ${hdbStsC}건)`,
|
||||||
font: { size: 20, weight: 'bold' },
|
font: { size: 20, weight: 'bold' },
|
||||||
padding: { top: 10, bottom: 20 }
|
padding: { top: 10, bottom: 20 }
|
||||||
},
|
},
|
||||||
@@ -269,9 +289,9 @@ new Chart(
|
|||||||
/****************************************
|
/****************************************
|
||||||
* 2) 한달 현황 도넛 차트
|
* 2) 한달 현황 도넛 차트
|
||||||
****************************************/
|
****************************************/
|
||||||
const cntA = <%= cntA %>; // 접수
|
const cntA = ${dmsHdbStat.hdbStsA}; // 접수
|
||||||
const cntB = <%= cntB %>; // 처리중
|
const cntB = ${dmsHdbStat.hdbStsB}; // 처리중
|
||||||
const cntC = <%= cntC %>; // 완료
|
const cntC = ${dmsHdbStat.hdbStsC}; // 완료
|
||||||
|
|
||||||
const monthChartCanvas = document.getElementById('monthChart');
|
const monthChartCanvas = document.getElementById('monthChart');
|
||||||
const noDataMsg = document.getElementById('noDataMsg');
|
const noDataMsg = document.getElementById('noDataMsg');
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
<script type="text/javascript" src="${pageContext.request.contextPath}/dwr/interface/DwrCommonService.js"></script>
|
<script type="text/javascript" src="${pageContext.request.contextPath}/dwr/interface/DwrCommonService.js"></script>
|
||||||
<script type="text/javascript" src="${pageContext.request.contextPath}/js/common/jquery/jquery.js"></script>
|
<script type="text/javascript" src="${pageContext.request.contextPath}/js/common/jquery/jquery.js"></script>
|
||||||
<script type="text/javascript" src="${pageContext.request.contextPath}/js/common/common.js"></script>
|
<script type="text/javascript" src="${pageContext.request.contextPath}/js/common/common.js"></script>
|
||||||
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/cms/all.css?ver=20251125_1">
|
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/cms/all.css?ver=20260108_1">
|
||||||
<style>
|
<style>
|
||||||
.main_wrap_body{ background:url(${pageContext.request.contextPath}/images/admin/login_bg.gif) repeat left top; font-family:"맑은 고딕",Malgun Gothic,AppleGothic,sans-serif,"돋움", Dotum; }
|
.main_wrap_body{ background:url(${pageContext.request.contextPath}/images/admin/login_bg.gif) repeat left top; font-family:"맑은 고딕",Malgun Gothic,AppleGothic,sans-serif,"돋움", Dotum; }
|
||||||
.main_wrap{display:block; height:100%; left:0; position:fixed; top:0; width:100%; z-index:10000;}
|
.main_wrap{display:block; height:100%; left:0; position:fixed; top:0; width:100%; z-index:10000;}
|
||||||
@@ -46,9 +46,9 @@
|
|||||||
.main_box .bottom_box .bottom_logo{width:20%; float: left; margin-left: 10px;}
|
.main_box .bottom_box .bottom_logo{width:20%; float: left; margin-left: 10px;}
|
||||||
/* .main_box .bottom_box .bottom_txt{width:70%; float: left;} */
|
/* .main_box .bottom_box .bottom_txt{width:70%; float: left;} */
|
||||||
|
|
||||||
.sts-a { color: red; font-size: 12px;}
|
.sts-a { color: rgb(75,192,192); font-size: 12px;}
|
||||||
.sts-b { color: green; font-size: 12px; }
|
.sts-b { color: rgb(255,99,132); font-size: 12px; }
|
||||||
.sts-c { color: blue; font-size: 12px; }
|
.sts-c { color: rgb(54,162,235); font-size: 12px; }
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body class="main_wrap_body">
|
<body class="main_wrap_body">
|
||||||
@@ -67,7 +67,8 @@
|
|||||||
<div class="cent_menu">
|
<div class="cent_menu">
|
||||||
<p class="prj_txt">● 프로젝트 현황</p>
|
<p class="prj_txt">● 프로젝트 현황</p>
|
||||||
<c:set var="now" value="<%= new java.util.Date() %>" />
|
<c:set var="now" value="<%= new java.util.Date() %>" />
|
||||||
<span class="year-info">※괄호 안 현황 정보는 <fmt:formatDate value="${now}" pattern="yyyy" />년도 기준입니다.</span>
|
<%-- <span class="year-info">※괄호 안 현황 정보는 <fmt:formatDate value="${now}" pattern="yyyy" />년도 기준입니다.</span> --%>
|
||||||
|
<span class="year-info">※괄호 안 현황 정보는 지난 한달 간 데이터 집계입니다.</span>
|
||||||
<div class="txt_field">
|
<div class="txt_field">
|
||||||
<c:if test="${empty sessionPrjList }">
|
<c:if test="${empty sessionPrjList }">
|
||||||
<p class="txt_list">담당하신 프로젝트가 없습니다. 관리자에게 문의해주세요.<p>
|
<p class="txt_list">담당하신 프로젝트가 없습니다. 관리자에게 문의해주세요.<p>
|
||||||
@@ -75,7 +76,7 @@
|
|||||||
<c:if test="${!empty sessionPrjList }">
|
<c:if test="${!empty sessionPrjList }">
|
||||||
<c:forEach items="${sessionPrjList }" var="list">
|
<c:forEach items="${sessionPrjList }" var="list">
|
||||||
<p class="txt_list">
|
<p class="txt_list">
|
||||||
<a href='/dms/contents/dms/hdb/01/hdb.01.001.motion?prjSeq=${list.prjSeq }&moveDetail=Y&hdbStsA=${list.hdbStsA}&hdbStsB=${list.hdbStsB}&hdbStsC=${list.hdbStsC}'>
|
<a href='/dms/contents/dms/hdb/01/hdb.01.001.motion?prjSeq=${list.prjSeq }&moveDetail=Y'>
|
||||||
- ${list.prjNm }
|
- ${list.prjNm }
|
||||||
(<span class="sts-a">접수: ${list.hdbStsA}</span>,
|
(<span class="sts-a">접수: ${list.hdbStsA}</span>,
|
||||||
<span class="sts-b">처리중: ${list.hdbStsB}</span>,
|
<span class="sts-b">처리중: ${list.hdbStsB}</span>,
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ if(UserHelper.isAuthenticated()) {
|
|||||||
<script type="text/javascript" src="${pageContext.request.contextPath}/dwr/interface/DwrCommonService.js"></script>
|
<script type="text/javascript" src="${pageContext.request.contextPath}/dwr/interface/DwrCommonService.js"></script>
|
||||||
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/mobile/common.css">
|
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/mobile/common.css">
|
||||||
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/mobile/layout.css">
|
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/mobile/layout.css">
|
||||||
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/mobile/contents.css">
|
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/mobile/contents.css?ver=20260106">
|
||||||
<script type="text/javascript" src="${pageContext.request.contextPath}/js/mobile/jquery-1.7.1.min.js"></script><!--전체메뉴-->
|
<script type="text/javascript" src="${pageContext.request.contextPath}/js/mobile/jquery-1.7.1.min.js"></script><!--전체메뉴-->
|
||||||
<script type="text/javascript" src="${pageContext.request.contextPath}/js/mobile/jquery.easing.1.3.js" ></script><!--전체메뉴-->
|
<script type="text/javascript" src="${pageContext.request.contextPath}/js/mobile/jquery.easing.1.3.js" ></script><!--전체메뉴-->
|
||||||
<script type="text/javascript" src="${pageContext.request.contextPath}/js/mobile/mobTnav.js" ></script><!--전체메뉴-->
|
<script type="text/javascript" src="${pageContext.request.contextPath}/js/mobile/mobTnav.js" ></script><!--전체메뉴-->
|
||||||
|
|||||||
@@ -5,6 +5,6 @@
|
|||||||
@import url(font.css);
|
@import url(font.css);
|
||||||
@import url(main.css);
|
@import url(main.css);
|
||||||
@import url(layout.css);
|
@import url(layout.css);
|
||||||
@import url(contents.css?ver=20251125);
|
@import url(contents.css);
|
||||||
@import url(login.css);
|
@import url(login.css);
|
||||||
@import url(form.css);
|
@import url(form.css);
|
||||||
@@ -414,23 +414,23 @@ a.btn_search_gray:HOVER {background-color:#4c4c4c; border:1px solid #2f2f2f;}
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*요청처리현황*/
|
/*요청처리현황*/
|
||||||
.sts-a { color: green !important; font-size: 12px; }
|
.sts-a { color: rgb(75,192,192) !important; font-size: 12px; }
|
||||||
.sts-b { color: red !important; font-size: 12px; }
|
.sts-b { color: rgb(255,99,132) !important; font-size: 12px; }
|
||||||
.sts-c { color: blue !important; font-size: 12px; }
|
.sts-c { color: rgb(54,162,235) !important; font-size: 12px; }
|
||||||
|
|
||||||
.year-text {
|
.year-text {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.year-info-wrap {
|
.year-info-wrap {
|
||||||
text-align: right; /* 오른쪽 정렬 */
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.year-info {
|
.year-info {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: red; /* 빨간 글씨 */
|
color: red;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: 370px;
|
left: 300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*차트*/
|
/*차트*/
|
||||||
@@ -444,9 +444,47 @@ a.btn_search_gray:HOVER {background-color:#4c4c4c; border:1px solid #2f2f2f;}
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chart-wrapper {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 900px; /* 차트 너비와 동일하게 */
|
||||||
|
margin: 0 auto; /* 중앙 정렬 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-title {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-main-title {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 6px; /* 줄바꿈 간격 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-sub-title {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 상태별 색상 */
|
||||||
|
.chart-sub-title .sts-a {
|
||||||
|
color: rgb(75,192,192); /* 접수 - 초록 */
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-sub-title .sts-b {
|
||||||
|
color: rgb(255,99,132); /* 처리중 - 빨강 */
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-sub-title .sts-c {
|
||||||
|
color: rgb(54,162,235); /* 완료 - 파랑 */
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-sub-title .sep {
|
||||||
|
margin: 0 6px;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user