CostAuditTaskController.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package com.hotent.enterpriseDeclare.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.hotent.base.annotation.ApiGroup;
  6. import com.hotent.base.constants.ApiGroupConsts;
  7. import com.hotent.base.model.CommonResult;
  8. import com.hotent.base.util.StringUtil;
  9. import com.hotent.baseInfo.manager.AuditedUnitManager;
  10. import com.hotent.baseInfo.manager.CostDistrictManager;
  11. import com.hotent.baseInfo.model.AuditedUnit;
  12. import com.hotent.baseInfo.model.CostDistrict;
  13. import com.hotent.constant.NodeConstant;
  14. import com.hotent.constant.TaskStatusConstant;
  15. import com.hotent.enterpriseDeclare.req.CostAuditTaskPageReq;
  16. import com.hotent.enterpriseDeclare.req.CostTaskPageReq;
  17. import com.hotent.project.manager.CostProjectApprovalManager;
  18. import com.hotent.project.manager.CostProjectTaskManager;
  19. import com.hotent.project.manager.CostProjectTaskNodeManager;
  20. import com.hotent.project.manager.CostProjectTaskProccessManager;
  21. import com.hotent.project.model.CostProjectApproval;
  22. import com.hotent.project.model.CostProjectTask;
  23. import com.hotent.project.model.CostProjectTaskNode;
  24. import com.hotent.project.model.CostProjectTaskProccess;
  25. import com.hotent.project.resp.CostProjectApprovalDetailResp;
  26. import com.hotent.uc.api.model.IUser;
  27. import com.hotent.uc.manager.OrgManager;
  28. import com.hotent.uc.util.ContextUtil;
  29. import io.swagger.annotations.Api;
  30. import io.swagger.annotations.ApiOperation;
  31. import io.swagger.annotations.ApiParam;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.web.bind.annotation.*;
  34. import java.util.List;
  35. @Api(tags = "成本监审任务填报")
  36. @RestController
  37. @RequestMapping("/api/enterprise/castTask")
  38. @ApiGroup(group = {ApiGroupConsts.GROUP_COST})
  39. public class CostAuditTaskController {
  40. @Autowired
  41. private AuditedUnitManager auditedUnitManager;
  42. @Autowired
  43. private CostProjectApprovalManager costProjectApprovalManager;
  44. @Autowired
  45. private CostProjectTaskManager costProjectTaskManager;
  46. @Autowired
  47. private CostProjectTaskProccessManager costProjectTaskProccessManager;
  48. @Autowired
  49. private CostDistrictManager costDistrictManager;
  50. @Autowired
  51. private OrgManager orgManager;
  52. /**
  53. * 分页查询当前用户企业需要填写的监审任务
  54. * @param req 分页查询请求参数
  55. * @return 已发布的任务分页列表
  56. */
  57. @PostMapping(value = "/pageList")
  58. @ApiOperation(value = "分页查询当前用户企业需要填写的监审任务", httpMethod = "POST", notes = "分页查询当前用户企业需要填写的监审任务")
  59. public CommonResult<IPage<CostProjectApproval>> pageList(@RequestBody CostAuditTaskPageReq req) {
  60. IPage<CostProjectApproval> pageResult = pageListForAuditTask(req);
  61. return CommonResult.<IPage<CostProjectApproval>>ok().value(pageResult);
  62. }
  63. /**
  64. * 企业端分页查询已发布任务的具体实现
  65. * @param req 分页查询请求参数
  66. * @return 分页结果
  67. */
  68. private IPage<CostProjectApproval> pageListForAuditTask(CostAuditTaskPageReq req) {
  69. // 获取当前用户
  70. IUser currentUser = ContextUtil.getCurrentUser();
  71. AuditedUnit unit = auditedUnitManager.getOne(
  72. new LambdaQueryWrapper<AuditedUnit>()
  73. .eq(AuditedUnit::getUserId, currentUser.getUserId())
  74. .eq(AuditedUnit::getIsDeleted, "0")
  75. );
  76. // 构建查询条件
  77. LambdaQueryWrapper<CostProjectApproval> queryWrapper = new LambdaQueryWrapper<>();
  78. // 查询已发布状态的任务
  79. queryWrapper.eq(CostProjectApproval::getStatus, "2");
  80. // 查询未删除的记录
  81. queryWrapper.eq(CostProjectApproval::getIsDeleted, "0");
  82. // 查询包含当前用户企业ID的记录
  83. queryWrapper.like(CostProjectApproval::getAuditedUnitId, unit.getUnitId());
  84. // 根据请求参数添加查询条件
  85. if (StringUtil.isNotEmpty(req.getProjectName())) {
  86. queryWrapper.like(CostProjectApproval::getProjectName, req.getProjectName());
  87. }
  88. if (StringUtil.isNotEmpty(req.getAreaCode())) {
  89. queryWrapper.eq(CostProjectApproval::getAreaCode, req.getAreaCode());
  90. }
  91. if (StringUtil.isNotEmpty(req.getProjectYear())) {
  92. queryWrapper.eq(CostProjectApproval::getProjectYear, req.getProjectYear());
  93. }
  94. if (StringUtil.isNotEmpty(req.getAuditType())) {
  95. queryWrapper.eq(CostProjectApproval::getAuditType, req.getAuditType());
  96. }
  97. // 按创建时间倒序排列
  98. queryWrapper.orderByDesc(CostProjectApproval::getCreateTime);
  99. // 创建分页对象并执行查询
  100. Page<CostProjectApproval> page = new Page<>(req.getPageNum(), req.getPageSize());
  101. IPage<CostProjectApproval> result = costProjectApprovalManager.page(page, queryWrapper);
  102. // 填充orgName和areaName
  103. List<CostProjectApproval> records = result.getRecords();
  104. for (CostProjectApproval record : records) {
  105. // 设置监审主体
  106. if (StringUtil.isNotEmpty(record.getOrgId())) {
  107. String[] orgIds = record.getOrgId().split(",");
  108. StringBuilder orgNames = new StringBuilder();
  109. for (int i = 0; i < orgIds.length; i++) {
  110. String orgId = orgIds[i].trim();
  111. if (StringUtil.isNotEmpty(orgId)) {
  112. if (i > 0) {
  113. orgNames.append(",");
  114. }
  115. orgNames.append(orgManager.get(orgId).getName());
  116. }
  117. }
  118. record.setOrgName(orgNames.toString());
  119. }
  120. // 设置立项地区
  121. if (StringUtil.isNotEmpty(record.getAreaCode())) {
  122. CostDistrict district = costDistrictManager.getOne(
  123. new LambdaQueryWrapper<CostDistrict>()
  124. .eq(CostDistrict::getCode, record.getAreaCode())
  125. );
  126. record.setAreaName(district != null ? district.getName() : "山西省");
  127. }
  128. // 查询当前用户对应的子任务
  129. CostProjectTask userTask = costProjectTaskManager.getOne(
  130. new LambdaQueryWrapper<CostProjectTask>()
  131. .eq(CostProjectTask::getProjectId, record.getProjectId())
  132. .ne(CostProjectTask::getPid,0)
  133. .eq(CostProjectTask::getAuditedUnitId, unit.getUnitId())
  134. .eq(CostProjectTask::getIsDeleted, 0)
  135. );
  136. CostProjectTaskProccess taskProccess = costProjectTaskProccessManager.getOne(
  137. new LambdaQueryWrapper<CostProjectTaskProccess>()
  138. .eq(CostProjectTaskProccess::getTaskId, userTask.getId())
  139. );
  140. // 设置子任务对象
  141. record.setUserTask(userTask);
  142. // 设置主状态为子任务状态
  143. record.setStatus(userTask.getStatus());
  144. record.setStatusName(TaskStatusConstant.getStatusNameByCode(userTask.getStatus()));
  145. record.setCurrentNode(taskProccess.getCurrentNode());
  146. record.setCurrentNodeName(NodeConstant.getNodeValueByKey(taskProccess.getCurrentNode())+ "-"+ TaskStatusConstant.getStatusNameByCode(userTask.getStatus()));
  147. }
  148. return result;
  149. }
  150. @GetMapping(value="/getDetail")
  151. @ApiOperation(value="任务立项详情",httpMethod = "GET",notes = "任务立项详情")
  152. public CommonResult<CostProjectApprovalDetailResp> getDetail(@ApiParam(name="id",value="业务对象主键", required = true)@RequestParam(required=true) String id) throws Exception{
  153. return CommonResult.<CostProjectApprovalDetailResp>ok().value(costProjectApprovalManager.getDetail(id));
  154. }
  155. @PostMapping(value="/save")
  156. @ApiOperation(value="提交任务填报",httpMethod = "POST",notes = "提交任务填报")
  157. public CommonResult<String> save(@RequestBody CostTaskPageReq costTaskPageReq) throws Exception{
  158. return CommonResult.<String>ok().value(costProjectTaskManager.saveTask(costTaskPageReq));
  159. }
  160. }