폐기관리목록 조회 반영

dev
Jonguk. Lim 7 months ago
parent 63b16ff2dd
commit b4daeec93f

@ -31,7 +31,7 @@ public interface BizNimsMapper extends AbstractMapper {
// NIMS API CALL // NIMS API CALL
//------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------
int mergeBsshInfoSt(NimsApiDto.BsshInfoSt dto); int mergeBsshInfoSt(NimsApiDto.BsshInfoSt dto);
// int mergeProductInfoKd(NimsApiDto.ProductInfoKd dto); int mergeProductInfoKd(NimsApiDto.ProductInfoKd dto);
// int mergeStorgeInfo(NimsApiDto.StorageInfo dto); // int mergeStorgeInfo(NimsApiDto.StorageInfo dto);
//------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------
@ -47,7 +47,11 @@ public interface BizNimsMapper extends AbstractMapper {
int insertDsuseMgt(BizNimsRequest.DsuseMgt dto); int insertDsuseMgt(BizNimsRequest.DsuseMgt dto);
NimsApiDto.DsuseRptInfo selectDsuseRptInfoByUsrRptIdNo(Map<String, String> map); NimsApiDto.DsuseRptInfo selectDsuseRptInfoByUsrRptIdNo(Map<String, String> map);
List<BizNimsResponse.DsuseMgtResponse> selectDsuseMgt(List<String> dsuseMgtIds); List<NimsApiDto.DsuseRptInfoDtl> selectDsuseRptInfoDtls(Map<String, String> map);
List<BizNimsResponse.DsuseMgtResponse> selectSavedDsuseMgts(List<String> dsuseMgtIds);
List<BizNimsResponse.DsuseMgtResponse> selectDsuseMgts(BizNimsRequest.DsuseMgtInq dto);
// int insertDsuseMgtDtl(BizNimsRequest.DsuseMgtDtl dto); // int insertDsuseMgtDtl(BizNimsRequest.DsuseMgtDtl dto);
// int updateCancelDsuseMgtDtl(BizNimsRequest.DsuseMgt dto); // int updateCancelDsuseMgtDtl(BizNimsRequest.DsuseMgt dto);

@ -2,6 +2,8 @@ package cokr.xit.adds.biz.nims.model;
import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.*; import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.*;
import java.util.List;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
@ -97,6 +99,40 @@ public class BizNimsRequest {
private String prgrsSttsCd = "01"; private String prgrsSttsCd = "01";
} }
/**
* request
*/
@Schema(name = "DsuseMgtInq", description = "마약류 폐기 관리 조회 DTO")
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = false)
public static class DsuseMgtInq {
@Schema(requiredMode = AUTO, title = "폐기 관리 ID 목록", example = "[\"2024040001\", \"2024040002\"]")
private List<String> dscdmngIds;
@Schema(requiredMode = REQUIRED, title = "사용자 ID", example = " ")
@NotEmpty(message = "사용자 ID는 필수 입니다")
private String userId;
/**
* <pre>
*
*
* 01-
* 02-
* 11-()
* 21-
* 22-
* 31-
* 41-
* 99-
* </pre>
*/
@Schema(requiredMode = REQUIRED, title = "진행 상태 코드", example = " ", allowableValues = {"01", "02", "11", "22", "31", "41", "99"})
private String prgrsSttsCd = "01";
}
/** /**
* request * request
*/ */

@ -64,5 +64,19 @@ public class BizNimsResponse {
* *
*/ */
private String prmisnNo; private String prmisnNo;
// /**
// * <pre>
// * 업체명
// * </pre>
// */
// private String nrcdSeNm;
//
// /**
// * <pre>
// * 업체구분명
// * </pre>
// */
// private String prtmSeNm;
} }
} }

