견문목록 엑셀 다운로드 추가.

master
강석 최 2023-09-11 16:28:07 +09:00
parent 4c814eee65
commit cac3df5e84
16 changed files with 178 additions and 60 deletions

View File

@ -47,6 +47,8 @@ public class BaseModel {
private Integer refDocKey; private Integer refDocKey;
@Transient @Transient
private String modalType; private String modalType;
@Transient
private String excel;
public void setQueryInfo(){ public void setQueryInfo(){
setFirstIndex((getPageIndex()-1)*getRowCnt()); setFirstIndex((getPageIndex()-1)*getRowCnt());

View File

@ -63,9 +63,7 @@ public class CellPhone extends BaseModel{
@Transient @Transient
private String sosok; private String sosok;
@Transient
private String excel;
@Override @Override
public String toString() { public String toString() {

View File

@ -27,9 +27,6 @@ public class UseInfo extends UseInfoBase {
@Column(name = "is_deleted") @Column(name = "is_deleted")
private String isDeleted; private String isDeleted;
@Transient
private String excel;
@Transient @Transient
private String sosok; private String sosok;
@Transient @Transient

View File

@ -84,9 +84,6 @@ public class PartInfo extends BaseModel implements Serializable{
@Transient @Transient
private String piManagerName; private String piManagerName;
@Transient
private String excel;
@Transient @Transient
private List<PartInfoFile> fileList; private List<PartInfoFile> fileList;

View File

@ -63,8 +63,6 @@ public class PartWork extends BaseModel implements Serializable{
@Transient @Transient
private List<MultipartFile> multipartFileList; private List<MultipartFile> multipartFileList;
@Transient
private String excel;
@Transient @Transient
private String terminalNm; private String terminalNm;
@Transient @Transient

View File

@ -74,9 +74,7 @@ public class ShipInfo extends BaseModel implements Serializable{
private LocalDateTime wrtDt; private LocalDateTime wrtDt;
@Column(name = "status") @Column(name = "status")
private String status; private String status;
@Transient
private String excel;
@Transient @Transient
private String weightStr; private String weightStr;
@ -89,7 +87,7 @@ public String toString() {
+ ownerNm + ", shipNm=" + shipNm + ", operationCnt=" + operationCnt + ", shipWeight=" + shipWeight + ownerNm + ", shipNm=" + shipNm + ", operationCnt=" + operationCnt + ", shipWeight=" + shipWeight
+ ", passengerCnt=" + passengerCnt + ", freightCnt=" + freightCnt + ", description=" + description + ", passengerCnt=" + passengerCnt + ", freightCnt=" + freightCnt + ", description=" + description
+ ", wrtOrgan=" + wrtOrgan + ", wrtPart=" + wrtPart + ", wrtUserSeq=" + wrtUserSeq + ", wrtTitle=" + ", wrtOrgan=" + wrtOrgan + ", wrtPart=" + wrtPart + ", wrtUserSeq=" + wrtUserSeq + ", wrtTitle="
+ wrtTitle + ", wrtNm=" + wrtNm + ", wrtDt=" + wrtDt + ", excel=" + excel + "]"; + wrtTitle + ", wrtNm=" + wrtNm + ", wrtDt=" + wrtDt + "]";
} }

View File

@ -8,16 +8,21 @@ import com.dbnt.faisp.main.fpiMgt.affair.service.AffairService;
import com.dbnt.faisp.main.organMgt.service.OrganConfigService; import com.dbnt.faisp.main.organMgt.service.OrganConfigService;
import com.dbnt.faisp.main.publicBoard.model.PublicBoard; import com.dbnt.faisp.main.publicBoard.model.PublicBoard;
import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.util.ParamMap;
import com.dbnt.faisp.util.Utils; import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.parameters.P;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
@RestController @RestController
@ -29,8 +34,8 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
private final OrganConfigService organConfigService; private final OrganConfigService organConfigService;
@GetMapping("/affairMgt/{tab}") @GetMapping("/affairMgt/{tab}")
public ModelAndView affairMgtPage(@AuthenticationPrincipal UserInfo loginUser, public ModelAndView affairMgtPage(@AuthenticationPrincipal UserInfo loginUser, @PathVariable("tab") String tab,
@PathVariable("tab") String tab, AffairBoard affairBoard){ HttpSession session, HttpServletResponse response, AffairBoard affairBoard){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgt"); ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgt");
if(Utils.isEmpty(affairBoard.getAffairCategory())){ if(Utils.isEmpty(affairBoard.getAffairCategory())){
return new ModelAndView("redirect:/"); return new ModelAndView("redirect:/");
@ -110,17 +115,41 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
break; break;
} }
mav.addObject("page", tab); if(affairBoard.getExcel() != null && affairBoard.getExcel().equals("Y")){
mav.addObject("searchUrl", "/affair/affairMgt/"+tab); Map<String, List<CodeMgt>> codeMap = (Map<String, List<CodeMgt>>) session.getAttribute("commonCode");
mav.addObject("accessAuth", accessAuth); String[] headers = {"doc_no", "affair_type1", "affair_type2", "affair_type3", "affair_type4", "title", "wrt_organ", "wrt_part", "wrt_user_grd", "wrt_user_nm", "report_dt", "affair_status", "affair_rate", "organ_up"};
mav.addObject("apprvAuth", apprvAuth); String[] headerNames = {"문서번호", "분야1", "분야2", "분야3", "분야4", "제목", "관서", "부서", "직급", "작성자", "보고일자", "상태", "평가", "상보"};
mav.addObject("userOrgan", loginUser.getOgCd()); String[] columnType = {"String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String"};
affairBoard.setQueryInfo(); String sheetName;
mav.addObject("affairList", affairService.selectAffairBoardList(affairBoard)); switch (tab){
affairBoard.setContentCnt(affairService.selectAffairBoardListCnt(affairBoard)); case "myReport": sheetName = "내 작성 목록"; break;
affairBoard.setPaginationInfo(); case "stayReport": sheetName = "결재대기목록"; break;
mav.addObject("searchParams", affairBoard); case "commitReport": sheetName = "결재처리목록"; break;
return mav; case "openReport": sheetName = "공개 보고서"; break;
case "allReport": sheetName = "전체(관리자)"; break;
default: sheetName="";
}
String excelFileName = "견문보고서 목록";
List<ParamMap> affairList= affairService.selectAffairListToExcel(affairBoard, codeMap);
try {
Utils.listToExcel(affairList, response, headers, headerNames, columnType, sheetName, excelFileName);
} catch (IOException e) {
}
return null;
}else{
mav.addObject("page", tab);
mav.addObject("searchUrl", "/affair/affairMgt/"+tab);
mav.addObject("accessAuth", accessAuth);
mav.addObject("apprvAuth", apprvAuth);
mav.addObject("userOrgan", loginUser.getOgCd());
affairBoard.setQueryInfo();
mav.addObject("affairList", affairService.selectAffairBoardList(affairBoard));
affairBoard.setContentCnt(affairService.selectAffairBoardListCnt(affairBoard));
affairBoard.setPaginationInfo();
mav.addObject("searchParams", affairBoard);
return mav;
}
} }
@GetMapping("/affairEditModal") @GetMapping("/affairEditModal")

View File

@ -3,6 +3,7 @@ package com.dbnt.faisp.main.fpiMgt.affair.mapper;
import com.dbnt.faisp.main.fpiMgt.affair.model.AffairBoard; import com.dbnt.faisp.main.fpiMgt.affair.model.AffairBoard;
import com.dbnt.faisp.main.fpiMgt.affair.model.DashboardAffair; import com.dbnt.faisp.main.fpiMgt.affair.model.DashboardAffair;
import com.dbnt.faisp.util.ParamMap;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
@ -24,4 +25,6 @@ public interface AffairMapper {
List<DashboardAffair> selectDashboardIntelligenceNetworkList(DashboardAffair affair); List<DashboardAffair> selectDashboardIntelligenceNetworkList(DashboardAffair affair);
List<DashboardAffair> selectApprvStayList(DashboardAffair affair); List<DashboardAffair> selectApprvStayList(DashboardAffair affair);
List<ParamMap> selectAffairListToExcel(AffairBoard affairBoard);
} }

View File

@ -14,6 +14,7 @@ import com.dbnt.faisp.main.organMgt.service.OrganConfigService;
import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.main.userInfo.repository.UserInfoRepository; import com.dbnt.faisp.main.userInfo.repository.UserInfoRepository;
import com.dbnt.faisp.main.userInfo.service.UserAlarmService; import com.dbnt.faisp.main.userInfo.service.UserAlarmService;
import com.dbnt.faisp.util.ParamMap;
import com.dbnt.faisp.util.Utils; import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -39,12 +40,36 @@ public class AffairService extends BaseService { // 견문보고
private final HashTagLinkRepository hashTagLinkRepository; private final HashTagLinkRepository hashTagLinkRepository;
private final AffairMapper affairMapper; private final AffairMapper affairMapper;
public List<DashboardAffair> selectDashboardAffairList(DashboardAffair affair){ public List<ParamMap> selectAffairListToExcel(AffairBoard affairBoard, Map<String, List<CodeMgt>> codeMap) {
return affairMapper.selectDashboardAffairList(affair); List<CodeMgt> affairType1Code = codeMap.get("DC01");
} List<CodeMgt> affairType2Code = codeMap.get("DC02");
List<CodeMgt> affairType3Code = codeMap.get("DC03");
public List<DashboardAffair> selectDashboardIntelligenceNetworkList(DashboardAffair affair) { List<CodeMgt> affairType4Code = codeMap.get("DC04");
return affairMapper.selectDashboardIntelligenceNetworkList(affair); List<CodeMgt> organCode = codeMap.get("OG");
List<CodeMgt> titleCode = codeMap.get("JT");
List<CodeMgt> statusCode = codeMap.get("DST");
List<CodeMgt> ratingCode = codeMap.get("AAR");
List<ParamMap> affairList = affairMapper.selectAffairListToExcel(affairBoard);
for(ParamMap affair: affairList){
affair.set("affair_type1", Utils.searchCodeValue((String) affair.get("affair_type1"), affairType1Code));
affair.set("affair_type2", Utils.searchCodeValue((String) affair.get("affair_type2"), affairType2Code));
affair.set("affair_type3", Utils.searchCodeValue((String) affair.get("affair_type3"), affairType3Code));
affair.set("affair_type4", Utils.searchCodeValue((String) affair.get("affair_type4"), affairType4Code));
if(affair.get("organ_up") != null){
affair.set("organ_up", affair.get("wrt_organ").equals(affair.get("rating_organ"))?"X":"O");
}
List<CodeMgt> partCode = codeMap.get(affair.get("wrt_organ"));
affair.set("wrt_organ", Utils.searchCodeValue((String) affair.get("wrt_organ"), organCode));
affair.set("wrt_part", Utils.searchCodeValue((String) affair.get("wrt_part"), partCode));
affair.set("wrt_user_grd", Utils.searchCodeValue((String) affair.get("wrt_user_grd"), titleCode));
affair.set("affair_status", Utils.searchCodeValue((String) affair.get("affair_status"), statusCode));
if(affair.get("affair_rate") == null){
affair.set("affair_rate", affair.get("beforerating"));
}else{
affair.set("affair_rate", Utils.searchCodeValue((String) affair.get("affair_rate"), ratingCode));
}
}
return affairList;
} }
public List<AffairBoard> selectAffairBoardList(AffairBoard affair){ public List<AffairBoard> selectAffairBoardList(AffairBoard affair){

View File

@ -44,18 +44,18 @@ public class TranslatorController {
//엑셀다운 //엑셀다운
if(translator.getExcel() != null && translator.getExcel().equals("Y")){ if(translator.getExcel() != null && translator.getExcel().equals("Y")){
String[] headers = { "translator_key", "ogdp1", "tr_lang", "tr_career", "tr_name", "tr_age", "tr_nny", "tr_edu", "tr_cft", "dml_yn", "apt_dt", "tr_phone"}; String[] headers = { "translator_key", "ogdp1", "tr_lang", "tr_career", "tr_name", "tr_age", "tr_nny", "tr_edu", "tr_cft", "dml_yn", "apt_dt", "tr_phone"};
String[] headerNames = { "연번", "관서명", "언어", "경력", "성명", "나이", "국적", "학력", "자격증", "해촉", "위촉일", "연락처" }; String[] headerNames = { "연번", "관서명", "언어", "경력", "성명", "나이", "국적", "학력", "자격증", "해촉", "위촉일", "연락처" };
String[] columnType = { "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String"}; String[] columnType = { "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String"};
String sheetName = "민간 통역인 현황"; String sheetName = "민간 통역인 현황";
String excelFileName = "민간 통역인 현황"; String excelFileName = "민간 통역인 현황";
List<ParamMap> translatorInfoList= translatorSevice.selectTranslatorListEx(translator); List<ParamMap> translatorInfoList= translatorSevice.selectTranslatorListEx(translator);
try { try {
Utils.listToExcel(translatorInfoList, response, headers, headerNames, columnType, sheetName, excelFileName); Utils.listToExcel(translatorInfoList, response, headers, headerNames, columnType, sheetName, excelFileName);
} catch (IOException e) { } catch (IOException e) {
} }
return null; return null;
} }
//메뉴권한 확인 //메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/translator/info").get(0).getAccessAuth(); String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/translator/info").get(0).getAccessAuth();

View File

@ -98,9 +98,6 @@ public class Translator extends BaseModel implements Serializable{
@Transient @Transient
private String infoShareFileState; private String infoShareFileState;
@Transient
private String excel;
@Transient @Transient
private List<MultipartFile> multipartFileList; private List<MultipartFile> multipartFileList;

View File

@ -123,8 +123,6 @@ public class UserInfo extends BaseModel implements UserDetails{
@Transient @Transient
private String organNm; private String organNm;
@Transient @Transient
private String excel;
@Transient
private String rownum; private String rownum;
@Transient @Transient
private Integer crc001Sum; private Integer crc001Sum;

View File

@ -132,7 +132,7 @@
group by affair_key group by affair_key
) d on a.affair_key = d.affair_key ) d on a.affair_key = d.affair_key
<include refid="selectAffairBoardWhere"></include> <include refid="selectAffairBoardWhere"></include>
order by a.report_dt desc order by a.report_dt desc, a.affair_key desc
limit #{rowCnt} offset #{firstIndex} limit #{rowCnt} offset #{firstIndex}
</select> </select>
<select id="selectAffairBoardCnt" resultType="int" parameterType="AffairBoard"> <select id="selectAffairBoardCnt" resultType="int" parameterType="AffairBoard">
@ -142,6 +142,42 @@
on a.affair_key = c.affair_key on a.affair_key = c.affair_key
<include refid="selectAffairBoardWhere"></include> <include refid="selectAffairBoardWhere"></include>
</select> </select>
<select id="selectAffairListToExcel" resultType="com.dbnt.faisp.util.ParamMap" parameterType="AffairBoard">
select a.affair_key,
a.affair_type1,
a.affair_type2,
a.affair_type3,
a.affair_type4,
a.title,
a.wrt_organ,
a.wrt_part,
a.wrt_user_grd,
a.wrt_user_nm,
a.wrt_user_seq,
a.wrt_dt,
to_char(a.report_dt, 'YYYY-MM-DD') as report_dt,
a.doc_no,
c.rating_organ,
c.affair_status,
c.affair_rate,
c.organ_up,
d.beforeRating
from affair_board a
inner join affair_rating c
on a.affair_key = c.affair_key
left outer join (
select affair_key,
STRING_AGG(CAST(og.item_value||' : '||ar.item_value AS VARCHAR), ', ') as beforeRating
from affair_rating aa
inner join code_mgt og on aa.rating_organ = og.item_cd
inner join code_mgt ar on aa.affair_rate = ar.item_cd
group by affair_key
) d on a.affair_key = d.affair_key
<include refid="selectAffairBoardWhere"></include>
order by a.report_dt desc, a.affair_key desc
</select>
<select id="selectHashTags" resultType="string" parameterType="int"> <select id="selectHashTags" resultType="string" parameterType="int">
select array_to_string(array_agg(b.tag_nm), ' ') as hashTags select array_to_string(array_agg(b.tag_nm), ' ') as hashTags
from hash_tag_link a from hash_tag_link a
@ -538,4 +574,5 @@
order by wrt_dt desc order by wrt_dt desc
limit 9 limit 9
</select> </select>
</mapper> </mapper>

View File

@ -263,7 +263,7 @@
tr_cft, tr_cft,
h.item_value as tr_visa, h.item_value as tr_visa,
dml_yn, dml_yn,
apt_dt, to_char(apt_dt, 'YYYY-MM-DD') as apt_dt,
tr_phone tr_phone
from translator_info a from translator_info a
inner join (select translator_key, max(version_no) as lastVer inner join (select translator_key, max(version_no) as lastVer

View File

@ -18,6 +18,29 @@ $(document).on('click', '.reportTypeTab', function (){
location.href = "/affair/affairMgt/"+$(this).attr("data-reporttype")+"?affairCategory="+$("#affairCategory").val(); location.href = "/affair/affairMgt/"+$(this).attr("data-reporttype")+"?affairCategory="+$("#affairCategory").val();
}) })
$(document).on('click', '#downloadExcelBtn', function (){
/*contentFade("in");
const formData = new FormData($("#affairSearchForm")[0]);
$.ajax({
type : 'POST',
data : formData,
url : "/affair/excelDown/"+$("#pageTab").val(),
processData: false,
contentType: false,
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(result) {
contentFade("out");
},
error : function(xhr, status) {
contentFade("out");
}
})*/
$("#excel").val("Y")
$("#affairSearchForm").submit();
})
$(document).on('click', '.affairTr', function (event){ $(document).on('click', '.affairTr', function (event){
const target = event.target; const target = event.target;
if(!(target.className === "chkBoxTd" if(!(target.className === "chkBoxTd"

View File

@ -41,16 +41,27 @@
</li> </li>
</ul> </ul>
<div class="tab-content bg-white border border-top-0 p-2"> <div class="tab-content bg-white border border-top-0 p-2">
<form method="get" th:action="${searchUrl}"> <input type="hidden" id="pageTab" th:value="${page}">
<form method="get" id="affairSearchForm" th:action="${searchUrl}">
<input type="hidden" name="excel" id="excel">
<input type="hidden" name="affairCategory" id="affairCategory" th:value="${searchParams.affairCategory}"> <input type="hidden" name="affairCategory" id="affairCategory" th:value="${searchParams.affairCategory}">
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}"> <input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between py-1"> <div class="row justify-content-between py-1">
<div class="col-auto"> <div class="col-auto position-relative">
<select class="form-select form-select-sm" name="rowCnt" id="rowCnt"> <div class="row">
<th:block th:each="num : ${#numbers.sequence(1,5)}"> <div class="col-auto">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option> <select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
</th:block> <th:block th:each="num : ${#numbers.sequence(1,5)}">
</select> <option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block>
</select>
</div>
</div>
<div class="row position-absolute bottom-0">
<div class="col-auto">
<input type="button" class="btn btn-sm btn-success" id="downloadExcelBtn" value="엑셀 다운로드">
</div>
</div>
</div> </div>
<div class="col-8"> <div class="col-8">
<div class="row"> <div class="row">
@ -202,8 +213,13 @@
</td> </td>
<th:block th:if="${page ne 'stayReport'}"> <th:block th:if="${page ne 'stayReport'}">
<td> <td>
<th:block th:each="code:${session.commonCode.get('AAR')}"> <th:block th:if="${affair.affairRate ne null}">
<th:block th:if="${code.itemCd eq affair.affairRate}" th:text="${code.itemValue}"></th:block> <th:block th:each="code:${session.commonCode.get('AAR')}">
<th:block th:if="${code.itemCd eq affair.affairRate}" th:text="${code.itemValue}"></th:block>
</th:block>
</th:block>
<th:block th:if="${affair.affairRate eq null}">
<th:block th:text="${affair.beforeRating}"></th:block>
</th:block> </th:block>
</td> </td>
<td th:text="${affair.organUp eq 'T'?'O':(affair.wrtOrgan ne affair.ratingOrgan?'O':'X')}"></td> <td th:text="${affair.organUp eq 'T'?'O':(affair.wrtOrgan ne affair.ratingOrgan?'O':'X')}"></td>