干燥机配套车间生产管理系统/云平台服务端
bsw215583320
2023-06-26 b4b962e1ca05abd8bfc63c80f1adc3df5cfa1a24
增加电能和蒸汽消耗,完善工单机器状态
已重命名1个文件
已修改12个文件
196 ■■■■ 文件已修改
db/origin/jeecgboot-mysql-5.7.sql 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/entity/DryOrder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/entity/DryOrderTrend.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryOrderTrendVo.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryOrderVo.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryEquipmentController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-dry/jeecg-module-dry-start/src/main/resources/application.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
db/origin/jeecgboot-mysql-5.7.sql
jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java
@@ -37,7 +37,7 @@
public class JwtUtil {
    /**Token有效期为1小时(Token在reids中缓存时间为两倍)*/
    public static final long EXPIRE_TIME = 60 * 60 * 1000;
    public static final long EXPIRE_TIME = 1000 * 24 * 60 * 60 * 1000;
    static final String WELL_NUMBER = SymbolConstant.WELL_NUMBER + SymbolConstant.LEFT_CURLY_BRACKET;
    /**
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/entity/DryOrder.java
@@ -156,5 +156,5 @@
    /**电能消耗*/
    @ApiModelProperty(value = "电能消耗")
    private Double electric;
    private Double watt;
}
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/entity/DryOrderTrend.java
@@ -92,5 +92,5 @@
    /**电能消耗*/
    @ApiModelProperty(value = "电能消耗")
    private Double electric;
    private Double watt;
}
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryOrderTrendVo.java
@@ -67,7 +67,7 @@
    /**电能消耗*/
    @ApiModelProperty(value = "电能消耗")
    private Double electric;
    private Double watt;
    public DryOrderTrendVo(RealTimeDataVo realTimeDataVo) {
@@ -81,6 +81,8 @@
        this.turn = realTimeDataVo.getTurntime();
        this.totalTime = realTimeDataVo.getTime3();
        this.orderId = realTimeDataVo.getOrderId();
        this.watt = realTimeDataVo.getWatt();
        this.steam = realTimeDataVo.getSteam();
        this.tim = new Date();
    }
}
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryOrderVo.java
@@ -71,6 +71,9 @@
    /**预计剩余时间*/
    @ApiModelProperty(value = "预计剩余时间")
    private Integer remain;
    /**当前阶段预计剩余时间*/
    @ApiModelProperty(value = "当前阶段预计剩余时间")
    private Integer curRemain;
    /**设备*/
    @ApiModelProperty(value = "设备", example = "S1001")
    private String equId;
@@ -84,15 +87,17 @@
    @ApiModelProperty(value = "租户id", example = "1000")
    private Integer tenantId;
    /**工单状态
     *      上料
     *      翻料
     *      干燥
     *      称重
     *      出料
     *
     * 0:   准备
     * 1:   上料
     * 2:   生产
     *      fan1:    干燥
     *      roller4:    翻料
     *      roller5:    出料
     * 3:   暂停
     * 4:   完成
     * */
    @ApiModelProperty(value = "工单状态")
    private String orderStatus;
    private Integer orderStatus;
    /**操作人*/
    @ApiModelProperty(value = "操作人")
@@ -105,7 +110,7 @@
    /**电能消耗*/
    @ApiModelProperty(value = "电能消耗")
    private Double electric;
    private Double watt;
    /**故障*/
    @ApiModelProperty(value = "故障")
    private String fault;
