已添加10个文件
已修改11个文件
738 ■■■■■ 文件已修改
lxzn-boot-base-core/pom.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceStatusJob.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceUtilizationRateJob.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/CxfClientUtil.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateAdapter.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/JaxWsDynamicClientFactory.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/XmlUtil.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatus.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatusList.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRate.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRateList.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-start/src/main/resources/application-prod.yml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-boot-base-core/pom.xml
@@ -219,6 +219,27 @@
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-kotlin</artifactId>
        </dependency>
        <!-- WebService -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <!-- cxf webservice -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>
    </dependencies>
</project>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
@@ -134,7 +134,7 @@
                            // ä¸ŠæŠ¥
                            MessageDTO messageDTO = new MessageDTO();
                            messageDTO.setTitle("设备利用率报警!");
                            messageDTO.setCategory("预警消息");
                            messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                            messageDTO.setFromUser("admin");
                            messageDTO.setToUser("admin");
                            messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] çš„设备利用率低于正常值报警!");
@@ -174,7 +174,7 @@
                            for (SysUser sysUser : adminList) {
                                MessageDTO messageDTO = new MessageDTO();
                                messageDTO.setTitle("设备状态长期无变化报警!");
                                messageDTO.setCategory("预警消息");
                                messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                                messageDTO.setFromUser("admin");
                                messageDTO.setToUser(sysUser.getUsername());
                                messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] çš„设备状态长期无变化报警!");