@ -27,7 +27,7 @@ public interface BizNimsService {
// NIMS API CALL // NIMS API CALL
//------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------
List<NimsApiDto.BsshInfoSt> saveBsshInfoSt(NimsApiRequest.BsshInfoRequest dto); List<NimsApiDto.BsshInfoSt> saveBsshInfoSt(NimsApiRequest.BsshInfoRequest dto);
// List<NimsApiDto.ProductInfoKd> saveProductInfoKd(NimsApiRequest.ProductInfoRequest dto); List<NimsApiDto.ProductInfoKd> saveProductInfoKd(NimsApiRequest.ProductInfoRequest dto);
// List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto); // List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto);
// List<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(NimsApiRequest.JurisdictionGovInfoRequest dto); // List<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(NimsApiRequest.JurisdictionGovInfoRequest dto);
// List<NimsApiDto.StorageInfo> saveStorageInfo(NimsApiRequest.StorageInfoRequest dto); // List<NimsApiDto.StorageInfo> saveStorageInfo(NimsApiRequest.StorageInfoRequest dto);
@ -60,6 +60,8 @@ public interface BizNimsService {
List<BizNimsResponse.DsuseMgtResponse> saveDsuseMgt(List<BizNimsRequest.DsuseMgt> dtos); List<BizNimsResponse.DsuseMgtResponse> saveDsuseMgt(List<BizNimsRequest.DsuseMgt> dtos);
List<BizNimsResponse.DsuseMgtResponse> getDsuseMgts(BizNimsRequest.DsuseMgtInq dto);
// BizNimsAarDto.AarHeader getTgtDsuseRptData(BizNimsRequest.DsuseMgt dto); // BizNimsAarDto.AarHeader getTgtDsuseRptData(BizNimsRequest.DsuseMgt dto);
// BizNimsAarDto.AarHeader createTgtDsuseRptData(BizNimsAarDto.AarHeader dto); // BizNimsAarDto.AarHeader createTgtDsuseRptData(BizNimsAarDto.AarHeader dto);

@ -66,7 +66,9 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
@Override @Override
public List<BsshInfoSt> saveBsshInfoSt(BsshInfoRequest dto) { public List<BsshInfoSt> saveBsshInfoSt(BsshInfoRequest dto) {
NimsApiResult.Response<BsshInfoSt> result = infNimsService.getBsshInfoSt(dto); NimsApiResult.Response<BsshInfoSt> result = infNimsService.getBsshInfoSt(dto);
List<BsshInfoSt> list = result.getResultOrThrow(); List<BsshInfoSt> list = result.getResult();
if(isEmpty(list)) return list;
for (BsshInfoSt d : list) { for (BsshInfoSt d : list) {
d.setRgtr(Constants.NIMS_API_USER_ID); d.setRgtr(Constants.NIMS_API_USER_ID);
@ -75,18 +77,20 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return list; return list;
} }
// @Override @Override
// public List<ProductInfoKd> saveProductInfoKd(ProductInfoRequest dto) { public List<NimsApiDto.ProductInfoKd> saveProductInfoKd(NimsApiRequest.ProductInfoRequest dto) {
// NimsApiResult.Response<ProductInfoKd> result = infNimsService.getProductInfoKd(dto); NimsApiResult.Response<NimsApiDto.ProductInfoKd> result = infNimsService.getProductInfoKd(dto);
// List<ProductInfoKd> list = result.getResultOrThrow(); List<NimsApiDto.ProductInfoKd> list = result.getResult();
//
// for (ProductInfoKd d : list) { if(isEmpty(list)) return list;
// d.setRgtr(Constants.NIMS_API_USER_ID);
// bizNimsMapper.mergeProductInfoKd(d); for (NimsApiDto.ProductInfoKd d : list) {
// } d.setRgtr(Constants.NIMS_API_USER_ID);
// return list; bizNimsMapper.mergeProductInfoKd(d);
// } }
// return list;
}
// @Override // @Override
// public List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto) { // public List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto) {
// NimsApiResult.Response<NimsApiDto.MnfSeqInfo> response = infNimsService.getMnfSeqInfo(dto); // NimsApiResult.Response<NimsApiDto.MnfSeqInfo> response = infNimsService.getMnfSeqInfo(dto);
@ -218,7 +222,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
bizNimsMapper.insertDsuseMgt(dto); bizNimsMapper.insertDsuseMgt(dto);
dscdmngIds.add(dto.getDscdmngId()); dscdmngIds.add(dto.getDscdmngId());
} }
List<BizNimsResponse.DsuseMgtResponse> resList = bizNimsMapper.selectDsuseMgt(dscdmngIds); List<BizNimsResponse.DsuseMgtResponse> resList = bizNimsMapper.selectSavedDsuseMgts(dscdmngIds);
// 마약류취급업체의 허가번호(prmisnNo), 대표자명(rprsntvNm) set // 마약류취급업체의 허가번호(prmisnNo), 대표자명(rprsntvNm) set
setAddBsshInfo(resList); setAddBsshInfo(resList);
@ -226,7 +230,25 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return resList; return resList;
} }
@Override
public List<BizNimsResponse.DsuseMgtResponse> getDsuseMgts(BizNimsRequest.DsuseMgtInq dto) {
List<BizNimsResponse.DsuseMgtResponse> resList = bizNimsMapper.selectDsuseMgts(dto);
resList.forEach(r -> {
r.setRptTyCdNm(Constants.RPT_TY_CD.getName(r.getRptTyCd()));
r.setDsuseSeCdNm(Constants.DSUSE_SE_CD.getName(r.getDsuseSeCd()));
r.setDsusePrvCdNm(Constants.DSUSE_PRV_CD.getName(r.getDsusePrvCd()));
r.setDsuseMthCdNm(Constants.DSUSE_MTH_CD.getName(r.getDsuseMthCd()));
Map<String, String> map = new HashMap<>();
map.put("usrRptIdNo", r.getUsrRptIdNo());
List<NimsApiDto.DsuseRptInfoDtl> dsuseRptInfoDtls = bizNimsMapper.selectDsuseRptInfoDtls(map);
setAddProductInfo(dsuseRptInfoDtls);
r.getDsuseRptInfoDtls().addAll(bizNimsMapper.selectDsuseRptInfoDtls(map));
});
return resList;
}
//------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------
// private method // private method
@ -344,6 +366,11 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
*/ */
private void setAddBsshInfo(List<BizNimsResponse.DsuseMgtResponse> resList) { private void setAddBsshInfo(List<BizNimsResponse.DsuseMgtResponse> resList) {
resList.forEach(r -> { resList.forEach(r -> {
r.setRptTyCdNm(Constants.RPT_TY_CD.getName(r.getRptTyCd()));
r.setDsuseSeCdNm(Constants.DSUSE_SE_CD.getName(r.getDsuseSeCd()));
r.setDsusePrvCdNm(Constants.DSUSE_PRV_CD.getName(r.getDsusePrvCd()));
r.setDsuseMthCdNm(Constants.DSUSE_MTH_CD.getName(r.getDsuseMthCd()));
if(isEmpty(r.getPrmisnNo())){ if(isEmpty(r.getPrmisnNo())){
List<BsshInfoSt> list = saveBsshInfoSt( List<BsshInfoSt> list = saveBsshInfoSt(
BsshInfoRequest.builder() BsshInfoRequest.builder()
@ -352,13 +379,49 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
.bc(r.getBsshCd()) .bc(r.getBsshCd())
.build() .build()
); );
if(list.isEmpty()) throw ApiCustomException.create("데이타 오류[마약류취급자식별번호에 해당하는 데이타가 없습니다.]"); if(isEmpty(list)){
// FIXME : 데이타 정상 흐름 확인후 comment 제거
return;
//throw ApiCustomException.create(String.format("데이타 오류(마약류취급자식별번호[%s]에 해당하는 데이타가 없습니다)", r.getBsshCd()));
}
r.setPrmisnNo(list.get(0).getPrmisnNo()); r.setPrmisnNo(list.get(0).getPrmisnNo());
r.setRprsntvNm(list.get(0).getRprsntvNm()); r.setRprsntvNm(list.get(0).getRprsntvNm());
} }
}); });
} }
/**
* <pre>
* set
* (nrcdSeNm), (prtmSenm) set
* @param dtlList <NimsApiDto.DsuseRptInfoDtl>
* </pre>
*/
private void setAddProductInfo(List<NimsApiDto.DsuseRptInfoDtl> dtlList) {
dtlList.forEach(r -> {
//if()
if(isEmpty(r.getNrcdSeNm()) || isEmpty(r.getPrtmSeNm())){
//NimsApiResult.Response<NimsApiDto.ProductInfoKd> result = infNimsService.getProductInfoKd(
List<NimsApiDto.ProductInfoKd> list = saveProductInfoKd(
NimsApiRequest.ProductInfoRequest.builder()
.fg("1")
.pg("1")
.p(r.getPrductCd())
.build()
);
if(isEmpty(list)){
// FIXME : 데이타 정상 흐름 확인후 comment 제거
return;
//throw ApiCustomException.create(String.format("데이타 오류(제품코드[%s]에 해당하는 데이타가 없습니다)", r.getPrductCd()));
}
r.setNrcdSeNm(list.get(0).getNrcdSeNm());
r.setPrtmSeNm(list.get(0).getPrtmSeNm());
}
});
}

