init:米东项目初始化
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
package com.saye.hospitalgd.scheduler.jobMethod;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.saye.hospitalgd.commons.date.DateDUtil;
|
||||
import com.saye.hospitalgd.commons.getBean.GetBeanUtil;
|
||||
import com.saye.hospitalgd.commons.log.ExceptionDUtil;
|
||||
import com.saye.hospitalgd.commons.log.LogUtil;
|
||||
import com.saye.hospitalgd.commons.string.StringDUtil;
|
||||
import com.saye.hospitalgd.entity.BankbillHistory;
|
||||
import com.saye.hospitalgd.model.Logger;
|
||||
import com.saye.hospitalgd.model.StatusDefine;
|
||||
import com.saye.hospitalgd.service.BankbillGetinfoService;
|
||||
import com.saye.hospitalgd.service.BankbillHistoryService;
|
||||
import com.saye.hospitalgd.service.impl.BankbillGetinfoServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.BankbillHistoryServiceImpl;
|
||||
import com.saye.hospitalgd.service.system.ServiceParamsService;
|
||||
import com.saye.hospitalgd.service.system.impl.ServiceParamsServiceImpl;
|
||||
import com.saye.hospitalgd.util.DownloadFtpUtil;
|
||||
import com.saye.hospitalgd.util.HttpDutil;
|
||||
import org.apache.poi.hssf.usermodel.*;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* @author thuang
|
||||
* @version 1.0
|
||||
* @description: 获取商户对账单 调用dmz服务器部署的接口
|
||||
* @date 2021/9/13 14:46
|
||||
*/
|
||||
public class BankGetDataBySH {
|
||||
|
||||
public HashMap<Object,Object> getDate(String id,String name,String trade_date,HashMap<Object,Object> map){
|
||||
HashMap<Object,Object> resultMap=new HashMap<>();
|
||||
String errCode="0";
|
||||
String errMsg="";
|
||||
|
||||
BankbillHistoryService bankbillHistoryService = GetBeanUtil.getBean(BankbillHistoryServiceImpl.class);
|
||||
BankbillGetinfoService bankbillGetinfoService = GetBeanUtil.getBean(BankbillGetinfoServiceImpl.class);
|
||||
|
||||
ServiceParamsService serviceParamsService= GetBeanUtil.getBean(ServiceParamsServiceImpl.class);
|
||||
|
||||
boolean isOk=false;
|
||||
|
||||
//重新执行最多10次 还没获取到肯定有问题 不执行了
|
||||
//如果有传入时间 那就只执行一次 获取不到就还是获取不到
|
||||
int num ="".equals(trade_date)?0:9;
|
||||
while (!isOk && num<10){
|
||||
num++;
|
||||
|
||||
String bill_table_name=StringDUtil.changeNullToEmpty(map.get("BILL_TABLE_NAME"));
|
||||
String thirdConfigId=StringDUtil.changeNullToEmpty(map.get("ID"));
|
||||
String ftp_file_name=StringDUtil.changeNullToEmpty(map.get("FTP_FILE_NAME"));
|
||||
String mch_id=StringDUtil.changeNullToEmpty(map.get("MCH_ID"));
|
||||
|
||||
//替换其中的标记
|
||||
Matcher mat = Pattern.compile("\\{([^}]*)\\}").matcher(ftp_file_name);
|
||||
|
||||
while(mat.find()){
|
||||
String group = mat.group();
|
||||
group=group.substring(1,group.length()-1);
|
||||
|
||||
//替换商户id
|
||||
if ("MCH_ID".equals(group)){
|
||||
ftp_file_name = ftp_file_name.replaceFirst("\\{([^}]*)\\}", mch_id);
|
||||
}
|
||||
|
||||
//替换日期 主要试t+1 还是t+2这种
|
||||
if (group.contains("DATE")){
|
||||
String dateStr="";
|
||||
|
||||
//如果有传入时间 那就使用传入时间
|
||||
if ("".equals(trade_date)){
|
||||
group=group.replaceFirst("DATE","");
|
||||
|
||||
Calendar calendar=Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
|
||||
//执行修改日期
|
||||
if (!"".equals(group)){
|
||||
int t = Integer.parseInt(group);
|
||||
calendar.add(Calendar.DATE,t);
|
||||
}
|
||||
Date searchDate = calendar.getTime();
|
||||
trade_date= DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd,searchDate);
|
||||
dateStr=DateDUtil.DateToStr(DateDUtil.yyyyMMdd,searchDate);
|
||||
}else {
|
||||
Date date = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd, trade_date);
|
||||
dateStr=DateDUtil.DateToStr(DateDUtil.yyyyMMdd,date);
|
||||
}
|
||||
ftp_file_name = ftp_file_name.replaceFirst("\\{([^}]*)\\}", dateStr);
|
||||
}
|
||||
}
|
||||
|
||||
map.put("FTP_FILE_NAME",ftp_file_name);
|
||||
map.put("trade_date",trade_date);
|
||||
|
||||
try {
|
||||
List<HashMap<Object, Object>> serviceParams = serviceParamsService.findParamValByParamCode("hgd_dmz");
|
||||
String dmz_url = StringDUtil.changeNullToEmpty(serviceParams.get(0).get("PARAM_VAL"));
|
||||
|
||||
String result = HttpDutil.post(dmz_url+"/getBankDataBySH", map);
|
||||
|
||||
//解析返回的json字符串
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
|
||||
errCode = StringDUtil.changeNullToEmpty(jsonObject.get("errCode"));
|
||||
errMsg = StringDUtil.changeNullToEmpty(jsonObject.get("errMsg"));
|
||||
|
||||
//如果没问题 解析返回的集合
|
||||
if ("0".equals(errCode)){
|
||||
String list = StringDUtil.changeNullToEmpty(jsonObject.get("list"));
|
||||
List<BankbillHistory> bankbillHistories = JSONArray.parseArray(list, BankbillHistory.class);
|
||||
|
||||
//如果有数据
|
||||
if (bankbillHistories!=null && bankbillHistories.size()>0){
|
||||
|
||||
//先存一份原始的 这份只是留底查询
|
||||
bankbillHistoryService.insertBankBillOriginal(bankbillHistories,trade_date,bill_table_name);
|
||||
|
||||
//再存一份修改替换其中一些字段的
|
||||
bankbillHistoryService.insertAllBankHistory(bankbillHistories,trade_date,bill_table_name);
|
||||
}
|
||||
isOk=true;
|
||||
}else {
|
||||
isOk=false;
|
||||
}
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
errCode="999";
|
||||
errMsg="处理数据错误,原因:"+e.getMessage();
|
||||
isOk=false;
|
||||
}
|
||||
|
||||
|
||||
//记录数据获取记录
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("trade_date",trade_date);
|
||||
addMap.put("quartz_id",id);
|
||||
addMap.put("quartz_name",name);
|
||||
addMap.put("bill_table_name",bill_table_name);
|
||||
addMap.put("thirdConfigId",thirdConfigId);
|
||||
if (isOk){
|
||||
addMap.put("is_ok","1");
|
||||
}else {
|
||||
addMap.put("is_ok","0");
|
||||
}
|
||||
addMap.put("modify_time",DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
|
||||
bankbillGetinfoService.insertBankbillGetinfo(addMap);
|
||||
|
||||
//判断是否成功 如果失败 执行休眠一小时
|
||||
if (!isOk && num<10) {
|
||||
try {
|
||||
//记录日志
|
||||
LogUtil.error(this.getClass(), errMsg);
|
||||
|
||||
System.out.println("获取对账记录没有成功,1小时后重新执行");
|
||||
Thread.sleep(1000 * 60 * 60);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resultMap.put("errCode",errCode);
|
||||
resultMap.put("errMsg",errMsg);
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
package com.saye.hospitalgd.scheduler.jobMethod;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.saye.hospitalgd.commons.date.DateDUtil;
|
||||
import com.saye.hospitalgd.commons.getBean.GetBeanUtil;
|
||||
import com.saye.hospitalgd.commons.log.LogUtil;
|
||||
import com.saye.hospitalgd.commons.string.StringDUtil;
|
||||
import com.saye.hospitalgd.entity.BankbillHistory;
|
||||
import com.saye.hospitalgd.service.BankbillGetinfoService;
|
||||
import com.saye.hospitalgd.service.BankbillHistoryService;
|
||||
import com.saye.hospitalgd.service.impl.BankbillGetinfoServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.BankbillHistoryServiceImpl;
|
||||
import com.saye.hospitalgd.service.system.ServiceParamsService;
|
||||
import com.saye.hospitalgd.service.system.impl.ServiceParamsServiceImpl;
|
||||
import com.saye.hospitalgd.util.HttpDutil;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* @author thuang
|
||||
* @version 1.0
|
||||
* @description: 获取商户银联卡对账单 调用dmz服务器部署的接口
|
||||
* @date 2021/9/13 14:46
|
||||
*/
|
||||
public class BankGetDataBySHYLK {
|
||||
|
||||
public HashMap<Object,Object> getDate(String id,String name,String trade_date,HashMap<Object,Object> map){
|
||||
HashMap<Object,Object> resultMap=new HashMap<>();
|
||||
String errCode="0";
|
||||
String errMsg="";
|
||||
|
||||
BankbillHistoryService bankbillHistoryService = GetBeanUtil.getBean(BankbillHistoryServiceImpl.class);
|
||||
BankbillGetinfoService bankbillGetinfoService = GetBeanUtil.getBean(BankbillGetinfoServiceImpl.class);
|
||||
|
||||
ServiceParamsService serviceParamsService= GetBeanUtil.getBean(ServiceParamsServiceImpl.class);
|
||||
|
||||
boolean isOk=false;
|
||||
|
||||
//重新执行最多10次 还没获取到肯定有问题 不执行了
|
||||
//如果有传入时间 那就只执行一次 获取不到就还是获取不到
|
||||
int num ="".equals(trade_date)?0:9;
|
||||
while (!isOk && num<10){
|
||||
num++;
|
||||
|
||||
String bill_table_name=StringDUtil.changeNullToEmpty(map.get("BILL_TABLE_NAME"));
|
||||
String thirdConfigId=StringDUtil.changeNullToEmpty(map.get("ID"));
|
||||
String ftp_file_name=StringDUtil.changeNullToEmpty(map.get("FTP_FILE_NAME"));
|
||||
String mch_id=StringDUtil.changeNullToEmpty(map.get("MCH_ID"));
|
||||
|
||||
//替换其中的标记
|
||||
Matcher mat = Pattern.compile("\\{([^}]*)\\}").matcher(ftp_file_name);
|
||||
|
||||
while(mat.find()){
|
||||
String group = mat.group();
|
||||
group=group.substring(1,group.length()-1);
|
||||
|
||||
//替换商户id
|
||||
if ("MCH_ID".equals(group)){
|
||||
ftp_file_name = ftp_file_name.replaceFirst("\\{([^}]*)\\}", mch_id);
|
||||
}
|
||||
|
||||
//替换日期 主要试t+1 还是t+2这种
|
||||
if (group.contains("DATE")){
|
||||
String dateStr="";
|
||||
|
||||
//如果有传入时间 那就使用传入时间
|
||||
if ("".equals(trade_date)){
|
||||
group=group.replaceFirst("DATE","");
|
||||
|
||||
Calendar calendar=Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
|
||||
//执行修改日期
|
||||
if (!"".equals(group)){
|
||||
int t = Integer.parseInt(group);
|
||||
calendar.add(Calendar.DATE,t);
|
||||
}
|
||||
Date searchDate = calendar.getTime();
|
||||
trade_date= DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd,searchDate);
|
||||
dateStr=DateDUtil.DateToStr(DateDUtil.yyyyMMdd,searchDate);
|
||||
}else {
|
||||
Date date = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd, trade_date);
|
||||
dateStr=DateDUtil.DateToStr(DateDUtil.yyyyMMdd,date);
|
||||
}
|
||||
ftp_file_name = ftp_file_name.replaceFirst("\\{([^}]*)\\}", dateStr);
|
||||
}
|
||||
}
|
||||
|
||||
map.put("FTP_FILE_NAME",ftp_file_name);
|
||||
map.put("trade_date",trade_date);
|
||||
|
||||
try {
|
||||
List<HashMap<Object, Object>> serviceParams = serviceParamsService.findParamValByParamCode("hgd_dmz");
|
||||
String dmz_url = StringDUtil.changeNullToEmpty(serviceParams.get(0).get("PARAM_VAL"));
|
||||
|
||||
String result = HttpDutil.post(dmz_url+"/getBankDataBySHYLK", map);
|
||||
|
||||
//解析返回的json字符串
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
|
||||
errCode = StringDUtil.changeNullToEmpty(jsonObject.get("errCode"));
|
||||
errMsg = StringDUtil.changeNullToEmpty(jsonObject.get("errMsg"));
|
||||
|
||||
//如果没问题 解析返回的集合
|
||||
if ("0".equals(errCode)){
|
||||
String list = StringDUtil.changeNullToEmpty(jsonObject.get("list"));
|
||||
List<BankbillHistory> bankbillHistories = JSONArray.parseArray(list, BankbillHistory.class);
|
||||
|
||||
//如果有数据
|
||||
if (bankbillHistories!=null && bankbillHistories.size()>0){
|
||||
|
||||
//先存一份原始的 这份只是留底查询
|
||||
bankbillHistoryService.insertBankBillOriginal(bankbillHistories,trade_date,bill_table_name);
|
||||
|
||||
//再存一份修改替换其中一些字段的
|
||||
bankbillHistoryService.insertAllBankHistory(bankbillHistories,trade_date,bill_table_name);
|
||||
}
|
||||
isOk=true;
|
||||
}else {
|
||||
isOk=false;
|
||||
}
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
errCode="999";
|
||||
errMsg="处理数据错误,原因:"+e.getMessage();
|
||||
isOk=false;
|
||||
}
|
||||
|
||||
|
||||
//记录数据获取记录
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("trade_date",trade_date);
|
||||
addMap.put("quartz_id",id);
|
||||
addMap.put("quartz_name",name);
|
||||
addMap.put("bill_table_name",bill_table_name);
|
||||
addMap.put("thirdConfigId",thirdConfigId);
|
||||
if (isOk){
|
||||
addMap.put("is_ok","1");
|
||||
}else {
|
||||
addMap.put("is_ok","0");
|
||||
}
|
||||
addMap.put("modify_time",DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
|
||||
bankbillGetinfoService.insertBankbillGetinfo(addMap);
|
||||
|
||||
//判断是否成功 如果失败 执行休眠一小时
|
||||
if (!isOk && num<10) {
|
||||
try {
|
||||
//记录日志
|
||||
LogUtil.error(this.getClass(), errMsg);
|
||||
|
||||
System.out.println("获取对账记录没有成功,1小时后重新执行");
|
||||
Thread.sleep(1000 * 60 * 60);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resultMap.put("errCode",errCode);
|
||||
resultMap.put("errMsg",errMsg);
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
package com.saye.hospitalgd.scheduler.jobMethod;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.saye.hospitalgd.commons.date.DateDUtil;
|
||||
import com.saye.hospitalgd.commons.getBean.GetBeanUtil;
|
||||
import com.saye.hospitalgd.commons.log.LogUtil;
|
||||
import com.saye.hospitalgd.commons.string.StringDUtil;
|
||||
import com.saye.hospitalgd.entity.BankbillHistory;
|
||||
import com.saye.hospitalgd.service.BankbillGetinfoService;
|
||||
import com.saye.hospitalgd.service.BankbillHistoryService;
|
||||
import com.saye.hospitalgd.service.impl.BankbillGetinfoServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.BankbillHistoryServiceImpl;
|
||||
import com.saye.hospitalgd.service.system.ServiceParamsService;
|
||||
import com.saye.hospitalgd.service.system.impl.ServiceParamsServiceImpl;
|
||||
import com.saye.hospitalgd.util.HttpDutil;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* @author thuang
|
||||
* @version 1.0
|
||||
* @description: 获取商户营销联盟对账单 调用dmz服务器部署的接口
|
||||
* @date 2021/9/13 14:46
|
||||
*/
|
||||
public class BankGetDataBySHYXLM {
|
||||
|
||||
public HashMap<Object,Object> getDate(String id,String name,String trade_date,HashMap<Object,Object> map){
|
||||
HashMap<Object,Object> resultMap=new HashMap<>();
|
||||
String errCode="0";
|
||||
String errMsg="";
|
||||
|
||||
BankbillHistoryService bankbillHistoryService = GetBeanUtil.getBean(BankbillHistoryServiceImpl.class);
|
||||
BankbillGetinfoService bankbillGetinfoService = GetBeanUtil.getBean(BankbillGetinfoServiceImpl.class);
|
||||
|
||||
ServiceParamsService serviceParamsService= GetBeanUtil.getBean(ServiceParamsServiceImpl.class);
|
||||
|
||||
boolean isOk=false;
|
||||
|
||||
//重新执行最多10次 还没获取到肯定有问题 不执行了
|
||||
//如果有传入时间 那就只执行一次 获取不到就还是获取不到
|
||||
int num ="".equals(trade_date)?0:9;
|
||||
while (!isOk && num<10){
|
||||
num++;
|
||||
|
||||
String bill_table_name=StringDUtil.changeNullToEmpty(map.get("BILL_TABLE_NAME"));
|
||||
String thirdConfigId=StringDUtil.changeNullToEmpty(map.get("ID"));
|
||||
String ftp_file_name=StringDUtil.changeNullToEmpty(map.get("FTP_FILE_NAME"));
|
||||
String mch_id=StringDUtil.changeNullToEmpty(map.get("MCH_ID"));
|
||||
|
||||
//替换其中的标记
|
||||
Matcher mat = Pattern.compile("\\{([^}]*)\\}").matcher(ftp_file_name);
|
||||
|
||||
while(mat.find()){
|
||||
String group = mat.group();
|
||||
group=group.substring(1,group.length()-1);
|
||||
|
||||
//替换商户id
|
||||
if ("MCH_ID".equals(group)){
|
||||
ftp_file_name = ftp_file_name.replaceFirst("\\{([^}]*)\\}", mch_id);
|
||||
}
|
||||
|
||||
//替换日期 主要试t+1 还是t+2这种
|
||||
if (group.contains("DATE")){
|
||||
String dateStr="";
|
||||
|
||||
//如果有传入时间 那就使用传入时间
|
||||
if ("".equals(trade_date)){
|
||||
group=group.replaceFirst("DATE","");
|
||||
|
||||
Calendar calendar=Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
|
||||
//执行修改日期
|
||||
if (!"".equals(group)){
|
||||
int t = Integer.parseInt(group);
|
||||
calendar.add(Calendar.DATE,t);
|
||||
}
|
||||
Date searchDate = calendar.getTime();
|
||||
trade_date= DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd,searchDate);
|
||||
dateStr=DateDUtil.DateToStr(DateDUtil.yyyyMMdd,searchDate);
|
||||
}else {
|
||||
Date date = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd, trade_date);
|
||||
dateStr=DateDUtil.DateToStr(DateDUtil.yyyyMMdd,date);
|
||||
}
|
||||
ftp_file_name = ftp_file_name.replaceFirst("\\{([^}]*)\\}", dateStr);
|
||||
}
|
||||
}
|
||||
|
||||
map.put("FTP_FILE_NAME",ftp_file_name);
|
||||
map.put("trade_date",trade_date);
|
||||
|
||||
try {
|
||||
List<HashMap<Object, Object>> serviceParams = serviceParamsService.findParamValByParamCode("hgd_dmz");
|
||||
String dmz_url = StringDUtil.changeNullToEmpty(serviceParams.get(0).get("PARAM_VAL"));
|
||||
|
||||
String result = HttpDutil.post(dmz_url+"/getBankDataBySHYXLM", map);
|
||||
|
||||
//解析返回的json字符串
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
|
||||
errCode = StringDUtil.changeNullToEmpty(jsonObject.get("errCode"));
|
||||
errMsg = StringDUtil.changeNullToEmpty(jsonObject.get("errMsg"));
|
||||
|
||||
//如果没问题 解析返回的集合
|
||||
if ("0".equals(errCode)){
|
||||
String list = StringDUtil.changeNullToEmpty(jsonObject.get("list"));
|
||||
List<BankbillHistory> bankbillHistories = JSONArray.parseArray(list, BankbillHistory.class);
|
||||
|
||||
//如果有数据
|
||||
if (bankbillHistories!=null && bankbillHistories.size()>0){
|
||||
|
||||
//先存一份原始的 这份只是留底查询
|
||||
bankbillHistoryService.insertBankBillOriginal(bankbillHistories,trade_date,bill_table_name);
|
||||
|
||||
//再存一份修改替换其中一些字段的
|
||||
bankbillHistoryService.insertAllBankHistory(bankbillHistories,trade_date,bill_table_name);
|
||||
}
|
||||
isOk=true;
|
||||
}else {
|
||||
isOk=false;
|
||||
}
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
errCode="999";
|
||||
errMsg="处理数据错误,原因:"+e.getMessage();
|
||||
isOk=false;
|
||||
}
|
||||
|
||||
|
||||
//记录数据获取记录
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("trade_date",trade_date);
|
||||
addMap.put("quartz_id",id);
|
||||
addMap.put("quartz_name",name);
|
||||
addMap.put("bill_table_name",bill_table_name);
|
||||
addMap.put("thirdConfigId",thirdConfigId);
|
||||
if (isOk){
|
||||
addMap.put("is_ok","1");
|
||||
}else {
|
||||
addMap.put("is_ok","0");
|
||||
}
|
||||
addMap.put("modify_time",DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
|
||||
bankbillGetinfoService.insertBankbillGetinfo(addMap);
|
||||
|
||||
//判断是否成功 如果失败 执行休眠一小时
|
||||
if (!isOk && num<10) {
|
||||
try {
|
||||
//记录日志
|
||||
LogUtil.error(this.getClass(), errMsg);
|
||||
|
||||
System.out.println("获取对账记录没有成功,1小时后重新执行");
|
||||
Thread.sleep(1000 * 60 * 60);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resultMap.put("errCode",errCode);
|
||||
resultMap.put("errMsg",errMsg);
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,329 @@
|
||||
package com.saye.hospitalgd.scheduler.jobMethod;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.saye.hospitalgd.commons.date.DateDUtil;
|
||||
import com.saye.hospitalgd.commons.getBean.GetBeanUtil;
|
||||
import com.saye.hospitalgd.commons.log.LogUtil;
|
||||
import com.saye.hospitalgd.commons.string.StringDUtil;
|
||||
import com.saye.hospitalgd.service.BankbillGetinfoService;
|
||||
import com.saye.hospitalgd.service.BankbillsHistoryService;
|
||||
import com.saye.hospitalgd.service.ThirdSftpConfigService;
|
||||
import com.saye.hospitalgd.service.impl.BankbillGetinfoServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.BankbillsHistoryServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.ThirdSftpConfigServiceImpl;
|
||||
import com.saye.hospitalgd.service.system.ServiceParamsService;
|
||||
import com.saye.hospitalgd.service.system.impl.ServiceParamsServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.dom4j.Document;
|
||||
import org.dom4j.DocumentHelper;
|
||||
import org.dom4j.Element;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URI;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
/**
|
||||
* @author thuang
|
||||
* @version 1.0
|
||||
* @description: 获取商户POS通对账单 调用dmz服务器部署的接口
|
||||
* @date 2021/9/13 14:46
|
||||
*/
|
||||
@Slf4j
|
||||
public class BankGetDataMethod {
|
||||
|
||||
public HashMap<Object, Object> getDate(String id, String name, String trade_date, HashMap<Object, Object> map) {
|
||||
HashMap<Object, Object> resultMap = new HashMap<>();
|
||||
String errCode = "0";
|
||||
String errMsg = "";
|
||||
|
||||
BankbillsHistoryService bankbillsHistoryService = GetBeanUtil.getBean(BankbillsHistoryServiceImpl.class);
|
||||
|
||||
// BankbillGetinfoService bankbillGetinfoService = GetBeanUtil.getBean(BankbillGetinfoServiceImpl.class);
|
||||
BankbillGetinfoService bankbillGetinfoService = GetBeanUtil.getBean(BankbillGetinfoServiceImpl.class);
|
||||
|
||||
ServiceParamsService serviceParamsService = GetBeanUtil.getBean(ServiceParamsServiceImpl.class);
|
||||
ThirdSftpConfigService thirdSftpConfigService = GetBeanUtil.getBean(ThirdSftpConfigServiceImpl.class);
|
||||
|
||||
boolean isOk = false;
|
||||
|
||||
|
||||
//重新执行最多10次 还没获取到肯定有问题 不执行了
|
||||
//如果有传入时间 那就只执行一次 获取不到就还是获取不到
|
||||
int num = "".equals(trade_date) ? 0 : 9;
|
||||
while (!isOk && num < 10) {
|
||||
num++;
|
||||
|
||||
String dateStr = "";
|
||||
//如果有传入时间 那就使用传入时间
|
||||
if ("".equals(trade_date)) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
calendar.add(Calendar.DATE, -1);
|
||||
Date time = calendar.getTime();
|
||||
|
||||
trade_date = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, time);
|
||||
dateStr = DateDUtil.DateToStr(DateDUtil.yyyyMMdd, time);
|
||||
} else {
|
||||
Date date = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd, trade_date);
|
||||
dateStr = DateDUtil.DateToStr(DateDUtil.yyyyMMdd, date);
|
||||
}
|
||||
|
||||
|
||||
//开始请求海南外联接口,生成账单文件
|
||||
|
||||
String cust_id = StringDUtil.changeNullToEmpty(map.get("CUST_ID"));
|
||||
String user_id = StringDUtil.changeNullToEmpty(map.get("USER_ID"));
|
||||
String tx_code = StringDUtil.changeNullToEmpty(map.get("TX_CODE"));
|
||||
String password = StringDUtil.changeNullToEmpty(map.get("PASSWORD"));
|
||||
String language = StringDUtil.changeNullToEmpty(map.get("LANGUAGE"));
|
||||
String wlip = StringDUtil.changeNullToEmpty(map.get("WLIP"));
|
||||
String wlport = StringDUtil.changeNullToEmpty(map.get("WLPORT"));
|
||||
|
||||
String requset_sn_sc = String.valueOf(System.currentTimeMillis());
|
||||
|
||||
log.info("传去的时间是dateStr:" + dateStr);
|
||||
String requestXml = "<?xml version=\"1.0\" encoding=\"GB2312\" standalone=\"yes\" ?> \n" +
|
||||
"<TX> \n" +
|
||||
" <REQUEST_SN>" + requset_sn_sc + "</REQUEST_SN> \n" +
|
||||
" <CUST_ID>" + cust_id + "</CUST_ID> \n" +
|
||||
" <USER_ID>" + user_id + "</USER_ID> \n" +
|
||||
" <PASSWORD>" + password + "</PASSWORD> \n" +
|
||||
" <TX_CODE>" + tx_code + "</TX_CODE> \n" +
|
||||
" <LANGUAGE>" + language + "</LANGUAGE> \n" +
|
||||
" <TX_INFO> \n" +
|
||||
" <DATE>" + dateStr + "</DATE> \n" +
|
||||
" <KIND>1</KIND> \n" +
|
||||
" <FILETYPE>1</FILETYPE> \n" +
|
||||
" <TYPE></TYPE> \n" +
|
||||
" <NORDERBY></NORDERBY> \n" +
|
||||
" <POS_CODE></POS_CODE> \n" +
|
||||
" <ORDER></ORDER> \n" +
|
||||
" <STATUS></STATUS> \n" +
|
||||
" <BILL_FLAG></BILL_FLAG> \n" +
|
||||
" <Mrch_No></Mrch_No> \n" +
|
||||
" <GROUP_FLAG></GROUP_FLAG> \n" +
|
||||
" <TXN_TPCD></TXN_TPCD> \n" +
|
||||
" </TX_INFO> \n" +
|
||||
"</TX> ";
|
||||
String params = "requestXml=" + requestXml;
|
||||
String ipAdress = wlip + ":" + wlport;
|
||||
log.info("拼接的ip是:" + ipAdress);
|
||||
String fileName = "";
|
||||
|
||||
try {
|
||||
URI uri = new URI(ipAdress.trim());
|
||||
CloseableHttpClient closeableHttpClient = HttpClients.createDefault();
|
||||
HttpPost httpPost = new HttpPost(uri);
|
||||
httpPost.setHeader("content-type", "application/x-www-form-urlencoded");
|
||||
httpPost.setHeader("Connection", "close");
|
||||
StringEntity entity = new StringEntity(params, "GB18030");
|
||||
log.info("发送的数据是entity:" + entity);
|
||||
httpPost.setEntity(entity);
|
||||
|
||||
CloseableHttpResponse response = closeableHttpClient.execute(httpPost);
|
||||
String s = EntityUtils.toString(response.getEntity(), "GB18030");
|
||||
log.info("接受到的数据是s:" + s);
|
||||
Document document = DocumentHelper.parseText(s);
|
||||
|
||||
Iterator iterator = document.nodeIterator();
|
||||
|
||||
|
||||
Element tx = (Element) iterator.next();
|
||||
Element return_code_F = tx.element("RETURN_CODE");
|
||||
Element return_msg_F = tx.element("RETURN_MSG");
|
||||
if (return_code_F != null) {
|
||||
if (!return_code_F.getText().equals("000000")) {
|
||||
errCode = "999";
|
||||
errMsg = return_msg_F.getText();
|
||||
log.info("获取到的返回code是" + return_code_F);
|
||||
} else {
|
||||
Iterator tx_info = tx.elementIterator("TX_INFO");
|
||||
Element txInfo = (Element) tx_info.next();
|
||||
|
||||
Element file_name = txInfo.element("FILE_NAME");
|
||||
fileName = file_name.getText();
|
||||
|
||||
boolean exist = FileUtil.exist("C:" + File.separator + "CCB_EBSClient" + File.separator + "download" + File.separator + fileName);
|
||||
|
||||
Boolean fileIsExist = false;
|
||||
|
||||
if (!exist) { //文件不存在开始下载
|
||||
HashMap<Object, Object> searchMap = new HashMap<>();
|
||||
searchMap.put("FUBS", "2");
|
||||
List<HashMap<Object, Object>> wlConfigList = thirdSftpConfigService.findWLIF(searchMap);
|
||||
HashMap<Object, Object> configMap = wlConfigList.get(0);
|
||||
String txCode = StringDUtil.changeNullToEmpty(configMap.get("TX_CODE"));
|
||||
String filepath = StringDUtil.changeNullToEmpty(configMap.get("FILEPATH"));
|
||||
String requset_sn_xz = String.valueOf(System.currentTimeMillis());
|
||||
String re = "<?xml version=\"1.0\" encoding=\"GB2312\" standalone=\"yes\" ?> \n" +
|
||||
"<TX> \n" +
|
||||
" <REQUEST_SN>" + requset_sn_xz + "</REQUEST_SN> \n" +
|
||||
" <CUST_ID>" + cust_id + "</CUST_ID> \n" +
|
||||
" <USER_ID>" + user_id + "</USER_ID> \n" +
|
||||
" <PASSWORD>" + password + "</PASSWORD> \n" +
|
||||
" <TX_CODE>" + txCode + "</TX_CODE> \n" +
|
||||
" <LANGUAGE>CN</LANGUAGE> \n" +
|
||||
" <TX_INFO> \n" +
|
||||
" <SOURCE>" + fileName + "</SOURCE> \n" +
|
||||
" <FILEPATH>" + filepath + "</FILEPATH> \n" +
|
||||
" <LOCAL_REMOTE>0</LOCAL_REMOTE> \n" +
|
||||
" </TX_INFO> \n" +
|
||||
"</TX> \n";
|
||||
String ps = "requestXml=" + re;
|
||||
|
||||
Element return_code = null;
|
||||
Element return_msg = null;
|
||||
URI uri_d = new URI(ipAdress.trim());
|
||||
CloseableHttpClient closeableHttpClientD = HttpClients.createDefault();
|
||||
HttpPost httpPostD = new HttpPost(uri_d);
|
||||
httpPostD.setHeader("content-type", "application/x-www-form-urlencoded");
|
||||
httpPostD.setHeader("Connection", "close");
|
||||
StringEntity entityD = new StringEntity(ps, "GB18030");
|
||||
httpPost.setEntity(entityD);
|
||||
|
||||
CloseableHttpResponse responseD = closeableHttpClientD.execute(httpPost);
|
||||
String s_d = EntityUtils.toString(responseD.getEntity(), "GB18030");
|
||||
log.info("s_d is :" + s_d);
|
||||
Document documentD = DocumentHelper.parseText(s_d);
|
||||
Iterator iteratorD = documentD.nodeIterator();
|
||||
Element txD = (Element) iteratorD.next();
|
||||
return_code = txD.element("RETURN_CODE");
|
||||
return_msg = txD.element("RETURN_MSG");
|
||||
if (return_code != null) {
|
||||
if (!return_code.getText().equals("000000")) {
|
||||
errCode = "999";
|
||||
errMsg = return_msg.getText();
|
||||
log.info("获取到的返回code是" + return_code);
|
||||
} else {//下载成功了
|
||||
fileIsExist = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fileIsExist || exist) { //确定文件存在,开始读取数据
|
||||
String filePath = "C:" + File.separator + "CCB_EBSClient" + File.separator + "download" + File.separator + fileName;
|
||||
List<String> txtList = null;
|
||||
FileInputStream stream = new FileInputStream(filePath);
|
||||
|
||||
ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(stream), Charset.forName("GBK"));
|
||||
|
||||
// ZipEntry ze = null;
|
||||
|
||||
ZipEntry nextEntry = zipInputStream.getNextEntry();
|
||||
log.info("读取的文件是" + nextEntry);
|
||||
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(zipInputStream, StandardCharsets.UTF_8));
|
||||
|
||||
String line;
|
||||
txtList = new ArrayList<>();
|
||||
//内容不为空,输出
|
||||
while ((line = br.readLine()) != null) {
|
||||
txtList.add(line);
|
||||
}
|
||||
log.info("继续执行程序3");
|
||||
List<HashMap<Object, Object>> dataList = new ArrayList<>();
|
||||
for (int i = 2; i < txtList.size(); i++) {
|
||||
String d = txtList.get(i);
|
||||
|
||||
String[] s1 = d.split("\t");
|
||||
|
||||
if (!StrUtil.contains(s1[4].trim(), "ZZJ")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
HashMap<Object, Object> temMap = new HashMap<>();
|
||||
|
||||
String[] split = s1[0].split(" ");
|
||||
|
||||
temMap.put("i_jyrq", split[0]);
|
||||
temMap.put("i_jysj", split[1]);
|
||||
temMap.put("i_jzrq", s1[1]);
|
||||
temMap.put("i_yhlsh", s1[2]);
|
||||
temMap.put("i_shlsh", s1[3]);
|
||||
temMap.put("i_ddh", s1[4]);
|
||||
temMap.put("i_ddzt", s1[5]);
|
||||
temMap.put("i_fkfzh", s1[6]);
|
||||
temMap.put("i_fkfhm", s1[7]);
|
||||
temMap.put("i_ddje", s1[8]);
|
||||
temMap.put("i_jyje", s1[9]);
|
||||
temMap.put("i_sxf", s1[10]);
|
||||
temMap.put("i_jsje", s1[11]);
|
||||
temMap.put("i_gtdm", s1[12]);
|
||||
temMap.put("i_fxk", s1[13]);
|
||||
temMap.put("i_zfkz", s1[14]);
|
||||
temMap.put("i_jylx", s1[15]);
|
||||
temMap.put("i_qs", s1[16]);
|
||||
|
||||
dataList.add(temMap);
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(dataList)) {
|
||||
bankbillsHistoryService.saveOriginalData(dataList, trade_date);//存一份原始数据
|
||||
bankbillsHistoryService.saveHistoryData(dataList, trade_date);//存一份修改的用于对账
|
||||
isOk = true;
|
||||
} else {
|
||||
errCode = "999";
|
||||
errMsg = "未查询到数据";
|
||||
isOk = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
errCode = "999";
|
||||
if (StringUtils.isEmpty(errMsg)) {
|
||||
errMsg = "外联平台接口调用失败!!!";
|
||||
}
|
||||
e.printStackTrace();
|
||||
}
|
||||
//海南外联接口调用成功后会生成账单文件,在请求一次外联接口下载到服务器。
|
||||
log.info("继续执行程序4");
|
||||
//记录数据获取记录
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
addMap.put("trade_date", trade_date);
|
||||
addMap.put("quartz_id", id);
|
||||
addMap.put("quartz_name", name);
|
||||
addMap.put("bill_table_name", fileName);
|
||||
addMap.put("thirdConfigId", "3");
|
||||
|
||||
if (isOk) {
|
||||
addMap.put("is_ok", "1");
|
||||
} else {
|
||||
addMap.put("is_ok", "0");
|
||||
}
|
||||
addMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
bankbillGetinfoService.insertBankbillGetinfo(addMap);
|
||||
|
||||
//判断是否成功 如果失败 执行休眠一小时
|
||||
if (!isOk && num < 10) {
|
||||
try {
|
||||
//记录日志
|
||||
LogUtil.error(this.getClass(), errMsg);
|
||||
|
||||
System.out.println("获取对账记录没有成功,1小时后重新执行");
|
||||
Thread.sleep(1000 * 60 * 60);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resultMap.put("errCode", errCode);
|
||||
resultMap.put("errMsg", errMsg);
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,340 @@
|
||||
package com.saye.hospitalgd.scheduler.jobMethod;
|
||||
|
||||
import com.saye.hospitalgd.commons.date.DateDUtil;
|
||||
import com.saye.hospitalgd.commons.getBean.GetBeanUtil;
|
||||
import com.saye.hospitalgd.commons.log.LogUtil;
|
||||
import com.saye.hospitalgd.commons.string.StringDUtil;
|
||||
import com.saye.hospitalgd.model.Dicinfo;
|
||||
import com.saye.hospitalgd.service.HisDetailService;
|
||||
import com.saye.hospitalgd.service.HisInterFaceConfigService;
|
||||
import com.saye.hospitalgd.service.OperatorService;
|
||||
import com.saye.hospitalgd.service.historyLog.HisBillLogService;
|
||||
import com.saye.hospitalgd.service.historyLog.impl.HisBillLogServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.HisDetailServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.HisInterFaceConfigServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.OperatorServiceImpl;
|
||||
import com.saye.hospitalgd.service.system.DicinfoService;
|
||||
import com.saye.hospitalgd.service.system.ServiceParamsService;
|
||||
import com.saye.hospitalgd.service.system.impl.DicinfoServiceImpl;
|
||||
import com.saye.hospitalgd.service.system.impl.ServiceParamsServiceImpl;
|
||||
import com.saye.hospitalgd.util.HisUtil;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author thuang
|
||||
* @version 1.0
|
||||
* @description: His获取数据方法(弘扬)
|
||||
* @date 2021/9/30 13:41
|
||||
*/
|
||||
public class HISGetDataMethodByHY {
|
||||
|
||||
public HashMap<Object,Object> getDate(String id,String name,String trade_date,String his_wsdl_id){
|
||||
HashMap<Object,Object> responseMap=new HashMap<>();
|
||||
String errCode="0";
|
||||
String errMsg="";
|
||||
|
||||
HisBillLogService hisBillLogService = GetBeanUtil.getBean(HisBillLogServiceImpl.class);
|
||||
HisDetailService hisDetailService = GetBeanUtil.getBean(HisDetailServiceImpl.class);
|
||||
OperatorService operatorService = GetBeanUtil.getBean(OperatorServiceImpl.class);
|
||||
DicinfoService dicinfoService = GetBeanUtil.getBean(DicinfoServiceImpl.class);
|
||||
|
||||
ServiceParamsService serviceParamsService = GetBeanUtil.getBean(ServiceParamsServiceImpl.class);
|
||||
|
||||
HisInterFaceConfigService hisInterFaceConfigService = GetBeanUtil.getBean(HisInterFaceConfigServiceImpl.class);
|
||||
|
||||
try {
|
||||
//查询需要用到的参数
|
||||
|
||||
//his接口地址
|
||||
List<HashMap<Object, Object>> hisConfigList = hisInterFaceConfigService.findConfigById(his_wsdl_id);
|
||||
String his_wsdl = StringDUtil.changeNullToEmpty(hisConfigList.get(0).get("HIS_INTERFACE_WSDL"));
|
||||
String code = StringDUtil.changeNullToEmpty(hisConfigList.get(0).get("CODE"));
|
||||
|
||||
//现金支付方式
|
||||
List<HashMap<Object, Object>> serviceParams = serviceParamsService.findParamValByParamCode("cash_code");
|
||||
String cash_code = StringDUtil.changeNullToEmpty(serviceParams.get(0).get("PARAM_VAL"));
|
||||
|
||||
//his端其他支付方式 也单独处理 因为里面没有唯一id 且都是支票记录
|
||||
String zhipiao="无";
|
||||
|
||||
//操作员号
|
||||
List<HashMap<Object,Object>> operators = operatorService.findAllOperator(new HashMap<Object,Object>());
|
||||
//将操作员号用逗号连接
|
||||
String operatorsCodeStr="";
|
||||
for (int i = 0; i < operators.size(); i++) {
|
||||
HashMap<Object, Object> hashMap = operators.get(i);
|
||||
operatorsCodeStr =operatorsCodeStr + StringDUtil.changeNullToEmpty(hashMap.get("HISOPERCODE")) + ",";
|
||||
}
|
||||
if (operatorsCodeStr.length()>0){
|
||||
operatorsCodeStr=operatorsCodeStr.substring(0,operatorsCodeStr.length()-1);
|
||||
}
|
||||
|
||||
//全部支付方式
|
||||
List<Dicinfo> pay_type = dicinfoService.findDicinfoTreeNodeList("PAY_TYPE");
|
||||
HashMap<String,String> payTypeMap=new HashMap<>();
|
||||
for (Dicinfo dicinfo : pay_type) {
|
||||
payTypeMap.put( dicinfo.getDicname(),dicinfo.getDicvalue());
|
||||
}
|
||||
|
||||
//开始结束时间
|
||||
String startTime="";
|
||||
String endTime="";
|
||||
if ("".equals(trade_date)) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
calendar.add(Calendar.DATE, -1);
|
||||
Date time = calendar.getTime();
|
||||
|
||||
startTime = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, time) + " 00:00:00";
|
||||
endTime = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, new Date()) + " 00:00:00";
|
||||
trade_date=DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, time);
|
||||
}else {
|
||||
startTime = trade_date + " 00:00:00";
|
||||
Date date = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd, trade_date);
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(date);
|
||||
calendar.add(Calendar.DATE, 1);
|
||||
endTime = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, calendar.getTime()) + " 00:00:00";
|
||||
}
|
||||
|
||||
//组织request
|
||||
String requestStr="";
|
||||
requestStr="<Request>" +
|
||||
" <HisOperNum>"+ operatorsCodeStr +"</HisOperNum>" +
|
||||
" <StartTime>"+startTime+"</StartTime>" +
|
||||
" <EndTime>"+endTime+"</EndTime>" +
|
||||
"</Request>";
|
||||
|
||||
//获取数据
|
||||
HisUtil hisUtil = new HisUtil();
|
||||
HashMap<String, String> histData = hisUtil.getHisDataByHY(his_wsdl, code, requestStr);
|
||||
errCode = histData.get("errCode");
|
||||
if (!"0".equals(errCode)){
|
||||
errMsg=histData.get("errMsg");
|
||||
}else {
|
||||
String dataStr = histData.get("dataStr");
|
||||
|
||||
//分析数据,判断调用正确与否
|
||||
HashMap<String, Object> hisBillResult = hisUtil.managerDataStrByHY(dataStr);
|
||||
errCode = StringDUtil.changeNullToEmpty(hisBillResult.get("errCode"));
|
||||
if (!"0".equals(errCode)){
|
||||
errMsg=StringDUtil.changeNullToEmpty(hisBillResult.get("errMsg"));
|
||||
}else {
|
||||
List<HashMap<Object,Object>> hisBillList = (List<HashMap<Object,Object>>)hisBillResult.get("addList");
|
||||
|
||||
//存一份his原始的
|
||||
hisDetailService.insertHisBillOriginalHY(hisBillList,trade_date,his_wsdl_id);
|
||||
|
||||
//将原始的转换成统一格式
|
||||
List<HashMap<Object,Object>> newAddList= new ArrayList<>();
|
||||
|
||||
List<HashMap<Object,Object>> cashList= new ArrayList<>();
|
||||
|
||||
List<HashMap<Object,Object>> zhipiaoList= new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < hisBillList.size(); i++) {
|
||||
HashMap<Object, Object> hisBillHashMap = hisBillList.get(i);
|
||||
|
||||
//先判断关键id是否为空 ,为空的这条记录就作废了,可能之后会有现金记录进入,此id仍为空,到时需要另加判断
|
||||
String powerTranID = StringDUtil.changeNullToEmpty(hisBillHashMap.get("powerTranID"));
|
||||
if ("".equals(powerTranID)){
|
||||
continue;
|
||||
}
|
||||
|
||||
//数据类型 1-门诊 2-住院 无需修改
|
||||
String payMethod = StringDUtil.changeNullToEmpty(hisBillHashMap.get("visitzOrg"));
|
||||
|
||||
//业务类型 0发病历1办卡2就诊卡充值3当日挂号-3 挂号退费4门诊缴费-4 单据退费5现场预约-5 预约退费6预约取号7住院缴费-7出院结算退费-77 预存作废退费
|
||||
String bizType = StringDUtil.changeNullToEmpty(hisBillHashMap.get("bizType"));
|
||||
|
||||
String tradingStatus="1";
|
||||
//如果业务类型是负数 那就是退款记录
|
||||
int i1 = new BigDecimal(0).compareTo(new BigDecimal(bizType));
|
||||
if (i1>0){
|
||||
tradingStatus="2";
|
||||
}
|
||||
|
||||
//支付方式 修改为字典表对应
|
||||
String payType = StringDUtil.changeNullToEmpty(hisBillHashMap.get("payType"));
|
||||
|
||||
//交易时间
|
||||
String tradeTime = StringDUtil.changeNullToEmpty(hisBillHashMap.get("tradeTime"));
|
||||
|
||||
//操作员
|
||||
String hisOperCode = StringDUtil.changeNullToEmpty(hisBillHashMap.get("hisOperCode"));
|
||||
|
||||
//交易金额
|
||||
String amount = StringDUtil.changeNullToEmpty(hisBillHashMap.get("amount"));
|
||||
|
||||
//说明
|
||||
String remarks = "";
|
||||
|
||||
//银商订单号
|
||||
String platformTransId = StringDUtil.changeNullToEmpty(hisBillHashMap.get("powerTranID"));
|
||||
|
||||
//患者 ID
|
||||
String patientId = StringDUtil.changeNullToEmpty(hisBillHashMap.get("patientID"));
|
||||
|
||||
//患者姓名
|
||||
String patientName = StringDUtil.changeNullToEmpty(hisBillHashMap.get("patientName"));
|
||||
|
||||
//交易日期
|
||||
String thistrade_date = StringDUtil.changeNullToEmpty(hisBillHashMap.get("trade_date"));
|
||||
|
||||
//接口厂商
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("payMethod",payMethod);
|
||||
addMap.put("tradingStatus",tradingStatus);
|
||||
addMap.put("bizType",bizType);
|
||||
addMap.put("payType",payType);
|
||||
addMap.put("tradeTime",tradeTime);
|
||||
addMap.put("hisOperCode",hisOperCode);
|
||||
addMap.put("amount",amount);
|
||||
addMap.put("remarks",remarks);
|
||||
addMap.put("platformTransId",platformTransId);
|
||||
addMap.put("patientId",patientId);
|
||||
addMap.put("patientName",patientName);
|
||||
addMap.put("trade_date",thistrade_date);
|
||||
addMap.put("his_wsdl_id",his_wsdl_id);
|
||||
|
||||
//如果是现金记录先放进现金集合内
|
||||
if (cash_code.equals(payType)){
|
||||
cashList.add(addMap);
|
||||
}else if (zhipiao.equals(payType)){
|
||||
zhipiaoList.add(addMap);
|
||||
}else{
|
||||
newAddList.add(addMap);
|
||||
}
|
||||
}
|
||||
|
||||
//循环现金记录 合并同操作员同交易日期 同类别的(门诊,住院) his获取,记录应该就是前一天的。
|
||||
HashMap<String,HashMap<Object,Object>> cashMap=new HashMap<>();
|
||||
for (int i = 0; i < cashList.size(); i++) {
|
||||
HashMap<Object, Object> hashMap = cashList.get(i);
|
||||
|
||||
String hisOperCode = StringDUtil.changeNullToEmpty(hashMap.get("hisOperCode"));
|
||||
String payMethod = StringDUtil.changeNullToEmpty(hashMap.get("payMethod"));
|
||||
String amount = StringDUtil.changeNullToEmpty(hashMap.get("amount"));
|
||||
|
||||
HashMap<Object, Object> map = cashMap.get(hisOperCode+"_"+payMethod);
|
||||
|
||||
if (map==null){
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("payMethod",payMethod);
|
||||
addMap.put("tradingStatus","");
|
||||
addMap.put("bizType","");
|
||||
addMap.put("payType",cash_code);
|
||||
addMap.put("tradeTime",trade_date+" 00:00:00");
|
||||
addMap.put("hisOperCode",hisOperCode);
|
||||
addMap.put("amount",amount);
|
||||
addMap.put("remarks","");
|
||||
addMap.put("platformTransId","");
|
||||
addMap.put("patientId","");
|
||||
addMap.put("patientName","");
|
||||
addMap.put("trade_date",trade_date);
|
||||
addMap.put("his_wsdl_id",his_wsdl_id);
|
||||
|
||||
cashMap.put(hisOperCode+"_"+payMethod,addMap);
|
||||
}else {
|
||||
String oldAmount = StringDUtil.changeNullToEmpty(map.get("amount"));
|
||||
String newAmount = new BigDecimal(oldAmount).add(new BigDecimal(amount)).toString();
|
||||
map.put("amount",newAmount);
|
||||
}
|
||||
}
|
||||
|
||||
//循环map 把记录放入要添加的集合
|
||||
for (String key:cashMap.keySet()){
|
||||
newAddList.add(cashMap.get(key));
|
||||
}
|
||||
|
||||
//循环支票的记录 和现金相同处理
|
||||
HashMap<String,HashMap<Object,Object>> zhipiaoMap=new HashMap<>();
|
||||
for (int i = 0; i < zhipiaoList.size(); i++) {
|
||||
HashMap<Object, Object> hashMap = zhipiaoList.get(i);
|
||||
|
||||
String hisOperCode = StringDUtil.changeNullToEmpty(hashMap.get("hisOperCode"));
|
||||
String payMethod = StringDUtil.changeNullToEmpty(hashMap.get("payMethod"));
|
||||
String amount = StringDUtil.changeNullToEmpty(hashMap.get("amount"));
|
||||
String payType = StringDUtil.changeNullToEmpty(hashMap.get("payType"));
|
||||
|
||||
HashMap<Object, Object> map = zhipiaoMap.get(hisOperCode+"_"+payMethod);
|
||||
|
||||
if (map==null){
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("payMethod",payMethod);
|
||||
addMap.put("tradingStatus","");
|
||||
addMap.put("bizType","");
|
||||
addMap.put("payType",payType);
|
||||
addMap.put("tradeTime",trade_date+" 00:00:00");
|
||||
addMap.put("hisOperCode",hisOperCode);
|
||||
addMap.put("amount",amount);
|
||||
addMap.put("remarks","");
|
||||
addMap.put("platformTransId","");
|
||||
addMap.put("patientId","");
|
||||
addMap.put("patientName","");
|
||||
addMap.put("trade_date",trade_date);
|
||||
addMap.put("his_wsdl_id",his_wsdl_id);
|
||||
|
||||
zhipiaoMap.put(hisOperCode+"_"+payMethod,addMap);
|
||||
}else {
|
||||
String oldAmount = StringDUtil.changeNullToEmpty(map.get("amount"));
|
||||
String newAmount = new BigDecimal(oldAmount).add(new BigDecimal(amount)).toString();
|
||||
map.put("amount",newAmount);
|
||||
}
|
||||
}
|
||||
|
||||
//循环map 把记录放入要添加的集合
|
||||
for (String key:zhipiaoMap.keySet()){
|
||||
newAddList.add(zhipiaoMap.get(key));
|
||||
}
|
||||
|
||||
//存一份his针对要调整的字段修改的
|
||||
hisDetailService.insertHisBillList(newAddList,trade_date,his_wsdl_id);
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
errCode="999";
|
||||
errMsg="执行定时任务【"+name+"】出错,原因:"+e.getMessage();
|
||||
}
|
||||
|
||||
//存储记录
|
||||
try {
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("trade_date",trade_date);
|
||||
addMap.put("quartz_id",id);
|
||||
addMap.put("quartz_name",name);
|
||||
addMap.put("his_wsdl_id",his_wsdl_id);
|
||||
|
||||
if ("0".equals(errCode)){
|
||||
addMap.put("is_ok","1");
|
||||
}else {
|
||||
addMap.put("is_ok","0");
|
||||
}
|
||||
|
||||
addMap.put("modify_time",DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
hisBillLogService.insertHisbillGetinfo(addMap);
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
errCode="999";
|
||||
errMsg="保存His获取的记录失败,原因"+e.getMessage();
|
||||
}
|
||||
|
||||
if (!"0".equals(errCode)){
|
||||
try {
|
||||
//记录日志
|
||||
LogUtil.error(this.getClass(), errMsg);
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
responseMap.put("errCode",errCode);
|
||||
responseMap.put("errMsg",errMsg);
|
||||
return responseMap;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,409 @@
|
||||
package com.saye.hospitalgd.scheduler.jobMethod;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.saye.hospitalgd.commons.date.DateDUtil;
|
||||
import com.saye.hospitalgd.commons.getBean.GetBeanUtil;
|
||||
import com.saye.hospitalgd.commons.log.LogUtil;
|
||||
import com.saye.hospitalgd.commons.string.StringDUtil;
|
||||
import com.saye.hospitalgd.model.Dicinfo;
|
||||
import com.saye.hospitalgd.service.HisDetailService;
|
||||
import com.saye.hospitalgd.service.HisInterFaceConfigService;
|
||||
import com.saye.hospitalgd.service.OperatorService;
|
||||
import com.saye.hospitalgd.service.historyLog.HisBillLogService;
|
||||
import com.saye.hospitalgd.service.historyLog.impl.HisBillLogServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.HisDetailServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.HisInterFaceConfigServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.OperatorServiceImpl;
|
||||
import com.saye.hospitalgd.service.system.DicinfoService;
|
||||
import com.saye.hospitalgd.service.system.ServiceParamsService;
|
||||
import com.saye.hospitalgd.service.system.impl.DicinfoServiceImpl;
|
||||
import com.saye.hospitalgd.service.system.impl.ServiceParamsServiceImpl;
|
||||
import com.saye.hospitalgd.util.HisUtil;
|
||||
import org.dom4j.Element;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author thuang
|
||||
* @version 1.0
|
||||
* @description: His获取数据方法(卫宁)
|
||||
* @date 2021/9/30 13:41
|
||||
*/
|
||||
public class HISGetDataMethodByWN {
|
||||
|
||||
public HashMap<Object,Object> getDate(String id,String name,String trade_date,String his_wsdl_id){
|
||||
HashMap<Object,Object> responseMap=new HashMap<>();
|
||||
String errCode="0";
|
||||
String errMsg="";
|
||||
|
||||
HisBillLogService hisBillLogService = GetBeanUtil.getBean(HisBillLogServiceImpl.class);
|
||||
HisDetailService hisDetailService = GetBeanUtil.getBean(HisDetailServiceImpl.class);
|
||||
OperatorService operatorService = GetBeanUtil.getBean(OperatorServiceImpl.class);
|
||||
DicinfoService dicinfoService = GetBeanUtil.getBean(DicinfoServiceImpl.class);
|
||||
|
||||
ServiceParamsService serviceParamsService = GetBeanUtil.getBean(ServiceParamsServiceImpl.class);
|
||||
|
||||
HisInterFaceConfigService hisInterFaceConfigService = GetBeanUtil.getBean(HisInterFaceConfigServiceImpl.class);
|
||||
|
||||
try {
|
||||
//查询需要用到的参数
|
||||
|
||||
//his接口地址
|
||||
List<HashMap<Object, Object>> hisConfigList = hisInterFaceConfigService.findConfigById(his_wsdl_id);
|
||||
String his_wsdl = StringDUtil.changeNullToEmpty(hisConfigList.get(0).get("HIS_INTERFACE_WSDL"));
|
||||
String code = StringDUtil.changeNullToEmpty(hisConfigList.get(0).get("CODE"));
|
||||
String partner = StringDUtil.changeNullToEmpty(hisConfigList.get(0).get("PARTNER"));
|
||||
String sign = StringDUtil.changeNullToEmpty(hisConfigList.get(0).get("SIGN"));
|
||||
String operid = StringDUtil.changeNullToEmpty(hisConfigList.get(0).get("OPERID"));
|
||||
String password = StringDUtil.changeNullToEmpty(hisConfigList.get(0).get("PASSWORD"));
|
||||
String kfsdm = StringDUtil.changeNullToEmpty(hisConfigList.get(0).get("KFSDM"));
|
||||
|
||||
//现金支付方式
|
||||
List<HashMap<Object, Object>> serviceParams = serviceParamsService.findParamValByParamCode("cash_code");
|
||||
String cash_code = StringDUtil.changeNullToEmpty(serviceParams.get(0).get("PARAM_VAL"));
|
||||
|
||||
//his端其他支付方式 也单独处理 因为里面没有唯一id 且都是支票记录
|
||||
String zhipiao="5";
|
||||
|
||||
//操作员号
|
||||
List<HashMap<Object,Object>> operators = operatorService.findAllOperator(new HashMap<Object,Object>());
|
||||
//将操作员号用逗号连接
|
||||
String operatorsCodeStr="";
|
||||
for (int i = 0; i < operators.size(); i++) {
|
||||
HashMap<Object, Object> hashMap = operators.get(i);
|
||||
operatorsCodeStr =operatorsCodeStr + StringDUtil.changeNullToEmpty(hashMap.get("HISOPERCODE")) + ",";
|
||||
}
|
||||
if (operatorsCodeStr.length()>0){
|
||||
operatorsCodeStr=operatorsCodeStr.substring(0,operatorsCodeStr.length()-1);
|
||||
}
|
||||
|
||||
//全部支付方式
|
||||
List<Dicinfo> pay_type = dicinfoService.findDicinfoTreeNodeList("PAY_TYPE");
|
||||
HashMap<String,String> payTypeMap=new HashMap<>();
|
||||
for (Dicinfo dicinfo : pay_type) {
|
||||
payTypeMap.put( dicinfo.getDicname(),dicinfo.getDicvalue());
|
||||
}
|
||||
|
||||
|
||||
//开始结束时间
|
||||
String startTime="";
|
||||
String endTime="";
|
||||
if ("".equals(trade_date)) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
calendar.add(Calendar.DATE, -1);
|
||||
Date time = calendar.getTime();
|
||||
|
||||
startTime = DateDUtil.DateToStr(DateDUtil.yyyyMMdd, time);
|
||||
endTime = startTime;
|
||||
trade_date=DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, time);
|
||||
}else {
|
||||
Date date = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd, trade_date);
|
||||
|
||||
startTime = DateDUtil.DateToStr(DateDUtil.yyyyMMdd,date);
|
||||
endTime = startTime;
|
||||
}
|
||||
|
||||
String timestamp = DateDUtil.getCurrentDate(DateDUtil.yyyyMMddHHmmss);
|
||||
|
||||
//组织request
|
||||
String requestStr="";
|
||||
requestStr="<request>" +
|
||||
" <partner>"+ partner +"</partner>" +
|
||||
" <sign>"+sign+"</sign>" +
|
||||
" <timestamp>"+timestamp+"</timestamp>" +
|
||||
" <operid>"+operid+"</operid>" +
|
||||
" <password>"+password+"</password>" +
|
||||
" <kfsdm>"+kfsdm+"</kfsdm>" +
|
||||
" <params>" +
|
||||
" <ksrq>"+startTime+"</ksrq>" +
|
||||
" <jsrq>"+endTime+"</jsrq>" +
|
||||
" <czyh></czyh>" +
|
||||
"</params>" +
|
||||
"</request>";
|
||||
|
||||
//获取数据
|
||||
HisUtil hisUtil = new HisUtil();
|
||||
HashMap<String, String> histData = hisUtil.getHisDataByWN(his_wsdl, code, requestStr);
|
||||
|
||||
errCode = histData.get("errCode");
|
||||
if (!"0".equals(errCode)){
|
||||
errMsg=histData.get("errMsg");
|
||||
}else {
|
||||
String dataStr = histData.get("dataStr");
|
||||
|
||||
//分析数据,判断调用正确与否
|
||||
HashMap<String, Object> hisBillResult = hisUtil.managerDataStrByWN(dataStr);
|
||||
errCode = StringDUtil.changeNullToEmpty(hisBillResult.get("errCode"));
|
||||
if (!"0".equals(errCode)){
|
||||
errMsg=StringDUtil.changeNullToEmpty(hisBillResult.get("errMsg"));
|
||||
}else {
|
||||
List<HashMap<Object,Object>> hisBillList = (List<HashMap<Object,Object>>)hisBillResult.get("addList");
|
||||
//存一份his原始的
|
||||
hisDetailService.insertHisBillOriginalWN(hisBillList,trade_date,his_wsdl_id);
|
||||
|
||||
//将原始的转换成统一格式
|
||||
List<HashMap<Object,Object>> newAddList= new ArrayList<>();
|
||||
|
||||
List<HashMap<Object,Object>> cashList= new ArrayList<>();
|
||||
|
||||
List<HashMap<Object,Object>> zhipiaoList= new ArrayList<>();
|
||||
|
||||
|
||||
for (int i = 0; i < hisBillList.size(); i++) {
|
||||
HashMap<Object, Object> objectObjectHashMap = hisBillList.get(i);
|
||||
|
||||
//数据类型 sjlx
|
||||
String payMethod = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("sjlx"));
|
||||
if("门诊".equals(payMethod)){
|
||||
payMethod="1";
|
||||
}else {
|
||||
payMethod="2";
|
||||
}
|
||||
|
||||
//过滤不需要的数据 当数据类型是住院的时候 345689是不必要的数据。 不会存在于银联商务平台 所以对账不需要这个数据
|
||||
// 门诊 sftkjl 0收费,1退费
|
||||
// 住院 sftkjl 0:预交金收1:预交金红冲2:结算收退款(包含出院结算收退, 在院结算收)3:在院结算结转4:取消结算结转(取消结算后病人的预交金)5:取消结算红冲6:取消结算收退(对应操作类别2)8:结算收入(发票金额)9:取消结算收入(取消的发票金额)
|
||||
if ("2".equals(payMethod)){
|
||||
String sftkjl = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("sftkjl"));
|
||||
//判断 只要不是这三个的跳过。
|
||||
if (!("0".equals(sftkjl) || "1".equals(sftkjl) || "2".equals(sftkjl))){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//交易状态
|
||||
String jyje = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("jyje"));
|
||||
String tyje = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("tyje"));
|
||||
String tradingStatus="";
|
||||
if (new BigDecimal(jyje).compareTo(new BigDecimal(0))==0){
|
||||
tradingStatus="2";
|
||||
}else if (new BigDecimal(tyje).compareTo(new BigDecimal(0))==0){
|
||||
tradingStatus="1";
|
||||
}
|
||||
|
||||
//业务类型
|
||||
//卫宁 交易类型 1 挂号 2 缴费 3 门诊充值 4 住院预交金
|
||||
//统一转成 业务类型1-门诊收费 2-门诊预交 3-住院预交 4-门诊挂号 5-门诊发卡 6-住院结算
|
||||
String bizType = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("jylx"));
|
||||
if ("1".equals(bizType)){
|
||||
bizType="4";
|
||||
}else if ("2".equals(bizType)){
|
||||
bizType="1";
|
||||
}else if ("3".equals(bizType)){
|
||||
bizType="2";
|
||||
}else if("4".equals(bizType)){
|
||||
bizType="3";
|
||||
}
|
||||
|
||||
//支付方式
|
||||
//中联
|
||||
// -1-其他 0-帐户余额 1-刷卡
|
||||
// 2-微信支付 3-支付宝支付
|
||||
// 4-聚合支付 5-自助现金 6-云闪付
|
||||
|
||||
//卫宁 传输的中文
|
||||
// 扫码支付
|
||||
// 银行卡支付
|
||||
// 掌医支付
|
||||
// 现金支付
|
||||
// 其他
|
||||
String payType = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("zffs"));
|
||||
//将中文转为字典对应值
|
||||
payType = payTypeMap.get(payType);
|
||||
|
||||
//交易时间
|
||||
String tradeTime = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("jyrq"));
|
||||
//卫宁的日期格式为yyyyMMddHH:mm:ss 格式化日期为 yyyy-MM-dd HH:mm:ss
|
||||
tradeTime = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd_HH_mm_ss, DateDUtil.strToDate(DateDUtil.yyyyMMddHH_mm_ss, tradeTime));
|
||||
|
||||
//操作员号
|
||||
String hisOperCode = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("czyh"));
|
||||
|
||||
//交易金额
|
||||
String amount="0";
|
||||
if ("1".equals(tradingStatus)){
|
||||
amount=jyje;
|
||||
}else if ("2".equals(tradingStatus)){
|
||||
//退款转为负数
|
||||
amount=new BigDecimal(tyje).negate().toString();
|
||||
}
|
||||
//格式化金额 原先小数四位 有效两位
|
||||
amount = new BigDecimal(amount).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
|
||||
|
||||
//备注 卫宁直接为空
|
||||
String remarks="";
|
||||
|
||||
//平台交易号 zflsh
|
||||
String platformTransId = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("zflsh"));
|
||||
|
||||
//患者标识
|
||||
String patientId = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("patid"));
|
||||
|
||||
//患者姓名
|
||||
String patientName = StringDUtil.changeNullToEmpty(objectObjectHashMap.get("hzxm"));
|
||||
|
||||
//交易日期
|
||||
String thistrade_date="";
|
||||
if (tradeTime.length()>10){
|
||||
thistrade_date = tradeTime.substring(0,10);
|
||||
}
|
||||
|
||||
//接口厂商
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("payMethod",payMethod);
|
||||
addMap.put("tradingStatus",tradingStatus);
|
||||
addMap.put("bizType",bizType);
|
||||
addMap.put("payType",payType);
|
||||
addMap.put("tradeTime",tradeTime);
|
||||
addMap.put("hisOperCode",hisOperCode);
|
||||
addMap.put("amount",amount);
|
||||
addMap.put("remarks",remarks);
|
||||
addMap.put("platformTransId",platformTransId);
|
||||
addMap.put("patientId",patientId);
|
||||
addMap.put("patientName",patientName);
|
||||
addMap.put("trade_date",thistrade_date);
|
||||
addMap.put("his_wsdl_id",his_wsdl_id);
|
||||
|
||||
//如果是现金记录先放进现金集合内
|
||||
if (cash_code.equals(payType)){
|
||||
cashList.add(addMap);
|
||||
}else if (zhipiao.equals(payType)){
|
||||
zhipiaoList.add(addMap);
|
||||
}else{
|
||||
newAddList.add(addMap);
|
||||
}
|
||||
}
|
||||
|
||||
//循环现金记录 合并同操作员同交易日期 同类别的(门诊,住院) his获取,记录应该就是前一天的。
|
||||
HashMap<String,HashMap<Object,Object>> cashMap=new HashMap<>();
|
||||
for (int i = 0; i < cashList.size(); i++) {
|
||||
HashMap<Object, Object> hashMap = cashList.get(i);
|
||||
|
||||
String hisOperCode = StringDUtil.changeNullToEmpty(hashMap.get("hisOperCode"));
|
||||
String payMethod = StringDUtil.changeNullToEmpty(hashMap.get("payMethod"));
|
||||
String amount = StringDUtil.changeNullToEmpty(hashMap.get("amount"));
|
||||
|
||||
HashMap<Object, Object> map = cashMap.get(hisOperCode+"_"+payMethod);
|
||||
|
||||
if (map==null){
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("payMethod",payMethod);
|
||||
addMap.put("tradingStatus","");
|
||||
addMap.put("bizType","");
|
||||
addMap.put("payType",cash_code);
|
||||
addMap.put("tradeTime",trade_date+" 00:00:00");
|
||||
addMap.put("hisOperCode",hisOperCode);
|
||||
addMap.put("amount",amount);
|
||||
addMap.put("remarks","");
|
||||
addMap.put("platformTransId","");
|
||||
addMap.put("patientId","");
|
||||
addMap.put("patientName","");
|
||||
addMap.put("trade_date",trade_date);
|
||||
addMap.put("his_wsdl_id",his_wsdl_id);
|
||||
|
||||
cashMap.put(hisOperCode+"_"+payMethod,addMap);
|
||||
}else {
|
||||
String oldAmount = StringDUtil.changeNullToEmpty(map.get("amount"));
|
||||
String newAmount = new BigDecimal(oldAmount).add(new BigDecimal(amount)).toString();
|
||||
map.put("amount",newAmount);
|
||||
}
|
||||
}
|
||||
|
||||
//循环map 把记录放入要添加的集合
|
||||
for (String key:cashMap.keySet()){
|
||||
newAddList.add(cashMap.get(key));
|
||||
}
|
||||
|
||||
//循环支票的记录 和现金相同处理
|
||||
HashMap<String,HashMap<Object,Object>> zhipiaoMap=new HashMap<>();
|
||||
for (int i = 0; i < zhipiaoList.size(); i++) {
|
||||
HashMap<Object, Object> hashMap = zhipiaoList.get(i);
|
||||
|
||||
String hisOperCode = StringDUtil.changeNullToEmpty(hashMap.get("hisOperCode"));
|
||||
String payMethod = StringDUtil.changeNullToEmpty(hashMap.get("payMethod"));
|
||||
String amount = StringDUtil.changeNullToEmpty(hashMap.get("amount"));
|
||||
String payType = StringDUtil.changeNullToEmpty(hashMap.get("payType"));
|
||||
|
||||
HashMap<Object, Object> map = zhipiaoMap.get(hisOperCode+"_"+payMethod);
|
||||
|
||||
if (map==null){
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("payMethod",payMethod);
|
||||
addMap.put("tradingStatus","");
|
||||
addMap.put("bizType","");
|
||||
addMap.put("payType",payType);
|
||||
addMap.put("tradeTime",trade_date+" 00:00:00");
|
||||
addMap.put("hisOperCode",hisOperCode);
|
||||
addMap.put("amount",amount);
|
||||
addMap.put("remarks","");
|
||||
addMap.put("platformTransId","");
|
||||
addMap.put("patientId","");
|
||||
addMap.put("patientName","");
|
||||
addMap.put("trade_date",trade_date);
|
||||
addMap.put("his_wsdl_id",his_wsdl_id);
|
||||
|
||||
zhipiaoMap.put(hisOperCode+"_"+payMethod,addMap);
|
||||
}else {
|
||||
String oldAmount = StringDUtil.changeNullToEmpty(map.get("amount"));
|
||||
String newAmount = new BigDecimal(oldAmount).add(new BigDecimal(amount)).toString();
|
||||
map.put("amount",newAmount);
|
||||
}
|
||||
}
|
||||
|
||||
//循环map 把记录放入要添加的集合
|
||||
for (String key:zhipiaoMap.keySet()){
|
||||
newAddList.add(zhipiaoMap.get(key));
|
||||
}
|
||||
|
||||
//存一份his针对要调整的字段修改的
|
||||
hisDetailService.insertHisBillList(newAddList,trade_date,his_wsdl_id);
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
errCode="999";
|
||||
errMsg="执行定时任务【"+name+"】出错,原因:"+e.getMessage();
|
||||
}
|
||||
|
||||
//存储记录
|
||||
try {
|
||||
HashMap<Object,Object> addMap=new HashMap<>();
|
||||
addMap.put("trade_date",trade_date);
|
||||
addMap.put("quartz_id",id);
|
||||
addMap.put("quartz_name",name);
|
||||
addMap.put("his_wsdl_id",his_wsdl_id);
|
||||
|
||||
if ("0".equals(errCode)){
|
||||
addMap.put("is_ok","1");
|
||||
}else {
|
||||
addMap.put("is_ok","0");
|
||||
}
|
||||
|
||||
addMap.put("modify_time",DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
hisBillLogService.insertHisbillGetinfo(addMap);
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
errCode="999";
|
||||
errMsg="保存His获取的记录失败,原因"+e.getMessage();
|
||||
}
|
||||
|
||||
if (!"0".equals(errCode)){
|
||||
try {
|
||||
//记录日志
|
||||
LogUtil.error(this.getClass(), errMsg);
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
responseMap.put("errCode",errCode);
|
||||
responseMap.put("errMsg",errMsg);
|
||||
return responseMap;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package com.saye.hospitalgd.scheduler.jobMethod;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.saye.hospitalgd.commons.date.DateDUtil;
|
||||
import com.saye.hospitalgd.commons.getBean.GetBeanUtil;
|
||||
import com.saye.hospitalgd.commons.log.LogUtil;
|
||||
import com.saye.hospitalgd.commons.string.StringDUtil;
|
||||
import com.saye.hospitalgd.entity.HisbillsHistory;
|
||||
import com.saye.hospitalgd.service.HisInterFaceConfigService;
|
||||
import com.saye.hospitalgd.service.HisbillsHistoryService;
|
||||
import com.saye.hospitalgd.service.historyLog.HisBillLogService;
|
||||
import com.saye.hospitalgd.service.historyLog.impl.HisBillLogServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.HisInterFaceConfigServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.HisbillsHistoryServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author thuang
|
||||
* @version 1.0
|
||||
* @description: His获取数据方法(中联)
|
||||
* @date 2021/9/30 13:41
|
||||
*/
|
||||
@Slf4j
|
||||
public class HISGetDataMethodByZL {
|
||||
|
||||
public HashMap<Object, Object> getDate(String id, String name, String trade_date, String his_wsdl_id) {
|
||||
|
||||
HashMap<Object, Object> responseMap = new HashMap<>();
|
||||
String errCode = "0";
|
||||
String errMsg = "";
|
||||
|
||||
HisBillLogService hisBillLogService = GetBeanUtil.getBean(HisBillLogServiceImpl.class);
|
||||
|
||||
// HisDetailService hisDetailService = GetBeanUtil.getBean(HisDetailServiceImpl.class);
|
||||
HisbillsHistoryService hisbillsHistoryService = GetBeanUtil.getBean(HisbillsHistoryServiceImpl.class);
|
||||
|
||||
HisInterFaceConfigService hisInterFaceConfigService = GetBeanUtil.getBean(HisInterFaceConfigServiceImpl.class);
|
||||
|
||||
try {
|
||||
//查询需要用到的参数
|
||||
|
||||
//his接口地址
|
||||
List<HashMap<Object, Object>> hisConfigList = hisInterFaceConfigService.findConfigById(his_wsdl_id);
|
||||
String his_wsdl = StringDUtil.changeNullToEmpty(hisConfigList.get(0).get("HIS_INTERFACE_WSDL"));
|
||||
//开始结束时间
|
||||
|
||||
String startTime = "";
|
||||
String endTime = "";
|
||||
if ("".equals(trade_date)) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
calendar.add(Calendar.DATE, -1);
|
||||
Date time = calendar.getTime();
|
||||
|
||||
startTime = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, time) + " 00:00:00";
|
||||
endTime = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, new Date()) + " 00:00:00";
|
||||
trade_date = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, time);
|
||||
} else {
|
||||
startTime = trade_date + " 00:00:00";
|
||||
Date date = DateDUtil.strToDate(DateDUtil.yyyy_MM_dd, trade_date);
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(date);
|
||||
calendar.add(Calendar.DATE, 1);
|
||||
endTime = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, calendar.getTime()) + " 00:00:00";
|
||||
}
|
||||
log.info("开始时间:" + startTime);
|
||||
log.info("结束时间:" + endTime);
|
||||
|
||||
List<HisbillsHistory> hisbillsHistories = new ArrayList<>();
|
||||
|
||||
//组织request
|
||||
JSONObject requestBody = new JSONObject();
|
||||
requestBody.putOnce("hospitalNo", "45776913-5").putOnce("source", "ZZJ").putOnce("HisOperCode", "ZZJ001,ZZJ002,ZZJ003,ZZJ004,ZZJ005").putOnce("StartTime", startTime).putOnce("EndTime", endTime);
|
||||
|
||||
String body = HttpUtil.createPost(his_wsdl).body(JSONUtil.toJsonStr(requestBody)).execute().body();
|
||||
|
||||
JSONObject entries = JSONUtil.parseObj(body);
|
||||
|
||||
if (entries.get("ret_code").equals("0")) {//响应成功
|
||||
Object o = entries.get("data");
|
||||
log.info("o is :" + o);
|
||||
JSONArray objects = JSONUtil.parseArray(o);
|
||||
log.info("objects is :" + objects);
|
||||
hisbillsHistories = JSONUtil.toList(objects, HisbillsHistory.class);
|
||||
} else {
|
||||
errCode = "999";
|
||||
errMsg = "his 接口调用失败";
|
||||
}
|
||||
if (CollUtil.isNotEmpty(hisbillsHistories)) {
|
||||
//存一份his原始的
|
||||
hisbillsHistoryService.saveHisbillsOriginalData(hisbillsHistories, trade_date);
|
||||
hisbillsHistoryService.saveHisbillsHistoryData(hisbillsHistories, trade_date);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
errCode = "999";
|
||||
errMsg = "执行定时任务【" + name + "】出错,原因:" + e.getMessage();
|
||||
}
|
||||
|
||||
//存储记录
|
||||
try {
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
addMap.put("trade_date", trade_date);
|
||||
addMap.put("quartz_id", id);
|
||||
addMap.put("quartz_name", name);
|
||||
addMap.put("his_wsdl_id", his_wsdl_id);
|
||||
|
||||
if ("0".equals(errCode)) {
|
||||
addMap.put("is_ok", "1");
|
||||
} else {
|
||||
addMap.put("is_ok", "0");
|
||||
}
|
||||
|
||||
addMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
hisBillLogService.insertHisbillGetinfo(addMap);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
errCode = "999";
|
||||
errMsg = "保存His获取的记录失败,原因" + e.getMessage();
|
||||
}
|
||||
|
||||
if (!"0".equals(errCode)) {
|
||||
try {
|
||||
//记录日志
|
||||
LogUtil.error(this.getClass(), errMsg);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
responseMap.put("errCode", errCode);
|
||||
responseMap.put("errMsg", errMsg);
|
||||
return responseMap;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,901 @@
|
||||
package com.saye.hospitalgd.scheduler.jobMethod;
|
||||
|
||||
import com.saye.hospitalgd.commons.date.DateDUtil;
|
||||
import com.saye.hospitalgd.commons.getBean.GetBeanUtil;
|
||||
import com.saye.hospitalgd.commons.string.StringDUtil;
|
||||
import com.saye.hospitalgd.commons.uuid.UUIDGenerator;
|
||||
import com.saye.hospitalgd.service.*;
|
||||
import com.saye.hospitalgd.service.historyLog.ReconciliationLogService;
|
||||
import com.saye.hospitalgd.service.historyLog.impl.ReconciliationLogServiceImpl;
|
||||
import com.saye.hospitalgd.service.impl.*;
|
||||
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author thuang
|
||||
* @version 1.0
|
||||
* @description: 对账方法
|
||||
* @date 2021/9/30 13:45
|
||||
*/
|
||||
public class ReconciliationMethod {
|
||||
|
||||
public HashMap<Object, Object> getDate(String id, String name, String trade_date, String userName) {
|
||||
HashMap<Object, Object> responseMap = new HashMap<>();
|
||||
String errCode = "0";
|
||||
String errMsg = "";
|
||||
|
||||
if ("".equals(trade_date)) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
calendar.add(Calendar.DATE, -1);
|
||||
Date time = calendar.getTime();
|
||||
trade_date = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, time);
|
||||
}
|
||||
|
||||
|
||||
//查询获取记录的情况,没有的生成一条失败的记录 原因XX未下载完成
|
||||
// HisBillLogService hisBillLogService = GetBeanUtil.getBean(HisBillLogServiceImpl.class);
|
||||
BankbillsHistoryService bankbillsHistoryService = GetBeanUtil.getBean(BankbillsHistoryServiceImpl.class);
|
||||
|
||||
|
||||
ReconciliationLogService reconciliationLogService = GetBeanUtil.getBean(ReconciliationLogServiceImpl.class);
|
||||
// ServiceParamsService serviceParamsService = GetBeanUtil.getBean(ServiceParamsServiceImpl.class);
|
||||
|
||||
|
||||
HisbillsHistoryService hisbillsHistoryService = GetBeanUtil.getBean(HisbillsHistoryServiceImpl.class);
|
||||
|
||||
|
||||
//记录是第几次对账
|
||||
int managerNum = 0;
|
||||
try {
|
||||
HashMap<Object, Object> searchMap = new HashMap<>();
|
||||
searchMap.put("trade_date", trade_date);
|
||||
searchMap.put("is_ok", 1);
|
||||
|
||||
//先判断是否已生成
|
||||
List<HashMap<Object, Object>> reconciliationLog = reconciliationLogService.findReconciliationLogByParam(searchMap);
|
||||
|
||||
if (reconciliationLog.size() > 0) {
|
||||
managerNum = Integer.parseInt(StringDUtil.changeNullToEmpty(reconciliationLog.get(0).get("MANAGER_NUM")));
|
||||
}
|
||||
|
||||
//查询his和三方记录
|
||||
List<HashMap<Object, Object>> hisbillsList = hisbillsHistoryService.findHisBillsByDate(searchMap);
|
||||
|
||||
List<HashMap<Object, Object>> bankbillsList = bankbillsHistoryService.findBankBillsByDate(searchMap);
|
||||
//his 和三方都有记录且成功
|
||||
if (hisbillsList.size() > 0 && bankbillsList.size() > 0) {
|
||||
|
||||
|
||||
TransactionDetailService transactionDetailService = GetBeanUtil.getBean(TransactionDetailServiceImpl.class);
|
||||
UnilateralService unilateralService = GetBeanUtil.getBean(UnilateralServiceImpl.class);
|
||||
|
||||
//先创建关联表 用来后面查询交易明细
|
||||
// searchMap.put("cash_code", cash_code);
|
||||
transactionDetailService.insertHisAndThirdJoinData(searchMap);
|
||||
|
||||
|
||||
//查询当天所有账单
|
||||
List<HashMap<Object, Object>> errJoinDataList = transactionDetailService.findHisAndThirdJoinDataByParam(searchMap);
|
||||
|
||||
//删除当天单边账表的记录保留人工处理过的记录
|
||||
unilateralService.deleteUnilateralByNoManager(searchMap);
|
||||
|
||||
//循环所有情况 比对单边账表 产生单边账表数据
|
||||
for (int i = 0; i < errJoinDataList.size(); i++) {
|
||||
HashMap<Object, Object> hashMap = errJoinDataList.get(i);
|
||||
String err_type = StringDUtil.changeNullToEmpty(hashMap.get("ERR_TYPE"));
|
||||
String check_result = StringDUtil.changeNullToEmpty(hashMap.get("CHECK_RESULT"));
|
||||
|
||||
|
||||
//银行表提取出的对账有用信息,his与第三方账单结合后整理出的有用数据
|
||||
String jysj = StringDUtil.changeNullToEmpty(hashMap.get("JYSJ"));
|
||||
String i_ddh = StringDUtil.changeNullToEmpty(hashMap.get("I_DDH"));
|
||||
String i_jylx = StringDUtil.changeNullToEmpty(hashMap.get("I_JYLX"));
|
||||
String i_jyje = StringDUtil.changeNullToEmpty(hashMap.get("I_JYJE"));
|
||||
String i_jyqd = StringDUtil.changeNullToEmpty(hashMap.get("I_JYQD"));
|
||||
|
||||
|
||||
//his表提取出的对账有用信息,his与第三方账单结合后整理出的有用数据
|
||||
String tranid = StringDUtil.changeNullToEmpty(hashMap.get("TRANID"));
|
||||
String h_jylx = StringDUtil.changeNullToEmpty(hashMap.get("H_JYLX"));
|
||||
String payType = StringDUtil.changeNullToEmpty(hashMap.get("PAYTYPE"));
|
||||
String biztype = StringDUtil.changeNullToEmpty(hashMap.get("BIZTYPE"));
|
||||
String amount = StringDUtil.changeNullToEmpty(hashMap.get("AMOUNT"));
|
||||
String hisopernum = StringDUtil.changeNullToEmpty(hashMap.get("HISOPERNUM")); //his系统获取的操作员号
|
||||
String thistrade_date = StringDUtil.changeNullToEmpty(hashMap.get("TRADE_DATE"));
|
||||
|
||||
String tradeTime = StringDUtil.changeNullToEmpty(hashMap.get("TRADETIME"));
|
||||
|
||||
|
||||
//由于假设第二天获取的记录为第一天的, 由于查询是根据消费日期的记录是第二天的。所以相关只有第二天的账
|
||||
//而要对比第一天,只能重新执行第一天的对账。
|
||||
if ("0".equals(check_result)) {
|
||||
//查询历史是否有对应记录 前面全删了对齐的以前只可能是单边账 如果人工改了那就不动,如果没改那也已经被删了
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
//数据库中对比完是只有三种状态 his单边 三方单边 差异 分别判断3种账单实际情况 如单边是因为跨天
|
||||
//err_type 1 his单边 2 三方单边 3 差异
|
||||
if ("1".equals(check_result) && "1".equals(err_type)) {
|
||||
//his单边账 查询历史单边账表是否是否已有记录 有不动 没有添加
|
||||
List<HashMap<Object, Object>> unilateralList = null;
|
||||
HashMap<Object, Object> noCashSearchMap = new HashMap<>();
|
||||
noCashSearchMap.put("tranid", tranid);
|
||||
noCashSearchMap.put("h_jylx", h_jylx);
|
||||
noCashSearchMap.put("trade_date", thistrade_date);
|
||||
unilateralList = unilateralService.findUnilateralByParam(noCashSearchMap);
|
||||
// }
|
||||
|
||||
//如果没有对应单边账记录
|
||||
if (!(unilateralList != null && unilateralList.size() > 0)) {
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
|
||||
//生成记录
|
||||
addMap.put("id", UUIDGenerator.getUUID());
|
||||
addMap.put("payType", payType);
|
||||
addMap.put("tranID", tranid);
|
||||
addMap.put("h_jylx", h_jylx);
|
||||
addMap.put("trade_date", thistrade_date);
|
||||
addMap.put("hisOperNum", hisopernum);
|
||||
addMap.put("amount", amount);
|
||||
addMap.put("i_jyje", "");
|
||||
addMap.put("i_jylx", "");
|
||||
addMap.put("i_ddh", "");
|
||||
addMap.put("i_jyqd", "");
|
||||
addMap.put("trade_time", tradeTime);
|
||||
addMap.put("is_manager", "0");
|
||||
addMap.put("manager_time", "");
|
||||
addMap.put("err_type", err_type);
|
||||
addMap.put("remark", "");
|
||||
addMap.put("create_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addMap.put("join_id", "");
|
||||
|
||||
unilateralService.insertUnilateral(addMap);
|
||||
} else {
|
||||
//如果有记录 将查询处理方式 将记录对应的处理修改
|
||||
String managerType = StringDUtil.changeNullToEmpty(unilateralList.get(0).get("MANAGERTYPE"));
|
||||
|
||||
//如果处理方式是其他 不用修改 如果处理方式是不计统计那样需要将此数据标志为无效
|
||||
if ("2".equals(managerType)) {
|
||||
HashMap<Object, Object> updateMap = new HashMap<>();
|
||||
// updateMap.put("payMethod", payMethod);
|
||||
updateMap.put("payType", payType);
|
||||
updateMap.put("hisOperNum", hisopernum);
|
||||
updateMap.put("trade_date", thistrade_date);
|
||||
updateMap.put("tranID", tranid);
|
||||
updateMap.put("h_jylx", h_jylx);
|
||||
updateMap.put("i_jylx", i_jylx);
|
||||
updateMap.put("is_active", "0");
|
||||
transactionDetailService.updateJoinSetActiveByHis(updateMap);
|
||||
}
|
||||
}
|
||||
|
||||
//非现金账还可能出现跨天账
|
||||
// if (!(cash_code.equals(payType))) {
|
||||
//查询是否有这条记录对应的三方记录
|
||||
//用his的工行订单号去查找与第三方订单号相同的对应的记录,这里不按时间来筛查,可以查到跨天相同订单号的跨天帐
|
||||
HashMap<Object, Object> lastDaySearchMap = new HashMap<>();
|
||||
lastDaySearchMap.put("i_ddh", tranid);
|
||||
lastDaySearchMap.put("i_jylx", h_jylx);
|
||||
|
||||
List<HashMap<Object, Object>> list = new ArrayList<>();
|
||||
if (!"".equals(tranid)) {
|
||||
list = transactionDetailService.findHisAndThirdJoinDataByParam(lastDaySearchMap);
|
||||
}
|
||||
if (list != null && list.size() > 0) {
|
||||
//说明有一条对应的记录 查看金额是否相同, 如果相同,核销 如果不同 状态改为跨天差异账
|
||||
String thirdJe = StringDUtil.changeNullToEmpty(list.get(0).get("I_JYJE"));
|
||||
HashMap<Object, Object> updateHisMap = new HashMap<>();
|
||||
HashMap<Object, Object> updateThirdMap = new HashMap<>();
|
||||
if (new BigDecimal(thirdJe).compareTo(new BigDecimal(amount)) == 0) {
|
||||
|
||||
|
||||
//修改该记录状态为自动核销
|
||||
updateHisMap.put("is_manager", "0");
|
||||
updateHisMap.put("remark", "系统自动核销");
|
||||
updateHisMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
updateHisMap.put("tranID", tranid);
|
||||
updateHisMap.put("h_jylx", h_jylx);
|
||||
updateHisMap.put("check_result", "2");
|
||||
|
||||
|
||||
updateThirdMap.put("is_manager", "0");
|
||||
updateThirdMap.put("remark", "系统自动核销");
|
||||
updateThirdMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
updateThirdMap.put("i_ddh", tranid);
|
||||
updateThirdMap.put("i_jylx", h_jylx);
|
||||
updateThirdMap.put("check_result", "2");
|
||||
|
||||
// updateThirdMap.put("is_manager", "0");
|
||||
// updateThirdMap.put("remark", "系统自动核销");
|
||||
// updateThirdMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
// updateThirdMap.put("i_ghddh", h_ghddh);
|
||||
// updateThirdMap.put("i_jylx", zfzt);
|
||||
// updateThirdMap.put("check_result", "2");
|
||||
|
||||
//修改明细表
|
||||
transactionDetailService.updateJoinDate(updateHisMap);
|
||||
transactionDetailService.updateJoinDate(updateThirdMap);
|
||||
|
||||
//修改单边账记录表
|
||||
unilateralService.updateUnilateral(updateHisMap);
|
||||
|
||||
}
|
||||
}
|
||||
} else if ("1".equals(check_result) && "2".equals(err_type)) {
|
||||
//三方单边账 查询历史单边账表是否已有记录 有不动 没有添加
|
||||
|
||||
List<HashMap<Object, Object>> unilateralList = null;
|
||||
HashMap<Object, Object> noCashSearchMap = new HashMap<>();
|
||||
noCashSearchMap.put("i_ddh", i_ddh);
|
||||
noCashSearchMap.put("i_jylx", i_jylx);
|
||||
noCashSearchMap.put("trade_date", thistrade_date);
|
||||
unilateralList = unilateralService.findUnilateralByParam(noCashSearchMap);
|
||||
// }
|
||||
|
||||
if (!(unilateralList != null && unilateralList.size() > 0)) {
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
|
||||
|
||||
//由于是第三方单边账,所以his相关数据应该是空的,所以,添加数据时,his相关数据设置为空
|
||||
addMap.put("id", UUIDGenerator.getUUID());
|
||||
addMap.put("payType", "");
|
||||
addMap.put("tranID", "");
|
||||
addMap.put("h_jylx", "");
|
||||
addMap.put("trade_date", thistrade_date);
|
||||
addMap.put("hisOperNum", "");
|
||||
addMap.put("amount", "");
|
||||
|
||||
|
||||
addMap.put("i_jylx", i_jylx);
|
||||
addMap.put("i_jyje", i_jyje);
|
||||
addMap.put("i_ddh", i_ddh);
|
||||
addMap.put("i_jyqd", i_jyqd);
|
||||
addMap.put("tradeTime", tradeTime);
|
||||
|
||||
|
||||
addMap.put("is_manager", "0");
|
||||
addMap.put("manager_time", "");
|
||||
|
||||
addMap.put("err_type", err_type);
|
||||
addMap.put("remark", "");
|
||||
|
||||
|
||||
addMap.put("create_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addMap.put("join_id", "");
|
||||
unilateralService.insertUnilateral(addMap);
|
||||
} else {
|
||||
//如果有记录 将查询处理方式 将记录对应的处理修改
|
||||
String managerType = StringDUtil.changeNullToEmpty(unilateralList.get(0).get("MANAGERTYPE"));
|
||||
|
||||
//如果处理方式是其他 不用修改 如果处理方式是不计统计那样需要将此数据标志为无效
|
||||
if ("2".equals(managerType)) {
|
||||
HashMap<Object, Object> updateMap = new HashMap<>();
|
||||
// 三方没有门诊住院 牵扯使用这个的数据也没有 似乎只需使用ysddh
|
||||
updateMap.put("hisOperNum", hisopernum);
|
||||
updateMap.put("i_jyqd", i_jyqd);
|
||||
updateMap.put("trade_date", thistrade_date);
|
||||
updateMap.put("i_ddh", i_ddh);
|
||||
updateMap.put("h_jylx", h_jylx);
|
||||
updateMap.put("i_jylx", i_jylx);
|
||||
// updateMap.put("cash_code", cash_code);
|
||||
|
||||
updateMap.put("is_active", "0");
|
||||
transactionDetailService.updateJoinSetActiveByThird(updateMap);
|
||||
}
|
||||
}
|
||||
|
||||
//非现金账还可能出现跨天账
|
||||
// if (!(cash_code.equals(c_zffs))) {
|
||||
//查询是否有这条记录对应的HIS记录 结果肯定不是当天的
|
||||
//用第三方账单的信息来查找his相关账单的信息,能查到,说明是对的上的,只是跨天了
|
||||
HashMap<Object, Object> lastDaySearchMap = new HashMap<>();
|
||||
lastDaySearchMap.put("tranid", i_ddh);
|
||||
lastDaySearchMap.put("h_jylx", i_jylx);
|
||||
|
||||
List<HashMap<Object, Object>> list = new ArrayList<>();
|
||||
if (!"".equals(i_ddh)) {
|
||||
list = transactionDetailService.findHisAndThirdJoinDataByParam(lastDaySearchMap);
|
||||
}
|
||||
if (list != null && list.size() > 0) {
|
||||
//说明有一条对应的记录 查看金额是否相同, 如果相同,核销 如果不同 状态改为跨天差异账
|
||||
String hisJe = StringDUtil.changeNullToEmpty(list.get(0).get("AMOUNT"));
|
||||
HashMap<Object, Object> updateHisMap = new HashMap<>();
|
||||
HashMap<Object, Object> updateThirdMap = new HashMap<>();
|
||||
|
||||
//如果两边金额相同 设置核销 更新关联明细表为核销
|
||||
if (new BigDecimal(hisJe).compareTo(new BigDecimal(i_jyje)) == 0) {
|
||||
//修改该记录状态为自动核销
|
||||
updateHisMap.put("is_manager", "0");
|
||||
updateHisMap.put("remark", "系统自动核销");
|
||||
updateHisMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
updateHisMap.put("tranID", i_ddh);
|
||||
updateHisMap.put("h_jylx", h_jylx);
|
||||
updateHisMap.put("check_result", "2");
|
||||
|
||||
updateThirdMap.put("is_manager", "0");
|
||||
updateThirdMap.put("remark", "系统自动核销");
|
||||
updateThirdMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
updateThirdMap.put("i_ddh", i_ddh);
|
||||
updateThirdMap.put("i_jylx", i_jylx);
|
||||
updateThirdMap.put("check_result", "2");
|
||||
|
||||
|
||||
//修改明细表
|
||||
transactionDetailService.updateJoinDate(updateHisMap);
|
||||
transactionDetailService.updateJoinDate(updateThirdMap);
|
||||
|
||||
//修改单边账记录表
|
||||
unilateralService.updateUnilateral(updateThirdMap);
|
||||
|
||||
}
|
||||
}
|
||||
} else if ("1".equals(check_result) && "3".equals(err_type)) {
|
||||
//查询单边账表是否有这条记录 差异账 有就不动 没有就添加
|
||||
List<HashMap<Object, Object>> unilateralList = null;
|
||||
HashMap<Object, Object> noCashSearchMap = new HashMap<>();
|
||||
noCashSearchMap.put("tranid", i_ddh);
|
||||
noCashSearchMap.put("h_jylx", i_jylx);
|
||||
noCashSearchMap.put("trade_date", thistrade_date);
|
||||
unilateralList = unilateralService.findUnilateralByParam(noCashSearchMap);
|
||||
|
||||
if (!(unilateralList != null && unilateralList.size() > 0)) {
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
|
||||
addMap.put("id", UUIDGenerator.getUUID());
|
||||
addMap.put("tranID", tranid);
|
||||
addMap.put("h_jylx", h_jylx);
|
||||
addMap.put("hisOperNum", hisopernum);
|
||||
addMap.put("i_ddh", i_ddh);
|
||||
addMap.put("i_jylx", i_jylx);
|
||||
addMap.put("trade_date", thistrade_date);
|
||||
addMap.put("amount", amount);
|
||||
addMap.put("i_jyje", i_jyje);
|
||||
addMap.put("tradeTime", tradeTime);
|
||||
addMap.put("is_manager", "0");
|
||||
addMap.put("manager_time", "");
|
||||
addMap.put("i_jyqd", i_jyqd);
|
||||
addMap.put("err_type", err_type);
|
||||
addMap.put("remark", "");
|
||||
addMap.put("create_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addMap.put("join_id", "");
|
||||
|
||||
|
||||
unilateralService.insertUnilateral(addMap);
|
||||
} else {
|
||||
//如果有记录 将查询处理方式 将记录对应的处理修改
|
||||
String managerType = StringDUtil.changeNullToEmpty(unilateralList.get(0).get("MANAGERTYPE"));
|
||||
|
||||
//如果处理方式是其他 不用修改 如果处理方式是不计统计那样需要将此数据标志为无效
|
||||
if ("2".equals(managerType)) {
|
||||
HashMap<Object, Object> updateMap = new HashMap<>();
|
||||
// 三方没有门诊住院 牵扯使用这个的数据也没有 似乎只需使用ysddh
|
||||
updateMap.put("hisOperNum", hisopernum);
|
||||
// updateMap.put("payType", payType);
|
||||
updateMap.put("i_jyqd", i_jyqd);
|
||||
updateMap.put("trade_date", thistrade_date);
|
||||
updateMap.put("i_ddh", i_ddh);
|
||||
updateMap.put("tranID", tranid);
|
||||
updateMap.put("h_jylx", h_jylx);
|
||||
updateMap.put("i_jylx", i_jylx);
|
||||
// updateMap.put("cash_code", cash_code);
|
||||
|
||||
updateMap.put("is_active", "0");
|
||||
transactionDetailService.updateJoinSetActiveByThird(updateMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 循环处理完成后 处理剩余情况 如有重复记录 进行处理 (由于上面的只处理了错误情况,所以能关联上的记录不会经过上面的处理除非两条单边帐,
|
||||
* 两条单边账第一次会是什么都处理,第二次依据上面的情况为两条按同一种方式处理)
|
||||
* 此处理基于银行端不会出现重复记录 如非此情况,数据将会有问题
|
||||
* 可能情况有重复记录的情况
|
||||
* 1 现金账重复, 现金账会相加在处理,结果不同,会产生差异账,无需处理
|
||||
* 2 特殊要求的支票帐重复, 同现金帐
|
||||
* 3 普通帐重复,关联将产生两条相同记录 单边账表和关联表新增一个id,用于区分重复记录
|
||||
* 如果普通情况 查询后处理查询的第二条 对两条记录分别添加id,将一条记录去除一边数据标识为单边账。
|
||||
* 将记录添加到单边账表,由于正常账不会找单边账记录,所以有重复即使执行也会到这里
|
||||
* 4 退款两次 这两次都属于正常记录, 可能会有更多次
|
||||
* 5 少记录 银行那边退了两笔,而his只记录了一笔
|
||||
*
|
||||
* 由于错误和多比对账的不确定性 单边账记录表删除重新生成
|
||||
*
|
||||
*/
|
||||
HashMap<String, Integer> trueIdMap = new HashMap<>();
|
||||
List<HashMap<Object, Object>> trueList = new ArrayList<>();
|
||||
|
||||
//先查询重复的记录,的id和状态
|
||||
List<HashMap<Object, Object>> notUniqueList = transactionDetailService.findHisAndThirdJoinDataByParamAndNotUnique(searchMap);
|
||||
|
||||
//删除所有重复记录。
|
||||
for (int i = 0; i < notUniqueList.size(); i++) {
|
||||
HashMap<Object, Object> notUniqueObj = notUniqueList.get(i);
|
||||
|
||||
String tranid = StringDUtil.changeNullToEmpty(notUniqueObj.get("TRANID"));
|
||||
String h_jylx = StringDUtil.changeNullToEmpty(notUniqueObj.get("H_JYLX"));
|
||||
HashMap<Object, Object> delMap = new HashMap<>();
|
||||
|
||||
delMap.put("trade_date", trade_date);
|
||||
delMap.put("tranID", tranid);
|
||||
delMap.put("h_jylx", h_jylx);
|
||||
transactionDetailService.deleteHisAndThirdJoinDataByParamAndNotUnique(delMap);
|
||||
|
||||
//删除当天已经生成的该条对应的可能错帐记录
|
||||
unilateralService.deleteUnilateralByIdandStatus(delMap);
|
||||
|
||||
}
|
||||
|
||||
//删除当天单边账里join_id不为空的记录
|
||||
unilateralService.deleteUnilateralByJoinIdNotNull(searchMap);
|
||||
|
||||
|
||||
//处理查询的记录
|
||||
for (int i = 0; i < notUniqueList.size(); i++) {
|
||||
HashMap<Object, Object> notUniqueObj = notUniqueList.get(i);
|
||||
|
||||
String tranid = StringDUtil.changeNullToEmpty(notUniqueObj.get("TRANID"));
|
||||
String h_jylx = StringDUtil.changeNullToEmpty(notUniqueObj.get("H_JYLX"));
|
||||
|
||||
|
||||
//分别查询银行端和his端的记录
|
||||
|
||||
HashMap<Object, Object> searchNotUniqueObjMap = new HashMap<>();
|
||||
searchNotUniqueObjMap.put("h_jylx", h_jylx);
|
||||
searchNotUniqueObjMap.put("tranID", tranid);
|
||||
searchNotUniqueObjMap.put("i_ddh", tranid);
|
||||
searchNotUniqueObjMap.put("i_jylx", h_jylx);
|
||||
searchNotUniqueObjMap.put("trade_date", trade_date);
|
||||
|
||||
|
||||
searchNotUniqueObjMap.put("orderby_je", "true");
|
||||
|
||||
//his端重复记录
|
||||
List<HashMap<Object, Object>> list = hisbillsHistoryService.findHisDetailByParam(searchNotUniqueObjMap);
|
||||
// hisDetailService.findHisDetailByParam(searchNotUniqueObjMap);
|
||||
|
||||
//三方端重复记录
|
||||
List<HashMap<Object, Object>> list2 = bankbillsHistoryService.findBankbillHistoryByParam(searchNotUniqueObjMap);
|
||||
|
||||
|
||||
//循环两个list 如果his端有多的 放入his单边list 能对上的放入true关联集合 最后航端多的银行端单边
|
||||
//最后处理的时候 his单边和银行单边都有的按一对一 变成差异,只有一边有的就是单边
|
||||
List<HashMap<Object, Object>> hisUnilateralList = new ArrayList<>();
|
||||
for (int j = 0; j < list.size(); j++) {
|
||||
HashMap<Object, Object> hisDetailMap = list.get(j);
|
||||
String amount = StringDUtil.changeNullToEmpty(hisDetailMap.get("AMOUNT"));
|
||||
//可能字段不匹配,
|
||||
String hJylx = StringDUtil.changeNullToEmpty(hisDetailMap.get("TRADINGSTATUS"));
|
||||
|
||||
String tradeTime = StringDUtil.changeNullToEmpty(hisDetailMap.get("TRADETIME"));
|
||||
|
||||
String payType = StringDUtil.changeNullToEmpty(hisDetailMap.get("PAYTYPE"));
|
||||
|
||||
String hisopernum = StringDUtil.changeNullToEmpty(hisDetailMap.get("HISOPERCODE"));
|
||||
|
||||
String bizType = StringDUtil.changeNullToEmpty(hisDetailMap.get("BIZTYPE"));
|
||||
String patientid = StringDUtil.changeNullToEmpty(hisDetailMap.get("PATIENTID"));
|
||||
String patientname = StringDUtil.changeNullToEmpty(hisDetailMap.get("PATIENTNAME"));
|
||||
|
||||
Iterator<HashMap<Object, Object>> iterator = list2.iterator();
|
||||
|
||||
boolean isDel = false;
|
||||
while (iterator.hasNext()) {
|
||||
HashMap<Object, Object> bankDetailMap = iterator.next();
|
||||
String i_jyje = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYJE"));
|
||||
String i_jyrq = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYRQ"));
|
||||
String i_jysj = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYSJ"));
|
||||
String i_jyqd = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYQD"));
|
||||
String i_jylx = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYLX"));
|
||||
String i_ddh = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_DDH"));
|
||||
|
||||
if (new BigDecimal(amount).compareTo(new BigDecimal(i_jyje)) == 0) {
|
||||
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
addMap.put("jysj", i_jyrq + " " + i_jysj);
|
||||
addMap.put("i_ddh", i_ddh);
|
||||
addMap.put("i_jyje", i_jyje);
|
||||
addMap.put("i_jylx", i_jylx);
|
||||
addMap.put("i_jyqd", i_jyqd);
|
||||
addMap.put("tradeTime", tradeTime);
|
||||
|
||||
|
||||
addMap.put("tranID", tranid);
|
||||
addMap.put("BizType", bizType);
|
||||
|
||||
addMap.put("h_jylx", hJylx);
|
||||
addMap.put("amount", amount);
|
||||
addMap.put("payType", payType);
|
||||
addMap.put("hisOperNum", hisopernum);
|
||||
addMap.put("patientid", patientid);
|
||||
addMap.put("patientname", patientname);
|
||||
addMap.put("sort_date", tradeTime);
|
||||
addMap.put("trade_date", trade_date);
|
||||
addMap.put("err_type", "");
|
||||
addMap.put("check_result", "0");
|
||||
addMap.put("is_active", "1");
|
||||
addMap.put("join_id", "");
|
||||
trueList.add(addMap);
|
||||
|
||||
isDel = true;
|
||||
iterator.remove();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有,说明循环了一轮还是没有相同的,那就先添加到hisUnilateralList
|
||||
if (!isDel) {
|
||||
hisUnilateralList.add(hisDetailMap);
|
||||
}
|
||||
}
|
||||
|
||||
//处理两边多的。
|
||||
Iterator<HashMap<Object, Object>> hisIterator = hisUnilateralList.iterator();
|
||||
Iterator<HashMap<Object, Object>> bankIterator = list2.iterator();
|
||||
|
||||
int errNum = 0;
|
||||
|
||||
//如果两边都有 取出数据设置差异
|
||||
if (hisIterator.hasNext() && bankIterator.hasNext()) {
|
||||
HashMap<Object, Object> hisDetailMap = hisIterator.next();
|
||||
HashMap<Object, Object> bankDetailMap = bankIterator.next();
|
||||
|
||||
String amount = StringDUtil.changeNullToEmpty(hisDetailMap.get("AMOUNT"));
|
||||
// String payMethod = StringDUtil.changeNullToEmpty(hisDetailMap.get("PAYMETHOD"));
|
||||
String tradeTime = StringDUtil.changeNullToEmpty(hisDetailMap.get("TRADETIME"));
|
||||
String payType = StringDUtil.changeNullToEmpty(hisDetailMap.get("PAYTYPE"));
|
||||
String hisopernum = StringDUtil.changeNullToEmpty(hisDetailMap.get("HISOPERCODE"));
|
||||
String hJylx = StringDUtil.changeNullToEmpty(hisDetailMap.get("TRADINGSTATUS"));
|
||||
|
||||
String bizType = StringDUtil.changeNullToEmpty(hisDetailMap.get("BIZTYPE"));
|
||||
String patientid = StringDUtil.changeNullToEmpty(hisDetailMap.get("PATIENTID"));
|
||||
String patientname = StringDUtil.changeNullToEmpty(hisDetailMap.get("PATIENTNAME"));
|
||||
|
||||
String i_jyje = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYJE"));
|
||||
String i_jyrq = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYRQ"));
|
||||
String i_jysj = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYSJ"));
|
||||
String i_jyqd = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYQD"));
|
||||
String i_jylx = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYLX"));
|
||||
String i_ddh = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_DDH"));
|
||||
|
||||
errNum++;
|
||||
String join_id = tranid + "err" + errNum;
|
||||
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
addMap.put("jysj", i_jyrq + " " + i_jysj);
|
||||
addMap.put("i_ddh", tranid);
|
||||
addMap.put("i_jyje", i_jyje);
|
||||
addMap.put("i_jylx", h_jylx);
|
||||
addMap.put("i_jyqd", i_jyqd);
|
||||
addMap.put("tradeTime", tradeTime);
|
||||
|
||||
|
||||
addMap.put("tranID", tranid);
|
||||
addMap.put("BizType", bizType);
|
||||
addMap.put("h_jylx", hJylx);
|
||||
addMap.put("amount", amount);
|
||||
addMap.put("payType", payType);
|
||||
addMap.put("hisOperNum", hisopernum);
|
||||
addMap.put("patientid", patientid);
|
||||
addMap.put("patientname", patientname);
|
||||
addMap.put("sort_date", tradeTime);
|
||||
addMap.put("trade_date", trade_date);
|
||||
addMap.put("err_type", "3");
|
||||
addMap.put("check_result", "1");
|
||||
addMap.put("is_active", "1");
|
||||
addMap.put("join_id", join_id);
|
||||
trueList.add(addMap);
|
||||
|
||||
HashMap<Object, Object> addUnilateralMap = new HashMap<>();
|
||||
addUnilateralMap.put("id", UUIDGenerator.getUUID());
|
||||
addUnilateralMap.put("payType", payType);
|
||||
addUnilateralMap.put("tranID", tranid);
|
||||
addUnilateralMap.put("h_jylx", h_jylx);
|
||||
addUnilateralMap.put("hisOperNum", hisopernum);
|
||||
addUnilateralMap.put("amount", amount);
|
||||
addUnilateralMap.put("i_jyje", i_jyje);
|
||||
addUnilateralMap.put("i_jylx", h_jylx);
|
||||
addUnilateralMap.put("i_ddh", tranid);
|
||||
addUnilateralMap.put("i_jyqd", i_jyqd);
|
||||
addUnilateralMap.put("tradeTime", tradeTime);
|
||||
addUnilateralMap.put("trade_date", trade_date);
|
||||
addUnilateralMap.put("is_manager", "0");
|
||||
addUnilateralMap.put("manager_time", "");
|
||||
addUnilateralMap.put("err_type", "3");
|
||||
addUnilateralMap.put("remark", "");
|
||||
// addUnilateralMap.put("payMethod", payMethod);
|
||||
addUnilateralMap.put("create_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addUnilateralMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addUnilateralMap.put("join_id", join_id);
|
||||
|
||||
//将记录添加到单边账表
|
||||
unilateralService.insertUnilateral(addUnilateralMap);
|
||||
|
||||
} else if (hisIterator.hasNext()) {
|
||||
|
||||
HashMap<Object, Object> hisDetailMap = hisIterator.next();
|
||||
|
||||
String amount = StringDUtil.changeNullToEmpty(hisDetailMap.get("AMOUNT"));
|
||||
// String payMethod = StringDUtil.changeNullToEmpty(hisDetailMap.get("PAYMETHOD"));
|
||||
String tradeTime = StringDUtil.changeNullToEmpty(hisDetailMap.get("TRADETIME"));
|
||||
String payType = StringDUtil.changeNullToEmpty(hisDetailMap.get("PAYTYPE"));
|
||||
String hisopernum = StringDUtil.changeNullToEmpty(hisDetailMap.get("HISOPERCODE"));
|
||||
String hJylx = StringDUtil.changeNullToEmpty(hisDetailMap.get("TRADINGSTATUS"));
|
||||
|
||||
String bizType = StringDUtil.changeNullToEmpty(hisDetailMap.get("BIZTYPE"));
|
||||
String patientid = StringDUtil.changeNullToEmpty(hisDetailMap.get("PATIENTID"));
|
||||
String patientname = StringDUtil.changeNullToEmpty(hisDetailMap.get("PATIENTNAME"));
|
||||
|
||||
|
||||
errNum++;
|
||||
String join_id = tranid + "err" + errNum;
|
||||
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
addMap.put("jysj", "");
|
||||
addMap.put("i_ddh", "");
|
||||
addMap.put("i_jyje", "");
|
||||
addMap.put("i_jylx", "");
|
||||
addMap.put("i_jyqd", "");
|
||||
addMap.put("tradeTime", tradeTime);
|
||||
|
||||
|
||||
addMap.put("tranID", tranid);
|
||||
addMap.put("BizType", bizType);
|
||||
addMap.put("h_jylx", hJylx);
|
||||
addMap.put("amount", amount);
|
||||
addMap.put("payType", payType);
|
||||
addMap.put("hisOperNum", hisopernum);
|
||||
addMap.put("patientid", patientid);
|
||||
addMap.put("patientname", patientname);
|
||||
addMap.put("sort_date", tradeTime);
|
||||
addMap.put("trade_date", trade_date);
|
||||
addMap.put("err_type", "1");
|
||||
addMap.put("check_result", "1");
|
||||
addMap.put("is_active", "1");
|
||||
addMap.put("join_id", join_id);
|
||||
trueList.add(addMap);
|
||||
|
||||
|
||||
HashMap<Object, Object> addUnilateralMap = new HashMap<>();
|
||||
addUnilateralMap.put("id", UUIDGenerator.getUUID());
|
||||
addUnilateralMap.put("payType", payType);
|
||||
addUnilateralMap.put("tranID", tranid);
|
||||
addUnilateralMap.put("h_jylx", h_jylx);
|
||||
addUnilateralMap.put("hisOperNum", hisopernum);
|
||||
addUnilateralMap.put("amount", amount);
|
||||
addUnilateralMap.put("i_jyje", "");
|
||||
addUnilateralMap.put("i_jylx", "");
|
||||
addUnilateralMap.put("i_ddh", "");
|
||||
addUnilateralMap.put("i_jyqd", "");
|
||||
addUnilateralMap.put("tradeTime", tradeTime);
|
||||
addUnilateralMap.put("trade_date", trade_date);
|
||||
addUnilateralMap.put("is_manager", "0");
|
||||
addUnilateralMap.put("manager_time", "");
|
||||
addUnilateralMap.put("err_type", "1");
|
||||
addUnilateralMap.put("remark", "");
|
||||
addUnilateralMap.put("create_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addUnilateralMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addUnilateralMap.put("join_id", join_id);
|
||||
|
||||
//将记录添加到单边账表
|
||||
unilateralService.insertUnilateral(addUnilateralMap);
|
||||
|
||||
} else if (bankIterator.hasNext()) {
|
||||
HashMap<Object, Object> bankDetailMap = bankIterator.next();
|
||||
|
||||
String i_jyje = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYJE"));
|
||||
String i_jyrq = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYRQ"));
|
||||
String i_jysj = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYSJ"));
|
||||
String i_jyqd = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYQD"));
|
||||
String i_jylx = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_JYLX"));
|
||||
String i_ddh = StringDUtil.changeNullToEmpty(bankDetailMap.get("I_DDH"));
|
||||
|
||||
errNum++;
|
||||
String join_id = tranid + "err" + errNum;
|
||||
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
|
||||
addMap.put("jysj", i_jyrq + " " + i_jysj);
|
||||
addMap.put("i_ddh", tranid);
|
||||
addMap.put("i_jyje", i_jyje);
|
||||
addMap.put("i_jylx", h_jylx);
|
||||
addMap.put("i_jyqd", i_jyqd);
|
||||
addMap.put("tradeTime", i_jysj);
|
||||
|
||||
|
||||
addMap.put("tranID", "");
|
||||
addMap.put("BizType", "");
|
||||
addMap.put("h_jylx", "");
|
||||
addMap.put("amount", "");
|
||||
addMap.put("payType", "");
|
||||
addMap.put("hisOperNum", "");
|
||||
addMap.put("patientid", "");
|
||||
addMap.put("patientname", "");
|
||||
addMap.put("sort_date", "");
|
||||
addMap.put("trade_date", trade_date);
|
||||
addMap.put("err_type", "3");
|
||||
addMap.put("check_result", "1");
|
||||
addMap.put("is_active", "1");
|
||||
addMap.put("join_id", join_id);
|
||||
trueList.add(addMap);
|
||||
|
||||
HashMap<Object, Object> addUnilateralMap = new HashMap<>();
|
||||
addUnilateralMap.put("id", UUIDGenerator.getUUID());
|
||||
addUnilateralMap.put("payType", "");
|
||||
addUnilateralMap.put("tranID", "");
|
||||
addUnilateralMap.put("h_jylx", "");
|
||||
addUnilateralMap.put("hisOperNum", "");
|
||||
addUnilateralMap.put("amount", "");
|
||||
addUnilateralMap.put("i_jyje", i_jyje);
|
||||
addUnilateralMap.put("i_jylx", i_jylx);
|
||||
addUnilateralMap.put("i_ddh", i_ddh);
|
||||
addUnilateralMap.put("i_jyqd", i_jyqd);
|
||||
addUnilateralMap.put("tradeTime", i_jysj);
|
||||
addUnilateralMap.put("trade_date", trade_date);
|
||||
addUnilateralMap.put("is_manager", "0");
|
||||
addUnilateralMap.put("manager_time", "");
|
||||
addUnilateralMap.put("err_type", "2");
|
||||
addUnilateralMap.put("remark", "");
|
||||
addUnilateralMap.put("create_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addUnilateralMap.put("modify_time", DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd_HH_mm_ss));
|
||||
addUnilateralMap.put("join_id", join_id);
|
||||
|
||||
//将记录添加到单边账表
|
||||
unilateralService.insertUnilateral(addUnilateralMap);
|
||||
}
|
||||
}
|
||||
|
||||
//将记录添加到数据库
|
||||
if (trueList.size() > 0) {
|
||||
transactionDetailService.addNotUniqueData(trueList);
|
||||
}
|
||||
|
||||
//!!!!
|
||||
managerReconciliation(transactionDetailService, searchMap);
|
||||
} else {
|
||||
errCode = "999";
|
||||
errMsg = "生成对账信息失败,原因:his或三方有记录没有获取到。";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
errCode = "999";
|
||||
errMsg = "生成对账信息失败,原因:" + e.getMessage();
|
||||
}
|
||||
|
||||
try {
|
||||
//对账记录表 记录对账是否成功的记录
|
||||
String modify_time = DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd);
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
addMap.put("trade_date", trade_date);
|
||||
addMap.put("merchant_name", "");
|
||||
addMap.put("merchant_id", "");
|
||||
addMap.put("create_time", modify_time);
|
||||
addMap.put("modify_time", modify_time);
|
||||
addMap.put("quartz_id", id);
|
||||
addMap.put("quartz_name", name);
|
||||
|
||||
managerNum++;
|
||||
addMap.put("manager_num", managerNum);
|
||||
|
||||
if ("0".equals(errCode)) {
|
||||
addMap.put("status", "1");
|
||||
} else {
|
||||
addMap.put("status", "0");
|
||||
}
|
||||
|
||||
if ("".equals(userName)) {
|
||||
addMap.put("user_name", "定时任务对账");
|
||||
} else {
|
||||
addMap.put("user_name", userName);
|
||||
}
|
||||
|
||||
reconciliationLogService.insertReconciliationLog(addMap);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
errCode = "999";
|
||||
errMsg = "生成对账记录失败,原因:" + e.getMessage();
|
||||
}
|
||||
|
||||
responseMap.put("errCode", errCode);
|
||||
responseMap.put("errMsg", errMsg);
|
||||
return responseMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 处理对账结果记录
|
||||
* @author thuang
|
||||
* @date 2021/11/30 16:54
|
||||
* @version 1.0
|
||||
*/
|
||||
public static void managerReconciliation(TransactionDetailService transactionDetailService, HashMap<Object, Object> searchMap) throws Exception {
|
||||
|
||||
//生成对账结果记录表
|
||||
//查询当天的 三方结算 his结算 三方单边 his单边 处理的历史单边 当日单边账条数
|
||||
List<HashMap<Object, Object>> list = transactionDetailService.findHisAndThirdJoinDataByParam(searchMap);
|
||||
|
||||
String trade_date = StringDUtil.changeNullToEmpty(searchMap.get("trade_date"));
|
||||
|
||||
BigDecimal hisTotalMoney = new BigDecimal(0);
|
||||
BigDecimal thirdTotalMoney = new BigDecimal(0);
|
||||
BigDecimal thirdUnilateralMoney = new BigDecimal(0);
|
||||
BigDecimal hisUnilateralMoney = new BigDecimal(0);
|
||||
BigDecimal managerHistoryUnilateralMoney = new BigDecimal(0);
|
||||
int todayUnilateralNum = 0;
|
||||
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
HashMap<Object, Object> hashMap = list.get(i);
|
||||
String i_jyje = StringDUtil.changeNullToEmpty(hashMap.get("I_JYJE"));
|
||||
String amount = StringDUtil.changeNullToEmpty(hashMap.get("AMOUNT"));
|
||||
String err_type = StringDUtil.changeNullToEmpty(hashMap.get("ERR_TYPE"));
|
||||
String check_result = StringDUtil.changeNullToEmpty(hashMap.get("CHECK_RESULT"));
|
||||
|
||||
//如果金额为空 设置为0 方便计算
|
||||
if ("".equals(i_jyje)) {
|
||||
i_jyje = "0";
|
||||
}
|
||||
if ("".equals(amount)) {
|
||||
amount = "0";
|
||||
}
|
||||
|
||||
thirdTotalMoney = thirdTotalMoney.add(new BigDecimal(i_jyje));
|
||||
hisTotalMoney = hisTotalMoney.add(new BigDecimal(amount));
|
||||
|
||||
//统计单边账金额
|
||||
if ("1".equals(check_result)) {
|
||||
//非his单边账 就是三方单边账 和差错账单
|
||||
if (!"1".equals(err_type)) {
|
||||
thirdUnilateralMoney = thirdUnilateralMoney.add(new BigDecimal(i_jyje));
|
||||
}
|
||||
if (!"2".equals(err_type)) {
|
||||
hisUnilateralMoney = hisUnilateralMoney.add(new BigDecimal(amount));
|
||||
}
|
||||
todayUnilateralNum++;
|
||||
}
|
||||
|
||||
//统计核销历史单边账金额
|
||||
if ("2".equals(check_result)) {
|
||||
thirdUnilateralMoney = thirdUnilateralMoney.add(new BigDecimal(i_jyje));
|
||||
hisUnilateralMoney = hisUnilateralMoney.add(new BigDecimal(amount));
|
||||
|
||||
BigDecimal addMoney = new BigDecimal(i_jyje).add(new BigDecimal(amount));
|
||||
managerHistoryUnilateralMoney = managerHistoryUnilateralMoney.add(addMoney);
|
||||
}
|
||||
}
|
||||
|
||||
//对账结果记录表
|
||||
ReconciliationResultService reconciliationResultService = GetBeanUtil.getBean(ReconciliationResultServiceImpl.class);
|
||||
|
||||
//如果当天的单边账条数为0 通过。
|
||||
String status = "2";
|
||||
if (todayUnilateralNum == 0) {
|
||||
status = "1";
|
||||
}
|
||||
|
||||
HashMap<Object, Object> addMap = new HashMap<>();
|
||||
addMap.put("trade_date", trade_date);
|
||||
addMap.put("third_money", thirdTotalMoney.toString());
|
||||
addMap.put("his_money", hisTotalMoney.toString());
|
||||
addMap.put("difference", ""); //分开两个差额不做计算
|
||||
addMap.put("third_unilateral", thirdUnilateralMoney.toString());
|
||||
addMap.put("his_unilateral", hisUnilateralMoney.toString());
|
||||
addMap.put("manager_history_unilateral", managerHistoryUnilateralMoney);
|
||||
addMap.put("today_unilateral", ""); //不知道怎么算 暂时没算
|
||||
addMap.put("unilateral_num", todayUnilateralNum);
|
||||
addMap.put("pending_unilateral", "0");
|
||||
addMap.put("pending_unilateral_num", "0");
|
||||
addMap.put("status", status);
|
||||
addMap.put("area", "");
|
||||
|
||||
reconciliationResultService.insertReconciliationResult(addMap);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user