AlarmRuleConfigController.java 10.5 KB
package com.skua.modules.alarm.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.skua.core.api.vo.Result;
import com.skua.core.aspect.annotation.AutoLog;
import com.skua.core.query.QueryGenerator;
import com.skua.modules.alarm.entity.AlarmParamStandardConfig;
import com.skua.modules.alarm.entity.AlarmRuleAndRuleLevelConfig;
import com.skua.modules.alarm.entity.AlarmRuleConfig;
import com.skua.modules.alarm.entity.AlarmRuleLevelConfig;
import com.skua.modules.alarm.service.AlarmParamStandardConfigService;
import com.skua.modules.alarm.service.AlarmRuleConfigService;
import com.skua.modules.alarm.service.AlarmRuleLevelConfigService;
import com.skua.modules.alarm.vo.AlarmRuleAndAlarmRuleLevelVO;
import com.skua.modules.alarm.vo.AlarmRuleConfigVO;
import com.skua.modules.system.datestandard.entity.SysMetricDict;
import com.skua.modules.system.datestandard.entity.SysMonitorMetricInfo;
import com.skua.modules.system.datestandard.service.ISysMetricDictService;
import com.skua.modules.system.datestandard.service.ISysMonitorMetricInfoService;
import com.skua.modules.system.entity.SysDepart;
import com.skua.modules.system.service.ISysDepartService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.SerializationUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.*;


/**
 * @program: fmboot
 * @description:
 * @author: xie chao
 * @create: 2020-11-02 09:34
 */
@Slf4j
@Api(tags = "报警配置")
@RestController
@RequestMapping("/alarm/config")
@AllArgsConstructor
public class AlarmRuleConfigController {

    private AlarmRuleConfigService alarmRuleConfigService;

    private AlarmRuleLevelConfigService alarmRuleLevelConfigService;

    private ISysDepartService sysDepartService;
    
    private AlarmParamStandardConfigService alarmParamStandardConfigService;


    /**
     * 新增警告信息
     * @param alarmRuleAndRuleLevelConfig 需要添加的警告信息
     * @return
     */
    @AutoLog(value = "报警配置-添加")
    @ApiOperation(value="报警配置-添加", notes="报警配置-添加")
    @PostMapping(value = "/add")
    public Result<AlarmRuleConfig> addAlarmInfo(@RequestBody AlarmRuleAndRuleLevelConfig alarmRuleAndRuleLevelConfig){

        Result<AlarmRuleConfig> result = new Result<>();

        alarmRuleConfigService.addRuleConfig(result,alarmRuleAndRuleLevelConfig);

        return result;
    }


    /**
     *   通过id删除报警信息
     * @param id
     * @return
     */
    @AutoLog(value = "报警配置-通过id删除")
    @ApiOperation(value="报警配置-通过id删除", notes="报警配置-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> deleteAlarmInfo(@RequestParam(name="id",required=true) String id) {

        Result<AlarmRuleConfig> result = new Result<>();

        try{
            //通过id查询数据
            AlarmRuleConfig alarmRuleConfigEntity = alarmRuleConfigService.getById(id);
            //判断对象是否存在
            if(alarmRuleConfigEntity == null){
                result.error500("数据已删除");
            }else{
                //将isDelete的字段设置为1,表示数据已删除
                alarmRuleConfigEntity.setDelFlag(0);
                alarmRuleConfigService.updateById(alarmRuleConfigEntity);
            }
            result.success("删除成功");
        }catch (Exception e){
            log.error(e.getMessage(),e);
            result.error500("删除失败");
        }

        return result;
    }

    /**
     *  批量删除报警信息
     * @param ids
     * @return
     */
    @AutoLog(value = "报警配置-批量删除")
    @ApiOperation(value="报警配置-批量删除", notes="报警配置-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<AlarmRuleConfig> deleteBatchAlarmInfo(@RequestParam(name="ids",required=true) String ids) {

        Result<AlarmRuleConfig> result = new Result<>();
        //判断参数是否有效
        if(ids == null || "".equals(ids.trim())){
            result.error500("参数不识别");
        }

        try{
            //设置查询条件
            QueryWrapper<AlarmRuleConfig> queryWrapper = new QueryWrapper<>();
            queryWrapper.in("id",Arrays.asList(ids.split(",")));
            //根据ID查询所有符合条件的数据
            List<AlarmRuleConfig> alarmRuleConfigList = alarmRuleConfigService.list(queryWrapper);

            //将所有的对象的isDelete字段设置为0,表示数据已删除
            alarmRuleConfigList.forEach(obj -> obj.setDelFlag(0));

            alarmRuleConfigService.updateBatchById(alarmRuleConfigList);
            result.success("删除成功");
        }catch (Exception e){
            log.error(e.getMessage(),e);
            result.error500("删除失败");
        }

        return result;
    }