@ -53,14 +53,14 @@ public class BizNimsController {
return ApiBaseResponse.of(bizNimsService.saveBsshInfoSt(dto)); return ApiBaseResponse.of(bizNimsService.saveBsshInfoSt(dto));
} }
// @Operation(summary = "마약류 상품 정보 조회(NIMS API)", description = "마약류 상품정보 조회<br><br>NIMS API 호출 결과를 DB에 저장후 결과 Return") @Operation(summary = "마약류 상품 정보 조회(NIMS API)", description = "마약류 상품정보 조회<br><br>NIMS API 호출 결과를 DB에 저장후 결과 Return")
// @PostMapping(value = "/getProductInfoKd") @PostMapping(value = "/getProductInfoKd")
// public ApiBaseResponse<List<NimsApiDto.ProductInfoKd>> getMnfSeqInfo( public ApiBaseResponse<List<NimsApiDto.ProductInfoKd>> getMnfSeqInfo(
// @RequestBody @Validated NimsApiRequest.ProductInfoRequest dto @RequestBody @Validated NimsApiRequest.ProductInfoRequest dto
// ) { ) {
// return ApiBaseResponse.of(bizNimsService.saveProductInfoKd(dto)); return ApiBaseResponse.of(bizNimsService.saveProductInfoKd(dto));
// } }
//
// @Operation(summary = "제조 일련 번호 정보 조회(NIMS API)", description = "제보 일련 번호 정보 조회<br><br>NIMS API 호출 결과 Return") // @Operation(summary = "제조 일련 번호 정보 조회(NIMS API)", description = "제보 일련 번호 정보 조회<br><br>NIMS API 호출 결과 Return")
// @PostMapping(value = "/getMnfSeqInfo") // @PostMapping(value = "/getMnfSeqInfo")
// public ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo( // public ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo(
@ -127,6 +127,14 @@ public class BizNimsController {
return ApiBaseResponse.of(bizNimsService.saveDsuseMgt(dtos)); return ApiBaseResponse.of(bizNimsService.saveDsuseMgt(dtos));
} }
@Operation(summary = "사고 마약류 폐기 관리 목록 조회", description = "사고 마약류 폐기 관리 목록 조회")
@PostMapping(value = "/getDsuseMgts")
public ApiBaseResponse<List<BizNimsResponse.DsuseMgtResponse>> getDsuseMgts(
@RequestBody BizNimsRequest.DsuseMgtInq dto
) {
return ApiBaseResponse.of(bizNimsService.getDsuseMgts(dto));
}
/* /*
@Operation(summary = "폐기 보고 관리 대상 연계 데이타 생성 조회", description = "폐기 보고 관리 대상 연계 데이타 생성 조회") @Operation(summary = "폐기 보고 관리 대상 연계 데이타 생성 조회", description = "폐기 보고 관리 대상 연계 데이타 생성 조회")
@io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, content = { @io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, content = {

@ -7,6 +7,8 @@ import java.time.format.DateTimeFormatter;
import java.util.Collection; import java.util.Collection;
import java.util.Objects; import java.util.Objects;
import org.apache.commons.lang3.ObjectUtils;
import com.fasterxml.jackson.annotation.JsonRootName; import com.fasterxml.jackson.annotation.JsonRootName;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@ -71,9 +73,16 @@ public class ApiBaseResponse<T> {
} }
private ApiBaseResponse(T data) { private ApiBaseResponse(T data) {
this.code = ResultCode.SUCCESS.getStatusCode();
this.message = ResultCode.findByStatusCode(code).getMessage(); if(ObjectUtils.isEmpty(data)) {
this.data = data; this.code = ResultCode.NO_CONTENT.getStatusCode();
this.message = ResultCode.NO_CONTENT.getMessage();
this.data = null;
}else{
this.code = ResultCode.SUCCESS.getStatusCode();
this.message = ResultCode.findByStatusCode(code).getMessage();
this.data = data;
}
} }
private ApiBaseResponse(T data, ResultCode resultCode) { private ApiBaseResponse(T data, ResultCode resultCode) {
@ -101,7 +110,7 @@ public class ApiBaseResponse<T> {
}else { }else {
if (Collection.class.isAssignableFrom(data.getClass())) { if (Collection.class.isAssignableFrom(data.getClass())) {
this.totalCount = (((Collection<?>) data).size()); this.totalCount = ((Collection<?>) data).size();
} else { } else {
this.totalCount = 1; this.totalCount = 1;

@ -1,42 +0,0 @@
package cokr.xit.adds.core.spring.config;// package cokr.xit.adds.core.config;
//
// import javax.annotation.PostConstruct;
//
// import org.apache.commons.lang3.StringUtils;
// import org.springframework.context.annotation.Configuration;
//
// import com.p6spy.engine.spy.P6SpyOptions;
// import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
//
//
// /**
// * <pre>
// * description : P6Spy SQL 로그 Multiline 출력 포맷 Custom
// * - sql이 있는 경우만 출력
// * - prepared, url(DB), now 출력 제거
// * author : julim
// * date : 2023-04-28
// * ======================================================================
// * 변경일 변경자 변경 내용
// * ----------------------------------------------------------------------
// * 2023-04-28 julim 최초 생성
// *
// * </pre>
// * @see com.p6spy.engine.spy.appender.MultiLineFormat
// */
//
// @Configuration
// public class P6SpySqlMultilineFormat implements MessageFormattingStrategy {
//
// @PostConstruct
// public void setLogMessageFormat() {
// P6SpyOptions.getActiveInstance().setLogMessageFormat(this.getClass().getName());
// }
//
// @Override
// public String formatMessage(final int connectionId, final String now, final long elapsed, final String category, final String prepared, final String sql, final String url) {
// if(StringUtils.isEmpty(sql)) return StringUtils.EMPTY;
//
// return "connection " + connectionId + " | took " + elapsed + "ms | " + category + "\n" + sql +";";
// }
// }

