Bläddra i källkod

马尾webservice同步数据

malz 1 år sedan
förälder
incheckning
8e34958dac
21 ändrade filer med 797 tillägg och 544 borttagningar
  1. 1 1
      pom.xml
  2. 0 45
      src/main/java/com/hgwebservice/config/BSXmlWsEntryClass.java
  3. 0 92
      src/main/java/com/hgwebservice/config/BSXmlWsEntryClassService.java
  4. 0 13
      src/main/java/com/hgwebservice/config/WebServiceClientConfig.java
  5. 0 63
      src/main/java/com/hgwebservice/controller/OperatorDataController.java
  6. 35 0
      src/main/java/com/hgwebservice/controller/SyncController.java
  7. 1 1
      src/main/java/com/hgwebservice/dal/dataobject/data/DispatchInfoDO.java
  8. 13 3
      src/main/java/com/hgwebservice/scheduledTask/ScheduledTask.java
  9. 0 14
      src/main/java/com/hgwebservice/service/HgWebService.java
  10. 0 223
      src/main/java/com/hgwebservice/service/HgWebServiceImpl.java
  11. 13 15
      src/main/java/com/hgwebservice/service/syncCdm2/SyncDispatchDataByDeptCodeImpl.java
  12. 2 1
      src/main/java/com/hgwebservice/service/syncCdm2/SyncDispatchInfoByDeptCode.java
  13. 15 22
      src/main/java/com/hgwebservice/service/syncCdm2/SyncDispatchInfoByDeptCodeImpl.java
  14. 1 1
      src/main/java/com/hgwebservice/service/syncCdm2/SyncOperatorData.java
  15. 9 10
      src/main/java/com/hgwebservice/service/syncCdm2/SyncOperatorDataImpl.java
  16. 17 39
      src/main/java/com/hgwebservice/service/syncCdm2/SyncPatientDataByDeptCodeImpl.java
  17. 23 0
      src/main/java/com/hgwebservice/util/ConstantUtil.java
  18. 26 0
      src/main/java/com/hgwebservice/util/DeptEnum.java
  19. 201 0
      src/main/java/com/hgwebservice/util/SoapUtil.java
  20. 439 0
      src/main/java/com/hgwebservice/util/WebServiceUtil.java
  21. 1 1
      src/main/resources/application.yml

+ 1 - 1
pom.xml

@@ -8,7 +8,7 @@
     <name>hg-webservice</name>
     <description>hg-webservice</description>
     <properties>
-        <java.version>17</java.version>
+        <java.version>1.8</java.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <spring-boot.version>2.6.13</spring-boot.version>

+ 0 - 45
src/main/java/com/hgwebservice/config/BSXmlWsEntryClass.java

@@ -1,45 +0,0 @@
-
-package com.hgwebservice.config;
-
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebResult;
-import javax.jws.WebService;
-import javax.jws.soap.SOAPBinding;
-import javax.xml.ws.Action;
-
-
-/**
- * This class was generated by the JAX-WS RI.
- * JAX-WS RI 2.2.9-b130926.1035
- * Generated source version: 2.2
- *
- */
-@WebService(name = "BSXmlWsEntryClass", targetNamespace = "http://ws.access.hai/")
-@SOAPBinding(style = SOAPBinding.Style.RPC)
-public interface BSXmlWsEntryClass {
-
-
-    /**
-     *
-     * @param service
-     * @param parameter
-     * @param pwd
-     * @param urid
-     * @return
-     *     returns java.lang.String
-     */
-    @WebMethod
-    @WebResult(partName = "return")
-    @Action(input = "http://ws.access.hai/BSXmlWsEntryClass/invokeRequest", output = "http://ws.access.hai/BSXmlWsEntryClass/invokeResponse")
-    public String invoke(
-        @WebParam(name = "service", partName = "service")
-        String service,
-        @WebParam(name = "urid", partName = "urid")
-        String urid,
-        @WebParam(name = "pwd", partName = "pwd")
-        String pwd,
-        @WebParam(name = "parameter", partName = "parameter")
-        String parameter);
-
-}

+ 0 - 92
src/main/java/com/hgwebservice/config/BSXmlWsEntryClassService.java

@@ -1,92 +0,0 @@
-
-package com.hgwebservice.config;
-
-import org.springframework.beans.factory.annotation.Configurable;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-
-/**
- * This class was generated by the JAX-WS RI.
- * JAX-WS RI 2.2.9-b130926.1035
- * Generated source version: 2.2
- *
- */
-@Configurable
-@WebServiceClient(name = "BSXmlWsEntryClassService", targetNamespace = "http://ws.access.hai/", wsdlLocation = "http://192.168.200.60:9528/hai/WebServiceEntry?wsdl")
-public class BSXmlWsEntryClassService extends Service
-{
-
-    private final static URL BSXMLWSENTRYCLASSSERVICE_WSDL_LOCATION;
-    private final static WebServiceException BSXMLWSENTRYCLASSSERVICE_EXCEPTION;
-    private final static QName BSXMLWSENTRYCLASSSERVICE_QNAME = new QName("http://ws.access.hai/", "BSXmlWsEntryClassService");
-
-    static {
-        URL url = null;
-        WebServiceException e = null;
-        try {
-            url = new URL("http://192.168.200.60:9528/hai/WebServiceEntry?wsdl");
-        } catch (MalformedURLException ex) {
-            e = new WebServiceException(ex);
-        }
-        BSXMLWSENTRYCLASSSERVICE_WSDL_LOCATION = url;
-        BSXMLWSENTRYCLASSSERVICE_EXCEPTION = e;
-    }
-
-    public BSXmlWsEntryClassService() {
-        super(__getWsdlLocation(), BSXMLWSENTRYCLASSSERVICE_QNAME);
-    }
-
-    public BSXmlWsEntryClassService(WebServiceFeature... features) {
-        super(__getWsdlLocation(), BSXMLWSENTRYCLASSSERVICE_QNAME, features);
-    }
-
-    public BSXmlWsEntryClassService(URL wsdlLocation) {
-        super(wsdlLocation, BSXMLWSENTRYCLASSSERVICE_QNAME);
-    }
-
-    public BSXmlWsEntryClassService(URL wsdlLocation, WebServiceFeature... features) {
-        super(wsdlLocation, BSXMLWSENTRYCLASSSERVICE_QNAME, features);
-    }
-
-    public BSXmlWsEntryClassService(URL wsdlLocation, QName serviceName) {
-        super(wsdlLocation, serviceName);
-    }
-
-    public BSXmlWsEntryClassService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) {
-        super(wsdlLocation, serviceName, features);
-    }
-
-    /**
-     *
-     * @return
-     *     returns BSXmlWsEntryClass
-     */
-    @WebEndpoint(name = "BSXmlWsEntryClassPort")
-    public BSXmlWsEntryClass getBSXmlWsEntryClassPort() {
-        return super.getPort(new QName("http://ws.access.hai/", "BSXmlWsEntryClassPort"), BSXmlWsEntryClass.class);
-    }
-
-    /**
-     *
-     * @param features
-     *     A list of {@link WebServiceFeature} to configure on the proxy.  Supported features not in the <code>features</code> parameter will have their default values.
-     * @return
-     *     returns BSXmlWsEntryClass
-     */
-    @WebEndpoint(name = "BSXmlWsEntryClassPort")
-    public BSXmlWsEntryClass getBSXmlWsEntryClassPort(WebServiceFeature... features) {
-        return super.getPort(new QName("http://ws.access.hai/", "BSXmlWsEntryClassPort"), BSXmlWsEntryClass.class, features);
-    }
-
-    private static URL __getWsdlLocation() {
-        if (BSXMLWSENTRYCLASSSERVICE_EXCEPTION!= null) {
-            throw BSXMLWSENTRYCLASSSERVICE_EXCEPTION;
-        }
-        return BSXMLWSENTRYCLASSSERVICE_WSDL_LOCATION;
-    }
-
-}

+ 0 - 13
src/main/java/com/hgwebservice/config/WebServiceClientConfig.java

