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;
}
}