BaseSupplierController.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package com.ozs.web.controller.base;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.alibaba.excel.ExcelWriter;
  4. import com.alibaba.excel.write.metadata.WriteSheet;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.metadata.IPage;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.ozs.base.domain.vo.BaseSupplierVo;
  9. import com.ozs.common.annotation.Log;
  10. import com.ozs.common.constant.ModularConstans;
  11. import com.ozs.common.core.controller.BaseController;
  12. import com.ozs.common.core.domain.AjaxResult;
  13. import com.ozs.common.core.domain.model.LoginUser;
  14. import com.ozs.common.core.page.TableDataInfo;
  15. import com.ozs.common.enums.BusinessType;
  16. import com.ozs.common.exception.base.BaseException;
  17. import com.ozs.common.utils.StringUtils;
  18. import com.ozs.base.domain.BaseSupplier;
  19. import com.ozs.base.service.BaseSupplierService;
  20. import com.ozs.common.utils.poi.ExcelUtil;
  21. import com.ozs.framework.web.service.TokenService;
  22. import io.swagger.annotations.Api;
  23. import io.swagger.annotations.ApiOperation;
  24. import lombok.extern.slf4j.Slf4j;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.security.access.prepost.PreAuthorize;
  27. import org.springframework.web.bind.annotation.GetMapping;
  28. import org.springframework.web.bind.annotation.PostMapping;
  29. import org.springframework.web.bind.annotation.RequestBody;
  30. import org.springframework.web.bind.annotation.RequestMapping;
  31. import org.springframework.web.bind.annotation.RestController;
  32. import org.springframework.web.multipart.MultipartFile;
  33. import javax.servlet.http.HttpServletRequest;
  34. import javax.servlet.http.HttpServletResponse;
  35. import java.io.InputStream;
  36. import java.io.OutputStream;
  37. import java.net.URLEncoder;
  38. import java.util.ArrayList;
  39. import java.util.Date;
  40. import java.util.List;
  41. /**
  42. * 供应商管理
  43. *
  44. * @author sunhh
  45. */
  46. @Api(tags = "供应商管理")
  47. @Slf4j
  48. @RestController
  49. @RequestMapping("/base/supplier")
  50. public class BaseSupplierController extends BaseController {
  51. @Autowired
  52. private BaseSupplierService baseSupplierService;
  53. @Autowired
  54. private TokenService tokenService;
  55. @ApiOperation(value = "新增供应商户", notes = "")
  56. @PostMapping("/insertBaseSupplier")
  57. @PreAuthorize("@ss.hasPermi('base:supplier:insertBaseSupplier')")
  58. @Log(title = ModularConstans.supplier, businessType = BusinessType.INSERT)
  59. public AjaxResult insertBaseSupplier(@RequestBody BaseSupplier baseSupplier, HttpServletRequest request) {
  60. if (StringUtils.isNull(baseSupplier) || StringUtils.isNull(baseSupplier.getSupplierName())) {
  61. return error("供应商名称不能为空");
  62. }
  63. //获取登录人
  64. LoginUser loginUser = tokenService.getLoginUser(request);
  65. baseSupplier.setCreated(String.valueOf(loginUser.getUserId()));
  66. baseSupplier.setCreateTime(new Date());
  67. // 默认白名单
  68. if (StringUtils.isNull(baseSupplier.getSupplierState())) {
  69. baseSupplier.setSupplierState("1");
  70. }
  71. return baseSupplierService.insertBaseSupplier(baseSupplier);
  72. }
  73. @ApiOperation(value = "导入供应商数据")
  74. @PostMapping("/importData")
  75. @PreAuthorize("@ss.hasPermi('base:supplier:importData')")
  76. @Log(title = ModularConstans.expert, businessType = BusinessType.INSERT)
  77. public AjaxResult importData(MultipartFile file) throws Exception {
  78. ExcelUtil<BaseSupplierVo> util = new ExcelUtil<>(BaseSupplierVo.class);
  79. List<BaseSupplierVo> suppliers = util.importExcel(file.getInputStream(), 1);
  80. LoginUser loginUser = getLoginUser();
  81. String message = baseSupplierService.importBaseSuppliers(suppliers, loginUser);
  82. return success(message);
  83. }
  84. @ApiOperation(value = "删除供应商户", notes = "必传ID")
  85. @PostMapping("/deleteBaseSupplier")
  86. @PreAuthorize("@ss.hasPermi('base:supplier:deleteBaseSupplier')")
  87. @Log(title = ModularConstans.supplier, businessType = BusinessType.DELETE)
  88. public AjaxResult deleteBaseSupplier(@RequestBody BaseSupplier baseSupplier) {
  89. if (StringUtils.isNull(baseSupplier) || StringUtils.isNull(baseSupplier.getId())) {
  90. return error("删除ID不能为空");
  91. }
  92. return toAjax(baseSupplierService.deleteBaseSupplier(baseSupplier.getId()));
  93. }
  94. @ApiOperation(value = "修改供应商户", notes = "必传ID及修改字段")
  95. @PostMapping("/updateBaseSupplier")
  96. @PreAuthorize("@ss.hasPermi('base:supplier:updateBaseSupplier')")
  97. @Log(title = ModularConstans.supplier, businessType = BusinessType.UPDATE)
  98. public AjaxResult updateBaseSupplier(@RequestBody BaseSupplier baseSupplier, HttpServletRequest request) {
  99. if (StringUtils.isNull(baseSupplier) || StringUtils.isNull(baseSupplier.getId())) {
  100. return error("修改数据及ID不能为空");
  101. }
  102. //获取登录人
  103. LoginUser loginUser = tokenService.getLoginUser(request);
  104. baseSupplier.setUpdated(String.valueOf(loginUser.getUserId()));
  105. baseSupplier.setUpdateTime(new Date());
  106. return toAjax(baseSupplierService.updateBaseSupplier(baseSupplier));
  107. }
  108. @ApiOperation(value = "预先采购开关", notes = "必传id,supplierAdvancePurchase 其他字段不传; 关闭传0,开启传1")
  109. @PostMapping("/updateBaseSupplierAdvancePurchase")
  110. public AjaxResult updateBaseSupplierAdvancePurchase(@RequestBody BaseSupplier baseSupplier) {
  111. if (StringUtils.isNull(baseSupplier) || StringUtils.isNull(baseSupplier.getId())
  112. || StringUtils.isNull(baseSupplier.getSupplierAdvancePurchase())) {
  113. return error("预先采购及ID不能为空");
  114. }
  115. return toAjax(baseSupplierService.updateBaseSupplier(baseSupplier));
  116. }
  117. @ApiOperation(value = "黑白名单开关", notes = "必传id,supplierState 其他字段不传; 黑名单传0,白名单传1")
  118. @PostMapping("/updateSupplierType")
  119. @PreAuthorize("@ss.hasPermi('base:supplier:updateSupplierType')")
  120. @Log(title = ModularConstans.supplier, businessType = BusinessType.UPDATE)
  121. public AjaxResult updateSupplierType(@RequestBody BaseSupplier baseSupplier) {
  122. if (StringUtils.isNull(baseSupplier) || StringUtils.isNull(baseSupplier.getId())
  123. || StringUtils.isNull(baseSupplier.getSupplierState())) {
  124. return error("状态及ID不能为空");
  125. }
  126. return toAjax(baseSupplierService.updateBaseSupplier(baseSupplier));
  127. }
  128. @ApiOperation(value = "查询供应商户", notes = "非必传 查询条件:供应商名称,供应商类型,供应商状态,预先采购状态")
  129. @PostMapping("/selectBaseSupplier")
  130. @PreAuthorize("@ss.hasPermi('base:supplier:selectBaseSupplier')")
  131. @Log(title = ModularConstans.supplier, businessType = BusinessType.QUERY)
  132. public AjaxResult selectBaseSupplier(@RequestBody BaseSupplierVo baseSupplierVo) {
  133. // List<BaseSupplier> baseSupplierList = baseSupplierService.selectBaseSupplier(baseSupplier);
  134. // return getDataTable(baseSupplierList);
  135. LambdaQueryWrapper<BaseSupplier> lw = new LambdaQueryWrapper<BaseSupplier>();
  136. if (!StringUtils.isBlank(baseSupplierVo.getSupplierName())) {
  137. lw.like(BaseSupplier::getSupplierName, "%" + baseSupplierVo.getSupplierName() + "%");
  138. }
  139. if (!StringUtils.isBlank(baseSupplierVo.getSupplierState())) {
  140. lw.eq(BaseSupplier::getSupplierState, baseSupplierVo.getSupplierState());
  141. }
  142. if (!StringUtils.isBlank(baseSupplierVo.getSupplierAdvancePurchase())) {
  143. lw.eq(BaseSupplier::getSupplierAdvancePurchase, baseSupplierVo.getSupplierAdvancePurchase());
  144. }
  145. IPage<BaseSupplier> page = baseSupplierService.page(new Page<BaseSupplier>(baseSupplierVo.getPageNum(), baseSupplierVo.getPageSize()), lw);
  146. return success(page);
  147. }
  148. @ApiOperation("模板下载")
  149. @GetMapping("/downloaExcel")
  150. public void downloadZip(HttpServletResponse response) {
  151. List<BaseSupplierVo> list = new ArrayList<BaseSupplierVo>();
  152. list.add(new BaseSupplierVo("河南移动", "张先生", "河南-张家口"
  153. , "101019", "张老二", "1512626****",
  154. "张**", "中国建设银行", "2525********", "是"
  155. ));
  156. list.add(new BaseSupplierVo("河北不动", "刘先生", "河北-林泉县",
  157. "144030", "李老三", "1775959****",
  158. "刘**", "中原银行", "3366*********", "否"
  159. ));
  160. InputStream resourceAsStream = this.getClass().getResourceAsStream("/template/base_supplier.xlsx");
  161. OutputStream outputStream = null;
  162. try {
  163. response.setContentType("application/vnd.ms-excel");
  164. response.setCharacterEncoding("utf-8");
  165. // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
  166. String fileName = URLEncoder.encode("供应商信息(模板)", "UTF-8").replaceAll("\\+", "%20");
  167. response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
  168. outputStream = response.getOutputStream();
  169. ExcelWriter excelWriter = EasyExcel.write(outputStream)
  170. .withTemplate(resourceAsStream).autoCloseStream(true).build();
  171. WriteSheet writeSheet = EasyExcel.writerSheet().build();
  172. excelWriter.fill(list, writeSheet);
  173. excelWriter.finish();
  174. outputStream.flush();
  175. outputStream.close();
  176. } catch (Exception e) {
  177. log.error(e.getMessage());
  178. throw new BaseException("下载异常");
  179. }
  180. }
  181. }