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