From 1630243ed75a92c60d0638e7d14477e4aadcf2b7 Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期五, 18 四月 2025 17:41:44 +0800 Subject: [PATCH] zjh20250418 --- ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java | 307 +++++++++++++++++++++++++++++++++------------------ 1 files changed, 199 insertions(+), 108 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java index cdf9b24..ae166e1 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java @@ -27,10 +27,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; +import javax.xml.soap.*; /** * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 @@ -143,85 +146,101 @@ if (projects != null && !projects.isEmpty()) { String dept = configService.selectConfigByKey("request_default_dept"); String ysbm = configService.selectConfigByKey("request_default_ysbm"); + String ysmc = configService.selectConfigByKey("request_default_ysmc"); for (TjProject project : projects) { if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) { - if (null != project.getHisXmbm()) { - SavePacsApply savePacsApply = new SavePacsApply(); - savePacsApply.setExamNo(tjOrder.getCardId()); - savePacsApply.setName(tjCustomer.getCusName()); - savePacsApply.setSex(tjCustomer.getCusSex() == 1 ? "2" : "1"); - AgeResult ageResult = DateUtils.calculateAge(tjCustomer.getCusBrithday()); - savePacsApply.setAge(String.valueOf(ageResult.getAge())); - savePacsApply.setAgeUnit(String.valueOf(ageResult.getUnit())); - savePacsApply.setBirthday(DateFormatUtils.format(tjCustomer.getCusBrithday(), "yyyy-MM-dd")); - savePacsApply.setCardNumber(tjCustomer.getCusIdcard()); - savePacsApply.setTel(tjCustomer.getCusPhone()); - Date date = new Date(); - String regNo = "M_jk" + tjOrder.getCardId() +"_" + project.getHisXmbm(); - savePacsApply.setRegNo(regNo); - JSONObject jsonObject = JSONUtil.createObj(); - jsonObject.putOpt("cardId", tjOrder.getCardId()); - jsonObject.putOpt("regNo", regNo); - jsonObject.putOpt("name", tjCustomer.getCusName()); - array.add(jsonObject); - savePacsApply.setCheckItemID(project.getHisXmbm()); - savePacsApply.setCheckItem(project.getHisXmmc()); - // TODO 妫�鏌ラ儴浣� - savePacsApply.setCheckPosition("-"); - savePacsApply.setAmount(project.getProPrice()); - savePacsApply.setApplyDate(DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss")); - savePacsApply.setApplyDepment(dept); - savePacsApply.setApplyDepmentName("浣撴涓績"); - savePacsApply.setApplyDoctor(ysbm); - savePacsApply.setApplyDoctorName("鐜嬪仴钀�"); - savePacsApply.setExecDepment(dept); - savePacsApply.setExecDepmentName("浣撴涓績"); - savePacsApply.setCreateTime(savePacsApply.getApplyDate()); - // TODO 妫�鏌ヨ澶� - savePacsApply.setDevice("-"); - // TODO 妫�鏌ヨ澶囩被鍨� - savePacsApply.setDeviceType("-"); - log.info("PACS妫�鏌ョ敵璇� ->{}", JSONUtil.toJsonStr(savePacsApply)); - AjaxResult ajaxResult = savePacsApply(savePacsApply); - log.info("杩斿洖 ->{}",JSONUtil.toJsonStr(ajaxResult)); - String result = ajaxResult.get("data").toString(); - JSONObject object = JSONUtil.parseObj(JSONUtil.parseObj(result)); - log.info("PACS璇锋眰杩斿洖 ->{}", object); - String code = object.getStr("ResultCode"); - allTotal++; - if (code.equals("1")) { - successPacsList.add(savePacsApply); - LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree(); - tree.setCardId(tjOrder.getCardId()); - tree.setPationid(tjCustomer.getPationId()); - tree.setSqdh(regNo); - tree.setFyhj(String.valueOf(project.getProPrice())); - tree.setHisXmdm(project.getHisXmbm()); - tree.setType("妫�鏌�"); - tree.setService("pacs"); - tree.setTjPrice(String.valueOf(project.getProPrice())); - LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>(); - if (project.getSfzhfy().equals("Y")) - wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, project.getHisXmbm()); - else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, project.getHisXmbm()); - List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1); - if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) { - String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm(); - LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>(); - wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm); - LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2); - LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>(); - wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm()); - LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3); - tree.setXmfl(ejjfxmzd.getYjkmdm()); + if(project.getSfzhfy().equalsIgnoreCase("Y")){ + allTotal = getAllTotal(tjOrder, tjCustomer, array, successPacsList, errorPacsList, project, dept, ysbm, ysmc, allTotal); + }else { + List<TjProject> bySoneId = projectService.getTjProjectListBySoneId(project.getProId().toString()); + for (TjProject tjProject : bySoneId) { + if(project.getProPrice().compareTo(BigDecimal.ZERO) != 0){ + allTotal = getAllTotal(tjOrder, tjCustomer, array, successPacsList, errorPacsList, tjProject, dept, ysbm, ysmc, allTotal); } - tree.setCreateTime(DateUtil.date()); - ltkjJianchajianyanTreeService.save(tree); - } else { - errorPacsList.add(savePacsApply); } } + } + } + } + return allTotal; + } + + private int getAllTotal(TjOrder tjOrder, TjCustomer tjCustomer, JSONArray array, ArrayList<SavePacsApply> successPacsList, ArrayList<SavePacsApply> errorPacsList, TjProject project, String dept, String ysbm, String ysmc, int allTotal) { + if (null != project.getHisXmbm()) { + SavePacsApply savePacsApply = new SavePacsApply(); + savePacsApply.setExamNo(tjOrder.getCardId()); + savePacsApply.setName(tjCustomer.getCusName()); + savePacsApply.setSex(tjCustomer.getCusSex() == 1 ? "2" : "1"); + AgeResult ageResult = DateUtils.calculateAge(tjCustomer.getCusBrithday()); + savePacsApply.setAge(String.valueOf(ageResult.getAge())); + savePacsApply.setAgeUnit(String.valueOf(ageResult.getUnit())); + savePacsApply.setBirthday(DateFormatUtils.format(tjCustomer.getCusBrithday(), "yyyy-MM-dd")); + savePacsApply.setCardNumber(tjCustomer.getCusIdcard()); + savePacsApply.setTel(tjCustomer.getCusPhone()); + Date date = new Date(); + String regNo = "M_jk" + tjOrder.getCardId() +"_" + project.getHisXmbm(); + savePacsApply.setRegNo(regNo); + JSONObject jsonObject = JSONUtil.createObj(); + jsonObject.putOpt("cardId", tjOrder.getCardId()); + jsonObject.putOpt("regNo", regNo); + jsonObject.putOpt("name", tjCustomer.getCusName()); + array.add(jsonObject); + savePacsApply.setCheckItemID(project.getHisXmbm()); + savePacsApply.setCheckItem(project.getHisXmmc()); + // TODO 妫�鏌ラ儴浣� + savePacsApply.setCheckPosition("-"); + savePacsApply.setAmount(project.getProPrice()); + savePacsApply.setApplyDate(DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss")); + savePacsApply.setApplyDepment(dept); + savePacsApply.setApplyDepmentName("浣撴涓績"); + savePacsApply.setApplyDoctor(ysbm); + savePacsApply.setApplyDoctorName(ysmc); + savePacsApply.setExecDepment(dept); + savePacsApply.setExecDepmentName("浣撴涓績"); + savePacsApply.setCreateTime(savePacsApply.getApplyDate()); + // TODO 妫�鏌ヨ澶� + savePacsApply.setDevice("-"); + // TODO 妫�鏌ヨ澶囩被鍨� + savePacsApply.setDeviceType("-"); + log.info("PACS妫�鏌ョ敵璇� ->{}", JSONUtil.toJsonStr(savePacsApply)); + AjaxResult ajaxResult = savePacsApply(savePacsApply); + log.info("杩斿洖 ->{}",JSONUtil.toJsonStr(ajaxResult)); + String result = ajaxResult.get("data").toString(); + JSONObject object = JSONUtil.parseObj(JSONUtil.parseObj(result)); + log.info("PACS璇锋眰杩斿洖 ->{}", object); + String code = object.getStr("ResultCode"); + allTotal++; + if (code.equals("1")) { + successPacsList.add(savePacsApply); + LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree(); + tree.setCardId(tjOrder.getCardId()); + tree.setPationid(tjCustomer.getPationId()); + tree.setSqdh(regNo); + tree.setFyhj(String.valueOf(project.getProPrice())); + tree.setHisXmdm(project.getHisXmbm()); + tree.setType("妫�鏌�"); + tree.setService("pacs"); + tree.setTjPrice(String.valueOf(project.getProPrice())); + LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>(); + if (project.getSfzhfy().equals("Y")) + wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, project.getHisXmbm()); + else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, project.getHisXmbm()); + List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1); + if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) { + String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm(); + LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm); + LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2); + LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>(); + wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm()); + LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3); + tree.setXmfl(ejjfxmzd.getYjkmdm()); + } + tree.setCreateTime(DateUtil.date()); + ltkjJianchajianyanTreeService.save(tree); + } else { + errorPacsList.add(savePacsApply); } } return allTotal; @@ -239,6 +258,8 @@ * xml浼犻�� */ public boolean OrderAdd(TjCustomer customer,TjOrder tjOrder){ + String hospbm = configService.selectConfigByKey("common_api_service_hospbm"); + List<TbTransition> detailList = transitionService.getTbTransitionListByCusId(customer.getCusIdcard(), tjOrder.getCardId()); LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>(); wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList())); @@ -247,43 +268,113 @@ HashMap<String, Object> root = new HashMap<>(); HashMap<String, Object> hashMap = new HashMap<>(); - HashMap<String, Object> patientInfo = new HashMap<>(); - patientInfo.put("PatientId",customer.getCusId()); - patientInfo.put("VisitNo",tjOrder.getTjNumber()); - patientInfo.put("PatType","P"); - patientInfo.put("PatientName",customer.getCusName()); - if (customer.getCusSex() == 0) patientInfo.put("PatientSex","M"); - else if (customer.getCusSex() == 1) patientInfo.put("PatientSex","F"); - else patientInfo.put("PatientSex","O"); - patientInfo.put("PatBirthday",customer.getCusBrithday()); - patientInfo.put("IdCard",customer.getCusIdcard()); + String xmlRequest = ""; - String examItems = ""; - String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - for (TjProject project : projects) { - HashMap<String, Object> examItem = new HashMap<>(); - // 鐢宠鍗曞彿瑙勫垯锛氫綋妫�鍙穇project.getProId()鍚庡洓浣� - examItem.put("HisID", tjOrder.getTjNumber() + String.valueOf(project.getProId()).substring(String.valueOf(project.getProId()).length() - 4)); - examItem.put("EmergencyFlag", "0"); - examItem.put("ExamItemID", project.getHisXmbm()); - examItem.put("ExamItemName", project.getHisXmmc()); - examItem.put("OrderDT", date); - SysDept dept = deptService.getById(project.getDeptId()); - examItem.put("Modality", dept.getModality()); - // TODO 鏀惰垂鏍囪瘑 1鏄敹璐� 鍜� 0鏈敹璐� - examItem.put("ChargeFlag",""); - examItems += "<ExamItem>"+ - XmlUtil.mapToXmlStr(examItem) - .replaceAll("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>","") - .replaceAll("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>","") - .replaceAll("<xml>","") - .replaceAll("</xml>","") - +"</ExamItem>"; + MessageFactory messageFactory = null; + try { + // 鍒涘缓SOAP娑堟伅 + messageFactory = MessageFactory.newInstance(); + SOAPMessage soapMessage = messageFactory.createMessage(); + // 鍒涘缓SOAP Envelope + SOAPPart soapPart = soapMessage.getSOAPPart(); + SOAPEnvelope envelope = soapPart.getEnvelope(); + envelope.addNamespaceDeclaration("xmlns", "http://tempuri.org/"); + + // 鍒涘缓SOAP Body + SOAPBody soapBody = envelope.getBody(); + SOAPElement rootElement = soapBody.addChildElement("OrderAdd", "xmlns"); + rootElement.addChildElement("dataSourceName").addTextNode("hisDataSource"); + + // PatientInfor 閮ㄥ垎 + SOAPElement patientInfor = rootElement.addChildElement("PatientInfor"); + if (customer.getCusSex() == 0) patientInfor.addChildElement("PatientSex").addTextNode("M"); + else if (customer.getCusSex() == 1) patientInfor.addChildElement("PatientSex").addTextNode("F"); + else patientInfor.addChildElement("PatientSex").addTextNode("O"); + patientInfor.addChildElement("PatBirthday").addTextNode(new SimpleDateFormat("yyyy-MM-dd").format(customer.getCusBrithday())); + patientInfor.addChildElement("VisitNo").addTextNode(tjOrder.getTjNumber()); + patientInfor.addChildElement("PatientId").addTextNode(String.valueOf(customer.getCusId())); + patientInfor.addChildElement("HospitalID").addTextNode("shanxiqinxamjyy"); + patientInfor.addChildElement("IdCard").addTextNode(customer.getCusIdcard()); + patientInfor.addChildElement("PatientName").addTextNode(customer.getCusName()); + patientInfor.addChildElement("PatType").addTextNode("P"); + + // ExamItemList 閮ㄥ垎 + SOAPElement examItemList = rootElement.addChildElement("ExamItemList"); + + String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + for (TjProject project : projects) { + SOAPElement examItem = examItemList.addChildElement("ExamItem"); + examItem.addChildElement("HisID").addTextNode(tjOrder.getTjNumber() + String.valueOf(project.getProId()).substring(String.valueOf(project.getProId()).length() - 4)); + examItem.addChildElement("EmergencyFlag").addTextNode("0"); + examItem.addChildElement("ExamItemID").addTextNode(project.getHisXmbm()); + examItem.addChildElement("ExamItemName").addTextNode(project.getHisXmmc()); + examItem.addChildElement("OrderDT").addTextNode(date); + SysDept dept = deptService.getById(project.getDeptId()); + examItem.addChildElement("Modality").addTextNode(dept.getModality()); + examItem.addChildElement("ChargeFlag").addTextNode("1"); + } + + // 淇濆瓨SOAP娑堟伅 + soapMessage.saveChanges(); + + // 鎵撳嵃鐢熸垚鐨凷OAP璇锋眰 + System.out.println("鐢熸垚鐨凷OAP璇锋眰鍐呭锛�"); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + soapMessage.writeTo(byteArrayOutputStream); + xmlRequest = byteArrayOutputStream.toString("UTF-8"); + } catch (SOAPException | IOException e) { + log.error("SOAP寮傚父 ->{}",String.valueOf(e)); } - hashMap.put("PatientInfor",patientInfo); - hashMap.put("ExamItemList",examItems); - root.put("Root",hashMap); - String result = HttpRequest.post("").body(XmlUtil.mapToXmlStr(root)).contentType("application/xml;charset:utf-8;").execute().body(); + + +// HashMap<String, Object> patientInfo = new HashMap<>(); +// patientInfo.put("PatientId",customer.getCusId()); +// patientInfo.put("VisitNo",tjOrder.getTjNumber()); +// patientInfo.put("PatType","P"); +// patientInfo.put("PatientName",customer.getCusName()); +// if (customer.getCusSex() == 0) patientInfo.put("PatientSex","M"); +// else if (customer.getCusSex() == 1) patientInfo.put("PatientSex","F"); +// else patientInfo.put("PatientSex","O"); +// patientInfo.put("PatBirthday",new SimpleDateFormat("yyyy-MM-dd").format(customer.getCusBrithday())); +// patientInfo.put("IdCard",customer.getCusIdcard()); +// patientInfo.put("hospitalid","chkwyy"); +// patientInfo.put("HospitalID",hospbm); +// +// HashMap<String, Object> examItemList = new HashMap<>(); +// List<Map<String, Object>> examItemsList = new ArrayList<>(); + String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); +// +// for (TjProject project : projects) { +// HashMap<String, Object> examItem = new HashMap<>(); +// // 鐢宠鍗曞彿瑙勫垯锛氫綋妫�鍙穇project.getProId()鍚庡洓浣� +// examItem.put("HisID", tjOrder.getTjNumber() + String.valueOf(project.getProId()).substring(String.valueOf(project.getProId()).length() - 4)); +// examItem.put("EmergencyFlag", "0"); +// examItem.put("ExamItemID", project.getHisXmbm()); +// examItem.put("ExamItemName", project.getHisXmmc()); +// examItem.put("OrderDT", date); +// +// SysDept dept = deptService.getById(project.getDeptId()); +// examItem.put("Modality", dept.getModality()); +// // 鏀惰垂鏍囪瘑锛�1 鏄敹璐癸紝0 鏈敹璐� +// examItem.put("ChargeFlag", "1"); +// +// examItemsList.add(examItem); // 灏嗘瘡涓狤xamItem娣诲姞鍒伴泦鍚� +// } +// +// // 鏋勯�犳渶缁堢殑ExamItemList +// examItemList.put("ExamItem", examItemsList); +// hashMap.put("ExamItemList", examItemList); +// +// hashMap.put("PatientInfor", patientInfo); +// +// // 灏嗘暟鎹皝瑁呭埌鏍硅妭鐐� +// root.put("Root", hashMap); +// +// // 浣跨敤Hutool灏哅ap杞崲涓篨ML瀛楃涓� +// String xmlRequest = XmlUtil.mapToXmlStr(root); + + String result = "1"; + log.info("璋冪敤pacs浼犻�掑弬鏁扮殑鍊间负: "+xmlRequest); Map<String, Object> map = XmlUtil.xmlToMap(result); if (map.get("Code").toString().equals("1")){ for (TjProject project : projects) { -- Gitblit v1.8.0