    /**
     *  编辑报警信息
     * @param alarmRuleAndRuleLevelConfig
     * @return
     */
    @AutoLog(value = "报警配置-编辑")
    @ApiOperation(value="报警配置-编辑", notes="报警配置-编辑")
    @PutMapping(value = "/edit")
    public Result<AlarmRuleConfig> editAlarmInfo(@RequestBody AlarmRuleAndRuleLevelConfig alarmRuleAndRuleLevelConfig) {

        Result<AlarmRuleConfig> result = new Result<>();
        try {

        	//得到报警规则配置对象
        	AlarmRuleConfig alarmRuleConfig = alarmRuleAndRuleLevelConfig.getAlarmRuleConfig();

        	//获取报警规则级别配置对象集合
        	List<AlarmRuleLevelConfig> alarmRuleLevelConfigList = alarmRuleAndRuleLevelConfig.getAlarmRuleLevelConfig();

        	if (StringUtils.isNotBlank(alarmRuleConfig.getId())) {
        	    QueryWrapper alarmRuleLevelConfigQueryWrapper = new QueryWrapper();
        	    alarmRuleLevelConfigQueryWrapper.eq("alarm_rule_id", alarmRuleConfig.getId());
        	    alarmRuleLevelConfigService.remove(alarmRuleLevelConfigQueryWrapper);
        	}
        	//将数据保存到报警规则级别配置表
        	alarmRuleLevelConfigList.forEach(obj -> {
        	    obj.setAlarmRuleId(alarmRuleConfig.getId());
        	    //生成uuid用于报警规则级别的ID,
        	    String alarmRuleLevelConfigUuid = UUID.randomUUID().toString().replaceAll("-", "");
        	    obj.setId(alarmRuleLevelConfigUuid);
        	    //如果报警为数据报警,并且级别使用标准化
        	    if (alarmRuleConfig.getAlarmParamType().equals("1") && obj.getAlarmParamIsStandardize().equals("1")) {
        	        Map<String, String> map = alarmParamStandardConfigService.getAlarmParamStandardConfigId(obj.getAlarmParamStandardizeId(), alarmRuleConfig.getAlarmParamCode());
        	        obj.setAlarmParamStandardizeId(map.get("id"));
        	    }
        	});
        	alarmRuleLevelConfigService.saveBatch(alarmRuleLevelConfigList);
        }catch (Exception e){
            log.error("修改报警规则配置失败",e.getMessage());
            result.error500("修改失败");
        }

        return result;
    }

    /**
     * 分页列表查询
     * @param alarmRuleConfigVO
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @AutoLog(value = "报警配置-分页列表查询")
    @ApiOperation(value="报警配置-分页列表查询", notes="报警配置-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<AlarmRuleConfigVO>> queryPageList(AlarmRuleConfigVO alarmRuleConfigVO,
                                                          @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                                          @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                                          HttpServletRequest req) {

//        Result<IPage<AlarmRuleAndAlarmRuleLevelVO>> result = new Result<>();
        Result<IPage<AlarmRuleConfigVO>> result = new Result<>();
        try {
            QueryWrapper<AlarmRuleConfigVO> queryWrapper = new QueryWrapper<>();

            if(alarmRuleConfigVO.getFactoryId() != null){
                queryWrapper.eq("factory_id", alarmRuleConfigVO.getFactoryId());
            }else if (alarmRuleConfigVO.getCenterId() != null && alarmRuleConfigVO.getFactoryId() == null){
                //查询分中心下面的所有厂
                QueryWrapper<SysDepart> sysDepartQueryWrapper = new QueryWrapper<>();
                sysDepartQueryWrapper.eq("parent_id",alarmRuleConfigVO.getCenterId());
                List<SysDepart> sysDepartList = sysDepartService.list(sysDepartQueryWrapper);

                List<String> factoryIdList = new ArrayList<>();

                sysDepartList.forEach(sysDepart -> {

                    factoryIdList.add(sysDepart.getId());

                });

                queryWrapper.in("factory_id",factoryIdList);

            }

            if(alarmRuleConfigVO.getAlarmParamName() != null){
                queryWrapper.like("alarm_param_name",alarmRuleConfigVO.getAlarmParamName());
            }

            queryWrapper.eq("del_flag","1");

            Page<AlarmRuleConfigVO> page = new Page<>(pageNo, pageSize);
            IPage<AlarmRuleConfigVO> pageList = alarmRuleConfigService.getPage(page,queryWrapper);



            /*//查询未删除的数据
            alarmRuleAndAlarmRuleLevelVO.setDelFlag(1);
//            QueryWrapper<AlarmRuleAndAlarmRuleLevelVO> queryWrapper = QueryGenerator.initQueryWrapper(alarmRuleAndAlarmRuleLevelVO, req.getParameterMap());

            QueryWrapper<AlarmRuleAndAlarmRuleLevelVO> queryWrapper = new QueryWrapper<>();
            if (alarmRuleAndAlarmRuleLevelVO.getFactoryId() != null) {
                queryWrapper.eq("factory_id", alarmRuleAndAlarmRuleLevelVO.getFactoryId());
            }

            Page<AlarmRuleAndAlarmRuleLevelVO> page = new Page<>(pageNo, pageSize);

            IPage<AlarmRuleAndAlarmRuleLevelVO> pageList = alarmRuleConfigService.getAlarmRuleAndAlarmRuleLevePage(page,queryWrapper);*/



            result.setSuccess(true);
            result.setResult(pageList);

        } catch (Exception e) {
            e.printStackTrace();
            log.error("报警标准配置查询失败", e.getMessage());
            result.setSuccess(false);
            result.setResult(null);

        }
        return result;
    }

}