fs-danaus
2021-08-27 35603c9d2edd3ba95f80a90d2a6cafd0caf5b1b8
提交 | 用户 | age
251add 1 package com.yc.abc.service;
F 2
3 import com.abc.pay.client.JSON;
4 import com.abc.pay.client.ebus.PaymentResult;
5 import com.yc.abc.entity.OrderEntity;
6 import com.yc.api.bean.MatGroupEntity;
7 import com.yc.api.bean.ProducParmBean;
8 import com.yc.api.bean.T120330;
9 import com.yc.exception.ApplicationException;
10 import com.yc.sdk.shopping.entity.MatCodeEntity;
11 import com.yc.service.BaseService;
12 import com.yc.service.grid.GridServiceIfc;
13 import org.apache.commons.lang3.StringUtils;
14 import org.apache.logging.log4j.core.impl.ReusableLogEventFactory;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
17 import org.springframework.beans.factory.annotation.Autowired;
18 import org.springframework.dao.DataAccessException;
19 import org.springframework.dao.EmptyResultDataAccessException;
20 import org.springframework.jdbc.core.BeanPropertyRowMapper;
21 import org.springframework.stereotype.Service;
81ff30 22 import org.springframework.transaction.annotation.Transactional;
251add 23
81ff30 24 import java.io.UnsupportedEncodingException;
251add 25 import java.util.ArrayList;
81ff30 26 import java.util.Base64;
251add 27 import java.util.List;
F 28 import java.util.Map;
29
30 @Service
31 public class AbcPayServiceImpl extends BaseService implements AbcPayServiceIfc {
32
33     @Autowired
34     GridServiceIfc mGridServiceIfc;
35     private final Logger log = LoggerFactory.getLogger(this.getClass());
36
37     @Override
38     public OrderEntity getOrder(String docCode) {
39         try {
40             return this.jdbcTemplate.queryForObject("set nocount on\n" +
35603c 41                     " select a.doccode as orderNo,a.SumAmount as amount,a.cltCode,a.cltName,b.companyName,a.onlinePaymentOneQRForAllUnid,a.onlinePaymentReturnCode \n" +
F 42                     " from t150101H a join oCompany b on a.CompanyID=b.companyid where DocCode=?", new BeanPropertyRowMapper<>(OrderEntity.class), docCode);
251add 43         }catch (EmptyResultDataAccessException e){
F 44             return  null;
45         }
46     }
35603c 47
F 48     @Override
49     public void save150101OrderInfo(JSON json, String qrCodeUnid) {
50         String sql="set  nocount on\n" +
51                 " declare @ReturnCode varchar(20)=?,@ErrorMessage varchar(200)=?,@PaymentURL varchar(200)=?,@qrCodeUnid varchar(50)=?" +
52                 " update a set a.OnlinePaymentReturnCode=@ReturnCode,a.OnlinePaymentErrorMessage=@ErrorMessage,a.OnlinePaymentURL=@PaymentURL,a.OnlinePaymentOneQRForAllUnid=@qrCodeUnid  from t150101H a where a.docCode=?";
53         jdbcTemplate.update(sql,json.GetKeyValue("ReturnCode"),json.GetKeyValue("ErrorMessage"),json.GetKeyValue("PaymentURL"),qrCodeUnid,json.GetKeyValue("OrderNo"));
54     }
55
81ff30 56     @Transactional(rollbackFor = Exception.class)
251add 57     @Override
F 58     public void save150101Log(PaymentResult paymentResult) {
59         String sql = "set nocount on\n" +
81ff30 60                 " declare @MerchantID varchar(50)=?,@TrxType varchar(50)=?,@RefDoccode varchar(150)=?,@Amount money=?,@BatchNo varchar(50)=?,@VoucherNo varchar(50)=?,@HostDate varchar(50)=?,@HostTime varchar(50)=?,@MerchantRemarks varchar(150)=?,@PayType varchar(50)=?,@NotifyType varchar(50)=?,@iRspRef varchar(50)=?,@bank_type varchar(50)=?,@ThirdOrderNo varchar(50)=?,@status varchar(10)=? \n" +
251add 61                 //写日志
F 62                 //不存在才执行
63                 " if not exists( select 1 from t150101Log where RefDoccode=@RefDoccode) \n" +
64                 "     begin \n " +
81ff30 65                 " insert into t150101Log(MerchantID,TrxType,RefDoccode,Amount,BatchNo,VoucherNo,HostDate,HostTime,MerchantRemarks,PayType,NotifyType,iRspRef,bank_type,ThirdOrderNo,refFormid,refFormType,InsertTime,status) values(@MerchantID,@TrxType,@RefDoccode,@Amount,@BatchNo,@VoucherNo,@HostDate,@HostTime,@MerchantRemarks,@PayType,@NotifyType,@iRspRef,@bank_type,@ThirdOrderNo,150101,496,getDate(),@status) \n" +
251add 66                 " end\n";
F 67         this.jdbcTemplate.update(sql,
68                 paymentResult.getValue("MerchantID"),
69                 paymentResult.getValue("TrxType"),
70                 paymentResult.getValue("OrderNo"),
71                 paymentResult.getValue("Amount"),
72                 paymentResult.getValue("BatchNo"),
73                 paymentResult.getValue("VoucherNo"),
74                 paymentResult.getValue("HostDate"),
75                 paymentResult.getValue("HostTime"),
76                 paymentResult.getValue("MerchantRemarks"),
77                 paymentResult.getValue("PayType"),
78                 paymentResult.getValue("NotifyType"),
79                 paymentResult.getValue("iRspRef"),
80                 paymentResult.getValue("bank_type"),
81ff30 81                 paymentResult.getValue("ThirdOrderNo"),null
251add 82         );
F 83     }
81ff30 84     private String updaePaySql(){
251add 85         StringBuilder sql = new StringBuilder();
F 86
87         sql.append("set nocount on\n" +
88                 " declare @MerchantID varchar(50)=?,@TrxType varchar(50)=?,@RefDoccode varchar(150)=?,@Amount money=?,@BatchNo varchar(50)=?,@VoucherNo varchar(50)=?,@HostDate varchar(50)=?,@HostTime varchar(50)=?,@MerchantRemarks varchar(150)=?,@PayType varchar(50)=?,@NotifyType varchar(50)=?,@iRspRef varchar(50)=?,@bank_type varchar(50)=?,@ThirdOrderNo varchar(50)=?,@status varchar(10)=?,@isUpdateLog int = 0 ,@isUpdateDocCode int = 0,@CurrentDocCodeStatus int = 0 \n" +
89                 //写日志
90                 //不存在才执行
81ff30 91                 " if  exists( select 1 from t150101log where RefDoccode=@RefDoccode) \n" +
251add 92                 "     begin \n " +
81ff30 93                 " update a set  a.MerchantID=@MerchantID,a.RefDoccode=@RefDoccode,a.Amount=@Amount,a.BatchNo=@BatchNo,a.VoucherNo=@VoucherNo,a.HostDate=@HostDate,a.HostTime=@HostTime,a.MerchantRemarks=@MerchantRemarks,a.PayType=@PayType,a.NotifyType=@NotifyType,a.iRspRef=@iRspRef,a.bank_type=@bank_type,a.ThirdOrderNo=@ThirdOrderNo,a.refFormid=150101,a.refFormType=496,a.InsertTime=getDate(),a.status=@status  from t150101log a where a.RefDoccode=@RefDoccode\n" +
F 94                 " end else \n" +
95                 " begin\n" +
251add 96                 " insert into t150101log(MerchantID,TrxType,RefDoccode,Amount,BatchNo,VoucherNo,HostDate,HostTime,MerchantRemarks,PayType,NotifyType,iRspRef,bank_type,ThirdOrderNo,refFormid,refFormType,InsertTime,status) values(@MerchantID,@TrxType,@RefDoccode,@Amount,@BatchNo,@VoucherNo,@HostDate,@HostTime,@MerchantRemarks,@PayType,@NotifyType,@iRspRef,@bank_type,@ThirdOrderNo,150101,496,getDate(),@status) \n" +
81ff30 97                 " end" +
251add 98                 " select @isUpdateLog = @@rowcount \n" +
81ff30 99                 "  declare @cltCode varchar(50),@cltName varchar(50) ,@FormId int, @DocStatusValue int,@PreDocStatus int,@PostDocStatus int,@Memo varchar(50), @LinkDocInfo varchar(50)\n " +
251add 100                         //取cltCode,cltName
F 101                         "  select @cltCode=cltCode,@cltName=cltName,@FormId = FormId,@DocStatusValue = DocStatus from t150101H where docCode=@RefDoccode \n" +
102                         //执行150101过账
103                         "     select @PreDocStatus = PreDocStatus,@PostDocStatus = a.PostDocStatus from gform a where a.formid = @FormId \n")
104                 .append(" if isnull(@DocStatusValue,0) = isnull(@PreDocStatus,0) \n"
105                         + " begin \n"
106                         + "    update a set DocStatus = @PostDocStatus,PostCode=@CltCode,PostName=@CltName,PostDate=getdate() \n" +
107                         "      from t150101H a where a.DocCode = @RefDoccode \n"
108                         + "    exec p150101Post @UserCode = @cltCode,@UserName = @cltName, \n"
109                         + "        @DocCode = @RefDoccode,@FormID = @FormId,\n"
110                         + "         @DocStatusValue = @DocStatusValue,@ButtonType ='提交', \n"
111                         + "        @Memo=@Memo output ,@LinkDocInfo = @LinkDocInfo output  \n" +
112                         "      select @isUpdateDocCode = 1 \n"
81ff30 113                         + " end \n" );
251add 114         return sql.toString();
F 115     }
81ff30 116     @Transactional(rollbackFor = Exception.class)
251add 117     @Override
81ff30 118     public void update150101LogByCallBack(PaymentResult paymentResult) {
251add 119
81ff30 120         this.jdbcTemplate.update(updaePaySql(),
251add 121                 paymentResult.getValue("MerchantID"),
F 122                 paymentResult.getValue("TrxType"),
123                 paymentResult.getValue("OrderNo"),
124                 paymentResult.getValue("Amount"),
125                 paymentResult.getValue("BatchNo"),
126                 paymentResult.getValue("VoucherNo"),
127                 paymentResult.getValue("HostDate"),
128                 paymentResult.getValue("HostTime"),
129                 paymentResult.getValue("MerchantRemarks"),
130                 paymentResult.getValue("PayType"),
131                 paymentResult.getValue("NotifyType"),
132                 paymentResult.getValue("iRspRef"),
133                 paymentResult.getValue("bank_type"),
134                 paymentResult.getValue("ThirdOrderNo"),"03"
135         );
136
81ff30 137     }
F 138     @Transactional(rollbackFor = Exception.class)
139     @Override
140     public void update150101LogByQuery(JSON paymentResult,String merchantID,String trxType) {
141
142         this.jdbcTemplate.update(updaePaySql(),
143                 merchantID,
144                 trxType,
145                 paymentResult.GetKeyValue("OrderNo"),
146                 paymentResult.GetKeyValue("OrderAmount"),
147                 paymentResult.GetKeyValue("BatchNo"),
148                 paymentResult.GetKeyValue("VoucherNo"),
149                 paymentResult.GetKeyValue("OrderDate"),
150                 paymentResult.GetKeyValue("OrderTime"),
151                 paymentResult.GetKeyValue("MerchantRemarks"),
152                 paymentResult.GetKeyValue("PayTypeID"),
153                 paymentResult.GetKeyValue("NotifyType"),
154                 paymentResult.GetKeyValue("iRspRef"),
155                 paymentResult.GetKeyValue("PayTypeID"),
156                 paymentResult.GetKeyValue("ThirdOrderNo"),
157                 paymentResult.GetKeyValue("Status")
158         );
159
160     }
161     @Transactional(rollbackFor = Exception.class)
162     @Override
163     public void save150101LogByQrCode(JSON paymentResult,String merchantID) {
164         String sql="set nocount on\n" +
165                 " declare @MerchantID varchar(50)=?,@TrxType varchar(50)=?,@RefDoccode varchar(150)=?,@Amount money=?,@BatchNo varchar(50)=?,@VoucherNo varchar(50)=?,@HostDate varchar(50)=?,@HostTime varchar(50)=?,@MerchantRemarks varchar(150)=?,@PayType varchar(50)=?,@NotifyType varchar(50)=?,@iRspRef varchar(50)=?,@bank_type varchar(50)=?,@ThirdOrderNo varchar(50)=?,@status varchar(10)=?,@isUpdateLog int = 0 ,@isUpdateDocCode int = 0,@CurrentDocCodeStatus int = 0 \n" +
166                 //写日志
167                 //不存在才执行
168                 " if not exists( select 1 from t150101log where RefDoccode=@RefDoccode) \n" +
169                 "     begin \n " +
170                 " insert into t150101log(MerchantID,TrxType,RefDoccode,Amount,BatchNo,VoucherNo,HostDate,HostTime,MerchantRemarks,PayType,NotifyType,iRspRef,bank_type,ThirdOrderNo,refFormid,refFormType,InsertTime,status) values(@MerchantID,@TrxType,@RefDoccode,@Amount,@BatchNo,@VoucherNo,@HostDate,@HostTime,@MerchantRemarks,@PayType,@NotifyType,@iRspRef,@bank_type,@ThirdOrderNo,150101,496,getDate(),@status) end\n" ;
171         jdbcTemplate.update(sql,
172                 merchantID,
251add 173                 paymentResult.GetKeyValue("TrxType"),
F 174                 paymentResult.GetKeyValue("OrderNo"),
175                 paymentResult.GetKeyValue("OrderAmount"),
176                 paymentResult.GetKeyValue("BatchNo"),
177                 paymentResult.GetKeyValue("VoucherNo"),
178                 paymentResult.GetKeyValue("OrderDate"),
179                 paymentResult.GetKeyValue("OrderTime"),
180                 paymentResult.GetKeyValue("MerchantRemarks"),
181                 paymentResult.GetKeyValue("PayTypeID"),
182                 paymentResult.GetKeyValue("NotifyType"),
183                 paymentResult.GetKeyValue("iRspRef"),
184                 paymentResult.GetKeyValue("PayTypeID"),
185                 paymentResult.GetKeyValue("ThirdOrderNo"),
186                 paymentResult.GetKeyValue("Status")
187         );
81ff30 188     }
F 189
190     @Override
191     public List<String> getPayOrderNoByLog() {
192         String sql="set nocount  on\n" +
193                 " select refdoccode from t150101log where isnull(status,'')=''";
194         return jdbcTemplate.queryForList(sql,String.class);
251add 195     }
F 196 }