From 3c0b7ab3374cdff80da74de73d91a33589d6193e Mon Sep 17 00:00:00 2001 From: mjkhan21 Date: Mon, 8 Sep 2025 09:20:39 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9A=B0=ED=8E=B8=EB=AA=A8=EC=95=84=20?= =?UTF-8?q?=EC=97=B0=EA=B3=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokr/xit/fims/sndb/dao/SndngMapper.java | 4 +- .../xit/fims/sndb/service/SndngService.java | 2 +- .../xit/fims/sndb/service/bean/SndngBean.java | 3 +- .../sndb/service/bean/SndngServiceBean.java | 2 +- .../xit/fims/sndb/web/Sndb01Controller.java | 5 +- .../java/cokr/xit/fims/wpm/WoopyonMoa.java | 108 +++++++++++++- .../cokr/xit/fims/wpm/WoopyonMoaRequest.java | 5 +- .../xit/fims/wpm/dao/WoopyonMoaMapper.java | 10 ++ .../fims/wpm/service/bean/WoopyonMoaBean.java | 72 +++++++++- .../service/bean/WoopyonMoaServiceBean.java | 3 +- .../fims/wpm/web/WoopyonMoaController.java | 31 ++++ .../sql/mapper/fims/sndb/sndng-mapper.xml | 134 +++++++----------- .../wpm/service/bean/WoopyonMoaBeanTest.java | 3 +- 13 files changed, 273 insertions(+), 109 deletions(-) create mode 100644 src/main/java/cokr/xit/fims/wpm/dao/WoopyonMoaMapper.java create mode 100644 src/main/java/cokr/xit/fims/wpm/web/WoopyonMoaController.java diff --git a/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java b/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java index 1b8f4857..20ae51e0 100644 --- a/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java +++ b/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java @@ -31,7 +31,7 @@ public interface SndngMapper extends AbstractMapper { * @param req 발송 대장 조회 조건 * @return 발송 대장 객체 목록 */ - List selectSndngs(SndbQuery req); + List selectSndngs(SndbQuery req); default DataObject selectSndngInfo(SndbQuery req) { // 삭제여부 @@ -41,7 +41,7 @@ public interface SndngMapper extends AbstractMapper { if (req.getOrderBy() == null) req.setOrderBy("S.SNDNG_ID DESC"); - List sndngs = selectSndngs(req); + List sndngs = selectSndngList(req); return !sndngs.isEmpty() ? sndngs.get(0) : null; } diff --git a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java index 53db1244..8fe32828 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java @@ -127,7 +127,7 @@ public interface SndngService { * @param req 발송 대장 조회 조건 * @return 발송 대장 객체 목록 */ - List getSndngs(SndbQuery req); + List getSndngs(SndbQuery req); /**전자우편(EPost) 대장 정보를 등록한다. * @param sndng 발송 대장 diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java index 1a250b6d..543623b0 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java @@ -686,7 +686,7 @@ public class SndngBean extends AbstractBean { * @param req 발송 대장 조회 조건 * @return 발송 대장 객체 목록 */ - public List getSndngs(SndbQuery req) { + public List getSndngs(SndbQuery req) { // 삭제 여부 확인 if (req.getDelYn() == null) { req.setDelYn("N"); @@ -699,7 +699,6 @@ public class SndngBean extends AbstractBean { req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy())); } } - return sndngMapper.selectSndngs(req); } diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java index 4435b186..f2e2b4cd 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java @@ -110,7 +110,7 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic } @Override - public List getSndngs(SndbQuery req) { + public List getSndngs(SndbQuery req) { return sndngBean.getSndngs(req); } diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java index 74b04652..30529913 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -489,7 +489,8 @@ public class Sndb01Controller extends ApplicationController { .setSndngDtlList(list) .setStandardYN("규격") .setWeight(25) - .setPieceCount(1); + .setPieceCount(1) + .setSndngId(req.getSndngId()); Downloadable downloadable = woopyonMoaService.downloadRequest(wreq); return new ModelAndView("downloadView") .addObject("download", downloadable.setFilename("우편등록_" + now() + ".xls")); @@ -1264,7 +1265,7 @@ public class Sndb01Controller extends ApplicationController { return new ModelAndView("fims/sndb/sndb01210-info") .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 .addObject("pageName", "sndb01210") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("prefixUrl", CLASS_URL) // prefixUrl + .addObject("infoPrefixUrl", CLASS_URL) // prefixUrl .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) .addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD) diff --git a/src/main/java/cokr/xit/fims/wpm/WoopyonMoa.java b/src/main/java/cokr/xit/fims/wpm/WoopyonMoa.java index 118f6947..4132766e 100644 --- a/src/main/java/cokr/xit/fims/wpm/WoopyonMoa.java +++ b/src/main/java/cokr/xit/fims/wpm/WoopyonMoa.java @@ -3,27 +3,67 @@ package cokr.xit.fims.wpm; import java.util.List; import java.util.function.BiConsumer; -import cokr.xit.foundation.AbstractEntity; +import cokr.xit.fims.sndb.SndngDtl; +import cokr.xit.foundation.AbstractObject; import lombok.Getter; import lombok.Setter; +/**우편모아 종적파일 정보 + *
  • no - 번호
  • + *
  • mailType - 우편구분
  • + *
  • registPostOffice - 접수우체국
  • + *
  • deliveryStatus - 발송상태
  • + *
  • generalNo - 일반번호
  • + *
  • registrationNo - 창구접수등기번호
  • + *
  • registeredNo - 등기번호
  • + *
  • returnYN - 환부여부
  • + *
  • standardYN - 규격여부
  • + *
  • weight - 중량
  • + *
  • pieceCount - 통수
  • + *
  • fee - 요금
  • + *
  • remark - 비고
  • + *
  • payee - 수취인
  • + *
  • zipCode - 우편번호
  • + *
  • address - 기본주소
  • + *
  • detailAddress - 상세주소
  • + *
  • docNo - 문서번호
  • + *
  • docTitle - 문서제목
  • + *
  • deptName - 담당부서
  • + *
  • manager - 담당자
  • + *
  • deliveryPostOffice - 배달우체국
  • + *
  • deliveryResult - 배달결과
  • + *
  • returnReason - 반송사유
  • + *
  • deliveryDate - 배달일
  • + *
  • recipient - 수령인
  • + *
  • recipientRelation - 수령인과의 관계
  • + *
  • contact - 연락처
  • + *
  • mailingDate - 발송일
  • + *
  • recipientTelno - 수취인 전화번호
  • + *
  • recipientMobileNo - 수취인 핸드폰번호
  • + *
  • createdAt - 등록일
  • + *
  • useYN - 사용여부
  • + *
+ * @author mjkhan + */ @Getter @Setter -public class WoopyonMoa extends AbstractEntity { +public class WoopyonMoa extends AbstractObject { public static final List> setters(List headers) { return headers.stream() .map(header -> { BiConsumer setter = switch (header) { - case "번호" -> (row, str) -> row.setNo(toInt(str)); + case "번호" -> (row, str) -> {if (!isEmpty(str)) row.setNo(toInt(str));}; + case "우편구분" -> (row, str) -> row.setMailType(str); case "접수우체국" -> (row, str) -> row.setRegistPostOffice(str); case "발송상태" -> (row, str) -> row.setDeliveryStatus(str); case "일반번호" -> (row, str) -> row.setGeneralNo(str); - case "등기번호", "창구접수등기번호" -> (row, str) -> row.setRegistrationNo(str); + case "창구접수등기번호" -> (row, str) -> row.setRegistrationNo(str); + case "등기번호" -> (row, str) -> row.setRegisteredNo(str); case "환부여부" -> (row, str) -> row.setReturnYN(str); case "규격", "규격여부" -> (row, str) -> row.setStandardYN(str); - case "중량" -> (row, str) -> row.setWeight(toInt(str)); - case "통수" -> (row, str) -> row.setPieceCount(toInt(str)); - case "요금" -> (row, str) -> row.setFee(toLong(str)); + case "중량" -> (row, str) -> {if (!isEmpty(str)) row.setWeight(toInt(str));}; + case "통수" -> (row, str) -> {if (!isEmpty(str)) row.setPieceCount(toInt(str));}; + case "요금" -> (row, str) -> {if (!isEmpty(str)) row.setFee(toLong(str));}; case "비고" -> (row, str) -> row.setRemark(str); case "수취인" -> (row, str) -> row.setPayee(str); case "우편번호" -> (row, str) -> row.setZipCode(str); @@ -51,8 +91,11 @@ public class WoopyonMoa extends AbstractEntity { .filter(setter -> setter != null) .toList(); } + /** 번호 */ private int no; + /** 우편구분 */ + private String mailType; /** 접수우체국 */ private String registPostOffice; /** 발송상태 */ @@ -61,6 +104,8 @@ public class WoopyonMoa extends AbstractEntity { private String generalNo; /** 창구접수등기번호 */ private String registrationNo; + /** 등기번호 */ + private String registeredNo; /** 환부여부 */ private String returnYN; /** 규격여부 */ @@ -113,4 +158,53 @@ public class WoopyonMoa extends AbstractEntity { private String createdAt; /** 사용여부 */ private String useYN; + + public void update(SndngDtl sndngDtl) { + sndngDtl.setRgNo(ifEmpty(registeredNo, registrationNo)); // 등기번호 + sndngDtl.setDlvrYmd(blankIfEmpty(deliveryDate).replace("-", "")); // 배달일 + sndngDtl.setActlRcpnNm(recipient); // 실제 수령인 + sndngDtl.setRcpnRelNm(recipientRelation); // 수령인 관계명 + setUndelivered(sndngDtl); // 미배달 사유 + setSndngDtlSttsCd(sndngDtl); // 상세상태코드 + } + + private void setUndelivered(SndngDtl sndngDtl) { + if (isEmpty(returnReason)) return; + + sndngDtl.setUndlvrRsnNm(returnReason); // 미배달사유 이름 + // 반송사유: 수취인부재, 주소불명, 수취인불명, 이사불명, 수취거절, 배달누락, 기타, 폐문부재 + String code = switch (returnReason) { // EGP010 + case "수취인부재" -> "5"; + case "주소불명" -> "4"; + case "수취인불명" -> "10"; + case "이사불명" -> "8"; + case "수취거절" -> "1"; + case "배달누락" -> "11"; + case "폐문부재" -> "12"; + default -> "7"; + }; + sndngDtl.setUndlvrRsnCd(code); // 미배달사유 코드 + } + + private void setSndngDtlSttsCd(SndngDtl sndngDtl) { +/* + 발송상태: 발송대기, 발송요청, 검수확인, 우체국발송, 배달완료 + 배달결과: 배달완료, 반송, 환부불능, 기타 +*/ + String delivery = deliveryStatus; + if (!"배달완료".equals(delivery)) + delivery = deliveryResult; + + String code = null; + if ("배달완료".equals(delivery)) + code = "04"; // 발송확인(FIM050) + else if ("반송".equals(delivery)) + code = "05"; + else if (!isEmpty(returnReason)) + code = "05"; //반송 + else code = "03"; //발송 + if (isEmpty(code)) return; + + sndngDtl.setSndngDtlSttsCd(code); + } } \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/wpm/WoopyonMoaRequest.java b/src/main/java/cokr/xit/fims/wpm/WoopyonMoaRequest.java index 9c7b3864..f88938d6 100644 --- a/src/main/java/cokr/xit/fims/wpm/WoopyonMoaRequest.java +++ b/src/main/java/cokr/xit/fims/wpm/WoopyonMoaRequest.java @@ -13,7 +13,6 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class WoopyonMoaRequest extends ServiceRequest { private static final long serialVersionUID = 1L; - /** 템플릿 */ private String template; /** 규격여부 */ @@ -22,6 +21,8 @@ public class WoopyonMoaRequest extends ServiceRequest { private int weight; /** 통수 */ private int pieceCount; - + /** 발송 아이디 */ + private String sndngId; + /** 발송상세목록 */ private List sndngDtlList; } \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/wpm/dao/WoopyonMoaMapper.java b/src/main/java/cokr/xit/fims/wpm/dao/WoopyonMoaMapper.java new file mode 100644 index 00000000..f6f1d5ea --- /dev/null +++ b/src/main/java/cokr/xit/fims/wpm/dao/WoopyonMoaMapper.java @@ -0,0 +1,10 @@ +package cokr.xit.fims.wpm.dao; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.foundation.component.AbstractMapper; + +@Mapper("woopyonMoaMapper") +public interface WoopyonMoaMapper extends AbstractMapper { + +} \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaBean.java b/src/main/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaBean.java index 6a90c0ed..c8e9b0e9 100644 --- a/src/main/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaBean.java +++ b/src/main/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaBean.java @@ -1,8 +1,11 @@ package cokr.xit.fims.wpm.service.bean; import java.io.InputStream; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.function.BiConsumer; +import java.util.stream.Collectors; import javax.annotation.Resource; @@ -11,7 +14,11 @@ import org.springframework.stereotype.Component; import cokr.xit.base.docs.xls.XLSReader; import cokr.xit.base.docs.xls.XLSWriter; -import cokr.xit.fims.sndb.service.bean.SndngDtlBean; +import cokr.xit.fims.sndb.SndbQuery; +import cokr.xit.fims.sndb.Sndng; +import cokr.xit.fims.sndb.SndngDtl; +import cokr.xit.fims.sndb.dao.SndngDtlMapper; +import cokr.xit.fims.sndb.dao.SndngMapper; import cokr.xit.fims.wpm.WoopyonMoa; import cokr.xit.fims.wpm.WoopyonMoaRequest; import cokr.xit.foundation.Downloadable; @@ -21,14 +28,28 @@ import cokr.xit.foundation.data.DataObject; @Component("woopyonMoaBean") public class WoopyonMoaBean extends AbstractBean { /** 발송 상세 정보 Bean */ - @Resource(name = "sndngDtlBean") - private SndngDtlBean sndngDtlBean; + @Resource(name = "sndngMapper") + private SndngMapper sndngMapper; + /** 발송 상세 정보 Bean */ + @Resource(name = "sndngDtlMapper") + private SndngDtlMapper sndngDtlMapper; public Downloadable downloadRequest(WoopyonMoaRequest req) { try (InputStream input = getTemplate(req.getTemplate())) { int rowIndex = 1; XLSWriter xlsx = new XLSWriter().template(input).worksheet(0); + Sndng sndng = new Sndng(); +/* + sndng.setConKey(epostRcptReg.getConKey()); // 외부연계식별키 + sndng.setDivKb(epostRcptReg.getDivKb()); // 취급 구분 +// sndng.setEpostNoticeId(); // 전자우편 안내문 ID + */ + sndng.setSndngSttsCd("03"); // 발송 상태 코드(FIM049) - 03 전송, 01 발송 대기 + sndng.setSndngId(req.getSndngId()); // 발송 ID + + ArrayList sndngDtls = new ArrayList<>(); + for (DataObject row: req.getSndngDtlList()) { xlsx.cell(rowIndex, 0) .rowValues(List.of(req.getStandardYN(), req.getWeight(), req.getPieceCount())) // 규격, 중량, 통수 @@ -43,8 +64,23 @@ public class WoopyonMoaBean extends AbstractBean { row.get("TTL_NM"), // 문서제목 blankIfEmpty(row.get("ETC_CN")) // 비고 )); + + SndngDtl sndngDtl = new SndngDtl(); +/* + sndngDtl.setConKey(conKey); // 외부연계식별키 + sndngDtl.setRgNo(rgstNmbr); // 등기 번호 +*/ + sndngDtl.setSndngDtlSttsCd("03"); // 발송 상세 상태 코드(FIM050) - 03 발송 + sndngDtl.setSndngDtlId(row.string("SNDNG_DTL_ID")); + + sndngDtls.add(sndngDtl); + ++rowIndex; } + sndngMapper.updateSndngSttsCd(sndng); + for (SndngDtl sndngDtl: sndngDtls) { + sndngDtlMapper.updateSndngDtlEPost(sndngDtl); // 전자우편 발송상세 내역 수정 + } return xlsx.getDownloadable(); } catch (Exception e) { throw runtimeException(e); @@ -55,8 +91,34 @@ public class WoopyonMoaBean extends AbstractBean { return new ClassPathResource("template/" + template).getInputStream(); } - public void updateStatus(InputStream input) { - List read = parse(input); + public int updateStatus(InputStream input) { + List parsed = parse(input); + if (isEmpty(parsed)) return 0; + + // 발송상세 조회 및 업데이트 + List idList = parsed.stream().map(WoopyonMoa::getDocNo).toList(); // 발송상세ID + SndbQuery sreq = new SndbQuery().setSndngDtlIds(idList.toArray(new String[idList.size()])); + List details = sndngDtlMapper.selectSndngDetails(sreq); + if (details.isEmpty()) return 0; + + Map byDtlId = details.stream().collect(Collectors.toMap( + SndngDtl::getSndngDtlId, + sndngDtl -> sndngDtl + )); + for (WoopyonMoa wpm: parsed) { + SndngDtl detail = byDtlId.get(wpm.getDocNo()); + if (detail == null) continue; + + wpm.update(detail); + } + + int affected = 0; + + for (SndngDtl detail: details) { + affected += sndngDtlMapper.updateSndngDtl(detail); + } + + return affected; } static List parse(InputStream input) { diff --git a/src/main/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaServiceBean.java b/src/main/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaServiceBean.java index ef9da68b..25b3e62b 100644 --- a/src/main/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaServiceBean.java +++ b/src/main/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaServiceBean.java @@ -23,7 +23,6 @@ public class WoopyonMoaServiceBean extends AbstractServiceBean implements Woopyo @Override public int updateStatus(InputStream input) { - WoopyonMoaBean.parse(input); - return 0; + return woopyonMoaBean.updateStatus(input); } } \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/wpm/web/WoopyonMoaController.java b/src/main/java/cokr/xit/fims/wpm/web/WoopyonMoaController.java new file mode 100644 index 00000000..4fa715d6 --- /dev/null +++ b/src/main/java/cokr/xit/fims/wpm/web/WoopyonMoaController.java @@ -0,0 +1,31 @@ +package cokr.xit.fims.wpm.web; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.ModelAndView; + +import cokr.xit.fims.wpm.service.WoopyonMoaService; +import cokr.xit.foundation.web.AbstractController; + +@Controller +@RequestMapping("/woopyonmoa") +public class WoopyonMoaController extends AbstractController { + @Resource(name = "woopyonMoaService") + private WoopyonMoaService woopyonMoaService; + + @PostMapping(name="발송정보 업데이트", value="/update.do") + public ModelAndView updateStatus(MultipartFile upload) { + try { + int affected = woopyonMoaService.updateStatus(upload.getInputStream()); + return new ModelAndView("jsonView") + .addObject("affected", affected) + .addObject("saved", affected > 0); + } catch (Exception e) { + throw runtimeException(e); + } + } +} \ No newline at end of file diff --git a/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml b/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml index de139517..f65ebfa2 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml @@ -8,35 +8,35 @@ ============================ --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -84,64 +84,36 @@ - - AND S.SNDNG_YMD =]]> #{schSndngYmdFrom} - - - AND S.SNDNG_YMD #{schSndngYmdTo} - - - AND S.SNDNG_REG_SE_CD = #{schSndngRegSeCd} - - - AND S.SNDNG_SE_CD = #{schSndngSeCd} - - - AND S.SNDNG_SE_CD = #{sndngSeCd} - - - AND S.SNDNG_SE_CD =]]> #{sndngSeCdFrom} - - - AND S.SNDNG_SE_CD #{sndngSeCdTo} - - - AND S.SGG_CD = #{sggCd} - - - AND S.TASK_SE_CD = #{taskSeCd} - - AND S.DEL_YN = 'N' + AND S.SNDNG_ID IN (#{sndngId}) + AND S.SNDNG_ID = #{sndngId} + AND S.SNDNG_YMD =]]> #{schSndngYmdFrom} + AND S.SNDNG_YMD #{schSndngYmdTo} + AND S.SNDNG_REG_SE_CD = #{schSndngRegSeCd} + AND S.SNDNG_SE_CD = #{schSndngSeCd} + AND S.SNDNG_SE_CD = #{sndngSeCd} + AND S.SNDNG_SE_CD =]]> #{sndngSeCdFrom} + AND S.SNDNG_SE_CD #{sndngSeCdTo} + AND S.SGG_CD = #{sggCd} + AND S.TASK_SE_CD = #{taskSeCd} + AND S.DEL_YN = 'N' - - AND S.REG_DT =]]> CONCAT(#{schRegDateFrom},'000000') - - - AND S.REG_DT CONCAT(#{schRegDateTo},'235959') - + AND S.REG_DT =]]> CONCAT(#{schRegDateFrom},'000000') + AND S.REG_DT CONCAT(#{schRegDateTo},'235959') - - AND S.MDFCN_DT =]]> CONCAT(#{schRegDateFrom},'000000') - - - AND S.MDFCN_DT CONCAT(#{schRegDateTo},'235959') - + AND S.MDFCN_DT =]]> CONCAT(#{schRegDateFrom},'000000') + AND S.MDFCN_DT CONCAT(#{schRegDateTo},'235959') - - AND S.RGTR = #{schRgtrCd} - + AND S.RGTR = #{schRgtrCd} - - AND S.MDFR = #{schRgtrCd} - + AND S.MDFR = #{schRgtrCd} @@ -174,17 +146,11 @@ - /* 발송 대장 객체 가져오기(sndngMapper.selectSndngs) */ - - AND S.SNDNG_ID IN ( - #{sndngId} - ) - - - AND S.SNDNG_ID = #{sndngId} - + AND S.SNDNG_ID IN (#{sndngId}) + AND S.SNDNG_ID = #{sndngId} AND S.DEL_YN = #{delYn} diff --git a/src/test/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaBeanTest.java b/src/test/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaBeanTest.java index 6103815a..9ac3bd01 100644 --- a/src/test/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaBeanTest.java +++ b/src/test/java/cokr/xit/fims/wpm/service/bean/WoopyonMoaBeanTest.java @@ -11,7 +11,8 @@ import cokr.xit.fims.wpm.WoopyonMoa; public class WoopyonMoaBeanTest { @Test void parse() { - try (InputStream input = new ClassPathResource("files/일반우편_발송완료.xls").getInputStream()) { + String path = "우편정보 업데이트 테스트.xls"; + try (InputStream input = new ClassPathResource("files/" + path).getInputStream()) { List rows = WoopyonMoaBean.parse(input); rows.forEach(System.out::println); } catch (Exception e) {