국제범죄검거현황 중간 커밋
parent
c2ccfed074
commit
3ca5daeff7
|
|
@ -0,0 +1,114 @@
|
||||||
|
package com.dbnt.faisp.faStatistics.internationalCrimeArrest;
|
||||||
|
|
||||||
|
import com.dbnt.faisp.authMgt.service.AuthMgtService;
|
||||||
|
import com.dbnt.faisp.codeMgt.model.CodeMgt;
|
||||||
|
import com.dbnt.faisp.codeMgt.service.CodeMgtService;
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.SuspectPersonInfoRepository;
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.service.InternationalCrimeArrestService;
|
||||||
|
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.model.ArrestType;
|
||||||
|
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.model.BoardInvestigation;
|
||||||
|
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.model.RelatedReports;
|
||||||
|
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.service.BoardInvestigationService;
|
||||||
|
import com.dbnt.faisp.organMgt.model.OrganConfig;
|
||||||
|
import com.dbnt.faisp.organMgt.service.OrganConfigService;
|
||||||
|
import com.dbnt.faisp.userInfo.model.UserInfo;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RequestMapping("/faStatistics")
|
||||||
|
public class InternationalCrimeArrestController {
|
||||||
|
|
||||||
|
private final AuthMgtService authMgtService;
|
||||||
|
private final InternationalCrimeArrestService internationalCrimeArrestService;
|
||||||
|
private final CodeMgtService codeMgtService;
|
||||||
|
private final OrganConfigService organConfigService;
|
||||||
|
private final SuspectPersonInfoRepository suspectPersonInfoRepository;
|
||||||
|
|
||||||
|
@GetMapping("/internationalCrimeArrest")
|
||||||
|
public ModelAndView arrest(@AuthenticationPrincipal UserInfo loginUser,InternationalCrimeArrest internationalCrimeArrest) {
|
||||||
|
ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrest");
|
||||||
|
|
||||||
|
//메뉴권한 확인
|
||||||
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/internationalCrimeArrest").get(0).getAccessAuth();
|
||||||
|
|
||||||
|
mav.addObject("accessAuth", accessAuth);
|
||||||
|
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||||
|
|
||||||
|
internationalCrimeArrest.setQueryInfo();
|
||||||
|
mav.addObject("internationalCrimeArrestList", internationalCrimeArrestService.selectInternationalCrimeArrestList(internationalCrimeArrest));
|
||||||
|
internationalCrimeArrest.setContentCnt(internationalCrimeArrestService.selectInternationalCrimeArrestListCnt(internationalCrimeArrest));
|
||||||
|
internationalCrimeArrest.setPaginationInfo();
|
||||||
|
mav.addObject("searchParams", internationalCrimeArrest);
|
||||||
|
return mav;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/internationalCrimeArrest/internationalCrimeArrestEditModal")
|
||||||
|
public ModelAndView ivsgtEditModal(@AuthenticationPrincipal UserInfo loginUser, InternationalCrimeArrest internationalCrimeArrest){
|
||||||
|
ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrestEditModal");
|
||||||
|
if(internationalCrimeArrest.getIcaKey()!=null){
|
||||||
|
internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey());
|
||||||
|
}else{
|
||||||
|
internationalCrimeArrest.setWrtOrgan(loginUser.getOgCd());
|
||||||
|
internationalCrimeArrest.setWrtNm(loginUser.getUserNm());
|
||||||
|
internationalCrimeArrest.setWrtDt(LocalDateTime.now());
|
||||||
|
internationalCrimeArrest.setSuspectPersonInfoList(suspectPersonInfoRepository.findByIcaKey(internationalCrimeArrest.getIcaKey()));
|
||||||
|
}
|
||||||
|
mav.addObject("organConfigList", selectOrganList());
|
||||||
|
mav.addObject("internationalCrimeArrest", internationalCrimeArrest);
|
||||||
|
return mav;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/internationalCrimeArrest/internationalCrimeArrestViewModal")
|
||||||
|
public ModelAndView ivsgtViewModal(@AuthenticationPrincipal UserInfo loginUser, InternationalCrimeArrest internationalCrimeArrest){
|
||||||
|
ModelAndView mav = new ModelAndView("faStatistics/internationalCrimeArrest/internationalCrimeArrestViewModal");
|
||||||
|
internationalCrimeArrest = internationalCrimeArrestService.selectInternationalCrimeArrest(internationalCrimeArrest.getIcaKey());
|
||||||
|
mav.addObject("internationalCrimeArrest", internationalCrimeArrest);
|
||||||
|
mav.addObject("userSeq",loginUser.getUserSeq());
|
||||||
|
//메뉴권한 확인
|
||||||
|
mav.addObject("accessAuth", authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/faStatistics/internationalCrimeArrest").get(0).getAccessAuth());
|
||||||
|
return mav;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/internationalCrimeArrest/saveInternationalCrimeArrest")
|
||||||
|
public Integer saveInternationalCrimeArrest(@AuthenticationPrincipal UserInfo loginUser,
|
||||||
|
InternationalCrimeArrest internationalCrimeArrest){
|
||||||
|
internationalCrimeArrest.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
|
return internationalCrimeArrestService.savedInternationalCrimeArrest(internationalCrimeArrest);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<OrganConfig> selectOrganList(){
|
||||||
|
List<CodeMgt> organCdList = codeMgtService.selectCodeMgtList("OG");
|
||||||
|
List<OrganConfig> organConfigList = organConfigService.selectSavedOrganList();
|
||||||
|
for(CodeMgt organCode: organCdList){
|
||||||
|
if(!organCode.getItemCd().equals("OG001")){
|
||||||
|
boolean usedFlag = false;
|
||||||
|
for(OrganConfig organConfig: organConfigList){
|
||||||
|
if(organCode.getItemCd().equals(organConfig.getOrganCd())){
|
||||||
|
usedFlag = true;
|
||||||
|
organConfig.setOrganNm(organCode.getItemValue());
|
||||||
|
organConfig.setUseState("T");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!usedFlag){
|
||||||
|
OrganConfig organConfig = new OrganConfig();
|
||||||
|
organConfig.setOrganCd(organCode.getItemCd());
|
||||||
|
organConfig.setOrganNm(organCode.getItemValue());
|
||||||
|
organConfig.setUseState("F");
|
||||||
|
organConfigList.add(organConfig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return organConfigList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper;
|
||||||
|
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface InternationalCrimeArrestMapper{
|
||||||
|
List<InternationalCrimeArrest> selectInternationalCrimeArrestList(InternationalCrimeArrest internationalCrimeArrest);
|
||||||
|
Integer selectInternationalCrimeArrestListCnt(InternationalCrimeArrest internationalCrimeArrest);
|
||||||
|
List<SuspectPersonInfo> selectSuspectPersonInfoList(Integer icaKey);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.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 org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Entity
|
||||||
|
@NoArgsConstructor
|
||||||
|
@DynamicInsert
|
||||||
|
@DynamicUpdate
|
||||||
|
@Table(name = "international_crime_arrest")
|
||||||
|
public class InternationalCrimeArrest extends BaseModel {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Column(name = "ica_key")
|
||||||
|
private Integer icaKey;
|
||||||
|
@Column(name = "organ")
|
||||||
|
private String organ;
|
||||||
|
@Column(name = "department")
|
||||||
|
private String department;
|
||||||
|
@Column(name = "crime_type")
|
||||||
|
private String crimeType;
|
||||||
|
@Column(name = "violation_type")
|
||||||
|
private String violationType;
|
||||||
|
@Column(name = "crime_name")
|
||||||
|
private String crimeName;
|
||||||
|
@Column(name = "smuggling_amount")
|
||||||
|
private String smugglingAmount;
|
||||||
|
@Column(name = "occur_table")
|
||||||
|
private String occurTable;
|
||||||
|
@Column(name = "arrest_table")
|
||||||
|
private String arrestTable;
|
||||||
|
@Column(name = "suspect_table")
|
||||||
|
private String suspectTable;
|
||||||
|
@Column(name = "crime_awareness_dt")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private LocalDate crimeAwarenessDt;
|
||||||
|
@Column(name = "case_sent_dt")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private LocalDate caseSentDt;
|
||||||
|
@Column(name = "process_result")
|
||||||
|
private String processResult;
|
||||||
|
@Column(name = "other_crime")
|
||||||
|
private String otherCrime;
|
||||||
|
@Column(name = "case_num")
|
||||||
|
private String caseNum;
|
||||||
|
@Column(name = "case_overview")
|
||||||
|
private String caseOverview;
|
||||||
|
@Column(name = "sea_area")
|
||||||
|
private String seaArea;
|
||||||
|
@Column(name = "arrest_area")
|
||||||
|
private String arrestArea;
|
||||||
|
@Column(name = "means")
|
||||||
|
private String means;
|
||||||
|
@Column(name = "purpose")
|
||||||
|
private String purpose;
|
||||||
|
@Column(name = "smuggled_goods")
|
||||||
|
private String smuggledGoods;
|
||||||
|
@Column(name = "crackdown_personel")
|
||||||
|
private Integer crackdownPersonel;
|
||||||
|
@Column(name = "violation_amount")
|
||||||
|
private String violationAmount;
|
||||||
|
@Column(name = "destination")
|
||||||
|
private String destination;
|
||||||
|
@Column(name = "content_status")
|
||||||
|
private String contentStatus;
|
||||||
|
@Column(name = "wrt_organ")
|
||||||
|
private String wrtOrgan;
|
||||||
|
@Column(name = "wrt_user_seq")
|
||||||
|
private Integer wrtUserSeq;
|
||||||
|
@Column(name = "wrt_nm")
|
||||||
|
private String wrtNm;
|
||||||
|
@Column(name = "wrt_dt")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||||
|
private LocalDateTime wrtDt;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private List<SuspectPersonInfo> suspectPersonInfoList;
|
||||||
|
@Transient
|
||||||
|
private List<Integer> deleteSpikeyList;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.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 org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Entity
|
||||||
|
@NoArgsConstructor
|
||||||
|
@DynamicInsert
|
||||||
|
@DynamicUpdate
|
||||||
|
@Table(name = "suspect_person_info")
|
||||||
|
public class SuspectPersonInfo extends BaseModel {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@Column(name = "spi_key")
|
||||||
|
private Integer spiKey;
|
||||||
|
@Column(name = "ica_key")
|
||||||
|
private Integer icaKey;
|
||||||
|
@Column(name = "sex")
|
||||||
|
private String sex;
|
||||||
|
@Column(name = "age")
|
||||||
|
private String age;
|
||||||
|
@Column(name = "country")
|
||||||
|
private String country;
|
||||||
|
@Column(name = "stay_qualification")
|
||||||
|
private String stayQualification;
|
||||||
|
@Column(name = "stay_period_expired_dt")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private LocalDateTime stayPeriodExpiredDt;
|
||||||
|
@Column(name = "entry_visa")
|
||||||
|
private String entryVisa;
|
||||||
|
@Column(name = "crime_form")
|
||||||
|
private String crimeForm;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private List<Integer> icaKeyList;
|
||||||
|
@Transient
|
||||||
|
private List<Integer> spiKeyList;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository;
|
||||||
|
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Modifying;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
public interface InternationalCrimeArrestRepository extends JpaRepository<InternationalCrimeArrest, Integer> {
|
||||||
|
@Transactional
|
||||||
|
@Modifying
|
||||||
|
@Query("delete from SuspectPersonInfo s where s.spiKey in :idList")
|
||||||
|
void deleteAllByIdInQuery(@Param("idList") List<Integer> deleteSpikeyList);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository;
|
||||||
|
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
public interface SuspectPersonInfoRepository extends JpaRepository<SuspectPersonInfo, Integer> {
|
||||||
|
List<SuspectPersonInfo> findByIcaKey(Integer icaKey);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
package com.dbnt.faisp.faStatistics.internationalCrimeArrest.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.dbnt.faisp.config.BaseService;
|
||||||
|
import com.dbnt.faisp.config.FileInfo;
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper.InternationalCrimeArrestMapper;
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.InternationalCrimeArrest;
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.model.SuspectPersonInfo;
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.InternationalCrimeArrestRepository;
|
||||||
|
import com.dbnt.faisp.faStatistics.internationalCrimeArrest.repository.SuspectPersonInfoRepository;
|
||||||
|
import com.dbnt.faisp.fpiMgt.affair.model.HashTag;
|
||||||
|
import com.dbnt.faisp.fpiMgt.affair.repository.HashTagRepository;
|
||||||
|
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.mapper.BoardInvestigationMapper;
|
||||||
|
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.model.*;
|
||||||
|
import com.dbnt.faisp.ivsgtMgt.boardInvestigation.repository.*;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class InternationalCrimeArrestService extends BaseService {
|
||||||
|
private final InternationalCrimeArrestRepository internationalCrimeArrestRepository;
|
||||||
|
private final InternationalCrimeArrestMapper internationalCrimeArrestMapper;
|
||||||
|
private final SuspectPersonInfoRepository suspectPersonInfoRepository;
|
||||||
|
|
||||||
|
public List<InternationalCrimeArrest> selectInternationalCrimeArrestList(InternationalCrimeArrest InternationalCrimeArrest) {
|
||||||
|
return internationalCrimeArrestMapper.selectInternationalCrimeArrestList(InternationalCrimeArrest);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer selectInternationalCrimeArrestListCnt(InternationalCrimeArrest internationalCrimeArrest) {
|
||||||
|
return internationalCrimeArrestMapper.selectInternationalCrimeArrestListCnt(internationalCrimeArrest);
|
||||||
|
}
|
||||||
|
|
||||||
|
public InternationalCrimeArrest selectInternationalCrimeArrest(Integer icaKey) {
|
||||||
|
InternationalCrimeArrest savedInternationalCrimeArrest = internationalCrimeArrestRepository.findById(icaKey).orElse(null);
|
||||||
|
if (savedInternationalCrimeArrest != null) {
|
||||||
|
savedInternationalCrimeArrest.setSuspectPersonInfoList(suspectPersonInfoRepository.findByIcaKey(icaKey));
|
||||||
|
}
|
||||||
|
return savedInternationalCrimeArrest;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public Integer savedInternationalCrimeArrest(InternationalCrimeArrest internationalCrimeArrest) {
|
||||||
|
Integer icaKey = internationalCrimeArrestRepository.save(internationalCrimeArrest).getIcaKey();
|
||||||
|
|
||||||
|
if (internationalCrimeArrest.getDeleteSpikeyList() != null) {
|
||||||
|
internationalCrimeArrestRepository.deleteAllByIdInQuery(internationalCrimeArrest.getDeleteSpikeyList());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (internationalCrimeArrest.getSuspectPersonInfoList() != null) {
|
||||||
|
suspectPersonInfoRepository.saveAll(internationalCrimeArrest.getSuspectPersonInfoList());
|
||||||
|
}
|
||||||
|
|
||||||
|
return icaKey;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
|
||||||
|
<mapper namespace="com.dbnt.faisp.faStatistics.internationalCrimeArrest.mapper.InternationalCrimeArrestMapper">
|
||||||
|
<sql id="selectInternationalCrimeArrestListWhere">
|
||||||
|
<where>
|
||||||
|
<if test='wrtOrgan != null and wrtOrgan != ""'>
|
||||||
|
AND a.wrt_organ = #{wrtOrgan}
|
||||||
|
</if>
|
||||||
|
<if test='dateSelector == "wrtDt"'>
|
||||||
|
<if test='startDate != null and startDate != ""'>
|
||||||
|
And a.wrt_dt >= #{startDate}::DATE
|
||||||
|
</if>
|
||||||
|
<if test='endDate != null and endDate != ""'>
|
||||||
|
AND a.wrt_dt <= #{endDate}::DATE+1
|
||||||
|
</if>
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="selectInternationalCrimeArrestList" resultType="InternationalCrimeArrest" parameterType="InternationalCrimeArrest">
|
||||||
|
SELECT
|
||||||
|
i.ica_key,
|
||||||
|
i.organ,
|
||||||
|
i.department,
|
||||||
|
i.crime_type,
|
||||||
|
i.violation_type,
|
||||||
|
i.crime_name,
|
||||||
|
i.smuggling_amount,
|
||||||
|
i.occur_table,
|
||||||
|
i.arrest_table,
|
||||||
|
i.suspect_table,
|
||||||
|
i.crime_awareness_dt,
|
||||||
|
i.case_sent_dt,
|
||||||
|
i.process_result,
|
||||||
|
i.other_crime,
|
||||||
|
i.case_num,
|
||||||
|
i.case_overview,
|
||||||
|
i.arrest_area,
|
||||||
|
i.means,
|
||||||
|
i.purpose,
|
||||||
|
i.smuggled_goods,
|
||||||
|
i.crackdown_personel,
|
||||||
|
i.violation_amount,
|
||||||
|
i.destination,
|
||||||
|
i.content_status,
|
||||||
|
i.wrt_organ,
|
||||||
|
i.wrt_user_seq,
|
||||||
|
i.wrt_nm,
|
||||||
|
i.wrt_dt
|
||||||
|
FROM international_crime_arrest i
|
||||||
|
<include refid="selectInternationalCrimeArrestListWhere"></include>
|
||||||
|
ORDER BY i.ica_key DESC
|
||||||
|
LIMIT #{rowCnt} OFFSET #{firstIndex}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectInternationalCrimeArrestListCnt" resultType="int" parameterType="InternationalCrimeArrest">
|
||||||
|
SELECT count(*)
|
||||||
|
FROM international_crime_arrest
|
||||||
|
<include refid="selectInternationalCrimeArrestListWhere"></include>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectSuspectPersonInfoList" resultType="SuspectPersonInfo" parameterType="int">
|
||||||
|
SELECT
|
||||||
|
s.spi_key,
|
||||||
|
s.ica_key,
|
||||||
|
s.sex,
|
||||||
|
s.age,
|
||||||
|
s.country,
|
||||||
|
s.stay_qualification,
|
||||||
|
s.stay_period_expired_dt,
|
||||||
|
s.entry_visa,
|
||||||
|
s.crime_form
|
||||||
|
FROM suspect_person_info s
|
||||||
|
INNER JOIN international_crime_arrest i
|
||||||
|
ON s.ica_key = i.ica_key
|
||||||
|
WHERE s.ica_key = #{icaKey}
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
|
|
@ -0,0 +1,473 @@
|
||||||
|
$(document).on('click', '#icaAddBtn', function () {
|
||||||
|
getIcaEditModal(null);
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('click', '#saveIcaBtn', function (){
|
||||||
|
saveInternationalCrimeArrest('N')
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('click', '#saveTempBtn', function (){
|
||||||
|
saveInternationalCrimeArrest('Y')
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#crimeForm', function (){
|
||||||
|
$('#crimeFormDiv').next().remove();
|
||||||
|
if ($(this).val() != 'CMF001') {
|
||||||
|
$('#crimeFormDiv').after('<button type="button" class="col-sm-1 btn btn-sm btn-primary" id="spiAddBtn">+</button>');
|
||||||
|
} else {
|
||||||
|
$("#spiDiv").children('.dynamic').remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('click', '#spiAddBtn', function (){
|
||||||
|
|
||||||
|
let sex = '';
|
||||||
|
commonCode.SEX.forEach(function (item){
|
||||||
|
sex += '<option value="'+ item.itemCd +'">' + item.itemValue +'</option>';
|
||||||
|
});
|
||||||
|
|
||||||
|
let age = '';
|
||||||
|
commonCode.AGE.forEach(function (item){
|
||||||
|
age += '<option value="'+ item.itemCd +'">' + item.itemValue +'</option>';
|
||||||
|
})
|
||||||
|
|
||||||
|
let country = '';
|
||||||
|
commonCode.NNY.forEach(function (item){
|
||||||
|
country += '<option value="'+ item.itemCd +'">' + item.itemValue +'</option>';
|
||||||
|
})
|
||||||
|
|
||||||
|
$("#spiDiv").append(
|
||||||
|
'<div class="row dynamic spi-list">'
|
||||||
|
+ '<label class="col-sm-1 col-form-label text-center">성별</label>'
|
||||||
|
+ '<div class="col-sm-2" id="sexFormDiv">'
|
||||||
|
+ '<select class="form-select form-select-sm" name="sex">'
|
||||||
|
+ sex
|
||||||
|
+ '</select>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '<label class="col-sm-1 col-form-label text-center">나이</label>'
|
||||||
|
+ '<div class="col-sm-2" id="ageFormDiv">'
|
||||||
|
+ '<select class="form-select form-select-sm" name="age">'
|
||||||
|
+ age
|
||||||
|
+ '</select>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '<label class="col-sm-1 col-form-label text-center">국적</label>'
|
||||||
|
+ '<div class="col-sm-2" id="countryFormDiv">'
|
||||||
|
+ '<select class="form-select form-select-sm country" name="country">'
|
||||||
|
+ country
|
||||||
|
+ '<option value="etc">기타</option>'
|
||||||
|
+ '</select>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '<button type="button" class="col-sm-1 btn btn-sm btn-primary" id="spiCancelBtn">-</button>'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '.country', function (){
|
||||||
|
if ($(this).val() == 'etc') {
|
||||||
|
$(this).parent().after(
|
||||||
|
'<div class="col-sm-2">'
|
||||||
|
+ '<input type="text" class="form-control" name="countryEtc">'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$(this).parent().next().remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#processResult', function (){
|
||||||
|
if ($(this).val() == 'etc') {
|
||||||
|
$(this).parent().after(
|
||||||
|
'<div class="col-sm-2">'
|
||||||
|
+ '<input type="text" class="form-control" name="processResultEtc">'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$(this).parent().next().remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('click', '#spiCancelBtn', function (){
|
||||||
|
$(this).parent().remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#crimeType', function (){
|
||||||
|
$('#smugglingAmountDiv').children().remove();
|
||||||
|
$('#crimeNameDiv').children().remove();
|
||||||
|
$('#arrestAreaDiv').remove();
|
||||||
|
|
||||||
|
let smugglingAmount = '';
|
||||||
|
commonCode.SG.forEach(function (item){
|
||||||
|
smugglingAmount += '<option value="'+ item.itemCd +'">' + item.itemValue +'</option>';
|
||||||
|
})
|
||||||
|
|
||||||
|
if ($(this).val() == 'CTH002') {
|
||||||
|
makeArrestAreaDiv('장소');
|
||||||
|
$('#smugglingAmountDiv').append(
|
||||||
|
'<label class="col-sm-2 col-form-label text-center">밀수입출 품목</label>'
|
||||||
|
+ '<div class="col-sm-2">'
|
||||||
|
+ '<select class="form-select form-select-sm" name="smuggledGoods" id="smugglingAmount">'
|
||||||
|
+ '<option value=""></option>'
|
||||||
|
+ smugglingAmount
|
||||||
|
+ '<option value="etc">기타</option>'
|
||||||
|
+ '</select>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '<label class="col-sm-2 col-form-label text-center">밀수가액</label>'
|
||||||
|
+ '<div class="col-sm-2">'
|
||||||
|
+ '<input type="number" min="0" name="smugglingAmount">'
|
||||||
|
+ '</div>'
|
||||||
|
+ '<label class="col-sm-2 col-form-label text-center">단속 인원(경찰관)</label>'
|
||||||
|
+ '<div class="col-sm-2">'
|
||||||
|
+ '<input type="number" min="0" name="caseNum">'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$("#crimeNameDiv").append(
|
||||||
|
'<label class="col-sm-2 col-form-label text-center">죄명</label>'
|
||||||
|
+ '<div class="col-sm-10 input-daterange">'
|
||||||
|
+ '<input type="text" class="form-control" name="crimeName">'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#violationType', function (){
|
||||||
|
$('#spiInfoDiv').remove();
|
||||||
|
$('#arrestAreaDiv').remove();
|
||||||
|
$('#meansDiv').remove();
|
||||||
|
$('.entryVisa').remove();
|
||||||
|
$('#violationAmountDiv').remove();
|
||||||
|
|
||||||
|
if ($(this).val() == 'VLT001') {
|
||||||
|
makeSpiInfoDiv('피의자 정보');
|
||||||
|
makeArrestAreaDiv('지역');
|
||||||
|
makeSeaAreaDiv('밀입국');
|
||||||
|
makeMeansDiv('밀입국');
|
||||||
|
makePurposeDiv('밀입국');
|
||||||
|
makeDestinationDiv('밀입국 출발지(국가)');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($(this).val() == 'VLT002') {
|
||||||
|
makeSpiInfoDiv('피의자 정보');
|
||||||
|
makeArrestAreaDiv('지역');
|
||||||
|
makeSeaAreaDiv('도외이탈');
|
||||||
|
makeMeansDiv('도외이탈');
|
||||||
|
makePurposeDiv('도외이탈');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($(this).val() == 'VLT003') {
|
||||||
|
makeSpiInfoDiv('피의자 정보');
|
||||||
|
makeArrestAreaDiv('지역');
|
||||||
|
makeSeaAreaDiv('밀출국');
|
||||||
|
makeMeansDiv('밀출국');
|
||||||
|
makePurposeDiv('밀출국');
|
||||||
|
makeDestinationDiv('밀출국 행선지(도착예정지)');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($(this).val() == 'VLT004') {
|
||||||
|
makeSpiInfoDiv('피의자 정보');
|
||||||
|
makeArrestAreaDiv('지역');
|
||||||
|
makeSeaAreaDiv('밀항');
|
||||||
|
makeMeansDiv('밀항');
|
||||||
|
makePurposeDiv('밀항');
|
||||||
|
makeDestinationDiv('밀항 행선지(도착예정지)');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($(this).val() == 'VLT005') {
|
||||||
|
makeSpiInfoDiv('불법체류 및 취업');
|
||||||
|
makeEntryVisaDiv();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($(this).val() == 'VLT301') {
|
||||||
|
makeViolationAmountDiv();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#smugglingAmount', function (){
|
||||||
|
if ($(this).val() == 'etc') {
|
||||||
|
$(this).parent().append(
|
||||||
|
'<div class="col-auto">'
|
||||||
|
+ '<input type="text" class="form-control" name="smugglingAmountEtc">'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$(this).next().remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#means', function (){
|
||||||
|
if ($(this).val() == 'etc') {
|
||||||
|
$(this).parent().append(
|
||||||
|
'<div class="col-auto">'
|
||||||
|
+ '<input type="text" class="form-control" name="meansEtc">'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$(this).next().remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#purpose', function (){
|
||||||
|
if ($(this).val() == 'etc') {
|
||||||
|
$(this).parent().append(
|
||||||
|
'<div class="col-auto">'
|
||||||
|
+ '<input type="text" class="form-control" name="purposesEtc">'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$(this).next().remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(function(){
|
||||||
|
$("#datePickerDiv").datepicker({
|
||||||
|
format: "yyyy-mm-dd",
|
||||||
|
language: "ko"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function makeEntryVisaDiv() {
|
||||||
|
$('#spiWrapper').prepend(
|
||||||
|
'<label class="col-sm-2 col-form-label text-center entryVisa">입국비자</label>'
|
||||||
|
+ '<div class="col-sm-2 entryVisa">'
|
||||||
|
+ '<input type="text" class="form-control" name="entryVisa">'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeSpiInfoDiv(name) {
|
||||||
|
$('#spiParentDiv').after(
|
||||||
|
'<div class="mb-3 row" id="spiInfoDiv">'
|
||||||
|
+ '<label class="col-sm-2 col-form-label text-center">' + name + '</label>'
|
||||||
|
+ '<div class="col-sm-10">'
|
||||||
|
+ '<div class="row" id="spiWrapper">'
|
||||||
|
+ '<label class="col-sm-2 col-form-label text-center">체류 자격</label>'
|
||||||
|
+ '<div class="col-sm-2">'
|
||||||
|
+ '<input type="text" class="form-control" name="stayQualification">'
|
||||||
|
+ '</div>'
|
||||||
|
+ '<label class="col-sm-2 col-form-label text-center">체류기간 만료일</label>'
|
||||||
|
+ '<div class="col-sm-2 input-daterange" id="stayQualificationDiv">'
|
||||||
|
+ '<input type="text" class="form-control" name="stayPeriodExpiredDt" id="stayPeriodExpiredDt" readonly>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
$("#stayQualificationDiv").datepicker({
|
||||||
|
format: "yyyy-mm-dd",
|
||||||
|
language: "ko"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeSeaAreaDiv(name) {
|
||||||
|
|
||||||
|
let seaArea = '';
|
||||||
|
commonCode.SAA.forEach(function (item){
|
||||||
|
seaArea += '<option value="'+ item.itemCd +'">' + item.itemValue +'</option>';
|
||||||
|
})
|
||||||
|
|
||||||
|
$('#arrestAreaDiv').append(
|
||||||
|
'<label class="col-sm-2 col-form-label text-center">' + name + '시도 해역(해안)</label>'
|
||||||
|
+ '<div class="col-sm-3">'
|
||||||
|
+ '<select class="form-select form-select-sm" name="smugglingAmount">'
|
||||||
|
+ '<option value=""></option>'
|
||||||
|
+ seaArea
|
||||||
|
+ '</select>'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeArrestAreaDiv(name) {
|
||||||
|
|
||||||
|
let arrestArea = '';
|
||||||
|
commonCode.SAA.forEach(function (item){
|
||||||
|
arrestArea += '<option value="'+ item.itemCd +'">' + item.itemValue +'</option>';
|
||||||
|
})
|
||||||
|
|
||||||
|
$('#spiParentDiv').after(
|
||||||
|
'<div class="mb-3 row" id="arrestAreaDiv">'
|
||||||
|
+ '<label class="col-sm-2 col-form-label text-center">검거' + name + '</label>'
|
||||||
|
+ '<div class="col-sm-2">'
|
||||||
|
+ '<input type="text" class="form-control" name="arrestArea">'
|
||||||
|
+ '</div>'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeMeansDiv(name, code) {
|
||||||
|
let means = '';
|
||||||
|
if (code == 'VLT001') {
|
||||||
|
commonCode.MS1.forEach(function (item){
|
||||||
|
means += '<option value="'+ item.itemCd +'">' + item.itemValue +'</option>';
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
commonCode.MS2.forEach(function (item){
|
||||||
|
means += '<option value="'+ item.itemCd +'">' + item.itemValue +'</option>';
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#spiParentDiv').after(
|
||||||
|
'<div class="mb-3 row" id="meansDiv">'
|
||||||
|
+ '<label class="col-sm-2 col-form-label text-center">' + name + ' 수단(방법)</label>'
|
||||||
|
+ '<div class="col-sm-2">'
|
||||||
|
+ '<select class="form-select form-select-sm" name="means" id="means">'
|
||||||
|
+ '<option value=""></option>'
|
||||||
|
+ means
|
||||||
|
+ '<option value="etc">기타</option>'
|
||||||
|
+ '</select>'
|
||||||
|
+ '</div>'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function makePurposeDiv(name) {
|
||||||
|
|
||||||
|
let purpose = "";
|
||||||
|
commonCode.PPS.forEach(function (item){
|
||||||
|
purpose += '<option value="'+ item.itemCd +'">' + item.itemValue +'</option>';
|
||||||
|
})
|
||||||
|
|
||||||
|
$('#meansDiv').append(
|
||||||
|
'<label class="col-sm-2 col-form-label text-center">' + name + ' 목적(사유)</label>'
|
||||||
|
+ '<div class="col-sm-2">'
|
||||||
|
+ '<select class="form-select form-select-sm" name="purpose" id="purpose">'
|
||||||
|
+ '<option value=""></option>'
|
||||||
|
+ purpose
|
||||||
|
+ '<option value="etc">기타</option>'
|
||||||
|
+ '</select>'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeDestinationDiv(name) {
|
||||||
|
$('#meansDiv').append(
|
||||||
|
'<label class="col-sm-2 col-form-label text-center">' + name + '</label>'
|
||||||
|
+ '<div class="col-sm-2">'
|
||||||
|
+ '<input type="text" class="form-control" name="destination">'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeViolationAmountDiv() {
|
||||||
|
$('#spiParentDiv').after(
|
||||||
|
'<div class="mb-3 row" id="violationAmountDiv">'
|
||||||
|
+ '<label class="col-sm-2 col-form-label text-center">표시위반 금액(만원)</label>'
|
||||||
|
+ '<div class="col-sm-2">'
|
||||||
|
+ '<input type="number" min="0" class="form-control" name="violationAmount">'
|
||||||
|
+ '</div>'
|
||||||
|
+ '</div>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getIcaViewModal(ivsgtKey){
|
||||||
|
$.ajax({
|
||||||
|
url: '/faStatistics/internationalCrimeArrest/internationalCrimeArrestViewModal',
|
||||||
|
data: {ivsgtKey: ivsgtKey},
|
||||||
|
type: 'GET',
|
||||||
|
dataType:"html",
|
||||||
|
success: function(html){
|
||||||
|
$("#ivsgtViewBody").empty().append(html)
|
||||||
|
$("#ivsgtViewModal").modal('show');
|
||||||
|
},
|
||||||
|
error:function(){
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getIcaEditModal(icaKey){
|
||||||
|
$.ajax({
|
||||||
|
url: '/faStatistics/internationalCrimeArrest/internationalCrimeArrestEditModal',
|
||||||
|
data: {
|
||||||
|
icaKey: icaKey
|
||||||
|
},
|
||||||
|
type: 'GET',
|
||||||
|
dataType:"html",
|
||||||
|
success: function(html){
|
||||||
|
$("#icaEditModalContent").empty().append(html)
|
||||||
|
$("#icaEditModal").modal('show');
|
||||||
|
$("#crimeAwarenessDtDiv").datepicker({
|
||||||
|
format: "yyyy-mm-dd",
|
||||||
|
language: "ko"
|
||||||
|
});
|
||||||
|
$("#caseSentDtDiv").datepicker({
|
||||||
|
format: "yyyy-mm-dd",
|
||||||
|
language: "ko"
|
||||||
|
});
|
||||||
|
$("[name='caseOverview']").summernote({
|
||||||
|
lang:'ko-KR',
|
||||||
|
height: 120,
|
||||||
|
disableDragAndDrop: true,
|
||||||
|
toolbar: [
|
||||||
|
['style', ['style']],
|
||||||
|
['font', ['bold', 'underline', 'clear']],
|
||||||
|
['color', ['color']],
|
||||||
|
['para', ['ul', 'ol', 'paragraph']],
|
||||||
|
['table', ['table']]
|
||||||
|
]
|
||||||
|
});
|
||||||
|
},
|
||||||
|
error:function(){
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveInternationalCrimeArrest(contentState){
|
||||||
|
if(contentCheck()){
|
||||||
|
if(confirm("저장하시겠습니까?")){
|
||||||
|
$("#contentStatus").val(contentState);
|
||||||
|
contentFade("in");
|
||||||
|
const formData = new FormData($("#icaEditForm")[0]);
|
||||||
|
|
||||||
|
let spiList = [];
|
||||||
|
|
||||||
|
$(".spi-list").each(function (){
|
||||||
|
spiList.push({
|
||||||
|
sex: $(this).find('select[name="sex"]').val(),
|
||||||
|
age: $(this).find('select[name="age"]').val(),
|
||||||
|
country: $(this).find('select[name="country"]').val()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
for (let i=0; i < spiList.length; i++) {
|
||||||
|
formData.append(`suspectPersonInfoList[${i}].sex`, spiList[i].sex);
|
||||||
|
formData.append(`suspectPersonInfoList[${i}].age`, spiList[i].age);
|
||||||
|
formData.append(`suspectPersonInfoList[${i}].country`, spiList[i].country);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
// formData 출력
|
||||||
|
for (const [key,value] of formData.entries()) {
|
||||||
|
console.log(`${key}: ${value}`);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
$.ajax({
|
||||||
|
type : 'POST',
|
||||||
|
data : formData,
|
||||||
|
url : "/faStatistics/internationalCrimeArrest/saveInternationalCrimeArrest",
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
success : function(result) {
|
||||||
|
alert("저장되었습니다.");
|
||||||
|
contentFade("out");
|
||||||
|
$("#icaEditModal").modal('hide');
|
||||||
|
// getIcaViewModal(result);
|
||||||
|
},
|
||||||
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function contentCheck(){
|
||||||
|
let flag = true;
|
||||||
|
if(!$('select[name="organ"]').val()){
|
||||||
|
alert("지방청을 선택해주세요.")
|
||||||
|
flag = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,122 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
|
||||||
|
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"
|
||||||
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
|
layout:decorate="~{layout/layout}">
|
||||||
|
<th:block layout:fragment="script">
|
||||||
|
<script th:inline="javascript">
|
||||||
|
const internationalCrimeArrest = [[${internationalCrimeArrest}]];
|
||||||
|
const commonCode = [[${session.commonCode}]];
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" th:src="@{/js/faStatistics/internationalCrimeArrest.js}"></script>
|
||||||
|
</th:block>
|
||||||
|
<div layout:fragment="content">
|
||||||
|
<main class="pt-3">
|
||||||
|
<h4>국제범죄검거 현황</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">
|
||||||
|
<div class="col-12 card">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="tab-pane fade show active" id="ica" role="tabpanel"
|
||||||
|
aria-labelledby="arrest-tab">
|
||||||
|
<table class="table table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>지방청</th>
|
||||||
|
<th>경찰서</th>
|
||||||
|
<th>
|
||||||
|
<div>범죄테마</div>
|
||||||
|
<div>(대분류)</div>
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
<div>위반유형</div>
|
||||||
|
<div>(중분류)</div>
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
<div>죄명</div>
|
||||||
|
<div>(소분류)</div>
|
||||||
|
</th>
|
||||||
|
<th>발생원표</th>
|
||||||
|
<th>검거원표</th>
|
||||||
|
<th>피의자원표</th>
|
||||||
|
<th>피의자 인적사항</th>
|
||||||
|
<th>범죄인지</th>
|
||||||
|
<th>사건송치</th>
|
||||||
|
<th>신병처리</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="tr" th:each="internationalCrimeArrest:${internationalCrimeArrestList}" th:data-key="${internationalCrimeArrest.icaKey}">
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
||||||
|
<td th:if="${internationalCrimeArrest.organ eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
||||||
|
</th:block>
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
||||||
|
<td th:if="${internationalCrimeArrest.department eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
||||||
|
</th:block>
|
||||||
|
<td th:text="${internationalCrimeArrest.crimeType}"></td>
|
||||||
|
<td th:text="${internationalCrimeArrest.violationType}"></td>
|
||||||
|
<td th:text="${internationalCrimeArrest.crimeName}"></td>
|
||||||
|
<td th:text="${internationalCrimeArrest.occurTable}"></td>
|
||||||
|
<td th:text="${internationalCrimeArrest.arrestTable}"></td>
|
||||||
|
<td th:text="${internationalCrimeArrest.suspectTable}"></td>
|
||||||
|
<td th:text="${internationalCrimeArrest.suspectTable}"></td>
|
||||||
|
<td th:text="${#temporals.format(internationalCrimeArrest.crimeAwarenessDt, 'yyyy-MM-dd')}"></td>
|
||||||
|
<td th:text="${#temporals.format(internationalCrimeArrest.caseSentDt, 'yyyy-MM-dd')}"></td>
|
||||||
|
<td th:text="${internationalCrimeArrest.processResult}"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<button id="ivsgtAddBtn">관리자마감</button>
|
||||||
|
<button id="ivsgtAddBtn">엑셀 다운로드</button>
|
||||||
|
<button id="icaAddBtn">등록</button>
|
||||||
|
</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 eq 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 class="modal fade" id="icaEditModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="icaEditModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||||
|
<div class="modal-content" id="icaEditModalContent">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal fade" id="icaViewModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="icaViewModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
||||||
|
<div class="modal-content" id="icaViewBody">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,205 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="planEditModalLabel">국제범죄검거 현황 등록</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body" id="icaEditBody">
|
||||||
|
<form action="#" method="post" id="icaEditForm">
|
||||||
|
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||||
|
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||||
|
<input type="hidden" name="icaKey" th:value="${internationalCrimeArrest.icaKey}">
|
||||||
|
<input type="hidden" name="wrtOrgan" th:value="${internationalCrimeArrest.wrtOrgan}">
|
||||||
|
<input type="hidden" name="wrtNm" th:value="${internationalCrimeArrest.wrtNm}">
|
||||||
|
<input type="hidden" name="wrtDt" th:value="${#temporals.format(internationalCrimeArrest.wrtDt, 'yyyy-MM-dd HH:mm')}">
|
||||||
|
<input type="hidden" id="contentStatus" name="contentStatus">
|
||||||
|
<div class="mb-3 row">
|
||||||
|
<label class="col-sm-2 col-form-label text-center">지방청w</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" name="organ">
|
||||||
|
<option value="">지방청</option>
|
||||||
|
<th:block th:each="organConfig:${organConfigList}">
|
||||||
|
<th:block th:if="${organConfig.parentOrgan eq 'OG001' && organConfig.organType ne 'OGC001'}">
|
||||||
|
<option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}"></option>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-2 col-form-label text-center">관할서</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" name="department">
|
||||||
|
<option value="">관할서</option>
|
||||||
|
<th:block th:each="organConfig:${organConfigList}">
|
||||||
|
<th:block th:if="${organConfig.parentOrgan ne null && organConfig.organType ne 'OGC002'}">
|
||||||
|
<option th:value="${organConfig.organCd}" th:text="${organConfig.organNm}"></option>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 row" id="crimeNameDiv">
|
||||||
|
<label class="col-sm-2 col-form-label text-center">죄명</label>
|
||||||
|
<div class="col-sm-10 input-daterange">
|
||||||
|
<input type="text" class="form-control" name="crimeName" th:value="${internationalCrimeArrest.crimeName}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 row">
|
||||||
|
<label class="col-sm-2 col-form-label text-center">범죄테마</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" name="crimeType" id="crimeType">
|
||||||
|
<option value="">범죄테마</option>
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('CTH')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
|
||||||
|
th:selected="${commonCode.itemCd eq internationalCrimeArrest.crimeType}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-2 col-form-label text-center">위반유형</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" name="violationType" id="violationType">
|
||||||
|
<option value="">위반유형</option>
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('VLT')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
|
||||||
|
th:selected="${commonCode.itemCd eq internationalCrimeArrest.violationType}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 row" id="smugglingAmountDiv">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 row">
|
||||||
|
<label class="col-sm-2 col-form-label text-center">발생원표</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="text" name="occurTable" th:value="${internationalCrimeArrest.occurTable}">
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-2 col-form-label text-center">검거원표</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="text" name="arrestTable" th:value="${internationalCrimeArrest.arrestTable}">
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-2 col-form-label text-center">피의자원표</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="text" name="suspectTable" th:value="${internationalCrimeArrest.suspectTable}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 row">
|
||||||
|
<label class="col-sm-2 col-form-label text-center">범행형태</label>
|
||||||
|
<div class="col-sm-2" id="crimeFormDiv">
|
||||||
|
<select class="form-select form-select-sm" name="crimeForm" id="crimeForm">
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('CMF')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
|
||||||
|
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.crimeForm}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 row" id="spiParentDiv">
|
||||||
|
<label class="col-sm-2 col-form-label text-center">피의자 인적사항</label>
|
||||||
|
<div class="col-sm-10" id="spiDiv">
|
||||||
|
<div class="row spi-list">
|
||||||
|
<th:block th:if="${#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}">
|
||||||
|
<label class="col-sm-1 col-form-label text-center">성별</label>
|
||||||
|
<div class="col-sm-2" id="sexFormDiv">
|
||||||
|
<select class="form-select form-select-sm" name="sex">
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
|
||||||
|
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.sex}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-1 col-form-label text-center">나이</label>
|
||||||
|
<div class="col-sm-2" id="ageFormDiv">
|
||||||
|
<select class="form-select form-select-sm" name="age">
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('AGE')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
|
||||||
|
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.age}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-1 col-form-label text-center">국적</label>
|
||||||
|
<div class="col-sm-2" id="countryFormDiv">
|
||||||
|
<select class="form-select form-select-sm country" name="country">
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
|
||||||
|
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.conutry}"></option>
|
||||||
|
</th:block>
|
||||||
|
<option value="etc">기타</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</th:block>
|
||||||
|
<th:block th:if="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList)}">
|
||||||
|
<th:block th:each="suspectPersonInfo:${internationalCrimeArrest.suspectPersonInfoList}">
|
||||||
|
<label class="col-sm-1 col-form-label text-center">성별</label>
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
|
||||||
|
<th:block th:if="${commonCode.itemCd eq suspectPersonInfo.sex}">
|
||||||
|
<select class="form-select form-select-sm" name="sex">
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('SEX')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
|
||||||
|
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.sex}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
<label class="col-sm-1 col-form-label text-center">나이</label>
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('AGE')}">
|
||||||
|
<th:block th:if="${commonCode.itemCd eq suspectPersonInfo.age}">
|
||||||
|
<select class="form-select form-select-sm" name="age">
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('AGE')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
|
||||||
|
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.age}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
<label class="col-sm-1 col-form-label text-center">국적</label>
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
|
||||||
|
<th:block th:if="${commonCode.itemCd eq suspectPersonInfo.country}">
|
||||||
|
<select class="form-select form-select-sm country" name="country" id="country">
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('NNY')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
|
||||||
|
th:selected="${!#lists.isEmpty(internationalCrimeArrest.suspectPersonInfoList) && commonCode.itemCd eq internationalCrimeArrest.suspectPersonInfoList.conutry}"></option>
|
||||||
|
</th:block>
|
||||||
|
<option value="etc">기타</option>
|
||||||
|
</select>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 row">
|
||||||
|
<label class="col-sm-2 col-form-label text-center">범죄인지</label>
|
||||||
|
<div class="col-sm-1 input-daterange" id="crimeAwarenessDtDiv">
|
||||||
|
<input type="text" class="form-control" name="crimeAwarenessDt" id="crimeAwarenessDt" th:value="${#temporals.format(internationalCrimeArrest.crimeAwarenessDt, 'yyyy-MM-dd HH:mm')}" readonly>
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-2 col-form-label text-center">사건송치</label>
|
||||||
|
<div class="col-sm-1 input-daterange" id="caseSentDtDiv">
|
||||||
|
<input type="text" class="form-control" name="caseSentDt" id="caseSentDt" th:value="${#temporals.format(internationalCrimeArrest.caseSentDt, 'yyyy-MM-dd HH:mm')}" readonly>
|
||||||
|
</div>
|
||||||
|
<label class="col-sm-2 col-form-label text-center">신병처리</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" name="processResult" id="processResult">
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('PCR')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"
|
||||||
|
th:selected="${commonCode.itemCd eq internationalCrimeArrest.processResult}"></option>
|
||||||
|
</th:block>
|
||||||
|
<option value="etc">기타</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3 row justify-content-center">
|
||||||
|
<label for="caseOverviewDiv" class="col-sm-2 col-form-label text-center">범죄사실(사건개요)</label>
|
||||||
|
<div class="col-sm-10" id="caseOverviewDiv">
|
||||||
|
<textarea type='text' name='caseOverview' th:utext="${internationalCrimeArrest.caseOverview}"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||||
|
<button type="button" class="btn btn-warning" id="saveTempBtn">임시저장</button>
|
||||||
|
<button type="button" class="btn btn-primary" id="saveIcaBtn">저장</button>
|
||||||
|
</div>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue