MonthlyReconciliationController.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package com.ozs.web.controller.plan;
  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.ozs.base.domain.BaseNoticeType;
  6. import com.ozs.common.annotation.Log;
  7. import com.ozs.common.constant.Constants;
  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.entity.SysDept;
  12. import com.ozs.common.core.domain.entity.SysDictData;
  13. import com.ozs.common.core.domain.entity.SysRole;
  14. import com.ozs.common.enums.BusinessType;
  15. import com.ozs.common.enums.SysFileRefEnum;
  16. import com.ozs.plan.doman.MonthlyReconciliation;
  17. import com.ozs.plan.doman.vo.requestVo.MonthlyReconciliationPageReqVo;
  18. import com.ozs.plan.service.MonthlyReconciliationService;
  19. import com.ozs.system.domain.SysFileInfo;
  20. import com.ozs.system.domain.SysFileRef;
  21. import com.ozs.system.domain.vo.responseVo.SysDeptResponseVo;
  22. import com.ozs.system.service.ISysDeptService;
  23. import com.ozs.system.service.ISysDictTypeService;
  24. import com.ozs.system.service.SysFileRefService;
  25. import com.ozs.system.service.SysFileService;
  26. import io.swagger.annotations.Api;
  27. import io.swagger.annotations.ApiOperation;
  28. import org.apache.commons.lang3.StringUtils;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.security.access.prepost.PreAuthorize;
  31. import org.springframework.util.ObjectUtils;
  32. import org.springframework.web.bind.annotation.*;
  33. import javax.validation.constraints.NotEmpty;
  34. import java.util.Arrays;
  35. import java.util.List;
  36. import java.util.Map;
  37. import java.util.stream.Collectors;
  38. @RestController
  39. @RequestMapping("/monthly/reconciliation")
  40. @Api(tags = ModularConstans.monthly)
  41. public class MonthlyReconciliationController extends BaseController {
  42. @Autowired
  43. private MonthlyReconciliationService monthlyReconciliationService;
  44. @Autowired
  45. private SysFileRefService sysFileRefService;
  46. @Autowired
  47. private SysFileService sysFileService;
  48. @Autowired
  49. private ISysDeptService iSysDeptService;
  50. @Autowired
  51. private ISysDictTypeService dictTypeService;
  52. @ApiOperation(value = "分页查询月度对表")
  53. @PostMapping("/page")
  54. @PreAuthorize("@ss.hasPermi('base:monthly:list')")
  55. @Log(title = ModularConstans.monthly, businessType = BusinessType.QUERY)
  56. public AjaxResult page(@NotEmpty(message = "数据为空")
  57. @RequestBody MonthlyReconciliationPageReqVo vo) {
  58. LambdaQueryWrapper<MonthlyReconciliation> lw = new LambdaQueryWrapper<>();
  59. if (!StringUtils.isBlank(vo.getProjectName())) {
  60. lw.like(MonthlyReconciliation::getProjectName, vo.getProjectName());
  61. }
  62. if (!ObjectUtils.isEmpty(vo.getProjectStatus())) {
  63. lw.eq(MonthlyReconciliation::getProjectStatus, vo.getProjectStatus());
  64. }
  65. if (!StringUtils.isBlank(vo.getPurchaseServices())) {
  66. lw.eq(MonthlyReconciliation::getPurchaseServices, vo.getPurchaseServices());
  67. }
  68. if (!ObjectUtils.isEmpty(vo.getStartTime())) {
  69. lw.ge(MonthlyReconciliation::getPlanDemandSubTime, vo.getStartTime());
  70. }
  71. if (!ObjectUtils.isEmpty(vo.getStartTime())) {
  72. lw.le(MonthlyReconciliation::getPlanDemandSubTime, vo.getEntTime());
  73. }
  74. // 添加数据权限
  75. List<String> roleKeys = getLoginUser().getUser().getRoles().stream().map(SysRole::getRoleKey).collect(Collectors.toList());
  76. if (roleKeys.contains(Constants.DEMAND_UNIT)) {
  77. // 需求单位
  78. /*(purchase_dept_id = 当前用户deptID) */
  79. lw.eq(MonthlyReconciliation::getPurchaseDeptId, getDeptId());
  80. } else if (roleKeys.contains(Constants.PURCHASING_MANAGEMENT)
  81. || roleKeys.contains(Constants.PURCHASE_SERVICES)) {
  82. // 采购管理部门 或 采购办
  83. /* (purchase_dept_id = 当前用户deptID AND is_excess = 0)
  84. OR
  85. (purchase_dept_id IN (当前用户 子deptId 集合) and AND is_excess = 1)
  86. */
  87. SysDept sysDept = new SysDept();
  88. sysDept.setParentId(getDeptId());
  89. sysDept.setStatus("0");
  90. List<Long> childDeptIds = iSysDeptService.selectDeptList(sysDept)
  91. .stream()
  92. .map(SysDept::getDeptId)
  93. .collect(Collectors.toList());
  94. if(ObjectUtils.isEmpty(childDeptIds)){
  95. lw.and((wrapper) -> {
  96. wrapper.eq(MonthlyReconciliation::getIsExcess, 0);
  97. wrapper.eq(MonthlyReconciliation::getPurchaseDeptId, getDeptId());
  98. });
  99. }else {
  100. lw.and((wrapper) -> {
  101. wrapper.eq(MonthlyReconciliation::getIsExcess, 0);
  102. wrapper.eq(MonthlyReconciliation::getPurchaseDeptId, getDeptId());
  103. })
  104. .or((wrapper) -> {
  105. wrapper.eq(MonthlyReconciliation::getIsExcess, 1);
  106. wrapper.in(MonthlyReconciliation::getPurchaseDeptId, childDeptIds);
  107. });
  108. }
  109. }
  110. // 分页查询
  111. IPage<MonthlyReconciliation> page = monthlyReconciliationService.page(new Page<>(vo.getPageNum(), vo.getPageSize()), lw);
  112. if (!ObjectUtils.isEmpty(page.getRecords()) && page.getRecords().size() > 0) {
  113. page.setRecords(page.getRecords().stream().map(dto -> {
  114. // 采购单位名称
  115. Map<String, Object> stringObjectMap = iSysDeptService.selectDeptById(dto.getPurchaseDeptId());
  116. if (!ObjectUtils.isEmpty(stringObjectMap)) {
  117. SysDeptResponseVo sysDept = (SysDeptResponseVo) stringObjectMap.get("sysDept");
  118. dto.setPurchaseDeptName(sysDept.getDeptName());
  119. }
  120. // 采购服务站名称
  121. List<SysDictData> data = dictTypeService.selectDictDataByType(Constants.PURCHASE_SERVICES);
  122. if (!ObjectUtils.isEmpty(data)) {
  123. List<SysDictData> collect = data.stream()
  124. .filter(d -> d.getDictValue().equals(dto.getPurchaseServices())).collect(Collectors.toList());
  125. if (!ObjectUtils.isEmpty(collect)) {
  126. dto.setPurchaseServicesName(collect.get(0).getDictLabel());
  127. }
  128. }
  129. return dto;
  130. }).collect(Collectors.toList()));
  131. }
  132. return success(page);
  133. }
  134. @ApiOperation(value = "查看月度对表详情")
  135. @PostMapping("/getInfo")
  136. @PreAuthorize("@ss.hasPermi('base:monthly:query')")
  137. @Log(title = ModularConstans.monthly, businessType = BusinessType.QUERY)
  138. public AjaxResult getInfo(@NotEmpty(message = "主键id不能为空")
  139. @RequestParam(value = "id", required = true)
  140. Long id) {
  141. MonthlyReconciliation vo = monthlyReconciliationService.getById(id);
  142. if (!ObjectUtils.isEmpty(vo)) {
  143. LambdaQueryWrapper<SysFileRef> lw = new LambdaQueryWrapper();
  144. lw.eq(SysFileRef::getType, SysFileRefEnum.PLAN_TEMPORARY.getType());
  145. lw.eq(SysFileRef::getRedId, vo.getPlanId());
  146. List<SysFileRef> list = sysFileRefService.list(lw);
  147. if (!ObjectUtils.isEmpty(list)) {
  148. LambdaQueryWrapper<SysFileInfo> l = new LambdaQueryWrapper();
  149. l.in(SysFileInfo::getFileId, list.stream().map(SysFileRef::getFileId).collect(Collectors.toList()));
  150. vo.setFileList(sysFileService.list(l));
  151. }
  152. Map<String, Object> stringObjectMap = iSysDeptService.selectDeptById(vo.getPurchaseDeptId());
  153. if (!ObjectUtils.isEmpty(stringObjectMap)) {
  154. SysDeptResponseVo sysDept = (SysDeptResponseVo) stringObjectMap.get("sysDept");
  155. vo.setPurchaseDeptName(sysDept.getDeptName());
  156. }
  157. // 采购服务站名称
  158. List<SysDictData> data = dictTypeService.selectDictDataByType("purchase_services");
  159. if (!ObjectUtils.isEmpty(data)) {
  160. List<SysDictData> collect = data.stream()
  161. .filter(d -> d.getDictValue().equals(vo.getPurchaseServices())).collect(Collectors.toList());
  162. if (!ObjectUtils.isEmpty(collect)) {
  163. vo.setPurchaseServicesName(collect.get(0).getDictLabel());
  164. }
  165. }
  166. }
  167. return success(vo);
  168. }
  169. }