|
|
|
|
@ -83,14 +83,52 @@ public class CrdnLevyPrvntcServiceImpl extends EgovAbstractServiceImpl implement
|
|
|
|
|
vo.setMdfr(SessionUtil.getUserId());
|
|
|
|
|
|
|
|
|
|
vo.setLevyInfoId(crdnLevyPrvntcMapper.selectNextLevyInfoId());
|
|
|
|
|
return crdnLevyPrvntcMapper.insertLevyInfo(vo);
|
|
|
|
|
int result = crdnLevyPrvntcMapper.insertLevyInfo(vo);
|
|
|
|
|
|
|
|
|
|
// 중요로직: 부과정보 저장 후 모든 행위정보에 대한 데이터가 완료되면 부과총액을 자동 업데이트
|
|
|
|
|
if (result > 0) {
|
|
|
|
|
if (isAllLevyInfoCompleted(vo.getCrdnYr(), vo.getCrdnNo(), vo.getImpltTaskSeCd())) {
|
|
|
|
|
updateImpltCpsrAmt(vo.getCrdnYr(), vo.getCrdnNo(), vo.getImpltTaskSeCd());
|
|
|
|
|
log.debug("부과정보 등록 후 부과총액 자동 업데이트 완료 - 단속연도: {}, 단속번호: {}", vo.getCrdnYr(), vo.getCrdnNo());
|
|
|
|
|
} else {
|
|
|
|
|
log.debug("아직 모든 행위정보에 대한 부과정보가 완료되지 않음 - 단속연도: {}, 단속번호: {}", vo.getCrdnYr(), vo.getCrdnNo());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int updateLevyInfo(CrdnLevyInfoVO vo) {
|
|
|
|
|
log.debug("부과정보 수정 서비스 호출: {}", vo);
|
|
|
|
|
vo.setMdfr(SessionUtil.getUserId());
|
|
|
|
|
return crdnLevyPrvntcMapper.updateLevyInfo(vo);
|
|
|
|
|
int result = crdnLevyPrvntcMapper.updateLevyInfo(vo);
|
|
|
|
|
|
|
|
|
|
// 중요로직: 부과정보 수정 후 모든 행위정보에 대한 데이터가 완료되면 부과총액을 자동 업데이트
|
|
|
|
|
if (result > 0) {
|
|
|
|
|
if (isAllLevyInfoCompleted(vo.getCrdnYr(), vo.getCrdnNo(), vo.getImpltTaskSeCd())) {
|
|
|
|
|
updateImpltCpsrAmt(vo.getCrdnYr(), vo.getCrdnNo(), vo.getImpltTaskSeCd());
|
|
|
|
|
log.debug("부과정보 수정 후 부과총액 자동 업데이트 완료 - 단속연도: {}, 단속번호: {}", vo.getCrdnYr(), vo.getCrdnNo());
|
|
|
|
|
} else {
|
|
|
|
|
log.debug("아직 모든 행위정보에 대한 부과정보가 완료되지 않음 - 단속연도: {}, 단속번호: {}", vo.getCrdnYr(), vo.getCrdnNo());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int deleteLevyInfo(CrdnLevyInfoVO vo) {
|
|
|
|
|
log.debug("부과정보 삭제 서비스 호출: {}", vo);
|
|
|
|
|
int result = crdnLevyPrvntcMapper.deleteLevyInfo(vo);
|
|
|
|
|
|
|
|
|
|
// 중요로직: 부과정보 삭제 후 해당 단속의 이행강제금액을 null로 처리
|
|
|
|
|
if (result > 0) {
|
|
|
|
|
updateImpltCpsrAmtToNull(vo.getCrdnYr(), vo.getCrdnNo(), vo.getImpltTaskSeCd());
|
|
|
|
|
log.debug("부과정보 삭제 후 이행강제금액 null 처리 완료 - 단속연도: {}, 단속번호: {}", vo.getCrdnYr(), vo.getCrdnNo());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@ -100,8 +138,55 @@ public class CrdnLevyPrvntcServiceImpl extends EgovAbstractServiceImpl implement
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int deleteLevyInfo(CrdnLevyInfoVO vo) {
|
|
|
|
|
return crdnLevyPrvntcMapper.deleteLevyInfo(vo);
|
|
|
|
|
public int updateImpltCpsrAmt(String crdnYr, String crdnNo, String impltTaskSeCd) {
|
|
|
|
|
log.debug("부과총액 업데이트 서비스 호출 - 단속연도: {}, 단속번호: {}", crdnYr, crdnNo);
|
|
|
|
|
// 중요로직: 해당 단속의 모든 부과정보의 부과총액을 합산하여 이행강제금액으로 업데이트
|
|
|
|
|
return crdnLevyPrvntcMapper.updateImpltCpsrAmt(crdnYr, crdnNo, impltTaskSeCd);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int updateImpltCpsrAmtToNull(String crdnYr, String crdnNo, String impltTaskSeCd) {
|
|
|
|
|
log.debug("부과총액 null 처리 서비스 호출 - 단속연도: {}, 단속번호: {}", crdnYr, crdnNo);
|
|
|
|
|
// 중요로직: 해당 단속의 모든 부과정보의 이행강제금액을 null로 처리
|
|
|
|
|
return crdnLevyPrvntcMapper.updateImpltCpsrAmtToNull(crdnYr, crdnNo, impltTaskSeCd);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<String> selectActInfoKeys(String crdnYr, String crdnNo) {
|
|
|
|
|
return crdnLevyPrvntcMapper.selectActInfoKeys(crdnYr, crdnNo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int countLevyInfoByActInfoId(String crdnYr, String crdnNo, String actInfoId, String impltTaskSeCd) {
|
|
|
|
|
return crdnLevyPrvntcMapper.countLevyInfoByActInfoId(crdnYr, crdnNo, actInfoId, impltTaskSeCd);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 모든 행위정보에 대한 부과정보가 완료되었는지 확인
|
|
|
|
|
* @param crdnYr 단속연도
|
|
|
|
|
* @param crdnNo 단속번호
|
|
|
|
|
* @return 모든 데이터 완료 여부
|
|
|
|
|
*/
|
|
|
|
|
private boolean isAllLevyInfoCompleted(String crdnYr, String crdnNo, String impltTaskSeCd) {
|
|
|
|
|
// 중요로직: 해당 단속의 모든 행위정보에 대해 부과정보가 존재하는지 확인
|
|
|
|
|
List<String> actInfoKeys = selectActInfoKeys(crdnYr, crdnNo);
|
|
|
|
|
|
|
|
|
|
if (actInfoKeys.isEmpty()) {
|
|
|
|
|
log.debug("행위정보가 없습니다 - 단속연도: {}, 단속번호: {}", crdnYr, crdnNo);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (String actInfoId : actInfoKeys) {
|
|
|
|
|
int count = countLevyInfoByActInfoId(crdnYr, crdnNo, actInfoId, impltTaskSeCd);
|
|
|
|
|
if (count == 0) {
|
|
|
|
|
log.debug("부과정보가 없는 행위정보 발견 - 행위정보ID: {}", actInfoId);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.debug("모든 행위정보에 대한 부과정보가 완료됨 - 단속연도: {}, 단속번호: {}, 행위정보 개수: {}",
|
|
|
|
|
crdnYr, crdnNo, actInfoKeys.size());
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|