From 5c2bfd01241c2790c860ef17c127a788556384cc Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期二, 18 六月 2024 10:37:01 +0800
Subject: [PATCH] webservice推送设备状态和设备利用率

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRateList.java |   22 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRate.java     |   46 +++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/XmlUtil.java                      |  110 +++++++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatusList.java          |   23 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceUtilizationRateJob.java  |   93 +++++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatus.java              |   37 ++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceStatusJob.java           |   94 +++++++++++
 7 files changed, 425 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceStatusJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceStatusJob.java
new file mode 100644
index 0000000..52da0f6
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceStatusJob.java
@@ -0,0 +1,94 @@
+package org.jeecg.modules.mdc.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.mdc.service.IEquipmentService;
+import org.jeecg.modules.mdc.util.CxfClientUtil;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+import org.jeecg.modules.mdc.util.XmlUtil;
+import org.jeecg.modules.mdc.vo.WsEquipmentStatus;
+import org.jeecg.modules.mdc.vo.WsEquipmentStatusList;
+import org.jeecg.modules.quartz.entity.QuartzJob;
+import org.jeecg.modules.quartz.entity.SysQuartzLog;
+import org.jeecg.modules.quartz.service.IQuartzJobService;
+import org.jeecg.modules.quartz.service.ISysQuartzLogService;
+import org.quartz.*;
+import org.springframework.beans.factory.annotation.Value;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Lius
+ * @date 2024/6/11 11:27
+ */
+@PersistJobDataAfterExecution
+@DisallowConcurrentExecution
+@Slf4j
+public class WebServiceStatusJob implements Job {
+
+    /**
+     * url
+     */
+    @Value("${webservice.url}")
+    private String url;
+
+    /**
+     * namespace
+     */
+    @Value("${webservice.namespace}")
+    private String namespace;
+
+    /**
+     * method
+     */
+    @Value("${webservice.statusMethod}")
+    private String method;
+
+
+    @Resource
+    private IQuartzJobService quartzJobService;
+
+    @Resource
+    private ISysQuartzLogService sysQuartzLogService;
+
+    @Resource
+    private IEquipmentService equipmentService;
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException {
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            quartzLog.setJobId(byJobClassName.get(0).getId());
+        }
+        log.info("WebService涓婃姤璁惧鐘舵�佸埌浜岀骇缁煎悎绠℃帶骞冲彴浠诲姟 WebServiceStatusJob start!  鏃堕棿:" + DateUtils.now());
+        long startTime = System.currentTimeMillis();
+        try {
+            List<WsEquipmentStatus> equipmentStatusList = equipmentService.selectEquipmentStatus();
+            WsEquipmentStatusList wsEquipmentStatusList = new WsEquipmentStatusList();
+            List<WsEquipmentStatus> list = new ArrayList<>();
+            if (equipmentStatusList != null && !equipmentStatusList.isEmpty()) {
+                for (WsEquipmentStatus wsEquipmentStatus : equipmentStatusList) {
+                    list.add(wsEquipmentStatus);
+                    wsEquipmentStatusList.setList(list);
+                    String s = XmlUtil.convertToXml(wsEquipmentStatusList);
+                    list.clear();
+                    log.info("涓婃姤鐘舵�佹暟鎹� ===== " + s);
+                    String result = CxfClientUtil.invokeService(url, s, namespace, method);
+                    log.info("涓婃姤鐘舵�佺粨鏋� ===== " + result);
+                }
+            }
+            quartzLog.setIsSuccess(0);
+        } catch (Exception e) {
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceUtilizationRateJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceUtilizationRateJob.java
new file mode 100644
index 0000000..fbe5528
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceUtilizationRateJob.java
@@ -0,0 +1,93 @@
+package org.jeecg.modules.mdc.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.mdc.service.IEquipmentService;
+import org.jeecg.modules.mdc.util.CxfClientUtil;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+import org.jeecg.modules.mdc.util.XmlUtil;
+import org.jeecg.modules.mdc.vo.WsEquipmentUtilizationRate;
+import org.jeecg.modules.mdc.vo.WsEquipmentUtilizationRateList;
+import org.jeecg.modules.quartz.entity.QuartzJob;
+import org.jeecg.modules.quartz.entity.SysQuartzLog;
+import org.jeecg.modules.quartz.service.IQuartzJobService;
+import org.jeecg.modules.quartz.service.ISysQuartzLogService;
+import org.quartz.*;
+import org.springframework.beans.factory.annotation.Value;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Lius
+ * @date 2024/6/11 16:17
+ */
+@PersistJobDataAfterExecution
+@DisallowConcurrentExecution
+@Slf4j
+public class WebServiceUtilizationRateJob implements Job {
+
+    /**
+     * 鍦板潃
+     */
+
+    @Value("${webservice.url}")
+    private String url;
+
+    /**
+     * namespace
+     */
+    @Value("${webservice.namespace}")
+    private String namespace;
+
+    /**
+     * 鏂规硶
+     */
+    @Value("${webservice.rateMethod}")
+    private String method;
+    @Resource
+    private IQuartzJobService quartzJobService;
+
+    @Resource
+    private ISysQuartzLogService sysQuartzLogService;
+
+    @Resource
+    private IEquipmentService equipmentService;
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException {
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            quartzLog.setJobId(byJobClassName.get(0).getId());
+        }
+        log.info("WebService涓婃姤璁惧鍒╃敤鐜囧埌浜岀骇缁煎悎绠℃帶骞冲彴浠诲姟 WebServiceUtilizationRateJob start!  鏃堕棿:" + DateUtils.now());
+        long startTime = System.currentTimeMillis();
+        try {
+            List<WsEquipmentUtilizationRate> equipmentRateList = equipmentService.selectEquipmentRate();
+            WsEquipmentUtilizationRateList wsEquipmentUtilizationRateList = new WsEquipmentUtilizationRateList();
+            List<WsEquipmentUtilizationRate> list = new ArrayList<>();
+            if (equipmentRateList != null && !equipmentRateList.isEmpty()) {
+                for (WsEquipmentUtilizationRate wsEquipmentUtilizationRate : equipmentRateList) {
+                    list.add(wsEquipmentUtilizationRate);
+                    wsEquipmentUtilizationRateList.setList(list);
+                    String s = XmlUtil.convertToXml(wsEquipmentUtilizationRateList);
+                    list.clear();
+                    log.info("涓婃姤鍒╃敤鐜囨暟鎹� ===== " + s);
+                    String result = CxfClientUtil.invokeService(url, s, namespace, method);
+                    log.info("涓婃姤鍒╃敤鐜囩粨鏋� ===== " + result);
+                }
+            }
+            quartzLog.setIsSuccess(0);
+        } catch (Exception e) {
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/XmlUtil.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/XmlUtil.java
new file mode 100644
index 0000000..a8f0b00
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/XmlUtil.java
@@ -0,0 +1,110 @@
+package org.jeecg.modules.mdc.util;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import java.io.*;
+
+/**
+ * @author Lius
+ * @date 2024/6/12 10:31
+ */
+public class XmlUtil {
+    /**
+     * 灏嗗璞$洿鎺ヨ浆鎹㈡垚String绫诲瀷鐨� XML杈撳嚭
+     *
+     * @param obj
+     * @return
+     */
+    public static String convertToXml(Object obj) {
+        // 鍒涘缓杈撳嚭娴�
+        StringWriter sw = new StringWriter();
+        try {
+            // 鍒╃敤jdk涓嚜甯︾殑杞崲绫诲疄鐜�
+            JAXBContext context = JAXBContext.newInstance(obj.getClass());
+
+            Marshaller marshaller = context.createMarshaller();
+            // 鏍煎紡鍖杧ml杈撳嚭鐨勬牸寮�
+//            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
+            // 鍘绘帀鐢熸垚xml鏃剁殑榛樿鎶ユ枃澶�
+            marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+            // 灏嗗璞¤浆鎹㈡垚杈撳嚭娴佸舰寮忕殑xml
+            marshaller.marshal(obj, sw);
+        } catch (JAXBException e) {
+            e.printStackTrace();
+        }
+        return sw.toString();
+    }
+
+    /**
+     * 灏嗗璞℃牴鎹矾寰勮浆鎹㈡垚xml鏂囦欢
+     *
+     * @param obj
+     * @param path
+     * @return
+     */
+    public static void convertToXml(Object obj, String path) {
+        try {
+            // 鍒╃敤jdk涓嚜甯︾殑杞崲绫诲疄鐜�
+            JAXBContext context = JAXBContext.newInstance(obj.getClass());
+
+            Marshaller marshaller = context.createMarshaller();
+            // 鏍煎紡鍖杧ml杈撳嚭鐨勬牸寮�
+            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
+                    Boolean.TRUE);
+            // 灏嗗璞¤浆鎹㈡垚杈撳嚭娴佸舰寮忕殑xml
+            // 鍒涘缓杈撳嚭娴�
+            FileWriter fw = null;
+            try {
+                fw = new FileWriter(path);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            marshaller.marshal(obj, fw);
+        } catch (JAXBException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    /**
+     * 灏哠tring绫诲瀷鐨剎ml杞崲鎴愬璞�
+     */
+    public static Object convertXmlStrToObject(Class clazz, String xmlStr) {
+        Object xmlObject = null;
+        try {
+            JAXBContext context = JAXBContext.newInstance(clazz);
+            // 杩涜灏哫ml杞垚瀵硅薄鐨勬牳蹇冩帴鍙�
+            Unmarshaller unmarshaller = context.createUnmarshaller();
+            StringReader sr = new StringReader(xmlStr);
+            xmlObject = unmarshaller.unmarshal(sr);
+        } catch (JAXBException e) {
+            e.printStackTrace();
+        }
+        return xmlObject;
+    }
+
+    @SuppressWarnings("unchecked")
+    /**
+     * 灏唂ile绫诲瀷鐨剎ml杞崲鎴愬璞�
+     */
+    public static Object convertXmlFileToObject(Class clazz, String xmlPath) {
+        Object xmlObject = null;
+        try {
+            JAXBContext context = JAXBContext.newInstance(clazz);
+            Unmarshaller unmarshaller = context.createUnmarshaller();
+            FileReader fr = null;
+            try {
+                fr = new FileReader(xmlPath);
+            } catch (FileNotFoundException e) {
+                e.printStackTrace();
+            }
+            xmlObject = unmarshaller.unmarshal(fr);
+        } catch (JAXBException e) {
+            e.printStackTrace();
+        }
+        return xmlObject;
+    }
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatus.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatus.java
new file mode 100644
index 0000000..82129a0
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatus.java
@@ -0,0 +1,37 @@
+package org.jeecg.modules.mdc.vo;
+
+import lombok.Data;
+import org.jeecg.modules.mdc.util.DateAdapter;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import java.util.Date;
+
+/**
+ * @author Lius
+ * @date 2024/6/11 10:44
+ */
+@Data
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlRootElement(name = "equipment")
+public class WsEquipmentStatus {
+
+    @XmlElement
+    private String equipmentCode;
+
+    @XmlElement
+    private String equipmentName;
+
+    @XmlElement
+    private String equipmentStatus;
+
+    @XmlElement
+    @XmlJavaTypeAdapter(DateAdapter.class)
+    private Date creationDate;
+
+    @XmlElement
+    private String mainDeptCode;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatusList.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatusList.java
new file mode 100644
index 0000000..6e7a16c
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatusList.java
@@ -0,0 +1,23 @@
+package org.jeecg.modules.mdc.vo;
+
+import lombok.Data;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+/**
+ * @author Lius
+ * @date 2024/6/13 10:00
+ */
+@Data
+@XmlRootElement(name = "list")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class WsEquipmentStatusList {
+
+    @XmlElement(name = "equipment")
+    private List<WsEquipmentStatus> list;
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRate.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRate.java
new file mode 100644
index 0000000..84d8c74
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRate.java
@@ -0,0 +1,46 @@
+package org.jeecg.modules.mdc.vo;
+
+import lombok.Data;
+import org.jeecg.modules.mdc.util.DateAdapter;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import java.util.Date;
+
+/**
+ * @author Lius
+ * @date 2024/6/11 16:31
+ */
+@Data
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlRootElement(name = "equipment")
+public class WsEquipmentUtilizationRate {
+
+    @XmlElement
+    private String equipmentCode;
+
+    @XmlElement
+    private String equipmentName;
+
+    @XmlElement
+    private String mainDeptCode;
+
+    @XmlElement
+    private String equipmentRate;
+
+    @XmlElement
+    private String equipmentRunTime;
+
+    @XmlElement
+    private String equipmentCalendar;
+
+    @XmlElement
+    private String statisType;
+
+    @XmlElement
+    @XmlJavaTypeAdapter(DateAdapter.class)
+    private Date statisDate;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRateList.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRateList.java
new file mode 100644
index 0000000..bb320a5
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRateList.java
@@ -0,0 +1,22 @@
+package org.jeecg.modules.mdc.vo;
+
+import lombok.Data;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+/**
+ * @author Lius
+ * @date 2024/6/12 14:37
+ */
+@Data
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlRootElement(name = "list")
+public class WsEquipmentUtilizationRateList {
+
+    @XmlElement(name = "equipment")
+    List<WsEquipmentUtilizationRate> list;
+}

--
Gitblit v1.9.3