Lius
2025-04-28 572466e8ebaa67f1809a97ecf912d30e8802fd98
update
已修改12个文件
已删除4个文件
277 ■■■■■ 文件已修改
lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/ControlSystem.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceStatusJob.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceUtilizationRateJob.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/ControlSystemMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcWorkshopInfoMapper.xml 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IControlSystemService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ControlSystemServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/LogTableServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatus.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRate.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/webservice/impl/EquipmentWebServiceImpl.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-start/src/main/resources/application-prod.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
@@ -95,12 +95,13 @@
        filterChainDefinitionMap.put("/generic/**", "anon");//pdf预览需要文件
        filterChainDefinitionMap.put("/sys/user/updatePassword", "anon");//首页用户修改密码
        filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //登录二维码
        filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //登录二维码Q
        filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //监听扫码
        filterChainDefinitionMap.put("/sys/checkAuth", "anon"); //授权接口排除
        filterChainDefinitionMap.put("/sys/api/appAuth", "anon"); //网闸认证接口排除
        filterChainDefinitionMap.put("/sys/api/fileUpload", "anon"); //网闸上传文件接口排除
        filterChainDefinitionMap.put("/services/**", "anon"); //webservice接口排除
        filterChainDefinitionMap.put("/mdc/largeScreen/**", "anon"); //看板接口排除
        filterChainDefinitionMap.put("/", "anon");
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/ControlSystem.java
ÎļþÒÑɾ³ý
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceStatusJob.java
@@ -68,12 +68,10 @@
        try {
            List<WsEquipmentStatus> equipmentStatusList = equipmentService.selectEquipmentStatus();
            if (equipmentStatusList != null && !equipmentStatusList.isEmpty()) {
                for (WsEquipmentStatus wsEquipmentStatus : equipmentStatusList) {
                    String s = JSONObject.toJSONString(wsEquipmentStatus);
                String s = JSONObject.toJSONString(equipmentStatusList);
                    log.info("上报状态数据 ===== " + s);
                    String result = CxfClientUtil.invokeService(url, s, namespace, method);
                    log.info("上报状态结果 ===== " + result);
                }
            }
            quartzLog.setIsSuccess(0);
        } catch (Exception e) {
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebServiceUtilizationRateJob.java
@@ -67,12 +67,10 @@
        try {
            List<WsEquipmentUtilizationRate> equipmentRateList = equipmentService.selectEquipmentRate();
            if (equipmentRateList != null && !equipmentRateList.isEmpty()) {
                for (WsEquipmentUtilizationRate wsEquipmentUtilizationRate : equipmentRateList) {
                    String s = JSONObject.toJSONString(wsEquipmentUtilizationRate);
                String s = JSONObject.toJSONString(equipmentRateList);
                    log.info("上报利用率数据 ===== {}", s);
                    String result = CxfClientUtil.invokeService(url, s, namespace, method);
                    log.info("上报利用率结果 ===== {}", result);
                }
            }
            quartzLog.setIsSuccess(0);
        } catch (Exception e) {
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/ControlSystemMapper.java
ÎļþÒÑɾ³ý
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcWorkshopInfoMapper.xml
@@ -4,37 +4,34 @@
    <select id="getBigScreenInfo" resultType="org.jeecg.modules.mdc.dto.MdcBigScreenEquipmentDto">
        WITH LatestEquipmentLog AS (
            SELECT
                EquipmentID,
                MAX(CollectTime) AS maxgdtime
            t3.id AS id,
            t2.EquipmentID AS equipmentId,
            t1.equipment_name AS equipmentName,
            t1.equipment_type AS equipmentType,
            t5.equipment_type_pictures AS equipmentImage,
            t2.oporation AS oporation,
            t1.equipment_status AS equipmentStatus,
            t3.coordinate_left AS coordinateLeft,
            t3.coordinate_top AS coordinateTop,
            t3.vw AS vw,
            t3.vh AS vh,
            t1.id AS equId
            FROM
                EquipmentLog
            GROUP BY
                EquipmentID
        )
        SELECT
            mew.id AS id,
            a.EquipmentID AS equipmentId,
            me.equipment_name AS equipmentName,
            me.equipment_type AS equipmentType,
            met.equipment_type_pictures AS equipmentImage,
            a.Oporation AS oporation,
            me.equipment_status AS equipmentStatus,
            mew.coordinate_left AS coordinateLeft,
            mew.coordinate_top AS coordinateTop,
            mew.vw AS vw,
            mew.vh AS vh,
            me.id AS equId
        FROM
            EquipmentLog a
                INNER JOIN LatestEquipmentLog b ON a.EquipmentID = b.EquipmentID AND a.CollectTime = b.maxgdtime
                INNER JOIN mdc_workshop_equipment mew ON mew.equipment_id = a.EquipmentID
                INNER JOIN mdc_equipment me ON me.equipment_id = a.EquipmentID
                INNER JOIN mdc_equipment_type met ON me.equipment_type = met.equipment_type_name
                INNER JOIN mdc_workshop_info mwi ON mew.workshop_id = mwi.id
            mdc_equipment t1
                LEFT JOIN
            equipment t2 ON t1.equipment_id = t2.EquipmentID
                LEFT JOIN
            mdc_workshop_equipment t3 ON t1.equipment_id = t3.equipment_id
                LEFT JOIN
            mdc_equipment_type t5 ON t1.equipment_type = t5.equipment_type_name
        WHERE
            mwi.production_id = #{productionId}
            EXISTS (
                SELECT 1
                FROM mdc_workshop_info t4
                WHERE t3.workshop_id = t4.id
                  AND t4.production_id = #{ productionId }
            );
    </select>
    <select id="listByUser" resultType="org.jeecg.modules.mdc.entity.MdcWorkshopInfo">
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IControlSystemService.java
ÎļþÒÑɾ³ý
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ControlSystemServiceImpl.java
ÎļþÒÑɾ³ý
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/LogTableServiceImpl.java
@@ -2,26 +2,23 @@
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.io.file.FileWriter;
import cn.hutool.core.net.NetUtil;
import cn.hutool.crypto.SmUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import me.zhyd.oauth.log.Log;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.modules.mdc.util.SqlExecutor;
import org.jeecg.modules.system.vo.SysLogTypeObjectDto;
import org.jeecg.modules.mdc.entity.LogTable;
import org.jeecg.modules.system.entity.MdcPassLog;
import org.jeecg.modules.mdc.mapper.LogTableMapper;
import org.jeecg.modules.mdc.service.ILogTableService;
import org.jeecg.modules.system.service.IMdcPassLogService;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mdc.util.FileClient;
import org.jeecg.modules.system.util.FileUtils;
import org.jeecg.modules.mdc.util.SqlExecutor;
import org.jeecg.modules.mdc.util.SyslogClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.jeecg.modules.system.entity.MdcPassLog;
import org.jeecg.modules.system.service.IMdcPassLogService;
import org.jeecg.modules.system.util.FileUtils;
import org.jeecg.modules.system.vo.SysLogTypeObjectDto;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -29,20 +26,16 @@
import javax.annotation.Resource;
import java.io.File;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * @author Lius
 * @date 2024/12/18 14:29
 */
@Service
@Slf4j
public class LogTableServiceImpl extends ServiceImpl<LogTableMapper, LogTable> implements ILogTableService {
    @Value("${fileService.localFilePath}")
@@ -77,6 +70,9 @@
    @Value("${fileService.newFilePath}")
    private String newFilePath;
    @Value("${fileService.failedLocFilePath}")
    private String failedLocFilePath;
    @Resource
    private IMdcPassLogService mdcPassLogService;
@@ -218,16 +214,30 @@
    @Transactional(rollbackFor = Exception.class)
    public void importXmlToData() {
        File[] files = FileUtil.ls(localFilePath);
        List<String> failedSqlList = new ArrayList<>(); // ç”¨äºŽå­˜å‚¨æ‰§è¡Œå¤±è´¥çš„ SQL
        for (File file : files) {
            if (file.isFile()) {
                String loFilePath = localFilePath + file.getName();
                FileReader fileReader = new FileReader(loFilePath);
                String sqlList = fileReader.readString();
                List<String> sqlList = fileReader.readLines();
                log.info("成功读取到{}条sql,执行操作", sqlList.size());
                for (String sql : sqlList) {
                try {
                    sqlExecutor.execute(sqlList);
                        sqlExecutor.execute(sql);
                } catch (Exception e) {
                    throw new JeecgBootException("执行sql失败!");
                        failedSqlList.add(sql);
//                        throw new JeecgBootException("执行sql失败!");
                }
                }
                if (!failedSqlList.isEmpty()) {
                    try {
                        FileUtil.appendLines(failedSqlList, failedLocFilePath, "UTF-8");
                    } catch (Exception e) {
                        throw new JeecgBootException("数据写入文件失败!");
                    }
                }
//                String sqlList = fileReader.readString();
                if (Integer.parseInt(file.getName().substring(file.getName().length() - 10, file.getName().length() - 4)) == 1) {
                    // åˆ é™¤åŽ†å²æ–‡ä»¶
                    FileUtil.clean(newFilePath);
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java
@@ -93,7 +93,7 @@
        }
    }
    @Transactional(readOnly = true)
//    @Transactional(readOnly = true)
    List<MdcEquipmentStatisticalShiftInfo> equipmentShiftStatisticalProcess(Equipment equipment, String dateTime) {
        Date initDate = null;
        //取最后的统计数据
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentStatus.java
@@ -1,6 +1,8 @@
package org.jeecg.modules.mdc.vo;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.util.Date;
/**
@@ -16,6 +18,7 @@
    private String equipmentStatus;
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date creationDate;
    private String finr;
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/WsEquipmentUtilizationRate.java
@@ -1,5 +1,6 @@
package org.jeecg.modules.mdc.vo;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.util.Date;
@@ -46,5 +47,6 @@
    /**
     * ç»Ÿè®¡æ—¥æœŸ
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date statisDate;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/webservice/impl/EquipmentWebServiceImpl.java
@@ -15,6 +15,8 @@
import javax.annotation.Resource;
import javax.jws.WebService;
import java.util.ArrayList;
import java.util.List;
/**
@@ -38,10 +40,18 @@
    @Override
    public String equipmentDaySchedule(String msg) {
        log.info("MES上报日计划原始数据 === {}", msg);
        EquipmentDaySchedule equipmentDaySchedule = JSONObject.parseObject(msg, EquipmentDaySchedule.class);
        List<EquipmentDaySchedule> equipmentDayScheduleList = JSONObject.parseArray(msg, EquipmentDaySchedule.class);
        if (equipmentDayScheduleList == null || equipmentDayScheduleList.isEmpty()) {
            WsResult wsResult = new WsResult("0", "json解析失败");
            return JSONObject.toJSONString(wsResult);
        }
        List<MdcEquipmentDaySchedule> mdcEquipmentDayScheduleList = new ArrayList<>();
        for (EquipmentDaySchedule equipmentDaySchedule : equipmentDayScheduleList) {
        MdcEquipmentDaySchedule mdcEquipmentDaySchedule = new MdcEquipmentDaySchedule();
        BeanUtils.copyProperties(equipmentDaySchedule, mdcEquipmentDaySchedule);
        mdcEquipmentDayScheduleService.save(mdcEquipmentDaySchedule);
            mdcEquipmentDayScheduleList.add(mdcEquipmentDaySchedule);
        }
        mdcEquipmentDayScheduleService.saveBatch(mdcEquipmentDayScheduleList);
        log.info("MES上报日计划数据成功!");
        WsResult wsResult = new WsResult("1", "成功");
@@ -51,11 +61,18 @@
    @Override
    public String equipmentDaySummary(String msg) {
        log.info("MES上报日汇总原始数据 === {}", msg);
        EquipmentDaySummary equipmentDaySummary = JSONObject.parseObject(msg, EquipmentDaySummary.class);
        List<EquipmentDaySummary> equipmentDaySummaryList = JSONObject.parseArray(msg, EquipmentDaySummary.class);
        if (equipmentDaySummaryList == null || equipmentDaySummaryList.isEmpty()) {
            WsResult wsResult = new WsResult("0", "json解析失败");
            return JSONObject.toJSONString(wsResult);
        }
        List<MdcEquipmentDaySummary> mdcEquipmentDaySummaryList = new ArrayList<>();
        for (EquipmentDaySummary equipmentDaySummary : equipmentDaySummaryList) {
        MdcEquipmentDaySummary mdcEquipmentDaySummary = new MdcEquipmentDaySummary();
        BeanUtils.copyProperties(equipmentDaySummary, mdcEquipmentDaySummary);
        mdcEquipmentDaySummaryService.save(mdcEquipmentDaySummary);
            mdcEquipmentDaySummaryList.add(mdcEquipmentDaySummary);
        }
        mdcEquipmentDaySummaryService.saveBatch(mdcEquipmentDaySummaryList);
        log.info("MES上报日汇总数据成功!");
        WsResult wsResult = new WsResult("1", "成功");
        return JSONObject.toJSONString(wsResult);
lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java
@@ -65,7 +65,7 @@
                                equipmentStatusOverview.setWaitCount(equipmentStatusOverview.getWaitCount() + 1);
                                break;
                            case 3:
                                equipmentStatusOverview.setRunCount(equipmentStatusOverview.getRunCount());
                                equipmentStatusOverview.setRunCount(equipmentStatusOverview.getRunCount() + 1);
                                break;
                            case 22:
                                equipmentStatusOverview.setErrorCount(equipmentStatusOverview.getErrorCount() + 1);
@@ -141,9 +141,7 @@
        Map<String, Object> result = new HashMap<>();
        // èŽ·å–å­ç”Ÿäº§åˆ—è¡¨
        List<MdcProduction> mdcProductionList = mdcProductionService.list(
                new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, productionId)
        );
        List<MdcProduction> mdcProductionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, productionId));
        if (mdcProductionList == null || mdcProductionList.isEmpty()) {
            return result;
@@ -152,8 +150,7 @@
        List<String> dateList = DateUtils.getNearWeek();
        result.put("dateList", dateList);
        // è®¡ç®—每个工段的利用率
        List<UtilizationRateDto> utilizationMonthDtoList = new ArrayList<>();
        for (MdcProduction mdcProduction : mdcProductionList) {
        List<UtilizationRateDto> utilizationMonthDtoList = mdcProductionList.stream().map(mdcProduction -> {
            UtilizationRateDto utilizationRateDto = new UtilizationRateDto();
            utilizationRateDto.setProductionId(mdcProduction.getId());
            utilizationRateDto.setProductionName(mdcProduction.getProductionName());
@@ -161,14 +158,13 @@
                    .map(date -> {
                        UtilizationRate utilizationMonth = new UtilizationRate();
                        utilizationMonth.setDate(date);
                        BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeek(productionId, date.replaceAll("-", ""));
                        BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeek(mdcProduction.getId(), date.replaceAll("-", ""));
                        utilizationMonth.setUtilizationRate(utilizationRate);
                        return utilizationMonth;
                    })
                    .collect(Collectors.toList());
                    }).collect(Collectors.toList());
            utilizationRateDto.setUtilizationRateList(utilizationRates);
            utilizationMonthDtoList.add(utilizationRateDto);
        }
            return utilizationRateDto;
        }).collect(Collectors.toList());
        //计算总厂的利用率
        UtilizationRateDto utilizationRateDto = new UtilizationRateDto();
        utilizationRateDto.setProductionName("总厂");
@@ -208,14 +204,13 @@
        result.put("productionList", productionList);
        String date = LocalDate.now().minusDays(1).toString().replaceAll("-", "");
        List<UtilizationDayDto> utilizationDayDtos = new ArrayList<>();
        for (MdcProduction mdcProduction : mdcProductionList) {
        List<UtilizationDayDto> utilizationDayDtos = mdcProductionList.stream().map(mdcProduction -> {
            UtilizationDayDto utilizationDayDto = new UtilizationDayDto();
            utilizationDayDto.setProductionName(mdcProduction.getProductionName());
            BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeekTotal(mdcProduction.getId(), date);
            BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeek(mdcProduction.getId(), date);
            utilizationDayDto.setUtilizationRate(utilizationRate);
            utilizationDayDtos.add(utilizationDayDto);
        }
            return utilizationDayDto;
        }).collect(Collectors.toList());
        result.put("dataList", utilizationDayDtos);
        return result;
    }
lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml
@@ -83,7 +83,7 @@
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      driverClassName: dm.jdbc.driver.DmDriver
      url: jdbc:dm://LOCALHOST:5236/?LXZN_MDC_420&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
      url: jdbc:dm://192.168.1.118:5236/?LXZN_MDC_420&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
      username: LXZN_MDC_420
      password: 123
  #redis é…ç½®
@@ -226,8 +226,14 @@
  pwd: 123
  addressToken: /outer/appAuth
  addressUploadFile: /outer/fileUpload
  localFilePath: D:/data/sql
  servicePath: D:/data/sql
  localFilePath: D:/data/sql     #本地文件路径
  servicePath: D:/data/sql    #目标文件路径
  logIp: 127.0.0.1
  logPort: 8888
  newFilePath: D:/data/bak_sql/  #备份地址
  failedLocFilePath:  #失败sql地址
webservice:
  url: http://localhost:8081/services/EquipmentWebService?wsdl
  namespace: http://service.server.webservice.example.com
  statusMethod: equipmentStatus
  rateMethod: equipmentRate
lxzn-module-system/lxzn-system-start/src/main/resources/application-prod.yml
@@ -255,3 +255,8 @@
  logIp: 127.0.0.1
  logPort: 8888
  newFilePath: D:/data/bak_sql/  #备份地址
webservice:
  url: http://20.10.17.19:6099/services/EquipmentWebService?wsdl
  namespace: http://service.server.webservice.example.com
  statusMethod: equipmentStatus
  rateMethod: equipmentRate