@ -45,9 +45,11 @@ public class IrosResponse<T> {
*/ */
@JsonIgnore @JsonIgnore
public List<T> getResultOrThrow() { public List<T> getResultOrThrow() {
if(!ObjectUtils.isEmpty(getResult())) return getResult();
if("00".equals(header.resultCode)){ if("00".equals(header.resultCode)){
throw ApiCustomException.create(ResultCode.NO_CONTENT); if(ObjectUtils.isEmpty(body.items)) {
throw ApiCustomException.create(ResultCode.NO_CONTENT);
}
return body.items;
} }
throw Objects.requireNonNull(ApiCustomException.of(header.resultCode, header.resultMsg)); throw Objects.requireNonNull(ApiCustomException.of(header.resultCode, header.resultMsg));
} }
@ -59,15 +61,11 @@ public class IrosResponse<T> {
* @return List<T> or null * @return List<T> or null
*/ */
@JsonIgnore @JsonIgnore
public List<T> getResultOrNull() { public List<T> getResult() {
return getResult();
}
private List<T> getResult() {
if("00".equals(header.resultCode)) { if("00".equals(header.resultCode)) {
return body.items; return body.items;
} }
return null; throw Objects.requireNonNull(ApiCustomException.of(header.resultCode, header.resultMsg));
} }
@Getter @Getter

@ -113,87 +113,87 @@ public class NimsApiDto {
private String prmisnNo; private String prmisnNo;
} }
// /** /**
// * 상품 정보 조회 response * response
// */ */
// @Getter @Getter
// @NoArgsConstructor @NoArgsConstructor
// @AllArgsConstructor @AllArgsConstructor
// @SuperBuilder @SuperBuilder
// public static class ProductInfoKd extends AuditDto { public static class ProductInfoKd extends AuditDto {
// /** /**
// * 품목코드 *
// */ */
// @JsonAlias("PRDUCT_CD") @JsonAlias("PRDUCT_CD")
// private String prductCd; private String prductCd;
//
// /** /**
// * 제품대표코드 *
// */ */
// @JsonAlias("PRDLST_MST_CD") @JsonAlias("PRDLST_MST_CD")
// private String prdlstMstCd; private String prdlstMstCd;
//
// /** /**
// * 제품명 *
// */ */
// @JsonAlias("PRDUCT_NM") @JsonAlias("PRDUCT_NM")
// private String prductNm; private String prductNm;
//
// /** /**
// * 마약/항정 구분명 * /
// */ */
// @JsonAlias("NRCD_SE_NM") @JsonAlias("NRCD_SE_NM")
// private String nrcdSeNm; private String nrcdSeNm;
//
// /** /**
// * 중점/일반 구분 * /
// */ */
// @JsonAlias("PRTM_SE_NM") @JsonAlias("PRTM_SE_NM")
// private String prtmSeNm; private String prtmSeNm;
//
// /** /**
// * 제품최소유통단위수량 *
// * 제품규격정보(고정값 = 1) * ( = 1)
// */ */
// @JsonAlias("PRD_MIN_DISTB_QY") @JsonAlias("PRD_MIN_DISTB_QY")
// private Integer prdMinDistbQy; private Integer prdMinDistbQy;
//
// /** /**
// * 제품최소유통단위 *
// */ */
// @JsonAlias("STD_PACKNG_STLE_NM") @JsonAlias("STD_PACKNG_STLE_NM")
// private String stdPackngStleNm; private String stdPackngStleNm;
//
// /** /**
// * 제품총낱개단위수량 *
// */ */
// @JsonAlias("PRD_TOT_PCE_QY") @JsonAlias("PRD_TOT_PCE_QY")
// private Integer prdTotPceQy; private Integer prdTotPceQy;
//
// /** /**
// * 제품낱개단위 *
// */ */
// @JsonAlias("PCE_CO_UNIT_NM") @JsonAlias("PCE_CO_UNIT_NM")
// private String pceCoUnitNm; private String pceCoUnitNm;
//
// /** /**
// * 마약류취급자식별번호 *
// */ */
// @JsonAlias("BSSH_CD") @JsonAlias("BSSH_CD")
// private String bsshCd; private String bsshCd;
//
// /** /**
// * 등록일 *
// */ */
// @JsonAlias("RGS_DT") @JsonAlias("RGS_DT")
// private String rgsDt; private String rgsDt;
//
// /** /**
// * 변경일 *
// */ */
// @JsonAlias("UPD_DT") @JsonAlias("UPD_DT")
// private String updDt; private String updDt;
// } }
/** /**
* response * response
@ -203,7 +203,7 @@ public class NimsApiDto {
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@SuperBuilder @SuperBuilder
public static class DsuseRptInfo extends AuditDto implements Cloneable { public static class DsuseRptInfo extends AuditDto {
/** /**
* *
@ -399,6 +399,16 @@ public class NimsApiDto {
*/ */
@JsonAlias("DSUSE_QY") @JsonAlias("DSUSE_QY")
private Integer dsuseQy; private Integer dsuseQy;
/**
* /
*/
private String nrcdSeNm;
/**
* /
*/
private String prtmSeNm;
} }
// /** // /**

