Forráskód Böngészése

fit:获取流程按钮

zzw 1 hónapja
szülő
commit
9b6ce1a907

+ 186 - 0
assistMg/src/main/java/com/hotent/enterpriseDeclare/controller/CostAuditReviewController.java

@@ -0,0 +1,186 @@
+package com.hotent.enterpriseDeclare.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hotent.base.annotation.ApiGroup;
+import com.hotent.base.constants.ApiGroupConsts;
+import com.hotent.base.model.CommonResult;
+import com.hotent.base.util.StringUtil;
+import com.hotent.constant.NodeConstant;
+import com.hotent.constant.TaskStatusConstant;
+import com.hotent.enterpriseDeclare.req.CostTaskPageReq;
+import com.hotent.enterpriseDeclare.req.CostTaskReviewPageReq;
+import com.hotent.project.manager.CostProjectApprovalManager;
+import com.hotent.project.manager.CostProjectTaskManager;
+import com.hotent.project.manager.CostProjectTaskNodeManager;
+import com.hotent.project.model.CostProjectApproval;
+import com.hotent.project.model.CostProjectTask;
+import com.hotent.project.model.CostProjectTaskNode;
+import com.hotent.sys.persistence.manager.DataDictManager;
+import com.hotent.sys.persistence.model.DataDict;
+import com.hotent.uc.api.model.IUser;
+import com.hotent.uc.util.ContextUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Api(tags = "成本监审任务审核")
+@RestController
+@RequestMapping("/api/enterprise/reviewTask")
+@ApiGroup(group = {ApiGroupConsts.GROUP_COST})
+public class CostAuditReviewController {
+
+    @Autowired
+    private CostProjectTaskManager costProjectTaskManager;
+
+    @Autowired
+    private CostProjectApprovalManager costProjectApprovalManager;
+
+    @Autowired
+    private CostProjectTaskNodeManager costProjectTaskNodeManager;
+
+    @Resource
+    DataDictManager dataDictManager;
+
+    /**
+     * 分页查询待审核任务列表
+     * @param req 分页查询请求参数
+     * @return 待审核任务分页列表
+     */
+    @PostMapping(value = "/pageList")
+    @ApiOperation(value = "分页查询待审核任务列表", httpMethod = "POST", notes = "分页查询待审核任务列表")
+    public CommonResult<IPage<CostProjectTask>> pageList(@RequestBody CostTaskReviewPageReq req) {
+        IPage<CostProjectTask> pageResult = pageListForReviewTask(req);
+        return CommonResult.<IPage<CostProjectTask>>ok().value(pageResult);
+    }
+
+    /**
+     * 审核任务分页查询的具体实现
+     * @param req 分页查询请求参数
+     * @return 分页结果
+     */
+    private IPage<CostProjectTask> pageListForReviewTask(CostTaskReviewPageReq req) {
+        // 获取当前用户
+        IUser currentUser = ContextUtil.getCurrentUser();
+        String currentUserId = currentUser.getUserId();
+
+        // 1. 先查询当前用户有权限的立项(负责人或项目组成员)
+        LambdaQueryWrapper<CostProjectApproval> approvalQueryWrapper = new LambdaQueryWrapper<>();
+        approvalQueryWrapper.eq(CostProjectApproval::getIsDeleted, "0");
+        approvalQueryWrapper.and(wrapper -> wrapper
+                .eq(CostProjectApproval::getLeaderId, currentUserId)
+                .or(projectMembersWrapper -> {
+                    projectMembersWrapper.like(CostProjectApproval::getProjectMembers, currentUserId);
+                })
+        );
+
+        List<CostProjectApproval> accessibleApprovals = costProjectApprovalManager.list(approvalQueryWrapper);
+
+        // 如果没有权限的立项,返回空结果
+        if (accessibleApprovals.isEmpty()) {
+            Page<CostProjectTask> emptyPage = new Page<>(req.getPageNum(), req.getPageSize());
+            return emptyPage;
+        }
+
+        // 提取有权限的立项ID列表
+        List<String> accessibleProjectIds = accessibleApprovals.stream()
+                .map(CostProjectApproval::getProjectId)
+                .distinct()
+                .collect(java.util.stream.Collectors.toList());
+
+        // 2. 构建任务查询条件
+        LambdaQueryWrapper<CostProjectTask> queryWrapper = new LambdaQueryWrapper<>();
+
+        // 查询未删除的记录
+        queryWrapper.eq(CostProjectTask::getIsDeleted, "0");
+
+        // 查询根任务(pid为0)
+        queryWrapper.eq(CostProjectTask::getPid, "0");
+
+        // 只查询当前用户有权限的立项对应的任务
+        queryWrapper.in(CostProjectTask::getProjectId, accessibleProjectIds);
+
+        // 根据请求参数添加查询条件
+        if (StringUtil.isNotEmpty(req.getProjectName())) {
+            queryWrapper.like(CostProjectTask::getProjectName, req.getProjectName());
+        }
+        if (StringUtil.isNotEmpty(req.getStatus())) {
+            queryWrapper.eq(CostProjectTask::getStatus, req.getStatus());
+        }
+        if (StringUtil.isNotEmpty(req.getCurrentNode())) {
+            queryWrapper.eq(CostProjectTask::getCurrentNode, req.getCurrentNode());
+        }
+
+        // 按创建时间倒序排列
+        queryWrapper.orderByDesc(CostProjectTask::getCreateTime);
+
+        // 创建分页对象并执行查询
+        Page<CostProjectTask> page = new Page<>(req.getPageNum(), req.getPageSize());
+        IPage<CostProjectTask> result = costProjectTaskManager.page(page, queryWrapper);
+
+        // 填充根任务的子任务列表和流程信息
+        for (CostProjectTask rootTask : result.getRecords()) {
+            // 查询子任务列表
+            LambdaQueryWrapper<CostProjectTask> childQueryWrapper = new LambdaQueryWrapper<>();
+            childQueryWrapper.eq(CostProjectTask::getPid, rootTask.getId())
+                            .eq(CostProjectTask::getIsDeleted, "0")
+                            .orderByAsc(CostProjectTask::getOrderNum);
+
+            List<CostProjectTask> childTasks = costProjectTaskManager.list(childQueryWrapper);
+            for (CostProjectTask childTask : childTasks) {
+                childTask.setStatus(TaskStatusConstant.getStatusNameByCode(childTask.getStatus()));
+            }
+            rootTask.setChildTasks(childTasks);
+            rootTask.setCurrentNodeName(NodeConstant.getNodeValueByKey(rootTask.getCurrentNode()));
+        }
+
+        return result;
+    }
+
+
+
+    @PostMapping(value = "/getProcessBtn")
+    @ApiOperation(value = "获取流程按钮", httpMethod = "POST", notes = "获取流程按钮")
+    public CommonResult<List<java.util.Map<String, Object>>> getProcessBtn(@RequestBody CostTaskPageReq req) {
+        CostProjectTaskNode one = costProjectTaskNodeManager.getOne(
+                new LambdaQueryWrapper<CostProjectTaskNode>()
+                        .eq(CostProjectTaskNode::getTaskId, req.getTaskId())
+        );
+
+        if (one == null || StringUtil.isEmpty(one.getStatus())) {
+            return CommonResult.<List<java.util.Map<String, Object>>>ok().value(new java.util.ArrayList<>());
+        }
+
+        String status = one.getStatus();
+        String[] split = status.split(",");
+        List<java.util.Map<String, Object>> buttonList = new java.util.ArrayList<>();
+
+        for (String s : split) {
+            if (StringUtil.isNotEmpty(s.trim())) {
+                String key = s.trim();
+                DataDict byDictKey = dataDictManager.getByDictKey("1977549156280991744", key);
+
+                java.util.Map<String, Object> buttonMap = new java.util.HashMap<>();
+                buttonMap.put("key", key);
+
+                if (byDictKey != null && StringUtil.isNotEmpty(byDictKey.getName())) {
+                    buttonMap.put("value", byDictKey.getName());
+                } else {
+                    buttonMap.put("value", key);
+                }
+
+                buttonList.add(buttonMap);
+            }
+        }
+
+        return CommonResult.<List<java.util.Map<String, Object>>>ok().value(buttonList);
+    }
+}

