whyclxw
2025-01-20 364adf83c47366a5b01dfe005fd0eed11f9346e6
线程管理
5个文件已添加
2个文件已修改
191 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/ProcessSurveyController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/ProcessServerDao.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/ProcessSurveyMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/db_area/LockInf.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/db_user/ProcessSurvey.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/LockInfService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/ProcessSurveyService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/ProcessSurveyController.java
New file
@@ -0,0 +1,48 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.pojo.db_user.ProcessSurvey;
import com.whyc.service.ProcessSurveyService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("processSurvey")
@Api(tags = "数据管理-后台线程管理")
public class ProcessSurveyController{
    @Resource
    private ProcessSurveyService service;
    @GetMapping("/getAll")
    @ApiOperation(value = "获取所有线程")
    public Response getAll(){
        return service.getAll();
    }
    @PostMapping("update")
    @ApiOperation(value = "通过id更新")
    public Response update(@RequestBody ProcessSurvey survey){
        return service.updateById(survey);
    }
    @PostMapping("/updateFlag")
    @ApiOperation(value = "通过服务名修改标识")
    public Response updateFlagByName(@RequestBody ProcessSurvey survey){
        return service.updateServerFlagByName(survey);
    }
    @PostMapping("/judgeRestart")
    @ApiOperation(value = "验证重启密码")
    public Response judgeRestart(@RequestParam String password){
        if(password.equals("123456")){
            return new Response().set(1,true,"验证通过");
        }else{
            return new Response().set(1,false,"验证失败");
        }
    }
}
src/main/java/com/whyc/dto/ProcessServerDao.java
New file
@@ -0,0 +1,21 @@
package com.whyc.dto;
public class ProcessServerDao {
    //所有进程名字
    public static String BMS_FBSDEV="BMS_FBSDEV";//主程序线程
    public static String BMS_FBSDEV_ALARM_BATT="BMS_FBSDEV_ALARM_BATT";//电池告警线程
    public static String BMS_FBSDEV_ALARM_DEV="BMS_FBSDEV_ALARM_DEV";//设备告警线程
    public static String BMS_FBSDEV_BADBATT_MON="BMS_FBSDEV_BADBATT_MON";//落后单体线程
    public static String BMS_FBSDEV_BADBATT_CAP="BMS_FBSDEV_BADBATT_CAP";//容量告警线程
    public static String BMS_FBSDEV_PLAN="BMS_FBSDEV_PLAN";//放电计划线程
    public static String BMS_FBSDEV_POWER_FAIL="BMS_FBSDEV_POWER_FAIL";//机房停电线程
    public static String BMS_FBS61850_BATT="BMS_FBS61850_BATT";//机房停电线程
   //进程开关
    public static Integer PROCESS_ON=1;//进行中
    public static Integer PROCESS_OFF=0;//关闭
    public static Integer PROCESS_TEMP=2;//暂未开启
   //默认重启密码加密
    //public static String  RESTART_PWD_ENCRYPT="AKxTGQo6bAABeC62B8Dtxw==";
}
src/main/java/com/whyc/mapper/ProcessSurveyMapper.java
New file
@@ -0,0 +1,7 @@
package com.whyc.mapper;
import com.whyc.pojo.db_user.ProcessSurvey;
public interface ProcessSurveyMapper extends CustomMapper<ProcessSurvey> {
}
src/main/java/com/whyc/pojo/db_area/LockInf.java
@@ -85,6 +85,8 @@
    @ApiModelProperty(value = "纬度")
    private Integer latitude;
    @ApiModelProperty(value = "锁具开启次数")
    private Integer lockOpenCount;
    @TableField(exist = false)
    private List<AuthiruzeInf> authList;
src/main/java/com/whyc/pojo/db_user/ProcessSurvey.java
New file
@@ -0,0 +1,41 @@
package com.whyc.pojo.db_user;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.ToString;
import java.util.Date;
@Data
@ApiModel(value = "processSurvey",description = "进程管理对象")
@TableName(schema = "",value = "tb_process_survey")
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProcessSurvey {
    @TableId(type = IdType.AUTO)
    private Integer num;//进程编号
    @TableField("processid")
    private Integer processId;//进程id
    @TableField("processName")
    private String  processName;//进程名
    @TableField("ProcessVersion")
    private String processVersion;//进程版本
    @TableField("ProcessTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" ,timezone = "GMT+8")
    private Date processTime;//进程执行的时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" ,timezone = "GMT+8")
    private Date  processStarttime;//进程的初始时间
    @TableField("ServerName")
    private String serverName;//服务名
    @TableField("ServerFlag")
    private Integer serverFlag;//服务名 0:停止 1:进行中 2:暂不开启
    @TableField("OutTime")
    private Integer outTime;//进程超时时间(秒)
    private String note;
}
src/main/java/com/whyc/service/LockInfService.java
@@ -30,6 +30,9 @@
    @Autowired(required = false)
    private AuthiruzeInfMapper authMapper;
    @Autowired
    private ProcessSurveyService processSurveyService;
    //添加锁
    public Response addLock(Integer num, LockInf lockInf) {
        if(num==null){
@@ -66,6 +69,7 @@
            list.add(linf);
        }
        mapper.insertBatchSomeColumn(list);
        processSurveyService.setUpThreadRestart();
        return new Response().set(1,true);
    }
    //获取当前最大的锁
src/main/java/com/whyc/service/ProcessSurveyService.java
New file
@@ -0,0 +1,68 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.whyc.dto.ProcessServerDao;
import com.whyc.dto.Response;
import com.whyc.mapper.ProcessSurveyMapper;
import com.whyc.pojo.db_user.ProcessSurvey;
import com.whyc.util.ActionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Service
public class ProcessSurveyService {
    @Resource
    private ProcessSurveyMapper mapper;
    public Response getAll(){
        QueryWrapper<ProcessSurvey> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByAsc("num");
        List<ProcessSurvey> list = mapper.selectList(queryWrapper);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for (ProcessSurvey survey:list) {
            survey.setNote(sdf.format(new Date()));
        }
        return new Response().set(1,list,"查询成功");
    }
    public Response updateById(ProcessSurvey survey){
        mapper.updateById(survey);
        return new Response().set(1,true,"更新成功");
    }
    public Response updateServerFlagOff(ProcessSurvey survey){
        UpdateWrapper<ProcessSurvey> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("serverflag", ProcessServerDao.PROCESS_OFF);
        updateWrapper.eq("processName",survey.getProcessName());
        updateWrapper.eq("serverflag",ProcessServerDao.PROCESS_TEMP);
        mapper.update(survey,updateWrapper);
        return new Response().set(1,true,"更新成功");
    }
    public Response updateServerFlagByName(ProcessSurvey survey){
        UpdateWrapper<ProcessSurvey> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("serverName",survey.getServerName());
        mapper.update(survey,updateWrapper);
        return new Response().set(1,true,"更新成功");
    }
    public void setUpThreadRestart() {
        //主线 --->11001
        threadRestart(11001);
    }
    private void threadRestart(int processId) {
        UpdateWrapper<ProcessSurvey> update = Wrappers.update();
        update.set("ServerFlag",0).eq("ProcessId",processId).ne("ServerFlag",2);
        mapper.update((ProcessSurvey) ActionUtil.objeNull,update);
    }
}