package com.huaheng.pc.config.configValue.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.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(configValue.getRecordType().equals("cycleCountPreference")){
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));
}
}