feat: NICE CI accept 진행

dev
Jonguk. Lim 1 month ago
parent b0946c2201
commit c869981f59

@ -1,14 +1,14 @@
Insert into TB_INPUT_XIT
(LNK_INPUT_ID, ORG_CD, JOB_CD, TOT_CNT, PRCS_CD, RUN_DT, EXPIRES_DT, SEND_TYPE, REG_ID, REG_DT, PAY_EXPIRES_DT)
Values
(302400001123, '0002', 'B0001', 1, 'TGRG', SYSDATE, SYSDATE + 30
, 'KP', 'cntc', SYSDATE, SYSDATE+30);
(302400002001, '0002', 'B0001', 1, 'TRRG', SYSDATE, SYSDATE + 30
, 'NI', 'cntc', SYSDATE, SYSDATE+30);
Insert into TB_INPUT_DATA_XIT
(LNK_INPUT_ID, DATA_ID, SID, NAME, BIRTHDAY, GENDER, MSG_DATA, MSG_DTL_DATA, REG_ID, REG_DT, CAR_NO, CALL_CENTER_NO)
Values
(302400001123, '300799990000000001123', '8312181157213', '김지호', '19831218','1'
(302400002001, '300799990000000002001', '8312181157213', '김지호', '19831218','1'
, '{"~~@@!!CAR_NO!!@@~~":"20우3412","~~@@!!DEGREE!!@@~~":"3","~~@@!!FEE!!@@~~":"1,900","~~@@!!YYYY!!@@~~":"2022","~~@@!!MM!!@@~~":"03","~~@@!!DD!!@@~~":"11","~~@@!!BANK!!@@~~":"우체국","~~@@!!ACCOUNT!!@@~~":"8608-90-80907938","~~@@!!HISTORY!!@@~~":"-2021-11-29 12:33 (별내 550)\n-2021-11-29 12:19 (양주 900)\n-2021-11-30 14:33 (불암산② 450)","~~@@!!CALL_NO!!@@~~":"(031)522-6400~1","~~@@!!HOMEPAGE!!@@~~":"https://seoulbeltway.co.kr/main/esccar.jsp"}'
, '{"details":[{"item_type":"TEXT","elements":[],"title":"미납통행료 안내문(1차)","properties":{"use_toggle":false}},{"item_type":"PRE_TEXT","elements":"수도권제1순환고속도로 안내문(1차)이 도착하였습니다.\n미납통행료 종이고지서를 모바일 전자문서로 고지하고 있으며, 본 전자문서를 받으신 경우 종이고지서는 발송되지 않습니다.","title":"","properties":{"use_toggle":false}},{"item_type":"KEY_VALUE","elements":[{"level":1,"value":"67어3853","key":"차량번호"},{"level":1,"value":"수도권제1순환","key":"미납발생\n노선명"},{"level":1,"value":"미납통행료 안내문(1차)","key":"고지서명"},{"level":1,"value":"1,260원","key":"납부하실 통행료"},{"level":1,"value":"1,260원","key":"- 미납통행료"},{"level":1,"value":"0원","key":"- 부가통행료"},{"level":1,"value":"2023년 06월 22일까지","key":"납부기한"}],"title":"안내내역","properties":{"use_toggle":false}},{"item_type":"TEXT","elements":[],"title":"상세내역","properties":{"use_toggle":false}},{"item_type":"KEY_VALUE","elements":[{"level":1,"value":"2023-05-20 13:10","key":"통행일시"},{"level":1,"value":"양주","key":"통행영업소"},{"level":1,"value":"1,260 원","key":"통행요금"},{"level":1,"value":"SC잔액부족","key":"미납사유"}],"title":"","properties":{"use_toggle":false}},{"item_type":"PRE_TEXT","elements":" \n","title":"","properties":{"use_toggle":false}},{"item_type":"PRE_TEXT","elements":"※ 해당 통행을 포함하여 최근 1년 이내에 20회 이상 통행료 미납 시 누적 20회부터 즉시 부가통행료(미납통행료의 10배)가 미납통행료와 함께 부과될 수 있음을 알려드립니다.","title":"","properties":{"style":{"highlight":{"※ 해당 통행을 포함하여 최근 1년 이내에 20회 이상 통행료 미납 시 누적 20회부터 즉시 부가통행료(미납통행료의 10배)가 미납통행료와 함께 부과될 수 있음을 알려드립니다.":{"font-color":"black","font-weight":"bold"}}},"use_toggle":false}},{"item_type":"KEY_VALUE","elements":[{"level":1,"value":"하단의 납부하기 클릭 또는\n가상계좌 납부\n(우체국 8608-89-80215603)","key":"납부방법"},{"level":1,"value":"수도권제1순환고속도로\n고객센터 ☎ (031)894-6300~1\n홈페이지 https://seoulbeltway.co.kr/main/esccar.jsp","key":"문의처"}],"title":"납부방법 및 문의처","properties":{"hyperlink":["https://seoulbeltway.co.kr/main/esccar.jsp"],"style":{"highlight":{"(031)894-6300~1":{"font-color":"blue","font-weight":"bold","font-size":"35px","use-clipboard":true},"우체국":{"font-weight":"bold"},"고객센터 ☎ ":{"font-color":"blue","font-weight":"bold","font-size":"35px"},"8608-89-80215603":{"font-weight":"bold","use-clipboard":true}}},"use_toggle":false}},{"item_type":"TABLE","elements":{"head":[""],"rows":[["발송처 : 민자도로 관리지원센터\n(044-211-3377)"]]},"title":"","properties":{"style":{"highlight":{"발송처 : 민자도로 관리지원센터":{"font-size":"25px"},"(044-211-3377)":{"font-size":"25px"}},"text_align":["right"]},"use_toggle":false}},{"item_type":"PAY_BUTTON","title":"납부하기"}]}'
, 'cntc', SYSDATE, '20우3412', '1599-2509');
@ -131,3 +131,13 @@ WHERE tix.send_type='NI'
AND tix.expires_dt < SYSDATE - 1;
-- 2. tb_input_xit 테이블 prcs_cd='CLOS' / 실패 시 prcs_cd='FAIL'
INSERT
INTO
ens_bill
( bill_id, bill_uid, biller_user_key, BILL_SE_CD, org_cd, regist_dt )
VALUES
( 7, 'billUid', 'billerUserKey', 'kkk', '0002', sysdate );
commit;

@ -22,8 +22,13 @@ import cokr.xit.ens.modules.nice.model.*;
*/
@Mapper
public interface INiceCiMapper {
List<NiceCiDTO.InputXit> selectNiceCiAcceptTgts(final NiceCiDTO.InputXit inputXit);
List<NiceCiDTO.InputDataXit> selectNiceCiAcceptDatas(final NiceCiDTO.InputXit inputXit);
List<NiceCiDTO.InputXit> selectNiceCiAcceptTgts(final NiceCiDTO.NiceCiParam niceCiParam);
List<NiceCiDTO.InputDataXit> selectNiceCiAcceptDatas(final NiceCiDTO.NiceCiParam niceCiParam);
int saveBill(final NiceCiDTO.BillDTO bill);
int insertBill(final NiceCiDTO.BillDTO billDTO);
int updateBill(final NiceCiDTO.BillDTO billDTO);
//int saveBill(final NiceCiDTO.BillDTO billDTO);
int saveBillKko(final NiceCiDTO.BillKkoDTO billKkoDTO);
int updatePayUrlOfDataInput(final NiceCiDTO.InputDataXit inputDataXit);
int updatePrcsCdOfInputXit(final NiceCiDTO.InputXit inputXit);
}

@ -3,11 +3,7 @@ package cokr.xit.ens.modules.nice.model;
import java.time.*;
import java.util.*;
import javax.persistence.*;
import cokr.xit.ens.biz.iup.code.*;
import cokr.xit.ens.core.jpa.support.*;
import cokr.xit.ens.modules.common.ctgy.intgrnbill.support.code.*;
import io.swagger.v3.oas.annotations.media.*;
import lombok.*;
import lombok.experimental.*;
@ -27,6 +23,91 @@ import lombok.experimental.*;
* </pre>
*/
public class NiceCiDTO {
@Schema(name = "InputXit DTO", description = "InputXit DTO")
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = false)
public static class NiceCiParam {
/**
*
*/
private String sendType = IupSendTypeCd.NI.getCode();
/**
*
*/
private String prcsCd = IupPrcsCd.TGRG.getCode();
/**
*
*/
private Long lnkInputId;
/**
*
*/
private String jobCd;
// private String signguCode;
// private String ffnlgCode;
// private String profile;
//
// /**
// * 통합 발송 마스터 id
// */
// private String unitySndngMastrId;
// /**
// * 통합 발송 마스터 id
// */
// private String unitySndngDetailId;
// /**
// * 발송 마스터 id
// */
// private String sndngMastrId;
//
// /**
// * 발송상세ID
// */
// private String sndngDetailId;
//
// /**
// * 템플릿ID
// */
// private String tmplatId;
//
// /**
// * 발송 건수
// */
// private int sndngCo;
//
// private String sndngProcessSttus;
// /**
// * 발송 처리 상태
// */
// private String newSndngProcessSttus;
//
// private String try1;
// private String try2;
// private String try3;
// private int tryCnt;
// private int trySeq;
// private String sndngSeCode;
// private String sndngDt;
// private String sndngDt2;
// private String sndngDt3;
// private String try2Minute;
// private String try3Minute;
private String errorCode;
private String errorMessage;
private String resultCd;
private String resultDt;
private String url;
}
@Schema(name = "InputXit DTO", description = "InputXit DTO")
@Data
@NoArgsConstructor
@ -57,8 +138,7 @@ public class NiceCiDTO {
/**
*
*/
@Enumerated(EnumType.STRING)
private IupPrcsCd prcsCd;
private String prcsCd;
/**
*
@ -78,8 +158,7 @@ public class NiceCiDTO {
/**
*
*/
@Enumerated(EnumType.STRING)
private IupSendTypeCd sendType;
private String sendType;
/**
*
@ -123,7 +202,6 @@ public class NiceCiDTO {
private String msgData;
@Lob
private String msgDtlData;
private String name;
@ -156,22 +234,21 @@ public class NiceCiDTO {
/**
*
*/
@Enumerated(EnumType.STRING)
private BillSeCd billSeCd;
//@Enumerated(EnumType.STRING)
private String billSeCd;
private String orgCd;
/**
*
*/
@Convert(converter = BooleanToYnConverter.class)
private Boolean paidAt;
/**
*
*/
@Enumerated(EnumType.STRING)
private PaidTypeCd paidType;
//@Enumerated(EnumType.STRING)
private String paidType;
/**
* () - 14
@ -183,16 +260,131 @@ public class NiceCiDTO {
*/
private String paidCancelDt;
private String docBillKko;
private String docBillNv;
}
@Schema(name = "BillKkoDTO DTO", description = "BillKkoDTO DTO")
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public static class BillKkoDTO {
private Long billId;
private String billUid;
private String billerUserKey;
/**
*
*
*/
@Lob
private String docBillKko;
private String billedYearMonth;
/**
*
*
*/
@Lob
private String docBillNv;
private String ordinal;
/**
*
*/
private String billerNoticeKey;
/**
* URL
*/
private String expireAt;
/**
* API JSON
*/
private String parameters;
/**
* <pre>
* // API Url JSON
* " "custom_url\": {\n" +
* " \"notice_url\" : \" https://test-api.dozn.co.kr/kakao/notice\",\n" +
* " \"prepay_url\": \"https://test-api.dozn.co.kr/kakao/prepay\",\n" +
* " \"pay_result_url\": \" https://test-api.dozn.co.kr/kakao/pay-result\"\n" +
* " }"
* </pre>
*/
private String customUrl;
/**
* URL
*/
private String url;
/* =====================================
* - PayNotice
===================================== */
/**
*
*/
private String title;
/**
*
*/
private Integer amount;
/**
*
*/
private Integer taxFreeAmount;
/**
*
*/
private Integer vatAmount;
/**
* : D1
*/
private String expireType;
/**
*
*/
private String payExpireDate;
/**
*
*/
private String secondPayExpireDate;
/**
*
*/
private String bankAccounts;
/**
*
*/
private String details;
/**
* (YYYYMMDDHH24MISS)
*/
private String lastPaidAt;
/**
*
*/
private Integer lastPayId;
private String errorCode;
private String errorMessage;
// @Embedded
// @Setter
// private FieldError error;
}
}