@ -111,73 +111,73 @@ public class NimsApiRequest {
String fg2 = "1"; String fg2 = "1";
} }
// /** /**
// * 상품 정보 조회 request * request
// */ */
// @Schema(name = "ProductInfoRequest", description = "상품 정보 조회 request") @Schema(name = "ProductInfoRequest", description = "상품 정보 조회 request")
// @Data @Data
// @NoArgsConstructor @NoArgsConstructor
// @AllArgsConstructor @AllArgsConstructor
// @Builder @Builder
// public static class ProductInfoRequest { public static class ProductInfoRequest {
// /** /**
// * 인증키 *
// */ */
// @Schema(requiredMode = REQUIRED, title = "인증키", description = "인증키", example = "998003699950fa950b798c9edea1b38f3cfbcf3b77e03e419") @Schema(requiredMode = REQUIRED, title = "인증키", description = "인증키", example = "998003699950fa950b798c9edea1b38f3cfbcf3b77e03e419")
// @NotEmpty(message = "인증키는 필수 입니다") @NotEmpty(message = "인증키는 필수 입니다")
// String k; String k;
//
// /** /**
// * 조회범위 *
// * 1-전체, 2-내거래품목, 3-청구코드매핑 * 1-, 2-, 3-
// */ */
// @Schema(requiredMode = REQUIRED, title = "조회범위(1-전체, 2-내거래처 품목, 3-청구코드 매핑)", description = "조회범위(1-전체, 2-내거래처 품목, 3-청구코드 매핑)", example = "1", allowableValues = {"1", "2", "3"}) @Schema(requiredMode = REQUIRED, title = "조회범위(1-전체, 2-내거래처 품목, 3-청구코드 매핑)", description = "조회범위(1-전체, 2-내거래처 품목, 3-청구코드 매핑)", example = "1", allowableValues = {"1", "2", "3"})
// @Pattern(regexp = "[1-3]", message = "조회범위는 필수 입니다(1-전체, 2-내거래처 품목, 3-청구코드 매핑)") @Pattern(regexp = "[1-3]", message = "조회범위는 필수 입니다(1-전체, 2-내거래처 품목, 3-청구코드 매핑)")
// String fg; String fg;
//
// /** /**
// * 조회 페이지 *
// */ */
// @Schema(requiredMode = REQUIRED, title = "조회 페이지", description = "조회 페이지", example = "1") @Schema(requiredMode = REQUIRED, title = "조회 페이지", description = "조회 페이지", example = "1")
// @Pattern(regexp = "[0-9]{1,}", message = "조회 페이지는 필수 입니다") @Pattern(regexp = "[0-9]{1,}", message = "조회 페이지는 필수 입니다")
// String pg; String pg;
//
// /** /**
// * 기준일자 이후 *
// * yyyyMMdd * yyyyMMdd
// */ */
// @Schema(title = "기준일자(yyyyMMdd-이후일자)", description = "기준일자(yyyyMMdd-이후일자)", example = " ") @Schema(title = "기준일자(yyyyMMdd-이후일자)", description = "기준일자(yyyyMMdd-이후일자)", example = " ")
// @Pattern(regexp = "^$|"+Constants.DATE_REGX, message = "기준 일자는 8자리 입니다(yyyyMMdd)") @Pattern(regexp = "^$|"+Constants.DATE_REGX, message = "기준 일자는 8자리 입니다(yyyyMMdd)")
// @Builder.Default @Builder.Default
// String ymd = StringUtils.EMPTY; String ymd = StringUtils.EMPTY;
//
// /** /**
// * 중점/일반 구분 * /
// * 1:중점 * 1:
// * 2:일반 * 2:
// */ */
// @Schema(title = "중점|일반 구분(all, 1:중점, 2:일반)", description = "중점|일반 구분(all, 1:중점, 2:일반)", example = " ", allowableValues = {"", "1", "2"}) @Schema(title = "중점|일반 구분(all, 1:중점, 2:일반)", description = "중점|일반 구분(all, 1:중점, 2:일반)", example = " ", allowableValues = {"", "1", "2"})
// @Pattern(regexp = "^$|[12]", message = "중점|일반 구분은 1 또는 2 입니다(1:중점, 2:일반)") @Pattern(regexp = "^$|[12]", message = "중점|일반 구분은 1 또는 2 입니다(1:중점, 2:일반)")
// @Builder.Default @Builder.Default
// String fg2 = StringUtils.EMPTY; String fg2 = StringUtils.EMPTY;
//
// /** /**
// * 제품코드 *
// * 제품코드(like 검색) * (like )
// * 조회범위(pg)가 3인 경우 청구 코드 * (pg) 3
// */ */
// @Schema(title = "제품코드", description = "제품코드", example = " ") @Schema(title = "제품코드", description = "제품코드", example = " ")
// @Pattern(regexp = "^$|[0-9a-zA-Z]{13}", message = "제품코드는 13자리 입니다") @Pattern(regexp = "^$|[0-9a-zA-Z]{13}", message = "제품코드는 13자리 입니다")
// @Builder.Default @Builder.Default
// String p = StringUtils.EMPTY; String p = StringUtils.EMPTY;
//
// /** /**
// * 제품명(like 검색) * (like )
// */ */
// @Schema(title = "제품명", description = "제품명", example = " ") @Schema(title = "제품명", description = "제품명", example = " ")
// @Builder.Default @Builder.Default
// String pn = StringUtils.EMPTY; String pn = StringUtils.EMPTY;
// } }
@Schema(name = "DsuseRptInfoRequest", description = "폐기 보고 정보 조회 request") @Schema(name = "DsuseRptInfoRequest", description = "폐기 보고 정보 조회 request")
@Data @Data

