ConfigValueController.java 7.38 KB
package com.huaheng.pc.config.configValue.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.huaheng.common.utils.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.configValue.domain.ConfigValue;
import com.huaheng.pc.config.configValue.service.ConfigValueService;
import com.huaheng.pc.config.cycleCountPreference.domain.CycleCountPreference;
import com.huaheng.pc.config.cycleCountPreference.service.CycleCountPreferenceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
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/configValue")
public class ConfigValueController extends BaseController {

    @Resource
    private ConfigValueService configValueService;
    @Resource
    private CycleCountPreferenceService cycleCountPreferenceService;

    private String prefix = "config/configValue";

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

    /**
     * 查询系统参数配置
     */
    @ApiOperation(value="查看系统参数配置列表",
            notes="根据模块、类型、创建时间获取库位的详细信息",
            httpMethod = "POST")
    @RequiresPermissions("config:configValue:list")
    @Log(title = "配置-系统参数配置", operating = "查看系统参数配置列表", action = BusinessType.GRANT)
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(
            @ApiParam(name="location",value="模块、类型") ConfigValue configValue,
            @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin,
            @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) {
        LambdaQueryWrapper<ConfigValue> lambdaQueryWrapper = Wrappers.lambdaQuery();
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), ConfigValue::getCreated, createdBegin)
                .lt(StringUtils.isNotEmpty(createdEnd), ConfigValue::getCreated, createdEnd)
                .eq(StringUtils.isNotEmpty(configValue.getModuleType()), ConfigValue::getModuleType, configValue.getModuleType())
                .eq(StringUtils.isNotEmpty(configValue.getRecordType()), ConfigValue::getRecordType, configValue.getRecordType())
                .eq(ConfigValue::getWarehouseCode, ShiroUtils.getWarehouseCode());

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

    /**
     * 新增系统参数配置
     */
    @GetMapping("/add")
    public String add() {
        return prefix + "/add";
    }

    /**
     * 新增保存系统参数配置
     */
    @ApiOperation(value="新增系统参数配置", notes="新增系统参数配置", httpMethod = "POST")
    @RequiresPermissions("config:configValue:add")
    @Log(title = "配置-系统参数配置", operating = "新增系统参数配置", action = BusinessType.INSERT)
    @PostMapping("/add")
    @ResponseBody
    public AjaxResult addSave(ConfigValue configValue)  {
        //检测盘点首选项是否停用
        if("cycleCountPreference".equals(configValue.getRecordType())){
            CycleCountPreference cycleCountPreferenceTemp = new CycleCountPreference();
            cycleCountPreferenceTemp.setCode(configValue.getIdentifier());
            cycleCountPreferenceTemp.setWarehouseCode(configValue.getWarehouseCode());
            LambdaQueryWrapper<CycleCountPreference> preferenceLambdaQueryWrapper = Wrappers.lambdaQuery(cycleCountPreferenceTemp);
            CycleCountPreference cycleCountPreference = cycleCountPreferenceService.getOne(preferenceLambdaQueryWrapper);
            if(cycleCountPreference == null){
                return AjaxResult.error("盘点首选项编码错误,没有该条首选项!");
            }
            if(cycleCountPreference.getEnable() == false){
                return AjaxResult.error("不能添加已停用的盘点首选项!");
            }
        }
        configValue.setWarehouseCode(ShiroUtils.getWarehouseCode());
        configValue.setCreatedBy(ShiroUtils.getLoginName());
        configValue.setLastUpdatedBy(ShiroUtils.getLoginName());
        return toAjax(configValueService.save(configValue));
    }

    /**
     * 修改系统参数配置
     */
    @GetMapping("/edit/{id}")
    public String edit(@PathVariable("id") Integer id, ModelMap mmap) {
        ConfigValue configValue = configValueService.getById(id);
        mmap.put("configValue", configValue);
        return prefix + "/edit";
    }

    /**
     * 修改保存系统参数配置
     */
    @ApiOperation(value="修改系统参数配置", notes="修改系统参数配置", httpMethod = "POST")
    @RequiresPermissions("config:configValue:edit")
    @Log(title = "通用-系统参数配置", operating = "修改系统参数配置", action = BusinessType.UPDATE)
    @PostMapping("/edit")
    @ResponseBody
    public AjaxResult editSave(
            @ApiParam(name = "Container", value = "系统参数配置实体", required = true)ConfigValue configValue) {
        configValue.setLastUpdatedBy(ShiroUtils.getLoginName());
        return toAjax(configValueService.updateById(configValue));
    }

    /**
     * 删除系统参数配置
     */
    @ApiOperation(value="删除系统参数配置", notes="根据id批量删除系统参数配置,参数示例1,2,3", httpMethod = "POST")
    @RequiresPermissions("config:configValue: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)) {
          list.add(id);
        }
        return toAjax(configValueService.removeByIds(list));
    }
}