+ 5 - 8
assistMg/src/main/java/com/hotent/enterpriseDeclare/controller/CostAuditTaskController.java

@@ -12,7 +12,6 @@ import com.hotent.baseInfo.manager.AuditedUnitManager;
 import com.hotent.baseInfo.manager.CostDistrictManager;
 import com.hotent.baseInfo.model.AuditedUnit;
 import com.hotent.baseInfo.model.CostDistrict;
-import com.hotent.common.CrudService;
 import com.hotent.constant.NodeConstant;
 import com.hotent.constant.TaskStatusConstant;
 import com.hotent.enterpriseDeclare.req.CostAuditTaskPageReq;
@@ -26,7 +25,6 @@ import com.hotent.project.model.CostProjectTask;
 import com.hotent.project.model.CostProjectTaskNode;
 import com.hotent.project.model.CostProjectTaskProccess;
 import com.hotent.project.resp.CostProjectApprovalDetailResp;
-import com.hotent.resp.PageResp;
 import com.hotent.uc.api.model.IUser;
 import com.hotent.uc.manager.OrgManager;
 import com.hotent.uc.util.ContextUtil;
@@ -38,7 +36,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-@Api(tags = "成本监审任务")
+@Api(tags = "成本监审任务填报")
 @RestController
 @RequestMapping("/api/enterprise/castTask")
 @ApiGroup(group = {ApiGroupConsts.GROUP_COST})
