|
|
@ -385,10 +385,164 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
String ctpvCode = ""; // 시도 코드
|
|
|
|
String ctpvCode = ""; // 시도 코드
|
|
|
|
String sealCd3 = ""; // 내용문 상세 종류 3번째(마지막) 자리
|
|
|
|
String sealCd3 = ""; // 내용문 상세 종류 3번째(마지막) 자리
|
|
|
|
String jobCd = "";
|
|
|
|
String jobCd = "";
|
|
|
|
String conKey = "";
|
|
|
|
String conKey = ""; // 외부연계식별키
|
|
|
|
|
|
|
|
|
|
|
|
// 1. 발송 대장 조회
|
|
|
|
// 1. 발송 대장 조회
|
|
|
|
DataObject sndngInfo = sndngMapper.selectSndngInfo(sndng.getSndngId());
|
|
|
|
DataObject sndngInfo = sndngMapper.selectSndngInfo(sndng.getSndngId());
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
// 전자우편 발송 등록 전 자료 체크
|
|
|
|
|
|
|
|
//사진파일 체크
|
|
|
|
|
|
|
|
while not eof do
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
if FieldByName('MM_CARNO').AsString = '' then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
sm('차량번호가 공란인 내역이 있습니다.' + #13 + '차량번호를 입력해주세요.');
|
|
|
|
|
|
|
|
exit;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if FieldByName('GP_ACCOUNT_NO').AsString = '' then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
sm('가상계좌가 공란인 내역이 있습니다.' + #13 + '가상계좌를 입력해주세요.');
|
|
|
|
|
|
|
|
exit;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if FieldByName('GP_ERC_NO').AsString = '' then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
sm('전자납부번호가 공란인 내역이 있습니다.' + #13 + '전자납부번호를 입력해주세요.');
|
|
|
|
|
|
|
|
exit;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if FieldByName('GP_JUSO').AsString = '' then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
sm('주소가 공란인 내역이 있습니다.' + #13 + '주소를 입력해주세요.');
|
|
|
|
|
|
|
|
exit;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (FieldByName('GP_TAXNO').AsString = '') and
|
|
|
|
|
|
|
|
((copy(CPSystem_Info.Sido_Code,1,2) = '11') or (debug_level = 4)) then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
sm('과세번호가 공란인 내역이 있습니다.' + #13 + '과세번호를 입력해주세요.');
|
|
|
|
|
|
|
|
exit;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
img_chk := 0;
|
|
|
|
|
|
|
|
imcode := fieldbyname('MM_code').AsString;
|
|
|
|
|
|
|
|
// sm(fieldbyname('MM_code').AsString+#13+fieldbyname('MM_imagecnt').AsString);
|
|
|
|
|
|
|
|
sgg_code := Copy(imcode, 1, 5); //시군구
|
|
|
|
|
|
|
|
YearPath := Copy(imcode, 6, 4); //년도
|
|
|
|
|
|
|
|
if fieldbyname('MM_imagecnt').Asinteger = 1 then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
if sFtp.isFileExists(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString+'A.jpg') then
|
|
|
|
|
|
|
|
inc(img_chk);
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
else if fieldbyname('MM_imagecnt').Asinteger = 2 then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
if sFtp.isFileExists(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString+'A.jpg') then
|
|
|
|
|
|
|
|
inc(img_chk);
|
|
|
|
|
|
|
|
if sFtp.isFileExists(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString+'B.jpg') then
|
|
|
|
|
|
|
|
inc(img_chk);
|
|
|
|
|
|
|
|
end else if fieldbyname('MM_imagecnt').Asinteger = 3 then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
if sFtp.isFileExists(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString+'A.jpg') then
|
|
|
|
|
|
|
|
inc(img_chk);
|
|
|
|
|
|
|
|
if sFtp.isFileExists(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString+'B.jpg') then
|
|
|
|
|
|
|
|
inc(img_chk);
|
|
|
|
|
|
|
|
if sFtp.isFileExists(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString+'C.jpg') then
|
|
|
|
|
|
|
|
inc(img_chk);
|
|
|
|
|
|
|
|
end else if fieldbyname('MM_imagecnt').Asinteger = 4 then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
if sFtp.isFileExists(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString+'A.jpg') then
|
|
|
|
|
|
|
|
inc(img_chk);
|
|
|
|
|
|
|
|
if sFtp.isFileExists(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString+'B.jpg') then
|
|
|
|
|
|
|
|
inc(img_chk);
|
|
|
|
|
|
|
|
if sFtp.isFileExists(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString+'C.jpg') then
|
|
|
|
|
|
|
|
inc(img_chk);
|
|
|
|
|
|
|
|
if sFtp.isFileExists(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString+'D.jpg') then
|
|
|
|
|
|
|
|
inc(img_chk);
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//sm(FindField('MM_imagecnt').Asstring+#13+inttostr(img_chk));
|
|
|
|
|
|
|
|
//sm(sFtp.FtpRootDir);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if img_chk <> fieldbyname('MM_imagecnt').Asinteger then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
sm('사진파일 검사 중'+#13+ '차량번호 : '+ fieldbyname('MM_carno').AsString +'('+ fieldbyname('MM_code').AsString+')'+
|
|
|
|
|
|
|
|
'의 사진이 서버에 저장되지 않았습니다.'+#13+
|
|
|
|
|
|
|
|
'서버로 사진을 재전송 처리후 발송하시기 바랍니다.');
|
|
|
|
|
|
|
|
//sm(sFtp.FtpRootDir + sgg_code + '/' + YearPath + '/' + fieldbyname('MM_code').AsString);
|
|
|
|
|
|
|
|
exit;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
next;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
//사진파일 체크
|
|
|
|
|
|
|
|
with cdDetail do begin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IndexDefs.Clear;
|
|
|
|
|
|
|
|
IndexDefs.Add('IDX_GP_MM_CARNO_ASC' , 'GP_MM_CARNO;MM_CODE' , []);
|
|
|
|
|
|
|
|
IndexName := 'IDX_GP_MM_CARNO_ASC';
|
|
|
|
|
|
|
|
//IndexFieldNames := 'MM_CODE';
|
|
|
|
|
|
|
|
lblSort.Caption := '정렬 : 차량번호';
|
|
|
|
|
|
|
|
lblSeek.Caption := '차량번호 검색';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
First;
|
|
|
|
|
|
|
|
DisableControls;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LVY_NO_Cnt := 0;
|
|
|
|
|
|
|
|
ERC_NO_Cnt := 0;
|
|
|
|
|
|
|
|
ACCOUNT_NO_Cnt := 0;
|
|
|
|
|
|
|
|
while not eof do begin
|
|
|
|
|
|
|
|
if FieldByName('MC_LVY_NO').AsString = '' then Inc(LVY_NO_Cnt);
|
|
|
|
|
|
|
|
if FieldByName('MC_ERC_NO').AsString = '' then Inc(ERC_NO_Cnt);
|
|
|
|
|
|
|
|
if FieldByName('MC_ACCOUNT_NO').AsString = '' then Inc(ACCOUNT_NO_Cnt);
|
|
|
|
|
|
|
|
Next;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
EnableControls;
|
|
|
|
|
|
|
|
if LVY_NO_Cnt > 0 then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
Msg_Warning('출력불가' + #13 +
|
|
|
|
|
|
|
|
'부과번호가 발취 안된 자료가 ' + IntToStr(LVY_NO_Cnt) + ' 건 있습니다.');
|
|
|
|
|
|
|
|
Exit;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
if ERC_NO_Cnt > 0 then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
Msg_Warning('출력불가' + #13 +
|
|
|
|
|
|
|
|
'전자납부번호가 발취 안된 자료가 ' + IntToStr(ERC_NO_Cnt) + ' 건 있습니다.');
|
|
|
|
|
|
|
|
Exit;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ACCOUNT_NO_Cnt > 0 then
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
Msg_Warning('출력불가' + #13 +
|
|
|
|
|
|
|
|
'가상계좌가 발취 안된 자료가 ' + IntToStr(ACCOUNT_NO_Cnt) + ' 건 있습니다.');
|
|
|
|
|
|
|
|
Exit;
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 2. 사용자 정보를 조회한다.
|
|
|
|
|
|
|
|
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 3. 자치단체 및 부서 정보를 조회한다.
|
|
|
|
|
|
|
|
DataObject deptSggInfo = epostRcptRegBean.getDeptSggInfo(sndngInfo.string("DEPT_CD"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 위반 정보를 조회한다.
|
|
|
|
|
|
|
|
VltnInfoQuery vltnInfoQuery = new VltnInfoQuery();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (sndngInfo.string("VLTN_ID").equals("")) { // 위반 ID가 없다면..
|
|
|
|
|
|
|
|
vltnInfoQuery.setSggCd(sndngInfo.string("SGG_CD"));
|
|
|
|
|
|
|
|
vltnInfoQuery.setTaskSeCd(sndngInfo.string("TASK_SE_CD"));
|
|
|
|
|
|
|
|
vltnInfoQuery.setVltnCd("01");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
vltnInfoQuery.setSggCd(sndngInfo.string("SGG_CD"));
|
|
|
|
|
|
|
|
vltnInfoQuery.setTaskSeCd(sndngInfo.string("TASK_SE_CD"));
|
|
|
|
|
|
|
|
vltnInfoQuery.setVltnId(sndngInfo.string("VLTN_ID"));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
DataObject vltnInfo = vltnInfoBean.getVltnInfo(vltnInfoQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 5. 전자우편 접수 내역을 등록한다.
|
|
|
|
|
|
|
|
EpostRcptReg epostRcptReg = new EpostRcptReg();
|
|
|
|
|
|
|
|
|
|
|
|
ctpvCode = sndngInfo.string("SGG_CD").substring(0, 2); // 시도 코드
|
|
|
|
ctpvCode = sndngInfo.string("SGG_CD").substring(0, 2); // 시도 코드
|
|
|
|
|
|
|
|
|
|
|
@ -411,21 +565,7 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
return retMessage;
|
|
|
|
return retMessage;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 2. 위반 정보 조회
|
|
|
|
// 발송 구분
|
|
|
|
VltnInfoQuery vltnInfoQuery = new VltnInfoQuery();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (sndngInfo.string("VLTN_ID").equals("")) { // 위반 ID가 없다면..
|
|
|
|
|
|
|
|
vltnInfoQuery.setSggCd(sndngInfo.string("SGG_CD"));
|
|
|
|
|
|
|
|
vltnInfoQuery.setTaskSeCd(sndngInfo.string("TASK_SE_CD"));
|
|
|
|
|
|
|
|
vltnInfoQuery.setVltnCd("01");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
vltnInfoQuery.setSggCd(sndngInfo.string("SGG_CD"));
|
|
|
|
|
|
|
|
vltnInfoQuery.setTaskSeCd(sndngInfo.string("TASK_SE_CD"));
|
|
|
|
|
|
|
|
vltnInfoQuery.setVltnId(sndngInfo.string("VLTN_ID"));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
DataObject vltnInfo = vltnInfoBean.getVltnInfo(vltnInfoQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계고장
|
|
|
|
if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계고장
|
|
|
|
jobCd = vltnInfo.string("VLTN_CD") + "01";
|
|
|
|
jobCd = vltnInfo.string("VLTN_CD") + "01";
|
|
|
|
} else if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 사전통지
|
|
|
|
} else if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 사전통지
|
|
|
@ -455,15 +595,6 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
// 포맷: 등록일(REG_YMD)-발송기관코드(RECEV_SENDER_ORG_CODE)-업무코드(WORK_ID)-우편물구분(POST_SE)일련번호(RECEV_SEQ_NO)
|
|
|
|
// 포맷: 등록일(REG_YMD)-발송기관코드(RECEV_SENDER_ORG_CODE)-업무코드(WORK_ID)-우편물구분(POST_SE)일련번호(RECEV_SEQ_NO)
|
|
|
|
// 예시: 20170719-40504370000-003-1001
|
|
|
|
// 예시: 20170719-40504370000-003-1001
|
|
|
|
|
|
|
|
|
|
|
|
// 3. 사용자 정보
|
|
|
|
|
|
|
|
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 자치단체 및 부서 정보
|
|
|
|
|
|
|
|
DataObject deptSggInfo = epostRcptRegBean.getDeptSggInfo(sndngInfo.string("DEPT_CD"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 5. 전자우편 접수 등록
|
|
|
|
|
|
|
|
EpostRcptReg epostRcptReg = new EpostRcptReg();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
epostRcptReg.setConKey(conKey); // 외부연계식별키
|
|
|
|
epostRcptReg.setConKey(conKey); // 외부연계식별키
|
|
|
|
epostRcptReg.setRceptId(deptSggInfo.string("RCEPT_ID")); // 접수우체국국기호
|
|
|
|
epostRcptReg.setRceptId(deptSggInfo.string("RCEPT_ID")); // 접수우체국국기호
|
|
|
|
epostRcptReg.setDataCd("00"); // 접수코드
|
|
|
|
epostRcptReg.setDataCd("00"); // 접수코드
|
|
|
@ -552,13 +683,14 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
epostRcptReg.setRceptYmd(sndngInfo.string("TODAY")); // 접수 일자
|
|
|
|
epostRcptReg.setRceptYmd(sndngInfo.string("TODAY")); // 접수 일자
|
|
|
|
epostRcptReg.setSndngId(sndngInfo.string("SNDNG_ID")); // 발송 ID
|
|
|
|
epostRcptReg.setSndngId(sndngInfo.string("SNDNG_ID")); // 발송 ID
|
|
|
|
|
|
|
|
|
|
|
|
retSuccess = epostRcptRegBean.createEpostRcptReg(epostRcptReg); // 전자우편 접수 등록
|
|
|
|
// 6. 전자우편 접수 등록
|
|
|
|
|
|
|
|
retSuccess = epostRcptRegBean.createEpostRcptReg(epostRcptReg);
|
|
|
|
if (!retSuccess) {
|
|
|
|
if (!retSuccess) {
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
throw new RuntimeException("우편통합 발송 작업중 전자우편 접수 등록에 실패하였습니다.");
|
|
|
|
throw new RuntimeException("우편통합 발송 작업중 전자우편 접수 등록에 실패하였습니다.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 6. 발송 내역을 수정한다.
|
|
|
|
// 7. 발송 내역을 수정한다.
|
|
|
|
Sndng mdfcnSndng = new Sndng();
|
|
|
|
Sndng mdfcnSndng = new Sndng();
|
|
|
|
|
|
|
|
|
|
|
|
mdfcnSndng.setConKey(epostRcptReg.getConKey()); // 외부연계식별키
|
|
|
|
mdfcnSndng.setConKey(epostRcptReg.getConKey()); // 외부연계식별키
|
|
|
@ -572,7 +704,7 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
|
|
|
throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 7. 전자우편 접수 상세 내역을 등록한다.
|
|
|
|
// 8. 전자우편 접수 상세 내역을 등록한다.
|
|
|
|
String infoSndngSeNm = ""; // 약식 발송 구분 명
|
|
|
|
String infoSndngSeNm = ""; // 약식 발송 구분 명
|
|
|
|
|
|
|
|
|
|
|
|
if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계도
|
|
|
|
if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계도
|
|
|
@ -629,7 +761,7 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
recevSubj3 = deptSggInfo.string("SGG_NM");
|
|
|
|
recevSubj3 = deptSggInfo.string("SGG_NM");
|
|
|
|
|
|
|
|
|
|
|
|
// 전자우편 접수 상세 조회
|
|
|
|
// 9. 전자우편 접수 상세 조회
|
|
|
|
List<DataObject> sndngTrgts = sndngMapper.selectSndngTrgts(sndng.getSndngId());
|
|
|
|
List<DataObject> sndngTrgts = sndngMapper.selectSndngTrgts(sndng.getSndngId());
|
|
|
|
|
|
|
|
|
|
|
|
for (int iLoop = 0; iLoop < sndngTrgts.size(); iLoop++) {
|
|
|
|
for (int iLoop = 0; iLoop < sndngTrgts.size(); iLoop++) {
|
|
|
@ -954,13 +1086,13 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 전자우편 접수 상세
|
|
|
|
// 10. 전자우편 접수 상세
|
|
|
|
retSuccess = epostRcptRegBean.createEpostRcptDtl(epostRcptDtl);
|
|
|
|
retSuccess = epostRcptRegBean.createEpostRcptDtl(epostRcptDtl);
|
|
|
|
if (!retSuccess) {
|
|
|
|
if (!retSuccess) {
|
|
|
|
throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
|
|
|
throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 8. 발송상세 내역을 수정한다.
|
|
|
|
// 11. 발송상세 내역을 수정한다.
|
|
|
|
// 우편통합 발송에 사용되었던 최신 단속,부과,납부자 정보로 -> 발송상세 정보를 업데이트한다.
|
|
|
|
// 우편통합 발송에 사용되었던 최신 단속,부과,납부자 정보로 -> 발송상세 정보를 업데이트한다.
|
|
|
|
SndngDtl sndngDtl = new SndngDtl();
|
|
|
|
SndngDtl sndngDtl = new SndngDtl();
|
|
|
|
|
|
|
|
|
|
|
|