ソースを参照

fit:集体审议-补充资料

zzw 1 ヶ月 前
コミット
5a6fbc4162

+ 47 - 0
assistMg/src/main/java/com/hotent/enterpriseDeclare/controller/CostAuditTaskController.java

@@ -32,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Api(tags = "成本监审任务填报")
 @RestController
@@ -81,4 +82,50 @@ public class CostAuditTaskController {
     public CommonResult<String> yjsave(@RequestBody CostProjectTaskPreliminaryOpinion costProjectTaskPreliminaryOpinion) throws Exception{
         return CommonResult.<String>ok().value(costProjectTaskManager.saveYjTask(costProjectTaskPreliminaryOpinion));
     }
+
+    /**
+     * 获取子任务的所有监审单位
+     * @param taskId 主任务ID
+     * @return 监审单位列表
+     */
+    @GetMapping(value = "/getChildTaskUnits")
+    @ApiOperation(value = "获取子任务的所有监审单位", httpMethod = "GET", notes = "根据主任务ID查询所有子任务,获取子任务的监审单位字段,然后查询单位表返回所有单位")
+    public CommonResult<List<AuditedUnit>> getChildTaskUnits(
+            @ApiParam(name = "taskId", value = "主任务ID", required = true)
+            @RequestParam(required = true) String taskId) {
+        
+        // 1. 查询该主任务下的所有子任务(pid等于主任务ID)
+        LambdaQueryWrapper<CostProjectTask> taskQueryWrapper = new LambdaQueryWrapper<>();
+        taskQueryWrapper.eq(CostProjectTask::getPid, taskId)
+                .eq(CostProjectTask::getIsDeleted, "0")
+                .isNotNull(CostProjectTask::getAuditedUnitId)
+                .ne(CostProjectTask::getAuditedUnitId, "");
+        
+        List<CostProjectTask> childTasks = costProjectTaskManager.list(taskQueryWrapper);
+        
+        // 如果没有子任务,返回空列表
+        if (childTasks == null || childTasks.isEmpty()) {
+            return CommonResult.<List<AuditedUnit>>ok().value(java.util.Collections.emptyList());
+        }
+        
+        // 2. 提取所有不重复的监审单位ID
+        List<String> auditedUnitIds = childTasks.stream()
+                .map(CostProjectTask::getAuditedUnitId)
+                .filter(StringUtil::isNotEmpty)
+                .distinct()
+                .collect(Collectors.toList());
+        
+        if (auditedUnitIds.isEmpty()) {
+            return CommonResult.<List<AuditedUnit>>ok().value(java.util.Collections.emptyList());
+        }
+        
+        // 3. 根据单位ID列表查询单位表
+        LambdaQueryWrapper<AuditedUnit> unitQueryWrapper = new LambdaQueryWrapper<>();
+        unitQueryWrapper.in(AuditedUnit::getUnitId, auditedUnitIds)
+                .eq(AuditedUnit::getIsDeleted, "0");
+        
+        List<AuditedUnit> units = auditedUnitManager.list(unitQueryWrapper);
+        
+        return CommonResult.<List<AuditedUnit>>ok().value(units);
+    }
 }

+ 3 - 0
assistMg/src/main/java/com/hotent/enterpriseDeclare/req/CostTaskPageReq.java

@@ -24,4 +24,7 @@ public class CostTaskPageReq {
 
     @ApiModelProperty(value = "意见")
     private String content;
+
+    @ApiModelProperty(value = "子任务ID(集体审议节点补充材料时,指定具体单位对应的子任务)")
+    private String childTaskId;
 }

+ 42 - 11
assistMg/src/main/java/com/hotent/project/manager/impl/CostProjectTaskManagerImpl.java

@@ -437,19 +437,50 @@ public class CostProjectTaskManagerImpl extends BaseManagerImpl<CostProjectTaskD
      * 补充材料,发送通知+修改任务状态
      */
     private String supplementMaterial(CostProjectTask task, CostTaskPageReq req) {
-
-        // 更新任务状态为
-        task.setStatus(TaskStatusConstant.BCCL.getStatusCode());
-        costProjectTaskManager.updateById(task);
-
-        // 通知内容组装
-        String title = NodeConstant.getNodeValueByKey(task.getCurrentNode())+TaskStatusConstant.BCCL.getStatusName();
-        String enterpriseId = task.getAuditedUnitId() == null ? "" : task.getAuditedUnitId();
+        String currentNode = task.getCurrentNode();
+        String title = NodeConstant.getNodeValueByKey(currentNode) + TaskStatusConstant.BCCL.getStatusName();
         String noticeSource = "系统";
-        String sendTarget = task.getCreateBy() == null ? "" : task.getCreateBy();
-        costNoticeManager.sendNotice(task.getProjectId(), "1", title, req.getContent(), enterpriseId, noticeSource, sendTarget);
 
-        return title;
+        switch (currentNode) {
+            // 集体审议节点:支持指定多个子任务补充材料
+            case "jtsy":
+                if (StringUtil.isNotEmpty(req.getChildTaskId())) {
+                    String[] childTaskIdArray = req.getChildTaskId().split(",");
+                    List<String> unitNames = new java.util.ArrayList<>();
+
+                    for (String childTaskId : childTaskIdArray) {
+                        CostProjectTask childTask = costProjectTaskManager.getById(childTaskId);
+                        if (childTask == null) {
+                            throw new RuntimeException("子任务不存在:" + childTaskId);
+                        }
+                        // 验证子任务是否属于当前主任务
+                        if (!childTask.getPid().equals(task.getId())) {
+                            throw new RuntimeException("子任务不属于当前主任务:" + childTaskId);
+                        }
+                        // 更新子任务状态为补充材料
+                        childTask.setStatus(TaskStatusConstant.BCCL.getStatusCode());
+                        costProjectTaskManager.updateById(childTask);
+                        // 通知内容组装(针对子任务对应的单位)
+                        String childEnterpriseId = childTask.getAuditedUnitId() == null ? "" : childTask.getAuditedUnitId();
+                        String childSendTarget = childTask.getCreateBy() == null ? "" : childTask.getCreateBy();
+                        costNoticeManager.sendNotice(task.getProjectId(), "1", title, req.getContent(), childEnterpriseId, noticeSource, childSendTarget);
+                        // 收集单位名称
+                        if (StringUtil.isNotEmpty(childTask.getAuditedUnitName())) {
+                            unitNames.add(childTask.getAuditedUnitName());
+                        }
+                    }
+                    // 返回结果,包含所有单位名称
+                    String unitNamesStr = unitNames.isEmpty() ? "" : String.join("、", unitNames);
+                    return title + "(单位:" + unitNamesStr + ")";
+                }
+            default:
+                task.setStatus(TaskStatusConstant.BCCL.getStatusCode());
+                costProjectTaskManager.updateById(task);
+                String enterpriseId = task.getAuditedUnitId() == null ? "" : task.getAuditedUnitId();
+                String sendTarget = task.getCreateBy() == null ? "" : task.getCreateBy();
+                costNoticeManager.sendNotice(task.getProjectId(), "1", title, req.getContent(), enterpriseId, noticeSource, sendTarget);
+                return title;
+        }
     }
 
     /**