폐기관리 업무 테이블 반영

dev
Jonguk. Lim 7 months ago
parent 3728923fde
commit e92442fca1

@ -37,21 +37,24 @@ public interface BizNimsMapper extends AbstractMapper {
//------------------------------------------------------------------------------------------------------
// NIMS BIZ
//------------------------------------------------------------------------------------------------------
int insertDsuseMgt(BizNimsRequest.DsuseMgt dto);
int insertDsuseMgtDtl(BizNimsRequest.DsuseMgtDtl dto);
List<BizNimsResponse.DsuseMgtResponse> selectDsuseMgts(BizNimsRequest.DsuseMgtInq dto);
List<BizNimsResponse.DsuseMgtDtlResponse> selectDsuseMgtDtls(Map<String, String> map);
int insertDsuseRptInfo(NimsApiDto.DsuseRptInfo dto);
int insertDsuseRptInfoDtl(NimsApiDto.DsuseRptInfoDtl dto);
int updateCancelDsuseRptInfo(NimsApiDto.DsuseRptInfo dto);
int updateCancelDsuseRptInfoDtl(NimsApiDto.DsuseRptInfo dto);
int updateCancelDsuseMgt(NimsApiDto.DsuseRptInfo dto);
Map<String, String> recusiveRefUsrRptIdNo(String refUsrRptIdNo);
int insertDsuseMgt(BizNimsRequest.DsuseMgt dto);
NimsApiDto.DsuseRptInfo selectDsuseRptInfoByUsrRptIdNo(Map<String, String> map);
List<NimsApiDto.DsuseRptInfoDtl> selectDsuseRptInfoDtls(Map<String, String> map);
List<BizNimsResponse.DsuseMgtResponse> selectSavedDsuseMgts(List<String> dsuseMgtIds);
List<BizNimsResponse.DsuseMgtResponse> selectDsuseMgts(BizNimsRequest.DsuseMgtInq dto);
List<BizNimsResponse.DsuseRptInfoResponse> selectSavedDsuseMgts(List<String> dsuseMgtIds);
// int insertDsuseMgtDtl(BizNimsRequest.DsuseMgtDtl dto);
// int updateCancelDsuseMgtDtl(BizNimsRequest.DsuseMgt dto);

@ -2,23 +2,22 @@ package cokr.xit.adds.biz.nims.model;
import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.*;
import java.util.ArrayList;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import cokr.xit.adds.core.model.AuditDto;
import cokr.xit.adds.inf.nims.model.NimsApiDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
/**
@ -45,7 +44,7 @@ public class BizNimsRequest {
@AllArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = false)
public static class DsuseMgt extends AuditDto {
public static class DsuseMgt2 extends AuditDto {
@Schema(requiredMode = AUTO, title = "폐기 관리 ID", example = " ")
private String dscdmngId;
@ -100,18 +99,24 @@ public class BizNimsRequest {
}
/**
* request
* request
*/
@Schema(name = "DsuseMgtInq", description = "마약류 폐기 관리 조회 DTO")
@Schema(name = "DsuseMgt", 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;
public static class DsuseMgt extends AuditDto {
/**
* ID
*/
@Schema(requiredMode = AUTO, title = "폐기 관리 ID", example = " ")
private String dscdmngId;
/**
* ID
*/
@Schema(requiredMode = REQUIRED, title = "사용자 ID", example = " ")
@NotEmpty(message = "사용자 ID는 필수 입니다")
private String userId;
@ -130,9 +135,107 @@ public class BizNimsRequest {
* 99-
* </pre>
*/
@Schema(requiredMode = REQUIRED, title = "진행 상태 코드", example = " ", allowableValues = {"01", "02", "11", "22", "31", "41", "99"})
private String prgrsSttsCd = "01";
/**
*
*/
private String bsshCd;
/**
*
*/
private Integer rndDtlRptCnt;
/**
*
*/
private String hdrDe;
/**
*
*/
private String rptDe;
/**
* <pre>
*
* 1-, 2-, 4-//
* </pre>
*/
private String dsuseSeCd;
/**
* <pre>
*
* 01-, 02-,, 03-
* 04- , 05- , 07-, 08-
* 09-, 12-
* </pre>
*/
private String dsusePrvCd;
/**
* <pre>
*
* 1-, 2-, 3- , 4-, 5-
* 6-, 7-, 8-(,), 9-
* </pre>
*/
private String dsuseMthCd;
/**
*
*/
private String dsuseLoc;
/**
*
*/
private String dsuseDe;
/**
* <pre>
*
* update
* </pre>
*/
@Schema(requiredMode = REQUIRED, title = "사용자보고식별번호", example = " ")
private String usrRptIdNo;
/**
* <pre>
*
*
* > > >
* =>
* YYYYMMDD
* </pre>
*/
@Schema(requiredMode = REQUIRED, title = "원사용자보고식별번호", example = " ")
private String orgUsrRptIdNo;
/**
* <pre>
*
* 0-, 1-, 2-
* </pre>
*/
private String rptTyCd;
/**
* <pre>
*
* </pre>
*/
private String stts;
@Schema(requiredMode = REQUIRED)
@Builder.Default
@Valid
List<DsuseMgtDtl> dsuseMgtDtls = new ArrayList<>();
}
/**
* request
*/
@ -142,26 +245,96 @@ public class BizNimsRequest {
@AllArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = false)
public static class DsuseMgtDtl extends NimsApiDto.DsuseRptInfoDtl {
@Schema(requiredMode = AUTO, title = "폐기 관리 ID", example = " ")
public static class DsuseMgtDtl extends AuditDto {
// 폐기관리_id
private String dscdmngId;
// 폐기관리_순번
private String dscdmngSn;
// 제품_코드
private String prductCd;
// 제품_명
private String prductNm;
// 최소_유통단위_수량
private Integer minDistbQy;
// 낱개단위_수량
private Integer pceQy;
// 제조_번호
private String mnfNo;
// 제품_유효기한_일자
private String prdValidDe;
// 제조_일련번호
private String mnfSeq;
// 폐기_수량
private Integer dsuseQy;
// 사용자_보고_식별_번호
private String usrRptIdNo;
// 사용자_보고_라인_식별_번호
private String usrRptLnIdNo;
}
@JsonIgnore
@Builder.Default
private String useYn = "Y";
@JsonIgnore
private String regDt;
@JsonIgnore
@Setter
private String rgtr;
/**
* request
*/
@Schema(name = "DsuseMgtInq", description = "마약류 폐기 관리 조회 DTO")
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = false)
public static class DsuseMgtInq {
@Schema(requiredMode = AUTO, title = "폐기 관리 ID 목록", example = "[\"2024050001\", \"2024050002\"]")
private List<String> dscdmngIds;
@JsonIgnore
private String mdfcnDt;
@Schema(requiredMode = REQUIRED, title = "사용자 ID", example = " ")
@NotEmpty(message = "사용자 ID는 필수 입니다")
private String userId;
@JsonIgnore
@Setter
private String mdfr;
/**
* <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
*/
// @Schema(name = "DsuseMgtDtl", description = "마약류 폐기 관리 상세 DTO")
// @Data
// @NoArgsConstructor
// @AllArgsConstructor
// @SuperBuilder
// @EqualsAndHashCode(callSuper = false)
// public static class DsuseMgtDtl extends NimsApiDto.DsuseRptInfoDtl {
// @Schema(requiredMode = AUTO, title = "폐기 관리 ID", example = " ")
// private String dscdmngId;
//
// @JsonIgnore
// @Builder.Default
// private String useYn = "Y";
//
// @JsonIgnore
// private String regDt;
//
// @JsonIgnore
// @Setter
// private String rgtr;
//
// @JsonIgnore
// private String mdfcnDt;
//
// @JsonIgnore
// @Setter
// private String mdfr;
// }
}

@ -32,7 +32,75 @@ public class BizNimsResponse {
@AllArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = true)
public static class DsuseMgtResponse extends NimsApiDto.DsuseRptInfo {
public static class DsuseMgtResponse extends BizNimsRequest.DsuseMgt {
private String dsuseSeCdNm;
private String dsusePrvCdNm;
private String dsuseMthCdNm;
private String rptTyCdNm;
/**
* <pre>
*
* </pre>
*/
private String rprsntvNm;
/**
*
*/
private String prmisnNo;
}
/**
* response
*/
@Schema(name = "DsuseMgtDtlResponse", description = "폐기관리상세정보 조회 response DTO")
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = true)
public static class DsuseMgtDtlResponse extends BizNimsRequest.DsuseMgtDtl {
/**
*
*/
private String nrcdSeNm;
/**
*
*/
private String prtmSeNm;
private String bsshCd;
/**
*
*/
private String bsshNm;
/**
*
*/
private String stdPackngStleNm;
/**
*
*/
private String pceCoUnitNm;
}
/**
* response
*/
@Schema(name = "DsuseRptInfoResponse", description = "폐기보고관리정보 조회 response DTO")
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = true)
public static class DsuseRptInfoResponse extends NimsApiDto.DsuseRptInfo {
private String dscdmngId;
private String userId;

@ -27,8 +27,8 @@ public interface BizNimsService {
// NIMS API CALL
//------------------------------------------------------------------------------------------------------
List<NimsApiDto.BsshInfoSt> saveBsshInfoSt(NimsApiRequest.BsshInfoRequest dto);
List<NimsApiDto.ProductInfoKd> saveProductInfoKd(NimsApiRequest.ProductInfoRequest dto);
// List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto);
List<NimsApiDto.ProductInfoKd> saveProductInfoKd(NimsApiRequest.ProductInfoRequest dto, boolean isMnfSeqInfo);
List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto);
// List<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(NimsApiRequest.JurisdictionGovInfoRequest dto);
// List<NimsApiDto.StorageInfo> saveStorageInfo(NimsApiRequest.StorageInfoRequest dto);
@ -58,10 +58,14 @@ public interface BizNimsService {
// NimsAarResult updateReportDsuse();
// NimsAarResult cancelReportDsuse();
List<BizNimsResponse.DsuseMgtResponse> saveDsuseMgt(List<BizNimsRequest.DsuseMgt> dtos);
BizNimsRequest.DsuseMgt saveDsuseMgt(BizNimsRequest.DsuseMgt dto);
List<BizNimsResponse.DsuseMgtResponse> getDsuseMgts(BizNimsRequest.DsuseMgtInq dto);
@Deprecated
List<BizNimsResponse.DsuseRptInfoResponse> saveDsuseMgts(List<BizNimsRequest.DsuseMgt> dtos);
// BizNimsAarDto.AarHeader getTgtDsuseRptData(BizNimsRequest.DsuseMgt dto);
// BizNimsAarDto.AarHeader createTgtDsuseRptData(BizNimsAarDto.AarHeader dto);

@ -8,6 +8,7 @@ import java.util.Map;
import javax.validation.Validation;
import javax.validation.Validator;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -63,8 +64,19 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
//------------------------------------------------------------------------------------------------------
// NIMS API CALL
//------------------------------------------------------------------------------------------------------
/**
* <pre>
* DB
* - (3 )
* @param dto NimsApiRequest.BsshInfoRequest
* @return List<NimsApiDto.BsshInfoSt>
* </pre>
*/
@Override
public List<BsshInfoSt> saveBsshInfoSt(BsshInfoRequest dto) {
if(!isEmpty(dto.getBn()) && dto.getBn().length() < 3) {
throw ApiCustomException.create("업체[사업자]명은 3자 이상 으로 조회해 주세요");
}
List<BsshInfoSt> list = new ArrayList<>();
while(true) {
// 마약류취급자식별번호로 마약류취급자정보 조회
@ -86,10 +98,27 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return list;
}
/**
* <pre>
* DB
* , ,
* - (2 )
* @param dto NimsApiRequest.ProductInfoRequest
* @param isMnfSeqInfo
* @return
* </pre>
*/
@Override
public List<NimsApiDto.ProductInfoKd> saveProductInfoKd(NimsApiRequest.ProductInfoRequest dto) {
List<NimsApiDto.ProductInfoKd> list = new ArrayList<>();
public List<NimsApiDto.ProductInfoKd> saveProductInfoKd(NimsApiRequest.ProductInfoRequest dto, boolean isMnfSeqInfo) {
if(isEmpty(dto.getP()) && isEmpty(dto.getPn())){
throw ApiCustomException.create("상품번호 또는 상품명은 필수 입니다");
}
if(!isEmpty(dto.getPn()) && dto.getPn().length() < 2){
throw ApiCustomException.create("상품명은 2자 이상 으로 조회해 주세요");
}
List<NimsApiDto.ProductInfoKd> list = new ArrayList<>();
while(true) {
// 제품코드로 제품정보 조회
NimsApiResult.Response<NimsApiDto.ProductInfoKd> rslt = infNimsService.getProductInfoKd(dto);
@ -103,36 +132,33 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
}
list.addAll(curList);
// 제조 번호, 일련번호, 유효기간 정보 목록 추가
if(isMnfSeqInfo) productInfoaddMnfSeqs(curList);
if(rslt.isEndYn()) break;
dto.setPg(String.valueOf(Integer.parseInt(dto.getPg()) + 1));
}
return list;
}
// @Override
// public List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto) {
// NimsApiResult.Response<NimsApiDto.MnfSeqInfo> response = infNimsService.getMnfSeqInfo(dto);
//
// return response.getResultOrThrow();
// }
//
// @Override
// public List<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(NimsApiRequest.JurisdictionGovInfoRequest dto) {
// NimsApiResult.Response<NimsApiDto.JurisdictionGovInfo> result = infNimsService.getJurisdictionGovInfo(dto);
// return result.getResultOrThrow();
// }
//
// @Override
// public List<NimsApiDto.StorageInfo> saveStorageInfo(NimsApiRequest.StorageInfoRequest dto) {
// NimsApiResult.Response<NimsApiDto.StorageInfo> result = infNimsService.getStorageInfo(dto);
// List<NimsApiDto.StorageInfo> list = result.getResultOrThrow();
//
// for (NimsApiDto.StorageInfo d : list) {
// d.setRgtr(Constants.NIMS_API_USER_ID);
// bizNimsMapper.mergeStorgeInfo(d);
// }
// return list;
// }
@Override
public List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto) {
NimsApiResult.Response<NimsApiDto.MnfSeqInfo> response = infNimsService.getMnfSeqInfo(dto);
List<NimsApiDto.MnfSeqInfo> results = response.getResultOrThrow();
// FIXME: 내림 차순 정렬
results.sort((a, b) -> {
if (isEmpty(a.getPrdValidDe()) && isEmpty(b.getPrdValidDe()))
return 0;
if (isEmpty(a.getPrdValidDe()))
return 1;
if (isEmpty(b.getPrdValidDe()))
return -1;
return b.getPrdValidDe().compareTo(a.getPrdValidDe());
});
return results;
}
/**
* <pre>
@ -228,6 +254,48 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
//------------------------------------------------------------------------------------------------------
// NIMS BIZ
//------------------------------------------------------------------------------------------------------
public BizNimsRequest.DsuseMgt saveDsuseMgt(BizNimsRequest.DsuseMgt dto) {
ApiUtil.validate(dto, null, validator);
if(dto.getRndDtlRptCnt() != dto.getDsuseMgtDtls().size()) throw ApiCustomException.create("폐기물 보고수 오류[폐기물 갯수 확인]");
dto.setRgtr(Constants.NIMS_API_USER_ID);
if(bizNimsMapper.insertDsuseMgt(dto) == 1){
int dtlCnt = 0;
for (BizNimsRequest.DsuseMgtDtl d : dto.getDsuseMgtDtls()) {
d.setDscdmngId(dto.getDscdmngId());
d.setDscdmngSn(StringUtils.leftPad(dtlCnt + 1 + "", 3, "0"));
d.setRgtr(Constants.NIMS_API_USER_ID);
dtlCnt = dtlCnt + bizNimsMapper.insertDsuseMgtDtl(d);
}
if(dto.getDsuseMgtDtls().size() != dtlCnt) throw ApiCustomException.create("폐기 관리 상세 등록 실패");
} else {
throw ApiCustomException.create("폐기 관리 마스터 등록 실패");
}
return dto;
}
@Override
public List<BizNimsResponse.DsuseMgtResponse> getDsuseMgts(BizNimsRequest.DsuseMgtInq dto) {
List<BizNimsResponse.DsuseMgtResponse> resList = bizNimsMapper.selectDsuseMgts(dto);
for (BizNimsResponse.DsuseMgtResponse r : resList) {
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("dscdmngId", r.getDscdmngId());
List<BizNimsResponse.DsuseMgtDtlResponse> dsuseRptInfoDtls = bizNimsMapper.selectDsuseMgtDtls(map);
setDsuseMgtDtlAddProductInfo(dsuseRptInfoDtls);
r.getDsuseMgtDtls().addAll(dsuseRptInfoDtls);
}
return resList;
}
/**
* <pre>
*
@ -236,8 +304,9 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* @return List<BizNimsResponse.DsuseMgtResponse>
* </pre>
*/
@Deprecated
@Override
public List<BizNimsResponse.DsuseMgtResponse> saveDsuseMgt(List<BizNimsRequest.DsuseMgt> dtos) {
public List<BizNimsResponse.DsuseRptInfoResponse> saveDsuseMgts(List<BizNimsRequest.DsuseMgt> dtos) {
for (BizNimsRequest.DsuseMgt dto : dtos) {
ApiUtil.validate(dto, null, validator);
}
@ -249,7 +318,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
bizNimsMapper.insertDsuseMgt(dto);
dscdmngIds.add(dto.getDscdmngId());
}
List<BizNimsResponse.DsuseMgtResponse> resList = bizNimsMapper.selectSavedDsuseMgts(dscdmngIds);
List<BizNimsResponse.DsuseRptInfoResponse> resList = bizNimsMapper.selectSavedDsuseMgts(dscdmngIds);
// 마약류취급업체의 허가번호(prmisnNo), 대표자명(rprsntvNm) set
setAddBsshInfo(resList);
@ -257,29 +326,63 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return resList;
}
@Override
public List<BizNimsResponse.DsuseMgtResponse> getDsuseMgts(BizNimsRequest.DsuseMgtInq dto) {
List<BizNimsResponse.DsuseMgtResponse> resList = bizNimsMapper.selectDsuseMgts(dto);
for (BizNimsResponse.DsuseMgtResponse r : resList) {
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()));
//------------------------------------------------------------------------------------------------------
// private method
//------------------------------------------------------------------------------------------------------
/**
* <pre>
* set
* (nrcdSeNm), (prtmSenm), (bsshNm)
* (stdPackngStleNm), (pceCoUnitNm) set
* @param dtlList <NimsApiDto.DsuseRptInfoDtl>
* </pre>
*/
private void setDsuseMgtDtlAddProductInfo(List<BizNimsResponse.DsuseMgtDtlResponse> dtlList) {
Map<String, String> map = new HashMap<>();
map.put("usrRptIdNo", r.getUsrRptIdNo());
List<NimsApiDto.DsuseRptInfoDtl> dsuseRptInfoDtls = bizNimsMapper.selectDsuseRptInfoDtls(map);
setAddProductInfo(dsuseRptInfoDtls);
r.getDsuseRptInfoDtls().addAll(dsuseRptInfoDtls);
}
for (BizNimsResponse.DsuseMgtDtlResponse r : dtlList) {//if()
// 마약항정구분(nrcdSeNm), 중점일반구분(prtmSenm)
if (isEmpty(r.getNrcdSeNm()) || isEmpty(r.getPrtmSeNm())) {
//NimsApiResult.Response<NimsApiDto.ProductInfoKd> result = infNimsService.getProductInfoKd(
return resList;
List<NimsApiDto.ProductInfoKd> list = saveProductInfoKd(
NimsApiRequest.ProductInfoRequest.builder()
.fg("1")
.pg("1")
.p(r.getPrductCd())
.build(),
false
);
if (isEmpty(list)) {
// FIXME : 데이타 정상 흐름 확인후 comment 제거
continue;
//throw ApiCustomException.create(String.format("데이타 오류(제품코드[%s]에 해당하는 데이타가 없습니다)", r.getPrductCd()));
}
r.setNrcdSeNm(list.get(0).getNrcdSeNm());
r.setPrtmSeNm(list.get(0).getPrtmSeNm());
r.setStdPackngStleNm(list.get(0).getStdPackngStleNm());
r.setPceCoUnitNm(list.get(0).getPceCoUnitNm());
}
// 제조수입자명(bsshNm)
if (isEmpty(r.getBsshNm()) && !isEmpty(r.getBsshCd())) {
List<BsshInfoSt> list = saveBsshInfoSt(
BsshInfoRequest.builder()
.fg("1")
.pg("1")
.bc(r.getBsshCd())
.build()
);
if (isEmpty(list)) {
// FIXME : 데이타 정상 흐름 확인후 comment 제거
continue;
//throw ApiCustomException.create(String.format("데이타 오류(마약류취급자식별번호[%s]에 해당하는 데이타가 없습니다)", r.getBsshCd()));
}
r.setBsshNm(list.get(0).getBsshNm());
}
}
}
//------------------------------------------------------------------------------------------------------
// private method
//------------------------------------------------------------------------------------------------------
/**
* <pre>
@ -391,8 +494,8 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* @param resList List<BizNimsResponse.DsuseMgtResponse>
* </pre>
*/
private void setAddBsshInfo(List<BizNimsResponse.DsuseMgtResponse> resList) {
for (BizNimsResponse.DsuseMgtResponse r : resList) {
private void setAddBsshInfo(List<BizNimsResponse.DsuseRptInfoResponse> resList) {
for (BizNimsResponse.DsuseRptInfoResponse r : resList) {
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()));
@ -420,7 +523,8 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
/**
* <pre>
* set
* (nrcdSeNm), (prtmSenm), (bsshNm) set
* (nrcdSeNm), (prtmSenm), (bsshNm)
* (stdPackngStleNm), (pceCoUnitNm) set
* @param dtlList <NimsApiDto.DsuseRptInfoDtl>
* </pre>
*/
@ -428,24 +532,27 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
for (NimsApiDto.DsuseRptInfoDtl r : dtlList) {//if()
// 마약항정구분(nrcdSeNm), 중점일반구분(prtmSenm)
// 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 제거
// continue;
// //throw ApiCustomException.create(String.format("데이타 오류(제품코드[%s]에 해당하는 데이타가 없습니다)", r.getPrductCd()));
// }
// r.setNrcdSeNm(list.get(0).getNrcdSeNm());
// r.setPrtmSeNm(list.get(0).getPrtmSeNm());
// }
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(),
false
);
if (isEmpty(list)) {
// FIXME : 데이타 정상 흐름 확인후 comment 제거
continue;
//throw ApiCustomException.create(String.format("데이타 오류(제품코드[%s]에 해당하는 데이타가 없습니다)", r.getPrductCd()));
}
r.setNrcdSeNm(list.get(0).getNrcdSeNm());
r.setPrtmSeNm(list.get(0).getPrtmSeNm());
r.setStdPackngStleNm(list.get(0).getStdPackngStleNm());
r.setPceCoUnitNm(list.get(0).getPceCoUnitNm());
}
// 제조수입자명(bsshNm)
if (isEmpty(r.getBsshNm()) && !isEmpty(r.getBsshCd())) {
@ -466,10 +573,37 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
}
}
/**
* <pre>
*
* @param list List<NimsApiDto.ProductInfoKd>
* </pre>
*/
private void productInfoaddMnfSeqs(List<NimsApiDto.ProductInfoKd> list) {
String productCd = "";
try {
for (NimsApiDto.ProductInfoKd d : list) {
productCd = d.getPrductCd();
List<NimsApiDto.MnfSeqInfo> mnfList = getMnfSeqInfo(
NimsApiRequest.MnfSeqInfoRequest.builder()
.fg("1")
.pg("1")
.p(d.getPrductCd())
.build()
);
d.getMnfSeqInfos().addAll(mnfList);
}
}catch (Exception e){
if( e instanceof ApiCustomException){
throw ApiCustomException.create(String.format("[%s]의 제조번호 정보를 찾을수 없습니다.", productCd));
}
throw ApiCustomException.create(e.getMessage());
}
}
@ -479,6 +613,26 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// @Override
// public List<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(NimsApiRequest.JurisdictionGovInfoRequest dto) {
// NimsApiResult.Response<NimsApiDto.JurisdictionGovInfo> result = infNimsService.getJurisdictionGovInfo(dto);
// return result.getResultOrThrow();
// }
//
// @Override
// public List<NimsApiDto.StorageInfo> saveStorageInfo(NimsApiRequest.StorageInfoRequest dto) {
// NimsApiResult.Response<NimsApiDto.StorageInfo> result = infNimsService.getStorageInfo(dto);
// List<NimsApiDto.StorageInfo> list = result.getResultOrThrow();
//
// for (NimsApiDto.StorageInfo d : list) {
// d.setRgtr(Constants.NIMS_API_USER_ID);
// bizNimsMapper.mergeStorgeInfo(d);
// }
// return list;
// }
/*
@Override
public BizNimsAarDto.AarHeader getTgtDsuseRptData(BizNimsRequest.DsuseMgt dto) {
@ -650,7 +804,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// throw ApiCustomException.create(e.getMessage());
// }
// }
//
// private void setMnfSeqs(List<BizNimsAarDto.AarDetail> aarDetails) {
// AtomicReference<String> productCd = new AtomicReference<>("");
//

@ -58,32 +58,24 @@ public class BizNimsController {
public ApiBaseResponse<List<NimsApiDto.ProductInfoKd>> getMnfSeqInfo(
@RequestBody @Validated NimsApiRequest.ProductInfoRequest dto
) {
return ApiBaseResponse.of(bizNimsService.saveProductInfoKd(dto));
return ApiBaseResponse.of(bizNimsService.saveProductInfoKd(dto, false));
}
// @Operation(summary = "제조 일련 번호 정보 조회(NIMS API)", description = "제보 일련 번호 정보 조회<br><br>NIMS API 호출 결과 Return")
// @PostMapping(value = "/getMnfSeqInfo")
// public ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo(
// @RequestBody @Validated NimsApiRequest.MnfSeqInfoRequest dto
// ) {
// return ApiBaseResponse.of(bizNimsService.getMnfSeqInfo(dto));
// }
//
// @Operation(summary = "관할 허가 관청 정보 조회(NIMS API)", description = "관할 허가 관청 정보 조회<br><br>NIMS API 호출 결과 Return")
// @PostMapping(value = "/getJurisdictionGovInfo")
// public ApiBaseResponse<List<NimsApiDto.JurisdictionGovInfo>> getJurisdictionGovInfo(
// @RequestBody @Validated NimsApiRequest.JurisdictionGovInfoRequest dto
// ) {
// return ApiBaseResponse.of(bizNimsService.getJurisdictionGovInfo(dto));
// }
//
// @Operation(summary = "저장소 정보 조회(NIMS API)", description = "저장소 정보 조회<br><br>NIMS API 호출 결과를 DB에 저장후 Return")
// @PostMapping(value = "/getStorageInfo")
// public ApiBaseResponse<List<NimsApiDto.StorageInfo>> getStorageInfo(
// @RequestBody @Validated NimsApiRequest.StorageInfoRequest dto
// ) {
// return ApiBaseResponse.of(bizNimsService.saveStorageInfo(dto));
// }
@Operation(summary = "마약류 상품 정보 & 제조번호 조회(NIMS API)", description = "마약류 상품정보 & 제조번호 조회<br><br>NIMS API 호출 결과를 DB에 저장후 결과 Return")
@PostMapping(value = "/getProductInfoKdAndMnfSeqInfo")
public ApiBaseResponse<List<NimsApiDto.ProductInfoKd>> getProductInfoKdAndMnfSeqInfo(
@RequestBody @Validated NimsApiRequest.ProductInfoRequest dto
) {
return ApiBaseResponse.of(bizNimsService.saveProductInfoKd(dto, true));
}
@Operation(summary = "제조 일련 번호 정보 조회(NIMS API)", description = "제보 일련 번호 정보 조회<br><br>NIMS API 호출 결과 Return")
@PostMapping(value = "/getMnfSeqInfo")
public ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo(
@RequestBody @Validated NimsApiRequest.MnfSeqInfoRequest dto
) {
return ApiBaseResponse.of(bizNimsService.getMnfSeqInfo(dto));
}
@Operation(summary = "업체 폐기 보고 정보 조회(NIMS API)", description = "업체 폐기 보고 정보 조회<br><br>NIMS API 호출 결과를 DB에 저장후 Return")
@PostMapping("/getDsuseRptInfo")
@ -97,6 +89,73 @@ public class BizNimsController {
// NIMS BIZ
//------------------------------------------------------------------------------------------------------
@Operation(summary = "사고 마약류 폐기 관리 생성", description = "사고 마약류 폐기 관리 생성<br><br>폐기관리 데이타 생성후 폐기보고 정보 return")
@io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, content = {
@Content(mediaType = "application/json", examples = {
@ExampleObject(value = """
{
"userId": "api-user",
"prgrsSttsCd": "01",
"bsshCd": "H00008333",
"rndDtlRptCnt": 2,
"hdrDe": "20240301",
"rptDe": "20240305",
"dsuseSeCd": "1",
"dsusePrvCd": "04",
"dsuseMthCd": "3",
"dsuseLoc": "보건소소각장",
"dsuseDe": "20240306",
"dsuseMgtDtls": [
{
"prductCd": "8806717024900",
"prductNm": "베리콜시럽",
"minDistbQy": 1,
"pceQy": 1,
"mnfNo": "A1111",
"prdValidDe": "20300303",
"mnfSeq": "A11111111",
"dsuseQy": 10
},
{
"prductCd": "8806718050823",
"prductNm": "아쿠아폴주20밀리리터(프로포폴) (20㎖)",
"minDistbQy": 1,
"pceQy": 5,
"mnfNo": "A1111",
"prdValidDe": "20300303",
"mnfSeq": "A11111111",
"dsuseQy": 30
}
]
}
""")
})
})
@PostMapping("/saveDsuseMgt")
public ApiBaseResponse<BizNimsRequest.DsuseMgt> saveDsuseMgt(
@RequestBody BizNimsRequest.DsuseMgt dto
) {
return ApiBaseResponse.of(bizNimsService.saveDsuseMgt(dto));
}
@Operation(summary = "사고 마약류 폐기 관리 목록 조회", description = "사고 마약류 폐기 관리 목록 조회<br><br>사고마약류 관리대장, 결과통보서, 폐기현황등에 필요한 내용 조회")
@PostMapping(value = "/getDsuseMgts")
public ApiBaseResponse<List<BizNimsResponse.DsuseMgtResponse>> getDsuseMgts(
@RequestBody BizNimsRequest.DsuseMgtInq dto
) {
return ApiBaseResponse.of(bizNimsService.getDsuseMgts(dto));
}
@Operation(deprecated = true, summary = "사고 마약류 폐기 관리 생성", description = "사고 마약류 폐기 관리 생성<br><br>폐기관리 데이타 생성후 폐기보고 정보 return")
@io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, content = {
@Content(mediaType = "application/json", examples = {
@ExampleObject(value = """
@ -120,21 +179,42 @@ public class BizNimsController {
""")
})
})
@PostMapping("/saveDsuseMgt")
public ApiBaseResponse<List<BizNimsResponse.DsuseMgtResponse>> saveDsuseMgt(
@PostMapping("/saveDsuseMgts")
public ApiBaseResponse<List<BizNimsResponse.DsuseRptInfoResponse>> saveDsuseMgts(
@RequestBody List<BizNimsRequest.DsuseMgt> dtos
) {
return ApiBaseResponse.of(bizNimsService.saveDsuseMgt(dtos));
return ApiBaseResponse.of(bizNimsService.saveDsuseMgts(dtos));
}
@Operation(summary = "사고 마약류 폐기 관리 목록 조회", description = "사고 마약류 폐기 관리 목록 조회<br><br>사고마약류 관리대장, 결과통보서, 폐기현황등에 필요한 내용 조회")
@PostMapping(value = "/getDsuseMgts")
public ApiBaseResponse<List<BizNimsResponse.DsuseMgtResponse>> getDsuseMgts(
@Operation(deprecated = true, summary = "사고 마약류 폐기 관리 목록 조회", description = "사고 마약류 폐기 관리 목록 조회<br><br>사고마약류 관리대장, 결과통보서, 폐기현황등에 필요한 내용 조회")
@PostMapping(value = "/getDsuseMgts2")
public ApiBaseResponse<List<BizNimsResponse.DsuseRptInfoResponse>> getDsuseMgts2(
@RequestBody BizNimsRequest.DsuseMgtInq dto
) {
return ApiBaseResponse.of(bizNimsService.getDsuseMgts(dto));
return null; //ApiBaseResponse.of(bizNimsService.getDsuseMgts(dto));
}
// @Operation(summary = "관할 허가 관청 정보 조회(NIMS API)", description = "관할 허가 관청 정보 조회<br><br>NIMS API 호출 결과 Return")
// @PostMapping(value = "/getJurisdictionGovInfo")
// public ApiBaseResponse<List<NimsApiDto.JurisdictionGovInfo>> getJurisdictionGovInfo(
// @RequestBody @Validated NimsApiRequest.JurisdictionGovInfoRequest dto
// ) {
// return ApiBaseResponse.of(bizNimsService.getJurisdictionGovInfo(dto));
// }
//
// @Operation(summary = "저장소 정보 조회(NIMS API)", description = "저장소 정보 조회<br><br>NIMS API 호출 결과를 DB에 저장후 Return")
// @PostMapping(value = "/getStorageInfo")
// public ApiBaseResponse<List<NimsApiDto.StorageInfo>> getStorageInfo(
// @RequestBody @Validated NimsApiRequest.StorageInfoRequest dto
// ) {
// return ApiBaseResponse.of(bizNimsService.saveStorageInfo(dto));
// }
/*
@Operation(summary = "폐기 보고 관리 대상 연계 데이타 생성 조회", description = "폐기 보고 관리 대상 연계 데이타 생성 조회")
@io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, content = {

@ -4,6 +4,7 @@ import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpHeaders;
import cokr.xit.adds.core.spring.exception.ApiCustomException;
@ -55,6 +56,8 @@ public class Constants {
}
public static String getName(final String code){
if(StringUtils.isEmpty(code)) return StringUtils.EMPTY;
return Arrays.stream(RPT_TY_CD.values())
.filter(ssc -> ssc.getCode().equals(code))
.findFirst()
@ -86,6 +89,8 @@ public class Constants {
}
public static String getName(final String code){
if(StringUtils.isEmpty(code)) return StringUtils.EMPTY;
return Arrays.stream(DSUSE_SE_CD.values())
.filter(ssc -> ssc.getCode().equals(code))
.findFirst()
@ -124,6 +129,8 @@ public class Constants {
}
public static String getName(final String code){
if(StringUtils.isEmpty(code)) return StringUtils.EMPTY;
return Arrays.stream(DSUSE_PRV_CD.values())
.filter(ssc -> ssc.getCode().equals(code))
.findFirst()
@ -161,6 +168,8 @@ public class Constants {
}
public static String getName(final String code){
if(StringUtils.isEmpty(code)) return StringUtils.EMPTY;
return Arrays.stream(DSUSE_MTH_CD.values())
.filter(ssc -> ssc.getCode().equals(code))
.findFirst()
@ -191,6 +200,8 @@ public class Constants {
}
public static String getName(final String code){
if(StringUtils.isEmpty(code)) return StringUtils.EMPTY;
return Arrays.stream(MVMN_TY_CD.values())
.filter(ssc -> ssc.getCode().equals(code))
.findFirst()

@ -1,13 +1,19 @@
package cokr.xit.adds.inf.nims.model;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.validation.Valid;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import cokr.xit.adds.core.model.AuditDto;
import cokr.xit.adds.core.spring.exception.ApiCustomException;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
@ -193,6 +199,79 @@ public class NimsApiDto {
*/
@JsonAlias("UPD_DT")
private String updDt;
@JsonSerialize(using = NimsApiDto.MnfSeqInfoSerializer.class)
@Setter
private List<NimsApiDto.MnfSeqInfo> mnfSeqInfos = new ArrayList<>();
}
/**
* response
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public static class MnfSeqInfo extends AuditDto {
/**
*
*/
@JsonAlias("PRDUCT_CD")
private String prductCd;
/**
*
*/
@JsonAlias("PRDUCT_NM")
private String prductNm;
/**
*
*/
@JsonAlias("MNF_NO")
private String mnfNo;
/**
*
*/
@JsonAlias("MNF_SEQ")
private String mnfSeq;
/**
*
*/
@JsonAlias("PRD_VALID_DE")
private String prdValidDe;
}
/**
* <pre>
* response Serializer
* (json "PRODUCT_CD" -> "prductCd") Serializer
* @uses @JsonSerialize(using = MnfSeqInfoSerializer.class)
* </pre>
*/
public static class MnfSeqInfoSerializer extends JsonSerializer<List<MnfSeqInfo>> {
@Override
public void serialize(List<NimsApiDto.MnfSeqInfo> mnfSeqInfos, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) {
try {
jsonGenerator.writeStartArray();
for(MnfSeqInfo mnfSeqInfo : mnfSeqInfos) {
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("prductCd", mnfSeqInfo.getPrductCd());
jsonGenerator.writeStringField("prductNm", mnfSeqInfo.getPrductNm());
jsonGenerator.writeStringField("mnfNo", mnfSeqInfo.getMnfNo());
jsonGenerator.writeStringField("mnfSeq", mnfSeqInfo.getMnfSeq());
jsonGenerator.writeStringField("prdValidDe", mnfSeqInfo.getPrdValidDe());
jsonGenerator.writeEndObject();
}
jsonGenerator.writeEndArray();
} catch (IOException e) {
throw ApiCustomException.create("NIMS 제조 일련 번호 조회 API 호출 결과 직렬화 중 오류가 발생 하였습니다.");
}
}
}
/**
@ -410,6 +489,16 @@ public class NimsApiDto {
*/
private String prtmSeNm;
/**
*
*/
private String stdPackngStleNm;
/**
*
*/
private String pceCoUnitNm;
/**
*
*/
@ -421,46 +510,8 @@ public class NimsApiDto {
private String bsshNm;
}
// /**
// * 제품 제조 일련 번호 정보 조회 response
// */
// @Getter
// @Setter
// @NoArgsConstructor
// @AllArgsConstructor
// @SuperBuilder
// public static class MnfSeqInfo extends AuditDto {
// /**
// * 제품코드
// */
// @JsonAlias("PRDUCT_CD")
// private String prductCd;
//
// /**
// * 제품명
// */
// @JsonAlias("PRDUCT_NM")
// private String prductNm;
//
// /**
// * 제조번호
// */
// @JsonAlias("MNF_NO")
// private String mnfNo;
//
// /**
// * 일련번호
// */
// @JsonAlias("MNF_SEQ")
// private String mnfSeq;
//
// /**
// * 유효기간
// */
// @JsonAlias("PRD_VALID_DE")
// private String prdValidDe;
// }
//
// /**
// * 관할 허가 관청 정보 조회 response
// */
@ -563,33 +614,6 @@ public class NimsApiDto {
// private String useAt;
// }
//
// /**
// * <pre>
// * 제품 제조 일련 번호 정보 조회 response Serializer
// * 제품 제조 일련 번호 정보 조회시 (json "PRODUCT_CD" -> "prductCd") 직렬화를 위한 Serializer
// * @uses @JsonSerialize(using = MnfSeqInfoSerializer.class)
// * </pre>
// */
// public static class MnfSeqInfoSerializer extends JsonSerializer<List<MnfSeqInfo>> {
// @Override
// public void serialize(List<NimsApiDto.MnfSeqInfo> mnfSeqInfos, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) {
//
// try {
// jsonGenerator.writeStartArray();
// for(MnfSeqInfo mnfSeqInfo : mnfSeqInfos) {
// jsonGenerator.writeStartObject();
// jsonGenerator.writeStringField("prductCd", mnfSeqInfo.getPrductCd());
// jsonGenerator.writeStringField("prductNm", mnfSeqInfo.getPrductNm());
// jsonGenerator.writeStringField("mnfNo", mnfSeqInfo.getMnfNo());
// jsonGenerator.writeStringField("mnfSeq", mnfSeqInfo.getMnfSeq());
// jsonGenerator.writeStringField("prdValidDe", mnfSeqInfo.getPrdValidDe());
// jsonGenerator.writeEndObject();
// }
// jsonGenerator.writeEndArray();
// } catch (IOException e) {
// throw ApiCustomException.create("NIMS 제조 일련 번호 조회 API 호출 결과 직렬화 중 오류가 발생 하였습니다.");
// }
// }
// }
}

@ -289,65 +289,65 @@ public class NimsApiRequest {
}
// /**
// * 제품 일련 번호 정보 조회 request
// */
// @Schema(name = "MnfSeqInfoRequest", description = "제품 일련 번호 정보 조회 request")
// @Data
// @NoArgsConstructor
// @AllArgsConstructor
// @Builder
// public static class MnfSeqInfoRequest {
// /**
// * 인증키
// */
// @Schema(requiredMode = REQUIRED, title = "인증키", description = "인증키", example = "998003699950fa950b798c9edea1b38f3cfbcf3b77e03e419")
// @NotEmpty(message = "인증키는 필수 입니다")
// String k;
//
// /**
// * 조회범위 : 실제는 동일
// * 1-제조번호, 2-일련번호, 3-바코드/RFID
// */
// @Schema(requiredMode = REQUIRED, title = "제조번호 또는 일련번호 구분", description = "제조번호 또는 일련번호 구분(1-제조번호, 2-일련번호, 3-바코드/RFID)", example = "1", allowableValues = {"1", "2", "3"})
// @Pattern(regexp = "[1-3]", message = "제조번호 또는 일련번호 구분은 필수 입니다(1-제조번호, 2-일련번호, 3-바코드/RFID)")
// String fg;
//
// /**
// * 조회 페이지
// */
// @Schema(requiredMode = REQUIRED, title = "조회 페이지", description = "조회 페이지", example = "1")
// @Pattern(regexp = "[0-9]{1,}", message = "조회 페이지는 필수 입니다")
// String pg;
//
// /**
// * 제품코드
// * 제품코드(like 검색)
// * 조회범위(pg)가 3인 경우 청구 코드
// */
// @Schema(requiredMode = REQUIRED, title = "제품코드", description = "제품코드", example = "8806718050823")
// @Pattern(regexp = "[0-9]{13}", message = "제품코드는 필수 입니다(13자리)")
// String p;
//
//
// /**
// * 기준일자 이후
// * yyyyMMdd
// */
// @Schema(title = "기준일자(yyyyMMdd-이후일자)", description = "기준일자(yyyyMMdd-이후일자)", example = " ")
// @Pattern(regexp = "^$|"+Constants.DATE_REGX, message = "기준 일자는 8자리 입니다(yyyyMMdd)")
// @Builder.Default
// String ymd = StringUtils.EMPTY;
//
// /**
// * 제품코드 : like 검색 - 오류 -> 사용하지 말것
// */
// @Schema(title = "번호일부 검색", description = "번호 일부 검색(like)", example = " ")
// @Pattern(regexp = "^$|[0-9]{5,}", message = "제품코드를 5자이상 입력해주세요(제품코드는 13자리)")
// @Builder.Default
// String t = StringUtils.EMPTY;
// }
//
/**
* request
*/
@Schema(name = "MnfSeqInfoRequest", description = "제품 일련 번호 정보 조회 request")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class MnfSeqInfoRequest {
/**
*
*/
@Schema(requiredMode = REQUIRED, title = "인증키", description = "인증키", example = "998003699950fa950b798c9edea1b38f3cfbcf3b77e03e419")
@NotEmpty(message = "인증키는 필수 입니다")
String k;
/**
* :
* 1-, 2-, 3-/RFID
*/
@Schema(requiredMode = REQUIRED, title = "제조번호 또는 일련번호 구분", description = "제조번호 또는 일련번호 구분(1-제조번호, 2-일련번호, 3-바코드/RFID)", example = "1", allowableValues = {"1", "2", "3"})
@Pattern(regexp = "[1-3]", message = "제조번호 또는 일련번호 구분은 필수 입니다(1-제조번호, 2-일련번호, 3-바코드/RFID)")
String fg;
/**
*
*/
@Schema(requiredMode = REQUIRED, title = "조회 페이지", description = "조회 페이지", example = "1")
@Pattern(regexp = "[0-9]{1,}", message = "조회 페이지는 필수 입니다")
String pg;
/**
*
* (like )
* (pg) 3
*/
@Schema(requiredMode = REQUIRED, title = "제품코드", description = "제품코드", example = "8806718050823")
@Pattern(regexp = "[0-9]{13}", message = "제품코드는 필수 입니다(13자리)")
String p;
/**
*
* yyyyMMdd
*/
@Schema(title = "기준일자(yyyyMMdd-이후일자)", description = "기준일자(yyyyMMdd-이후일자)", example = " ")
@Pattern(regexp = "^$|"+Constants.DATE_REGX, message = "기준 일자는 8자리 입니다(yyyyMMdd)")
@Builder.Default
String ymd = StringUtils.EMPTY;
/**
* : like - ->
*/
@Schema(title = "번호일부 검색", description = "번호 일부 검색(like)", example = " ")
@Pattern(regexp = "^$|[0-9]{5,}", message = "제품코드를 5자이상 입력해주세요(제품코드는 13자리)")
@Builder.Default
String t = StringUtils.EMPTY;
}
// /**
// * 관할 허가 관청 정보 조회 request
// */

@ -24,7 +24,7 @@ public interface InfNimsService {
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);
//

@ -102,18 +102,18 @@ public class InfNimsServiceBean extends AbstractServiceBean implements InfNimsSe
return result.getResponse();
}
// @Override
// @TraceLogging
// public NimsApiResult.Response<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto) {
// dto.setK(nimsApiKey);
// ApiUtil.validate(dto, null, validator);
// if(!isEmpty(dto.getYmd())) ApiUtil.checkYmdError(dto.getYmd(), null);
//
// String rslt = ApiUtil.callNimsApi(nimsUrl + seqinfo, dto);
// NimsApiResult<NimsApiDto.MnfSeqInfo> result = json.parse(rslt, new TypeReference<NimsApiResult<NimsApiDto.MnfSeqInfo>>() {});
// return result.getResponse();
// }
//
@Override
@TraceLogging
public NimsApiResult.Response<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoRequest dto) {
dto.setK(nimsApiKey);
ApiUtil.validate(dto, null, validator);
if(!isEmpty(dto.getYmd())) ApiUtil.checkYmdError(dto.getYmd(), null);
String rslt = ApiUtil.callNimsApi(nimsUrl + seqinfo, dto);
NimsApiResult<NimsApiDto.MnfSeqInfo> result = json.parse(rslt, new TypeReference<NimsApiResult<NimsApiDto.MnfSeqInfo>>() {});
return result.getResponse();
}
// @Override
// @TraceLogging
// public NimsApiResult.Response<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(
@ -177,26 +177,24 @@ public class InfNimsServiceBean extends AbstractServiceBean implements InfNimsSe
.usrRptIdNo(usrRptIdNoList.get(i))
.usrRptLnIdNo(usrRptLnIdNoList.get(0)+i)
.prductCd("8806718050823")
.prductNm("제품명")
.prductNm("아쿠아폴주20밀리리터(프로포폴) (20㎖)")
.minDistbQy(1)
.pceQy(0)
.mnfNo("제조번호")
.prdValidDe("20240401")
.mnfSeq("-")
.mvmnTyCd("1102")
.pceQy(5)
.mnfNo("123456")
.prdValidDe("99991231")
.mnfSeq("A0201K5391D57T")
.dsuseQy(30)
.build();
NimsApiDto.DsuseRptInfoDtl dtl2 = NimsApiDto.DsuseRptInfoDtl.builder()
.usrRptIdNo(usrRptIdNoList.get(i))
.usrRptLnIdNo(usrRptLnIdNoList.get(1)+i)
.prductCd("8806718050822")
.prductNm("제품명1")
.prductCd("8806717024900")
.prductNm("베리콜시럽")
.minDistbQy(1)
.pceQy(0)
.mnfNo("제조번호1")
.prdValidDe("20240401")
.mnfSeq("-")
.mvmnTyCd("1102")
.pceQy(1)
.mnfNo("A1111")
.prdValidDe("20300303")
.mnfSeq("A11111111")
.dsuseQy(10)
.build();
@ -215,7 +213,6 @@ public class InfNimsServiceBean extends AbstractServiceBean implements InfNimsSe
.dsuseMthCd("1")
.dsuseLoc("보건소")
.status("0")
.rptPrgSttsCd("0")
.dsuseRptInfoDtls("1".equals(rptTyCds.get(i))? null : List.of(dtl1, dtl2))
.build();
dsuseRpts.add(dsuseRpt);

