SysQuotationController.java 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package com.ydtech.modules.admin.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.ydtech.core.page.HttpResult;
  6. import com.ydtech.exception.SystemException;
  7. import com.ydtech.modules.admin.model.dto.SysUserDto;
  8. import com.ydtech.modules.admin.model.po.SysOrganizationQuotation;
  9. import com.ydtech.modules.admin.model.po.SysQuotationTheme;
  10. import com.ydtech.modules.admin.model.vo.SysQuotationThemeVo;
  11. import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
  12. import com.ydtech.modules.admin.service.SysOrganizationQuotationService;
  13. import com.ydtech.modules.admin.service.SysQuotationThemeService;
  14. import com.ydtech.modules.admin.service.SysUserService;
  15. import com.ydtech.modules.base.controller.BaseController;
  16. import com.ydtech.modules.base.model.dto.PageDto;
  17. import com.ydtech.modules.protocol.utils.AssertionUtils;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import lombok.RequiredArgsConstructor;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.web.bind.annotation.*;
  24. import java.util.ArrayList;
  25. import java.util.Date;
  26. import java.util.List;
  27. @RestController
  28. @RequestMapping("/sys/quotation")
  29. @RequiredArgsConstructor
  30. @Api(tags = "报价单管理")
  31. public class SysQuotationController extends BaseController {
  32. @Autowired
  33. private SysOrganizationQuotationService sysOrganizationQuotationService;
  34. @Autowired
  35. private SysQuotationThemeService sysQuotationThemeService;
  36. @Autowired
  37. private SysUserService sysUserService;
  38. @ApiOperation(value = "分页查询报价单")
  39. @PostMapping(value = "page")
  40. public HttpResult<Page<SysQuotationTheme>> getpage(@RequestBody SysQuotationThemeVo sysQuotationThemeVo) {
  41. Page<SysQuotationTheme> page = sysQuotationThemeService.getPage(sysQuotationThemeVo);
  42. return HttpResult.ok(page);
  43. }
  44. @ApiOperation(value = "获取所有报价单主题")
  45. @PostMapping(value = "list")
  46. public HttpResult<List<SysQuotationTheme>> getlist() {
  47. List<SysQuotationTheme> list = sysQuotationThemeService.list();
  48. return HttpResult.ok(list);
  49. }
  50. @ApiOperation(value = "添加报价单主题")
  51. @PostMapping(value = "/save/sysQuotationTheme")
  52. public HttpResult<SysQuotationTheme> save(@RequestBody SysQuotationTheme sysQuotationTheme) {
  53. SysQuotationTheme one = sysQuotationThemeService.getOne(new LambdaQueryWrapper<SysQuotationTheme>().eq(SysQuotationTheme::getThemeCode, sysQuotationTheme.getThemeCode()));
  54. if (one != null) {
  55. return HttpResult.error("code重复,请重新输入");
  56. }
  57. sysQuotationTheme.setUserId(getUserId());
  58. sysQuotationTheme.setCreateTime(new Date());
  59. boolean save = sysQuotationThemeService.save(sysQuotationTheme);
  60. AssertionUtils.isSucceed(save, "添加失败");
  61. return HttpResult.ok("添加成功");
  62. }
  63. @ApiOperation(value = "修改报价单主题")
  64. @PostMapping(value = "/update/sysQuotationTheme")
  65. public HttpResult<SysQuotationTheme> update(@RequestBody SysQuotationTheme sysQuotationTheme) {
  66. LambdaQueryWrapper<SysQuotationTheme> wrapper = new LambdaQueryWrapper<>();
  67. wrapper.eq(SysQuotationTheme::getThemeCode, sysQuotationTheme.getThemeCode());
  68. SysQuotationTheme one = sysQuotationThemeService.getOne(wrapper);
  69. if (one != null && !one.getId().equals(sysQuotationTheme.getId())) {
  70. return HttpResult.error("code重复,请重新输入");
  71. }
  72. sysQuotationTheme.setUserId(getUserId());
  73. sysQuotationTheme.setCreateTime(new Date());
  74. boolean update = sysQuotationThemeService.updateById(sysQuotationTheme);
  75. AssertionUtils.isSucceed(update, "修改失败");
  76. return HttpResult.ok(sysQuotationTheme);
  77. }
  78. @ApiOperation(value = "删除报价单主题")
  79. @PostMapping(value = "/delete/sysQuotationTheme")
  80. public HttpResult<SysQuotationTheme> delete(@RequestBody SysQuotationTheme sysQuotationTheme) {
  81. boolean delete = sysQuotationThemeService.removeById(sysQuotationTheme);
  82. AssertionUtils.isSucceed(delete, "删除失败");
  83. return HttpResult.ok("删除成功");
  84. }
  85. @ApiOperation(value = "用户查询分页")
  86. @PostMapping(value = "/findUserList")
  87. public HttpResult findUserList(@RequestBody PageDto<SysUserDto> pageDto) {
  88. if (pageDto.getDto().getDeptId() == null) {
  89. BaseController baseController = new BaseController();
  90. pageDto.getDto().setDeptId(baseController.getDeptId());
  91. }
  92. IPage<SysUserBaseVO> userList = sysUserService.findAllUserList(pageDto);
  93. if (!userList.getRecords().isEmpty()) {
  94. sysOrganizationQuotationService.findUserList(userList);
  95. }
  96. return HttpResult.ok(userList);
  97. }
  98. @ApiOperation(value = "报价单配置")
  99. @PostMapping(value = "/config")
  100. public HttpResult<SysOrganizationQuotation> config(@RequestBody SysOrganizationQuotation sysOrganizationQuotation) {
  101. if (sysOrganizationQuotation.getAuthorizationIds().isEmpty()) {
  102. return HttpResult.error("配置失败,未选中用户");
  103. }
  104. // 构造查询条件,根据提供的用户ID集合查询出对应的报价单授权信息,然后进行删除
  105. LambdaQueryWrapper<SysOrganizationQuotation> removeWrapper = new LambdaQueryWrapper<>();
  106. removeWrapper.in(SysOrganizationQuotation::getAuthorizationId, sysOrganizationQuotation.getAuthorizationIds());
  107. sysOrganizationQuotationService.remove(removeWrapper);
  108. List<String> authorizationIds = sysOrganizationQuotation.getAuthorizationIds();
  109. List<String> themecodes = sysOrganizationQuotation.getThemecodes();
  110. // 遍历用户ID集合,为每个用户ID构造新的报价单授权信息,并添加到待保存的列表中
  111. List<SysOrganizationQuotation> quotations = new ArrayList<>();
  112. for (String authorizationId : authorizationIds) {
  113. for (String themecode : themecodes) {
  114. SysOrganizationQuotation quotation = new SysOrganizationQuotation();
  115. quotation.setAuthorizationId(authorizationId);
  116. quotation.setThemeCode(themecode);
  117. quotation.setUserId(getUserId());
  118. quotation.setCreateTime(new Date());
  119. quotations.add(quotation);
  120. }
  121. }
  122. // 批量保存新的报价单授权信息
  123. boolean saveBatch = sysOrganizationQuotationService.saveBatch(quotations);
  124. // 断言添加操作成功,若失败则抛出异常
  125. AssertionUtils.isSucceed(saveBatch, "配置失败");
  126. return HttpResult.ok("配置成功");
  127. }
  128. @ApiOperation(value = "获取用户对应报价单")
  129. @GetMapping(value = "/getThemeByUserId")
  130. public HttpResult< List<String>> getThemeByUserId(String userId) {
  131. if(StringUtils.isBlank(userId)){
  132. throw new SystemException("userId不能为空");
  133. }
  134. LambdaQueryWrapper<SysOrganizationQuotation> oQueryWrapper = new LambdaQueryWrapper<>();
  135. oQueryWrapper.eq(SysOrganizationQuotation::getAuthorizationId, userId);
  136. List<SysOrganizationQuotation> list = sysOrganizationQuotationService.list(oQueryWrapper);
  137. List<String> themeCodes = new ArrayList<>();
  138. if (list == null || list.isEmpty()) {
  139. themeCodes.add("QD");
  140. } else {
  141. for (SysOrganizationQuotation quotation : list) {
  142. themeCodes.add(quotation.getThemeCode());
  143. }
  144. }
  145. return HttpResult.ok(themeCodes);
  146. }
  147. }