@ -68,9 +68,11 @@ public class NimsApiResult<T> {
*/ */
@JsonIgnore @JsonIgnore
public List<T> getResultOrThrow() { public List<T> getResultOrThrow() {
if(!ObjectUtils.isEmpty(getResult())) return getResult();
if(header.resultCd == 0 || header.resultCd == 8){ if(header.resultCd == 0 || header.resultCd == 8){
throw ApiCustomException.create(ResultCode.NO_CONTENT); if(ObjectUtils.isEmpty(body.list)) {
throw ApiCustomException.create(ResultCode.NO_CONTENT);
}
return body.list;
} }
throw Objects.requireNonNull(ApiCustomException.of(header)); throw Objects.requireNonNull(ApiCustomException.of(header));
} }
@ -82,15 +84,12 @@ public class NimsApiResult<T> {
* @return List<T> or null * @return List<T> or null
*/ */
@JsonIgnore @JsonIgnore
public List<T> getResultOrNull() { public List<T> getResult() {
return getResult(); //return getResult();
}
private List<T> getResult() {
if(header.resultCd == 0 || header.resultCd == 8) { if(header.resultCd == 0 || header.resultCd == 8) {
return body.list; return body.list;
} }
return null; throw Objects.requireNonNull(ApiCustomException.of(header));
} }
} }

@ -22,8 +22,8 @@ import cokr.xit.adds.inf.nims.model.NimsApiResult;
public interface InfNimsService { public interface InfNimsService {
NimsApiResult.Response<NimsApiDto.BsshInfoSt> getBsshInfoSt(NimsApiRequest.BsshInfoRequest dto); NimsApiResult.Response<NimsApiDto.BsshInfoSt> getBsshInfoSt(NimsApiRequest.BsshInfoRequest dto);
// NimsApiResult.Response<NimsApiDto.ProductInfoKd> getProductInfoKd(NimsApiRequest.ProductInfoRequest dto); NimsApiResult.Response<NimsApiDto.ProductInfoKd> getProductInfoKd(NimsApiRequest.ProductInfoRequest dto);
//
// NimsApiResult.Response<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto); // NimsApiResult.Response<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto);
// //
// NimsApiResult.Response<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(NimsApiRequest.JurisdictionGovInfoRequest dto); // NimsApiResult.Response<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(NimsApiRequest.JurisdictionGovInfoRequest dto);

@ -90,18 +90,18 @@ public class InfNimsServiceBean extends AbstractServiceBean implements InfNimsSe
return result.getResponse(); return result.getResponse();
} }
// @Override @Override
// @TraceLogging @TraceLogging
// public NimsApiResult.Response<NimsApiDto.ProductInfoKd> getProductInfoKd(NimsApiRequest.ProductInfoRequest dto) { public NimsApiResult.Response<NimsApiDto.ProductInfoKd> getProductInfoKd(NimsApiRequest.ProductInfoRequest dto) {
// dto.setK(nimsApiKey); dto.setK(nimsApiKey);
// ApiUtil.validate(dto, null, validator); ApiUtil.validate(dto, null, validator);
// if(!isEmpty(dto.getYmd())) ApiUtil.checkYmdError(dto.getYmd(), null); if(!isEmpty(dto.getYmd())) ApiUtil.checkYmdError(dto.getYmd(), null);
//
// String rslt = ApiUtil.callNimsApi(nimsUrl + productinfoKd, dto); String rslt = ApiUtil.callNimsApi(nimsUrl + productinfoKd, dto);
// NimsApiResult<NimsApiDto.ProductInfoKd> result = json.parse(rslt, new TypeReference<NimsApiResult<NimsApiDto.ProductInfoKd>>() {}); NimsApiResult<NimsApiDto.ProductInfoKd> result = json.parse(rslt, new TypeReference<NimsApiResult<NimsApiDto.ProductInfoKd>>() {});
// return result.getResponse(); return result.getResponse();
// } }
//
// @Override // @Override
// @TraceLogging // @TraceLogging
// public NimsApiResult.Response<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto) { // public NimsApiResult.Response<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto) {
@ -176,7 +176,7 @@ public class InfNimsServiceBean extends AbstractServiceBean implements InfNimsSe
NimsApiDto.DsuseRptInfoDtl dtl1 = NimsApiDto.DsuseRptInfoDtl.builder() NimsApiDto.DsuseRptInfoDtl dtl1 = NimsApiDto.DsuseRptInfoDtl.builder()
.usrRptIdNo(usrRptIdNoList.get(i)) .usrRptIdNo(usrRptIdNoList.get(i))
.usrRptLnIdNo(usrRptLnIdNoList.get(0)+i) .usrRptLnIdNo(usrRptLnIdNoList.get(0)+i)
.prductCd("상품코드") .prductCd("8806718050823")
.prductNm("제품명") .prductNm("제품명")
.minDistbQy(1) .minDistbQy(1)
.pceQy(0) .pceQy(0)
@ -189,7 +189,7 @@ public class InfNimsServiceBean extends AbstractServiceBean implements InfNimsSe
NimsApiDto.DsuseRptInfoDtl dtl2 = NimsApiDto.DsuseRptInfoDtl.builder() NimsApiDto.DsuseRptInfoDtl dtl2 = NimsApiDto.DsuseRptInfoDtl.builder()
.usrRptIdNo(usrRptIdNoList.get(i)) .usrRptIdNo(usrRptIdNoList.get(i))
.usrRptLnIdNo(usrRptLnIdNoList.get(1)+i) .usrRptLnIdNo(usrRptLnIdNoList.get(1)+i)
.prductCd("상품코드1") .prductCd("8806718050822")
.prductNm("제품명1") .prductNm("제품명1")
.minDistbQy(1) .minDistbQy(1)
.pceQy(0) .pceQy(0)