@ -52,14 +52,14 @@ public class InfNimsController {
return ApiBaseResponse.of(infNimsService.getProductInfoKd(dto));
}
// @Operation(summary = "제조 일련 번호 정보 조회", description = "제조 일련 번호 정보 조회")
// @PostMapping("/getMnfSeqInfo")
// public ApiBaseResponse<NimsApiResult.Response<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo(
// @RequestBody NimsApiRequest.MnfSeqInfoRequest dto
// ) {
// return ApiBaseResponse.of(infNimsService.getMnfSeqInfo(dto));
// }
//
@Operation(summary = "제조 일련 번호 정보 조회", description = "제조 일련 번호 정보 조회")
@PostMapping("/getMnfSeqInfo")
public ApiBaseResponse<NimsApiResult.Response<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo(
@RequestBody NimsApiRequest.MnfSeqInfoRequest dto
) {
return ApiBaseResponse.of(infNimsService.getMnfSeqInfo(dto));
}
// @Operation(summary = "관할 허가 관청 정보 조회", description = "관할 허가 관청 정보 조회")
// @PostMapping("/getJurisdictionGovInfo")
// public ApiBaseResponse<NimsApiResult.Response<NimsApiDto.JurisdictionGovInfo>> getJurisdictionGovInfo(

@ -1,35 +1,56 @@
create or replace table tb_dsuse_mgt
create table tb_dsuse_mgt
(
dscdmng_id varchar(10) not null comment '폐기관리_id'
dscdmng_id varchar(10) not null comment '폐기관리_id'
primary key,
user_id varchar(10) null comment '사용자_아이디',
usr_rpt_id_no varchar(30) NOT NULL COMMENT '사용자_보고_식별_번호',
org_usr_rpt_id_no varchar(30) NOT NULL COMMENT '원_사용자_보고_식별_번호',
bssh_cd varchar(10) null comment '마약류취급자식별_번호',
prgrs_stts_cd varchar(10) null comment '진행_상태_코드',
use_yn varchar(1) not null comment '사용_여부',
reg_dt varchar(14) not null comment '등록_일시',
rgtr varchar(10) not null comment '등록자',
mdfcn_dt varchar(14) null comment '수정_일시',
mdfr varchar(10) null comment '수정자',
constraint idx_tb_dsuse_mgt_01
unique (org_usr_rpt_id_no, usr_rpt_id_no)
user_id varchar(10) null comment '사용자_아이디',
prgrs_stts_cd varchar(10) null comment '진행_상태_코드',
bssh_cd varchar(10) not null comment '마약류취급자식별_번호',
rnd_dtl_rpt_cnt decimal null comment '수불_상세_보고_수',
hdr_de varchar(8) null comment '취급_일자',
rpt_de varchar(8) null comment '보고_일자',
dsuse_se_cd varchar(10) null comment '폐기_구분_코드',
dsuse_prv_cd varchar(10) null comment '폐기_사유_코드',
dsuse_mth_cd varchar(10) null comment '폐기_방법_코드',
dsuse_loc varchar(120) null comment '폐기_장소',
dsuse_de varchar(8) null comment '폐기_일자',
usr_rpt_id_no varchar(30) null comment '사용자_보고_식별_번호',
org_usr_rpt_id_no varchar(30) null comment '원_사용자_보고_식별_번호',
rpt_ty_cd varchar(1) null comment '보고_유형_코드',
stts varchar(1) null comment '처리상태',
use_yn varchar(1) not null comment '사용_여부',
reg_dt varchar(14) not null comment '등록_일시',
rgtr varchar(10) not null comment '등록자',
mdfcn_dt varchar(14) null comment '수정_일시',
mdfr varchar(10) null comment '수정자'
)
comment '폐기관리';
create index idx_tb_dsuse_mgt_01
on tb_dsuse_mgt (org_usr_rpt_id_no, usr_rpt_id_no);
CREATE TABLE tb_dsuse_mgt
create table tb_dsuse_mgt_dtl
(
dscdmng_id varchar(10) NOT NULL COMMENT '폐기관리_id',
usr_rpt_id_no varchar(30) NOT NULL COMMENT '사용자_보고_식별_번호',
user_id varchar(10) NULL COMMENT '사용자_아이디',
prgrs_stts_cd varchar(10) NULL COMMENT '진행_상태_코드',
use_yn varchar(1) NOT NULL COMMENT '사용_여부',
reg_dt varchar(14) NOT NULL COMMENT '등록_일시',
rgtr varchar(10) NOT NULL COMMENT '등록자',
mdfcn_dt varchar(14) NULL COMMENT '수정_일시',
mdfr varchar(10) NULL COMMENT '수정자',
PRIMARY KEY (dscdmng_id, usr_rpt_id_no)
) COMMENT '폐기관리';
dscdmng_id varchar(10) not null comment '폐기관리_id',
dscdmng_sn varchar(3) not null comment '폐기관리_순번',
prduct_cd varchar(14) not null comment '제품_코드',
prduct_nm varchar(300) null comment '제품_명',
min_distb_qy decimal null comment '최소_유통단위_수량',
pce_qy decimal null comment '낱개단위_수량',
mnf_no varchar(20) null comment '제조_번호',
prd_valid_de varchar(8) null comment '제품_유효기한_일자',
mnf_seq varchar(42) null comment '제조_일련번호',
dsuse_qy decimal not null comment '폐기_수량',
usr_rpt_id_no varchar(30) null comment '사용자_보고_식별_번호',
usr_rpt_ln_id_no varchar(35) null comment '사용자_보고_라인_식별_번호',
use_yn varchar(1) not null comment '사용_여부',
reg_dt varchar(14) not null comment '등록_일시',
rgtr varchar(10) not null comment '등록자',
mdfcn_dt varchar(14) null comment '수정_일시',
mdfr varchar(10) null comment '수정자',
primary key (dscdmng_id, dscdmng_sn)
)
comment '폐기관리_상세';
create index idx_tb_dsuse_mgt_dtl_01
on tb_dsuse_mgt_dtl (usr_rpt_id_no, usr_rpt_ln_id_no);
CREATE TABLE tb_dsuse_rpt_info
(
@ -71,7 +92,6 @@ CREATE TABLE tb_dsuse_rpt_info_dtl
mnf_no varchar(20) NULL COMMENT '제조_번호',
prd_valid_de varchar(8) NULL COMMENT '제품_유효기한_일자',
mnf_seq varchar(42) NULL COMMENT '제조_일련번호',
mvmn_ty_cd varchar(4) NOT NULL COMMENT '이동_유형_코드',
dsuse_qy decimal NOT NULL COMMENT '폐기_수량',
use_yn varchar(1) NOT NULL COMMENT '사용_여부',
reg_dt varchar(14) NOT NULL COMMENT '등록_일시',

File diff suppressed because it is too large Load Diff

@ -1,458 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.adds.biz.nims.dao.BizNimsMapper">
<!-- **************************************************************************** -->
<!-- NIMS API start -->
<!-- **************************************************************************** -->
<insert id="mergeBsshInfoSt" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$BsshInfoSt">
/** nims-mysql-mapper|mergeBsshInfoSt-마약류취급자정보 생성/변경|julim */
INSERT INTO tb_bssh_info(
bssh_cd,
bssh_nm,
induty_nm,
hdnt_cd,
hdnt_nm,
bizrno,
rprsntv_nm,
chrg_nm,
hptl_no,
join_yn,
bssh_stts_nm,
prmisn_no,
use_yn,
reg_dt,
rgtr
) VALUES (
#{bsshCd},
#{bsshNm},
#{indutyNm},
#{hdntCd},
#{hdntNm},
#{bizrno},
#{rprsntvNm},
#{chrgNm},
#{hptlNo},
#{joinYn},
#{bsshSttusNm},
#{prmisnNo},
'Y',
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
#{rgtr}
)
ON DUPLICATE KEY UPDATE
bssh_nm = #{bsshNm},
induty_nm = #{indutyNm},
hdnt_cd = #{hdntCd},
hdnt_nm = #{hdntNm},
bizrno = #{bizrno},
rprsntv_nm = #{rprsntvNm},
chrg_nm = #{chrgNm},
hptl_no = #{hptlNo},
join_yn = #{joinYn},
bssh_stts_nm = #{bsshSttusNm},
prmisn_no = #{prmisnNo},
mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
mdfr = #{rgtr}
</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,
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},
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>
<insert id="mergeStorgeInfo" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$StorageInfo">
/** nims-mysql-mapper|mergeStorgeInfo-저장소 정보 생성|julim */
INSERT INTO tb_storge_info(
bssh_cd,
bssh_nm,
use_at,
storge_se_nm,
storge_no,
storge_nm,
bass_adres,
bass_dtl_adres,
use_yn,
reg_dt,
rgtr
) VALUES (
#{bsshCd},
#{bsshNm},
#{useAt},
#{storgeSeNm},
#{storgeNo},
#{storgeNm},
#{bassAdres},
#{bassDtlAdres},
'Y',
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
#{rgtr}
)
ON DUPLICATE KEY UPDATE
bssh_nm = #{bsshNm},
use_at = #{useAt},
storge_se_nm = #{storgeSeNm},
storge_no = #{storgeNo},
storge_nm = #{storgeNm},
bass_adres = #{bassAdres},
bass_dtl_adres = #{bassDtlAdres},
mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
mdfr = #{rgtr}
</insert>
<!-- **************************************************************************** -->
<!-- NIMS API end -->
<!-- **************************************************************************** -->
<!-- **************************************************************************** -->
<!-- ADDS BIZ start -->
<!-- **************************************************************************** -->
<select id="selectDsuseRptInfoByUsrRptIdNo" parameterType="map" resultType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfo">
/** nims-mysql-mapper|selectDsuseRptInfoByUsrRptIdNo-폐기보고정보 데이타 조회|julim */
SELECT usr_rpt_id_no, /* 사용자보고식별번호 */
ref_usr_rpt_id_no, /* 참조사용자식별번호 */
bssh_cd, /* 마약류취급자식별번호 */
bssh_nm, /* 마약류취급자명 */
induty_nm, /* 업종명 */
rpt_ty_cd, /* 보고유형코드 */
rnd_dtl_rpt_cnt, /* 수불상세보고수 */
hdr_de, /* 취급일자 */
rpt_de, /* 보고일자 */
dsuse_se_cd, /* 폐기구분코드 */
dsuse_prv_cd, /* 폐기사유코드 */
dsuse_mth_cd, /* 폐기방법코드 */
dsuse_loc, /* 폐기장소 */
dsuse_de, /* 폐기일자 */
status, /* 상태 */
rpt_prg_stts_cd, /* 보고진행상태코드 */
org_usr_rpt_id_no, /* 원본사용자보고식별번호 */
use_yn,
reg_dt,
rgtr
FROM tb_dsuse_rpt_info
WHERE usr_rpt_id_no = #{usrRptIdNo}
<if test="useYn != null">
AND use_yn = #{useYn}
</if>
<if test="userId != null">
AND userId = #{userId}
</if>
</select>
<insert id="insertDsuseRptInfo" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfo">
/** nims-mysql-mapper|insertDsuseRptInfo-폐기보고정보 생성|julim */
INSERT INTO tb_dsuse_rpt_info (
usr_rpt_id_no, /* 사용자보고식별번호 */
ref_usr_rpt_id_no, /* 참조사용자식별번호 */
bssh_cd, /* 마약류취급자식별번호 */
bssh_nm, /* 마약류취급자명 */
induty_nm, /* 업종명 */
rpt_ty_cd, /* 보고유형코드 : AAR - 폐기보고 */
rnd_dtl_rpt_cnt, /* 수불상세보고수 */
hdr_de, /* 취급일자 */
rpt_de, /* 보고일자 */
dsuse_se_cd, /* 폐기구분코드 */
dsuse_prv_cd, /* 폐기사유코드 */
dsuse_mth_cd, /* 폐기방법코드 */
dsuse_loc, /* 폐기장소 */
dsuse_de, /* 폐기일자 */
status, /* 상태 */
rpt_prg_stts_cd, /* 보고진행상태코드 */
org_usr_rpt_id_no, /* 원본사용자보고식별번호 */
use_yn,
reg_dt,
rgtr
) VALUES (
#{usrRptIdNo},
#{refUsrRptIdNo},
#{bsshCd},
#{bsshNm},
#{indutyNm},
#{rptTyCd},
#{rndDtlRptCnt},
#{hdrDe},
#{rptDe},
#{dsuseSeCd},
#{dsusePrvCd},
#{dsuseMthCd},
#{dsuseLoc},
#{dsuseDe},
#{status},
#{rptPrgSttsCd},
#{orgUsrRptIdNo},
IF(#{rptTyCd} = '1', 'N', 'Y'),
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
#{rgtr}
)
</insert>
<insert id="insertDsuseRptInfoDtl" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfoDtl">
/** nims-mysql-mapper|insertDsuseRptInfoDtl-폐기보고정보 상세 생성|julim */
INSERT INTO tb_dsuse_rpt_info_dtl (
usr_rpt_id_no, /* 사용자보고식별번호 */
usr_rpt_ln_id_no, /* 사용자보고라인식별번호 */
prduct_cd, /* 제품코드 */
prduct_nm, /* 제품명 */
min_distb_qy, /* 최소유통단위수량 */
pce_qy, /* 낱개단위수량 */
mnf_no, /* 제조번호 */
prd_valid_de, /* 제품유효기한일자 */
mnf_seq, /* 제품일련번호 */
mvmn_ty_cd, /* 이동유형코드 */
dsuse_qy, /* 폐기수량 */
use_yn,
reg_dt,
rgtr
) VALUES (
#{usrRptIdNo},
#{usrRptLnIdNo},
#{prductCd},
#{prductNm},
#{minDistbQy},
#{pceQy},
#{mnfNo},
#{prdValidDe},
#{mnfSeq},
#{mvmnTyCd},
#{dsuseQy},
'Y',
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
#{rgtr}
)
</insert>
<update id="updateCancelDsuseRptInfo" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfo">
/** nims-mysql-mapper|updateCancelDsuseRptInfo-폐기보고정보 취소|julim */
UPDATE tb_dsuse_rpt_info
SET use_yn = 'N'
, mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s')
, mdfr = #{rgtr}
WHERE usr_rpt_id_no = #{refUsrRptIdNo}
AND use_yn = 'Y'
</update>
<update id="updateCancelDsuseMgt" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfo">
/** nims-mysql-mapper|updateCancelDsuseMgt-폐기관리 취소(참조사용자식별번호로)|julim */
UPDATE tb_dsuse_mgt
SET usr_rpt_id_no = #{usrRptIdNo}
, use_yn = IF(#{rptTyCd} = '1', 'N', use_yn)
, mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s')
, mdfr = #{rgtr}
WHERE usr_rpt_id_no = #{refUsrRptIdNo}
AND use_yn = 'Y'
</update>
<update id="updateCancelDsuseRptInfoDtl" parameterType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfo">
/** nims-mysql-mapper|updateCancelDsuseRptInfoDtl-폐기보고정보 상세 취소|julim */
UPDATE tb_dsuse_rpt_info_dtl
SET use_yn = 'N'
, mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s')
, mdfr = #{rgtr}
WHERE usr_rpt_id_no = #{refUsrRptIdNo}
AND use_yn = 'Y'
</update>
<select id="recusiveRefUsrRptIdNo" parameterType="string" resultType="map">
/** nims-mysql-mapper|recusiveRefUsrRptIdNo-참조번호 recurive 조회|julim */
SELECT usr_rpt_id_no as usrRptIdNo
, ref_usr_rpt_id_no as refUsrRptIdNo
, rpt_ty_cd as rptTyCd
FROM tb_dsuse_rpt_info
WHERE usr_rpt_id_no = #{refUsrRptIdNo}
</select>
<insert id="insertDsuseMgt" parameterType="cokr.xit.adds.biz.nims.model.BizNimsRequest$DsuseMgt">
/** nims-mysql-mapper|insertDsuseMgt-폐기관리 생성|julim */
<selectKey keyProperty="dscdmngId" resultType="string" order="BEFORE">
SELECT NVL(MAX(dscdmng_id), CONCAT(DATE_FORMAT(now(), '%Y%m'),'0000')) + 1
FROM tb_dsuse_mgt
WHERE dscdmng_id LIKE CONCAT(DATE_FORMAT(now(), '%Y%m'), '%');
</selectKey>
INSERT INTO tb_dsuse_mgt (
dscdmng_id, /* 폐기관리ID */
user_id, /* 사용자ID */
usr_rpt_id_no, /* 사용자보고식별번호 */
org_usr_rpt_id_no, /* 원사용자보고식별번호 */
prgrs_stts_cd, /* 폐기관리진행상태코드 */
use_yn,
reg_dt,
rgtr
) VALUES (
#{dscdmngId},
#{userId},
#{usrRptIdNo},
#{orgUsrRptIdNo},
#{prgrsSttsCd},
'Y',
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
#{rgtr}
)
</insert>
<select id="selectDsuseMgt" parameterType="java.util.List" resultType="cokr.xit.adds.biz.nims.model.BizNimsResponse$DsuseMgtResponse">
/** nims-mysql-mapper|selectDsuseMgt-폐기관리 조회|julim */
SELECT tdm.dscdmng_id /** 폐기관리ID */
, tdm.user_id /** 사용자ID */
, tdm.usr_rpt_id_no /** 사용자보고식별번호 */
, tdm.org_usr_rpt_id_no /** 원사용자보고식별번호 */
, tdri.bssh_cd /** 마약류취급자식별번호 */
, tdri.bssh_nm /** 마약류취급자명 */
, tdri.induty_nm /** 업종명 */
, tdri.rpt_ty_cd /** 보고유형코드 */
, tdri.rnd_dtl_rpt_cnt /** 수불상세보고수 */
, tdri.hdr_de /** 취급일자 */
, tdri.rpt_de /** 보고일자 */
, tdri.dsuse_se_cd /** 폐기구분코드 */
, tdri.dsuse_prv_cd /** 폐기사유코드 */
, tdri.dsuse_mth_cd /** 폐기방법코드 */
, tdri.dsuse_loc /** 폐기장소 */
, tdri.dsuse_de /** 폐기일자 */
, tdri.status /** 상태 */
, tdri.rpt_prg_stts_cd /** 보고진행상태코드 */
, tbi.rprsntv_nm /** 대표자명 */
, tbi.prmisn_no /** 허가번호 */
FROM tb_dsuse_mgt tdm
JOIN tb_dsuse_rpt_info tdri
ON (tdm.org_usr_rpt_id_no = tdri.org_usr_rpt_id_no
AND tdm.usr_rpt_id_no = tdri.usr_rpt_id_no)
LEFT OUTER JOIN tb_bssh_info tbi
ON tdri.bssh_cd = tbi.bssh_cd
WHERE tdm.dscdmng_id IN
<foreach collection="list" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<!-- **************************************************************************** -->
<!-- ADDS BIZ end -->
<!-- **************************************************************************** -->
<select id="selectTgtAarHeader" parameterType="cokr.xit.adds.biz.nims.model.BizNimsRequest$DsuseMgt" resultType="cokr.xit.adds.biz.nims.model.BizNimsAarDto$AarHeader">
/** nims-mysql-mapper|selectTgtAarHeader-폐기 보고 대상 헤더 조회|julim */
SELECT tdm.dscdmng_id /* 폐기관리ID */
, '' AS uid /* 보고자식별ID */
, '' AS rndRmk /* 수불비고 */
, #{bsshCd} AS bsshCd /* 마약류취급자식별번호 */
-- , '' AS rptSeCd /* 보고구분코드 : AAR-폐기 */
, CONCAT(tdm.dscdmng_id, '_00001') AS usrRptIdNo /* 사용자보고식별번호 */
, '' AS refUsrRptIdNo /* 참조사용자식별번호 */
, '0' AS rptTyCd /* 보고유형코드 : 0-신규, 1-취소, 2-변형 */
, '' AS rmk /* 비고 : 취소 및 변경시 사유 필수 기재 */
, '' AS rptrNm /* 보고자명 : NIMS 등록 */
, tbi.bssh_nm AS rptrEntrpsNm /* 보고업체명 : NIMS 등록 */
, tbi.chrg_nm AS chrgNm /* 담당자명 : 없는 경우 보고자명 */
, '' AS chrgTelNo /* 담당자전화번호 */
, '' AS chrgMpNo /* 담당자휴대폰번호 - 암호화 */
, '' AS rndDtlRptCnt /* 수불상세보고수 */
, '1' AS dsuseSeCd /* 폐기구분코드 */
, '' AS dsusePrvCd /* 폐기사유코드 */
, '3' AS dsuseMthCd /* 폐기방법코드 */
, '' AS dsuseLoc /* 폐기장소 */
, '' AS dsuseDe /* 폐기일자 */
, '' AS dsuseInsttCd /* 폐기관할기관코드 */
, '0' AS atchFileCo /* 첨부파일수 */
, '' AS registerId /* 등록자ID - NIMS 등록 */
, '' AS fileCreatDt /* 파일생성일시 */
, 'Y' AS useYn
, 'nims-api' AS rgtr
FROM tb_dsuse_mgt tdm
JOIN tb_bssh_info tbi
ON tdm.bssh_cd = tbi.bssh_cd
WHERE tdm.dscdmng_id = #{dscdmngId}
AND tdm.use_yn = 'Y'
</select>
<select id="selectTgtAarDetails" parameterType="cokr.xit.adds.biz.nims.model.BizNimsRequest$DsuseMgt" resultType="cokr.xit.adds.biz.nims.model.BizNimsAarDto$AarDetail">
/** nims-mysql-mapper|selectTgtAarDetails-폐기 보고 대상 상세 조회|julim */
SELECT tdm.dscdmng_id /* 폐기관리ID */
, '' AS uid /* 보고자식별ID */
, tdmd.dscdmng_sn /* 폐기관리순번 */
, '' AS usrRptLnIdNo /* 사용자보고라인식별번호 */
, tsi.storge_no AS storgeNo /* 저장소번호 */
, '1102' AS mvmnTyCd /* 이동유형코드 */
, tpi.prduct_cd /* 제품코드 */
, '' AS mnfNo /* 제조번호 */
, '' AS mnfSeq /* 제품일련번호 */
, '' AS minDistbQy /* 제품유통단위수량 */
, '' AS prdMinDistbUnit /* 제품최소유통단위 */
, '' AS pceQy /* 낱개단위수량 */
, '' AS prdPceUnit /* 제품낱개단위 */
, tpi.prduct_nm /* 제품명 */
, '' AS prdSgtin /* 제품바코드(RFID) */
, tpi.prd_min_distb_qy /* 제품최소유통단위수량 */
, tpi.prd_tot_pce_qy /* 제품총낱개단위수량 */
, '' AS prdValidDe /* 제품유효기한일자 */
, '' AS fileCreatDt /* 파일생성일시 */
, 'Y' AS useYn
, 'nims-api' AS rgtr
FROM tb_dsuse_mgt tdm
JOIN tb_dsuse_mgt_dtl tdmd
ON tdm.dscdmng_id = tdmd.dscdmng_id
JOIN tb_prduct_info tpi
ON tdmd.prduct_cd = tpi.prduct_cd
LEFT OUTER JOIN tb_storge_info tsi
ON tdm.bssh_cd = tsi.bssh_cd
WHERE tdm.dscdmng_id = #{dscdmngId}
AND tdm.use_yn = 'Y'
AND tdmd.use_yn = 'Y'
</select>
</mapper>

@ -117,6 +117,176 @@
<!-- **************************************************************************** -->
<!-- ADDS BIZ start -->
<!-- **************************************************************************** -->
<!-- ========================== -->
<!-- 폐기관리 업무 테이블 start -->
<!-- ========================== -->
<insert id="insertDsuseMgt" parameterType="cokr.xit.adds.biz.nims.model.BizNimsRequest$DsuseMgt">
/** nims-mysql-mapper|insertDsuseMgt-폐기관리 생성|julim */
<selectKey keyProperty="dscdmngId" resultType="string" order="BEFORE">
SELECT NVL(MAX(dscdmng_id), CONCAT(DATE_FORMAT(now(), '%Y%m'),'0000')) + 1
FROM tb_dsuse_mgt
WHERE dscdmng_id LIKE CONCAT(DATE_FORMAT(now(), '%Y%m'), '%');
</selectKey>
INSERT INTO tb_dsuse_mgt (
dscdmng_id, /* 폐기관리ID */
user_id, /* 사용자ID */
prgrs_stts_cd, /* 폐기관리진행상태코드 */
bssh_cd, /* 마약류취급자식별ID */
rnd_dtl_rpt_cnt, /* 수불상세보고수 */
hdr_de, /* 취급일자 */
rpt_de, /* 보고일자 */
dsuse_se_cd, /* 폐기구분코드 */
dsuse_prv_cd, /* 폐기사유코드 */
dsuse_mth_cd, /* 폐기방법코드 */
dsuse_loc, /* 폐기장소 */
dsuse_de, /* 폐기일자 */
use_yn,
reg_dt,
rgtr
) VALUES (
#{dscdmngId},
#{userId},
#{prgrsSttsCd},
#{bsshCd},
#{rndDtlRptCnt},
#{hdrDe},
#{rptDe},
#{dsuseSeCd},
#{dsusePrvCd},
#{dsuseMthCd},
#{dsuseLoc},
#{dsuseDe},
'Y',
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
#{rgtr}
)
</insert>
<insert id="insertDsuseMgtDtl" parameterType="cokr.xit.adds.biz.nims.model.BizNimsRequest$DsuseMgtDtl">
/** nims-mysql-mapper|insertDsuseMgtDtl-폐기관리 상세 생성|julim */
INSERT INTO tb_dsuse_mgt_dtl (
dscdmng_id, /* 폐기관리ID */
dscdmng_sn, /* 폐기관리일련번호 */
prduct_cd, /* 제품코드 */
prduct_nm, /* 제품명 */
min_distb_qy, /* 최소유통단위수량 */
pce_qy, /* 낱개단위수량 */
mnf_no, /* 제조번호 */
prd_valid_de, /* 제품유효기한일자 */
mnf_seq, /* 제품일련번호 */
dsuse_qy, /* 폐기수량 */
use_yn,
reg_dt,
rgtr
) VALUES (
#{dscdmngId},
#{dscdmngSn},
#{prductCd},
#{prductNm},
#{minDistbQy},
#{pceQy},
#{mnfNo},
#{prdValidDe},
#{mnfSeq},
#{dsuseQy},
'Y',
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
#{rgtr}
)
</insert>
<select id="selectDsuseMgts" parameterType="java.util.List" 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 */
tdm.user_id, /** 사용자ID */
tdm.prgrs_stts_cd, /** 폐기관리진행상태코드 */
tdm.bssh_cd, /** 마약류취급자식별번호 */
tdm.rnd_dtl_rpt_cnt, /** 수불상세보고수 */
tdm.hdr_de, /** 취급일자 */
tdm.rpt_de, /** 보고일자 */
tdm.dsuse_se_cd, /** 폐기구분코드 */
tdm.dsuse_prv_cd, /** 폐기사유코드 */
tdm.dsuse_mth_cd, /** 폐기방법코드 */
tdm.dsuse_loc, /** 폐기장소 */
tdm.dsuse_de, /** 폐기일자 */
tdm.stts, /** 처리상태 */
tdm.usr_rpt_id_no, /** 사용자보고식별번호 */
tdm.org_usr_rpt_id_no, /** 원사용자보고식별번호 */
tdm.rpt_ty_cd, /** 보고유형코드 */
tbi.bssh_nm, /** 마약류취급자명 */
tbi.rprsntv_nm, /** 대표자명 */
tbi.prmisn_no /** 허가번호 */
FROM tb_dsuse_mgt tdm
LEFT JOIN tb_bssh_info tbi
ON tdm.bssh_cd = tbi.bssh_cd
</sql>
<select id="selectDsuseMgtDtls" parameterType="map" resultType="cokr.xit.adds.biz.nims.model.BizNimsResponse$DsuseMgtDtlResponse">
/** nims-mysql-mapper|selectDsuseMgtDtls-폐기관리 상세 목록 조회|julim */
SELECT tdmd.dscdmng_id, /* 폐기관리ID */
tdmd.dscdmng_sn, /* 폐기관리일련번호 */
tdmd.prduct_cd, /* 제품코드 */
tdmd.prduct_nm, /* 제품명 */
tdmd.min_distb_qy, /* 최소유통단위수량 */
tdmd.pce_qy, /* 낱개단위수량 */
tdmd.mnf_no, /* 제조번호 */
tdmd.prd_valid_de, /* 제품유효기한일자 */
tdmd.mnf_seq, /* 제품일련번호 */
tdmd.dsuse_qy, /* 폐기수량 */
tdmd.usr_rpt_id_no, /* 사용자보고식별번호 */
tdmd.usr_rpt_ln_id_no, /* 사용자보고라인식별번호 */
tdmd.use_yn,
tdmd.reg_dt,
tdmd.rgtr,
tpi.nrcd_se_nm, /* 마약항정구분 */
tpi.prtm_se_nm, /* 중점일반구분 */
tpi.std_packng_stle_nm, /* 제품최소유통단위 */
tpi.pce_co_unit_nm, /* 제품낱개단위명 */
tpi.bssh_cd, /* 제조수입자 */
tbi.bssh_nm /* 제조수입자명 */
FROM tb_dsuse_mgt_dtl tdmd
LEFT JOIN tb_prduct_info tpi
ON (tdmd.prduct_cd = tpi.prduct_cd)
-- AND tdrid.use_yn = 'Y')
LEFT JOIN tb_bssh_info tbi
ON (tpi.bssh_cd = tbi.bssh_cd)
WHERE tdmd.dscdmng_id = #{dscdmngId}
<if test="dscdmngSn != null">
AND tdmd.dscdmng_sn = #{dscdmngSn}
</if>
<if test="useYn != null">
AND tdmd.use_yn = #{useYn}
</if>
<if test="userId != null">
AND tdmd.userId = #{userId}
</if>
<if test="usrRptIdNo != null">
AND tdmd.usr_rpt_id_no = #{usrRptIdNo}
</if>
</select>
<!-- ========================== -->
<!-- 폐기 관리 업무 테이블 end -->
<!-- ========================== -->
<!-- ============================= -->
<!-- 폐기 보고 정보 업무 테이블 start -->
<!-- ============================= -->
<select id="selectDsuseRptInfoByUsrRptIdNo" parameterType="map" resultType="cokr.xit.adds.inf.nims.model.NimsApiDto$DsuseRptInfo">
/** nims-mysql-mapper|selectDsuseRptInfoByUsrRptIdNo-폐기보고정보 데이타 조회|julim */
SELECT usr_rpt_id_no, /* 사용자보고식별번호 */
@ -134,7 +304,6 @@
dsuse_loc, /* 폐기장소 */
dsuse_de, /* 폐기일자 */
status, /* 상태 */
rpt_prg_stts_cd, /* 보고진행상태코드 */
org_usr_rpt_id_no, /* 원본사용자보고식별번호 */
use_yn,
reg_dt,
@ -160,7 +329,6 @@
tdrid.mnf_no, /* 제조번호 */
tdrid.prd_valid_de, /* 제품유효기한일자 */
tdrid.mnf_seq, /* 제품일련번호 */
tdrid.mvmn_ty_cd, /* 이동유형코드 */
tdrid.dsuse_qy, /* 폐기수량 */
tdrid.use_yn,
tdrid.reg_dt,
@ -205,7 +373,6 @@
dsuse_loc, /* 폐기장소 */
dsuse_de, /* 폐기일자 */
status, /* 상태 */
rpt_prg_stts_cd, /* 보고진행상태코드 */
org_usr_rpt_id_no, /* 원본사용자보고식별번호 */
use_yn,
reg_dt,
@ -226,7 +393,6 @@
#{dsuseLoc},
#{dsuseDe},
#{status},
#{rptPrgSttsCd},
#{orgUsrRptIdNo},
IF(#{rptTyCd} = '1', 'N', 'Y'),
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
@ -246,7 +412,6 @@
mnf_no, /* 제조번호 */
prd_valid_de, /* 제품유효기한일자 */
mnf_seq, /* 제품일련번호 */
mvmn_ty_cd, /* 이동유형코드 */
dsuse_qy, /* 폐기수량 */
use_yn,
reg_dt,
@ -261,7 +426,6 @@
#{mnfNo},
#{prdValidDe},
#{mnfSeq},
#{mvmnTyCd},
#{dsuseQy},
'Y',
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
@ -308,55 +472,32 @@
FROM tb_dsuse_rpt_info
WHERE usr_rpt_id_no = #{refUsrRptIdNo}
</select>
<!-- ============================= -->
<!-- 폐기 보고 정보 업무 테이블 end -->
<!-- ============================= -->
<insert id="insertDsuseMgt" parameterType="cokr.xit.adds.biz.nims.model.BizNimsRequest$DsuseMgt">
/** nims-mysql-mapper|insertDsuseMgt-폐기관리 생성|julim */
<selectKey keyProperty="dscdmngId" resultType="string" order="BEFORE">
SELECT NVL(MAX(dscdmng_id), CONCAT(DATE_FORMAT(now(), '%Y%m'),'0000')) + 1
FROM tb_dsuse_mgt
WHERE dscdmng_id LIKE CONCAT(DATE_FORMAT(now(), '%Y%m'), '%');
</selectKey>
INSERT INTO tb_dsuse_mgt (
dscdmng_id, /* 폐기관리ID */
user_id, /* 사용자ID */
usr_rpt_id_no, /* 사용자보고식별번호 */
org_usr_rpt_id_no, /* 원사용자보고식별번호 */
prgrs_stts_cd, /* 폐기관리진행상태코드 */
use_yn,
reg_dt,
rgtr
) VALUES (
#{dscdmngId},
#{userId},
#{usrRptIdNo},
#{orgUsrRptIdNo},
#{prgrsSttsCd},
'Y',
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
#{rgtr}
)
</insert>
<select id="selectSavedDsuseMgts" parameterType="java.util.List" resultType="cokr.xit.adds.biz.nims.model.BizNimsResponse$DsuseMgtResponse">
/** 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">
<select id="selectDsuseMgts2" parameterType="cokr.xit.adds.biz.nims.model.BizNimsRequest$DsuseMgtInq" resultType="cokr.xit.adds.biz.nims.model.BizNimsResponse$DsuseRptInfoResponse">
/** nims-mysql-mapper|selectDsuseMgts-폐기관리목록 조회|julim */
<include refid="sqlDsuseMgt"/>
<include refid="sqlDsuseRptInfoByDsuseMgt"/>
WHERE tdm.dscdmng_id IN
<foreach collection="dscdmngIds" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<sql id="sqlDsuseMgt">
<sql id="sqlDsuseRptInfoByDsuseMgt">
SELECT tdm.dscdmng_id /** 폐기관리ID */
, tdm.user_id /** 사용자ID */
, tdm.usr_rpt_id_no /** 사용자보고식별번호 */

@ -11,7 +11,7 @@ select *
select *
from tb_prduct_info
where prduct_cd in( '8806498014732', '8806718050823');
where prduct_cd in( '8806717024900', '8806718050823');
select *
from tb_bssh_info

Loading…
Cancel
Save