@ -3,6 +3,7 @@ package cokr.xit.ens.modules.nice.presentation;
import org.springframework.http.*;
import org.springframework.web.bind.annotation.*;
import cokr.xit.ens.modules.nice.model.*;
import cokr.xit.ens.modules.nice.service.*;
import io.swagger.v3.oas.annotations.*;
import io.swagger.v3.oas.annotations.tags.*;
@ -32,8 +33,8 @@ public class NiceCiController {
@Operation(summary = "접수")
@PostMapping(value = "/accept", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> accept() {
return new ResponseEntity<>(niceCiAcceptService.accept(), HttpStatus.OK);
public ResponseEntity<?> accept(final NiceCiDTO.NiceCiParam niceCiParam) {
return new ResponseEntity<>(niceCiAcceptService.accept(niceCiParam), HttpStatus.OK);
}
@Operation(summary = "(대량)전송요청")

@ -6,10 +6,14 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.*;
import org.springframework.transaction.annotation.*;
import com.google.gson.*;
import cokr.xit.ens.biz.iup.code.*;
import cokr.xit.ens.core.aop.*;
import cokr.xit.ens.core.utils.*;
import cokr.xit.ens.modules.common.code.*;
import cokr.xit.ens.modules.common.ctgy.intgrnbill.kko.service.process.model.*;
import cokr.xit.ens.modules.common.ctgy.intgrnbill.support.code.*;
import cokr.xit.ens.modules.common.ctgy.sys.mng.service.*;
import cokr.xit.ens.modules.nice.mapper.*;
import cokr.xit.ens.modules.nice.model.*;
@ -35,16 +39,20 @@ import lombok.extern.slf4j.*;
@Service
@RequiredArgsConstructor
public class NiceCiAcceptService {
@Value("${contract.niceCi.orgId}")
private String ORG_ID;
@Value("${contract.niceCi.clientId}")
private String CLIENT_ID;
@Value("${contract.kakao.pay.bill.dozn.api.validate.host}")
private String BILL_HOST;
@Value("${contract.kakao.pay.bill.dozn.api.validate.notice}")
private String BILL_NOTICE_URL;
@Value("${contract.kakao.pay.bill.dozn.api.validate.prepay}")
private String BILL_PREPAY_URL;
@Value("${contract.kakao.pay.bill.dozn.api.validate.payresult}")
private String BILL_PAYREUSLT_URL;
private final KeySequenceService keySequenceService;
private final NiceCiApiService niceCiApiService;
private final INiceCiMapper niceCiMapper;
private Gson gson = new GsonBuilder().disableHtmlEscaping().create();
/**
* <pre>
@ -65,38 +73,68 @@ public class NiceCiAcceptService {
* </pre>
*/
@Transactional(propagation = Propagation.REQUIRES_NEW)
public EnsResponseVO<?> accept(){
NiceCiDTO.InputXit inputXit = NiceCiDTO.InputXit.builder()
.sendType(IupSendTypeCd.NI)
.prcsCd(IupPrcsCd.TGRG)
.build();
final List<NiceCiDTO.InputXit> list = niceCiMapper.selectNiceCiAcceptTgts(inputXit);
list.forEach(niceCiMapper::selectNiceCiAcceptDatas);
public EnsResponseVO<?> accept(final NiceCiDTO.NiceCiParam niceCiParam){
niceCiParam.setSendType(IupSendTypeCd.NI.getCode());
niceCiParam.setPrcsCd(IupPrcsCd.TGRG.getCode());
final List<NiceCiDTO.InputXit> list = niceCiMapper.selectNiceCiAcceptTgts(niceCiParam);
list.forEach(d -> {
niceCiParam.setLnkInputId(d.getLnkInputId());
d.setInputDataXits(niceCiMapper.selectNiceCiAcceptDatas(niceCiParam));
});
//List<NiceCiDTO.BillDTO> bills = new ArrayList<>();
//List<NiceCiDTO.BillKkoDTO> billKkos = new ArrayList<>();
final String prefixBillUid = PostSeCd.intgrnNoti.getCode() + "-" + IdGenerator.getCurrentTimeSec();
List<NiceCiDTO.BillDTO> bills = new ArrayList<>();
for(NiceCiDTO.InputXit d : list){
List<NiceCiDTO.InputDataXit> inputDataXits = niceCiMapper.selectNiceCiAcceptDatas(d);
// bill
bills.add(
final String customUrl = gson.toJson(CustomUrl.builder()
.noticeUrl(BILL_HOST + BILL_NOTICE_URL)
.prepayUrl(BILL_HOST + BILL_PREPAY_URL)
.payResultUrl(BILL_HOST + BILL_PAYREUSLT_URL)
.build());
final String expireAt = DateUtil.getTodayAndNowTime("YYYYMMddHHmmss");
for(NiceCiDTO.InputXit xit : list){
try {
List<NiceCiDTO.InputDataXit> inputDataXits = xit.getInputDataXits();
for (NiceCiDTO.InputDataXit data : inputDataXits) {
final long bilId = keySequenceService.getKeySequence("bill_id");
final String billUid = IdGenerator.getShortUUID(prefixBillUid);
// FIXME: bill_se_cd, org_cd 설정 및 확인 필요???
niceCiMapper.insertBill(
NiceCiDTO.BillDTO.builder()
//.billId(keySequenceService.getKeySequence("bill_id"))
.billUid(IdGenerator.getShortUUID(prefixBillUid))
//.billerUserKey(document.getXit_property().getBill_acpt_data().getBillerUserKey())
//.billSeCd(document.getXit_property().getBill_acpt_data().getBillSe())
//.orgMng(OrgMng.builder().orgCd(reqDTO.getOrg_cd()).build())
.billId(bilId)
.billUid(billUid)
.billerUserKey(data.getDataId())
.billSeCd(BillSeCd.privt.getCode())
.orgCd(xit.getOrgCd())
.build()
);
// FIXME: biller_notice_key, custom_url, expire_at 설정 및 확인 필요???
niceCiMapper.saveBillKko(
NiceCiDTO.BillKkoDTO.builder()
.billId(bilId)
.billerUserKey(data.getDataId())
.billerNoticeKey(billUid)
.customUrl(customUrl)
.expireAt(expireAt) //d.getExpiresDt()
.billUid(billUid)
.build()
);
data.setPayUrl(customUrl);
niceCiMapper.updatePayUrlOfDataInput(data);
}
xit.setPrcsCd(IupPrcsCd.GRUC.getCode());
niceCiMapper.updatePrcsCdOfInputXit(xit);
} catch (Exception e){
xit.setPrcsCd(IupPrcsCd.TGRF.getCode());
niceCiMapper.updatePrcsCdOfInputXit(xit);
}
}
bills.forEach(b -> {
b.setBillId(keySequenceService.getKeySequence("bill_id"));
niceCiMapper.saveBill(b);
});
return EnsResponseVO.okBuilder()
//.resultInfo(niceCiMapper.selectAcceptTgts(null))

@ -6,7 +6,7 @@
<!-- ================================ accept =========================================== -->
<!-- =================================================================================== -->
<select id="selectNiceCiAcceptTgts" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputXit" resultType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputXit">
<select id="selectNiceCiAcceptTgts" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$NiceCiParam" resultType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputXit">
/** iup-niceci-mapper|selectNiceCiAcceptTgts-NICE CI 발송 대상 조회|julim */
SELECT lnk_input_id
, err_msg
@ -24,12 +24,11 @@
, upd_dt
, upd_id
FROM tb_input_xit
-- WHERE send_type='NI'
-- AND prcs_cd='TGRG';
where ORG_CD = '0005'
WHERE send_type = #{sendType}
AND prcs_cd = #{prcsCd}
</select>
<select id="selectNiceCiAcceptDatas" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputXit" resultType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputDataXit">
<select id="selectNiceCiAcceptDatas" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$NiceCiParam" resultType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputDataXit">
/** iup-niceci-mapper|selectNiceCiAcceptDatas-NICE CI 발송 대상 조회|julim */
SELECT data_id
, birthday
@ -53,29 +52,113 @@
WHERE lnk_input_id = #{lnkInputId}
</select>
<insert id="saveBill" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$BillDTO">
/** iup-niceci-mapper|saveBill-NICE CI 청구서 생성|julim */
<insert id="insertBill" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$BillDTO">
/** iup-niceci-mapper|insertBill-NICE CI 청구서 생성|julim */
INSERT INTO ens_bill (
bill_id,
bill_uid,
biller_user_key,
bill_se_cd,
-- doc_bill_kko,
-- doc_bill_nv,
org_cd,
biller_user_key,
-- paid_at,
-- paid_cancel_dt,
-- paid_dt,
-- paid_type,
regist_dt
) VALUES (
#{billId},
#{billUid},
#{billerUserKey},
#{billSeCd},
#{orgCd},
#{billerUserKey},
sysdate
) )
)
</insert>
<update id="updateBill" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$BillDTO">
UPDATE ens_bill
SET doc_bill_kko = #{docBillKko}
, paid_at = #{paidAt}
, paid_cancel_dt = #{paidCancelDt}
, paid_dt = #{paidDt}
, paid_type = #{paidType}
, last_updt_dt = sysdate
WHERE bill_id = #{billId}
</update>
<!--// FIXME: NICE CI INSERT UPDATE 항목 확인 적용 필요 -->
<insert id="saveBillKko" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$BillKkoDTO">
/** iup-niceci-mapper|saveBill-NICE CI 청구서 생성|julim */
MERGE INTO ens_bill_kko
USING DUAL
ON (bill_id = #{billId})
WHEN MATCHED THEN
UPDATE
SET amount = #{amount}
, details = #{details}
, url = #{url}
, title = #{title}
, expire_type = #{expireType}
, pay_expire_date = #{payExpireDate}
, second_pay_expire_date = #{secondPayExpireDate}
, billed_year_month = #{billedYearMonth}
, ordinal = #{ordinal}
, parameters = #{parameters}
, bank_accounts = #{bankAccounts}
, tax_free_amount = #{taxFreeAmount}
, vat_amount = #{vatAmount}
, last_paid_at = TO_CHAR(sysdate, 'YYYYMMDDHH24MISS')
, last_pay_id = #{lastPayId}
, error_code = #{errorCode}
, error_message = #{errorMessage}
, last_updt_dt = sysdate
WHEN NOT MATCHED THEN
INSERT (
bill_id,
bill_uid,
biller_user_key,
biller_notice_key,
custom_url,
expire_at,
regist_dt
) VALUES (
#{billId}
, #{billUid}
, #{billerUserKey}
, #{billerNoticeKey}
, #{customUrl}
, #{expireAt}
, sysdate
)
</insert>
<!--
amount,
details,
url,
title,
expire_type,
pay_expire_date,
second_pay_expire_date,
billed_year_month,
ordinal,
parameters,
bank_accounts,
tax_free_amount,
vat_amount,
last_paid_at,
last_pay_id,
error_code,
error_message,
last_updt_dt
-->
<update id="updatePayUrlOfDataInput" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputDataXit">
/** iup-niceci-mapper|updatePayUrlOfDataInput-payUrl update|julim */
UPDATE tb_input_data_xit
SET pay_url = #{payUrl}
WHERE lnk_input_id = #{lnkInputId}
</update>
<update id="updatePrcsCdOfInputXit" parameterType="cokr.xit.ens.modules.nice.model.NiceCiDTO$InputXit">
/** iup-niceci-mapper|updatePrcsCdOfInputXit-prcsCd update|julim */
UPDATE tb_input_xit
SET prcs_cd = #{prcsCd}
WHERE lnk_input_id = #{lnkInputId}
</update>
</mapper>

Loading…
Cancel
Save