package com.huaheng.pc.config.material.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.utils.StringUtils; import com.huaheng.common.utils.poi.ExcelUtil; 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.material.domain.Material; import com.huaheng.pc.config.material.service.MaterialService; 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 org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.util.List; @Api(tags={"物料控制类"}) @Controller @RequestMapping("/config/material") public class MaterialController extends BaseController { private String prefix = "config/material"; @Resource private MaterialService materialService; @RequiresPermissions("config:material:view") @GetMapping() public String material() { return prefix + "/material"; } /** * 查询物料列表 */ @ApiOperation(value="查看物料列表", notes="根据物料编码、名称、规格、物料类别、创建时间获取物料的详细信息", httpMethod = "POST") @RequiresPermissions("config:material:list") @Log(title = "通用-物料管理", operating = "查看物料列表", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list( @ApiParam(name="location",value="物料编码、名称、规格、物料类别") Material material, @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin, @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) { PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); LambdaQueryWrapper<Material> lambda = Wrappers.lambdaQuery(); lambda.gt(StringUtils.isNotEmpty(createdBegin), Material::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), Material::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(material.getCode()), Material::getCode, material.getCode()) .eq(StringUtils.isNotEmpty(material.getName()), Material::getName, material.getName()) .eq(StringUtils.isNotEmpty(material.getType()), Material::getType, material.getType()) .like(StringUtils.isNotEmpty(material.getSpec()), Material::getSpec, material.getSpec()) .eq(Material::getWarehouseCode, ShiroUtils.getWarehouseCode()) .in(Material::getCompanyCode, ShiroUtils.getCompanyCodeList()) .eq(Material::getDeleted, false); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ /*使用分页查询*/ Page<Material> page = new Page<>(pageNum, pageSize); IPage<Material> iPage = materialService.page(page, lambda); return getMpDataTable(iPage.getRecords(), iPage.getTotal()); } else { List<Material> list = materialService.list(lambda); return getDataTable(list); } } /** * 新增物料 */ @GetMapping("/add") public String add() { return prefix + "/add"; } /** * 新增保存物料 */ @ApiOperation(value="新增物料", notes="新增物料", httpMethod = "POST") @RequiresPermissions("config:material:add") @Log(title = "通用-物料管理", operating = "新增物料", action = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(Material material) { return materialService.addSave(material); } /** * 修改物料 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap mmap) { Material material = materialService.getById(id); mmap.put("material", material); return prefix + "/edit"; } /** * 修改保存物料 */ @ApiOperation(value="修改物料", notes="修改物料", httpMethod = "POST") @RequiresPermissions("config:material:edit") @Log(title = "通用-物料管理", operating = "修改物料", action = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(Material material) { material.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(materialService.updateById(material)); } /** * 删除物料 */ @RequiresPermissions("config:material:remove") @Log(title = "通用-物料管理", operating = "删除物料", action = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String ids) { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id不能为空"); } else { return materialService.removeByIds(ids); } } @PostMapping("/importData") @ResponseBody public AjaxResult importData(MultipartFile file) throws Exception { ExcelUtil<Material> util = new ExcelUtil<>(Material.class); List<Material> materialList = util.importExcel(file.getInputStream()); String operName = ShiroUtils.getLoginName(); String message = materialService.importMaterial(materialList, false, operName); return AjaxResult.success(message); } /** * 导出模板 * @param file * @return * @throws Exception */ @GetMapping("/importTemplate") @ResponseBody public AjaxResult importTemplate() { ExcelUtil<Material> util = new ExcelUtil<>(Material.class); return util.importTemplateExcel("物料"); } }