huangjn před 2 roky
rodič
revize
8531b0dc31

+ 7 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/SaveUserInfoByProjectClient.java

@@ -1,8 +1,11 @@
 package org.springblade.manager.feign;
 
+import com.alibaba.fastjson.JSONObject;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
@@ -17,6 +20,10 @@ public interface SaveUserInfoByProjectClient {
      */
     String SEARCH_USER_INFO_AND_PROJECT = "/api/manager/searchUserInfoAndProject";
     String SEARCH_USER_INFO_AND_PROJECT2 = "/api/manager/searchUserInfoAndProject2";
+    String QUERY_USER_CONTRACT_ROLE = "/api/manager/queryUserContractRole";
+
+    @PostMapping(QUERY_USER_CONTRACT_ROLE)
+    List<JSONObject> queryUserContractRole(@RequestBody List<Long> userIds, @RequestParam String contractId);
 
     /**
      * 获取用户引用项目合同角色信息

+ 29 - 5
blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java

@@ -1,5 +1,6 @@
 package org.springblade.business.controller;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
@@ -15,9 +16,8 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.SignPfxFile;
-import org.springblade.manager.feign.ContractClient;
-import org.springblade.manager.feign.EVisaConfigClient;
-import org.springblade.manager.feign.SignPfxClient;
+import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.feign.*;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -37,6 +37,10 @@ public class EVisaTaskCheckController {
 
     private final SignPfxClient signPfxClient;
 
+    private final SaveUserInfoByProjectClient saveUserInfoByProjectClient;
+
+    private final WbsTreePrivateClient wbsTreePrivateClient;
+
     /**
      * 检查当前审批人是否存在证书
      */
@@ -70,7 +74,9 @@ public class EVisaTaskCheckController {
     @ApiOperationSupport(order = 2)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "flowId", value = "所选的流程ID", required = true),
-            @ApiImplicitParam(name = "privatePKeyId", value = "表单列表中的isTypePrivatePid字段,集合形式", required = true)
+            @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true),
+            @ApiImplicitParam(name = "privatePKeyId", value = "表单列表中的isTypePrivatePid字段,集合形式"),
+            @ApiImplicitParam(name = "theLogPrimaryKeyId", value = "日志左侧所选的填报类型ID")
     })
     public R<Boolean> checkFlowUserIsEVisaPermissions(@RequestBody JSONObject json){
         if(json.containsKey("flowId")){
@@ -79,9 +85,27 @@ public class EVisaTaskCheckController {
 
             //获取这些人当前合同段下的权限
             List<Long> linkUserList = flowLink.stream().map(FixedFlowLink::getFixedFlowLinkUser).distinct().collect(Collectors.toList());
+            List<JSONObject> userRoleList = this.saveUserInfoByProjectClient.queryUserContractRole(linkUserList, json.getString("contractId"));
 
             //获取对应表格的所有电签配置
-            List<JSONObject> jsonList = this.eVisaConfigClient.queryEVisaConfigAllByTableIds(json.getJSONArray("privatePKeyId").toJavaList(String.class));
+            List<JSONObject> jsonList;
+            if(json.containsKey("theLogPrimaryKeyId") && StringUtils.isNotEmpty(json.getString("theLogPrimaryKeyId"))){
+                //日志,需要先获取对应的表格
+                List<WbsTreePrivate> privateTreeList = this.wbsTreePrivateClient.queryExcelTableByParentId(this.wbsTreePrivateClient.queryByPKeyIds(Func.toStrList(json.getString("theLogPrimaryKeyId"))).get(0));
+                if(privateTreeList != null && privateTreeList.size() > 0){
+                    List<Long> pKeyList = privateTreeList.stream().map(WbsTreePrivate::getPKeyId).distinct().collect(Collectors.toList());
+                    jsonList = this.eVisaConfigClient.queryEVisaConfigAllByTableIds(JSONArray.parseArray(JSONObject.toJSONString(pKeyList), String.class));
+                } else {
+                    jsonList = null;
+                }
+
+            } else {
+                jsonList = this.eVisaConfigClient.queryEVisaConfigAllByTableIds(json.getJSONArray("privatePKeyId").toJavaList(String.class));
+            }
+
+            if(jsonList == null){
+                return R.data(300, false, "当前表格均未配置电签关键字,请联系管理员处理");
+            }
 
         }
 

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/SaveUserInfoByProjectClientImpl.java

@@ -1,5 +1,7 @@
 package org.springblade.manager.feign;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
@@ -15,6 +17,15 @@ public class SaveUserInfoByProjectClientImpl implements SaveUserInfoByProjectCli
 
     private final SaveUserInfoByProjectService saveUserInfoByProjectService;
 
+    @Override
+    public List<JSONObject> queryUserContractRole(List<Long> userIds, String contractId) {
+        List<SaveUserInfoByProjectDTO> userContractRole = this.saveUserInfoByProjectService.list(Wrappers.<SaveUserInfoByProjectDTO>lambdaQuery().in(SaveUserInfoByProjectDTO::getUserId, userIds).eq(SaveUserInfoByProjectDTO::getContractId, contractId));
+        if(userContractRole != null && userContractRole.size() > 0){
+            return JSONArray.parseArray(JSONObject.toJSONString(userContractRole), JSONObject.class);
+        }
+        return null;
+    }
+
     @Override
     public List<SaveUserInfoByProjectDTO> searchUserInfoAndProject(String userId, String roleId) {
         return saveUserInfoByProjectService.list(