update:宁夏武警his账单明细接口返回数据解析入库

This commit is contained in:
Yuan
2025-08-11 09:21:22 +08:00
parent f35bc1c5f3
commit 8682fdda4f
4 changed files with 477 additions and 29 deletions

View File

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
import com.saye.hospitalgd.commons.date.DateDUtil;
import com.saye.hospitalgd.commons.string.StringDUtil;
import com.saye.hospitalgd.scheduler.jobMethod.HISGetDataMethodByHY;
import com.saye.hospitalgd.scheduler.jobMethod.HISGetDataMethodByJH;
import com.saye.hospitalgd.scheduler.jobMethod.HISGetDataMethodByWN;
import com.saye.hospitalgd.scheduler.jobMethod.HISGetDataMethodByZL;
import com.saye.hospitalgd.service.HisInterFaceConfigService;
@@ -147,6 +148,8 @@ public class HisBillLogController {
resultMap = new HISGetDataMethodByWN().getDate(quartz_id,quartz_name,trade_date,his_wsdl_id);
}else if("3".equals(his_wsdl_id)){
resultMap = new HISGetDataMethodByHY().getDate(quartz_id,quartz_name,trade_date,his_wsdl_id);
}else if ("4".equals(his_wsdl_id)){
resultMap = new HISGetDataMethodByJH().getDate(quartz_id,quartz_name,trade_date,his_wsdl_id);
}
errCode=StringDUtil.changeNullToEmpty(resultMap.get("errCode"));

View File

@@ -3,6 +3,7 @@ package com.saye.hospitalgd.scheduler.job;
import com.saye.hospitalgd.commons.getBean.GetBeanUtil;
import com.saye.hospitalgd.commons.string.StringDUtil;
import com.saye.hospitalgd.scheduler.jobMethod.HISGetDataMethodByHY;
import com.saye.hospitalgd.scheduler.jobMethod.HISGetDataMethodByJH;
import com.saye.hospitalgd.scheduler.jobMethod.HISGetDataMethodByWN;
import com.saye.hospitalgd.scheduler.jobMethod.HISGetDataMethodByZL;
import com.saye.hospitalgd.service.system.ServiceParamsService;
@@ -45,6 +46,8 @@ public class HISGetData implements Job {
new HISGetDataMethodByWN().getDate(id,name,trade_date,his_wsdl_id);
}else if ("3".equals(his_wsdl_id)) {
new HISGetDataMethodByHY().getDate(id,name,trade_date,his_wsdl_id);
}else if ("4".equals(his_wsdl_id)){
new HISGetDataMethodByJH().getDate(id,name,trade_date,his_wsdl_id);
}
System.out.println("/****************************定时任务["+name+"]执行结束*********************************/");
}

View File

@@ -0,0 +1,347 @@
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.math.BigDecimal;
import java.util.*;
/**
* @author thuang
* @version 1.0
* @description: His获取数据方法嘉禾
* @date 2021/9/30 13:41
*/
public class HISGetDataMethodByJH {
private static final Logger log = LoggerFactory.getLogger(HISGetDataMethodByJH.class);
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
startTime="2024-08-06 15:33:12";
endTime="2024-08-07 15:33:12";
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;
}
}

View File