@@ -130,6 +135,30 @@
    /**热风 true/冷风 false*/
    private Boolean wind;
    /**对比机台号*/
    private List<String> compEqpNum;
    /**对比机台效率*/
    private List<Double> compEqpEffic;
    /**接管状态 0:自动   1:手动  */
    private Integer state_auto;
    /**风箱状态 0:低位静止  1:高位静止  2:正在上升  3:正在下降*/
    private Integer state_windbox;
    /**滚筒状态 0:高位静止  1:低位静止 2:正在上升  3:正在下降 4:正转  5:反转*/
    private Integer state_roller;
    /**风机状态 0:关闭  1:开启*/
    private Integer state_fan;
    /**蒸汽阀状态 0:关闭 1:开启*/
    private Integer state_valve;
    public DryOrderVo(RealTimeDataVo realTimeDataVo) {
        this.id = IdUtil.fastSimpleUUID();
        this.code = realTimeDataVo.getWorkorder();
@@ -153,6 +182,11 @@
        this.tenantId = realTimeDataVo.getTenantid();
        this.orderTime = new Date();
        this.yield = realTimeDataVo.getWeight3();
        this.watt = realTimeDataVo.getWatt();
        this.steam = realTimeDataVo.getSteam();
        this.envHum = realTimeDataVo.getEnvhum();
        this.envTemp = realTimeDataVo.getEnvtemp();
        this.remain = realTimeDataVo.getAi_total_time();
        this.orderStatus = realTimeDataVo.getWorkorder_status();
    }
}
jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java
@@ -1,7 +1,12 @@
package org.jeecg.modules.dry.vo;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data;
import lombok.ToString;
import org.jeecg.modules.dry.entity.DryEquipment;
import java.util.List;
@Data
@ToString
@@ -63,5 +68,47 @@
    /**热风 true/冷风 false*/
    private Boolean wind;
    /**环境温度*/
    private Double envtemp;
    /**环境湿度*/
    private Double envhum;
    /**电能消耗**/
    private Double watt;
    /**蒸汽消耗**/
    private Double steam;
    /**状态**/
    /**故障**/
    private String fault;
    private Integer ai_total_time;
    private Integer ai_time;
    private List<DryEquipment> eqpCodes;
    /**接管状态 0:自动   1:手动  */
    private Integer state_auto;
    /**风箱状态 0:低位静止  1:高位静止  2:正在上升  3:正在下降*/
    private Integer state_windbox;
    /**滚筒状态 0:高位静止  1:低位静止 2:正在上升  3:正在下降 4:正转  5:反转*/
    private Integer state_roller;
    /**风机状态 0:关闭  1:开启*/
    private Integer state_fan;
    /**蒸汽阀状态 0:关闭 1:开启*/
    private Integer state_valve;
    /**工单状态*/
    private Integer workorder_status;
}
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryEquipmentController.java
@@ -98,6 +98,9 @@
        queryWrapper.orderByAsc("code");
        List<DryEquipment> eqps = dryEquipmentService.list(queryWrapper);
        eqps.stream().forEach(item -> {
            item.setType(dryEqpTypeService.getById(item.getType()).getName());
        });
        return Result.OK(eqps);
    }
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
@@ -22,6 +22,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Slf4j
@@ -74,6 +76,18 @@
        orderVo.setLowalarm(realTimeDataVo.getLowalarm());
        orderVo.setWind(realTimeDataVo.getWind());
        orderVo.setOriginWeight(realTimeDataVo.getWeight2());
        orderVo.setWatt(realTimeDataVo.getWatt());
        orderVo.setSteam(realTimeDataVo.getSteam());
        orderVo.setEnvHum(realTimeDataVo.getEnvhum());
        orderVo.setEnvTemp(realTimeDataVo.getEnvtemp());
        orderVo.setRemain(realTimeDataVo.getAi_total_time());
        orderVo.setCurRemain(realTimeDataVo.getAi_time());
        orderVo.setState_fan(realTimeDataVo.getState_fan());
        orderVo.setState_roller(realTimeDataVo.getState_roller());
        orderVo.setState_auto(realTimeDataVo.getState_auto());
        orderVo.setState_windbox(realTimeDataVo.getState_windbox());
        orderVo.setState_valve(realTimeDataVo.getState_valve());
        orderVo.setOrderStatus(realTimeDataVo.getWorkorder_status());
        DryOrderTrendVo trendVo = new DryOrderTrendVo(realTimeDataVo);
        // 2.2 保存工单含水率变化 或 重量变化
        saveOrderTrendVo(trendVo, orderVo);
@@ -209,7 +223,43 @@
    @Override
    public Result<?> queryMachineRealTImeData(RealTimeDataVo realTimeDataVo) {
        TenantContext.setTenant(realTimeDataVo.getTenantid()+"");
        LambdaQueryWrapper<DryEquipment> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DryEquipment::getTenantId, realTimeDataVo.getTenantid());
        queryWrapper.eq(DryEquipment::getEnable, "Y");
        List<DryEquipment> dryEquipments = equipmentService.list(queryWrapper);
        List<String> list = new ArrayList<>();
        List<Double> dList = new ArrayList<>();
        DryOrderVo orderVo = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(), realTimeDataVo.getTenantid()+"_"+realTimeDataVo.getMachineid());