@ -44,14 +44,14 @@ public class InfNimsController {
return ApiBaseResponse.of(infNimsService.getBsshInfoSt(dto)); return ApiBaseResponse.of(infNimsService.getBsshInfoSt(dto));
} }
// @Operation(summary = "마약류 상품 정보 조회", description = "마약류 상품정보 조회") @Operation(summary = "마약류 상품 정보 조회", description = "마약류 상품정보 조회")
// @PostMapping("/getProductInfoKd") @PostMapping("/getProductInfoKd")
// public ApiBaseResponse<NimsApiResult.Response<NimsApiDto.ProductInfoKd>> getProductInfoKd( public ApiBaseResponse<NimsApiResult.Response<NimsApiDto.ProductInfoKd>> getProductInfoKd(
// @RequestBody NimsApiRequest.ProductInfoRequest dto @RequestBody NimsApiRequest.ProductInfoRequest dto
// ) { ) {
// return ApiBaseResponse.of(infNimsService.getProductInfoKd(dto)); return ApiBaseResponse.of(infNimsService.getProductInfoKd(dto));
// } }
//
// @Operation(summary = "제조 일련 번호 정보 조회", description = "제조 일련 번호 정보 조회") // @Operation(summary = "제조 일련 번호 정보 조회", description = "제조 일련 번호 정보 조회")
// @PostMapping("/getMnfSeqInfo") // @PostMapping("/getMnfSeqInfo")
// public ApiBaseResponse<NimsApiResult.Response<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo( // public ApiBaseResponse<NimsApiResult.Response<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo(

