diff --git a/src/main/java/com/dbnt/faisp/equip/EquipController.java b/src/main/java/com/dbnt/faisp/equip/EquipController.java index 00edb5d5..c08a6858 100644 --- a/src/main/java/com/dbnt/faisp/equip/EquipController.java +++ b/src/main/java/com/dbnt/faisp/equip/EquipController.java @@ -7,8 +7,6 @@ import com.dbnt.faisp.equip.model.Equip; import com.dbnt.faisp.equip.model.EquipLog; import com.dbnt.faisp.equip.model.UseList; import com.dbnt.faisp.equip.service.EquipService; -import com.dbnt.faisp.fipTarget.model.PartInfo; -import com.dbnt.faisp.fipTarget.service.FipTargetService; import com.dbnt.faisp.organMgt.service.OrganConfigService; import com.dbnt.faisp.userInfo.model.UserInfo; import com.dbnt.faisp.userInfo.service.UserInfoService; @@ -42,7 +40,6 @@ public class EquipController { private final EquipService equipService; private final AuthMgtService authMgtService; private final OrganConfigService organConfigService; - private final FipTargetService fipTargetService; private final UserInfoService userInfoService; @GetMapping("/equipStatus") @@ -142,7 +139,6 @@ public class EquipController { @PostMapping("/epuipDelete") public void epuipDelete(@AuthenticationPrincipal UserInfo loginUser, @RequestBody List equip){ equipService.equipDelete(equip,loginUser); - } @GetMapping("/getEquipImg") @@ -296,7 +292,22 @@ public class EquipController { ModelAndView mav = new ModelAndView("equip/pvreUseList"); useList.setDownOrganCdList(loginUser.getDownOrganCdList()); useList.setUseType("PVRE"); + //엑셀다운 + if(useList.getExcel() != null && useList.getExcel().equals("Y")){ + String[] headers = { "use_no", "sosok", "use_dt", "detail_type_name", "people_cnt", "description", "wrt_dt"}; + String[] headerNames = { "연번", "경찰서","사용일시", "사용사유", "사용인원", "비고", "최종수정일"}; + String[] columnType = { "String", "String","String", "String", "int", "String", "String"}; + String sheetName = "휴대용 녹화장비 사용 대장"; + String excelFileName = "휴대용 녹화장비 사용 대장"; + List useExcelList= equipService.selectUseList(useList); + try { + Utils.useListToExcel(useExcelList, response, headers, headerNames, columnType, sheetName, excelFileName); + } catch (IOException e) { + + } + return null; + } //메뉴권한 확인 String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/pvreUseList").get(0).getAccessAuth(); mav.addObject("accessAuth", accessAuth); @@ -304,21 +315,27 @@ public class EquipController { mav.addObject("useList", equipService.selectUseList(useList)); useList.setContentCnt(equipService.selectUseListCnt(useList)); useList.setPaginationInfo(); + mav.addObject("organList", equipService.selectOrganList(useList)); mav.addObject("searchParams", useList); - return mav; } - @GetMapping("/pvreEditModal") - public ModelAndView pvreEditModal(@AuthenticationPrincipal UserInfo loginUser,UseList useList) { - ModelAndView mav = new ModelAndView("equip/pvreEditModal"); + @GetMapping("/useEditModal") + public ModelAndView useEditModal(@AuthenticationPrincipal UserInfo loginUser,UseList useList) { + ModelAndView mav = new ModelAndView("equip/useEditModal"); useList.setDownOrganCdList(loginUser.getDownOrganCdList()); mav.addObject("organList", equipService.selectOrganList(useList)); mav.addObject("userOrgan", loginUser.getOgCd()); - mav.addObject("useType", "PVRE"); + mav.addObject("useType", useList.getUseType()); //메뉴권한 확인 - String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/pvreUseList").get(0).getAccessAuth(); - mav.addObject("accessAuth", accessAuth); + String accessAuth; + if(useList.getUseType().equals("PVRE")) { + accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/pvreUseList").get(0).getAccessAuth(); + mav.addObject("accessAuth", accessAuth); + }else if(useList.getUseType().equals("QIR")) { + accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/qirUseList").get(0).getAccessAuth(); + mav.addObject("accessAuth", accessAuth); + } return mav; } @@ -331,6 +348,85 @@ public class EquipController { useList.setWrtDt(LocalDateTime.now()); equipService.saveUse(useList); } + + @GetMapping("/useModifyModal") + public ModelAndView useModifyModal(@AuthenticationPrincipal UserInfo loginUser,UseList useList) { + ModelAndView mav = new ModelAndView("equip/useModifyModal"); + useList.setDownOrganCdList(loginUser.getDownOrganCdList()); + mav.addObject("organList", equipService.selectOrganList(useList)); + mav.addObject("info", equipService.selectUseInfo(useList)); + //메뉴권한 확인 + String accessAuth; + if(useList.getUseType().equals("PVRE")) { + accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/pvreUseList").get(0).getAccessAuth(); + mav.addObject("accessAuth", accessAuth); + }else if(useList.getUseType().equals("QIR")) { + accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/qirUseList").get(0).getAccessAuth(); + mav.addObject("accessAuth", accessAuth); + } + return mav; + } + + @PostMapping("/updateUse") + public UseList uadateUse(@AuthenticationPrincipal UserInfo loginUser,UseList useList){ + useList.setWrtOrgan(loginUser.getOgCd()); + useList.setWrtPart(loginUser.getOfcCd()); + useList.setWrtUserSeq(loginUser.getUserSeq()); + useList.setWrtNm(loginUser.getUserId()); + useList.setWrtDt(LocalDateTime.now()); + return equipService.updateUse(useList); + } + + @GetMapping("/useHistory") + public ModelAndView useHistory(@AuthenticationPrincipal UserInfo loginUser,UseList useList) { + ModelAndView mav = new ModelAndView("equip/useHistory"); + mav.addObject("infoList", equipService.selectUseInfoList(useList)); + return mav; + } + + @GetMapping("/HistoryView") + @ResponseBody + public UseList HistoryView(UseList useList){ + return equipService.selectUseInfo(useList); + } + + @PostMapping("/useDelete") + public void useDelete(@RequestBody List useList){ + equipService.useDelete(useList); + } + + @GetMapping("/qirUseList") + public ModelAndView qirUseList(@AuthenticationPrincipal UserInfo loginUser,UseList useList,HttpServletResponse response) { + ModelAndView mav = new ModelAndView("equip/qirUseList"); + useList.setDownOrganCdList(loginUser.getDownOrganCdList()); + useList.setUseType("QIR"); + //엑셀다운 + if(useList.getExcel() != null && useList.getExcel().equals("Y")){ + String[] headers = { "use_no", "sosok", "use_dt", "detail_type_name", "people_cnt", "description", "wrt_dt"}; + String[] headerNames = { "연번", "경찰서","사용일시", "사용사유", "사용인원", "비고", "최종수정일"}; + String[] columnType = { "String", "String","String", "String", "int", "String", "String"}; + String sheetName = "방역조사실 사용대장"; + String excelFileName = "방역조사실 사용대장"; + List useExcelList= equipService.selectUseList(useList); + + try { + Utils.useListToExcel(useExcelList, response, headers, headerNames, columnType, sheetName, excelFileName); + } catch (IOException e) { + + } + return null; + } + //메뉴권한 확인 + String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/qirUseList").get(0).getAccessAuth(); + mav.addObject("accessAuth", accessAuth); + useList.setQueryInfo(); + mav.addObject("useList", equipService.selectUseList(useList)); + useList.setContentCnt(equipService.selectUseListCnt(useList)); + useList.setPaginationInfo(); + mav.addObject("searchParams", useList); + mav.addObject("organList", equipService.selectOrganList(useList)); + return mav; + } diff --git a/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java b/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java index 65277dfd..26c21788 100644 --- a/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java +++ b/src/main/java/com/dbnt/faisp/equip/mapper/EquipMapper.java @@ -45,6 +45,9 @@ public interface EquipMapper { Integer selectUseListCnt(UseList useList); + UseList selectUseInfo(UseList useList); + + } diff --git a/src/main/java/com/dbnt/faisp/equip/model/UseList.java b/src/main/java/com/dbnt/faisp/equip/model/UseList.java index 29201d6a..d24f3d7b 100644 --- a/src/main/java/com/dbnt/faisp/equip/model/UseList.java +++ b/src/main/java/com/dbnt/faisp/equip/model/UseList.java @@ -16,7 +16,6 @@ import javax.persistence.*; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.Date; @Getter @@ -41,7 +40,8 @@ public class UseList extends BaseModel implements Serializable{ @Column(name = "use_type") private String useType; @Column(name = "use_dt") - private String useDt; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate useDt; @Column(name = "detail_type") private String detailType; @Column(name = "detail_self") @@ -67,12 +67,25 @@ public class UseList extends BaseModel implements Serializable{ @Transient private String excel; + @Transient + private String sosok; + @Transient private String year; @Transient private String detailTypeName; +@Override +public String toString() { + return "UseList [mgtOrgan=" + mgtOrgan + ", useNo=" + useNo + ", versionNo=" + versionNo + ", useType=" + useType + + ", useDt=" + useDt + ", detailType=" + detailType + ", detailSelf=" + detailSelf + ", peopleCnt=" + + peopleCnt + ", description=" + description + ", wrtOrgan=" + wrtOrgan + ", wrtPart=" + wrtPart + + ", wrtUserGrd=" + wrtUserGrd + ", wrtUserSeq=" + wrtUserSeq + ", wrtNm=" + wrtNm + ", wrtDt=" + wrtDt + + ", excel=" + excel + ", sosok=" + sosok + ", year=" + year + ", detailTypeName=" + detailTypeName + "]"; +} + + @Embeddable @Data @NoArgsConstructor diff --git a/src/main/java/com/dbnt/faisp/equip/repository/UseListRepository.java b/src/main/java/com/dbnt/faisp/equip/repository/UseListRepository.java index d9683f6c..42211e23 100644 --- a/src/main/java/com/dbnt/faisp/equip/repository/UseListRepository.java +++ b/src/main/java/com/dbnt/faisp/equip/repository/UseListRepository.java @@ -2,12 +2,18 @@ package com.dbnt.faisp.equip.repository; import com.dbnt.faisp.equip.model.UseList; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; public interface UseListRepository extends JpaRepository { + List findByMgtOrganAndUseNoAndUseTypeOrderByVersionNoDesc(String mgtOrgan, String useNo, String useType); + + void deleteByMgtOrganAndUseNoAndUseType(String mgtOrgan, String useNo, String useType); + diff --git a/src/main/java/com/dbnt/faisp/equip/service/EquipService.java b/src/main/java/com/dbnt/faisp/equip/service/EquipService.java index aecb2cbf..a6024ca2 100644 --- a/src/main/java/com/dbnt/faisp/equip/service/EquipService.java +++ b/src/main/java/com/dbnt/faisp/equip/service/EquipService.java @@ -9,6 +9,7 @@ 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.model.UseList; +import com.dbnt.faisp.equip.model.UseList.UseListId; import com.dbnt.faisp.equip.repository.CellPhoneRepository; import com.dbnt.faisp.equip.repository.EquipFileRepository; import com.dbnt.faisp.equip.repository.EquipLogRepository; @@ -351,6 +352,44 @@ public class EquipService { public Integer selectUseListCnt(UseList useList) { return equipMapper.selectUseListCnt(useList); } + + public UseList selectUseInfo(UseList useList) { + return equipMapper.selectUseInfo(useList); + } + + @Transactional + public UseList updateUse(UseList useList) { + UseList dbUseList = useListRepository + .findById(new UseListId(useList.getMgtOrgan(),useList.getUseNo(),useList.getVersionNo(),useList.getUseType())).orElse(null); + UseList useTmp = new UseList(); + useTmp.setMgtOrgan(dbUseList.getMgtOrgan()); + useTmp.setUseNo(dbUseList.getUseNo()); + useTmp.setVersionNo(dbUseList.getVersionNo()+1); + useTmp.setUseType(dbUseList.getUseType()); + useTmp.setUseDt(useList.getUseDt()); + useTmp.setDetailType(useList.getDetailType()); + useTmp.setDetailSelf(useList.getDetailSelf()); + useTmp.setPeopleCnt(useList.getPeopleCnt()); + useTmp.setDescription(useList.getDescription()); + useTmp.setWrtOrgan(useList.getWrtOrgan()); + useTmp.setWrtPart(useList.getWrtPart()); + useTmp.setWrtUserSeq(useList.getWrtUserSeq()); + useTmp.setWrtNm(useList.getWrtNm()); + useTmp.setWrtDt(useList.getWrtDt()); + return useListRepository.save(useTmp); + + } + + public List selectUseInfoList(UseList useList) { + return useListRepository.findByMgtOrganAndUseNoAndUseTypeOrderByVersionNoDesc(useList.getMgtOrgan(),useList.getUseNo(),useList.getUseType()); + } + + @Transactional + public void useDelete(List useList) { + for(UseList use:useList) { + useListRepository.deleteByMgtOrganAndUseNoAndUseType(use.getMgtOrgan(),use.getUseNo(),use.getUseType()); + } + } diff --git a/src/main/java/com/dbnt/faisp/userInfo/model/UserInfo.java b/src/main/java/com/dbnt/faisp/userInfo/model/UserInfo.java index b7136a38..30ba59ca 100644 --- a/src/main/java/com/dbnt/faisp/userInfo/model/UserInfo.java +++ b/src/main/java/com/dbnt/faisp/userInfo/model/UserInfo.java @@ -13,6 +13,7 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import javax.persistence.*; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Collection; import java.util.HashSet; @@ -31,22 +32,66 @@ public class UserInfo extends BaseModel implements UserDetails{ @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_seq") private Integer userSeq; + @Column(name = "dic_code") + private String dicCode; @Column(name = "user_id") private String userId; @Column(name = "passwd") private String password; @Column(name = "user_nm") private String userNm; - @Column(name = "og_cd") - private String ogCd; - @Column(name = "ofc_cd") - private String ofcCd; + @Column(name = "birth_date") + private LocalDate birthDate; + @Column(name = "sex") + private String sex; + @Column(name = "email") + private String email; + @Column(name = "phone_no") + private String phoneNo; + @Column(name = "area_cd") + private String areaCd; + @Column(name = "login_chk") + private String loginChk; + @Column(name = "fail_cnt") + private Integer failCnt; @Column(name = "user_role") private String userRole; @Column(name = "user_status") private String userStatus; + @Column(name = "og_cd") + private String ogCd; + @Column(name = "ofc_cd") + private String ofcCd; + @Column(name = "title_cd") + private String titleCd; @Column(name = "wrt_dt") private LocalDateTime wrtDt; + @Column(name = "group_cd") + private String groupCd; + @Column(name = "series_cd") + private String seriesCd; + @Column(name = "ofc_head_yn") + private String ofcHeadYn; + @Column(name = "hiring_cd") + private String hiringCd; + @Column(name = "employ_cd") + private String employCd; + @Column(name = "outturn_cd") + private String outturnCd; + @Column(name = "work_cd") + private String workCd; + @Column(name = "job_in_cd") + private String jobInCd; + @Column(name = "language_cd") + private String languageCd; + @Column(name = "police_in_date") + private LocalDate policeInDate; + @Column(name = "organ_in_date") + private LocalDate organInDate; + @Column(name = "ofc_in_date") + private LocalDate ofcInDate; + @Column(name = "title_in_date") + private LocalDate titleInDate; @Transient private String modifyPassword; diff --git a/src/main/java/com/dbnt/faisp/util/Utils.java b/src/main/java/com/dbnt/faisp/util/Utils.java index e18d231e..03c19b6c 100644 --- a/src/main/java/com/dbnt/faisp/util/Utils.java +++ b/src/main/java/com/dbnt/faisp/util/Utils.java @@ -26,6 +26,7 @@ import org.apache.poi.xssf.usermodel.XSSFDataFormat; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.dbnt.faisp.equip.model.CellPhone; +import com.dbnt.faisp.equip.model.UseList; import com.dbnt.faisp.fipTarget.model.PartInfo; import com.dbnt.faisp.fipTarget.model.PartWork; @@ -749,6 +750,116 @@ public class Utils { } } + + public static void useListToExcel(List useExcelList, HttpServletResponse response, String[] headers, + String[] headerNames, String[] columnType, String sheetName, String excelFileName) throws IOException { + if(Utils.isNotEmpty(useExcelList)) { + // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. + XSSFWorkbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet(sheetName); + Row headerRow = sheet.createRow(0); + 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.setAlignment(HorizontalAlignment.CENTER); + 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"); + out.write(""); + out.write(""); + out.write(""); + out.write(""); + out.write(""); + + out.flush(); + out.close(); + } + + } diff --git a/src/main/resources/mybatisMapper/EquipMapper.xml b/src/main/resources/mybatisMapper/EquipMapper.xml index ae608c15..2bc02baf 100644 --- a/src/main/resources/mybatisMapper/EquipMapper.xml +++ b/src/main/resources/mybatisMapper/EquipMapper.xml @@ -414,7 +414,9 @@ #{item} order by cm.wrt_dt desc + limit #{rowCnt} offset #{firstIndex} + + + + and ul.mgt_organ = #{mgtOrgan} + + + and ul.use_no like '%'||#{useNo}||'%' + + + and ul.detail_type = #{detailType} + + + + and ul.use_dt >= #{startDate}::date + + + and ul.use_dt <= #{endDate}::date+1 + + + + + and ul.wrt_dt >= #{startDate}::date + + + and ul.wrt_dt <= #{endDate}::date+1 + + + + + + \ No newline at end of file diff --git a/src/main/resources/mybatisMapper/UserInfoMapper.xml b/src/main/resources/mybatisMapper/UserInfoMapper.xml index 73e99b2c..b187afe2 100644 --- a/src/main/resources/mybatisMapper/UserInfoMapper.xml +++ b/src/main/resources/mybatisMapper/UserInfoMapper.xml @@ -4,39 +4,41 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + user_status = #{userStatus} + + + user_status != 'D' + + + + and user_id like '%'||#{userId}||'%' + + + and user_nm like '%'||#{userNm}||'%' + + + and og_cd = #{ogCd} + + + and ofc_cd = #{ofcCd} + + + @@ -44,27 +46,7 @@ +
diff --git a/src/main/resources/templates/equip/equipHistory.html b/src/main/resources/templates/equip/equipHistory.html index 2f384aa8..7ffddc24 100644 --- a/src/main/resources/templates/equip/equipHistory.html +++ b/src/main/resources/templates/equip/equipHistory.html @@ -1,6 +1,5 @@ -
- \ No newline at end of file diff --git a/src/main/resources/templates/equip/equipModifyModal.html b/src/main/resources/templates/equip/equipModifyModal.html index 9177487f..f725c293 100644 --- a/src/main/resources/templates/equip/equipModifyModal.html +++ b/src/main/resources/templates/equip/equipModifyModal.html @@ -1,6 +1,5 @@ - + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/equip/pvreEditModal.html b/src/main/resources/templates/equip/useEditModal.html similarity index 82% rename from src/main/resources/templates/equip/pvreEditModal.html rename to src/main/resources/templates/equip/useEditModal.html index c591fdbe..ce7a03d6 100644 --- a/src/main/resources/templates/equip/pvreEditModal.html +++ b/src/main/resources/templates/equip/useEditModal.html @@ -3,10 +3,10 @@