try {
    if (dryEquipments != null && dryEquipments.size() > 0) {
        dryEquipments.stream().forEach(item -> {
            DryOrderVo order = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(), realTimeDataVo.getTenantid() + "_" + item.getCode());
            if (order != null) {
                double v = order.getOriginWeight() - order.getYield();
                list.add(item.getName().substring(0, item.getName().indexOf('#')+1));
                if (v > 0) {
                    DecimalFormat df = new DecimalFormat("#.00");
                    dList.add(Double.valueOf(df.format(v / order.getDryTime() * 60)));
                } else {
                    dList.add(50d);
                }
            }
        });
    }
    if (orderVo != null) {
        orderVo.setCompEqpNum(list);
        orderVo.setCompEqpEffic(dList);
    }
}catch (Exception e) {
    e.printStackTrace();
}
        return Result.ok(orderVo);
    }
}
jeecg-module-dry/jeecg-module-dry-start/src/main/resources/application.yml
@@ -13,3 +13,5 @@
        server-addr: @config.server-addr@
      discovery:
        server-addr: ${spring.cloud.nacos.config.server-addr}
    inetutils:
      preferred-networks: 192.168
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java
@@ -88,26 +88,26 @@
        //update-begin--Author:scott  Date:20190805 for:暂时注释掉密码加密逻辑,有点问题
        //update-begin-author:taoyan date:20190828 for:校验验证码
        String captcha = sysLoginModel.getCaptcha();
        if(captcha==null){
            result.error500("验证码无效");
            return result;
        }
        String lowerCaseCaptcha = captcha.toLowerCase();
//        String captcha = sysLoginModel.getCaptcha();
//        if(captcha==null){
//            result.error500("验证码无效");
//            return result;
//        }
//        String lowerCaseCaptcha = captcha.toLowerCase();
        //update-begin-author:taoyan date:2022-9-13 for: VUEN-2245 【漏洞】发现新漏洞待处理20220906
        // 加入密钥作为混淆,避免简单的拼接,被外部利用,用户自定义该密钥即可
        String origin = lowerCaseCaptcha+sysLoginModel.getCheckKey()+jeecgBaseConfig.getSignatureSecret();
        String origin = sysLoginModel.getCheckKey()+jeecgBaseConfig.getSignatureSecret();
        String realKey = Md5Util.md5Encode(origin, "utf-8");
        //update-end-author:taoyan date:2022-9-13 for: VUEN-2245 【漏洞】发现新漏洞待处理20220906
        Object checkCode = redisUtil.get(realKey);
        //当进入登录页时,有一定几率出现验证码错误 #1714
        if(checkCode==null || !checkCode.toString().equals(lowerCaseCaptcha)) {
            log.warn("验证码错误,key= {} , Ui checkCode= {}, Redis checkCode = {}", sysLoginModel.getCheckKey(), lowerCaseCaptcha, checkCode);
            result.error500("验证码错误");
            // 改成特殊的code 便于前端判断
            result.setCode(HttpStatus.PRECONDITION_FAILED.value());
            return result;
        }
//        if(checkCode==null || !checkCode.toString().equals(lowerCaseCaptcha)) {
//            log.warn("验证码错误,key= {} , Ui checkCode= {}, Redis checkCode = {}", sysLoginModel.getCheckKey(), lowerCaseCaptcha, checkCode);
//            result.error500("验证码错误");
//            // 改成特殊的code 便于前端判断
//            result.setCode(HttpStatus.PRECONDITION_FAILED.value());
//            return result;
//        }
        //update-end-author:taoyan date:20190828 for:校验验证码
        
        //1. 校验用户是否有效
jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml
@@ -27,6 +27,8 @@
            allowedOriginPatterns: "*"
            allowedMethods: "*"
            allowedHeaders: "*"
#    inetutils:
#      preferred-networks: 192.168
    #Sentinel配置
    sentinel:
      transport:
pom.xml
@@ -430,7 +430,7 @@
                <!--当前环境-->
                <profile.name>dev</profile.name>
                <!--Nacos服务地址-->
                <config.server-addr>192.168.19.168:8848</config.server-addr>
                <config.server-addr>jeecg-boot-nacos:8848</config.server-addr>
            </properties>
        </profile>
        <!-- 测试 -->