package com.huaheng.pc.config.materialUnit.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.materialUnit.domain.MaterialUnit; import com.huaheng.pc.config.materialUnit.service.MaterialUnitService; 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 javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @Api(tags = "单位 ") @Controller @RequestMapping("/config/materialUnit") public class MaterialUnitController extends BaseController { @Resource private MaterialUnitService materialUnitService; @Resource private MaterialService materialService; private String prefix = "config/materialUnit"; @RequiresPermissions("config:materialUnit:view") @GetMapping() public String materialUnit() { return prefix + "/materialUnit"; } /** * 查询单位 列表 */ @ApiOperation(value="查看单位 列表", notes="根据物料编码、名称、单位、创建时间获取单位 列表", httpMethod = "POST") @RequiresPermissions("config:materialUnit:list") @Log(title = "配置-单位 ",operating = "单位 列表", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list(@ApiParam(name="receiptType",value="料编码、名称、单位") MaterialUnit materialUnit, @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin, @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) { LambdaQueryWrapper<MaterialUnit> lambdaQueryWrapper = Wrappers.lambdaQuery(); PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), MaterialUnit::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), MaterialUnit::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(materialUnit.getMaterialCode()), MaterialUnit::getMaterialCode, materialUnit.getMaterialCode()) .like(StringUtils.isNotEmpty(materialUnit.getMaterialName()), MaterialUnit::getMaterialName, materialUnit.getMaterialName()) .eq(StringUtils.isNotEmpty(materialUnit.getUnit()), MaterialUnit::getUnit, materialUnit.getUnit()) .in(MaterialUnit::getCompanyCode, ShiroUtils.getCompanyCodeList()) .eq(MaterialUnit::getWarehouseCode, ShiroUtils.getWarehouseCode()) .orderByDesc(MaterialUnit::getId); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ /*使用分页查询*/ Page<MaterialUnit> page = new Page<>(pageNum, pageSize); IPage<MaterialUnit> iPage = materialUnitService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(), iPage.getTotal()); } else { List<MaterialUnit> list = materialUnitService.list(lambdaQueryWrapper); return getDataTable(list); } } /** * 新增单位 */ @GetMapping("/add") public String add() { return prefix + "/add"; } /** * 新增保存单位 */ @ApiOperation(value="新增单位 ", notes="新增单位 ", httpMethod = "POST") @RequiresPermissions("config:materialUnit:add") @Log(title = "配置-单位 ",operating = "新增单位 ", action = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(MaterialUnit materialUnit) { LambdaQueryWrapper<Material> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(Material::getCode, materialUnit.getMaterialCode()) .eq(Material::getWarehouseCode,ShiroUtils.getWarehouseCode()); Material material = materialService.getOne(lambdaQueryWrapper); if (material == null){ return AjaxResult.error(" 该物料编码不存在"); } LambdaQueryWrapper<MaterialUnit> lambda = Wrappers.lambdaQuery(); lambda.eq(MaterialUnit::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(MaterialUnit::getCompanyCode, materialUnit.getCompanyCode()) .eq(MaterialUnit::getWarehouseCode,ShiroUtils.getWarehouseCode()) .eq(MaterialUnit::getMaterialCode, materialUnit.getMaterialCode()) .eq(MaterialUnit::getUnit, materialUnit.getUnit()); if (materialUnitService.getOne(lambda) != null){ return AjaxResult.error("当前新增记录已存在"); } materialUnit.setWarehouseCode(ShiroUtils.getWarehouseCode()); materialUnit.setMaterialName(material.getName()); materialUnit.setMaterialSpec(material.getSpec()); materialUnit.setCreatedBy(ShiroUtils.getLoginName()); materialUnit.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(materialUnitService.save(materialUnit)); } /** * 修改单位 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap mmap) { MaterialUnit materialUnit = materialUnitService.getById(id); mmap.put("materialUnit", materialUnit); return prefix + "/edit"; } /** * 修改保存单位 */ @ApiOperation(value="修改单位信息", notes="修改单位信息", httpMethod = "POST") @RequiresPermissions("config:warehouse:edit") @Log(title = "配置-单位 ",operating = "修改单位 ", action = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(MaterialUnit materialUnit) { LambdaQueryWrapper<Material> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(Material::getCode, materialUnit.getMaterialCode()); Material material = materialService.getOne(lambdaQueryWrapper); if (material == null){ return AjaxResult.error(" 该物料编码不存在"); } LambdaQueryWrapper<MaterialUnit> lambda = Wrappers.lambdaQuery(); lambda.eq(MaterialUnit::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(MaterialUnit::getCompanyCode, materialUnit.getCompanyCode()) .eq(MaterialUnit::getMaterialCode, materialUnit.getMaterialCode()) .eq(MaterialUnit::getUnit, materialUnit.getUnit()); if (materialUnitService.getOne(lambda) != null){ return AjaxResult.error("物料编码"+materialUnit.getMaterialCode()+",d 单位"+material.getUnit()+"已存在记录"); } materialUnit.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(materialUnitService.updateById(materialUnit)); } /** * 删除单位 */ @ApiOperation(value="删除单位 ", notes="单条删除或批量删除单位 ,示例1或1,2,3", httpMethod = "POST") @RequiresPermissions("config:receiptType: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(materialUnitService.removeByIds(list)); } }