package cn.abchinalife.om.controller.payment;
import cn.abchinalife.om.repository.om.LySendToFSUniqeNoDao;
import cn.abchinalife.om.repository.om.LyTransStatusDao;
import cn.abchinalife.om.repository.om.LyfslogDao;
import cn.abchinalife.om.repository.om.entity.*;
import cn.abchinalife.om.repository.om.entity.batchUUCP.ATS;
import cn.abchinalife.om.repository.om.entity.batchUUCP.IN;
import cn.abchinalife.om.repository.om.entity.batchUUCP.PUB;
import cn.abchinalife.om.repository.om.entity.batchUUCP.RD;
import cn.abchinalife.om.service.CheckFinshReturnService;
import cn.abchinalife.om.service.myservices.BatchRepeatedCheckService;
import cn.abchinalife.om.util.PubFun;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.TypeReference;
//import com.alibaba.fastjson.JSONReader;
/**
* Created by Ontheway on 2019/5/31.
*/
@Slf4j
@Controller
public class BachControllerReauest {
@Autowired
private BatchRepeatedCheckService batchRepeatedCheckService;
//記錄交易狀態與業務狀態
@Autowired
private LyTransStatusDao lyTransStatusDao;
@Autowired
private LyfslogDao lyfslogDao;
@Autowired LySendToFSUniqeNoDao lySendToFSUniqeNoDao;
private int port=0;
private int serverPort=0;
@ResponseBody
@RequestMapping(value = "/ws/bachController.do")
public String submitData(@RequestBody String jsonStr,HttpServletRequest request) throws IOException {
log.info("-----------submitData----------");
String callFlag="";
request.setCharacterEncoding("utf-8");
try {
String result = jsonStr;
log.info("result===="+result);
//ArrayList<ATS> atsList = JSON.parseObject(result, new TypeReference<ArrayList<ATS>>(){}); //轉換為集合對象
//ATS ATSInfo = atsList.get(0);
ATS ATSInfo = JSON.parseObject(result, new TypeReference<ATS>(){});
log.info("ATS:"+ATSInfo.toString());
PUB pub = ATSInfo.getPUB();
log.info(" pub.getAppId()"+pub.getAppId()+" pub.getTransSeq():"+pub.getTransSeq());
IN in = ATSInfo.getIN();
log.info("ATS:"+in.toString());
log.info("批次號:"+in.getBatchNo()+" 總金額:"+in.getTotalAmount()+" 總筆數:"+in.getTotalCount());
List<RD> rdList = in.getRD();
log.info("rdList.size():" + rdList.size());
for (int j=0;j<rdList.size();j++) {
RD rd = rdList.get(j);
//單條數據落地
dataLandingLyTransStatus(pub,in,rd);
dataLandingLyfslog(pub,in,rd);
//dataLandingLySendToFSUniqeNoInfo(pub,in,rd);
//封裝成對象 進行數據傳遞
LySendToFSInfo lySendToFSInfo = lySendToFSInfo(pub, in, rd);
log.info("lySendToFSInfo:"+j+" 次"+lySendToFSInfo);
//校驗數據
//batchRepeatedCheckService.doService(lySendToFSInfo);
}
callFlag="G88";
log.info("-------批次回調資金begin-----start");
CheckFinshReturnService batchReturn =new CheckFinshReturnService();
batchReturn.sendMessage(in.getBatchNo());
} catch (Exception e) {
callFlag="G00";
log.info("調用接口異常");
e.printStackTrace();
}
log.info("-------批次信息完成!-----end");
return callFlag;
}
//lyfslog 落庫
public Integer dataLandingLyfslog(PUB pub,IN in,RD rd){
Lyfslog lyfslog=new Lyfslog();
lyfslog.setTotalMoney(Double.parseDouble(in.getTotalAmount()));
lyfslog.setTotalNum(Integer.valueOf(in.getTotalCount()));
lyfslog.setModifyDate(Date.valueOf(PubFun.getCurrentDate()));
lyfslog.setModifyTime(PubFun.getCurrentTime());
log.info("pub.getTransDate():"+pub.getTransDate());
//lyfslog.setTransDate(Date.valueOf( pub.getTransDate()));
lyfslog.setBatchNo(in.getBatchNo());
lyfslog.setComCode(rd.getComCode());
lyfslog.setOperationType(rd.getDoType());//業務類型
/* lyfslog.setSuccMoney();
lyfslog.setSuccNum();//成功金額
lyfslog.setCheckMoney();
lyfslog.setCheckNum();
lyfslog.setCheckNum();
lyfslog.setDealState(); //處理狀態
lyfslog.setTransOperator(); //交易人*/
try {
batchRepeatedCheckService.insertLyfslog(lyfslog);
}catch (Exception ex){
log.info("添加Lyfslog數據異常");
ex.printStackTrace();
return 0;
}
return 1;
}
//LyTransStatus 落庫
public void dataLandingLyTransStatus(PUB pub,IN in,RD rd){
LyTransStatus lyTransStatus =new LyTransStatus();
/* LySendToFSInfo lysend = new LySendToFSInfo();
//封裝傳遞的數據
lysend.setBatchNo(in.getBatchNo());
lysend.setSerialNo(rd.getSerialNo());
lysend.setPolNo(rd.getPolNo());
lysend.setContNo(rd.getContNo());
//lysend.setUniqueNo();
lysend.setPayMoney(Double.valueOf(rd.getPayMoney()));
lysend.setAccName(rd.getAccName());
lysend.setAccNo(rd.getAccNo());
lysend.setAgentCode(rd.getBusinessType());
//lysend.setBusinessType(rd.getBusinessType());
lysend.setBusinessType("I0001"); //規則還未齊全 暫時寫死6.14
lysend.setBankCode(rd.getBankCode());
String uniqueNO = batchRepeatedCheckService.getUniqueComposition(rd.getBusinessType(),lysend);
if(!uniqueNO.equals("")&&uniqueNO !=null){
lyTransStatus.setSerialNo(uniqueNO); //全局唯一流水
}*/
lyTransStatus.setSerialNo(rd.getSerialNo()); //全局唯一流水
lyTransStatus.setBatchNo(in.getBatchNo());
//lyTransStatus.setSerialNo();
lyTransStatus.setSysFlag(pub.getSYSFlag());
lyTransStatus.setClientPort(String.valueOf(port));
lyTransStatus.setClientIP(String.valueOf(serverPort));
//lyTransStatus.setTransStatus();
lyTransStatus.setTransTime(pub.getTransTime());
String seq_uniqe_sn = batchRepeatedCheckService.getSEQ_UNIQE_SN();
log.info("seq_uniqe_sn:"+seq_uniqe_sn);
if(!seq_uniqe_sn.equals("")){
lyTransStatus.setTransSeq(seq_uniqe_sn); //交易流水號
}
lyTransStatus.setMakeDate(Date.valueOf(PubFun.getCurrentDate()));
lyTransStatus.setMakeTime(PubFun.getCurrentTime());
//lyTransStatus.setDescr();
lyTransStatus.setModifyDate(Date.valueOf(PubFun.getCurrentDate()));
lyTransStatus.setModifyTime(PubFun.getCurrentTime());
//lyTransStatus.setServiceCostTime();//交易耗時
lyTransStatus.setServiceStartTime(PubFun.getCurrentDate());//服務處理開始時間
//lyTransStatus.setServiceEndTime();
//lyTransStatus.setStatus(); //業務狀態
lyTransStatus.setSysCode(pub.getSYSCode());
//lyTransStatus.setTransDate(Date.valueOf(pub.getTransDate()));
try {
//新增數據
batchRepeatedCheckService.insertLyTransStatus(lyTransStatus);
}catch (Exception ex){
log.info("添加lyTransStatus數據異常");
ex.printStackTrace();
}
}
//LySendToFSUniqeNoInfo 落庫
public void dataLandingLySendToFSUniqeNoInfo(PUB pub,IN in,RD rd){
LySendToFSUniqeNoInfo lySendToFSUniqeNo = new LySendToFSUniqeNoInfo();
if(!rd.getXpayTimes().equals("")&&rd.getXpayTimes()!=null){
lySendToFSUniqeNo.setXpayTimes(Integer.parseInt(rd.getXpayTimes()));
}
//lySendToFSUniqeNo.setUniqueNo(); 全局唯一流水
lySendToFSUniqeNo.setTxID(rd.getTxID());
lySendToFSUniqeNo.setTempFeeNo(rd.getTempFeeNo());
lySendToFSUniqeNo.setSyscode(pub.getSYSCode());
//lySendToFSUniqeNo.setState();
log.info("rd.getShouldDate():"+rd.getShouldDate()+" rd.getSendDate():"+rd.getSendDate());
if(!rd.getShouldDate().equals("")&&rd.getShouldDate()!=null){
lySendToFSUniqeNo.setShouldDate( Date.valueOf(rd.getShouldDate()));//應付日期
}
lySendToFSUniqeNo.setSfflag(rd.getSFFlag());
//lySendToFSUniqeNo.setSendTimes();//發盤次數
lySendToFSUniqeNo.setSendDate(Date.valueOf(rd.getSendDate()));
lySendToFSUniqeNo.setPayType(rd.getPayType());
lySendToFSUniqeNo.setPayMoney(Double.valueOf(rd.getPayMoney()));
lySendToFSUniqeNo.setPayCode(rd.getPayCode());
lySendToFSUniqeNo.setName(rd.getName());
lySendToFSUniqeNo.setModifyTime(PubFun.getCurrentTime());
lySendToFSUniqeNo.setModifyDate(Date.valueOf(PubFun.getCurrentDate()));
lySendToFSUniqeNo.setInBankCode(rd.getInBankCode());
lySendToFSUniqeNo.setInAccType(rd.getInAccType());
lySendToFSUniqeNo.setInAccNo(rd.getInAccNo());
lySendToFSUniqeNo.setInAccName(rd.getInAccName());
lySendToFSUniqeNo.setEdorNo(rd.getEdorNo());
lySendToFSUniqeNo.setDoType(rd.getDoType());
lySendToFSUniqeNo.setDealType("1"); //0-實時 1-批量
lySendToFSUniqeNo.setConvertFlag(rd.getConvertFlag());
lySendToFSUniqeNo.setContNo(rd.getContNo());
lySendToFSUniqeNo.setClaimNo(rd.getCliamNo());
lySendToFSUniqeNo.setBusinessType(rd.getBusinessType());
lySendToFSUniqeNo.setBatchNo(in.getBatchNo());
//lySendToFSUniqeNo.setBankDealTime(); //銀行處理時間
//lySendToFSUniqeNo.setBankDealDate();
//lySendToFSUniqeNo.setBankSuccFlag();
lySendToFSUniqeNo.setBankCode(rd.getBankCode());
lySendToFSUniqeNo.setAccType(rd.getAccType());
lySendToFSUniqeNo.setAccNo(rd.getAccNo());
lySendToFSUniqeNo.setAccName(rd.getAccName());
//lySendToFSUniqeNo.setAbstract(); //對賬碼
try {
//新增數據
batchRepeatedCheckService.insertLySendToFSUniqeNoInfo(lySendToFSUniqeNo);
}catch (Exception ex){
log.info("添加LySendToFSUniqeNo數據異常");
ex.printStackTrace();
}
}
//獲取json解析數據 封裝成對象 進行數據傳遞
public LySendToFSInfo lySendToFSInfo(PUB pub,IN in,RD rd){
LySendToFSInfo lysend = new LySendToFSInfo();
//封裝傳遞的數據
lysend.setSerialNo(rd.getSerialNo());
lysend.setBatchNo(in.getBatchNo());
lysend.setPolNo(rd.getPolNo());
lysend.setContNo(rd.getContNo());
lysend.setPayMoney(Double.valueOf(rd.getPayMoney()));
lysend.setAccName(rd.getAccName());
lysend.setAccNo(rd.getAccNo());
lysend.setAccType(rd.getAccType());
lysend.setAgentCode(rd.getBusinessType());
lysend.setBankCode(rd.getBankCode());
//lysend.setBankDealDate();
//lysend.setAbstract();
if(!rd.getXpayTimes().equals("")&&rd.getXpayTimes()!=null){
lysend.setXpayTimes(Integer.valueOf(rd.getXpayTimes()));
}
lysend.setTxID(rd.getTxID());
lysend.setTempFeeNo(rd.getTempFeeNo());
lysend.setSysCode(pub.getSYSCode());
//lySendToFSUniqeNo.setState();
if(!rd.getShouldDate().equals("")&&rd.getShouldDate()!=null){
lysend.setShouldDate( Date.valueOf(rd.getShouldDate()));//應付日期
}
lysend.setSfFlag(rd.getSFFlag());
//lySendToFSUniqeNo.setSendTimes();//發盤次數
lysend.setSendDate(Date.valueOf(rd.getSendDate()));
lysend.setPayType(rd.getPayType());
lysend.setPayMoney(Double.valueOf(rd.getPayMoney()));
lysend.setPayCode(rd.getPayCode());
lysend.setName(rd.getName());
lysend.setModifyTime(PubFun.getCurrentTime());
lysend.setModifyDate(Date.valueOf(PubFun.getCurrentDate()));
lysend.setInBankCode(rd.getInBankCode());
lysend.setInAccType(rd.getInAccType());
lysend.setInAccNo(rd.getInAccNo());
lysend.setInAccName(rd.getInAccName());
lysend.setEdorNo(rd.getEdorNo());
lysend.setDoType(rd.getDoType());
lysend.setDealType("1"); //0-實時 1-批量
lysend.setConvertFlag(rd.getConvertFlag());
lysend.setContNo(rd.getContNo());
lysend.setClaimNo(rd.getCliamNo());
lysend.setBusinessType(rd.getBusinessType());
lysend.setBatchNo(in.getBatchNo());
/* lysend.setBankDealTime(); //銀行處理時間
lysend.setBankDealDate();
lysend.setBankSuccFlag();*/
lysend.setBankCode(rd.getBankCode());
lysend.setAccType(rd.getAccType());
lysend.setAccNo(rd.getAccNo());
lysend.setAccName(rd.getAccName());
//lysend.setAbstract(); //對賬碼
String uniqueNO = batchRepeatedCheckService.getUniqueComposition(rd.getBusinessType(),lysend);
if(!uniqueNO.equals("")&&uniqueNO !=null){
lysend.setUniqueNo(uniqueNO); //全局唯一流水
}
return lysend;
}
}