fix:외사장비현황 중간저장
parent
a827129d1b
commit
bdffee9f96
|
|
@ -1,12 +1,10 @@
|
|||
package com.dbnt.faisp.equip;
|
||||
|
||||
|
||||
import com.dbnt.faisp.authMgt.service.AuthMgtService;
|
||||
import com.dbnt.faisp.equip.model.Equip;
|
||||
import com.dbnt.faisp.equip.model.EquipLog;
|
||||
import com.dbnt.faisp.equip.service.EquipService;
|
||||
import com.dbnt.faisp.organMgt.service.OrganConfigService;
|
||||
import com.dbnt.faisp.translator.model.Translator;
|
||||
import com.dbnt.faisp.translator.model.TranslatorCrr;
|
||||
import com.dbnt.faisp.translator.service.TranslatorService;
|
||||
import com.dbnt.faisp.userInfo.model.UserInfo;
|
||||
import com.dbnt.faisp.util.ParamMap;
|
||||
import com.dbnt.faisp.util.Utils;
|
||||
|
|
@ -19,13 +17,12 @@ import java.io.FileInputStream;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
|
@ -36,17 +33,17 @@ import org.springframework.web.servlet.ModelAndView;
|
|||
@RequestMapping("/equip")
|
||||
public class EquipController {
|
||||
|
||||
private final AuthMgtService authMgtService;
|
||||
private final TranslatorService translatorSevice;
|
||||
private final OrganConfigService organConfigService;
|
||||
private final EquipService equipService;
|
||||
|
||||
private final AuthMgtService authMgtService;
|
||||
|
||||
@GetMapping("/equipStatus")
|
||||
public ModelAndView equipStatus(Equip equip) {
|
||||
public ModelAndView equipStatus(@AuthenticationPrincipal UserInfo loginUser, Equip equip) {
|
||||
ModelAndView mav = new ModelAndView("equip/equipStatus");
|
||||
mav.addObject("equipList", equipService.selectEquipStatus(equip));
|
||||
|
||||
//메뉴권한 확인
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/equipStatus").get(0).getAccessAuth();
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
mav.addObject("equipList", equipService.selectEquipStatus(equip));
|
||||
return mav;
|
||||
}
|
||||
|
||||
|
|
@ -60,7 +57,6 @@ public class EquipController {
|
|||
|
||||
@GetMapping("/equipTypeSelecBox")
|
||||
public ModelAndView equipTypeSelecBox(String equType) {
|
||||
System.out.println("@@"+equType);
|
||||
ModelAndView mav = new ModelAndView("equip/equipTypeSelecBox");
|
||||
mav.addObject("equType", equType);
|
||||
return mav;
|
||||
|
|
@ -78,6 +74,10 @@ public class EquipController {
|
|||
@GetMapping("/List")
|
||||
public ModelAndView equipList(@AuthenticationPrincipal UserInfo loginUser,Equip equip) {
|
||||
ModelAndView mav = new ModelAndView("equip/equipList");
|
||||
|
||||
//메뉴권한 확인
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/equipStatus").get(0).getAccessAuth();
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
equip.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||
ParamMap equType = equipService.selectEduType(equip);
|
||||
mav.addObject("equType", equType.get("equ_type"));
|
||||
|
|
@ -92,8 +92,12 @@ public class EquipController {
|
|||
}
|
||||
|
||||
@GetMapping("/updatePage")
|
||||
public ModelAndView equipUpdatePage(Equip equip) {
|
||||
public ModelAndView equipUpdatePage(@AuthenticationPrincipal UserInfo loginUser, Equip equip) {
|
||||
ModelAndView mav = new ModelAndView("equip/equipModifyModal");
|
||||
//메뉴권한 확인
|
||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/equipStatus").get(0).getAccessAuth();
|
||||
mav.addObject("accessAuth", accessAuth);
|
||||
mav.addObject("userId", loginUser.getUserId());
|
||||
mav.addObject("equInfo", equipService.selectEquipInfo(equip));
|
||||
return mav;
|
||||
}
|
||||
|
|
@ -101,7 +105,6 @@ public class EquipController {
|
|||
@PostMapping("/updateEquip")
|
||||
@ResponseBody
|
||||
public int updateEquip(@AuthenticationPrincipal UserInfo loginUser,Equip equip, MultipartHttpServletRequest request){
|
||||
System.out.println("equip@"+equip);
|
||||
equip.setWrtNm(loginUser.getUserId());
|
||||
equip.setMgtOrgan(loginUser.getOgCd());
|
||||
equip.setWrtOrgan(loginUser.getOgCd());
|
||||
|
|
@ -124,8 +127,8 @@ public class EquipController {
|
|||
}
|
||||
|
||||
@PostMapping("/epuipDelete")
|
||||
public void epuipDelete(@RequestBody List<Equip> equip){
|
||||
equipService.equipDelete(equip);
|
||||
public void epuipDelete(@AuthenticationPrincipal UserInfo loginUser, @RequestBody List<Equip> equip){
|
||||
equipService.equipDelete(equip,loginUser);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -164,6 +167,39 @@ public class EquipController {
|
|||
}
|
||||
}
|
||||
|
||||
@GetMapping("/Log")
|
||||
public ModelAndView equipLog(@AuthenticationPrincipal UserInfo loginUser,EquipLog equipLog) {
|
||||
ModelAndView mav = new ModelAndView("equip/equipLogList");
|
||||
equipLog.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||
equipLog.setQueryInfo();
|
||||
mav.addObject("logList", equipService.selectEquipLogList(equipLog));
|
||||
equipLog.setContentCnt(equipService.selectEquipLogListCnt(equipLog));
|
||||
equipLog.setPaginationInfo();
|
||||
mav.addObject("searchParams", equipLog);
|
||||
|
||||
return mav;
|
||||
}
|
||||
|
||||
@GetMapping("/statusExcelDown")
|
||||
public void statisticsExcelDown(Model model,HttpServletResponse response, Equip equip) {
|
||||
String[] headers = { "rownum","equ_type", "item_value", "total", "cnt_bon", "cnt_center", "cnt_incheon", "cnt_pyeongtaek", "cnt_taean","cnt_boryeong","cnt_west","cnt_mokpo","cnt_buan",
|
||||
"cnt_gunsan","cnt_yusu","cnt_wando","cnt_south","cnt_ulsan","cnt_busan","cnt_changwon","cnt_tongyong","cnt_sacheon","cnt_east","cnt_sokcho","cnt_donghe",
|
||||
"cnt_ulgin","cnt_pohang","cnt_jeju","cnt_jejuseo","cnt_seoguipo"};
|
||||
String[] headerNames = { "", "", "", "", "", "중부", "", "","","","서해","","","","","","남해","","","","","","동해","","","","","제주","",""};
|
||||
String[] headerNames2 = { "연번", "분류", "세부분류", "총계", "본청", "청", "인천서", "평택서","태안서","보령서","청","목포서","부안서","군산서","여수서","완도서","청","울산서","부산서","창원서","통영서","서천서","청","속초서","동해서","울진서","포항서","청","제주서","서귀포서"};
|
||||
String[] columnType = { "int", "String", "String", "int", "int", "int", "int", "int","int","int","int","int","int","int","int","int","int","int","int","int",
|
||||
"int","int","int","int","int","int","int","int","int","int"};
|
||||
String sheetName = "외사장비현황";
|
||||
String excelFileName = "외사장비현황";
|
||||
List<ParamMap> equStatusList = equipService.selectEquipStatus(equip);
|
||||
|
||||
try {
|
||||
Utils.downEquipStatusExcel(equStatusList, response, headers, headerNames,headerNames2, columnType, sheetName, excelFileName);
|
||||
} catch (IOException e) {
|
||||
model.addAttribute("message", "엑셀다운로드 중 오류가 발생했습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
package com.dbnt.faisp.equip.mapper;
|
||||
|
||||
import com.dbnt.faisp.equip.model.Equip;
|
||||
import com.dbnt.faisp.translator.model.Translator;
|
||||
import com.dbnt.faisp.translator.model.TranslatorCrr;
|
||||
import com.dbnt.faisp.userInfo.model.UserInfo;
|
||||
import com.dbnt.faisp.equip.model.EquipLog;
|
||||
import com.dbnt.faisp.util.ParamMap;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
|
@ -25,6 +23,10 @@ public interface EquipMapper {
|
|||
|
||||
Equip selectHistoryDetail(Equip equip);
|
||||
|
||||
List<EquipLog> selectEquipLogList(EquipLog equipLog);
|
||||
|
||||
Integer selectEquipLogListCnt(EquipLog equipLog);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,8 +42,6 @@ public class Equip extends BaseModel implements Serializable{
|
|||
private String detailType;
|
||||
@Column(name = "stored_year")
|
||||
private String storedYear;
|
||||
@Column(name = "mgt_type")
|
||||
private String mgtType;
|
||||
@Column(name = "item_qty")
|
||||
private Integer itemQty;
|
||||
@Column(name = "item_condition")
|
||||
|
|
@ -73,7 +71,8 @@ public class Equip extends BaseModel implements Serializable{
|
|||
private Integer deleteFileKey;
|
||||
@Transient
|
||||
private Integer deleteFileVnum;
|
||||
|
||||
@Transient
|
||||
private String noUpdateImg;
|
||||
|
||||
@Embeddable
|
||||
@Data
|
||||
|
|
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
package com.dbnt.faisp.equip.model;
|
||||
|
||||
|
||||
import com.dbnt.faisp.config.BaseModel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import org.hibernate.annotations.DynamicInsert;
|
||||
import org.hibernate.annotations.DynamicUpdate;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Entity
|
||||
@NoArgsConstructor
|
||||
@DynamicInsert
|
||||
@DynamicUpdate
|
||||
@Table(name = "equ_Log")
|
||||
public class EquipLog extends BaseModel{
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Column(name = "el_seq")
|
||||
private Integer userSeq;
|
||||
@Column(name = "equ_type")
|
||||
private String equType;
|
||||
@Column(name = "detail_type")
|
||||
private String detailType;
|
||||
@Column(name = "el_contents")
|
||||
private String elContents;
|
||||
@Column(name = "wrt_nm")
|
||||
private String wrtNm;
|
||||
@Column(name = "wrt_organ")
|
||||
private String wrtOrgan;
|
||||
@Column(name = "wrt_dt")
|
||||
private LocalDateTime wrtDt;
|
||||
|
||||
@Transient
|
||||
private String sosok;
|
||||
@Transient
|
||||
private String detailSosok;
|
||||
@Transient
|
||||
private String detailName;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "EquipLog [userSeq=" + userSeq + ", equType=" + equType + ", detailType=" + detailType + ", elContents="
|
||||
+ elContents + ", wrtNm=" + wrtNm + ", wrtOrgan=" + wrtOrgan + ", wrtDt=" + wrtDt + ", sosok=" + sosok
|
||||
+ ", detailSosok=" + detailSosok + ", detailName=" + detailName + "]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package com.dbnt.faisp.equip.repository;
|
||||
|
||||
import com.dbnt.faisp.equip.model.EquipLog;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
||||
|
||||
public interface EquipLogRepository extends JpaRepository<EquipLog, Integer> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -3,7 +3,6 @@ package com.dbnt.faisp.equip.repository;
|
|||
import com.dbnt.faisp.equip.model.Equip;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@ import com.dbnt.faisp.equip.model.Equip;
|
|||
import com.dbnt.faisp.equip.model.Equip.EquipId;
|
||||
import com.dbnt.faisp.equip.model.EquipFile;
|
||||
import com.dbnt.faisp.equip.model.EquipFile.EquipFileId;
|
||||
import com.dbnt.faisp.equip.model.EquipLog;
|
||||
import com.dbnt.faisp.equip.repository.EquipFileRepository;
|
||||
import com.dbnt.faisp.equip.repository.EquipLogRepository;
|
||||
import com.dbnt.faisp.equip.repository.EquipRepository;
|
||||
import com.dbnt.faisp.translator.model.Translator;
|
||||
import com.dbnt.faisp.translator.model.Translator.TranslatorId;
|
||||
import com.dbnt.faisp.userInfo.model.UserInfo;
|
||||
import com.dbnt.faisp.util.ParamMap;
|
||||
import com.dbnt.faisp.util.Utils;
|
||||
|
|
@ -24,6 +24,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
|
|||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
|
|
@ -34,6 +35,7 @@ public class EquipService {
|
|||
|
||||
private final EquipRepository equipRepository;
|
||||
private final EquipFileRepository equipFileRepository;
|
||||
private final EquipLogRepository equipLogRepository;
|
||||
private final EquipMapper equipMapper;
|
||||
|
||||
|
||||
|
|
@ -51,6 +53,14 @@ public class EquipService {
|
|||
equipRepository.save(equip);
|
||||
}
|
||||
saveFile(equip,request);
|
||||
EquipLog equLog = new EquipLog();
|
||||
equLog.setEquType(equip.getEquType());
|
||||
equLog.setDetailType(equip.getDetailType());
|
||||
equLog.setElContents("입력");
|
||||
equLog.setWrtNm(equip.getWrtNm());
|
||||
equLog.setWrtOrgan(equip.getWrtOrgan());
|
||||
equLog.setWrtDt(equip.getWrtDt());
|
||||
equipLogRepository.save(equLog);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
@ -147,6 +157,14 @@ public class EquipService {
|
|||
equipTmp.setWrtDt(equip.getWrtDt());
|
||||
equipRepository.save(equipTmp);
|
||||
updateFile(equip,equipTmp,request);
|
||||
EquipLog equLog = new EquipLog();
|
||||
equLog.setEquType(equip.getEquType());
|
||||
equLog.setDetailType(equip.getDetailType());
|
||||
equLog.setElContents("수정");
|
||||
equLog.setWrtNm(equip.getWrtNm());
|
||||
equLog.setWrtOrgan(equip.getWrtOrgan());
|
||||
equLog.setWrtDt(equip.getWrtDt());
|
||||
equipLogRepository.save(equLog);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
@ -200,6 +218,17 @@ public class EquipService {
|
|||
equipFile.setFilePath(path);
|
||||
equipFile.setFileSize(FileSize);
|
||||
|
||||
equipFileRepository.save(equipFile);
|
||||
} else if(equip.getNoUpdateImg() != null) {
|
||||
EquipFile equipFile = new EquipFile();
|
||||
equipFile.setEquKey(equipTmp.getEquKey());
|
||||
equipFile.setVersionNo(equipTmp.getVersionNo());
|
||||
EquipFile dbEquFile = equipFileRepository.findById(new EquipFileId(equip.getEquKey(), equip.getVersionNo())).orElse(null);
|
||||
equipFile.setOrigNm(dbEquFile.getOrigNm());
|
||||
equipFile.setConvNm(dbEquFile.getConvNm());
|
||||
equipFile.setFileExtn(dbEquFile.getFileExtn());
|
||||
equipFile.setFilePath(dbEquFile.getFilePath());
|
||||
equipFile.setFileSize(dbEquFile.getFileSize());
|
||||
equipFileRepository.save(equipFile);
|
||||
} else {
|
||||
EquipFile equipFile = new EquipFile();
|
||||
|
|
@ -226,7 +255,7 @@ public class EquipService {
|
|||
}
|
||||
|
||||
@Transactional
|
||||
public void equipDelete(List<Equip> equip) {
|
||||
public void equipDelete(List<Equip> equip,UserInfo loginUser) {
|
||||
for(Equip equ: equip) {
|
||||
//파일삭제
|
||||
Equip dbEquip = equipMapper.selectEquipInfo(equ);
|
||||
|
|
@ -240,9 +269,25 @@ public class EquipService {
|
|||
}
|
||||
equipRepository.deleteByEquKey(equ.getEquKey());
|
||||
equipFileRepository.deleteByEquKey(equ.getEquKey());
|
||||
EquipLog equLog = new EquipLog();
|
||||
equLog.setEquType(dbEquip.getEquType());
|
||||
equLog.setDetailType(dbEquip.getDetailType());
|
||||
equLog.setElContents("삭제");
|
||||
equLog.setWrtNm(loginUser.getUserId());
|
||||
equLog.setWrtOrgan(loginUser.getOgCd());
|
||||
equLog.setWrtDt(LocalDateTime.now());
|
||||
equipLogRepository.save(equLog);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public List<EquipLog> selectEquipLogList(EquipLog equipLog) {
|
||||
return equipMapper.selectEquipLogList(equipLog);
|
||||
}
|
||||
|
||||
public Integer selectEquipLogListCnt(EquipLog equipLog) {
|
||||
return equipMapper.selectEquipLogListCnt(equipLog);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.dbnt.faisp.translator;
|
||||
|
||||
import com.dbnt.faisp.authMgt.service.AuthMgtService;
|
||||
import com.dbnt.faisp.organMgt.service.OrganConfigService;
|
||||
import com.dbnt.faisp.translator.model.Translator;
|
||||
import com.dbnt.faisp.translator.model.TranslatorCrr;
|
||||
import com.dbnt.faisp.translator.service.TranslatorService;
|
||||
|
|
@ -12,9 +11,7 @@ import com.dbnt.faisp.util.Utils;
|
|||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
|
|
@ -30,7 +27,6 @@ public class TranslatorController {
|
|||
|
||||
private final AuthMgtService authMgtService;
|
||||
private final TranslatorService translatorSevice;
|
||||
private final OrganConfigService organConfigService;
|
||||
|
||||
|
||||
@GetMapping("/info")
|
||||
|
|
|
|||
|
|
@ -1,35 +1,19 @@
|
|||
package com.dbnt.faisp.util;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.InetAddress;
|
||||
import java.net.NetworkInterface;
|
||||
import java.net.SocketException;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import org.apache.poi.ss.usermodel.BorderStyle;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.CellStyle;
|
||||
import org.apache.poi.ss.usermodel.FillPatternType;
|
||||
|
|
@ -41,12 +25,6 @@ import org.apache.poi.ss.util.CellRangeAddress;
|
|||
import org.apache.poi.xssf.usermodel.XSSFDataFormat;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.util.FileCopyUtils;
|
||||
|
||||
|
||||
|
||||
import com.dbnt.faisp.util.ParamMap;
|
||||
|
||||
public class Utils {
|
||||
|
||||
|
|
@ -288,6 +266,114 @@ public class Utils {
|
|||
|
||||
}
|
||||
|
||||
public static void downEquipStatusExcel(List<ParamMap> list, HttpServletResponse response, String[] headers, String[] headerNames,String[] headerNames2, String[] columnType, String sheetName, String excelFileName) throws IOException {
|
||||
if(Utils.isNotEmpty(list)) {
|
||||
// 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
Sheet sheet = wb.createSheet(sheetName);
|
||||
Row headerRow = sheet.createRow(0);
|
||||
Row headerRow2 = sheet.createRow(1);
|
||||
CellStyle cellStyle1 = wb.createCellStyle(); //쉼표들어간 숫자 양식
|
||||
CellStyle cellStyle2 = wb.createCellStyle(); //숫자양식
|
||||
CellStyle headerStyle = wb.createCellStyle(); //숫자양식
|
||||
CellStyle headerStyle2 = wb.createCellStyle();
|
||||
CellStyle headerStyle3 = wb.createCellStyle();
|
||||
|
||||
XSSFDataFormat format = wb.createDataFormat();
|
||||
cellStyle1.setDataFormat(format.getFormat("#,##0"));
|
||||
cellStyle2.setDataFormat(format.getFormat("#,##0"));
|
||||
cellStyle2.setAlignment(HorizontalAlignment.CENTER);
|
||||
headerStyle2.setBorderTop(BorderStyle.THIN);
|
||||
headerStyle2.setBorderBottom(BorderStyle.THIN);
|
||||
headerStyle2.setBorderLeft(BorderStyle.THIN);
|
||||
headerStyle2.setBorderRight(BorderStyle.THIN);
|
||||
headerStyle2.setAlignment(HorizontalAlignment.CENTER);
|
||||
headerStyle2.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||
headerStyle2.setFillForegroundColor((short)3);
|
||||
headerStyle2.setFillForegroundColor(IndexedColors.LIME.getIndex());
|
||||
headerStyle.setAlignment(HorizontalAlignment.CENTER);
|
||||
headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||
headerStyle.setFillForegroundColor((short)3);
|
||||
headerStyle.setFillForegroundColor(IndexedColors.LIME.getIndex());
|
||||
headerStyle3.setBorderTop(BorderStyle.THIN);
|
||||
headerStyle3.setBorderBottom(BorderStyle.THIN);
|
||||
headerStyle3.setBorderLeft(BorderStyle.THIN);
|
||||
headerStyle3.setBorderRight(BorderStyle.THIN);
|
||||
headerStyle3.setAlignment(HorizontalAlignment.CENTER);
|
||||
headerStyle3.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||
headerStyle3.setFillForegroundColor((short)3);
|
||||
headerStyle3.setFillForegroundColor(IndexedColors.LIME.getIndex());
|
||||
|
||||
|
||||
//로우그리기
|
||||
for(int i=0; i<list.size(); i++) {
|
||||
ParamMap rowData = list.get(i);
|
||||
Row row = sheet.createRow(i+2);
|
||||
|
||||
for(int j=0; j<headers.length; j++) {
|
||||
Cell cell = row.createCell(j);
|
||||
|
||||
|
||||
if(columnType[j].equalsIgnoreCase("Int")) {
|
||||
cell.setCellValue(rowData.getInt(headers[j]));
|
||||
cell.setCellStyle(cellStyle2);
|
||||
} else if(columnType[j].equalsIgnoreCase("String")) {
|
||||
cell.setCellValue(rowData.getString(headers[j]));
|
||||
} else {
|
||||
cell.setCellValue(rowData.getString(headers[j]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//헤더
|
||||
for(int j=0; j<headerNames.length; j++) {
|
||||
Cell cell = headerRow.createCell(j);
|
||||
cell.setCellValue(headerNames[j]);
|
||||
cell.setCellStyle(headerStyle3);
|
||||
sheet.autoSizeColumn(j);
|
||||
sheet.setColumnWidth(j, (sheet.getColumnWidth(j)) + 1000);
|
||||
}
|
||||
sheet.addMergedRegion(new CellRangeAddress(0,0,0,4));
|
||||
sheet.addMergedRegion(new CellRangeAddress(0,0,5,9));
|
||||
sheet.addMergedRegion(new CellRangeAddress(0,0,10,15));
|
||||
sheet.addMergedRegion(new CellRangeAddress(0,0,16,21));
|
||||
sheet.addMergedRegion(new CellRangeAddress(0,0,22,26));
|
||||
sheet.addMergedRegion(new CellRangeAddress(0,0,27,29));
|
||||
for(int j=0; j<headerNames2.length; j++) {
|
||||
Cell cell = headerRow2.createCell(j);
|
||||
cell.setCellValue(headerNames2[j]);
|
||||
cell.setCellStyle(headerStyle2);
|
||||
sheet.autoSizeColumn(j);
|
||||
sheet.setColumnWidth(j, (sheet.getColumnWidth(j)) + 1000);
|
||||
}
|
||||
//엑셀이름 한글깨짐방지
|
||||
String outputFileName = new String(excelFileName.getBytes("KSC5601"), "8859_1");
|
||||
|
||||
response.setHeader("Set-Cookie", "fileDownload=true; path=/");
|
||||
response.setHeader("Content-Disposition", String.format("attachment; filename=\""+outputFileName+"_"+Utils.getTimeStampString("yyyyMMdd_HHmm")+".xlsx\""));
|
||||
|
||||
wb.write(response.getOutputStream());
|
||||
wb.close();
|
||||
} else {
|
||||
response.setHeader("Content-Type", "text/html; charset=UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
|
||||
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
|
||||
out.write("<html lang=\"ko\">");
|
||||
out.write("<head>");
|
||||
out.write("<script type=\"text/javascript\">");
|
||||
out.write("alert('데이터가 없습니다.');");
|
||||
out.write("history.back(-1);");
|
||||
out.write("</script>");
|
||||
out.write("</head>");
|
||||
out.write("</html>");
|
||||
|
||||
out.flush();
|
||||
out.close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@
|
|||
<mapper namespace="com.dbnt.faisp.equip.mapper.EquipMapper">
|
||||
|
||||
<select id="selectEquipStatus" resultType="com.dbnt.faisp.util.ParamMap" parameterType="Equip">
|
||||
select category_cd,
|
||||
select (ROW_NUMBER() OVER()) AS rownum,
|
||||
category_cd,
|
||||
equ_type,
|
||||
item_value,
|
||||
item_cd,
|
||||
|
|
@ -291,6 +292,7 @@
|
|||
item_qty,
|
||||
item_condition,
|
||||
note,
|
||||
wrt_nm,
|
||||
ef.orig_nm,
|
||||
ef.conv_nm,
|
||||
ef.file_path
|
||||
|
|
@ -340,6 +342,62 @@
|
|||
and em.equ_key = #{equKey}
|
||||
and em.version_no = #{versionNo}
|
||||
</select>
|
||||
|
||||
<select id="selectEquipLogList" resultType="EquipLog" parameterType="EquipLog">
|
||||
select (select item_value from code_mgt cm where cm.item_cd = el.equ_type) as equ_type,
|
||||
(select item_value from code_mgt cm where cm.item_cd = el.detail_type) as detail_name,
|
||||
detail_type,
|
||||
case
|
||||
when oc.organ_type = 'OGC001' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
|
||||
when oc.organ_type = 'OGC002' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
|
||||
else (select item_value from code_mgt cm where cm.item_cd = oc.parent_organ )
|
||||
end as sosok,
|
||||
case
|
||||
when oc.organ_type = 'OGC003' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
|
||||
else null
|
||||
end as detail_sosok,
|
||||
el_contents,
|
||||
wrt_nm,
|
||||
wrt_dt
|
||||
from equ_log el,
|
||||
organ_config oc
|
||||
where el.wrt_organ = oc.organ_cd
|
||||
and wrt_organ in
|
||||
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
order by el.wrt_dt desc
|
||||
limit #{rowCnt} offset #{firstIndex}
|
||||
</select>
|
||||
|
||||
<select id="selectEquipLogListCnt" resultType="int" parameterType="EquipLog">
|
||||
select count(*)
|
||||
from(
|
||||
select (select item_value from code_mgt cm where cm.item_cd = el.equ_type) as equ_type,
|
||||
(select item_value from code_mgt cm where cm.item_cd = el.detail_type) as detail_name,
|
||||
detail_type,
|
||||
case
|
||||
when oc.organ_type = 'OGC001' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
|
||||
when oc.organ_type = 'OGC002' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
|
||||
else (select item_value from code_mgt cm where cm.item_cd = oc.parent_organ )
|
||||
end as sosok,
|
||||
case
|
||||
when oc.organ_type = 'OGC003' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
|
||||
else null
|
||||
end as detail_sosok,
|
||||
el_contents,
|
||||
wrt_nm,
|
||||
wrt_dt
|
||||
from equ_log el,
|
||||
organ_config oc
|
||||
where el.wrt_organ = oc.organ_cd
|
||||
and wrt_organ in
|
||||
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
order by el.wrt_dt desc
|
||||
) a
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
@ -94,6 +94,10 @@ $(document).on('click', '#saveEquip', function (){
|
|||
});
|
||||
|
||||
$(document).on('click', '#equUpdateBtn', function (){
|
||||
if($('input:checkbox[name=equChk]:checked').length < 1){
|
||||
alert("게시물을 선택해주세요")
|
||||
return false;
|
||||
}
|
||||
if($('input:checkbox[name=equChk]:checked').length > 1){
|
||||
alert("한개만 선택해주세요")
|
||||
return false;
|
||||
|
|
@ -168,6 +172,10 @@ $(document).on('click', '#updateEquip', function (){
|
|||
});
|
||||
|
||||
$(document).on('click', '#historyBtn', function (){
|
||||
if($('input:checkbox[name=equChk]:checked').length < 1){
|
||||
alert("게시물을 선택해주세요")
|
||||
return false;
|
||||
}
|
||||
if($('input:checkbox[name=equChk]:checked').length > 1){
|
||||
alert("한개만 선택해주세요")
|
||||
return false;
|
||||
|
|
@ -254,3 +262,19 @@ $(document).ready( function() {
|
|||
$('.equInfoCheckBox').prop('checked',this.checked);
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('click', '#statusExcel', function (){
|
||||
if(confirm("엑셀로 다운로드 하시겠습니까?")){
|
||||
location.href='/equip/statusExcelDown'
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('click', '#closeModal', function (){
|
||||
location.reload();
|
||||
})
|
||||
|
||||
$(document).on('click', '.btn-close', function (){
|
||||
location.reload();
|
||||
})
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@
|
|||
</div>
|
||||
<div class="modal-footer justify-content-between">
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
<button type="button" class="btn btn-secondary" id="closeModal" data-bs-dismiss="modal">닫기</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
<div layout:fragment="content">
|
||||
<main class="pt-3">
|
||||
<h4 th:text="|${equType}-${detailType} 세부현황|"></h4>
|
||||
|
||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||
<div class="row mx-0">
|
||||
|
|
@ -28,26 +27,7 @@
|
|||
<div class="col-auto">
|
||||
<div class="row justify-content-end">
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="ogCd">
|
||||
<option value="">관서 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="ofcCd">
|
||||
<option value="">부서 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('OFC')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm" name="userNm" >
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm" name="userId">
|
||||
<input type="text" class="form-control form-control-sm">
|
||||
</div>
|
||||
<input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색">
|
||||
</div>
|
||||
|
|
@ -94,9 +74,9 @@
|
|||
</table>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="button" class="btn btn-success" value="삭제" id="equDeleteBtn">
|
||||
<input type="button" class="btn btn-success" value="수정" id="equUpdateBtn">
|
||||
<input type="button" class="btn btn-success" value="수정이력" id="historyBtn">
|
||||
<input type="button" class="btn btn-success" value="삭제" id="equDeleteBtn" th:unless="${accessAuth eq 'ACC001'}">
|
||||
<input type="button" class="btn btn-success" value="수정" id="equUpdateBtn" th:unless="${accessAuth eq 'ACC001'}">
|
||||
<input type="button" class="btn btn-success" value="수정이력" id="historyBtn" th:unless="${accessAuth eq 'ACC001'}">
|
||||
</div>
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-auto">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,120 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||
layout:decorate="~{layout/layout}">
|
||||
<th:block layout:fragment="script">
|
||||
<script type="text/javascript" th:src="@{/js/equip/equip.js}"></script>
|
||||
</th:block>
|
||||
<div layout:fragment="content">
|
||||
<main class="pt-3">
|
||||
<h4>외사장비현황</h4>
|
||||
<ul class="nav nav-tabs" id="boardTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" th:onclick="|location.href='@{/equip/equipStatus}'|" id="contentTab" data-bs-toggle="tab" data-bs-target="#contentDiv" type="button" role="tab">장비현황</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="logTab" data-bs-toggle="tab" data-bs-target="#logDiv" type="button" role="tab">수정이력</button>
|
||||
</li>
|
||||
</ul>
|
||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||
<div class="row mx-0">
|
||||
<div class="col-12 card text-center">
|
||||
<div class="card-body">
|
||||
<form method="get" th:action="@{/equip/Log}">
|
||||
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
||||
<input type="hidden" name="detailType" th:value="${searchParams.detailType}">
|
||||
<div class="row justify-content-between pe-3 py-1">
|
||||
<div class="col-auto">
|
||||
<select class="form-select" 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==num*10}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="row justify-content-end">
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="ofcCd">
|
||||
<option value="">부서 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('OFC')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm" name="userId">
|
||||
</div>
|
||||
<input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row justify-content-start">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>소속</th>
|
||||
<th>세부소속</th>
|
||||
<th>분류</th>
|
||||
<th>세부분류</th>
|
||||
<th>수정자</th>
|
||||
<th>수정내용</th>
|
||||
<th>수정일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="log:${logList}">
|
||||
<td th:text="${log.sosok}"></td>
|
||||
<td th:text="${log.detailSosok}"></td>
|
||||
<td th:text="${log.equType}"></td>
|
||||
<td th:text="${log.detailName}" style="color: blue; cursor:pointer;" th:onclick="|location.href='@{/equip/List(detailType=${log.detailType})}'|"></td>
|
||||
<td th:text="${log.wrtNm}"></td>
|
||||
<td th:text="${log.elContents}"></td>
|
||||
<td th:text="${#temporals.format(log.wrtDt, 'yyyy-MM-dd')}"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-auto">
|
||||
<nav aria-label="Page navigation">
|
||||
<ul class="pagination">
|
||||
<th:block th:if="${searchParams.pageIndex>3}">
|
||||
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)-3}">
|
||||
<a class="page-link" href="#" aria-label="Previous">
|
||||
<span aria-hidden="true">«</span>
|
||||
</a>
|
||||
</li>
|
||||
</th:block>
|
||||
<th:block th:each="num : ${#numbers.sequence(searchParams.startNum, searchParams.endNum)}">
|
||||
<li class="page-item" th:data-pageindex="${num}" th:classappend="${searchParams.pageIndex==num?'active':''}">
|
||||
<a class="page-link" href="#" th:text="${num}"></a>
|
||||
</li>
|
||||
</th:block>
|
||||
<th:block th:if="${searchParams.maxNum>searchParams.endNum+2}">
|
||||
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)+3}">
|
||||
<a class="page-link" href="#" aria-label="Next">
|
||||
<span aria-hidden="true">»</span>
|
||||
</a>
|
||||
</li>
|
||||
</th:block>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
<label for="cat3Cd" class="col-sm-4 col-form-label col-form-label-sm text-center">장비사진</label>
|
||||
<div class="col-sm-6">
|
||||
<div id="imgUpload">
|
||||
<input type="text" class="form-control" th:value="${equInfo.origNm}" readonly th:if="${not #strings.isEmpty(equInfo.origNm)}">
|
||||
<input type="text" name="noUpdateImg" class="form-control" th:value="${equInfo.origNm}" readonly th:if="${not #strings.isEmpty(equInfo.origNm)}">
|
||||
<input type="button" id="deleteImgBtn" value="삭제" th:if="${not #strings.isEmpty(equInfo.origNm)}" th:attr="onclick=|deleteImg('${equInfo.equKey}','${equInfo.versionNo}')|">
|
||||
<input type="text" class="form-control" value="등록된 사진이 없습니다." readonly th:if="${#strings.isEmpty(equInfo.origNm)}">
|
||||
<input type="button" id="addImgBtn" value="추가" th:if="${#strings.isEmpty(equInfo.origNm)}">
|
||||
|
|
@ -86,8 +86,8 @@
|
|||
</div>
|
||||
<div class="modal-footer justify-content-between">
|
||||
<div class="col-auto">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||
<button type="button" class="btn btn-primary" id="updateEquip">수정</button>
|
||||
<button type="button" class="btn btn-secondary" id="closeModal" data-bs-dismiss="modal">닫기</button>
|
||||
<button type="button" class="btn btn-primary" id="updateEquip" th:if="${accessAuth eq 'ACC003'} or ${equInfo.wrtNm eq userId}">수정</button>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
<button class="nav-link active" id="contentTab" data-bs-toggle="tab" data-bs-target="#contentDiv" type="button" role="tab">장비현황</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="logTab" data-bs-toggle="tab" data-bs-target="#logDiv" type="button" role="tab">수정이력</button>
|
||||
<button class="nav-link" th:onclick="|location.href='@{/equip/Log}'|" id="logTab" data-bs-toggle="tab" data-bs-target="#logDiv" type="button" role="tab">수정이력</button>
|
||||
</li>
|
||||
</ul>
|
||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
|
|
@ -25,30 +25,8 @@
|
|||
<input type="hidden" name="userStatus" id="userStatus" >
|
||||
<div class="row justify-content-between pe-3 py-1">
|
||||
<div class="col-auto">
|
||||
<input type="button" class="btn btn-success" id="statusExcel" value="엑셀다운">
|
||||
<div class="row justify-content-end">
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="ogCd">
|
||||
<option value="">관서 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<select class="form-select form-select-sm" name="ofcCd">
|
||||
<option value="">부서 선택</option>
|
||||
<th:block th:each="commonCode:${session.commonCode.get('OFC')}">
|
||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm" name="userNm" placeholder="사용자명">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm" name="userId" placeholder="사용자 아이디">
|
||||
</div>
|
||||
<input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -60,7 +38,6 @@
|
|||
<div class="row">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<tr>
|
||||
<th rowspan="2">연번</th>
|
||||
<th rowspan="2">분류</th>
|
||||
|
|
@ -83,7 +60,7 @@
|
|||
<th>목포서</th>
|
||||
<th>부안서</th>
|
||||
<th>군산서</th>
|
||||
<th>여수</th>
|
||||
<th>여수서</th>
|
||||
<th>완도서</th>
|
||||
<th>청</th>
|
||||
<th>울산서</th>
|
||||
|
|
@ -138,7 +115,7 @@
|
|||
</table>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="button" class="btn btn-success" value="등록" id="addEquip">
|
||||
<input type="button" class="btn btn-success" value="등록" id="addEquip" th:unless="${accessAuth eq 'ACC001'}">
|
||||
</div>
|
||||
<div class="row justify-content-center">
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue