package com.ozs.web.controller.base; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ozs.base.domain.vo.BaseSupplierVo; import com.ozs.common.annotation.Log; import com.ozs.common.constant.ModularConstans; import com.ozs.common.core.controller.BaseController; import com.ozs.common.core.domain.AjaxResult; import com.ozs.common.core.domain.model.LoginUser; import com.ozs.common.core.page.TableDataInfo; import com.ozs.common.enums.BusinessType; import com.ozs.common.exception.base.BaseException; import com.ozs.common.utils.StringUtils; import com.ozs.base.domain.BaseSupplier; import com.ozs.base.service.BaseSupplierService; import com.ozs.common.utils.poi.ExcelUtil; import com.ozs.framework.web.service.TokenService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 供应商管理 * * @author sunhh */ @Api(tags = "供应商管理") @Slf4j @RestController @RequestMapping("/base/supplier") public class BaseSupplierController extends BaseController { @Autowired private BaseSupplierService baseSupplierService; @Autowired private TokenService tokenService; @ApiOperation(value = "新增供应商户", notes = "") @PostMapping("/insertBaseSupplier") @PreAuthorize("@ss.hasPermi('base:supplier:insertBaseSupplier')") @Log(title = ModularConstans.supplier, businessType = BusinessType.INSERT) public AjaxResult insertBaseSupplier(@RequestBody BaseSupplier baseSupplier, HttpServletRequest request) { if (StringUtils.isNull(baseSupplier) || StringUtils.isNull(baseSupplier.getSupplierName())) { return error("供应商名称不能为空"); } //获取登录人 LoginUser loginUser = tokenService.getLoginUser(request); baseSupplier.setCreated(String.valueOf(loginUser.getUserId())); baseSupplier.setCreateTime(new Date()); // 默认白名单 if (StringUtils.isNull(baseSupplier.getSupplierState())) { baseSupplier.setSupplierState("1"); } return baseSupplierService.insertBaseSupplier(baseSupplier); } @ApiOperation(value = "导入供应商数据") @PostMapping("/importData") @PreAuthorize("@ss.hasPermi('base:supplier:importData')") @Log(title = ModularConstans.expert, businessType = BusinessType.INSERT) public AjaxResult importData(MultipartFile file) throws Exception { ExcelUtil util = new ExcelUtil<>(BaseSupplierVo.class); List suppliers = util.importExcel(file.getInputStream(), 1); LoginUser loginUser = getLoginUser(); String message = baseSupplierService.importBaseSuppliers(suppliers, loginUser); return success(message); } @ApiOperation(value = "删除供应商户", notes = "必传ID") @PostMapping("/deleteBaseSupplier") @PreAuthorize("@ss.hasPermi('base:supplier:deleteBaseSupplier')") @Log(title = ModularConstans.supplier, businessType = BusinessType.DELETE) public AjaxResult deleteBaseSupplier(@RequestBody BaseSupplier baseSupplier) { if (StringUtils.isNull(baseSupplier) || StringUtils.isNull(baseSupplier.getId())) { return error("删除ID不能为空"); } return toAjax(baseSupplierService.deleteBaseSupplier(baseSupplier.getId())); } @ApiOperation(value = "修改供应商户", notes = "必传ID及修改字段") @PostMapping("/updateBaseSupplier") @PreAuthorize("@ss.hasPermi('base:supplier:updateBaseSupplier')") @Log(title = ModularConstans.supplier, businessType = BusinessType.UPDATE) public AjaxResult updateBaseSupplier(@RequestBody BaseSupplier baseSupplier, HttpServletRequest request) { if (StringUtils.isNull(baseSupplier) || StringUtils.isNull(baseSupplier.getId())) { return error("修改数据及ID不能为空"); } //获取登录人 LoginUser loginUser = tokenService.getLoginUser(request); baseSupplier.setUpdated(String.valueOf(loginUser.getUserId())); baseSupplier.setUpdateTime(new Date()); return toAjax(baseSupplierService.updateBaseSupplier(baseSupplier)); } @ApiOperation(value = "预先采购开关", notes = "必传id,supplierAdvancePurchase 其他字段不传; 关闭传0,开启传1") @PostMapping("/updateBaseSupplierAdvancePurchase") public AjaxResult updateBaseSupplierAdvancePurchase(@RequestBody BaseSupplier baseSupplier) { if (StringUtils.isNull(baseSupplier) || StringUtils.isNull(baseSupplier.getId()) || StringUtils.isNull(baseSupplier.getSupplierAdvancePurchase())) { return error("预先采购及ID不能为空"); } return toAjax(baseSupplierService.updateBaseSupplier(baseSupplier)); } @ApiOperation(value = "黑白名单开关", notes = "必传id,supplierState 其他字段不传; 黑名单传0,白名单传1") @PostMapping("/updateSupplierType") @PreAuthorize("@ss.hasPermi('base:supplier:updateSupplierType')") @Log(title = ModularConstans.supplier, businessType = BusinessType.UPDATE) public AjaxResult updateSupplierType(@RequestBody BaseSupplier baseSupplier) { if (StringUtils.isNull(baseSupplier) || StringUtils.isNull(baseSupplier.getId()) || StringUtils.isNull(baseSupplier.getSupplierState())) { return error("状态及ID不能为空"); } return toAjax(baseSupplierService.updateBaseSupplier(baseSupplier)); } @ApiOperation(value = "查询供应商户", notes = "非必传 查询条件:供应商名称,供应商类型,供应商状态,预先采购状态") @PostMapping("/selectBaseSupplier") @PreAuthorize("@ss.hasPermi('base:supplier:selectBaseSupplier')") @Log(title = ModularConstans.supplier, businessType = BusinessType.QUERY) public AjaxResult selectBaseSupplier(@RequestBody BaseSupplierVo baseSupplierVo) { // List baseSupplierList = baseSupplierService.selectBaseSupplier(baseSupplier); // return getDataTable(baseSupplierList); LambdaQueryWrapper lw = new LambdaQueryWrapper(); if (!StringUtils.isBlank(baseSupplierVo.getSupplierName())) { lw.like(BaseSupplier::getSupplierName, "%" + baseSupplierVo.getSupplierName() + "%"); } if (!StringUtils.isBlank(baseSupplierVo.getSupplierState())) { lw.eq(BaseSupplier::getSupplierState, baseSupplierVo.getSupplierState()); } if (!StringUtils.isBlank(baseSupplierVo.getSupplierAdvancePurchase())) { lw.eq(BaseSupplier::getSupplierAdvancePurchase, baseSupplierVo.getSupplierAdvancePurchase()); } IPage page = baseSupplierService.page(new Page(baseSupplierVo.getPageNum(), baseSupplierVo.getPageSize()), lw); return success(page); } @ApiOperation("模板下载") @GetMapping("/downloaExcel") public void downloadZip(HttpServletResponse response) { List list = new ArrayList(); list.add(new BaseSupplierVo("河南移动", "张先生", "河南-张家口" , "101019", "张老二", "1512626****", "张**", "中国建设银行", "2525********", "是" )); list.add(new BaseSupplierVo("河北不动", "刘先生", "河北-林泉县", "144030", "李老三", "1775959****", "刘**", "中原银行", "3366*********", "否" )); InputStream resourceAsStream = this.getClass().getResourceAsStream("/template/base_supplier.xlsx"); OutputStream outputStream = null; try { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 String fileName = URLEncoder.encode("供应商信息(模板)", "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); outputStream = response.getOutputStream(); ExcelWriter excelWriter = EasyExcel.write(outputStream) .withTemplate(resourceAsStream).autoCloseStream(true).build(); WriteSheet writeSheet = EasyExcel.writerSheet().build(); excelWriter.fill(list, writeSheet); excelWriter.finish(); outputStream.flush(); outputStream.close(); } catch (Exception e) { log.error(e.getMessage()); throw new BaseException("下载异常"); } } }