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

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;
@Transient
private String modalType;
@Transient
private String excel;
public void setQueryInfo(){
setFirstIndex((getPageIndex()-1)*getRowCnt());

View File

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

View File

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

View File

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

View File

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

View File

@ -74,9 +74,7 @@ public class ShipInfo extends BaseModel implements Serializable{
private LocalDateTime wrtDt;
@Column(name = "status")
private String status;
@Transient
private String excel;
@Transient
private String weightStr;
@ -89,7 +87,7 @@ public String toString() {
+ ownerNm + ", shipNm=" + shipNm + ", operationCnt=" + operationCnt + ", shipWeight=" + shipWeight
+ ", passengerCnt=" + passengerCnt + ", freightCnt=" + freightCnt + ", description=" + description
+ ", 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.publicBoard.model.PublicBoard;
import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.util.ParamMap;
import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.parameters.P;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@RestController
@ -29,8 +34,8 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
private final OrganConfigService organConfigService;
@GetMapping("/affairMgt/{tab}")
public ModelAndView affairMgtPage(@AuthenticationPrincipal UserInfo loginUser,
@PathVariable("tab") String tab, AffairBoard affairBoard){
public ModelAndView affairMgtPage(@AuthenticationPrincipal UserInfo loginUser, @PathVariable("tab") String tab,
HttpSession session, HttpServletResponse response, AffairBoard affairBoard){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgt");
if(Utils.isEmpty(affairBoard.getAffairCategory())){
return new ModelAndView("redirect:/");
@ -110,17 +115,41 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
break;
}
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;
if(affairBoard.getExcel() != null && affairBoard.getExcel().equals("Y")){
Map<String, List<CodeMgt>> codeMap = (Map<String, List<CodeMgt>>) session.getAttribute("commonCode");
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"};
String[] headerNames = {"문서번호", "분야1", "분야2", "분야3", "분야4", "제목", "관서", "부서", "직급", "작성자", "보고일자", "상태", "평가", "상보"};
String[] columnType = {"String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String"};
String sheetName;
switch (tab){
case "myReport": sheetName = "내 작성 목록"; break;
case "stayReport": sheetName = "결재대기목록"; break;
case "commitReport": sheetName = "결재처리목록"; break;
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")

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.DashboardAffair;
import com.dbnt.faisp.util.ParamMap;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -24,4 +25,6 @@ public interface AffairMapper {
List<DashboardAffair> selectDashboardIntelligenceNetworkList(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.repository.UserInfoRepository;
import com.dbnt.faisp.main.userInfo.service.UserAlarmService;
import com.dbnt.faisp.util.ParamMap;
import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@ -39,12 +40,36 @@ public class AffairService extends BaseService { // 견문보고
private final HashTagLinkRepository hashTagLinkRepository;
private final AffairMapper affairMapper;
public List<DashboardAffair> selectDashboardAffairList(DashboardAffair affair){
return affairMapper.selectDashboardAffairList(affair);
}
public List<DashboardAffair> selectDashboardIntelligenceNetworkList(DashboardAffair affair) {
return affairMapper.selectDashboardIntelligenceNetworkList(affair);
public List<ParamMap> selectAffairListToExcel(AffairBoard affairBoard, Map<String, List<CodeMgt>> codeMap) {
List<CodeMgt> affairType1Code = codeMap.get("DC01");
List<CodeMgt> affairType2Code = codeMap.get("DC02");
List<CodeMgt> affairType3Code = codeMap.get("DC03");
List<CodeMgt> affairType4Code = codeMap.get("DC04");
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){

View File

@ -44,18 +44,18 @@ public class TranslatorController {
//엑셀다운
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[] headerNames = { "연번", "관서명", "언어", "경력", "성명", "나이", "국적", "학력", "자격증", "해촉", "위촉일", "연락처" };
String[] columnType = { "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String"};
String sheetName = "민간 통역인 현황";
String excelFileName = "민간 통역인 현황";
List<ParamMap> translatorInfoList= translatorSevice.selectTranslatorListEx(translator);
String[] headerNames = { "연번", "관서명", "언어", "경력", "성명", "나이", "국적", "학력", "자격증", "해촉", "위촉일", "연락처" };
String[] columnType = { "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String", "String"};
String sheetName = "민간 통역인 현황";
String excelFileName = "민간 통역인 현황";
List<ParamMap> translatorInfoList= translatorSevice.selectTranslatorListEx(translator);
try {
Utils.listToExcel(translatorInfoList, response, headers, headerNames, columnType, sheetName, excelFileName);
} catch (IOException e) {
try {
Utils.listToExcel(translatorInfoList, response, headers, headerNames, columnType, sheetName, excelFileName);
} catch (IOException e) {
}
return null;
}
return null;
}
//메뉴권한 확인
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
private String infoShareFileState;
@Transient
private String excel;
@Transient
private List<MultipartFile> multipartFileList;

View File

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

View File

@ -132,7 +132,7 @@
group by affair_key
) d on a.affair_key = d.affair_key
<include refid="selectAffairBoardWhere"></include>
order by a.report_dt desc
order by a.report_dt desc, a.affair_key desc
limit #{rowCnt} offset #{firstIndex}
</select>
<select id="selectAffairBoardCnt" resultType="int" parameterType="AffairBoard">
@ -142,6 +142,42 @@
on a.affair_key = c.affair_key
<include refid="selectAffairBoardWhere"></include>
</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 array_to_string(array_agg(b.tag_nm), ' ') as hashTags
from hash_tag_link a
@ -538,4 +574,5 @@
order by wrt_dt desc
limit 9
</select>
</mapper>

View File

@ -263,7 +263,7 @@
tr_cft,
h.item_value as tr_visa,
dml_yn,
apt_dt,
to_char(apt_dt, 'YYYY-MM-DD') as apt_dt,
tr_phone
from translator_info a
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();
})
$(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){
const target = event.target;
if(!(target.className === "chkBoxTd"

View File

@ -41,16 +41,27 @@
</li>
</ul>
<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="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
<div class="row justify-content-between py-1">
<div class="col-auto">
<select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}">
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
</th:block>
</select>
<div class="col-auto position-relative">
<div class="row">
<div class="col-auto">
<select class="form-select form-select-sm" name="rowCnt" id="rowCnt">
<th:block th:each="num : ${#numbers.sequence(1,5)}">
<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 class="col-8">
<div class="row">
@ -202,8 +213,13 @@
</td>
<th:block th:if="${page ne 'stayReport'}">
<td>
<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:if="${affair.affairRate ne null}">
<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>
</td>
<td th:text="${affair.organUp eq 'T'?'O':(affair.wrtOrgan ne affair.ratingOrgan?'O':'X')}"></td>