package com.huaheng.pc.config.supplier.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.material.domain.Material; import com.huaheng.pc.config.supplier.domain.Supplier; import com.huaheng.pc.config.supplier.service.SupplierService; import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; 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.HashMap; import java.util.List; import java.util.Map; @Api(tags={"供应商操作类"}) @Controller @RequestMapping("/config/supplier") public class SupplierController extends BaseController { private String prefix = "config/supplier"; @Resource private SupplierService supplierService; @Resource private ReceiptDetailService receiptDetailService; @RequiresPermissions("config:supplier:view") @GetMapping() public String supplier() { return prefix + "/supplier"; } /** * 查询供应商列表 */ @ApiOperation(value="查询供应商列表", notes="根据编码、名称、创建时间获取库位的详细信息", httpMethod = "POST") @RequiresPermissions("config:supplier:list") @Log(title = "通用-供应商管理", operating = "查看供应商列表", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list(@ApiParam(name = "supplier", value = "编码、名称")Supplier supplier, @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin, @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) { LambdaQueryWrapper<Supplier> lambdaQueryWrapper = Wrappers.lambdaQuery(); PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Supplier::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), Supplier::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(supplier.getCode()), Supplier::getCode, supplier.getCode()) .like(StringUtils.isNotEmpty(supplier.getName()), Supplier::getName, supplier.getName()) .eq(Supplier::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(Supplier::getDeleted,false) .orderByDesc(Supplier::getCreated); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ /*使用分页查询*/ Page<Supplier> page = new Page<>(pageNum, pageSize); IPage<Supplier> iPage = supplierService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(), iPage.getTotal()); } else { List<Supplier> list = supplierService.list(lambdaQueryWrapper); return getDataTable(list); } } /** * 新增供应商 */ @GetMapping("/add") public String add() { return prefix + "/add"; } /** * 新增保存供应商 */ @ApiOperation(value="新增供应商", notes="新增供应商", httpMethod = "POST") @RequiresPermissions("config:supplier:add") @Log(title = "通用-供应商管理", operating = "新增供应商", action = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(Supplier supplier) { supplier.setWarehouseCode(ShiroUtils.getWarehouseCode()); supplier.setCreatedBy(ShiroUtils.getLoginName()); supplier.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(supplierService.save(supplier)); } /** * 修改供应商 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap mmap) { Supplier supplier = supplierService.getById(id); mmap.put("supplier", supplier); return prefix + "/edit"; } /** * 修改保存供应商 */ @ApiOperation(value="修改供应商", notes="修改供应商", httpMethod = "POST") @RequiresPermissions("config:supplier:edit") @Log(title = "通用-供应商管理", operating = "修改供应商", action = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(@ApiParam(name = "Supplier", value = "供应商") Supplier supplier) { supplier.setEnable(false); supplier.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(supplierService.updateById(supplier)); } /** * 删除供应商 */ @ApiOperation(value="删除供应商", notes="单条删除或批量删除供应商信息,示例1或1,2,3", httpMethod = "POST") @RequiresPermissions("config:supplier:remove") @Log(title = "通用-供应商管理", operating = "删除供应商", action = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String ids) { if (StringUtils.isEmpty(ids)) { return AjaxResult.error("id不能为空"); } for (Integer id : Convert.toIntArray(ids)) { Supplier supplier = supplierService.getById(id); LambdaQueryWrapper<ReceiptDetail> lambda = Wrappers.lambdaQuery(); lambda.select(ReceiptDetail::getId) .eq(ReceiptDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(ReceiptDetail::getSupplierCode, supplier.getCode()) .eq(ReceiptDetail::getDeleted, false); Map<String, Object> map = receiptDetailService.getMap(lambda); if (map != null) { return AjaxResult.error("供应商编码(" + supplier.getCode() +")存在入库单,不能删除!"); } supplier.setDeleted(true); supplier.setLastUpdatedBy(ShiroUtils.getLoginName()); supplierService.updateById(supplier); } return AjaxResult.success("删除成功!"); } @PostMapping("/getData") @ResponseBody public Map<String, Object> getData(String supplierName, String supplierCode) { LambdaQueryWrapper<Supplier> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.like(StringUtils.isNotEmpty(supplierName), Supplier::getCode, supplierName) .or() .like(StringUtils.isNotEmpty(supplierName), Supplier::getName, supplierName); List<Supplier> supplierList = supplierService.list(queryWrapper); List<Map<String, Object>> list = new ArrayList<>(); for (Supplier supplier : supplierList) { Map<String, Object> resultMap = new HashMap<>(); if (StringUtils.isNotEmpty(supplierCode) && supplier.getCode().equals(supplierCode)) { resultMap.put("selected", true); } resultMap.put("id", supplier.getCode()); resultMap.put("text", supplier.getName()); list.add(resultMap); } Map<String, Object> map = new HashMap<>(); map.put("results", list); return map; } }