@@ -62,9 +60,6 @@ public class CostAuditTaskController {
     @Autowired
     private OrgManager orgManager;
 
-    // 创建通用服务实例
-    private final CrudService crudService = new CrudService();
-
     /**
      * 分页查询当前用户企业需要填写的监审任务
      * @param req 分页查询请求参数
@@ -72,8 +67,9 @@ public class CostAuditTaskController {
      */
     @PostMapping(value = "/pageList")
     @ApiOperation(value = "分页查询当前用户企业需要填写的监审任务", httpMethod = "POST", notes = "分页查询当前用户企业需要填写的监审任务")
-    public CommonResult<PageResp<CostProjectApproval>> pageList(@RequestBody CostAuditTaskPageReq req) {
-        return CommonResult.<PageResp<CostProjectApproval>>ok().value(crudService.pageQuery(req, this::pageListForAuditTask));
+    public CommonResult<IPage<CostProjectApproval>> pageList(@RequestBody CostAuditTaskPageReq req) {
+        IPage<CostProjectApproval> pageResult = pageListForAuditTask(req);
+        return CommonResult.<IPage<CostProjectApproval>>ok().value(pageResult);
     }
 
     /**
@@ -169,6 +165,7 @@ public class CostAuditTaskController {
             // 设置子任务对象
             record.setUserTask(userTask);
             // 设置主状态为子任务状态
+            record.setStatus(userTask.getStatus());
             record.setStatusName(TaskStatusConstant.getStatusNameByCode(userTask.getStatus()));
             record.setCurrentNode(taskProccess.getCurrentNode());
             record.setCurrentNodeName(NodeConstant.getNodeValueByKey(taskProccess.getCurrentNode())+ "-"+ TaskStatusConstant.getStatusNameByCode(userTask.getStatus()));

+ 1 - 0
assistMg/src/main/java/com/hotent/enterpriseDeclare/manager/impl/CostProjectTaskMaterialDataManagerImpl.java

@@ -28,6 +28,7 @@ public class CostProjectTaskMaterialDataManagerImpl extends BaseManagerImpl<Cost
 	@Transactional
 	public void createOrUpdate(CostProjectTaskMaterialData costProjectTaskMaterialData) {
 		//新建或更新
+
 		this.saveOrUpdate(costProjectTaskMaterialData);
 	}
 }

+ 24 - 0
assistMg/src/main/java/com/hotent/enterpriseDeclare/req/CostTaskReviewPageReq.java

@@ -0,0 +1,24 @@
+package com.hotent.enterpriseDeclare.req;
+
+import com.hotent.req.PageReq;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel("成本监审任务审核分页查询请求参数")
+@Data
+public class CostTaskReviewPageReq extends PageReq {
+    
+    @ApiModelProperty(value = "监审项目名称")
+    private String projectName;
+    
+    @ApiModelProperty(value = "监审对象名称")
+    private String auditedUnitName;
+    
+    @ApiModelProperty(value = "状态")
+    private String status;
+    
+    @ApiModelProperty(value = "当前节点")
+    private String currentNode;
+}
+

+ 13 - 0
assistMg/src/main/java/com/hotent/project/model/CostProjectTask.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
 import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
+import java.util.List;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.fasterxml.jackson.annotation.JsonProperty;
@@ -80,11 +81,19 @@ public class CostProjectTask extends BaseModel<CostProjectTask> {
     @JsonProperty("currentNode")
     private String currentNode;
 
+    @ApiModelProperty(value = "当前节点")
+    @TableField(exist = false)
+    private String currentNodeName;
+
     @ApiModelProperty(value = "状态  100待提交、200审核中、400办结、300中止")
     @TableField("status")
     @JsonProperty("status")
     private String status;
 
+    @ApiModelProperty(value = "状态名称")
+    @TableField(exist = false)
+    private String statusName;
+
     @ApiModelProperty(value = "序号")
     @TableField("order_num")
     @JsonProperty("orderNum")
@@ -115,5 +124,9 @@ public class CostProjectTask extends BaseModel<CostProjectTask> {
     @JsonProperty("updateBy")
     private String updateBy;
 
+    @ApiModelProperty(value = "子任务列表")
+    @TableField(exist = false)
+    @JsonProperty("childTasks")
+    private List<CostProjectTask> childTasks;
 
 }

+ 26 - 29
assistMg/src/main/java/com/hotent/project/model/CostProjectTaskMaterial.java

@@ -25,101 +25,101 @@ public class CostProjectTaskMaterial extends BaseModel<CostProjectTaskMaterial>
     @TableId(value = "id", type = IdType.ASSIGN_ID)
     @JsonProperty("id")
     private String id;
-    
+
     @ApiModelProperty(value = "任务id")
     @TableField("task_id")
     @JsonProperty("taskId")
     private String taskId;
-    
+
     @ApiModelProperty(value = "0未审核 1审核通过 2审核拒绝")
     @TableField("audited_status")
     @JsonProperty("auditedStatus")
     private String auditedStatus;
-    
+
     @ApiModelProperty(value = "审核人")
     @TableField("audited_user_id")
     @JsonProperty("auditedUserId")
     private String auditedUserId;
-    
+
     @ApiModelProperty(value = "创建人")
     @TableField("create_by")
     @JsonProperty("createBy")
     private String createBy;
-    
+
     @ApiModelProperty(value = "关联立项主表ID")
     @TableField("project_id")
     @JsonProperty("projectId")
     private String projectId;
-    
+
     @ApiModelProperty(value = "主键")
     @TableField("catalog_id")
     @JsonProperty("catalogId")
     private String catalogId;
-    
+
     @ApiModelProperty(value = "资料类别")
     @TableField("information_type")
     @JsonProperty("informationType")
     private String informationType;
-    
+
     @ApiModelProperty(value = "资料名称")
     @TableField("information_name")
     @JsonProperty("informationName")
     private String informationName;
-    
+
     @ApiModelProperty(value ="资料类型")
     @TableField(exist = false)
     private String informationTypeName;
-    
+
     @ApiModelProperty(value = "资料要求")
     @TableField("information_require")
     @JsonProperty("informationRequire")
     private String informationRequire;
-    
+
     @ApiModelProperty(value = "资料排序")
     @TableField("order_num")
     @JsonProperty("orderNum")
     private Integer orderNum;
-    
+
     @ApiModelProperty(value = "是否必填")
     @TableField("is_required")
     @JsonProperty("isRequired")
     private String isRequired;
-    
+
     @ApiModelProperty(value = "模板id")
     @TableField("template_id")
     @JsonProperty("templateId")
     private String templateId;
-    
+
     @ApiModelProperty(value = "创建时间")
     @TableField("create_time")
     @JsonProperty("createTime")
     private LocalDateTime createTime;
-    
+
     @ApiModelProperty(value = "更新人")
     @TableField("update_by")
     @JsonProperty("updateBy")
     private String updateBy;
-    
+
     @ApiModelProperty(value = "格式要求 1文档文件、2excel、3预置模板")
     @TableField("format_required")
     @JsonProperty("formatRequired")
     private String formatRequired;
-    
+
     @ApiModelProperty(value = "更新时间")
     @TableField("update_time")
     @JsonProperty("updateTime")
     private LocalDateTime updateTime;
-    
+
     @ApiModelProperty(value = "是否上传 0:未上传,1:已上传")
     @JsonProperty("isUploaded")
     @TableField("is_uploaded")
     private boolean isUploaded;
-    
+
     @ApiModelProperty(value = "文件地址")
     @JsonProperty("fileUrl")
     @TableField("file_url")
     private String fileUrl;
-    
+
     public String getId() {
         return id;
     }
@@ -239,11 +239,11 @@ public class CostProjectTaskMaterial extends BaseModel<CostProjectTaskMaterial>
     public void setUpdateTime(LocalDateTime updateTime) {
         this.updateTime = updateTime;
     }
-    
+
     public boolean getIsUploaded() {
         return isUploaded;
     }
-    
+
     public void setIsUploaded(boolean isUploaded) {
         this.isUploaded = isUploaded;
     }
@@ -252,7 +252,7 @@ public class CostProjectTaskMaterial extends BaseModel<CostProjectTaskMaterial>
     protected Serializable pkVal() {
         return this.id;
     }
-    
+
     public String getFileUrl() {
 		return fileUrl;
 	}
@@ -261,10 +261,7 @@ public class CostProjectTaskMaterial extends BaseModel<CostProjectTaskMaterial>
 		this.fileUrl = fileUrl;
 	}
 
-	public void setUploaded(boolean isUploaded) {
-		this.isUploaded = isUploaded;
-	}
-	
+
 	public String getInformationTypeName() {
 		return informationTypeName;
 	}
@@ -293,7 +290,7 @@ public class CostProjectTaskMaterial extends BaseModel<CostProjectTaskMaterial>
             ", updateBy=" + updateBy +
             ", formatRequired=" + formatRequired +
             ", updateTime=" + updateTime +
-            ", isUploaded=" + isUploaded +  
+            ", isUploaded=" + isUploaded +
         "}";
     }
-}
+}