package com.xx.epolicy.jobService.impl;
import com.alibaba.fastjson.JSON;
import com.xx.epolicy.config.propertiesConfig.UploadFtpConfig;
import com.xx.epolicy.constant.Const;
import com.xx.epolicy.imageInterface.*;
import com.xx.epolicy.jobService.PolicyBackBankService;
import com.xx.epolicy.mapper.epolicy.PolicyInfoMapper;
import com.xx.epolicy.mapper.epolicy.PolicyUploadMapper;
import com.xx.epolicy.pojo.po.PolicyInfo;
import com.xx.epolicy.pojo.po.TbFeedbackBankTemp;
import com.xx.epolicy.util.FTPUtil;
import com.xx.epolicy.util.PdfUtil;
import com.xx.epolicy.util.Utils;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import org.apache.commons.httpclient.util.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Locale;
import java.util.stream.Collectors;
@Service
public class PolicyBackBankServiceImpl implements PolicyBackBankService {
private final static Logger logger = LoggerFactory.getLogger(PolicyBackBankServiceImpl.class);
@Autowired
private PolicyUploadMapper policyUploadMapper;
@Autowired
private ImageOperation imageOperation;
@Autowired
private UploadFtpConfig uploadFtpConfig;
@Autowired
private PolicyInfoMapper policyInfoMapper;
/**
* 进行回传招xx处理
* @throws Exception
*/
@Override
public void backCmbcBank() throws Exception {
List<TbFeedbackBankTemp> policyInfo =policyUploadMapper.getPolicyCmbcBankData();
if(policyInfo==null || policyInfo.size()<0){
return;
}
// PolicyBackBank bankInfo =new PolicyBackBank();
for (int i=0;i<policyInfo.size();i++){
TbFeedbackBankTemp info= policyInfo.get(i);
ImageFile imageFile = ImageFactory.getDownImageFile(info.getImagePdfDocId(), Const.POLICY_BARCODE);
ImageDoc imageDoc = ImageFactory.getDoc(imageFile, Const.DOWNLOAD);
InputStream input = null;
FileOutputStream downloadFile = null;
try {
imageOperation.downLoadImage(imageDoc);
input = imageFile.getImagePageList().get(0).getFileInputStream();
String filename=info.getPolicyNo()+".pdf";
String PolicyPdfPaths ="/mnt/nfs/app_files/epolicy/";
File PdfPath = new File(PolicyPdfPaths);
if (!PdfPath.exists()) {
if (PdfPath.mkdirs()) {
logger.debug("目录["+PdfPath+"]创建成功");
} else {
logger.error("目录["+PdfPath+"]创建失败");
}
}
String destination=PolicyPdfPaths+filename;
int index;
byte[] bytes = new byte[1024];
downloadFile = new FileOutputStream(destination);
while ((index = input.read(bytes)) != -1) {
downloadFile.write(bytes, 0, index);
downloadFile.flush();
}
uploadToCmbcBankFTP(destination);
policyUploadMapper.updatePolicBackCmbcBankInfo(info.getPolicyInfoId());
policyUploadMapper.insertAddCmbcInfo(info);
} catch (Exception e) {
throw new ImageException("获取PDF文件异常" + e, e);
} finally {
if (null!= input){
input.close();
}
if (null != downloadFile){
downloadFile.close();
}
}
}
}
/**
* 取需要回传招xx的数据
* @throws Exception
*/
@Override
public void InsertPolicybackCmbcBank() throws Exception {
SimpleDateFormat sj = new SimpleDateFormat("yyyyMMdd");
String time=sj.format(new Date())+"";
policyUploadMapper.getBackCmbcBank(time);
}
/**
* 回传后上传至招xxFTP
* @throws Exception
*/
private void uploadToCmbcBankFTP(String path) throws Exception {
//获取上传文件流与文件名
InputStream input=new FileInputStream(new File(path));
String filename=new File(path).getName();
String ftpAddr = "";
String ftpUser = "";
String ftpPass = "";
String cmbTime = DateUtil.formatDate(new Date(), "yyyyMMdd");
// String cmbPath= uploadFtpConfig.getUpLoadEpolicyPath()+cmbTime;
ftpAddr = uploadFtpConfig.getUpLoadEpolicyCmbAddrs()+cmbTime;
ftpUser = uploadFtpConfig.getUpLoadEpolicyUserName();
ftpPass = uploadFtpConfig.getUpLoadEpolicyPassword();
URL url = new URL(ftpAddr);
int port=url.getPort()>0?url.getPort():21;
FTPUtil.uploadCMBFtpFile(url.getHost(),port,ftpUser, ftpPass, url.getPath(), filename, input);
}
/**
* 取需要回传民生xx的数据,此处仅用于处理民生xx历史数据从临时表中回传
* @throws Exception
*/
@Override
public void InsertPolicybackCmsbBank() throws Exception {
SimpleDateFormat sj = new SimpleDateFormat("yyyyMMdd");
String time=sj.format(new Date())+"";
policyUploadMapper.getBackCmsbBank(time);
}
/**
* 进行回传民生xx处理,此处仅用于处理民生xx历史数据从临时表中回传
* @throws Exception
*/
@Override
public void backCmsbBank() throws Exception {
List<TbFeedbackBankTemp> policyInfoList =policyUploadMapper.getPolicyCmsbBankData();
if(policyInfoList==null || policyInfoList.size()<0){
return;
}
String PolicyPdfPaths ="/mnt/nfs/app_files/epolicy/";
File PdfPath = new File(PolicyPdfPaths);
if (!PdfPath.exists()) {
if (PdfPath.mkdirs()) {
logger.debug("目录["+PdfPath+"]创建成功");
} else {
logger.error("目录["+PdfPath+"]创建失败");
}
}
//历史数据回传放到下一天的路径
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, 1);
String afterDate = Utils.formatDate(calendar.getTime(), "yyyyMMdd");
for (int i=0;i<policyInfoList.size();i++){
TbFeedbackBankTemp info= policyInfoList.get(i);
// 根据保单id查询保单详情,用于脱敏
PolicyInfo policy = policyInfoMapper.getPolicyInfoById(info.getPolicyInfoId());
//logger.info("回传历史保单开始:"+ JSON.toJSONString(policy));
//脱敏前的文件名
String tempFilename=policy.getPolicyNo()+".pdf";
String tempPdf=PolicyPdfPaths+tempFilename;
//脱敏后的文件名
String filename="CMBC_0039_DZBD_"+afterDate+"_"+policy.getPolicyNo()+".pdf";
String destinationPdf=PolicyPdfPaths+filename;
//列表清单文件名
String listFilename="CMBC_0039_DZBD_LIST_"+afterDate+".txt";
String listFile=PolicyPdfPaths+listFilename;
try {
//从影像系统下载保险合同
downLoadImagePdf(policy,tempPdf);
//进行脱敏处理【渠道代码为:1)事业部01且渠道3为00的新单及重出单;2)事业部01且渠道3为非00的重出单;均需调取影像件,影像件需隐藏客户信息部分(只需隐藏投保单第一页),其他部分正常展示】
Integer pageNumber=null;
if((!StringUtils.isEmpty(policy.getChannelCode()) && policy.getChannelCode().endsWith("00") && !StringUtils.isEmpty(policy.getImage()) && "Y".equals(policy.getImage()))
||(!StringUtils.isEmpty(policy.getChannelCode()) && !policy.getChannelCode().endsWith("00") && !StringUtils.isEmpty(policy.getImage()) && "Y".equals(policy.getImage())
&& !StringUtils.isEmpty(policy.getReappearStatusIdentification()) && "1".equals(policy.getReappearStatusIdentification())) //保单状态标识 0:新单 1:重出 2:续保
) {
pageNumber = getNeedImage(tempPdf);
logger.info("银保脱机单的影像件在pdf的第"+ pageNumber+"页");
}
PdfUtil.pdfReplace(tempPdf, destinationPdf, pageNumber, policy);
//上传保险合同至民生xxFTP
uploadToCmsbBankFTP(destinationPdf,afterDate);
//上传列表清单至民生xxFTP
uploadListToCmsbBankFtp(listFile, policy, filename,afterDate);
//回传后修改状态,进行数据记录
policyUploadMapper.updatePolicBackCmsbBankInfo(policy.getPolicyInfoId());
policyUploadMapper.insertAddCmsbInfo(info);
} catch (Exception e) {
logger.error("回传历史保单异常,获取PDF文件异常" + e);
continue;
//throw new ImageException("获取PDF文件异常" + e, e);
}
}
}
/**
* 进行回传民生xx处理
* @throws Exception
*/
@Override
public void backMsbBank() {
Map paramMap = new HashMap();
paramMap.put("batchNo", Utils.formatDate(new Date(), "yyyyMMdd"));
List<PolicyInfo> policyInfoList =policyUploadMapper.getPolicyMsbBankData(paramMap);
List<PolicyInfo> policyInfoList2 =policyUploadMapper.getPolicyMsbBankData2();
policyInfoList.addAll(policyInfoList2);
policyInfoList =filterDataList(policyInfoList);
if(policyInfoList==null || policyInfoList.size()<=0){
return;
}
String PolicyPdfPaths ="/mnt/nfs/app_files/epolicy/";
File PdfPath = new File(PolicyPdfPaths);
if (!PdfPath.exists()) {
if (PdfPath.mkdirs()) {
logger.debug("目录["+PdfPath+"]创建成功");
} else {
logger.error("目录["+PdfPath+"]创建失败");
}
}
String currentDate = Utils.formatDate(new Date(), "yyyyMMdd");
logger.info("待回传前一天民生xx的数据:"+ policyInfoList.size()+"条");
//设置每次回传20单
int count =20;
count =policyInfoList.size()>count?count:policyInfoList.size();
for (int i=0;i<count;i++){
PolicyInfo policy= policyInfoList.get(i);
logger.info("回传前一天保单开始:"+ policy.getPolicyNo()+","+policy.getPolicyInfoId());
//脱敏前的文件名
String tempFilename=policy.getPolicyNo()+".pdf";
String tempPdf=PolicyPdfPaths+tempFilename;
//脱敏后的文件名
String filename="CMBC_0039_DZBD_"+currentDate+"_"+policy.getPolicyNo()+".pdf";
String destinationPdf=PolicyPdfPaths+filename;
//列表清单文件名
String listFilename="CMBC_0039_DZBD_LIST_"+currentDate+".txt";
String listFile=PolicyPdfPaths+listFilename;
try {
//从影像系统下载保险合同
downLoadImagePdf(policy,tempPdf);
//进行脱敏处理【渠道代码为:1)事业部01且渠道3为00的新单及重出单;2)事业部01且渠道3为非00的重出单;均需调取影像件,影像件需隐藏客户信息部分(只需隐藏投保单第一页),其他部分正常展示】
Integer pageNumber=null;
if((!StringUtils.isEmpty(policy.getChannelCode()) && policy.getChannelCode().endsWith("00") && !StringUtils.isEmpty(policy.getImage()) && "Y".equals(policy.getImage()))
||(!StringUtils.isEmpty(policy.getChannelCode()) && !policy.getChannelCode().endsWith("00") && !StringUtils.isEmpty(policy.getImage()) && "Y".equals(policy.getImage())
&& !StringUtils.isEmpty(policy.getReappearStatusIdentification()) && "1".equals(policy.getReappearStatusIdentification())) //保单状态标识 0:新单 1:重出 2:续保
) {
pageNumber = getNeedImage(tempPdf);
logger.info("银保脱机单的影像件在pdf的第"+ pageNumber+"页");
}
PdfUtil.pdfReplace(tempPdf, destinationPdf, pageNumber, policy);
//上传保险合同至民生xxFTP
uploadToCmsbBankFTP(destinationPdf,currentDate);
//上传列表清单至民生xxFTP
uploadListToCmsbBankFtp(listFile, policy, filename,currentDate);
//回传后进行数据记录
insertAddCmsbInfo(policy);
logger.info("回传前一天保单结束");
} catch (Exception e) {
logger.error("回传前一天保单异常" + e);
continue;
}
}
}
/**
* 进行重新回传民生xx处理
* @throws Exception
*/
@Override
public void backMsbBankAgain() throws Exception{
//从民生xxFTP取失败清单
List<PolicyInfo> policyInfoList = getPolicyDataAgain();
policyInfoList =filterDataList(policyInfoList);
if(policyInfoList==null || policyInfoList.size()<=0){
return;
}
String PolicyPdfPaths ="/mnt/nfs/app_files/epolicy/";
File PdfPath = new File(PolicyPdfPaths);
if (!PdfPath.exists()) {
if (PdfPath.mkdirs()) {
logger.debug("目录["+PdfPath+"]创建成功");
} else {
logger.error("目录["+PdfPath+"]创建失败");
}
}
String currentDate = Utils.formatDate(new Date(), "yyyyMMdd");
logger.info("待重新回传民生xx的数据:"+ policyInfoList.size()+"条");
//设置每次回传20单
int count =20;
count =policyInfoList.size()>count?count:policyInfoList.size();
for (int i=0;i<count;i++){
PolicyInfo policy= policyInfoList.get(i);
logger.info("重新回传保单开始:"+ policy.getPolicyNo()+","+policy.getPolicyInfoId());
//脱敏前的文件名
String tempFilename=policy.getPolicyNo()+".pdf";
String tempPdf=PolicyPdfPaths+tempFilename;
//脱敏后的文件名
String filename="CMBC_0039_DZBD_"+currentDate+"_"+policy.getPolicyNo()+".pdf";
String destinationPdf=PolicyPdfPaths+filename;
//列表清单文件名
String listFilename="CMBC_0039_DZBD_LIST_"+currentDate+".txt";
String listFile=PolicyPdfPaths+listFilename;
try {
//从影像系统下载保险合同
downLoadImagePdf(policy,tempPdf);
//进行脱敏处理【渠道代码为:1)事业部01且渠道3为00的新单及重出单;2)事业部01且渠道3为非00的重出单;均需调取影像件,影像件需隐藏客户信息部分(只需隐藏投保单第一页),其他部分正常展示】
Integer pageNumber=null;
if((!StringUtils.isEmpty(policy.getChannelCode()) && policy.getChannelCode().endsWith("00") && !StringUtils.isEmpty(policy.getImage()) && "Y".equals(policy.getImage()))
||(!StringUtils.isEmpty(policy.getChannelCode()) && !policy.getChannelCode().endsWith("00") && !StringUtils.isEmpty(policy.getImage()) && "Y".equals(policy.getImage())
&& !StringUtils.isEmpty(policy.getReappearStatusIdentification()) && "1".equals(policy.getReappearStatusIdentification())) //保单状态标识 0:新单 1:重出 2:续保
) {
pageNumber = getNeedImage(tempPdf);
logger.info("银保脱机单的影像件在pdf的第"+ pageNumber+"页");
}
PdfUtil.pdfReplace(tempPdf, destinationPdf, pageNumber, policy);
//上传保险合同至民生xxFTP
uploadToCmsbBankFTP(destinationPdf,currentDate);
//上传列表清单至民生xxFTP
uploadListToCmsbBankFtp(listFile, policy, filename,currentDate);
//回传后进行数据记录
insertAddCmsbInfo(policy);
logger.info("重新回传保单结束:"+ policy.getPolicyNo()+","+policy.getPolicyInfoId());
} catch (Exception e) {
logger.error("重新回传保单异常" + e);
continue;
}
}
}
/**
* 从民生xxFTP下载失败清单
* @throws Exception
*/
private void downloadFailListFile(String path, String filename, String cmbTime) throws Exception {
logger.info("下载失败清单开始:"+ path);
String ftpAddr = "";
String ftpUser = "";
String ftpPass = "";
//从ftp上下载前一天失败的清单文件
// String cmbPath= uploadFtpConfig.getUpLoadMsbPath()+cmbTime;
ftpAddr = uploadFtpConfig.getUpLoadMsbAddrs()+cmbTime;
ftpUser = uploadFtpConfig.getUpLoadMsbUserName();
ftpPass = uploadFtpConfig.getUpLoadMsbPassword();
URL url = new URL(ftpAddr);
int port=url.getPort()>0?url.getPort():21;
FTPUtil.downOneFileFromFtp(url.getHost(),port,ftpUser,ftpPass,url.getPath(),filename, path);
logger.info("下载失败清单结束");
}
/**
* 读取前一天的失败清单,查询需重新回传的保单
* @throws Exception
*/
private List<PolicyInfo> getPolicyDataAgain() throws Exception{
List<PolicyInfo> policyInfoList =new ArrayList<>();
List<String> policyNos =new ArrayList<>();
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, -1);
String beforeDate = Utils.formatDate(calendar.getTime(), "yyyyMMdd");
String PolicyPdfPaths ="/mnt/nfs/app_files/epolicy/";
//失败清单文件名
String failFilename="CMBC_0039_DZBD_CHECK_"+beforeDate+".txt";
String failFile=PolicyPdfPaths+failFilename;
logger.info("读取失败清单开始:"+ failFile);
BufferedReader in =null;
try {
//判断是否已下载失败清单
File file = new File(failFile);
if (!file.exists()) {
//当日触发定时任务跑第一批下载失败清单到本地
logger.info("下载失败清单路径名称:" + failFile);
downloadFailListFile(PolicyPdfPaths, failFilename, beforeDate);
} else {
//由于没权限从本地nfs的路径删除,所以重新下载,方便测试
//downloadFailListFile(PolicyPdfPaths, failFilename, beforeDate);
//根据失败清单查询保单重新上传
in = new BufferedReader(new FileReader(failFile));
String line = null;
while ((line = in.readLine()) != null) {
if (!StringUtils.isEmpty(line) && line.startsWith(Const.CMBS_CODE)) {
//首行 0039|1|
} else {
String[] split = line.split("\\|");
policyNos.add(split[1]);
}
}
in.close();
}
if (policyNos != null && policyNos.size() > 0) {
Map paramMap = new HashMap();
paramMap.put("batchNo", Utils.formatDate(new Date(), "yyyyMMdd"));
paramMap.put("policyNos", policyNos);
policyInfoList = policyUploadMapper.getPolicyMsbBankDataAgain(paramMap);
}
logger.info("读取失败清单结束");
} catch (Exception e) {
logger.error("读取失败清单异常" + e);
throw new IOException("读取失败清单异常" + e, e);
} finally {
if(in!=null) in.close();
}
return policyInfoList;
}
/**
* 过滤数据,取符合条件的数据
*/
public List<PolicyInfo> filterDataList(List<PolicyInfo> policyInfoList) {
if(policyInfoList!=null && policyInfoList.size()>0) {
//无保全变更单,取质检时间最早的那单回传(注意此处Null单或者N单包含了Y单下同保单号的Null单,是需要剔除)
List<PolicyInfo> list1 = policyInfoList.stream().filter(info -> StringUtils.isEmpty(info.getChangeAppntFlag()) || !"Y".equals(info.getChangeAppntFlag()))
.sorted(Comparator.comparing(PolicyInfo::getCheckTime))
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(user -> user.getPolicyNo()))), ArrayList::new));
//有保全变更单,取质检时间最晚的那单保全变更单回传
List<PolicyInfo> list2 = policyInfoList.stream().filter(info -> !StringUtils.isEmpty(info.getChangeAppntFlag()) && "Y".equals(info.getChangeAppntFlag()))
.sorted(Comparator.comparing(PolicyInfo::getCheckTime).reversed())
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(user -> user.getPolicyNo()))), ArrayList::new));
list1.addAll(list2);
//剔除掉有保全变更Y单下同保单号的Null单或者N单
list1 = list1.stream()
.sorted(Comparator.comparing(PolicyInfo::getChangeAppntFlag, Comparator.nullsLast(String::compareTo)).reversed()) //Y——>N——>NUll单排序
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(user -> user.getPolicyNo()))), ArrayList::new));
policyInfoList =list1;
}
return policyInfoList;
}
/**
* 从影像系统下载保险合同
* @throws Exception
*/
public void downLoadImagePdf(PolicyInfo info,String tempPdf) throws Exception{
logger.info("从影像系统下载保险合同开始:"+ info.getPolicyNo()+","+info.getPolicyInfoId());
ImageFile imageFile = ImageFactory.getDownImageFile(info.getImagePdfDocId(), Const.POLICY_BARCODE);
ImageDoc imageDoc = ImageFactory.getDoc(imageFile, Const.DOWNLOAD);
InputStream input =null;
FileOutputStream downloadFile=null;
try {
imageOperation.downLoadImage(imageDoc);
input = imageFile.getImagePageList().get(0).getFileInputStream();
int index;
byte[] bytes = new byte[1024];
downloadFile = new FileOutputStream(tempPdf);
while ((index = input.read(bytes)) != -1) {
downloadFile.write(bytes, 0, index);
}
downloadFile.flush();
downloadFile.close();
input.close();
logger.info("从影像系统下载保险合同结束");
} catch (Exception e) {
logger.error("从影像系统下载保险合同异常,获取PDF文件异常" + e);
throw new ImageException("从影像系统下载保险合同异常,获取PDF文件异常" + e, e);
} finally {
if(downloadFile!=null) downloadFile.close();
if(input!=null) input.close();
}
}
/**
* 计算返回需要影像件图片页脱敏的pdf页码
* @throws Exception
*/
private Integer getNeedImage(String path){
PdfDocument pdf =new PdfDocument();
pdf.loadFromFile(path);
int index=0;
Integer imageIndex=null;
//遍历PDF每一页
for(int i=0;i<pdf.getPages().getCount();i++){
//获取PDF页面
PdfPageBase page = pdf.getPages().get(i);
if(page.extractImages()!=null && page.extractImages().length>0){
for (BufferedImage image:page.extractImages()) {
//需要脱敏的页(判断影像件页区别于二维码图片)
if(image.getHeight()>1000){
imageIndex=i+1;
//System.out.println("图片在:"+imageIndex +"页,图片宽:"+image.getWidth()+",高:"+image.getHeight());
break;
}
}
if(imageIndex!=null){
break;
}
}
}
pdf.close();
logger.info("打印Locale.getDefault:"+ JSON.toJSONString(Locale.getDefault()));
Locale.setDefault(Locale.CHINA);
return imageIndex;
}
/**
* 上传保险合同至民生xxFTP
* @throws Exception
*/
private void uploadToCmsbBankFTP(String path,String cmbTime) throws Exception {
logger.info("上传Ftp开始:"+ path);
//获取上传文件流与文件名
final InputStream input=new FileInputStream(new File(path));
String filename=new File(path).getName();
String ftpAddr = "";
String ftpUser = "";
String ftpPass = "";
// String cmbTime = Utils.formatDate(new Date(), "yyyyMMdd");
// String cmbPath= uploadFtpConfig.getUpLoadMsbPath()+cmbTime;
ftpAddr = uploadFtpConfig.getUpLoadMsbAddrs()+cmbTime;
ftpUser = uploadFtpConfig.getUpLoadMsbUserName();
ftpPass = uploadFtpConfig.getUpLoadMsbPassword();
URL url = new URL(ftpAddr);
int port=url.getPort()>0?url.getPort():21;
FTPUtil.uploadCMBFtpFile(url.getHost(),port,ftpUser, ftpPass, url.getPath(), filename, input);
logger.info("上传Ftp结束");
}
/**
* 上传列表清单至民生xxFTP
* @throws Exception
*/
private void uploadListToCmsbBankFtp(String path,PolicyInfo policy,String filename,String cmbTime) throws Exception {
if(policy!=null) {
logger.info("写入列表清单开始:"+ policy.getPolicyNo()+","+ policy.getPolicyInfoId());
FileWriter out =null;
BufferedReader in =null;
RandomAccessFile raf =null;
try {
//1、判断文件存在则追加内容;如果文件不存在,则创建文件,此处设置为true即可追加
out = new FileWriter(path, true);
in = new BufferedReader(new FileReader(path));
if (StringUtils.isEmpty(in.readLine())) {
out.write(Const.CMBS_CODE + "|1|\r\n"); //此处1代表保单数量
} else {
out.write("\r\n");
}
in.close();
//往文件追加 20190101|BD00000000001|CMBC_0040_DZBD_20190101_BD00000000001.pdf|
String polApplyDate = Utils.formatDate(policy.getPolApplyDate(), "yyyyMMdd");
//String polApplyDate =DateUtil.formatDate(policy.getPolApplyDate(), "yyyyMMdd"); //不要用此工具类,有问题,转换出来的日期少一天
out.write(polApplyDate + "|" + policy.getPolicyNo() + "|" + filename + "|");
//2、更新txt文本保单数量
raf = new RandomAccessFile(path, "rw");
String line = raf.readLine();
if (!StringUtils.isEmpty(line) && line.startsWith(Const.CMBS_CODE + "|")) {
String[] split = line.split("\\|");
//移动RandomAccessFile的位置0则至行首,先写入分隔前部分的内容,再写入替换的内容,最后写入分隔后部分的内容
raf.seek(split[0].length());
int oldNum = Integer.valueOf(split[1].toString());
oldNum++;
String newNum = String.valueOf(oldNum);
raf.writeBytes("|" + newNum + "|"); //写入替换的新内容
}
raf.close();
//刷新IO内存流
out.flush();
//关闭
out.close();
logger.info("写入列表清单结束");
uploadToCmsbBankFTP(path, cmbTime);
} catch (Exception e) {
logger.error("写入列表清单异常" + e);
throw new IOException("写入列表清单异常" + e, e);
} finally {
if(in!=null) in.close();
if(raf!=null) raf.close();
if(out!=null) out.close();
}
}
}
/**
* 回传后进行记录
*/
public void insertAddCmsbInfo(PolicyInfo info){
//回传后进行数据记录
TbFeedbackBankTemp tbInfo = new TbFeedbackBankTemp();
String time = Utils.formatDate(new Date(), "yyyyMMdd");
tbInfo.setBatchNo(time);
tbInfo.setPolicyInfoId(info.getPolicyInfoId());
tbInfo.setPolicyNo(info.getPolicyNo());
tbInfo.setImagePdfDocId(info.getImagePdfDocId());
tbInfo.setCheckTime(info.getCheckTime());
policyUploadMapper.insertAddCmsbInfo(tbInfo);
}
}
FTP上传与下载文件
最新推荐文章于 2024-06-26 17:23:03 发布