소유자·행위자 관리: 위치정보 삭제 시 소유자·행위자·불법행위 삭제 여부 검증 로직 추가, 관련 서비스/매퍼 수정 및 예외 처리 적용

dev
박성영 4 months ago
parent 586eef40f4
commit 75295d857d

@ -82,4 +82,8 @@ public interface CrdnActInfoMapper {
*/
List<CrdnPstnIdxVO> getAllPstnIdx();
int existsActInfo(List<String> pstnInfoIds);
List<CrdnActInfoVO> existsActInfoList(List<String> pstnInfoIds);
}

@ -127,9 +127,9 @@ public class CrdnActInfoServiceImpl extends EgovAbstractServiceImpl implements C
throw new MessageException("사용자 정보를 확인할 수 없습니다.");
}
int checkCount = actrInfoMapper.selectActrInfoByActCount(actInfoIds);
int checkCount = actrInfoMapper.existsActrInfo(actInfoIds);
if( checkCount > 0 ) {
throw new MessageException("삭제할 행위정보에 해당하는 행위자정보가 존재합니다.");
throw new MessageException("행위자 정보 삭제 후 불법행위정보를 삭제 할 수 있습니다.");
}
// 중요한 로직 주석: 각 행위정보 ID에 대해 유효성 검증 후 논리 삭제 수행

@ -52,7 +52,7 @@ public interface CrdnActrInfoMapper {
* @param vo
* @return
*/
int selectActrInfoByActCount(List<String> actInfoIds);
int existsActrInfo(List<String> actInfoIds);
/**
* () ::

@ -31,6 +31,8 @@ public interface CrdnOwnrInfoMapper {
/** 삭제 (논리삭제) */
int deleteOwnrInfo(@Param("ownrInfoId") String ownrInfoId, @Param("dltr") String dltr);
int existsOwnrInfo(List<String> pstnInfoIds);
/** 중요로직: 특정 단속 건에서 소유자 중복 여부 확인 */
int checkDuplicateOwnr(CrdnOwnrInfoVO vo);

@ -1,6 +1,10 @@
package go.kr.project.crdn.crndRegistAndView.crdnPstnInfo.service.impl;
import egovframework.exception.MessageException;
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.mapper.CrdnActInfoMapper;
import go.kr.project.crdn.crndRegistAndView.crdnActInfo.model.CrdnActInfoVO;
import go.kr.project.crdn.crndRegistAndView.crdnActrInfo.mapper.CrdnActrInfoMapper;
import go.kr.project.crdn.crndRegistAndView.crdnOwnrInfo.mapper.CrdnOwnrInfoMapper;
import go.kr.project.crdn.crndRegistAndView.crdnPstnInfo.mapper.CrdnPstnInfoMapper;
import go.kr.project.crdn.crndRegistAndView.crdnPstnInfo.model.CrdnPstnInfoVO;
import go.kr.project.crdn.crndRegistAndView.crdnPstnInfo.service.CrdnPstnInfoService;
@ -9,7 +13,9 @@ import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* packageName : go.kr.project.crdn.crndRegistAndView.crdnPstnInfo.service.impl
@ -29,6 +35,9 @@ import java.util.List;
public class CrdnPstnInfoServiceImpl extends EgovAbstractServiceImpl implements CrdnPstnInfoService {
private final CrdnPstnInfoMapper mapper;
private final CrdnOwnrInfoMapper ownrInfoMapper;
private final CrdnActInfoMapper actInfoMapper;
private final CrdnActrInfoMapper actrInfoMapper;
@Override
public List<CrdnPstnInfoVO> selectPstnInfoList(CrdnPstnInfoVO vo) {
@ -69,7 +78,22 @@ public class CrdnPstnInfoServiceImpl extends EgovAbstractServiceImpl implements
if (pstnInfoIds == null || pstnInfoIds.isEmpty()) {
return 0;
}
List<CrdnActInfoVO> actInfoList = actInfoMapper.existsActInfoList(pstnInfoIds);
List<String> actInfoIds = new ArrayList<>();
if( actInfoList != null && !actInfoList.isEmpty() ){
actInfoIds.addAll(actInfoList.stream().map(CrdnActInfoVO::getActInfoId).collect(Collectors.toList()));
}
if( actrInfoMapper.existsActrInfo(actInfoIds) > 0 ){
throw new MessageException("행위자정보 삭제 후 위치정보를 삭제 할 수 있습니다.");
}
if( actInfoMapper.existsActInfo(pstnInfoIds) > 0 ){
throw new MessageException("불법행위정보 삭제 후 위치정보를 삭제 할 수 있습니다.");
}
if( ownrInfoMapper.existsOwnrInfo(pstnInfoIds) > 0 ){
throw new MessageException("소유자정보 삭제 후 위치정보를 삭제 할 수 있습니다.");
}
// 중요로직: 각 위치정보 ID에 대해 논리 삭제 수행
int deletedCount = 0;
for (String pstnInfoId : pstnInfoIds) {

@ -259,4 +259,28 @@
ORDER BY PSTN_IDX_NO
</select>
<!-- 삭제 전 count 체크 -->
<select id="existsActInfo" parameterType="List" resultType="int">
/* ActInfoMapper.existsActInfo 삭제 전 count 체크 */
SELECT count(*)
FROM tb_act_info
WHERE PSTN_INFO_ID IN
<foreach collection="list" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND DEL_YN = 'N'
</select>
<!-- 삭제 전 count 체크 -->
<select id="existsActInfoList" parameterType="List" resultType="CrdnActInfoVO">
/* ActInfoMapper.existsActInfo 삭제 전 count 체크 */
SELECT *
FROM tb_act_info
WHERE PSTN_INFO_ID IN
<foreach collection="list" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND DEL_YN = 'N'
</select>
</mapper>

@ -126,9 +126,9 @@
AND DEL_YN = 'N'
</update>
<!-- 위반행위자정보 삭제 (논리삭제) :: 불법행위정보 삭제로 인한 전체 삭제 전 count 체크 -->
<select id="selectActrInfoByActCount" parameterType="List" resultType="int">
/* ActrInfoMapper.selectActrInfoByActCount 위반행위자정보 삭제 (논리삭제) :: 불법행위정보 삭제로 인한 전체 삭제 전 count 체크 */
<!-- 삭제 전 count 체크 -->
<select id="existsActrInfo" parameterType="List" resultType="int">
/* ActrInfoMapper.existsActrInfo 삭제 전 count 체크 */
SELECT count(*)
FROM tb_actr_info
WHERE ACT_INFO_ID IN

@ -174,4 +174,16 @@
LIMIT 1
</select>
<!-- 삭제 전 count 체크 -->
<select id="existsOwnrInfo" parameterType="List" resultType="int">
/* OwnrInfoMapper.existsOwnrInfo 삭제 전 count 체크 */
SELECT count(*)
FROM tb_ownr_info
WHERE PSTN_INFO_ID IN
<foreach collection="list" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND DEL_YN = 'N'
</select>
</mapper>
Loading…
Cancel
Save