@ -10,18 +10,18 @@
<insert id="mergeBsshInfoSt" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$BsshInfoSt"> <insert id="mergeBsshInfoSt" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$BsshInfoSt">
/** nims-mysql-mapper|mergeBsshInfoSt-마약류취급자정보 생성/변경|julim */ /** nims-mysql-mapper|mergeBsshInfoSt-마약류취급자정보 생성/변경|julim */
INSERT INTO tb_bssh_info( INSERT INTO tb_bssh_info(
bssh_cd, bssh_cd, /* 마약류취급자식별번호 */
bssh_nm, bssh_nm, /* 마약류취급자명 */
induty_nm, induty_nm, /* 업종명 */
hdnt_cd, hdnt_cd, /* 의료업자구분 */
hdnt_nm, hdnt_nm, /* 의료업자구분명 */
bizrno, bizrno, /* 사업자등록번호 */
rprsntv_nm, rprsntv_nm, /* 대표자명 */
chrg_nm, chrg_nm, /* 담당자명 */
hptl_no, hptl_no, /* 요양기관번호 */
join_yn, join_yn, /* 회원가입여부 */
bssh_stts_nm, bssh_stts_nm, /* 마약류취급자상태명 */
prmisn_no, prmisn_no, /* 허가번호 */
use_yn, use_yn,
reg_dt, reg_dt,
rgtr rgtr
@ -43,20 +43,72 @@
#{rgtr} #{rgtr}
) )
ON DUPLICATE KEY UPDATE ON DUPLICATE KEY UPDATE
bssh_nm = #{bsshNm}, bssh_nm = #{bsshNm}, /* 마약류취급자명 */
induty_nm = #{indutyNm}, induty_nm = #{indutyNm}, /* 업종명 */
hdnt_cd = #{hdntCd}, hdnt_cd = #{hdntCd}, /* 의료업자구분 */
hdnt_nm = #{hdntNm}, hdnt_nm = #{hdntNm}, /* 의료업자구분명 */
bizrno = #{bizrno}, bizrno = #{bizrno}, /* 사업자등록번호 */
rprsntv_nm = #{rprsntvNm}, rprsntv_nm = #{rprsntvNm}, /* 대표자명 */
chrg_nm = #{chrgNm}, chrg_nm = #{chrgNm}, /* 담당자명 */
hptl_no = #{hptlNo}, hptl_no = #{hptlNo}, /* 요약기관번호 */
join_yn = #{joinYn}, join_yn = #{joinYn}, /* 가입여부 */
bssh_stts_nm = #{bsshSttusNm}, bssh_stts_nm = #{bsshSttusNm}, /* 마약류취급자상태명 */
prmisn_no = #{prmisnNo}, prmisn_no = #{prmisnNo}, /* 허가번호 */
mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s'), mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
mdfr = #{rgtr} mdfr = #{rgtr}
</insert> </insert>
<insert id="mergeProductInfoKd" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$ProductInfoKd">
/** nims-mysql-mapper|mergeProductInfoKd-상품정보 생성|julim */
INSERT INTO tb_prduct_info(
prduct_cd, /* 제품코드 */
prdlst_mst_cd, /* 제품대표코드 */
prduct_nm, /* 제품명 */
nrcd_se_nm, /* 마약항정구분 */
prtm_se_nm, /* 중점일반구분 */
prd_min_distb_qy, /* 최소유통단위수량 - 제품규격정보(고정값=1) */
std_packng_stle_nm, /* 제품최소유통단위 */
prd_tot_pce_qy, /* 제품총낱개단위수량 */
pce_co_unit_nm, /* 제품낱개단위 */
bssh_cd, /* 마약류취급자식별번호 */
rgs_dt, /* 등록일 */
upd_dt, /* 변경일 */
use_yn,
reg_dt,
rgtr
) VALUES (
#{prductCd},
#{prdlstMstCd},
#{prductNm},
#{nrcdSeNm},
#{prtmSeNm},
#{prdMinDistbQy},
#{stdPackngStleNm},
#{prdTotPceQy},
#{pceCoUnitNm},
#{bsshCd},
#{rgsDt},
#{updDt},
'Y',
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
#{rgtr}
)
ON DUPLICATE KEY UPDATE
prdlst_mst_cd = #{prdlstMstCd}, /* 제품대표코드 */
prduct_nm = #{prductNm}, /* 제품명 */
nrcd_se_nm = #{nrcdSeNm}, /* 마약항정구분 */
prtm_se_nm = #{prtmSeNm}, /* 중점일반구분 */
prd_min_distb_qy = #{prdMinDistbQy}, /* 최소유통단위수량 - 제품규격정보(고정값=1) */
std_packng_stle_nm = #{stdPackngStleNm}, /* 제품최소유통단위 */
prd_tot_pce_qy = #{prdTotPceQy}, /* 제품총낱개단위수량 */
pce_co_unit_nm = #{pceCoUnitNm}, /* 제품낱개단위 */
bssh_cd = #{bsshCd}, /* 마약류취급자식별번호 */
rgs_dt = #{rgsDt}, /* 등록일 */
upd_dt = #{updDt}, /* 변경일 */
mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
mdfr = #{rgtr}
</insert>
<!-- **************************************************************************** --> <!-- **************************************************************************** -->
<!-- NIMS API end --> <!-- NIMS API end -->
<!-- **************************************************************************** --> <!-- **************************************************************************** -->
@ -97,6 +149,40 @@
</if> </if>
</select> </select>
<select id="selectDsuseRptInfoDtls" parameterType="map" resultType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfoDtl">
/** nims-mysql-mapper|selectDsuseRptInfoDtls-폐기보고정보 상세 조회|julim */
SELECT tdrid.usr_rpt_id_no, /* 사용자보고식별번호 */
tdrid.usr_rpt_ln_id_no, /* 사용자보고라인식별번호 */
tdrid.prduct_cd, /* 제품코드 */
tdrid.prduct_nm, /* 제품명 */
tdrid.min_distb_qy, /* 최소유통단위수량 */
tdrid.pce_qy, /* 낱개단위수량 */
tdrid.mnf_no, /* 제조번호 */
tdrid.prd_valid_de, /* 제품유효기한일자 */
tdrid.mnf_seq, /* 제품일련번호 */
tdrid.mvmn_ty_cd, /* 이동유형코드 */
tdrid.dsuse_qy, /* 폐기수량 */
tdrid.use_yn,
tdrid.reg_dt,
tdrid.rgtr,
tpi.nrcd_se_nm, /* 마약항정구분 */
tpi.prtm_se_nm /* 중점일반구분 */
FROM tb_dsuse_rpt_info_dtl tdrid
LEFT JOIN tb_prduct_info tpi
ON (tdrid.prduct_cd = tpi.prduct_cd)
-- AND tdrid.use_yn = 'Y')
WHERE tdrid.usr_rpt_id_no = #{usrRptIdNo}
<if test="usrRptLnIdNo != null">
AND tdrid.usr_rpt_ln_id_no = #{usrRptLnIdNo}
</if>
<if test="useYn != null">
AND tdrid.use_yn = #{useYn}
</if>
<if test="userId != null">
AND tdrid.userId = #{userId}
</if>
</select>
<insert id="insertDsuseRptInfo" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfo"> <insert id="insertDsuseRptInfo" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfo">
/** nims-mysql-mapper|insertDsuseRptInfo-폐기보고정보 생성|julim */ /** nims-mysql-mapper|insertDsuseRptInfo-폐기보고정보 생성|julim */
INSERT INTO tb_dsuse_rpt_info ( INSERT INTO tb_dsuse_rpt_info (
@ -248,8 +334,25 @@
) )
</insert> </insert>
<select id="selectDsuseMgt" parameterType="java.util.List" resultType="cokr.xit.adds.biz.nims.model.BizNimsResponse$DsuseMgtResponse"> <select id="selectSavedDsuseMgts" parameterType="java.util.List" resultType="cokr.xit.adds.biz.nims.model.BizNimsResponse$DsuseMgtResponse">
/** nims-mysql-mapper|selectDsuseMgt-폐기관리 조회|julim */ /** nims-mysql-mapper|selectSavedDsuseMgts-저장 폐기관리목록 조회|julim */
<include refid="sqlDsuseMgt"/>
WHERE tdm.dscdmng_id IN
<foreach collection="list" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<select id="selectDsuseMgts" parameterType="cokr.xit.adds.biz.nims.model.BizNimsRequest$DsuseMgtInq" resultType="cokr.xit.adds.biz.nims.model.BizNimsResponse$DsuseMgtResponse">
/** nims-mysql-mapper|selectDsuseMgts-폐기관리목록 조회|julim */
<include refid="sqlDsuseMgt"/>
WHERE tdm.dscdmng_id IN
<foreach collection="dscdmngIds" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<sql id="sqlDsuseMgt">
SELECT tdm.dscdmng_id /** 폐기관리ID */ SELECT tdm.dscdmng_id /** 폐기관리ID */
, tdm.user_id /** 사용자ID */ , tdm.user_id /** 사용자ID */
, tdm.usr_rpt_id_no /** 사용자보고식별번호 */ , tdm.usr_rpt_id_no /** 사용자보고식별번호 */
@ -274,13 +377,10 @@
JOIN tb_dsuse_rpt_info tdri JOIN tb_dsuse_rpt_info tdri
ON (tdm.org_usr_rpt_id_no = tdri.org_usr_rpt_id_no ON (tdm.org_usr_rpt_id_no = tdri.org_usr_rpt_id_no
AND tdm.usr_rpt_id_no = tdri.usr_rpt_id_no) AND tdm.usr_rpt_id_no = tdri.usr_rpt_id_no)
LEFT OUTER JOIN tb_bssh_info tbi LEFT JOIN tb_bssh_info tbi
ON tdri.bssh_cd = tbi.bssh_cd ON tdri.bssh_cd = tbi.bssh_cd
WHERE tdm.dscdmng_id IN </sql>
<foreach collection="list" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<!-- **************************************************************************** --> <!-- **************************************************************************** -->
<!-- ADDS BIZ end --> <!-- ADDS BIZ end -->
<!-- **************************************************************************** --> <!-- **************************************************************************** -->

Loading…
Cancel
Save