@@ -534,10 +534,28 @@ public class HisUtil {
Iterator callHisResponse = recordEless.elementIterator("MOP_PatHosPayDetailQueryResponse");
Element hisResponse = (Element) callHisResponse.next();
Iterator callHisResult = hisResponse.elementIterator("MOP_PatHosPayDetailQueryResult");
Element hisResult = (Element) callHisResult.next();
// 根据新的XML结构先获取第一个request元素
Iterator callRequest = hisResponse.elementIterator("request");
if (!callRequest.hasNext()) {
throw new RuntimeException("未找到request元素");
}
Element requestElement = (Element) callRequest.next();
String text = hisResult.getText();
// 从第一个request元素中获取第二个request元素
Iterator callSecondRequest = requestElement.elementIterator("request");
if (!callSecondRequest.hasNext()) {
throw new RuntimeException("未找到第二个request元素");
}
Element secondRequestElement = (Element) callSecondRequest.next();
// 第二个request元素本身就是OutPut_MOP_PatHosPayDetailQuery通过xsi:type属性标识
// 所以直接使用它,不需要再查找子元素
Element hisResult = secondRequestElement;
// 获取完整的XML内容而不是文本内容
String text = hisResult.asXML();
System.out.println("从HIS接口获取的XML数据: " + text);
/*Iterator callOutXml = hisResponse.elementIterator("OutXml");
Element outXml = (Element)callOutXml.next();
@@ -545,7 +563,7 @@ public class HisUtil {
*/
resultMap.put("dataStr", text);
} catch (Exception e) {
e.printStackTrace();
log.error("调用his接口失败原因", e);
errCode = "999";
errMsg = "调用his接口失败原因" + e.getMessage();
@@ -571,19 +589,56 @@ public class HisUtil {
String errMsg = "";
try {
// 检查dataStr是否为空或null
if (dataStr == null || dataStr.trim().isEmpty()) {
errCode = "999";
errMsg = "传入的XML数据为空";
resultMap.put("errCode", errCode);
resultMap.put("errMsg", errMsg);
return resultMap;
}
dataStr = dataStr.replaceAll("&lt;", "<");
dataStr = dataStr.replaceAll("&gt;", ">");
System.out.println(dataStr);
log.info("解析前的XML数据: {}", dataStr);
// 检查XML是否完整
if (!dataStr.trim().startsWith("<") || !dataStr.trim().endsWith(">")) {
errCode = "999";
errMsg = "XML数据格式不完整";
resultMap.put("errCode", errCode);
resultMap.put("errMsg", errMsg);
return resultMap;
}
Document document2 = DocumentHelper.parseText(dataStr);
Element rootElt2 = document2.getRootElement();
Iterator iterator = rootElt2.elementIterator();
log.info("XML根元素名称: {}", rootElt2.getName());
Element returnresultElm = (Element) iterator.next();
Element dataElm = (Element) iterator.next();
// 由于getHisDataByHY已经预处理了XML这里直接查找returnresult和data元素
Element returnresultElm = rootElt2.element("returnresult");
if (returnresultElm == null) {
errCode = "999";
errMsg = "XML结构错误没有找到returnresult元素";
resultMap.put("errCode", errCode);
resultMap.put("errMsg", errMsg);
return resultMap;
}
// 查找data元素可能有多个
List<Element> dataElements = rootElt2.elements("data");
if (dataElements == null || dataElements.isEmpty()) {
errCode = "999";
errMsg = "XML结构错误没有找到data元素";
resultMap.put("errCode", errCode);
resultMap.put("errMsg", errMsg);
return resultMap;
}
log.info("找到data元素数量: {}", dataElements.size());
Iterator returncode = returnresultElm.elementIterator("returncode");
Iterator errormsg = returnresultElm.elementIterator("errormsg");
@@ -603,61 +658,94 @@ public class HisUtil {
if ("1".equals(code)) {
List<HashMap<Object, Object>> addList = new ArrayList<>();
Iterator itemIterator = dataElm.elementIterator();
while (itemIterator.hasNext()) {
// 遍历所有data元素
for (Element item : dataElements) {
HashMap<Object, Object> addMap = new HashMap<>();
Element item = (Element) itemIterator.next();
//数据类型 1-门诊 2-住院
Element visitzOrgElm = item.element("VisitzOrg");
String visitzOrg = visitzOrgElm.getText();
String visitzOrg = visitzOrgElm != null ? visitzOrgElm.getText() : "";
//业务类型
Element bizTypeElm = item.element("BizType");
String bizType = bizTypeElm.getText();
String bizType = bizTypeElm != null ? bizTypeElm.getText() : "";
//支付方式
Element payTypeElm = item.element("PayType");
String payType = payTypeElm.getText();
String payType = payTypeElm != null ? payTypeElm.getText() : "";
//总金额
Element amountElm = item.element("Amount");
String amount = amountElm.getText();
String amount = amountElm != null ? amountElm.getText() : "";
//自费支付金额
Element zfAmountElm = item.element("ZFAmount");
String zfAmount = zfAmountElm.getText();
String zfAmount = zfAmountElm != null ? zfAmountElm.getText() : "";
//医保账户金额
Element ybzhAmountElm = item.element("YBZHAmount");
String ybzhAmount = ybzhAmountElm.getText();
String ybzhAmount = ybzhAmountElm != null ? ybzhAmountElm.getText() : "";
//医保统筹金额
Element ybtcAmountElm = item.element("YBTCAmount");
String ybtcAmount = ybtcAmountElm.getText();
String ybtcAmount = ybtcAmountElm != null ? ybtcAmountElm.getText() : "";
//收据号
Element receiptNOElm = item.element("Receipt_no");
String receiptNO = receiptNOElm.getText();
Element receiptNOElm = item.element("ReceiptNO");
String receiptNO = receiptNOElm != null ? receiptNOElm.getText() : "";
//发票号
Element invNumElm = item.element("InvNum");
String invNum = invNumElm != null ? invNumElm.getText() : "";
//患者 ID
Element patientIDElm = item.element("PatientID");
String patientID = patientIDElm.getText();
String patientID = patientIDElm != null ? patientIDElm.getText() : "";
//患者姓名
Element patientNameElm = item.element("PatientName");
String patientName = patientNameElm.getText();
String patientName = patientNameElm != null ? patientNameElm.getText() : "";
//住院号
Element inHosNumElm = item.element("InHosNum");
String inHosNum = inHosNumElm != null ? inHosNumElm.getText() : "";
//交易时间
Element tradeTimeElm = item.element("TradeTime");
String tradeTime = tradeTimeElm.getText();
String tradeTime = tradeTimeElm != null ? tradeTimeElm.getText() : "";
//交易日期
String trade_date = "";
if (tradeTime.length() > 10) {
//弘扬的日期格式为yyyyMMddHH:mm:ss 格式化日期为 yyyy-MM-dd HH:mm:ss
trade_date = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, DateDUtil.strToDate(DateDUtil.yyyy_MM_dd_HH_mm_ss, tradeTime));
if (tradeTime != null && tradeTime.length() > 10) {
try {
// 处理日期格式:将 yyyy/M/d H:m:s 转换为 yyyy-MM-dd HH:mm:ss
// 例如2024/8/7 7:55:45 -> 2024-08-07 07:55:45
String[] parts = tradeTime.split(" ");
if (parts.length == 2) {
String datePart = parts[0];
String timePart = parts[1];
String[] dateComponents = datePart.split("/");
if (dateComponents.length == 3) {
String year = dateComponents[0];
String month = String.format("%02d", Integer.parseInt(dateComponents[1]));
String day = String.format("%02d", Integer.parseInt(dateComponents[2]));
String[] timeComponents = timePart.split(":");
if (timeComponents.length == 3) {
String hour = String.format("%02d", Integer.parseInt(timeComponents[0]));
String minute = String.format("%02d", Integer.parseInt(timeComponents[1]));
String second = timeComponents[2];
String formattedDateTime = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
trade_date = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, DateDUtil.strToDate(DateDUtil.yyyy_MM_dd_HH_mm_ss, formattedDateTime));
}
}
}
} catch (Exception e) {
System.out.println("日期解析失败: " + tradeTime + ", 错误: " + e.getMessage());
trade_date = "";
}
}
//HIS 业务时间
@@ -685,20 +773,27 @@ public class HisUtil {
addMap.put("ybzhAmount", ybzhAmount);
addMap.put("ybtcAmount", ybtcAmount);
addMap.put("receiptNO", receiptNO);
addMap.put("invNum", invNum);
addMap.put("patientID", patientID);
addMap.put("patientName", patientName);
addMap.put("inHosNum", inHosNum);
addMap.put("tradeTime", tradeTime);
addMap.put("trade_date", trade_date);
addMap.put("hisTime", hisTime);
addMap.put("hisOperNum", hisOperNum);
addMap.put("hisOperCode", hisOperNum); // 修改字段名以匹配HISGetDataMethodByJH中的使用
addMap.put("powerTranID", powerTranID);
addList.add(addMap);
}
log.info("解析到的数据条数: {}", addList.size());
if (addList.size() > 0) {
log.info("第一条数据示例: {}", addList.get(0));
}
resultMap.put("addList", addList);
}
} catch (Exception e) {
e.printStackTrace();
log.error("his数据字符串中提取数据失败原因", e);
errCode = "999";
errMsg = "his数据字符串中提取数据失败原因" + e.getMessage();
}