Merge branch 'main-prdAndseq-api-feat'

# Conflicts:
#	src/main/java/cokr/xit/adds/biz/nims/service/BizNimsService.java
#	src/main/java/cokr/xit/adds/biz/nims/service/bean/BizNimsServiceBean.java
main
Jonguk. Lim 3 weeks ago
commit c489ccc2b2

@ -1,17 +1,12 @@
package cokr.xit.adds.biz.nims.dao;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import org.egovframe.rte.psl.dataaccess.mapper.*;
import cokr.xit.adds.biz.nims.model.BizNimsDto;
import cokr.xit.adds.biz.nims.model.BizNimsRequest;
import cokr.xit.adds.biz.nims.model.BizNimsResponse;
import cokr.xit.adds.inf.nims.model.NimsApiDto;
import cokr.xit.adds.inf.nims.model.NimsApiRequest;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.adds.biz.nims.model.*;
import cokr.xit.adds.inf.nims.model.*;
import cokr.xit.foundation.component.*;
/**
* <pre>
@ -36,7 +31,7 @@ public interface BizNimsMapper extends AbstractMapper {
void mergeBsshInfoSt(final NimsApiDto.BsshInfoSt dto);
List<NimsApiDto.BsshInfoSt> selectBsshInfos(final NimsApiRequest.BsshInfoReq dto);
void mergeProductInfoKd(final NimsApiDto.ProductInfoKd dto);
<T> void mergeProductInfoKd(final T t);
List<NimsApiDto.ProductInfoKd> selectProductInfos(final NimsApiRequest.ProductInfoReq dto);
void mergeJurisdictionGovInfo(NimsApiDto.JurisdictionGovInfo dto);
@ -49,6 +44,9 @@ public interface BizNimsMapper extends AbstractMapper {
int insertDsuseMgtReceipt(final BizNimsRequest.DsuseMgtReceiptReq dto);
int updateDsuseMgtReceipt(final BizNimsRequest.DsuseMgtReceiptReq dto);
Optional<String> selectCheckDsuseLocBydscdmngId(final String dscdmngId);
void updateDsuseLocOfDsuseMgt(final BizNimsRequest.DsuseMgtRsltReq dto);
int updateDsuseMgtRslt(final BizNimsRequest.DsuseMgtRsltReq dto);
int insertDsuseMgtDtl(final BizNimsDto.DsuseMgtDtl dto);

@ -31,10 +31,11 @@ public interface BizNimsService {
// NIMS API CALL
//------------------------------------------------------------------------------------------------------
ApiBaseResponse<List<NimsApiDto.BsshInfoSt>> getBsshInfoSt(final NimsApiRequest.BsshInfoReq reqDto);
List<NimsApiDto.BsshInfoSt> saveBsshInfoSt(final NimsApiRequest.BsshInfoReq dto);
List<NimsApiDto.ProductInfoKd> saveProductInfoKd(final NimsApiRequest.ProductInfoReq dto, boolean isMnfSeqInfo);
List<NimsApiDto.BsshInfoSt> saveBsshInfoStQueryBsshInfoByBsshCd(final NimsApiRequest.BsshInfoReq dto);
ApiBaseResponse<List<NimsApiDto.ProductInfoKd>> getProductInfoKd(final NimsApiRequest.ProductInfoReq dto, boolean isMnfSeqInfo);
List<NimsApiDto.ProductInfoKd> saveProductInfoKdQueryProductByProductId(final NimsApiRequest.ProductInfoReq dto, boolean isMnfSeqInfo);
ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo(final NimsApiRequest.MnfSeqInfoReq dto);
List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo2(final NimsApiRequest.MnfSeqInfoReq dto);
// List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo2(final NimsApiRequest.MnfSeqInfoReq dto);
List<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(final NimsApiRequest.JurisdictionGovInfoReq dto);
List<NimsApiDto.DsuseRptInfo> getNimsDsuseRptInfo(final NimsApiRequest.DsuseRptInfoReq dto);
@ -42,7 +43,7 @@ public interface BizNimsService {
//------------------------------------------------------------------------------------------------------
// NIMS BIZ
//------------------------------------------------------------------------------------------------------
BizNimsRequest.DsuseMgtReceiptReq saveDsuseMgtReceipt(final BizNimsRequest.DsuseMgtReceiptReq dto, final List<BizNimsDto.DsuseMgtDtl> dtls, List<MultipartFile> files);
BizNimsRequest.DsuseMgtReceiptReq saveDsuseMgtReceipt(final BizNimsRequest.DsuseMgtReceiptReq reqDto, final List<BizNimsDto.DsuseMgtDtl> dtls, final List<MultipartFile> files, final NimsApiDto.BsshInfoSt bsshInfoSt, final List<NimsApiDto.ProductInfoKdSaveDTO> prdList);
BizNimsRequest.DsuseMgtReceiptReq modifyDsuseMgtReceiptMstInfo(final BizNimsRequest.DsuseMgtReceiptReq reqDto);

@ -1,41 +1,32 @@
package cokr.xit.adds.biz.nims.service.bean;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.validation.Validation;
import javax.validation.Validator;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import cokr.xit.adds.biz.nims.dao.BizNimsMapper;
import cokr.xit.adds.biz.nims.model.BizNimsDto;
import cokr.xit.adds.biz.nims.model.BizNimsRequest;
import cokr.xit.adds.biz.nims.model.BizNimsResponse;
import cokr.xit.adds.biz.nims.service.BizNimsService;
import cokr.xit.adds.core.Constants;
import cokr.xit.adds.core.Constants.RPT_TY_CD;
import cokr.xit.adds.core.model.ApiBaseResponse;
import cokr.xit.adds.core.spring.exception.ApiCustomException;
import cokr.xit.adds.core.util.ApiUtil;
import cokr.xit.adds.inf.nims.model.NimsApiDto;
import cokr.xit.adds.inf.nims.model.NimsApiDto.BsshInfoSt;
import cokr.xit.adds.inf.nims.model.NimsApiRequest;
import cokr.xit.adds.inf.nims.model.NimsApiRequest.BsshInfoReq;
import cokr.xit.adds.inf.nims.model.NimsApiResult;
import cokr.xit.adds.inf.nims.service.InfNimsService;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileService;
import cokr.xit.base.file.web.FileInfoFactory;
import cokr.xit.foundation.component.AbstractServiceBean;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.util.*;
import java.util.concurrent.*;
import javax.validation.*;
import org.apache.commons.lang3.*;
import org.springframework.stereotype.*;
import org.springframework.web.multipart.*;
import cokr.xit.adds.biz.nims.dao.*;
import cokr.xit.adds.biz.nims.model.*;
import cokr.xit.adds.biz.nims.service.*;
import cokr.xit.adds.core.*;
import cokr.xit.adds.core.Constants.*;
import cokr.xit.adds.core.model.*;
import cokr.xit.adds.core.spring.exception.*;
import cokr.xit.adds.core.util.*;
import cokr.xit.adds.inf.nims.model.*;
import cokr.xit.adds.inf.nims.model.NimsApiDto.*;
import cokr.xit.adds.inf.nims.model.NimsApiRequest.*;
import cokr.xit.adds.inf.nims.service.*;
import cokr.xit.base.file.*;
import cokr.xit.base.file.service.*;
import cokr.xit.base.file.web.*;
import cokr.xit.foundation.component.*;
import lombok.*;
import lombok.extern.slf4j.*;
/**
* <pre>
@ -76,73 +67,56 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// DB 조회
List<BsshInfoSt> list = new ArrayList<>();
if("N".equals(reqDto.getDbSkipYn())) {
list = bizNimsMapper.selectBsshInfos(reqDto);
if (!isEmpty(list)){
//return list;
ApiBaseResponse<List<BsshInfoSt>> res = ApiBaseResponse.of(list);
res.setTotalCount(list.size());
return res;
}
}
if(isEmpty(reqDto.getK())){
reqDto.setK(getApiInfInfo(reqDto.getUserId()).get("apiKey"));
}
reqDto.setFg("1"); // 조회범위(1-전체,2-내거래처)
//reqDto.setPg("1"); // 조회페이지
reqDto.setFg2("1"); // 조회범위2(1:NK(취급승인)포함 - default, 2:NK(취급승인)제외)
boolean isRprsntvNm = !isEmpty(reqDto.getRprsntvNm());//while(true) {
int totalCount = 0;
do {
// 마약류취급자식별번호로 마약류취급자정보 조회
NimsApiResult.Response<BsshInfoSt> rslt = infNimsService.getBsshInfoSt(reqDto);
List<BsshInfoSt> curList = rslt.getResult();
for (BsshInfoSt d : curList) {
if(isEmpty(d.getBsshCd())) continue;
d.setRgtr(reqDto.getUserId());
bizNimsMapper.mergeBsshInfoSt(d);
// 대표자 검색조건이 있는 경우
if (isRprsntvNm && !isEmpty(d.getRprsntvNm()) && d.getRprsntvNm().contains(reqDto.getRprsntvNm())) {
list.add(d);
}
}
if (!isRprsntvNm){
if (!isRprsntvNm) {
totalCount = rslt.getBody().getTotalCount();
list.addAll(curList);
break;
}
// 대표자 검색이 있는 경우 NIMS 데이타 전체 조회
list.addAll(
curList.stream()
.filter(d -> !isEmpty(d.getRprsntvNm()) && d.getRprsntvNm().contains(reqDto.getRprsntvNm()))
.toList());
totalCount = list.size();
if(rslt.isEndYn()) break;
reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1));
} while(true);
ApiBaseResponse<List<BsshInfoSt>> res = ApiBaseResponse.of(list);
res.setTotalCount(list.size());
res.setTotalCount(totalCount);
return res;
}
/**
* <pre>
* DB (dbSkipYn = 'Y' DB skip)
* -> API
* DB
* - (3 )
* DB
* -
* @param reqDto NimsApiRequest.BsshInfoRequest
* @return List<NimsApiDto.BsshInfoSt>
* </pre>
*/
@Override
public List<BsshInfoSt> saveBsshInfoSt(BsshInfoReq reqDto) {
public List<BsshInfoSt> saveBsshInfoStQueryBsshInfoByBsshCd(BsshInfoReq reqDto) {
if(isEmpty(reqDto.getBc()) && isEmpty(reqDto.getBi()) && isEmpty(reqDto.getBn())){
throw ApiCustomException.create("업체[사업자] 번호 또는 명, 사업자등록번호 중 하나는 필수 입니다");
}
if(!isEmpty(reqDto.getBn()) && reqDto.getBn().length() < 3) {
throw ApiCustomException.create("업체[사업자]명은 3자 이상 으로 조회해 주세요");
}
// DB 조회
List<BsshInfoSt> list = new ArrayList<>();
if("N".equals(reqDto.getDbSkipYn())) {
list = bizNimsMapper.selectBsshInfos(reqDto);
if (!isEmpty(list)) return list;
}
if(isEmpty(reqDto.getK())){
reqDto.setK(getApiInfInfo(reqDto.getUserId()).get("apiKey"));
@ -151,32 +125,44 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
reqDto.setPg("1"); // 조회페이지
reqDto.setFg2("1"); // 조회범위2(1:NK(취급승인)포함 - default, 2:NK(취급승인)제외)
boolean isRprsntvNm = !isEmpty(reqDto.getRprsntvNm());
while(true) {
// 마약류취급자식별번호로 마약류취급자정보 조회
NimsApiResult.Response<BsshInfoSt> rslt = infNimsService.getBsshInfoSt(reqDto);
List<BsshInfoSt> curList = rslt.getResult();
if (isEmpty(curList))
break;
for (BsshInfoSt d : curList) {
if(isEmpty(d.getBsshCd())) continue;
d.setRgtr(reqDto.getUserId());
bizNimsMapper.mergeBsshInfoSt(d);
// 대표자 검색조건이 있는 경우
if (isRprsntvNm && !isEmpty(d.getRprsntvNm()) && d.getRprsntvNm().contains(reqDto.getRprsntvNm())) {
list.add(d);
}
return curList;
}
if (!isRprsntvNm){
list.addAll(curList);
@Override
public ApiBaseResponse<List<NimsApiDto.ProductInfoKd>> getProductInfoKd(NimsApiRequest.ProductInfoReq reqDto, boolean isMnfSeqInfo) {
if(isEmpty(reqDto.getP()) && isEmpty(reqDto.getPn())){
throw ApiCustomException.create("상품번호 또는 상품명중 하나는 필수 입니다");
}
if(rslt.isEndYn()) break;
reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1));
if(!isEmpty(reqDto.getPn()) && reqDto.getPn().length() < 2){
throw ApiCustomException.create("상품명은 2자 이상 으로 조회해 주세요");
}
return list;
if(isEmpty(reqDto.getK())){
reqDto.setK(getApiInfInfo(reqDto.getUserId()).get("apiKey"));
}
reqDto.setFg("1"); // 조회범위(1-전체,2-내거래처품목,3-청구코드매핑)
reqDto.setFg2(""); // 중점일반구분(all, 1:중점, 2:일반)
// 제품코드로 제품정보 조회
NimsApiResult.Response<NimsApiDto.ProductInfoKd> rslt = infNimsService.getProductInfoKd(reqDto);
List<NimsApiDto.ProductInfoKd> curList = rslt.getResult();
if(isEmpty(curList)) return ApiBaseResponse.of(curList);
// 제조 번호, 일련번호, 유효기간 정보 목록 추가
if(isMnfSeqInfo) productInfoaddMnfSeqs(curList, reqDto.getBc(), reqDto.getK());
ApiBaseResponse<List<ProductInfoKd>> res = ApiBaseResponse.of(curList);
res.setTotalCount(rslt.getBody().getTotalCount());
return res;
}
/**
@ -192,7 +178,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* </pre>
*/
@Override
public List<NimsApiDto.ProductInfoKd> saveProductInfoKd(NimsApiRequest.ProductInfoReq reqDto, boolean isMnfSeqInfo) {
public List<NimsApiDto.ProductInfoKd> saveProductInfoKdQueryProductByProductId(NimsApiRequest.ProductInfoReq reqDto, boolean isMnfSeqInfo) {
if(isEmpty(reqDto.getP()) && isEmpty(reqDto.getPn())){
throw ApiCustomException.create("상품번호 또는 상품명중 하나는 필수 입니다");
}
@ -201,50 +187,26 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
throw ApiCustomException.create("상품명은 2자 이상 으로 조회해 주세요");
}
List<NimsApiDto.ProductInfoKd> list = new ArrayList<>();
// DB 조회
if("N".equals(reqDto.getDbSkipYn())) {
list = bizNimsMapper.selectProductInfos(reqDto);
if (!isEmpty(list)){
if(isMnfSeqInfo){
if(isEmpty(reqDto.getK())){
productInfoaddMnfSeqs(list, getApiInfInfo(reqDto.getUserId()).get("apiKey"));
}else {
productInfoaddMnfSeqs(list, reqDto.getK());
}
}
return list;
}
}
if(isEmpty(reqDto.getK())){
reqDto.setK(getApiInfInfo(reqDto.getUserId()).get("apiKey"));
}
reqDto.setFg("1"); // 조회범위(1-전체,2-내거래처품목,3-청구코드매핑)
reqDto.setPg("1"); // 조회페이지
reqDto.setFg2(""); // 중점일반구분(all, 1:중점, 2:일반)
while(true) {
// 제품코드로 제품정보 조회
NimsApiResult.Response<NimsApiDto.ProductInfoKd> rslt = infNimsService.getProductInfoKd(reqDto);
List<NimsApiDto.ProductInfoKd> curList = rslt.getResult();
if(isEmpty(curList)) break;
if(isEmpty(curList)) return curList;
for (NimsApiDto.ProductInfoKd d : curList) {
d.setRgtr(reqDto.getUserId());
bizNimsMapper.mergeProductInfoKd(d);
}
//FIXME: 신규 API 적용 - 조회 결과 저장 skip
// for (NimsApiDto.ProductInfoKd d : curList) {
// d.setRgtr(reqDto.getUserId());
// bizNimsMapper.mergeProductInfoKd(d);
// }
// 제조 번호, 일련번호, 유효기간 정보 목록 추가
if(isMnfSeqInfo) productInfoaddMnfSeqs(curList, reqDto.getK());
list.addAll(curList);
if(rslt.isEndYn()) break;
reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1));
}
return list;
if(isMnfSeqInfo) productInfoaddMnfSeqs(curList, reqDto.getBc(), reqDto.getK());
return curList;
}
@Override
@ -255,24 +217,12 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
//reqDto.setFg("1"); // 제조번호 또는 일련번호 구분(1-제조번호, 2-일련번호, 3-바코드/RFID)
//reqDto.setPg("1"); // 조회페이지
// 시리얼번호 및 제조번호 기준 검색후, 결과내에서 유효기간으로 필터링 하도록 처리
boolean isPrdValidDe = !isEmpty(reqDto.getT()) && !isEmpty(reqDto.getPrdValidDe());
List<NimsApiDto.MnfSeqInfo> list = new ArrayList<>();
//while (true) {
NimsApiResult.Response<NimsApiDto.MnfSeqInfo> rslt = infNimsService.getMnfSeqInfo(reqDto);
List<NimsApiDto.MnfSeqInfo> curList = rslt.getResult();
if(isPrdValidDe) {
for (NimsApiDto.MnfSeqInfo d : curList) {
if(!isEmpty(d.getPrdValidDe()) && d.getPrdValidDe().contains(reqDto.getPrdValidDe())){
list.add(d);
}
}
}else {
list.addAll(curList);
}
NimsApiResult.Response<NimsApiDto.MnfSeqInfo> rslt = infNimsService.getMnfSeqInfo(reqDto);
List<NimsApiDto.MnfSeqInfo> list = rslt.getResult();
// 시리얼번호 및 제조번호 기준 검색후, 결과내에서 유효기간으로 필터링 하도록 처리
if(!isEmpty(list) && (!isEmpty(reqDto.getT()) && !isEmpty(reqDto.getVd()))) {
list.sort((a, b) -> {
if (isEmpty(a.getPrdValidDe()) && isEmpty(b.getPrdValidDe()))
return 0;
@ -282,57 +232,13 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return 1;
return a.getPrdValidDe().compareTo(b.getPrdValidDe());
});
}
ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> res = ApiBaseResponse.of(list);
res.setTotalCount(rslt.getBody().getTotalCount());
return res;
}
@Override
public List<NimsApiDto.MnfSeqInfo> getMnfSeqInfo2(NimsApiRequest.MnfSeqInfoReq reqDto) {
if(isEmpty(reqDto.getK())){
reqDto.setK(getApiInfInfo(reqDto.getUserId()).get("apiKey"));
}
//reqDto.setFg("1"); // 제조번호 또는 일련번호 구분(1-제조번호, 2-일련번호, 3-바코드/RFID)
reqDto.setPg("1"); // 조회페이지
// 시리얼번호 및 제조번호 기준 검색후, 결과내에서 유효기간으로 필터링 하도록 처리
boolean isPrdValidDe = !isEmpty(reqDto.getT()) && !isEmpty(reqDto.getPrdValidDe());
List<NimsApiDto.MnfSeqInfo> list = new ArrayList<>();
while (true) {
NimsApiResult.Response<NimsApiDto.MnfSeqInfo> rslt = infNimsService.getMnfSeqInfo(reqDto);
List<NimsApiDto.MnfSeqInfo> curList = rslt.getResult();
if (isEmpty(curList)) break;
if(isPrdValidDe) {
for (NimsApiDto.MnfSeqInfo d : curList) {
if(!isEmpty(d.getPrdValidDe()) && d.getPrdValidDe().contains(reqDto.getPrdValidDe())){
list.add(d);
}
}
}else {
list.addAll(curList);
// 올림 차순 정렬
list.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 a.getPrdValidDe().compareTo(b.getPrdValidDe());
});
}
// 데이타 조회 결과 마지막 페이지 이거나 100건 이상인 경우 종료
if(rslt.isEndYn() || list.size() > 100 || isPrdValidDe) break;
reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1));
}
return list;
}
@Override
public List<NimsApiDto.JurisdictionGovInfo> getJurisdictionGovInfo(final NimsApiRequest.JurisdictionGovInfoReq reqDto) {
List<NimsApiDto.JurisdictionGovInfo> list = new ArrayList<>();
@ -391,7 +297,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* </pre>
*/
@Override
public BizNimsRequest.DsuseMgtReceiptReq saveDsuseMgtReceipt(final BizNimsRequest.DsuseMgtReceiptReq reqDto, final List<BizNimsDto.DsuseMgtDtl> dtls, final List<MultipartFile> files) {
public BizNimsRequest.DsuseMgtReceiptReq saveDsuseMgtReceipt(final BizNimsRequest.DsuseMgtReceiptReq reqDto, final List<BizNimsDto.DsuseMgtDtl> dtls, final List<MultipartFile> files, final NimsApiDto.BsshInfoSt bsshInfoSt, final List<NimsApiDto.ProductInfoKdSaveDTO> prdList) {
ApiUtil.validate(reqDto, null, validator);
if(reqDto.getRndDtlRptCnt() != dtls.size()) throw ApiCustomException.create("폐기물 보고수 오류[폐기물 갯수 확인]");
ApiUtil.validate(dtls, null, validator);
@ -399,6 +305,16 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
if(files.size() != dtls.size()) throw ApiCustomException.create("폐기물 파일 갯수 오류[파일 갯수 확인]");
// FIXME: 신규 API 적용 - 취급자 및 제품 정보 저장
bsshInfoSt.setRgtr(reqDto.getUserId());
bizNimsMapper.mergeBsshInfoSt(bsshInfoSt);
prdList.forEach(
d -> {
d.setRgtr(reqDto.getUserId());
bizNimsMapper.mergeProductInfoKd(d);
}
);
if(isEmpty(reqDto.getDscdmngId())) {
if (bizNimsMapper.insertDsuseMgtReceipt(reqDto) == 1) {
@ -444,6 +360,21 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
ApiUtil.validate(reqDto, null, validator);
reqDto.setRgtr(reqDto.getUserId());
// ------------------------------------------------------------------------------------------------
// 폐기장소 변경 여부 체크 - 폐기 결과를 공유하는 데이타
// 폐기구분, 폐기일자, 폐기방법이 동일한 건에 대하여 폐기장소 일괄 변경
// ------------------------------------------------------------------------------------------------
// 폐기장소가 null인 경우 - request 데이타로 set
final String dsuseLoc = bizNimsMapper.selectCheckDsuseLocBydscdmngId(reqDto.getDscdmngId())
.orElse(reqDto.getDsuseLoc());
// 1. 폐기장소가 null(또는 "")인 경우 - 신규 저장 -> 폐기장소 저장으로 이동
// 2. 1이 아니고, 저장된 폐기장소와 request 폐기장소가 다르면 해당 데이타를 공유하는 모든건 변경
if(!isEmpty(dsuseLoc) && !reqDto.getDsuseLoc().equals(dsuseLoc)){
bizNimsMapper.updateDsuseLocOfDsuseMgt(reqDto);
}
// ------------------------------------------------------------------------------------------------
if(bizNimsMapper.updateDsuseMgtRslt(reqDto) == 1){
if("Y".equals(fileChangeYn)) {
Map<String, String> map = Map.of("infType", Constants.FILE_INF_TYPE.DSUSE_IMG.getCode(), "infKey", reqDto.getDscdmngId());
@ -619,10 +550,9 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
.fg("1")
.pg("1")
.p(mnfSeqInfo.getPrductCd())
.dbSkipYn("N")
.userId(userId)
.build();
List<NimsApiDto.ProductInfoKd> productInfoKds = saveProductInfoKd(prdReq, false);
List<NimsApiDto.ProductInfoKd> productInfoKds = saveProductInfoKdQueryProductByProductId(prdReq, false);
if(productInfoKds.size() != 1) {
throw ApiCustomException.create(String.format("제품정보 오류<br>[Barcode 제품[%s]의 정보가 NIMS에 등록되지 않은 데이타 입니다]", mnfSeqInfo.getPrductCd()));
}
@ -666,11 +596,10 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
*/
private void setDsuseMgtDtlAddProductInfo(List<BizNimsResponse.DsuseMgtDtlRes> dtlList, String userId, String apiKey) {
for (BizNimsResponse.DsuseMgtDtlRes r : dtlList) {
// 마약항정구분(nrcdSeNm), 중점일반구분(prtmSenm)
if (isEmpty(r.getNrcdSeNm()) || isEmpty(r.getPrtmSeNm())) {
//NimsApiResult.Response<NimsApiDto.ProductInfoKd> result = infNimsService.getProductInfoKd(
List<NimsApiDto.ProductInfoKd> list = saveProductInfoKd(
List<NimsApiDto.ProductInfoKd> list = saveProductInfoKdQueryProductByProductId(
NimsApiRequest.ProductInfoReq.builder()
.k(apiKey)
.fg("1")
@ -691,7 +620,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
// 제조수입자명(bsshNm)
if (isEmpty(r.getBsshNm()) && !isEmpty(r.getBsshCd())) {
List<BsshInfoSt> list = saveBsshInfoSt(
List<BsshInfoSt> list = saveBsshInfoStQueryBsshInfoByBsshCd(
BsshInfoReq.builder()
.k(apiKey)
.fg("1")
@ -953,7 +882,7 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
* @param apiKey Api Key
* </pre>
*/
private void productInfoaddMnfSeqs(final List<NimsApiDto.ProductInfoKd> list, final String apiKey) {
private void productInfoaddMnfSeqs(final List<NimsApiDto.ProductInfoKd> list, final String bsshCd, final String apiKey) {
String productCd = "";
try {
@ -961,12 +890,13 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
for (NimsApiDto.ProductInfoKd d : list) {
productCd = d.getPrductCd();
List<NimsApiDto.MnfSeqInfo> mnfList = getMnfSeqInfo2(
List<NimsApiDto.MnfSeqInfo> mnfList = getMnfSeqInfoAll(
NimsApiRequest.MnfSeqInfoReq.builder()
.k(apiKey)
.fg("1")
.pg("1")
.p(d.getPrductCd())
.bc(bsshCd)
.userId("")
.build()
);
@ -1051,4 +981,48 @@ public class BizNimsServiceBean extends AbstractServiceBean implements BizNimsSe
return files.get(0).getId();
}
private List<NimsApiDto.MnfSeqInfo> getMnfSeqInfoAll(NimsApiRequest.MnfSeqInfoReq reqDto) {
if(isEmpty(reqDto.getK())){
reqDto.setK(getApiInfInfo(reqDto.getUserId()).get("apiKey"));
}
//reqDto.setFg("1"); // 제조번호 또는 일련번호 구분(1-제조번호, 2-일련번호, 3-바코드/RFID)
reqDto.setPg("1"); // 조회페이지
// 시리얼번호 및 제조번호 기준 검색후, 결과내에서 유효기간으로 필터링 하도록 처리
boolean isPrdValidDe = !isEmpty(reqDto.getT()) && !isEmpty(reqDto.getVd());
List<NimsApiDto.MnfSeqInfo> list = new ArrayList<>();
while (true) {
NimsApiResult.Response<NimsApiDto.MnfSeqInfo> rslt = infNimsService.getMnfSeqInfo(reqDto);
List<NimsApiDto.MnfSeqInfo> curList = rslt.getResult();
if (isEmpty(curList)) break;
if(isPrdValidDe) {
for (NimsApiDto.MnfSeqInfo d : curList) {
if(!isEmpty(d.getPrdValidDe()) && d.getPrdValidDe().contains(reqDto.getVd())){
list.add(d);
}
}
}else {
list.addAll(curList);
// 올림 차순 정렬
list.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 a.getPrdValidDe().compareTo(b.getPrdValidDe());
});
}
// 데이타 조회 결과 마지막 페이지 이거나 100건 이상인 경우 종료
if(rslt.isEndYn() || list.size() > 100 || isPrdValidDe) break;
reqDto.setPg(String.valueOf(Integer.parseInt(reqDto.getPg()) + 1));
}
return list;
}
}

@ -1,32 +1,22 @@
package cokr.xit.adds.biz.nims.web;
import java.util.List;
import java.util.*;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.http.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.*;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.core.type.*;
import cokr.xit.adds.biz.nims.model.BizNimsDto;
import cokr.xit.adds.biz.nims.model.BizNimsRequest;
import cokr.xit.adds.biz.nims.model.BizNimsResponse;
import cokr.xit.adds.biz.nims.service.BizNimsService;
import cokr.xit.adds.core.model.ApiBaseResponse;
import cokr.xit.adds.core.util.XingUtils;
import cokr.xit.adds.inf.nims.model.NimsApiDto;
import cokr.xit.adds.inf.nims.model.NimsApiRequest;
import cokr.xit.foundation.data.JSON;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.ExampleObject;
import lombok.RequiredArgsConstructor;
import cokr.xit.adds.biz.nims.model.*;
import cokr.xit.adds.biz.nims.service.*;
import cokr.xit.adds.core.model.*;
import cokr.xit.adds.core.util.*;
import cokr.xit.adds.inf.nims.model.*;
import cokr.xit.foundation.data.*;
import io.swagger.v3.oas.annotations.*;
import io.swagger.v3.oas.annotations.media.*;
import lombok.*;
/**
* <pre>
@ -58,7 +48,15 @@ public class BizNimsController {
public ApiBaseResponse<List<NimsApiDto.BsshInfoSt>> getNimsBsshInfoSt(
@ModelAttribute NimsApiRequest.BsshInfoReq dto
) {
return ApiBaseResponse.of(bizNimsService.saveBsshInfoSt(dto));
return bizNimsService.getBsshInfoSt(dto);
}
@Operation(summary = "NIMS 마약류 취급자 정보 조회(취급자코드로)", description = "마약류 취급자 정보 조회(취급자코드로)<br>NIMS API 호출 결과를 DB에 저장후 결과 Return<br><br><strong>아래 항목만 set</strong><br>bc - 취급자식별번호<br>userId - 사용자ID<br><strong>bc 필수</strong>", tags = { "NIMS API" })
@RequestMapping(value = "/saveBsshInfoStQueryBsshInfoByBsshCd", method = { RequestMethod.POST, RequestMethod.GET })
public ApiBaseResponse<List<NimsApiDto.BsshInfoSt>> saveBsshInfoStQueryBsshInfoByBsshCd(
@ModelAttribute NimsApiRequest.BsshInfoReq dto
) {
return ApiBaseResponse.of(bizNimsService.saveBsshInfoStQueryBsshInfoByBsshCd(dto));
}
@Operation(summary = "NIMS 마약류 제품 조회", description = "마약류 제품 조회<br>NIMS API 호출 결과를 DB에 저장후 결과 Return<br><br><strong>아래 항목만 set</strong><br>p - 제품번호<br> pn - 제품명<br> dbSkipYn - N:db조회후 결과 없는경우만 API호출, Y:API 호출<br> userId - 사용자ID<br><strong>p, pn중 하나는 필수</strong>", tags = { "NIMS API" })
@ -66,7 +64,7 @@ public class BizNimsController {
public ApiBaseResponse<List<NimsApiDto.ProductInfoKd>> getNimsMnfSeqInfo(
@ModelAttribute NimsApiRequest.ProductInfoReq dto
) {
return ApiBaseResponse.of(bizNimsService.saveProductInfoKd(dto, false));
return bizNimsService.getProductInfoKd(dto, false);
}
@Operation(summary = "NIMS 마약류 상품 정보 & 제조번호 조회", description = "마약류 상품정보 & 제조번호 조회<br>NIMS API 호출 결과를 DB에 저장후 결과 Return<br><br><strong>아래 항목만 set</strong><br>p - 제품번호<br> pn - 제품명<br> dbSkipYn - N:db조회후 결과 없는경우만 API호출, Y:API 호출<br> userId - 사용자ID<br><strong>p, pn중 하나는 필수</strong>", tags = { "NIMS API" })
@ -74,7 +72,7 @@ public class BizNimsController {
public ApiBaseResponse<List<NimsApiDto.ProductInfoKd>> getNimsProductInfoKdAndMnfSeqInfo(
@ModelAttribute NimsApiRequest.ProductInfoReq dto
) {
return ApiBaseResponse.of(bizNimsService.saveProductInfoKd(dto, true));
return bizNimsService.getProductInfoKd(dto, true);
}
@Operation(summary = "NIMS 제조 일련 번호 정보 조회", description = "제보 일련 번호 정보 조회<br>NIMS API 호출 결과 Return<br><br><strong>아래 항목만 set</strong><br>p - 제품번호<br>userId - 사용자ID", tags = { "NIMS API" })
@ -85,13 +83,13 @@ public class BizNimsController {
return bizNimsService.getMnfSeqInfo(dto);
}
@Operation(summary = "NIMS 제조 일련 번호 정보 조회", description = "제보 일련 번호 정보 조회<br>NIMS API 호출 결과 Return<br><br><strong>아래 항목만 set</strong><br>p - 제품번호<br>userId - 사용자ID", tags = { "NIMS API" })
@RequestMapping(value = "/getNimsMnfSeqInfo2", method = { RequestMethod.POST, RequestMethod.GET })
public ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> getNimsMnfSeqInfo2(
@ModelAttribute NimsApiRequest.MnfSeqInfoReq dto
) {
return ApiBaseResponse.of(bizNimsService.getMnfSeqInfo2(dto));
}
// @Operation(summary = "NIMS 제조 일련 번호 정보 조회", description = "제보 일련 번호 정보 조회<br>NIMS API 호출 결과 Return<br><br><strong>아래 항목만 set</strong><br>p - 제품번호<br>userId - 사용자ID", tags = { "NIMS API" })
// @RequestMapping(value = "/getNimsMnfSeqInfo2", method = { RequestMethod.POST, RequestMethod.GET })
// public ApiBaseResponse<List<NimsApiDto.MnfSeqInfo>> getNimsMnfSeqInfo2(
// @ModelAttribute NimsApiRequest.MnfSeqInfoReq dto
// ) {
// return ApiBaseResponse.of(bizNimsService.getMnfSeqInfo2(dto));
// }
@Operation(summary = "NIMS 관할 허가 관청 정보 조회", description = "관할 허가 관청 정보 조회<br><br>NIMS API 호출 결과를 DB에 저장후 결과 Return<br><br><strong>아래 항목만 set</strong><br>onm - 기관명<br>ocd - 기관코드<br>adr - 주소<br>dbSkipYn - N : db조회후 결과 없는경우만 API호출, Y : API 호출<br>userId - 사용자ID<br><strong>onm, ocd, adr중 하나는 필수</strong>", tags = { "NIMS API" })
@RequestMapping(value = "/getNimsJurisdictionGovInfo", method = { RequestMethod.POST, RequestMethod.GET })
@ -128,9 +126,11 @@ public class BizNimsController {
@RequestParam(value = "dsusePrdImgFiles", required = false) List<MultipartFile> dsusePrdImgFiles
) {
JSON json = new JSON();
NimsApiDto.BsshInfoSt bsshInfoSt = json.parse(dsuseMgtJsonStr, new TypeReference<>() {});
BizNimsRequest.DsuseMgtReceiptReq receiptDto = json.parse(dsuseMgtJsonStr, new TypeReference<>() {});
List<NimsApiDto.ProductInfoKdSaveDTO> productInfoKds = json.parse(dsuseMgtDtlsJsonStr, new TypeReference<>() {});
List<BizNimsDto.DsuseMgtDtl> dsuseMgtDtls = json.parse(dsuseMgtDtlsJsonStr, new TypeReference<>() {});
return ApiBaseResponse.of(bizNimsService.saveDsuseMgtReceipt(receiptDto, dsuseMgtDtls, dsusePrdImgFiles));
return ApiBaseResponse.of(bizNimsService.saveDsuseMgtReceipt(receiptDto, dsuseMgtDtls, dsusePrdImgFiles, bsshInfoSt, productInfoKds));
}
@Operation(summary = "사고 마약류 폐기 관리 폐기 신청서 마스터 정보 변경", description = "사고 마약류 폐기 관리 폐기 신청서 접수 마스터 정보 변경", tags = { "BIZ API" })

@ -1,59 +1,32 @@
package cokr.xit.adds.inf.mois.service.bean;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.StandardCopyOption;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.commons.lang3.StringUtils;
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.*;
import java.util.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.apache.commons.lang3.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.w3c.dom.Attr;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import cokr.xit.adds.biz.nims.service.BizNimsService;
import cokr.xit.adds.core.Constants;
import cokr.xit.adds.core.spring.exception.ApiCustomException;
import cokr.xit.adds.core.util.DateUtils;
import cokr.xit.adds.inf.mois.model.MoisExchangeRequest;
import cokr.xit.adds.inf.mois.model.PackDto;
import cokr.xit.adds.inf.mois.service.InfMoisService;
import cokr.xit.adds.inf.nims.model.NimsApiDto;
import cokr.xit.adds.inf.nims.model.NimsApiRequest;
import cokr.xit.foundation.component.AbstractServiceBean;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.*;
import org.springframework.web.multipart.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import cokr.xit.adds.biz.nims.service.*;
import cokr.xit.adds.core.*;
import cokr.xit.adds.core.spring.exception.*;
import cokr.xit.adds.core.util.*;
import cokr.xit.adds.inf.mois.model.*;
import cokr.xit.adds.inf.mois.service.*;
import cokr.xit.adds.inf.nims.model.*;
import cokr.xit.foundation.component.*;
import lombok.*;
import lombok.extern.slf4j.*;
/**
* <pre>
@ -343,7 +316,7 @@ public class InfMoisServiceBean extends AbstractServiceBean implements InfMoisSe
}
private NimsApiDto.BsshInfoSt getBsshInfo(MoisExchangeRequest reqDto) {
List<NimsApiDto.BsshInfoSt> list = bizNimsService.saveBsshInfoSt(
List<NimsApiDto.BsshInfoSt> list = bizNimsService.saveBsshInfoStQueryBsshInfoByBsshCd(
NimsApiRequest.BsshInfoReq.builder()
.fg("1")
.pg("1")

@ -1,30 +1,21 @@
package cokr.xit.adds.inf.nims.model;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import javax.validation.Valid;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnore;
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.biz.nims.model.BizNimsDto;
import cokr.xit.adds.biz.nims.model.BizNimsResponse;
import cokr.xit.adds.core.Constants;
import cokr.xit.adds.core.model.AuditDto;
import cokr.xit.adds.core.spring.exception.ApiCustomException;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import java.io.*;
import java.util.*;
import javax.validation.*;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.*;
import cokr.xit.adds.biz.nims.model.*;
import cokr.xit.adds.core.*;
import cokr.xit.adds.core.model.*;
import cokr.xit.adds.core.spring.exception.*;
import lombok.*;
import lombok.experimental.*;
/**
* <pre>
@ -210,6 +201,88 @@ public class NimsApiDto {
private List<NimsApiDto.MnfSeqInfo> mnfSeqInfos = new ArrayList<>();
}
/**
* DTO
*/
@Getter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public static class ProductInfoKdSaveDTO extends AuditDto {
/**
*
*/
@JsonAlias("PRDUCT_CD")
private String prductCd;
/**
*
*/
@JsonAlias("PRDLST_MST_CD")
private String prdlstMstCd;
/**
*
*/
@JsonAlias("PRDUCT_NM")
private String prductNm;
/**
* /
*/
@JsonAlias("NRCD_SE_NM")
private String nrcdSeNm;
/**
* /
*/
@JsonAlias("PRTM_SE_NM")
private String prtmSeNm;
/**
*
* ( = 1)
*/
@JsonAlias("minDistbQy")
private Integer prdMinDistbQy;
/**
*
*/
@JsonAlias("minDistbUnit")
private String stdPackngStleNm;
/**
*
*/
@JsonAlias("pceQy")
private Integer prdTotPceQy;
/**
*
*/
@JsonAlias("pceUnit")
private String pceCoUnitNm;
/**
*
*/
@JsonAlias("BSSH_CD")
private String bsshCd;
/**
*
*/
@JsonAlias("RGS_DT")
private String rgsDt;
/**
*
*/
@JsonAlias("UPD_DT")
private String updDt;;
}
/**
* response
*/
@ -497,9 +570,10 @@ public class NimsApiDto {
&& Objects.equals(
Objects.toString(rptDtl.getPrdValidDe(), "").replaceAll("-", ""),
Objects.toString(mgtDtl.getPrdValidDe(), "").replaceAll("-", ""))
&& Objects.equals(
Objects.toString(rptDtl.getMnfSeq(), "").replaceAll("-", ""),
Objects.toString(mgtDtl.getMnfSeq(), "").replaceAll("-", ""))
// FIXME:: NIMS 데이타 일치여부 체크 - 제조번호 제외
// && Objects.equals(
// Objects.toString(rptDtl.getMnfSeq(), "").replaceAll("-", ""),
// Objects.toString(mgtDtl.getMnfSeq(), "").replaceAll("-", ""))
&& Objects.equals(rptDtl.getDsuseQy(), mgtDtl.getDsuseQy())) {
rptDtl.setMatchYn("Y");
break;
@ -678,4 +752,3 @@ public class NimsApiDto {
private String bassDtlAdres;
}
}

@ -2,17 +2,13 @@ package cokr.xit.adds.inf.nims.model;
import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.*;
import cokr.xit.adds.core.Constants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import cokr.xit.adds.core.*;
import io.swagger.v3.oas.annotations.media.*;
import lombok.*;
/**
* <pre>
@ -114,9 +110,9 @@ public class NimsApiRequest {
* true DB skip
* </pre>
*/
@Schema(title = "DB 조회 skip 여부", description = "DB 조회 skip 여부(DB 조회 없이 NIMS API호출 하려면 Y)", example = "N")
@Builder.Default
private String dbSkipYn = "N";
// @Schema(title = "DB 조회 skip 여부", description = "DB 조회 skip 여부(DB 조회 없이 NIMS API호출 하려면 Y)", example = "N")
// @Builder.Default
// private String dbSkipYn = "N";
/**
* <pre>
@ -198,15 +194,11 @@ public class NimsApiRequest {
/**
* <pre>
* DB skip
* DB NIMS API
* true DB skip
*
*
* </pre>
*/
@Schema(title = "DB 조회 skip 여부", description = "DB 조회 skip 여부(DB 조회 없이 NIMS API호출 하려면 Y)", example = "N")
@Builder.Default
private String dbSkipYn = "N";
@Schema(title = "마약류취급자번호", description = "마약류취급자번호", example = " ")
private String bc;
/**
* <pre>
@ -384,11 +376,17 @@ public class NimsApiRequest {
@Pattern(regexp = "^$|[A-Z0-9]{1,}", message = "번호는 영숫자(A~Z, 0~9)만 입력가능합니다")
private String t = StringUtils.EMPTY;
/**
*
*/
@Schema(title = "마약류 취급자 식별 번호", description = "마약류 취급자 식별 번호", example = " ")
private String bc;
/**
*
*/
@Schema(title = "유효기간", description = "유효기간", example = " ")
private String prdValidDe;
private String vd;
/**
* <pre>

@ -1,23 +1,20 @@
package cokr.xit.adds.inf.nims.service.bean;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.*;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.core.type.*;
import cokr.xit.adds.core.spring.exception.ApiCustomException;
import cokr.xit.adds.core.util.ApiUtil;
import cokr.xit.adds.inf.nims.model.NimsApiDto;
import cokr.xit.adds.inf.nims.model.NimsApiRequest;
import cokr.xit.adds.inf.nims.model.NimsApiResult;
import cokr.xit.adds.inf.nims.service.InfNimsService;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.JSON;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import cokr.xit.adds.core.spring.exception.*;
import cokr.xit.adds.core.util.*;
import cokr.xit.adds.inf.nims.model.*;
import cokr.xit.adds.inf.nims.service.*;
import cokr.xit.foundation.component.*;
import cokr.xit.foundation.data.*;
import lombok.*;
import lombok.extern.slf4j.*;
/**
* <pre>
@ -57,7 +54,7 @@ public class InfNimsServiceBean extends AbstractServiceBean implements InfNimsSe
private String productinfoKd;
/**
* API URL
* API URL
*/
@Value("${app.inf.nims.api.seqinfo}")
private String seqinfo;
@ -95,13 +92,18 @@ public class InfNimsServiceBean extends AbstractServiceBean implements InfNimsSe
ApiUtil.validate(dto, null, validator);
if(!isEmpty(dto.getYmd())) ApiUtil.checkYmdError(dto.getYmd(), null);
//FIXME: 운영기 반영 이후 주석 제거
String rslt = ApiUtil.callNimsApi(nimsUrl + productinfoKd, dto);
NimsApiResult<NimsApiDto.ProductInfoKd> result = json.parse(rslt, new TypeReference<>() {});
return result.getResponse();
}
/**
* API URL
* @param dto NimsApiRequest.MnfSeqInfoReq
* @return NimsApiResult.Response<NimsApiDto.MnfSeqInfo>
*/
@Override
//@TraceLogging
public NimsApiResult.Response<NimsApiDto.MnfSeqInfo> getMnfSeqInfo(NimsApiRequest.MnfSeqInfoReq dto) {
ApiUtil.validate(dto, null, validator);
if(!isEmpty(dto.getYmd())) ApiUtil.checkYmdError(dto.getYmd(), null);

@ -52,7 +52,7 @@ public class InfNimsController {
return ApiBaseResponse.of(infNimsService.getProductInfoKd(dto));
}
@Operation(summary = "제조 일련 번호 정보 조회", description = "제조 일련 번호 정보 조회")
@Operation(summary = "제조 일련 번호 정보 조회(업체별)", description = "제조 일련 번호 정보 조회(업체별)")
@PostMapping("/getMnfSeqInfo")
public ApiBaseResponse<NimsApiResult.Response<NimsApiDto.MnfSeqInfo>> getMnfSeqInfo(
@RequestBody NimsApiRequest.MnfSeqInfoReq dto

@ -4,7 +4,7 @@ app:
api:
bsshinfoStV1: /api/bsshinfo_st_v1.do
productinfoKd: /api/productinfo_kd.do
seqinfo: /api/seqinfo.do
seqinfo: /api/seqinfo_pub.do
officeinfo: /api/officeinfo.do
placeinfoV1: /api/placeinfo_v1.do
dsuseresult: /api/dsuseresult.do

@ -44,21 +44,21 @@
)
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}, /* 허가번호 */
induty_nm = CASE WHEN induty_nm != IFNULL(#{indutyNm}, '') AND IFNULL(#{indutyNm}, '') != '' THEN #{indutyNm} ELSE induty_nm END, /* 업종명 */
hdnt_cd = CASE WHEN hdnt_cd != IFNULL(#{hdntCd}, '') AND IFNULL(#{hdntCd}, '') != '' THEN #{hdntCd} ELSE hdnt_cd END, /* 의료업자구분 */
hdnt_nm = CASE WHEN hdnt_nm != IFNULL(#{hdntNm}, '') AND IFNULL(#{hdntNm}, '') != '' THEN #{hdntNm} ELSE hdnt_nm END, /* 의료업자구분명 */
chrg_nm = CASE WHEN chrg_nm != IFNULL(#{chrgNm}, '') AND IFNULL(#{chrgNm}, '') != '' THEN #{chrgNm} ELSE chrg_nm END, /* 담당자명 */
hptl_no = CASE WHEN hptl_no != IFNULL(#{hptlNo}, '') AND IFNULL(#{hptlNo}, '') != '' THEN #{hptlNo} ELSE hptl_no END, /* 요약기관번호 */
join_yn = CASE WHEN join_yn != IFNULL(#{joinYn}, '') AND IFNULL(#{joinYn}, '') != '' THEN #{joinYn} ELSE join_yn END, /* 가입여부 */
bssh_stts_nm = CASE WHEN bssh_stts_nm != IFNULL(#{bsshSttusNm}, '') AND IFNULL(#{bsshSttusNm}, '') != '' THEN #{bsshSttusNm} ELSE bssh_stts_nm END, /* 마약류취급자상태명 */
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">
<insert id="mergeProductInfoKd">
/** nims-mysql-mapper|mergeProductInfoKd-상품정보 생성|julim */
INSERT INTO tb_prduct_info(
prduct_cd, /* 제품코드 */
@ -87,24 +87,24 @@
#{prdTotPceQy},
#{pceCoUnitNm},
#{bsshCd},
#{rgsDt},
#{updDt},
NULLIF(#{rgsDt}, ''),
NULLIF(#{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}, /* 변경일 */
prdlst_mst_cd = CASE WHEN prdlst_mst_cd != IFNULL(#{prdlstMstCd}, '') AND IFNULL(#{prdlstMstCd}, '') != '' THEN #{prdlstMstCd} ELSE prdlst_mst_cd END, /* 제품대표코드 */
nrcd_se_nm = CASE WHEN nrcd_se_nm != IFNULL(#{nrcdSeNm}, '') AND IFNULL(#{nrcdSeNm}, '') != '' THEN #{nrcdSeNm} ELSE nrcd_se_nm END, /* 마약항정구분 */
prtm_se_nm = CASE WHEN prtm_se_nm != IFNULL(#{prtmSeNm}, '') AND IFNULL(#{prtmSeNm}, '') != '' THEN #{prtmSeNm} ELSE prtm_se_nm END, /* 중점일반구분 */
bssh_cd = CASE WHEN bssh_cd != IFNULL(#{bsshCd}, '') AND IFNULL(#{bsshCd}, '') != '' THEN #{bsshCd} ELSE bssh_cd END, /* 마약류취급자식별번호 */
rgs_dt = CASE WHEN rgs_dt != NULLIF(#{rgsDt}, '') AND IFNULL(#{rgsDt}, '') != '' THEN NULLIF(#{rgsDt}, '') ELSE rgs_dt END, /* 등록일 */
upd_dt = CASE WHEN upd_dt != NULLIF(#{updDt}, '') AND IFNULL(#{updDt}, '') != '' THEN NULLIF(#{updDt}, '') ELSE upd_dt END, /* 변경일 */
mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
mdfr = #{rgtr}
</insert>
@ -295,6 +295,28 @@
WHERE dscdmng_id = #{dscdmngId}
</update>
<select id="selectCheckDsuseLocBydscdmngId" parameterType="string" resultType="string">
/** nims-mysql-mapper|selectCheckDsuseLocBydscdmngId-폐기관리 결과의 폐기장소 조회|julim */
SELECT dsuse_loc
FROM tb_dsuse_mgt
WHERE dscdmng_id = #{dscdmngId}
</select>
<update id="updateDsuseLocOfDsuseMgt" parameterType="cokr.xit.adds.biz.nims.model.BizNimsRequest$DsuseMgtRsltReq">
/** nims-mysql-mapper|updateDsuseLocOfDsuseMgt-폐기관리 결과의 폐기장소 변경|julim */
UPDATE tb_dsuse_mgt
SET dsuse_loc = #{dsuseLoc}
, mdfcn_dt = DATE_FORMAT(now(), '%Y%m%d%H%i%s')
, mdfr = #{rgtr}
WHERE use_yn = 'Y'
AND dept_cd = (SELECT dept_cd FROM tb_user WHERE user_acnt = #{userId})
AND dsuse_mth_cd = #{dsuseMthCd}
AND dsuse_se_cd = #{dsuseSeCd}
AND dsuse_de = #{dsuseDe}
AND tb_dsuse_mgt.dscdmng_id != #{dscdmngId}
</update>
<update id="updateDsuseMgtRslt" parameterType="cokr.xit.adds.biz.nims.model.BizNimsRequest$DsuseMgtRsltReq">
/** nims-mysql-mapper|updateDsuseMgtRslt-폐기관리 정보 변경|julim */
UPDATE tb_dsuse_mgt

Loading…
Cancel
Save