@@ -183,7 +183,7 @@
                        } else {
                            MessageDTO messageDTO = new MessageDTO();
                            messageDTO.setTitle("设备状态长期无变化报警!");
                            messageDTO.setCategory("预警消息");
                            messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                            messageDTO.setFromUser("admin");
                            messageDTO.setToUser("admin");
                            messageDTO.setContent("设备编号为 [" + mdcEquipment.getEquipmentId() + "] çš„设备状态长期无变化报警!");
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java
@@ -89,7 +89,7 @@
                if (mdcEquipmentDto != null && StringUtils.isNotBlank(mdcEquipmentDto.getSpindlespeed()) && StringUtils.isNotBlank(mdcEquipmentDto.getActualspindlespeed())) {
                    MessageDTO messageDTO = new MessageDTO();
                    messageDTO.setTitle("设备运行转速报警!");
                    messageDTO.setCategory("预警消息");
                    messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                    messageDTO.setFromUser("admin");
                    messageDTO.setToUser("admin");
                    //设定
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);
    }
}
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);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java
@@ -6,6 +6,10 @@
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.jeecg.modules.mdc.entity.Equipment;
import org.jeecg.modules.mdc.vo.WsEquipmentStatus;
import org.jeecg.modules.mdc.vo.WsEquipmentUtilizationRate;
import java.util.List;
/**
 * @Description: é‡‡é›†è®¾å¤‡è¡¨
@@ -30,4 +34,8 @@
    @Insert(" SELECT * INTO ${tableName} FROM ${lastTableName} WHERE CollectTime < '${date}' ")
    void insertNoTableData(@Param("tableName") String tableName, @Param("lastTableName") String lastTableName, @Param("date") String date);
    List<WsEquipmentStatus> selectEquipmentStatus();
    List<WsEquipmentUtilizationRate> selectEquipmentRate(@Param("date") String date);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentMapper.xml
@@ -2,4 +2,29 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.mdc.mapper.EquipmentMapper">
    <select id="selectEquipmentStatus" resultType="org.jeecg.modules.mdc.vo.WsEquipmentStatus">
        SELECT
            t1.EquipmentID equipmentCode,
            t1.equipmentName equipmentName,
            t1.oporation equipmentStatus,
            t1.collectTime creationDate,
            t2.FactoryName mainDeptCode
        FROM
            Equipment t1
                LEFT JOIN FactoryInfo t2 ON t1.FactoryID = t2.FactoryID
    </select>
    <select id="selectEquipmentRate" resultType="org.jeecg.modules.mdc.vo.WsEquipmentUtilizationRate">
        SELECT
            t1.EquipmentID equipmentCode,
            t1.equipmentName equipmentName,
            t2.FactoryName mainDeptCode,
            t3.process_long equipmentRunTime,
            t3.create_time statisDate
        FROM
            Equipment t1
                LEFT JOIN FactoryInfo t2 ON t1.FactoryID = t2.FactoryID
                LEFT JOIN mdc_equipment_statistical_info t3 ON t1.EquipmentID = t3.equipment_id
        WHERE t3.the_date = #{date}
    </select>
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java
@@ -2,6 +2,10 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.mdc.entity.Equipment;
import org.jeecg.modules.mdc.vo.WsEquipmentStatus;
import org.jeecg.modules.mdc.vo.WsEquipmentUtilizationRate;
import java.util.List;
/**
 * @Description: é‡‡é›†è®¾å¤‡è¡¨
@@ -48,4 +52,17 @@
     * @param day
     */
    void insertNoTableData(String backupTableName, String tableName, String day);
    /**
     * æŸ¥è¯¢è®¾å¤‡çŠ¶æ€
     * @return
     */
    List<WsEquipmentStatus> selectEquipmentStatus();
    /**
     * æŸ¥è¯¢è®¾å¤‡åˆ©ç”¨çއ
     * @return
     */
    List<WsEquipmentUtilizationRate> selectEquipmentRate();
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java
@@ -4,7 +4,14 @@
import org.jeecg.modules.mdc.entity.Equipment;
import org.jeecg.modules.mdc.mapper.EquipmentMapper;
import org.jeecg.modules.mdc.service.IEquipmentService;
import org.jeecg.modules.mdc.vo.WsEquipmentStatus;
import org.jeecg.modules.mdc.vo.WsEquipmentUtilizationRate;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.List;
/**
 * @Description: é‡‡é›†è®¾å¤‡è¡¨
@@ -39,4 +46,54 @@
    public void insertNoTableData(String backupTableName, String tableName, String day) {
        this.baseMapper.insertNoTableData(backupTableName, tableName, day);
    }
    @Override
    public List<WsEquipmentStatus> selectEquipmentStatus() {
        List<WsEquipmentStatus> equipmentStatusList =  this.baseMapper.selectEquipmentStatus();
        if (equipmentStatusList != null && !equipmentStatusList.isEmpty()) {
            for (WsEquipmentStatus wsEquipmentStatus : equipmentStatusList) {
                // 1-加工   3-待机   9-关机   10-报警
                if (wsEquipmentStatus.getEquipmentStatus() != null) {
                    switch (wsEquipmentStatus.getEquipmentStatus()) {
                        case "1":
                        case "2":
                            wsEquipmentStatus.setEquipmentStatus("3");
                            break;
                        case "3":
                            wsEquipmentStatus.setEquipmentStatus("1");
                            break;
                        case "22":
                            wsEquipmentStatus.setEquipmentStatus("10");
                            break;
                        default:
                            wsEquipmentStatus.setEquipmentStatus("9");
                            break;
                    }
                } else {
                    wsEquipmentStatus.setEquipmentStatus("9");
                }
            }
        }
        return equipmentStatusList;
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡åˆ©ç”¨çއ
     * @return
     */
    @Override
    public List<WsEquipmentUtilizationRate> selectEquipmentRate() {
        String date = LocalDate.now().plusDays(-1).toString();
        List<WsEquipmentUtilizationRate> list = this.baseMapper.selectEquipmentRate(date.replaceAll("-", ""));
        if (list != null && !list.isEmpty()) {
            for (WsEquipmentUtilizationRate wsEquipmentUtilizationRate : list) {
                String equipmentRunTime = wsEquipmentUtilizationRate.getEquipmentRunTime();
                wsEquipmentUtilizationRate.setStatisType("D");
                wsEquipmentUtilizationRate.setEquipmentRunTime(new BigDecimal(equipmentRunTime).divide(new BigDecimal("60"), 0, RoundingMode.HALF_UP).toString());
                wsEquipmentUtilizationRate.setEquipmentRate(new BigDecimal(equipmentRunTime).divide(new BigDecimal("86400"), 2, RoundingMode.HALF_UP) + "%");
                wsEquipmentUtilizationRate.setEquipmentCalendar(date);
            }
        }
        return list;
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -789,7 +789,7 @@
                        Integer min = mdcEquipmentThreshold.getMinThreshold();
                        MessageDTO messageDTO = new MessageDTO();
                        messageDTO.setTitle("设备" + mdcEquipmentThreshold.getChineseName() + "报警!");
                        messageDTO.setCategory("预警消息");
                        messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                        messageDTO.setFromUser("admin");
                        messageDTO.setToUser("admin");
                        MdcOverrunAlarm mdcOverrunAlarm = new MdcOverrunAlarm();
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/CxfClientUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package org.jeecg.modules.mdc.util;
import com.alibaba.fastjson.JSONObject;
import org.apache.cxf.endpoint.Client;
import javax.xml.namespace.QName;
/**
 * @author Lius
 * @date 2024/6/11 10:16
 */
public class CxfClientUtil {
    /**
     * åŠ¨æ€è°ƒç”¨
     */
    public static String invokeService(String url, String data, String namespace, String method) throws Exception {
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        Client client = dcf.createClient(url);
        QName opName = new QName(namespace, method);
        Object[] objects = new Object[0];
        try {
            objects = client.invoke(opName, data);
        } catch (Exception e) {
            e.printStackTrace();
        }
        String json = JSONObject.toJSONString(objects[0]);
        return json;
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/DateAdapter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package org.jeecg.modules.mdc.util;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * @author Lius
 * @date 2024/6/13 9:54
 */
public class DateAdapter extends XmlAdapter<String, Date> {
    private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @Override
    public Date unmarshal(String date) throws Exception {
        return SDF.parse(date);
    }
    @Override
    public String marshal(Date date) throws Exception {
        return SDF.format(date);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/JaxWsDynamicClientFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package org.jeecg.modules.mdc.util;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.CXFBusFactory;
import org.apache.cxf.endpoint.EndpointImplFactory;
import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
import org.apache.cxf.jaxws.support.JaxWsEndpointImplFactory;
import java.io.File;
import java.util.List;
/**
 * @author Lius
 * @date 2024/6/14 11:07
 * æ³¨ï¼šè§£å†³æ­¤ï¼ˆé”™è¯¯ï¼šç¼–码GBK的不可映射字符)问题
 */
public class JaxWsDynamicClientFactory extends DynamicClientFactory {
    protected JaxWsDynamicClientFactory(Bus bus) {
        super(bus);
    }
    @Override
    protected EndpointImplFactory getEndpointImplFactory() {
        return JaxWsEndpointImplFactory.getSingleton();
    }
    protected boolean allowWrapperOps() {
        return true;
    }
    /**
     * Create a new instance using a specific <tt>Bus</tt>.
     *
     * @param b the <tt>Bus</tt> to use in subsequent operations with the
     *            instance
     * @return the new instance
     */
    public static JaxWsDynamicClientFactory newInstance(Bus b) {
        return new JaxWsDynamicClientFactory(b);
    }
    /**
     * Create a new instance using a default <tt>Bus</tt>.
     *
     * @return the new instance
     */
    public static JaxWsDynamicClientFactory newInstance() {
        Bus bus = CXFBusFactory.getThreadDefaultBus();
        return new JaxWsDynamicClientFactory(bus);
    }
    /**
     * è¦†å†™çˆ¶ç±»çš„该方法<br/>
     * æ³¨ï¼šè§£å†³æ­¤ï¼ˆé”™è¯¯ï¼šç¼–码GBK的不可映射字符)问题
     *
     * @return
     */
    @Override
    protected boolean compileJavaSrc(String classPath, List<File> srcList, String dest) {
        org.apache.cxf.common.util.Compiler javaCompiler
                = new org.apache.cxf.common.util.Compiler();
        // è®¾ç½®ç¼–译编码格式(此处为新增代码)
        javaCompiler.setEncoding("UTF-8");
        javaCompiler.setClassPath(classPath);
        javaCompiler.setOutputDir(dest);
        javaCompiler.setTarget("1.6");
        return javaCompiler.compileFiles(srcList);
    }
}
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();
            // æ ¼å¼åŒ–xml输出的格式
//            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();
            // æ ¼å¼åŒ–xml输出的格式
            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")
    /**
     * å°†String类型的xml转换成对象
     */
    public static Object convertXmlStrToObject(Class clazz, String xmlStr) {
        Object xmlObject = null;
        try {
            JAXBContext context = JAXBContext.newInstance(clazz);
            // è¿›è¡Œå°†Xml转成对象的核心接口
            Unmarshaller unmarshaller = context.createUnmarshaller();
            StringReader sr = new StringReader(xmlStr);
            xmlObject = unmarshaller.unmarshal(sr);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return xmlObject;
    }
    @SuppressWarnings("unchecked")
    /**
     * å°†file类型的xml转换成对象
     */
    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;
    }
}
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;
}
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;
}
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;
}
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;
}
lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
@@ -1,5 +1,5 @@
server:
  port: 8080
  port: 9999
  tomcat:
    max-swallow-size: -1
  error:
@@ -132,21 +132,12 @@
        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      datasource:
        master:
#          url: jdbc:sqlserver://192.168.0.29:1433;databasename=LXZN_TEST_430
#          url: jdbc:sqlserver://30036q420j.yicp.fun:11047;databasename=LXZN_TEST_430
#          url: jdbc:sqlserver://localhost:1433;databasename=LXZN_TEST_430
#          url: jdbc:sqlserver://192.168.0.118:1433;databasename=LXZN_TEST_430
          url: jdbc:sqlserver://192.168.0.118:1433;databasename=EAM_430_TEST
#          url: jdbc:sqlserver://30036q420j.yicp.fun:11047;databasename=EAM_430_TEST
#          url: jdbc:sqlserver://192.168.124.118:1433;databasename=LXZN_TEST_430
          url: jdbc:sqlserver://localhost:1433;databasename=LXZN_TEST_430
#          url: jdbc:sqlserver://192.168.124.118:1433;databasename=EAM_430_TEST
          username: sa
#          password: LXZN@1688
          password: 123
#          password: 123456
          driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
          #url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
          #username: root
          #password: root
          #driver-class-name: com.mysql.cj.jdbc.Driver
        # å¤šæ•°æ®æºé…ç½®
        #multi-datasource1:
        #  url: jdbc:sqlserver://192.168.0.118:1433;databasename=lxzn_test
