AlarmLevelController.java 6.41 KB
package com.huaheng.pc.config.alarmLevel.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huaheng.common.support.Convert;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.aspectj.lang.annotation.Log;
import com.huaheng.framework.aspectj.lang.constant.BusinessType;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.page.PageDomain;
import com.huaheng.framework.web.page.TableDataInfo;
import com.huaheng.framework.web.page.TableSupport;
import com.huaheng.pc.config.alarmLevel.domain.AlarmLevel;
import com.huaheng.pc.config.alarmLevel.service.AlarmLevelService;
import com.huaheng.pc.config.sendMail.domain.SendMail;
import com.huaheng.pc.config.sendMail.service.SendMailService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

@Api(tags = "预警等级")
@Controller
@RequestMapping("/config/alarmLevel")
public class AlarmLevelController extends BaseController {

    @Resource
    private AlarmLevelService alarmLevelService;
    @Resource
    private SendMailService sendMailService;

    private String prefix = "config/alarmLevel";

    @RequiresPermissions("config:alarmLevel:view")
    @GetMapping()
    public String containerCapacity()
    {
        return prefix + "/containerCapacity";
    }

    /**
     * 查询容器容量列表
     */
    @RequiresPermissions("config:alarmLevel:list")
    @Log(title = "配置-预警等级", operating = "查看预警等级列表", action = BusinessType.GRANT)
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(String createdBegin, String createdEnd) {
        LambdaQueryWrapper<AlarmLevel> lambdaQueryWrapper = Wrappers.lambdaQuery();
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();

        lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), AlarmLevel::getCreated, createdBegin)
                .le(StringUtils.isNotEmpty(createdEnd), AlarmLevel::getCreated, createdEnd)
                .in(AlarmLevel::getCompanyCode, ShiroUtils.getCompanyCodeList())
                .eq(AlarmLevel::getWarehouseCode, ShiroUtils.getWarehouseCode())
                .orderByAsc(AlarmLevel::getId);

        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
            //使用分页查询
            Page<AlarmLevel> page = new Page<>(pageNum, pageSize);
            IPage<AlarmLevel> iPage = alarmLevelService.page(page, lambdaQueryWrapper);
            return getMpDataTable(iPage.getRecords(),iPage.getTotal());
        } else {
            List<AlarmLevel> list = alarmLevelService.list(lambdaQueryWrapper);
            return getDataTable(list);
        }
    }

    /**
     * 新增预警等级 
     */
    @GetMapping("/add")
    public String add() {
        return prefix + "/add";
    }

    /**
     * 新增保存预警等级
     */
    @ApiOperation(value="新增预警等级 ", notes="新增预警等级 ", httpMethod = "POST")
    @RequiresPermissions("config:alarmLevel:add")
    @Log(title = "配置-预警等级 ",operating = "新增预警等级 ", action = BusinessType.INSERT)
    @PostMapping("/add")
    @ResponseBody
    public AjaxResult addSave(AlarmLevel alarmLevel) {
        alarmLevel.setWarehouseCode(ShiroUtils.getWarehouseCode());
        LambdaQueryWrapper<AlarmLevel> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(AlarmLevel::getLevel, alarmLevel.getLevel())
            .eq(AlarmLevel::getCompanyCode, alarmLevel.getCompanyCode())
            .eq(AlarmLevel::getWarehouseCode, alarmLevel.getWarehouseCode());
        if (alarmLevelService.getOne(lambdaQueryWrapper) != null){
            return AjaxResult.error("该记录已存在");
        }
        alarmLevel.setCreatedBy(ShiroUtils.getLoginName());
        alarmLevel.setLastUpdateBy(ShiroUtils.getLoginName());
        return toAjax(alarmLevelService.save(alarmLevel));
    }

    /**
     * 修改预警等级 
     */
    @GetMapping("/edit/{id}")
    public String edit(@PathVariable("id") Integer id, ModelMap mmap) {
        AlarmLevel alarmLevel = alarmLevelService.getById(id);
        mmap.put("alarmLevel", alarmLevel);
        return prefix + "/edit";
    }

    /**
     * 修改保存预警等级 
     */
    @ApiOperation(value="修改预警等级信息", notes="修改预警等级信息", httpMethod = "POST")
    @RequiresPermissions("config:alarmLevel:edit")
    @Log(title = "配置-预警等级 ",operating = "修改预警等级 ", action = BusinessType.UPDATE)
    @PostMapping("/edit")
    @ResponseBody
    public AjaxResult editSave(AlarmLevel alarmLevel) {
        alarmLevel.setLastUpdateBy(ShiroUtils.getLoginName());
        return toAjax(alarmLevelService.updateById(alarmLevel));
    }

    /**
     * 删除预警等级 
     */
    @ApiOperation(value="删除预警等级 ", notes="单条删除或批量删除预警等级 ,示例1或1,2,3", httpMethod = "POST")
    @RequiresPermissions("config:alarmLevel:remove")
    @Log(title = "配置-预警等级 ",operating = "删除预警等级 ", action = BusinessType.DELETE)
    @PostMapping( "/remove")
    @ResponseBody
    public AjaxResult remove(String ids) {
        if (StringUtils.isEmpty(ids)) {
            return AjaxResult.error("id不能为空");
        }
        List<Integer> list = new ArrayList<>();
        for (Integer id : Convert.toIntArray(ids)) {
            LambdaQueryWrapper<SendMail> lambda = Wrappers.lambdaQuery();
            lambda.eq(SendMail::getWarningLevel, alarmLevelService.getById(id).getLevel());
            List<SendMail> sendMails = sendMailService.list(lambda);
            if (sendMails != null) {
                return AjaxResult.error("该类型正在被使用");
            }
            list.add(id);
        }
        return toAjax(alarmLevelService.removeByIds(list));
    }
}