@@ -1,13 +0,0 @@
-package com.hgwebservice.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class WebServiceClientConfig {
-
-    @Bean
-    public BSXmlWsEntryClassService bsXmlWsEntryClassService() {
-        return new BSXmlWsEntryClassService();
-    }
-}

+ 0 - 63
src/main/java/com/hgwebservice/controller/OperatorDataController.java

@@ -1,63 +0,0 @@
-package com.hgwebservice.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.hgwebservice.config.BSXmlWsEntryClass;
-import com.hgwebservice.config.BSXmlWsEntryClassService;
-import com.hgwebservice.dal.dataobject.data.PatientDataDO;
-import com.hgwebservice.dal.mysql.data.PatientDataMapper;
-import com.hgwebservice.service.syncCdm2.SyncDispatchDataByDeptCode;
-import com.hgwebservice.service.syncCdm2.SyncOperatorData;
-import com.hgwebservice.service.syncCdm2.SyncPatientDataByDeptCode;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.xml.ws.WebServiceException;
-import java.util.List;
-
-@RestController
-@RequestMapping("/test")
-public class OperatorDataController {
-    @Autowired
-    private BSXmlWsEntryClassService service;
-    @Autowired
-    private PatientDataMapper patientDataMapper;
-    @Autowired
-    private SyncDispatchDataByDeptCode syncDispatchDataByDeptCode;
-    @Autowired
-    private SyncOperatorData syncOperatorData;
-    @Autowired
-    private SyncPatientDataByDeptCode syncPatientDataByDeptCode;
-
-    @PostMapping("/service")
-    public String service() {
-        try {
-            // 获取远程Web服务的代理对象
-            BSXmlWsEntryClass port = service.getBSXmlWsEntryClassPort();
-            // 调用远程Web服务的方法
-            String parameter="<![CDATA[\n        <BSXml>\n<MsgHeader>\n<Sender>HGXTY</Sender>\n<MsgType>HGXTY_operator_data_xty</MsgType>\n<MsgVersion>3.0</MsgVersion>\n</MsgHeader>\n</BSXml>]]>\n";
-            String result = port.invoke("operator_data_xty", "HGXTY","HGXTY",parameter);
-            return result;
-        } catch (WebServiceException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    @PostMapping("/sync")
-    public String sync() {
-        LambdaQueryWrapper<PatientDataDO> patientDataDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        patientDataDOLambdaQueryWrapper.last("limit 10");
-        List<PatientDataDO> patientDataDOS = patientDataMapper.selectList(patientDataDOLambdaQueryWrapper);
-        return patientDataDOS.toString();
-    }
-
-    @PostMapping("/syncCdm2")
-    public void syncCdm2() {
-        syncOperatorData.saveCdm2();
-        syncPatientDataByDeptCode.saveCdm2();
-        syncDispatchDataByDeptCode.saveCdm2();
-    }
-}

+ 35 - 0
src/main/java/com/hgwebservice/controller/SyncController.java

@@ -0,0 +1,35 @@
+package com.hgwebservice.controller;
+
+import com.hgwebservice.service.syncCdm2.SyncDispatchDataByDeptCode;
+import com.hgwebservice.service.syncCdm2.SyncOperatorData;
+import com.hgwebservice.service.syncCdm2.SyncPatientDataByDeptCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/sync")
+@Validated
+public class SyncController {
+    @Autowired
+    private SyncOperatorData syncOperatorData;
+    @Autowired
+    private SyncPatientDataByDeptCode syncPatientDataByDeptCode;
+    @Autowired
+    private SyncDispatchDataByDeptCode syncDispatchDataByDeptCode;
+
+    @GetMapping("/start")
+    public void start() {
+        syncOperatorData.saveCdm2();
+    }
+    @GetMapping("/start1")
+    public void start1() {
+        syncPatientDataByDeptCode.saveCdm2();
+    }
+    @GetMapping("/start2")
+    public void start2() {
+        syncDispatchDataByDeptCode.saveCdm2();
+    }
+}

+ 1 - 1
src/main/java/com/hgwebservice/dal/dataobject/data/DispatchInfoDO.java

@@ -33,7 +33,7 @@ public class DispatchInfoDO {
     /**
      * 医嘱类型
      */
-    private String type;
+    private Integer type;
     /**
      * 医嘱详细内容
      */

+ 13 - 3
src/main/java/com/hgwebservice/scheduledTask/ScheduledTask.java

@@ -23,15 +23,25 @@ public class ScheduledTask {
     @Autowired
     private SyncPatientDataByDeptCode syncPatientDataByDeptCode;
     @PostConstruct
-    @Scheduled(cron ="${cron}")
+    @Scheduled(cron ="0 0 0/24 * * ?")
     public void sync() {
         DateTime beginTime = DateTime.now();
-        log.info("===========开始同步数据===========");
+        log.info("===========开始同步医护数据===========");
         syncOperatorData.saveCdm2();
+        DateTime endTime = DateTime.now();
+        long between = DateUtil.between(beginTime, endTime, DateUnit.SECOND);
+        log.info("同步数据医护结束,耗时: "+between+ "秒") ;
+    }
+
+    @PostConstruct
+    @Scheduled(cron ="0 0/5 * * * ?")
+    public void sync1() {
+        DateTime beginTime = DateTime.now();
+        log.info("===========开始同步患者数据===========");
         syncPatientDataByDeptCode.saveCdm2();
         syncDispatchDataByDeptCode.saveCdm2();
         DateTime endTime = DateTime.now();
         long between = DateUtil.between(beginTime, endTime, DateUnit.SECOND);
-        log.info("同步数据结束,耗时: "+between+ "秒") ;
+        log.info("同步患者数据结束,耗时: "+between+ "秒") ;
     }
 }

+ 0 - 14
src/main/java/com/hgwebservice/service/HgWebService.java

@@ -1,14 +0,0 @@
-package com.hgwebservice.service;
-
-import com.hgwebservice.entity.hisview.DispatchData;
-import com.hgwebservice.entity.hisview.OperatorData;
-import com.hgwebservice.entity.hisview.PatientData;
-
-import java.util.List;
-
-public interface HgWebService {
-
-	List<OperatorData> getOperatorData();
-	List<PatientData> getPatientDataByDeptCode(String deptcode);
-	List<DispatchData> getDispatchDataByDeptCode(String deptcode);
-}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 223
src/main/java/com/hgwebservice/service/HgWebServiceImpl.java


+ 13 - 15
src/main/java/com/hgwebservice/service/syncCdm2/SyncDispatchDataByDeptCodeImpl.java

@@ -4,16 +4,15 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.hgwebservice.dal.dataobject.data.DispatchDataDO;
+import com.hgwebservice.dal.dataobject.data.DispatchInfoDO;
 import com.hgwebservice.dal.dataobject.data.OperatorDataDO;
 import com.hgwebservice.dal.dataobject.data.PatientDataDO;
 import com.hgwebservice.dal.mysql.data.DispatchDataMapper;
+import com.hgwebservice.dal.mysql.data.DispatchInfoMapper;
 import com.hgwebservice.dal.mysql.data.OperatorDataMapper;
 import com.hgwebservice.dal.mysql.data.PatientDataMapper;
 import com.hgwebservice.entity.hisview.DispatchData;
-import com.hgwebservice.entity.hisview.OperatorData;
-import com.hgwebservice.entity.hisview.PatientData;
-import com.hgwebservice.service.HgWebService;
-import lombok.extern.slf4j.Slf4j;
+import com.hgwebservice.util.WebServiceUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -30,27 +29,27 @@ public class SyncDispatchDataByDeptCodeImpl implements SyncDispatchDataByDeptCod
     @Autowired
     DispatchDataMapper dispatchDataMapper;
     @Autowired
+    DispatchInfoMapper dispatchInfoMapper;
+    @Autowired
     PatientDataMapper patientDataMapper;
     @Autowired
     SyncDispatchInfoByDeptCode syncDispatchInfoByDeptCode;
-    @Autowired
-    HgWebService hgWebService;
     @Value("${hospital_id}")
     private Integer hospitalId;
     @Override
     public void saveCdm2() {
-        List<OperatorDataDO> operatorDataDOS = operatorDataMapper.selectList(new LambdaQueryWrapper<>());
         LambdaQueryWrapper<DispatchDataDO> dispatchDataDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
         dispatchDataDOLambdaQueryWrapper.eq(DispatchDataDO::getHospitalId,hospitalId);
         List<DispatchDataDO> dispatchDataDOS1 = dispatchDataMapper.selectList(dispatchDataDOLambdaQueryWrapper);
+        LambdaQueryWrapper<DispatchInfoDO> dispatchInfoDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        dispatchInfoDOLambdaQueryWrapper.eq(DispatchInfoDO::getHospitalId,hospitalId);
+        List<DispatchInfoDO> dispatchInfoDOList = dispatchInfoMapper.selectList(dispatchInfoDOLambdaQueryWrapper);
         LambdaQueryWrapper<PatientDataDO> patientDataDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
         patientDataDOLambdaQueryWrapper.eq(PatientDataDO::getHospitalId,hospitalId);
         List<PatientDataDO> patientDataDOS = patientDataMapper.selectList(patientDataDOLambdaQueryWrapper);
-        if (CollUtil.isNotEmpty(operatorDataDOS)) {
-            List<String> collect = operatorDataDOS.stream().map(OperatorDataDO::getDeptCode).distinct().collect(Collectors.toList());
-            if (CollUtil.isNotEmpty(collect)) {
-                for (String deptCode : collect) {
-                    List<DispatchData> dispatchData = hgWebService.getDispatchDataByDeptCode(deptCode);
+        if (CollUtil.isNotEmpty(patientDataDOS)) {
+                for (PatientDataDO patientDataDO : patientDataDOS) {
+                    List<DispatchData> dispatchData = WebServiceUtil.getDispatchDataByDeptCode(patientDataDO.getPatientNo(),patientDataDO.getDeptCode());
                     if (CollUtil.isNotEmpty(dispatchData)){
                         for (DispatchData dispatchDatum : dispatchData) {
                             if (dispatchDatum.getPatientNo()!=null){
@@ -62,7 +61,7 @@ public class SyncDispatchDataByDeptCodeImpl implements SyncDispatchDataByDeptCod
                         }
                         List<Integer> deletedIds=new ArrayList<>();
                         List<String> updateIds=new ArrayList<>();
-                        List<DispatchDataDO> collect1 = dispatchDataDOS1.stream().filter(item -> item.getDeptCode().equals(deptCode)).collect(Collectors.toList());
+                        List<DispatchDataDO> collect1 = dispatchDataDOS1.stream().filter(item -> item.getPatientNo().equals(patientDataDO.getPatientNo())).collect(Collectors.toList());
                         for (DispatchDataDO dispatchDataDO : collect1) {
                             Optional<DispatchData> first = dispatchData.stream().filter(item -> item.getDispatchNo().equals(dispatchDataDO.getDispatchNo())).findFirst();
                             if (!first.isPresent()){
@@ -87,10 +86,9 @@ public class SyncDispatchDataByDeptCodeImpl implements SyncDispatchDataByDeptCod
                         }
 
                         // 更新到dispatch_info表
-                        syncDispatchInfoByDeptCode.saveCdm2(dispatchData);
+                        syncDispatchInfoByDeptCode.saveCdm2(dispatchData,patientDataDO.getPatientNo(),dispatchInfoDOList);
                     }
                 }
-            }
         }
 //        List<DispatchData> dispatchData = hgWebService.getDispatchDataByDeptCode("55");
 //        if (CollUtil.isNotEmpty(dispatchData)){

+ 2 - 1
src/main/java/com/hgwebservice/service/syncCdm2/SyncDispatchInfoByDeptCode.java

@@ -1,9 +1,10 @@
 package com.hgwebservice.service.syncCdm2;
 
+import com.hgwebservice.dal.dataobject.data.DispatchInfoDO;
 import com.hgwebservice.entity.hisview.DispatchData;
 
 import java.util.List;
 
 public interface SyncDispatchInfoByDeptCode {
-    void saveCdm2(List<DispatchData> dispatchData);
+    void saveCdm2(List<DispatchData> dispatchData,String patientNo,List<DispatchInfoDO> dispatchInfoDOS);
 }

+ 15 - 22
src/main/java/com/hgwebservice/service/syncCdm2/SyncDispatchInfoByDeptCodeImpl.java

@@ -2,15 +2,14 @@ package com.hgwebservice.service.syncCdm2;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.hgwebservice.dal.dataobject.data.DispatchDataDO;
 import com.hgwebservice.dal.dataobject.data.DispatchInfoDO;
 import com.hgwebservice.dal.dataobject.data.OperatorDataDO;
-import com.hgwebservice.dal.mysql.data.DispatchDataMapper;
 import com.hgwebservice.dal.mysql.data.DispatchInfoMapper;
 import com.hgwebservice.dal.mysql.data.OperatorDataMapper;
 import com.hgwebservice.entity.hisview.DispatchData;
-import com.hgwebservice.service.HgWebService;
+import com.hgwebservice.util.DeptEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -26,26 +25,23 @@ public class SyncDispatchInfoByDeptCodeImpl implements SyncDispatchInfoByDeptCod
     OperatorDataMapper operatorDataMapper;
     @Autowired
     DispatchInfoMapper dispatchInfoMapper;
-    @Autowired
-    HgWebService hgWebService;
     @Value("${hospital_id}")
     private Integer hospitalId;
     @Override
-    public void saveCdm2(List<DispatchData> dispatchDataParam) {
-        List<OperatorDataDO> operatorDataDOS = operatorDataMapper.selectList(new LambdaQueryWrapper<>());
-        LambdaQueryWrapper<DispatchInfoDO> dispatchInfoDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        dispatchInfoDOLambdaQueryWrapper.eq(DispatchInfoDO::getHospitalId,hospitalId);
-        List<DispatchInfoDO> dispatchInfoDOS = dispatchInfoMapper.selectList(dispatchInfoDOLambdaQueryWrapper);
-        if (CollUtil.isNotEmpty(operatorDataDOS)) {
-            List<String> collect = operatorDataDOS.stream().map(OperatorDataDO::getDeptCode).distinct().collect(Collectors.toList());
-            if (CollUtil.isNotEmpty(collect)) {
-                for (String deptCode : collect) {
-                    List<DispatchData> dispatchData1 = dispatchDataParam.stream().filter(item -> item.getDeptCode().equals(deptCode)).collect(Collectors.toList());
-                    if (CollUtil.isNotEmpty(dispatchData1)){
-                        List<DispatchInfoDO> dispatchData = dispatchData1.stream().map(item -> {
+    public void saveCdm2(List<DispatchData> dispatchDataParam,String patientNo,List<DispatchInfoDO> dispatchInfoDOS) {
+                    if (CollUtil.isNotEmpty(dispatchDataParam)){
+                        List<DispatchInfoDO> dispatchData = dispatchDataParam.stream().map(item -> {
                             DispatchInfoDO dispatchInfoDO = new DispatchInfoDO();
                             dispatchInfoDO.setCode(item.getDispatchNo());
-                            dispatchInfoDO.setType(item.getType());
+                            if (StrUtil.isNotEmpty(item.getType())){
+                                if (item.getType().equals("临时")){
+                                    dispatchInfoDO.setType(0);
+                                }else{
+                                    dispatchInfoDO.setType(1);
+                                }
+                            }else{
+                                dispatchInfoDO.setType(2);
+                            }
                             dispatchInfoDO.setMessage(item.getMessage());
                             dispatchInfoDO.setFrequency(item.getFrequency());
                             dispatchInfoDO.setDepartCode(item.getDeptCode());
@@ -57,7 +53,7 @@ public class SyncDispatchInfoByDeptCodeImpl implements SyncDispatchInfoByDeptCod
                         }).collect(Collectors.toList());
                         List<Integer> deletedIds=new ArrayList<>();
                         List<String> updateIds=new ArrayList<>();
-                        List<DispatchInfoDO> collect1 = dispatchInfoDOS.stream().filter(item -> item.getDepartCode().equals(deptCode)).collect(Collectors.toList());
+                        List<DispatchInfoDO> collect1 = dispatchInfoDOS.stream().filter(item -> item.getPatientCode().equals(patientNo)).collect(Collectors.toList());
                         for (DispatchInfoDO dispatchDataDO : collect1) {
                             Optional<DispatchInfoDO> first = dispatchData.stream().filter(item -> item.getCode().equals(dispatchDataDO.getCode())).findFirst();
                             if (!first.isPresent()){
@@ -81,9 +77,6 @@ public class SyncDispatchInfoByDeptCodeImpl implements SyncDispatchInfoByDeptCod
                             operatorDataMapper.insertDispatchInfo(dispatchDataDOS,hospitalId);
                         }
                     }
-                }
-            }
-        }
 //        List<DispatchData> dispatchData = hgWebService.getDispatchDataByDeptCode("55");
 //        if (CollUtil.isNotEmpty(dispatchData)){
 //            List<DispatchDataDO> dispatchDataDOS = BeanUtil.copyToList(dispatchData, DispatchDataDO.class);

+ 1 - 1
src/main/java/com/hgwebservice/service/syncCdm2/SyncOperatorData.java

@@ -1,5 +1,5 @@
 package com.hgwebservice.service.syncCdm2;
 
 public interface SyncOperatorData {
-    int saveCdm2();
+    void saveCdm2();
 }

+ 9 - 10
src/main/java/com/hgwebservice/service/syncCdm2/SyncOperatorDataImpl.java

@@ -5,8 +5,8 @@ import cn.hutool.core.collection.CollUtil;
 import com.hgwebservice.dal.dataobject.data.OperatorDataDO;
 import com.hgwebservice.dal.mysql.data.OperatorDataMapper;
 import com.hgwebservice.entity.hisview.OperatorData;
-import com.hgwebservice.service.HgWebService;
-import org.springframework.beans.BeanUtils;
+import com.hgwebservice.util.DeptEnum;
+import com.hgwebservice.util.WebServiceUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -17,17 +17,16 @@ import java.util.List;
 public class SyncOperatorDataImpl implements SyncOperatorData {
     @Autowired
     OperatorDataMapper operatorDataMapper;
-    @Autowired
-    HgWebService hgWebService;
     @Value("${hospital_id}")
     private Integer hospitalId;
     @Override
-    public int saveCdm2() {
-        List<OperatorData> operatorData = hgWebService.getOperatorData();
-        if (CollUtil.isNotEmpty(operatorData)){
-            List<OperatorDataDO> operatorDataDOS = BeanUtil.copyToList(operatorData, OperatorDataDO.class);
-            operatorDataMapper.replaceOperatorData(operatorDataDOS,hospitalId);
+    public void saveCdm2() {
+        for (DeptEnum dept : DeptEnum.values()) {
+            List<OperatorData> operatorData = WebServiceUtil.getOperatorData(dept.getDeptCode(),dept.getDeptName());
+            if (CollUtil.isNotEmpty(operatorData)){
+                List<OperatorDataDO> operatorDataDOS = BeanUtil.copyToList(operatorData, OperatorDataDO.class);
+                operatorDataMapper.replaceOperatorData(operatorDataDOS,hospitalId);
+            }
         }
-        return operatorData.size();
     }
 }

+ 17 - 39
src/main/java/com/hgwebservice/service/syncCdm2/SyncPatientDataByDeptCodeImpl.java

@@ -7,9 +7,9 @@ import com.hgwebservice.dal.dataobject.data.OperatorDataDO;
 import com.hgwebservice.dal.dataobject.data.PatientDataDO;
 import com.hgwebservice.dal.mysql.data.OperatorDataMapper;
 import com.hgwebservice.dal.mysql.data.PatientDataMapper;
-import com.hgwebservice.entity.hisview.OperatorData;
 import com.hgwebservice.entity.hisview.PatientData;
-import com.hgwebservice.service.HgWebService;
+import com.hgwebservice.util.DeptEnum;
+import com.hgwebservice.util.WebServiceUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -25,54 +25,32 @@ public class SyncPatientDataByDeptCodeImpl implements SyncPatientDataByDeptCode
     OperatorDataMapper operatorDataMapper;
     @Autowired
     PatientDataMapper patientDataMapper;
-    @Autowired
-    HgWebService hgWebService;
     @Value("${hospital_id}")
     private Integer hospitalId;
     @Override
     public void saveCdm2() {
-        List<OperatorDataDO> operatorDataDOS = operatorDataMapper.selectList(new LambdaQueryWrapper<>());
 
         LambdaQueryWrapper<PatientDataDO> patientDataDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
         patientDataDOLambdaQueryWrapper.eq(PatientDataDO::getHospitalId,hospitalId);
         List<PatientDataDO> patientDataDOS1 = patientDataMapper.selectList(patientDataDOLambdaQueryWrapper);
-        if (CollUtil.isNotEmpty(operatorDataDOS)){
-            List<String> collect = operatorDataDOS.stream().map(OperatorDataDO::getDeptCode).distinct().collect(Collectors.toList());
-            if (CollUtil.isNotEmpty(collect)){
-                for (String deptCode : collect) {
-                    List<PatientData> patientData = hgWebService.getPatientDataByDeptCode(deptCode);
-                    if (CollUtil.isNotEmpty(patientData)){
-                        List<Integer> deletedIds=new ArrayList<>();
-                        List<PatientDataDO> collect1 = patientDataDOS1.stream().filter(item -> item.getDeptCode().equals(deptCode)).collect(Collectors.toList());
-                        for (PatientDataDO patientDataDO : collect1) {
-                            Optional<PatientData> first = patientData.stream().filter(item -> item.getPatientNo().equals(patientDataDO.getPatientNo())).findFirst();
-                            if (!first.isPresent()){
-                                deletedIds.add(patientDataDO.getId());
-                            }
-                        }
-                        if (CollUtil.isNotEmpty(deletedIds)){
-                            patientDataMapper.deleteBatchIds(deletedIds);
-                        }
-                        List<PatientDataDO> patientDataDOS = BeanUtil.copyToList(patientData, PatientDataDO.class);
-                        operatorDataMapper.replacePatientData(patientDataDOS,hospitalId);
+
+        for (DeptEnum dept : DeptEnum.values()) {
+            List<PatientData> patientData = WebServiceUtil.getPatientDataByDeptCode(dept.getDeptCode(),dept.getDeptName());
+            if (CollUtil.isNotEmpty(patientData)) {
+                List<Integer> deletedIds = new ArrayList<>();
+                List<PatientDataDO> collect1 = patientDataDOS1.stream().filter(item -> item.getDeptCode().equals(dept.getDeptCode())).collect(Collectors.toList());
+                for (PatientDataDO patientDataDO : collect1) {
+                    Optional<PatientData> first = patientData.stream().filter(item -> item.getPatientNo().equals(patientDataDO.getPatientNo())).findFirst();
+                    if (!first.isPresent()) {
+                        deletedIds.add(patientDataDO.getId());
                     }
                 }
+                if (CollUtil.isNotEmpty(deletedIds)) {
+                    patientDataMapper.deleteBatchIds(deletedIds);
+                }
+                List<PatientDataDO> patientDataDOS = BeanUtil.copyToList(patientData, PatientDataDO.class);
+                operatorDataMapper.replacePatientData(patientDataDOS, hospitalId);
             }
         }
-//        List<PatientData> patientData = hgWebService.getPatientDataByDeptCode("55");
-//        if (CollUtil.isNotEmpty(patientData)){
-//            List<Integer> deletedIds=new ArrayList<>();
-//            for (PatientDataDO patientDataDO : patientDataDOS1) {
-//                Optional<PatientData> first = patientData.stream().filter(item -> item.getPatientNo().equals(patientDataDO.getPatientNo())).findFirst();
-//                if (!first.isPresent()){
-//                    deletedIds.add(patientDataDO.getId());
-//                }
-//            }
-//            if (CollUtil.isNotEmpty(deletedIds)){
-//                patientDataMapper.deleteBatchIds(deletedIds);
-//            }
-//            List<PatientDataDO> patientDataDOS = BeanUtil.copyToList(patientData, PatientDataDO.class);
-//            operatorDataMapper.replacePatientData(patientDataDOS,hospitalId);
-//        }
     }
 }

+ 23 - 0
src/main/java/com/hgwebservice/util/ConstantUtil.java

@@ -0,0 +1,23 @@
+package com.hgwebservice.util;
+
+import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.StringReader;
+
+public class ConstantUtil {
+    public static Document convertStringToDocument(String xmlStr) {
+        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+
+        try {
+            DocumentBuilder builder = factory.newDocumentBuilder();
+            Document doc = builder.parse(new InputSource(new StringReader(xmlStr)));
+            return doc;
+        } catch (Exception var4) {
+            var4.printStackTrace();
+            return null;
+        }
+    }
+}

+ 26 - 0
src/main/java/com/hgwebservice/util/DeptEnum.java

@@ -0,0 +1,26 @@
+package com.hgwebservice.util;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+@Getter
+@AllArgsConstructor
+@NoArgsConstructor
+public enum DeptEnum {
+    dept1("234","心脑血管老年病科"),
+    dept2("123","肾脏内分泌科"),
+    dept3("233","消化内科"),
+    dept4("107","骨伤科"),
+    dept5("21","儿科"),
+    dept6("263","康复科"),
+    dept7("237","妇产科"),
+    dept8("293","重症医学科"),
+    dept9("236","外科"),
+    dept10("26","肛肠科"),
+    dept14("145","呼吸内科"),
+    dept16("131","中医科");
+    private String deptCode;
+    private String deptName;
+}
+

+ 201 - 0
src/main/java/com/hgwebservice/util/SoapUtil.java

@@ -0,0 +1,201 @@
+package com.hgwebservice.util;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.soap.*;
+import java.io.StringReader;
+import java.io.ByteArrayOutputStream;
+import java.io.StringReader;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPBodyElement;
+import javax.xml.soap.SOAPConnection;
+import javax.xml.soap.SOAPConnectionFactory;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPMessage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+public class SoapUtil {
+    private static final Logger log = LoggerFactory.getLogger(SoapUtil.class);
+    private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyyMMddHHmmss");
+
+    public SoapUtil() {
+    }
+
+    public static Document generatorWebserviceBySoap(String soapPrefix, String endPointURL, String action, String cdata) throws Exception {
+        log.info("Soap util");
+        Document doc = null;
+        SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
+        SOAPConnection soapConnection = soapConnectionFactory.createConnection();
+        MessageFactory messageFactory = MessageFactory.newInstance();
+        SOAPMessage soapRequest = messageFactory.createMessage();
+        soapRequest.setProperty("javax.xml.soap.write-xml-declaration", "true");
+        SOAPEnvelope reqEnvelope = soapRequest.getSOAPPart().getEnvelope();
+        reqEnvelope.removeNamespaceDeclaration(reqEnvelope.getPrefix());
+        reqEnvelope.addNamespaceDeclaration("soap", "http://www.w3.org/2003/05/soap-envelope");
+        reqEnvelope.addNamespaceDeclaration("urn", "urn:hl7-org:v3");
+        reqEnvelope.setPrefix(soapPrefix);
+        SOAPHeader reqHeader = soapRequest.getSOAPHeader();
+        reqHeader.setPrefix(soapPrefix);
+        SOAPBody reqBody = soapRequest.getSOAPBody();
+        reqBody.setPrefix(soapPrefix);
+        SOAPBodyElement reqBodyAccountVerity = reqBody.addBodyElement(new QName("HIPMessageServer"));
+        reqBodyAccountVerity.setPrefix("urn");
+        reqBodyAccountVerity.addChildElement("action").addTextNode(action);
+        reqBodyAccountVerity.addChildElement("message").addTextNode(cdata);
+        soapRequest.saveChanges();
+        ByteArrayOutputStream outReq = new ByteArrayOutputStream();
+        ByteArrayOutputStream outRes = new ByteArrayOutputStream();
+        soapRequest.writeTo(outReq);
+//        log.info("SOAP Request:");
+//        log.info(outReq.toString());
+        SOAPMessage soapResponse = soapConnection.call(soapRequest, endPointURL);
+        soapResponse.writeTo(outRes);
+        soapConnection.close();
+//        log.info("SOAP Response:");
+//        log.info(outRes.toString());
+        return ConstantUtil.convertStringToDocument(outRes.toString());
+    }
+
+    public static String getToken() throws Exception {
+        Document document = generatorWebserviceBySoap("soap", "http://192.168.5.247:9280/cdxtHIP-service/webservices/IHIPMessageService", "XT00004", buildRequestXml());
+        NodeList nodeList = document.getElementsByTagName("return");
+        Element item = (Element)nodeList.item(0);
+        String temValue = item.getFirstChild().getNodeValue();
+        Document parse = ConstantUtil.convertStringToDocument(temValue);
+        return parse != null ? parse.getElementsByTagName("accessToken").item(0).getFirstChild().getNodeValue() : null;
+    }
+
+    public static String buildRequestXml() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("<![CDATA[");
+        sb.append("<CUSTOM_IN00000 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/CUSTOM_IN00000.xsd\">  ");
+        sb.append("<id root=\"2.16.156.10011.0\" extension=\"040CD76AED0E400B9FD360387BCDE0EB\"/><creationTime value=\"");
+        sb.append(SDF.format(new Date()));
+        sb.append("\"/> ");
+        sb.append("<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"");
+        sb.append("XT00004");
+        sb.append("\"/>");
+        sb.append("<processingCode code=\"P\"/><processingModeCode code=\"I\"/><acceptAckCode code=\"AL\"/><receiver typeCode=\"RCV\"><telecom/><device classCode=\"DEV\" determinerCode=\"INSTANCE\"><id root=\"12.16.156.10011.0.1.1\" extension=\"HIP\"/></device></receiver><sender typeCode=\"SND\"><telecom/><device classCode=\"DEV\" determinerCode=\"INSTANCE\"><id root=\"2.16.156.10011.0.1.2\" extension=\"");
+        sb.append("BIONIME");
+        sb.append("\"/></device></sender>");
+        sb.append("<controlActProcess classCode=\"CACT\" moodCode=\"EVN\"><code code=\"CUSTOM_TE00000\" codeSystem=\"2.16.840.1.113883.1.6\"/><subject typeCode=\"SUBJ\">\t");
+        sb.append("<registrationRequest classCode=\"REG\" moodCode=\"RQO\">");
+        sb.append("<username>");
+        sb.append("BIONIME");
+        sb.append("</username>");
+        sb.append("<password>");
+        sb.append("123456");
+        sb.append("</password>");
+        sb.append("<orgCode>");
+        sb.append("630000000422");
+        sb.append("</orgCode>");
+        sb.append("</registrationRequest></subject></controlActProcess></CUSTOM_IN00000>");
+        sb.append("]]>");
+        return sb.toString();
+    }
+
+    public static Document GeneratorWebserviceBySoap(String soapPrefix, String endPointURL, String namespace, String methodName, String soapActionURI, String[] inputNames, String[] inputValues, String tagName) throws Exception {
+        log.info("Use mawei soap util");
+        Document doc = null;
+        SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
+        SOAPConnection soapConnection = soapConnectionFactory.createConnection();
+        MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol");
+        SOAPMessage soapRequest = messageFactory.createMessage();
+        soapRequest.setProperty("javax.xml.soap.write-xml-declaration", "true");
+        MimeHeaders reqHeaders = soapRequest.getMimeHeaders();
+        reqHeaders.addHeader("SOAPAction", soapActionURI);
+        SOAPEnvelope reqEnvelope = soapRequest.getSOAPPart().getEnvelope();
+        reqEnvelope.removeNamespaceDeclaration(reqEnvelope.getPrefix());
+        reqEnvelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance");
+        reqEnvelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema");
+        reqEnvelope.addNamespaceDeclaration(soapPrefix, "http://www.w3.org/2003/05/soap-envelope");
+        reqEnvelope.setPrefix(soapPrefix);
+        SOAPHeader reqHeader = soapRequest.getSOAPHeader();
+        reqHeader.setPrefix(soapPrefix);
+        SOAPBody reqBody = soapRequest.getSOAPBody();
+        reqBody.setPrefix(soapPrefix);
+        SOAPBodyElement reqBodyAccountVerity = reqBody.addBodyElement(new QName(namespace, methodName));
+        reqBodyAccountVerity.addChildElement(inputNames[0]).addTextNode(inputValues[0]);
+        reqBodyAccountVerity.addChildElement(inputNames[1]).addTextNode(inputValues[1]);
+        soapRequest.saveChanges();
+        if (soapRequest != null) {
+            ByteArrayOutputStream out_req = new ByteArrayOutputStream();
+            ByteArrayOutputStream out_res = new ByteArrayOutputStream();
+            soapRequest.writeTo(out_req);
+//            log.info("SOAP Request:");
+//            log.info(new String(out_req.toByteArray()));
+            SOAPMessage soapResponse = soapConnection.call(soapRequest, endPointURL);
+            soapResponse.writeTo(out_res);
+            soapConnection.close();
+//            log.info("SOAP Response:");
+//            log.info(new String(out_res.toByteArray()));
+            SOAPBody resBody = soapResponse.getSOAPBody();
+            String result = resBody.getElementsByTagName(tagName).item(0).getFirstChild().getNodeValue();
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+
+            try {
+                DocumentBuilder builder = factory.newDocumentBuilder();
+                doc = builder.parse(new InputSource(new StringReader(result)));
+            } catch (Exception var26) {
+                var26.printStackTrace();
+            }
+        }
+
+        return doc;
+    }
+
+    public static String GeneratorWebserviceBySoapResultUpload(String soapPrefix, String endPointURL, String namespace, String methodName, String soapActionURI, String[] inputNames, String[] inputValues, String tagName) throws Exception {
+        log.info("Use mawei soap util");
+        SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
+        SOAPConnection soapConnection = soapConnectionFactory.createConnection();
+        MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol");
+        SOAPMessage soapRequest = messageFactory.createMessage();
+        soapRequest.setProperty("javax.xml.soap.write-xml-declaration", "true");
+        MimeHeaders reqHeaders = soapRequest.getMimeHeaders();
+        reqHeaders.addHeader("SOAPAction", soapActionURI);
+        SOAPEnvelope reqEnvelope = soapRequest.getSOAPPart().getEnvelope();
+        reqEnvelope.removeNamespaceDeclaration(reqEnvelope.getPrefix());
+        reqEnvelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance");
+        reqEnvelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema");
+        reqEnvelope.addNamespaceDeclaration(soapPrefix, "http://www.w3.org/2003/05/soap-envelope");
+        reqEnvelope.setPrefix(soapPrefix);
+        SOAPHeader reqHeader = soapRequest.getSOAPHeader();
+        reqHeader.setPrefix(soapPrefix);
+        SOAPBody reqBody = soapRequest.getSOAPBody();
+        reqBody.setPrefix(soapPrefix);
+        SOAPBodyElement reqBodyAccountVerity = reqBody.addBodyElement(new QName(namespace, methodName));
+        reqBodyAccountVerity.addChildElement(inputNames[0]).addTextNode(inputValues[0]);
+        reqBodyAccountVerity.addChildElement(inputNames[1]).addTextNode(inputValues[1]);
+        soapRequest.saveChanges();
+        String result = null;
+        if (soapRequest != null) {
+            ByteArrayOutputStream out_req = new ByteArrayOutputStream();
+            ByteArrayOutputStream out_res = new ByteArrayOutputStream();
+            soapRequest.writeTo(out_req);
+//            log.info("SOAP Request:");
+//            log.info(new String(out_req.toByteArray()));
+            SOAPMessage soapResponse = soapConnection.call(soapRequest, endPointURL);
+            soapResponse.writeTo(out_res);
+            soapConnection.close();
+//            log.info("SOAP Response:");
+//            log.info(new String(out_res.toByteArray()));
+            SOAPBody resBody = soapResponse.getSOAPBody();
+            result = resBody.getElementsByTagName(tagName).item(0).getFirstChild().getNodeValue();
+        }
+
+        return result;
+    }
+}

+ 439 - 0
src/main/java/com/hgwebservice/util/WebServiceUtil.java

@@ -0,0 +1,439 @@
+package com.hgwebservice.util;
+
+import cn.hutool.core.util.StrUtil;
+import com.hgwebservice.entity.hisview.DispatchData;
+import com.hgwebservice.entity.hisview.OperatorData;
+import com.hgwebservice.entity.hisview.PatientData;
+import com.hgwebservice.entity.server.MeasureData;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Service
+public class WebServiceUtil {
+    private static final Logger log = LoggerFactory.getLogger(WebServiceUtil.class);
+    private static final SimpleDateFormat SDF1_DATE_SHORT = new SimpleDateFormat("yyyy-MM-dd");
+    private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    private static final SimpleDateFormat SDF_TIME2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+    public static final String PATIENTMETHODNAME = "GetPatientHospitalInfo";
+    public static final String OPERATORMETHODNAME = "GetStaffDict";
+    public static final String DISPATCHMETHODNAME = "GetToPerformPrescribeRecord";
+    public static final String RESULTMETHODNAME = "SendBloodGlucoseRecord";
+    public static final String END_POINT_URL = "http://192.168.3.199:8693/Select-Service?wsdl";
+    public static final String END_POINT_URL_RESULT = "http://192.168.3.199:8693/Common-Service?wsdl";
+    public static final String PREFIX = "soap12";
+    public static final String NAMESPACE = "http://www.zysoft.com/";
+    public static final String SOAPACTIONURI = "http://www.zysoft.com/CallInterface";
+    public static final String METHODNAME = "CallInterface";
+    public static final String TAGNAME = "zys:payload";
+
+    public WebServiceUtil() {
+    }
+
+    public static void main(String[] args) {
+    }
+
+    public static List<PatientData> getPatientDataByDeptCode(String deptCode,String deptName) {
+        List<PatientData> allPatientDataList = new ArrayList();
+
+        try {
+            String msgHeaderQuest = buildmsgHeaderXml("GetPatientHospitalInfo");
+            String msgBodyQuest = patientBuildmsgBodyXml(deptCode);
+            String[] inputNames = new String[]{"msgHeader", "msgBody"};
+            String[] inputValues = new String[]{msgHeaderQuest, msgBodyQuest};
+            Document document = SoapUtil.GeneratorWebserviceBySoap("soap12", "http://192.168.3.199:8693/Select-Service?wsdl", "http://www.zysoft.com/", "CallInterface", "http://www.zysoft.com/CallInterface", inputNames, inputValues, "zys:payload");
+            if (document != null) {
+                Element element = document.getDocumentElement();
+                NodeList nodeList = element.getElementsByTagName("returnContent");
+                System.out.println(nodeList.getLength());
+
+                for(int j = 0; j < nodeList.getLength(); ++j) {
+                    Element node = (Element)nodeList.item(j);
+                    PatientData patientData = new PatientData();
+
+                    try {
+                        patientData.setPatientNo(getChildElementText(node, "visitNo"));
+                        patientData.setHospitalNo(getChildElementText(node, "visitNo"));
+                        patientData.setWristbandNo(getChildElementText(node, "patientId"));
+                        patientData.setName(getChildElementText(node, "patientName"));
+                        patientData.setGender(getChildElementText(node, "patientSex"));
+                        patientData.setDeptCode(deptCode);
+                        patientData.setDeptName(deptName);
+                        patientData.setWardCode(deptCode);
+                        patientData.setWardName(deptName);
+                        String hisBedNo = getChildElementText(node, "bedNo");
+                        String localBedNo = null;
+                        if (StrUtil.isNotEmpty(hisBedNo)){
+                            if ("233".equals(deptCode)) {
+                                localBedNo = "内一" + hisBedNo;
+                            } else if ("234".equals(deptCode)) {
+                                localBedNo = "心脑血管" + hisBedNo;
+                            } else if ("107".equals(deptCode)) {
+                                localBedNo = "骨伤" + hisBedNo;
+                            } else if ("236".equals(deptCode)) {
+                                localBedNo = "外科" + hisBedNo;
+                            } else if ("237".equals(deptCode)) {
+                                localBedNo = "妇产" + hisBedNo;
+                            } else if ("263".equals(deptCode)) {
+                                localBedNo = "康复" + hisBedNo;
+                            } else if ("123".equals(deptCode)) {
+                                localBedNo = "肾内" + hisBedNo;
+                            } else if ("400".equals(deptCode)) {
+                                localBedNo = "手外" + hisBedNo;
+                            } else if ("21".equals(deptCode)) {
+                                localBedNo = "儿科" + hisBedNo;
+                            } else if ("293".equals(deptCode)) {
+                                localBedNo = "重症" + hisBedNo;
+                            } else if ("26".equals(deptCode)) {
+                                localBedNo = "肛肠" + hisBedNo;
+                            } else if ("145".equals(deptCode)) {
+                                localBedNo = "呼内" + hisBedNo;
+                            } else if ("131".equals(deptCode)) {
+                                localBedNo = "中医科" + hisBedNo;
+                            } else {
+                                localBedNo = hisBedNo;
+                            }
+                        }
+
+                        patientData.setBedNo(localBedNo);
+                        String birthday = getChildElementText(node, "patientBirthdate");
+                        Date date = new Timestamp(SDF1_DATE_SHORT.parse(birthday.substring(0, 4) + "-" + birthday.substring(5, 7) + "-" + birthday.substring(8, 10)).getTime());
+                        patientData.setBirthday(SDF.format(date));
+                        patientData.setIdentifyNo(getChildElementText(node, "identityNo"));
+                        String hospitalizedDate = getChildElementText(node, "inDate");
+                        date = new Timestamp(SDF1_DATE_SHORT.parse(hospitalizedDate.substring(0, 4) + "-" + hospitalizedDate.substring(5, 7) + "-" + hospitalizedDate.substring(8, 10)).getTime());
+                        patientData.setHospitalDate(SDF.format(date));
+                        allPatientDataList.add(patientData);
+                    } catch (Exception var17) {
+                        log.error("Lack patient(" + getChildElementText(node, "patientno") + ") information");
+                    }
+                }
+            }
+
+            return allPatientDataList;
+        } catch (Exception var18) {
+            log.error("Get PatientDataByWardCode Fail !!! ", var18);
+            return allPatientDataList;
+        }
+    }
+
+    public static List<OperatorData> getOperatorData(String deptCode,String deptName) {
+        List<OperatorData> operatorDataList = new ArrayList();
+
+        try {
+            String msgHeaderQuest = buildmsgHeaderXml("GetStaffDict");
+            String msgBodyQuest = operatorBuildmsgBodyXml();
+            String[] inputNames = new String[]{"msgHeader", "msgBody"};
+            String[] inputValues = new String[]{msgHeaderQuest, msgBodyQuest};
+            Document document = SoapUtil.GeneratorWebserviceBySoap("soap12", "http://192.168.3.199:8693/Select-Service?wsdl", "http://www.zysoft.com/", "CallInterface", "http://www.zysoft.com/CallInterface", inputNames, inputValues, "zys:payload");
+            if (document != null) {
+                Element element = document.getDocumentElement();
+                NodeList nodeList1 = element.getElementsByTagName("returnContent");
+                System.out.println(nodeList1.getLength());
+
+                for(int j = 0; j < nodeList1.getLength(); ++j) {
+                    Element node = (Element)nodeList1.item(j);
+                    OperatorData operatorDataTemp = new OperatorData();
+                    String operatorNo = getChildElementText(node, "workCode");
+                    String accName = getChildElementText(node, "staffName");
+                    operatorDataTemp.setAcc(operatorNo);
+                    operatorDataTemp.setAccName(accName);
+                    operatorDataTemp.setIsEffective("0");
+                    operatorDataTemp.setDeptCode(deptCode);
+                    operatorDataTemp.setDeptName(deptName);
+                    operatorDataTemp.setWardCode(deptCode);
+                    operatorDataTemp.setWardName(deptName);
+                    operatorDataList.add(operatorDataTemp);
+                }
+            }
+
+            log.info(deptCode + "获取操作员" + operatorDataList.size());
+            return operatorDataList;
+        } catch (Exception var14) {
+            log.error("Get AllOperatorData Fail !!! ", var14);
+            return operatorDataList;
+        }
+    }
+
+    public static List<DispatchData> getDispatchDataByDeptCode(String visitNo,String deptCode) {
+        List<DispatchData> dispatcList = new ArrayList();
+
+        try {
+            String msgHeaderQuest = buildmsgHeaderXml("GetToPerformPrescribeRecord");
+            String msgBodyQuest = dispatchBuildmsgBodyXml(visitNo);
+            String[] inputNames = new String[]{"msgHeader", "msgBody"};
+            String[] inputValues = new String[]{msgHeaderQuest, msgBodyQuest};
+            Document document = SoapUtil.GeneratorWebserviceBySoap("soap12", "http://192.168.3.199:8693/Select-Service?wsdl", "http://www.zysoft.com/", "CallInterface", "http://www.zysoft.com/CallInterface", inputNames, inputValues, "zys:payload");
+            if (document != null) {
+                Element element = document.getDocumentElement();
+                NodeList nodeList1 = element.getElementsByTagName("returnContent");
+                System.out.println(nodeList1.getLength());
+
+                for(int j = 0; j < nodeList1.getLength(); ++j) {
+                    Element node = (Element)nodeList1.item(j);
+                    DispatchData dispatchData = new DispatchData();
+                    String patientNo = getChildElementText(node, "visitNo");
+                    String dispatchNo = getChildElementText(node, "prescrobeNo");
+                    String type = getChildElementText(node, "prescrobeType");
+                    String message = getChildElementText(node, "prescrobeMessage");
+                    String createDate = getChildElementText(node, "applyTime");
+                    String establishDate = getChildElementText(node, "prescribeStartTime");
+                    String period = getChildElementText(node, "measureTimePoint");
+                    String frequency = getChildElementText(node, "performFreq");
+                    dispatchData.setPatientNo(patientNo);
+                    dispatchData.setDispatchNo(dispatchNo);
+                    dispatchData.setFrequency(frequency);
+                    dispatchData.setMessage(message);
+                    dispatchData.setFrequency(period);
+                    dispatchData.setDeptCode(deptCode);
+                    dispatchData.setType(type);
+                    if (StrUtil.isNotEmpty(period)){
+                        dispatcList.add(dispatchData);
+                    }
+                }
+            }
+
+            log.info("获取有效医嘱" + dispatcList.size());
+            return dispatcList;
+        } catch (Exception var20) {
+            log.error("Get AllOperatorData Fail !!! ", var20);
+            return null;
+        }
+    }
+
+    public static Boolean insertMeasureResult(MeasureData measureData) {
+        Boolean bool = false;
+        String lt = "<";
+        String gt = ">";
+        String response = "";
+
+        try {
+            String period = String.valueOf(measureData.getPeriodCode());
+            if (period == null || period.equals("null")) {
+                period = "随机";
+                log.info("NO SELECT PEIOD  DEFAULT STAT ! ! !");
+            }
+
+            String analylsisNode = null;
+            if (!"随机".equals(period) && !"00:00".equals(period) && !"03:00".equals(period)) {
+                if ("早餐前".equals(period)) {
+                    analylsisNode = "01";
+                } else if ("早餐后2h".equals(period)) {
+                    analylsisNode = "02";
+                } else if ("午餐前".equals(period)) {
+                    analylsisNode = "03";
+                } else if ("午餐后2h".equals(period)) {
+                    analylsisNode = "04";
+                } else if ("晚餐前".equals(period)) {
+                    analylsisNode = "05";
+                } else if ("晚餐后2h".equals(period)) {
+                    analylsisNode = "06";
+                } else if ("睡前".equals(period)) {
+                    analylsisNode = "07";
+                } else if ("00:00".equals(period)) {
+                    analylsisNode = "08";
+                } else if ("03:00".equals(period)) {
+                    analylsisNode = "09";
+                }
+            } else {
+                analylsisNode = "00";
+            }
+
+            String msgHeaderQuest = buildmsgHeaderXml("SendBloodGlucoseRecord");
+            StringBuilder sb = new StringBuilder();
+            sb.append("<![CDATA[<root" + gt);
+            sb.append(lt + "recordId" + gt);
+            sb.append(measureData.getTestID());
+            sb.append(lt + "/recordId" + gt);
+            sb.append(lt + "patientId" + gt);
+            sb.append(measureData.getMeterSn());
+            sb.append(lt + "/patientId" + gt);
+            sb.append(lt + "visitNo" + gt);
+            sb.append(measureData.getPatientNO());
+            sb.append(lt + "/visitNo" + gt);
+            sb.append(lt + "visitType" + gt);
+            sb.append("2");
+            sb.append(lt + "/visitType" + gt);
+            sb.append(lt + "patientName" + gt);
+            sb.append(measureData.getName());
+            sb.append(lt + "/patientName" + gt);
+            sb.append(lt + "bedNo" + gt);
+            sb.append(measureData.getStripLot());
+            sb.append(lt + "/bedNo" + gt);
+            sb.append(lt + "visitDeptCode" + gt);
+            sb.append(measureData.getDispatchNO());
+            sb.append(lt + "/visitDeptCode" + gt);
+            sb.append(lt + "bloodGlucoseValue" + gt);
+            sb.append(measureData.getMeasureValue());
+            sb.append(lt + "/bloodGlucoseValue" + gt);
+            sb.append(lt + "measureDate" + gt);
+            sb.append(measureData.getMeasureDate().substring(0, 10));
+            sb.append(lt + "/measureDate" + gt);
+            sb.append(lt + "measureTimePoint" + gt);
+            sb.append(measureData.getMeasureDate().substring(0, 16));
+            sb.append(lt + "/measureTimePoint" + gt);
+            sb.append(lt + "analylsisNode" + gt);
+            sb.append(analylsisNode);
+            sb.append(lt + "/analylsisNode" + gt);
+            sb.append(lt + "operateType" + gt);
+            sb.append("1");
+            sb.append(lt + "/operateType" + gt);
+            sb.append(lt + "createOperatorId" + gt);
+            sb.append(lt + "/createOperatorId" + gt);
+            sb.append(lt + "createOperator" + gt);
+            sb.append(measureData.getAcc());
+            sb.append(lt + "/createOperator" + gt);
+            sb.append(lt + "createTime" + gt);
+            sb.append(SDF.format(new Date()));
+            sb.append(lt + "/createTime" + gt);
+            sb.append(lt + "measureMachineNo" + gt);
+            sb.append(lt + "/measureMachineNo" + gt);
+            sb.append(lt + "measureMmaterialsNo" + gt);
+            sb.append(lt + "/measureMmaterialsNo" + gt);
+            sb.append(lt + "prescrobeNo" + gt);
+            sb.append(lt + "/prescrobeNo" + gt);
+            sb.append(lt + "/root>]]>");
+            String msgBodyQuest = sb.toString();
+            log.info("回传字符串:" + msgBodyQuest);
+            String[] inputNames = new String[]{"msgHeader", "msgBody"};
+            String[] inputValues = new String[]{msgHeaderQuest, msgBodyQuest};
+            response = SoapUtil.GeneratorWebserviceBySoapResultUpload("soap12", "http://192.168.3.199:8693/Common-Service?wsdl", "http://www.zysoft.com/", "CallInterface", "http://www.zysoft.com/CallInterface", inputNames, inputValues, "zys:payload");
+        } catch (Exception var12) {
+            log.error("doReplyResult fail ", var12);
+        }
+
+        if (response.contains("OK")) {
+            bool = true;
+        } else {
+            bool = false;
+        }
+
+        return bool;
+    }
+
+    public static String getChildElementText(Element node, String tagName) {
+        Element elt = getChildElement(node, tagName);
+        return elt != null ? getText(elt) : "";
+    }
+
+    public static Element getChildElement(Element node, String tagName) {
+        NodeList list = node.getElementsByTagName(tagName);
+        return list.getLength() > 0 ? (Element)list.item(0) : null;
+    }
+
+    public static String getText(Node node) {
+        String value = null;
+
+        for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()) {
+            short type = child.getNodeType();
+            if (type == 3 || type == 4) {
+                value = child.getNodeValue();
+                break;
+            }
+        }
+
+        return get(value);
+    }
+
+    public static String get(String s) {
+        return s == null ? "" : s.trim();
+    }
+
+    private static String buildmsgHeaderXml(String url) {
+        String lt = "<";
+        String gt = ">";
+        StringBuilder sb = new StringBuilder();
+        sb.append("<![CDATA[<root" + gt);
+        sb.append(lt + "serverName" + gt);
+        sb.append(url);
+        sb.append(lt + "/serverName" + gt);
+        sb.append(lt + "format" + gt);
+        sb.append("xml");
+        sb.append(lt + "/format" + gt);
+        sb.append(lt + "certificate" + gt);
+        sb.append("ArzMFVA4bgM4yiZs35q24w==");
+        sb.append(lt + "/certificate" + gt);
+        String uuid = UUID.randomUUID().toString().replace("-", "").toLowerCase();
+        sb.append(lt + "msgNo" + gt);
+        sb.append(uuid);
+        sb.append(lt + "/msgNo" + gt);
+        String date = SDF.format(new Date());
+        sb.append(lt + "sendTime" + gt);
+        sb.append(date);
+        sb.append(lt + "/sendTime" + gt);
+        sb.append(lt + "/root>]]>");
+//        log.info("RequestXml:" + sb.toString());
+//        log.info("");
+        String[] sa = new String[]{sb.toString()};
+        return sa[0];
+    }
+
+    private static String patientBuildmsgBodyXml(String deptCode) {
+        String lt = "<";
+        String gt = ">";
+        StringBuilder sb = new StringBuilder();
+        sb.append("<![CDATA[<root" + gt);
+        sb.append(lt + "deptCode" + gt);
+        sb.append(deptCode);
+        sb.append(lt + "/deptCode" + gt);
+        sb.append(lt + "wardCode" + gt);
+        sb.append(lt + "/wardCode" + gt);
+        sb.append(lt + "visitStatus" + gt);
+        sb.append("1");
+        sb.append(lt + "/visitStatus" + gt);
+        sb.append(lt + "/root>]]>");
+//        log.info("RequestXml:" + sb.toString());
+//        log.info("");
+        String[] sa = new String[]{sb.toString()};
+        return sa[0];
+    }
+
+    private static String operatorBuildmsgBodyXml() {
+        String lt = "<";
+        String gt = ">";
+        StringBuilder sb = new StringBuilder();
+        sb.append("<![CDATA[<root" + gt);
+        sb.append(lt + "orgCode" + gt);
+        sb.append(lt + "/orgCode" + gt);
+        sb.append(lt + "deptCode" + gt);
+        sb.append(lt + "/deptCode" + gt);
+        sb.append(lt + "staffName" + gt);
+        sb.append(lt + "/staffName" + gt);
+        sb.append(lt + "/root>]]>");
+//        log.info("RequestXml:" + sb.toString());
+//        log.info("");
+        String[] sa = new String[]{sb.toString()};
+        return sa[0];
+    }
+
+    private static String dispatchBuildmsgBodyXml(String patientNo) {
+        String lt = "<";
+        String gt = ">";
+        StringBuilder sb = new StringBuilder();
+        sb.append("<![CDATA[<root" + gt);
+        sb.append(lt + "visitNo" + gt);
+        sb.append(patientNo);
+        sb.append(lt + "/visitNo" + gt);
+        sb.append(lt + "/root>]]>");
+        log.info("RequestXml:" + sb.toString());
+        log.info("");
+        String[] sa = new String[]{sb.toString()};
+        return sa[0];
+    }
+}

+ 1 - 1
src/main/resources/application.yml

@@ -6,7 +6,7 @@ db:
   username: root
   password: vD5LPzoXORAF9gE3
 
-hospital_id: 12713
+hospital_id: 100164
 cron: 0 0/2 * * * ?
 
 spring: