package com.huaheng.pc.config.warehouse.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.company.service.CompanyService; import com.huaheng.pc.config.warehouse.domain.Warehouse; import com.huaheng.pc.config.warehouse.service.WarehouseService; import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader; import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; import com.huaheng.pc.system.dict.service.IDictDataService; import com.huaheng.pc.system.dict.service.IDictTypeService; 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.List; @Controller @RequestMapping("/config/warehouse") public class WareHouseController extends BaseController { @Resource private WarehouseService warehouseService; @Resource private InventoryHeaderService inventoryHeaderService; @Resource private IDictDataService dictDataService; @Resource private IDictTypeService dictTypeService; @Resource private CompanyService companyService; private String prefix = "config/warehouse"; @RequiresPermissions("config:warehouse:view") @GetMapping() public String warehouse() { return prefix + "/warehouse"; } /** * 查询仓库列表 */ @RequiresPermissions("config:warehouse:list") @Log(title = "通用-仓库管理", operating = "查看仓库列表", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list(Warehouse warehouse, String createdBegin, String createdEnd) { LambdaQueryWrapper<Warehouse> lambdaQueryWrapper = Wrappers.lambdaQuery(); PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Warehouse::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), Warehouse::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(warehouse.getCode()), Warehouse::getCode, warehouse.getCode()) .like(StringUtils.isNotEmpty(warehouse.getName()), Warehouse::getName,warehouse.getName()) .eq(Warehouse::getDeleted,false) .orderByDesc(Warehouse::getCreated); /** * 使用分页查询 */ if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ Page<Warehouse> page = new Page<>(pageNum, pageSize); IPage<Warehouse> iPage = warehouseService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(), iPage.getTotal()); } else { List<Warehouse> list = warehouseService.list(lambdaQueryWrapper); return getDataTable(list); } } /** * 新增仓库 */ @GetMapping("/add") public String add(ModelMap modelMap) { modelMap.put("list",companyService.list()); return prefix + "/add"; } /** * 新增保存仓库 */ @RequiresPermissions("config:warehouse:add") @Log(title = "通用-仓库管理", operating = "新增仓库", action = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(Warehouse warehouse) { warehouse.setCreatedBy(ShiroUtils.getLoginName()); warehouse.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(warehouseService.save(warehouse)); } /** * 修改仓库 */ @GetMapping("/edit/{code}") public String edit(@PathVariable("code") String code, ModelMap mmap) { Warehouse warehouse = warehouseService.getById(code); mmap.put("warehouse", warehouse); mmap.put("list",companyService.list()); return prefix + "/edit"; } /** * 修改保存仓库 */ @RequiresPermissions("config:warehouse:edit") @Log(title = "通用-仓库管理", operating = "修改仓库", action = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(Warehouse warehouse) { warehouse.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(warehouseService.updateById(warehouse)); } /** * 删除仓库 */ @RequiresPermissions("config:warehouse:remove") @Log(title = "通用-仓库管理", operating = "删除仓库", action = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String codes) { if (StringUtils.isEmpty(codes)) return AjaxResult.error("id不能为空"); for (String code : Convert.toStrArray(codes)) { Warehouse warehouse = new Warehouse(); InventoryHeader inventory = new InventoryHeader(); inventory.setWarehouseCode(code); inventory.setCompanyCode(warehouse.getCode()); LambdaQueryWrapper<InventoryHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(InventoryHeader::getWarehouseCode,code); int count = inventoryHeaderService.count(lambdaQueryWrapper); if (count != 0) { return AjaxResult.error("仓库编码(" + warehouse.getCode() +")还有库存,不能删除!"); } warehouse.setCode(code); warehouse.setLastUpdatedBy(ShiroUtils.getLoginName()); warehouse.setDeleted(true); warehouseService.saveOrUpdate(warehouse); dictDataService.deleteDictDataByWarehouseCode(code); dictTypeService.deleteDictTypeByWarehouseCode(code); } return AjaxResult.success("删除成功!"); } /** * 修改保存仓库 */ @RequiresPermissions("config:warehouse:copy") @Log(title = "通用-仓库管理", operating = "复制仓库", action = BusinessType.INSERT) @GetMapping("/copy") public String copy(String newWarehouseCode) { return prefix+"/copy"; } /** * 复制仓库 */ @RequiresPermissions("config:warehouse:copy") @Log(title = "通用-仓库管理", operating = "复制仓库", action = BusinessType.INSERT) @PostMapping("/copySave") @ResponseBody public AjaxResult copySave(String newWarehouseCode) { return toAjax(warehouseService.warehouseCopy(ShiroUtils.getWarehouseCode(), newWarehouseCode)); } }