@@ -158,7 +149,7 @@
    database: 0
    host: 127.0.0.1
    port: 6379
    password:
    password: 123456
#mybatis plus è®¾ç½®
mybatis-plus:
  mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
@@ -309,3 +300,8 @@
      # appSecret
      client-secret: ??
      agent-id: ??
webservice:
  url: http://localhost:8081/services/EquipmentService?wsdl
  namespace: http://service.server.webservice.example.com
  statusMethod: equipmentStatus
  rateMethod: equipmentRate
lxzn-module-system/lxzn-system-start/src/main/resources/application-prod.yml
@@ -1,5 +1,5 @@
server:
  port: 9999
  port: 6099
  tomcat:
    max-swallow-size: -1
  error:
@@ -132,9 +132,9 @@
        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      datasource:
        master:
          url: jdbc:sqlserver://166.0.1.10:1433;databasename=LXZN_TEST_430
          url: jdbc:sqlserver://195.0.1.10:1433;databasename=SSGX_kns
          username: sa
          password: 123
          password: Sa123456789
          #password: 123
          driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
          #url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
@@ -187,9 +187,9 @@
    app: http://localhost:8051
  path:
    #文件上传根目录 è®¾ç½®
    upload: /opt/upFiles
    upload: C://opt//upFiles
    #webapp文件路径
    webapp: /opt/webapp
    webapp: C://opt//upFiles
  shiro:
    excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**,/api/getUserInfo
  #阿里云oss存储和大鱼短信秘钥配置
@@ -203,7 +203,7 @@
  elasticsearch:
    cluster-name: jeecg-ES
    cluster-nodes: 127.0.0.1:9200
    check-enabled: true
    check-enabled: false
  # åœ¨çº¿é¢„览文件服务器地址配置
  file-view-domain: http://fileview.jeecg.com
  # minio文件上传
@@ -302,4 +302,9 @@
      client-id: ??
      # appSecret
      client-secret: ??
      agent-id: ??
      agent-id: ??
webservice:
  url: http://localhost:8081/services/EquipmentService?wsdl
  namespace: http://service.server.webservice.example.com
  statusMethod: equipmentStatus
  rateMethod: equipmentRate
pom.xml
@@ -59,6 +59,8 @@
        <!-- Log4j2爆雷漏洞 -->
        <log4j2.version>2.17.0</log4j2.version>
        <logback.version>1.2.9</logback.version>
        <!-- webservice -->
        <cxf.version>3.2.4</cxf.version>
    </properties>
    <modules>