BaseProfessionalController.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.ozs.web.controller.base;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.ozs.base.domain.BaseProfessional;
  4. import com.ozs.base.domain.vo.BaseProfessionalVo;
  5. import com.ozs.base.service.BaseProfessionalService;
  6. import com.ozs.common.annotation.Log;
  7. import com.ozs.common.config.PurchaseConfig;
  8. import com.ozs.common.constant.ModularConstans;
  9. import com.ozs.common.core.controller.BaseController;
  10. import com.ozs.common.core.domain.AjaxResult;
  11. import com.ozs.common.core.domain.R;
  12. import com.ozs.common.core.domain.model.LoginUser;
  13. import com.ozs.common.enums.BusinessType;
  14. import com.ozs.common.exception.ServiceException;
  15. import com.ozs.common.utils.StringUtils;
  16. import com.ozs.common.utils.file.FileUtils;
  17. import com.ozs.common.utils.poi.ExcelUtil;
  18. import com.ozs.plan.doman.ProvisionalPlan;
  19. import com.ozs.plan.doman.vo.requestVo.ProvisionalPlanVo;
  20. import io.swagger.annotations.Api;
  21. import io.swagger.annotations.ApiOperation;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.apache.commons.lang3.ObjectUtils;
  24. import org.apache.commons.lang3.exception.ExceptionUtils;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.http.MediaType;
  27. import org.springframework.security.access.prepost.PreAuthorize;
  28. import org.springframework.web.bind.annotation.*;
  29. import org.springframework.web.multipart.MultipartFile;
  30. import javax.servlet.ServletOutputStream;
  31. import javax.servlet.http.HttpServletRequest;
  32. import javax.servlet.http.HttpServletResponse;
  33. import java.io.FileInputStream;
  34. import java.io.InputStream;
  35. import java.net.URLDecoder;
  36. import java.net.URLEncoder;
  37. import java.util.List;
  38. /**
  39. * 专业库管理
  40. *
  41. * @author sunhh
  42. */
  43. @Api(tags = "专业库管理")
  44. @RestController
  45. @RequestMapping("/base/professional")
  46. @Slf4j
  47. public class BaseProfessionalController extends BaseController {
  48. @Autowired
  49. private BaseProfessionalService baseProfessionalService;
  50. @ApiOperation(value = "新增专业库", notes = "必传 专业库名称、一级分类、编码、父级编码;没有父级编码传0")
  51. @PostMapping("/insertProfessional")
  52. @PreAuthorize("@ss.hasPermi('base:professional:insertProfessional')")
  53. @Log(title = ModularConstans.professional, businessType = BusinessType.INSERT)
  54. public AjaxResult insertProfessional(@RequestBody BaseProfessional baseProfessional) {
  55. if (StringUtils.isNull(baseProfessional)
  56. || StringUtils.isNull(baseProfessional.getProfessionalName())
  57. || StringUtils.isNull(baseProfessional.getProfessionalCode())
  58. || StringUtils.isNull(baseProfessional.getProfessionalGrade())
  59. || StringUtils.isNull(baseProfessional.getParentCode())) {
  60. return error("专业库名称、编码、一级分类、父级ID 不能为空");
  61. }
  62. LambdaQueryWrapper<BaseProfessional> wrapper = new LambdaQueryWrapper<>();
  63. wrapper.eq(BaseProfessional::getProfessionalCode, baseProfessional.getProfessionalCode());
  64. List<BaseProfessional> list = baseProfessionalService.list(wrapper);
  65. if (!ObjectUtils.isEmpty(list)) {
  66. return AjaxResult.error("编码信息不可重复使用!");
  67. }
  68. return toAjax(baseProfessionalService.save(baseProfessional));
  69. }
  70. @ApiOperation(value = "删除专业库", notes = "必传 id")
  71. @PostMapping("/deleteProfessional")
  72. @PreAuthorize("@ss.hasPermi('base:professional:deleteProfessional')")
  73. @Log(title = ModularConstans.professional, businessType = BusinessType.DELETE)
  74. public AjaxResult deleteProfessional(@RequestBody BaseProfessional baseProfessional) {
  75. if (StringUtils.isNull(baseProfessional) || StringUtils.isNull(baseProfessional.getId())) {
  76. return error("专业库id不能为空");
  77. }
  78. return toAjax(baseProfessionalService.deleteId(baseProfessional.getId()));
  79. }
  80. @ApiOperation(value = "批量删除专业库", notes = "必传 idList")
  81. @PostMapping("/deleteIds")
  82. @PreAuthorize("@ss.hasPermi('base:professional:deleteIds')")
  83. @Log(title = ModularConstans.professional, businessType = BusinessType.DELETE)
  84. public AjaxResult deleteByIdLIst(@RequestBody BaseProfessionalVo baseProfessionalVo) {
  85. baseProfessionalService.deleteIds(baseProfessionalVo.getDeleteIds());
  86. return success();
  87. }
  88. @ApiOperation(value = "修改专业库", notes = "必传 id 及修改数据")
  89. @PostMapping("/updateProfessional")
  90. @PreAuthorize("@ss.hasPermi('base:professional:updateProfessional')")
  91. @Log(title = ModularConstans.professional, businessType = BusinessType.UPDATE)
  92. public AjaxResult updateProfessional(@RequestBody BaseProfessional baseProfessional) {
  93. if (StringUtils.isNull(baseProfessional) || StringUtils.isNull(baseProfessional.getId())) {
  94. return error("专业库id和修改数据不能为空");
  95. }
  96. LambdaQueryWrapper<BaseProfessional> wrapper = new LambdaQueryWrapper<>();
  97. wrapper.eq(BaseProfessional::getProfessionalCode, baseProfessional.getProfessionalCode());
  98. wrapper.ne(BaseProfessional::getId, baseProfessional.getId());
  99. List<BaseProfessional> list = baseProfessionalService.list(wrapper);
  100. if (!ObjectUtils.isEmpty(list)) {
  101. return AjaxResult.error("编码信息不可重复使用!");
  102. }
  103. return toAjax(baseProfessionalService.updateProfessional(baseProfessional));
  104. }
  105. @ApiOperation(value = "查询专业库树结构", notes = "非必传 查询条件:品目名称")
  106. @PostMapping("/selectBaseProfessional")
  107. @PreAuthorize("@ss.hasPermi('base:professional:selectBaseProfessional')")
  108. @Log(title = ModularConstans.professional, businessType = BusinessType.QUERY)
  109. public AjaxResult selectBaseProfessional(@RequestBody BaseProfessionalVo baseProfessionalVo) {
  110. List<BaseProfessionalVo> baseSupplierList = baseProfessionalService.selectBaseProfessionalVo(baseProfessionalVo);
  111. return success(baseSupplierList);
  112. }
  113. @ApiOperation(value = "导入专业库", notes = "导入表格")
  114. @PostMapping("/importBaseProfessional")
  115. @PreAuthorize("@ss.hasPermi('base:professional:importBaseProfessional')")
  116. @Log(title = ModularConstans.professional, businessType = BusinessType.IMPORT)
  117. public AjaxResult importBaseProfessional(MultipartFile file, boolean updateSupport) throws Exception {
  118. ExcelUtil<BaseProfessional> util = new ExcelUtil<>(BaseProfessional.class);
  119. List<BaseProfessional> baseProfessionalList = util.importExcel(file.getInputStream());
  120. if (StringUtils.isNull(baseProfessionalList) || baseProfessionalList.size() == 0) {
  121. throw new ServiceException("导入专业库数据不能为空!");
  122. }
  123. // String operName = getUsername();
  124. String message = baseProfessionalService.importBaseProfessional(baseProfessionalList, updateSupport);
  125. return success(message);
  126. }
  127. @ApiOperation("导出专业库")
  128. @PostMapping("/exportBaseProfessional")
  129. @PreAuthorize("@ss.hasPermi('base:professional:exportBaseProfessional')")
  130. @Log(title = ModularConstans.professional, businessType = BusinessType.EXPORT)
  131. public void exportBaseProfessional(HttpServletResponse response, @RequestBody BaseProfessionalVo baseProfessionalVo) {
  132. List<BaseProfessional> list = baseProfessionalService.selectBaseProfessional(baseProfessionalVo);
  133. ExcelUtil<BaseProfessional> util = new ExcelUtil<>(BaseProfessional.class);
  134. util.exportExcel(response, list, "专业库数据");
  135. }
  136. @ApiOperation("文件下载")
  137. @GetMapping("/downloaExcel")
  138. @PreAuthorize("@ss.hasPermi('base:professional:downloaExcel')")
  139. @Log(title = ModularConstans.professional, businessType = BusinessType.OTHER)
  140. public void downloadZip(HttpServletRequest request, HttpServletResponse response) {
  141. try {
  142. // 文件路径
  143. // String downloadPath = this.getClass().getResource("/template/professional.xlsx").getPath();
  144. InputStream resourceAsStream = this.getClass().getResourceAsStream("/template/professional.xlsx");
  145. response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
  146. FileUtils.setAttachmentResponseHeader(response, "专业库模板.xlsx");
  147. FileUtils.writeBytesByInput(resourceAsStream, response.getOutputStream());
  148. } catch (Exception e) {
  149. log.error("下载文件失败", e);
  150. }
  151. }
  152. }