Browse Source

电签相关

huangjn 2 years ago
parent
commit
1b0826ddd2

+ 31 - 20
.idea/compiler.xml

@@ -7,38 +7,40 @@
         <sourceOutputDir name="target/generated-sources/annotations" />
         <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
         <outputRelativeToContentRoot value="true" />
-        <module name="blade-user" />
-        <module name="blade-xxljob" />
-        <module name="blade-manager-api" />
-        <module name="blade-turbine" />
-        <module name="blade-swagger" />
         <module name="blade-admin" />
-        <module name="blade-system" />
+        <module name="blade-auth" />
+        <module name="blade-business" />
+        <module name="blade-business-api" />
         <module name="blade-common" />
-        <module name="blade-manager" />
-        <module name="blade-flow" />
-        <module name="blade-desk-api" />
-        <module name="blade-xxljob-admin" />
         <module name="blade-desk" />
-        <module name="blade-flow-api" />
-        <module name="blade-business" />
         <module name="blade-desk-api" />
-        <module name="blade-report" />
-        <module name="blade-system-api" />
-        <module name="blade-auth" />
-        <module name="blade-scope-api" />
-        <module name="blade-log" />
+        <module name="blade-develop" />
+        <module name="blade-dict-api" />
+        <module name="blade-flow" />
+        <module name="blade-flow-api" />
         <module name="blade-gateway" />
-        <module name="blade-user-api" />
+        <module name="blade-log" />
+        <module name="blade-manager" />
+        <module name="blade-manager-api" />
+        <module name="blade-report" />
         <module name="blade-resource" />
-        <module name="blade-dict-api" />
-        <module name="blade-business-api" />
         <module name="blade-resource-api" />
+        <module name="blade-scope-api" />
+        <module name="blade-swagger" />
+        <module name="blade-system" />
+        <module name="blade-system-api" />
+        <module name="blade-turbine" />
+        <module name="blade-user" />
+        <module name="blade-user-api" />
+        <module name="blade-xxljob" />
+        <module name="blade-xxljob-admin" />
       </profile>
     </annotationProcessing>
     <bytecodeTargetLevel target="8">
       <module name="blade-admin" target="1.8" />
       <module name="blade-auth" target="1.8" />
+      <module name="blade-business" target="1.8" />
+      <module name="blade-business-api" target="1.8" />
       <module name="blade-common" target="1.8" />
       <module name="blade-desk" target="1.8" />
       <module name="blade-desk-api" target="1.8" />
@@ -75,6 +77,8 @@
     <option name="ADDITIONAL_OPTIONS_OVERRIDE">
       <module name="blade-admin" options="-parameters" />
       <module name="blade-auth" options="-parameters" />
+      <module name="blade-business" options="-parameters" />
+      <module name="blade-business-api" options="-parameters" />
       <module name="blade-common" options="-parameters" />
       <module name="blade-desk" options="-parameters" />
       <module name="blade-desk-api" options="-parameters" />
@@ -86,10 +90,16 @@
       <module name="blade-log" options="-parameters" />
       <module name="blade-manager" options="-parameters" />
       <module name="blade-manager-api" options="-parameters" />
+      <module name="blade-ops" options="-parameters" />
+      <module name="blade-ops-api" options="-parameters" />
+      <module name="blade-plugin" options="-parameters" />
+      <module name="blade-plugin-api" options="-parameters" />
       <module name="blade-report" options="-parameters" />
       <module name="blade-resource" options="-parameters" />
       <module name="blade-resource-api" options="-parameters" />
       <module name="blade-scope-api" options="-parameters" />
+      <module name="blade-service" options="-parameters" />
+      <module name="blade-service-api" options="-parameters" />
       <module name="blade-swagger" options="-parameters" />
       <module name="blade-system" options="-parameters" />
       <module name="blade-system-api" options="-parameters" />
@@ -98,6 +108,7 @@
       <module name="blade-user-api" options="-parameters" />
       <module name="blade-xxljob" options="-parameters" />
       <module name="blade-xxljob-admin" options="-parameters" />
+      <module name="bladex" options="-parameters" />
     </option>
   </component>
 </project>

+ 34 - 0
.idea/encodings.xml

@@ -1,46 +1,80 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="Encoding">
+    <file url="file://$PROJECT_DIR$" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-auth" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-auth/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-auth/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-common" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-common/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-common/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-gateway" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-gateway/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-gateway/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops-api" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops-api/blade-flow-api" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops-api/blade-flow-api/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops-api/blade-resource-api" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops-api/blade-resource-api/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops/blade-admin" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-admin/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-admin/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops/blade-develop" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-develop/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-develop/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops/blade-flow" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-flow/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-flow/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops/blade-log" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-log/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-log/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops/blade-report" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-report/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-report/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops/blade-resource" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-resource/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-resource/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops/blade-swagger" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-swagger/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-swagger/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops/blade-turbine" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-turbine/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-turbine/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops/blade-xxljob" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-ops/blade-xxljob-admin" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-xxljob-admin/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-xxljob-admin/src/main/resources" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-xxljob/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-ops/blade-xxljob/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-plugin" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-plugin-api" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service-api" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service-api/blade-business-api" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service-api/blade-desk-api" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service-api/blade-desk-api/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service-api/blade-dict-api" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service-api/blade-dict-api/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service-api/blade-manager-api" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service-api/blade-manager-api/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service-api/blade-scope-api" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service-api/blade-scope-api/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service-api/blade-system-api" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service-api/blade-system-api/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service-api/blade-user-api" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service-api/blade-user-api/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service/blade-business" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service/blade-desk" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service/blade-desk/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service/blade-desk/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service/blade-manager" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service/blade-manager/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service/blade-manager/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service/blade-system" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service/blade-system/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service/blade-system/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/blade-service/blade-user" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service/blade-user/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/blade-service/blade-user/src/main/resources" charset="UTF-8" />
   </component>

+ 1 - 1
.idea/misc.xml

@@ -9,7 +9,7 @@
       </list>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_13" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>

+ 2 - 0
.idea/modules.xml

@@ -4,6 +4,8 @@
     <modules>
       <module fileurl="file://$PROJECT_DIR$/blade-ops/blade-admin/blade-admin.iml" filepath="$PROJECT_DIR$/blade-ops/blade-admin/blade-admin.iml" />
       <module fileurl="file://$PROJECT_DIR$/blade-auth/blade-auth.iml" filepath="$PROJECT_DIR$/blade-auth/blade-auth.iml" />
+      <module fileurl="file://$PROJECT_DIR$/blade-service/blade-business/blade-business.iml" filepath="$PROJECT_DIR$/blade-service/blade-business/blade-business.iml" />
+      <module fileurl="file://$PROJECT_DIR$/blade-service-api/blade-business-api/blade-business-api.iml" filepath="$PROJECT_DIR$/blade-service-api/blade-business-api/blade-business-api.iml" />
       <module fileurl="file://$PROJECT_DIR$/blade-common/blade-common.iml" filepath="$PROJECT_DIR$/blade-common/blade-common.iml" />
       <module fileurl="file://$PROJECT_DIR$/blade-service/blade-desk/blade-desk.iml" filepath="$PROJECT_DIR$/blade-service/blade-desk/blade-desk.iml" />
       <module fileurl="file://$PROJECT_DIR$/blade-service-api/blade-desk-api/blade-desk-api.iml" filepath="$PROJECT_DIR$/blade-service-api/blade-desk-api/blade-desk-api.iml" />

+ 4 - 4
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/SignPfxFile.java

@@ -84,10 +84,10 @@ public class SignPfxFile extends BaseEntity {
     @ApiModelProperty("是否注册,0未注册、1已注册")
     private Integer isRegister;
 
-    @ApiModelProperty("项目ID")
-    private Long projectId;
+    @ApiModelProperty("企业统一社会信用代码")
+    private String enterpriseUnifiedCode;
 
-    @ApiModelProperty("合同段ID")
-    private Long contractId;
+    @ApiModelProperty("规则:项目ID-合同段ID-角色ID,项目ID-合同段ID-角色ID")
+    private String projectContractRole;
 
 }

+ 7 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/SignPfxFileVO.java

@@ -17,10 +17,14 @@
 package org.springblade.manager.vo;
 
 import io.swagger.annotations.ApiModelProperty;
+import org.springblade.manager.entity.SignPfxDeputy;
 import org.springblade.manager.entity.SignPfxFile;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 个人/企业证书信息表视图实体类
  *
@@ -44,4 +48,7 @@ public class SignPfxFileVO extends SignPfxFile {
 	@ApiModelProperty("是否注册,true为已注册")
 	private Boolean isRegisterBoolean;
 
+	@ApiModelProperty("项目合同段信息")
+	private List<SignPfxDeputy> signPfxDeputieList;
+
 }

+ 4 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/BusinessUserOpinionController.java

@@ -115,8 +115,11 @@ public class BusinessUserOpinionController {
             @ApiImplicitParam(name = "current", value = "当前页", required = true),
             @ApiImplicitParam(name = "size", value = "当前页显示数量", required = true)
     })
-    public R<IPage<BusinessUserOpinionVO>> queryBusinessUserOpinionList(@RequestBody Query query){
+    public R<IPage<BusinessUserOpinionVO>> queryBusinessUserOpinionList(@RequestParam Integer current, @RequestParam Integer size){
         BladeUser user = AuthUtil.getUser();
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
         //获取推送给当前用户的工单信息
         return R.data(this.userOpinionService.queryBusinessUserOpinionList(String.valueOf(user.getUserId()),query));
     }

+ 0 - 9
blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionFlowController.java

@@ -32,10 +32,6 @@ import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
-import org.springblade.manager.feign.ProjectAssignmentUserClient;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springblade.business.entity.UserOpinionFlow;
@@ -45,7 +41,6 @@ import org.springblade.core.boot.ctrl.BladeController;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Random;
 
 /**
  * 用户意见处理流程表 控制器
@@ -63,10 +58,6 @@ public class UserOpinionFlowController extends BladeController {
 
 	private final IUserOpinionService userOpinionService;
 
-	private final ProjectAssignmentUserClient projectAssignmentUserClient;
-
-	private final IUserClient userClient;
-
 	/**
 	 * 统合接口
 	 * @param oldEndFlow 流程图的最后一个节点ID

+ 81 - 21
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/SignPfxFileController.java

@@ -24,6 +24,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
@@ -31,17 +32,16 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ProjectInfo;
-import org.springblade.manager.service.IContractInfoService;
-import org.springblade.manager.service.IProjectInfoService;
-import org.springblade.manager.service.SaveUserInfoByProjectService;
+import org.springblade.manager.entity.SignPfxDeputy;
+import org.springblade.manager.service.*;
 import org.springblade.manager.vo.*;
+import org.springblade.system.entity.Role;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.vo.RoleVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.entity.SignPfxFile;
-import org.springblade.manager.service.ISignPfxFileService;
 import org.springblade.core.boot.ctrl.BladeController;
 
 import java.util.ArrayList;
@@ -71,6 +71,8 @@ public class SignPfxFileController extends BladeController {
 
 	private final ISysClient sysClient;
 
+	private final ISignPfxDeputyService signPfxDeputyService;
+
 	/**
 	 * 获取当前项目及其所有合同段
 	 * @return 项目及合同段列表
@@ -127,14 +129,14 @@ public class SignPfxFileController extends BladeController {
 		//返回结果
 		List<RoleSignPfxUserVO> result = new ArrayList<>();
 		//企业章
-		RoleSignPfxUserVO pfxUnitVo = new RoleSignPfxUserVO();
-		pfxUnitVo.setRoleId(1L);
-		pfxUnitVo.setRoleName("单位证书");
-		List<SignPfxFile> unitPfxList = this.signPfxFileService.list(Wrappers.<SignPfxFile>lambdaQuery().eq(SignPfxFile::getContractId, contractId).eq(SignPfxFile::getIsDeleted, 0));
-		if(unitPfxList != null && unitPfxList.size() > 0){
-			pfxUnitVo.setSignPfxFileList(unitPfxList);
-		}
-		result.add(pfxUnitVo);
+//		RoleSignPfxUserVO pfxUnitVo = new RoleSignPfxUserVO();
+//		pfxUnitVo.setRoleId(1L);
+//		pfxUnitVo.setRoleName("单位证书");
+//		List<SignPfxFile> unitPfxList = this.signPfxFileService.list(Wrappers.<SignPfxFile>lambdaQuery().eq(SignPfxFile::getContractId, contractId).eq(SignPfxFile::getIsDeleted, 0));
+//		if(unitPfxList != null && unitPfxList.size() > 0){
+//			pfxUnitVo.setSignPfxFileList(unitPfxList);
+//		}
+//		result.add(pfxUnitVo);
 
 		//循环角色,对项目人员进行分组
 		for(RoleVO vo : roleVOS){
@@ -193,11 +195,16 @@ public class SignPfxFileController extends BladeController {
 	/**
 	 * 证书管理分页
 	 */
-	@PostMapping("/singPfxManagementPage")
+	@GetMapping("/singPfxManagementPage")
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "证书管理分页")
 	@ApiImplicitParam(name = "vo", value = "必传current、size, 选传projectId")
-	public R<IPage<SingPfxManagementVO>> singPfxManagementPage(SingPfxManagementVO vo){
+	public R<IPage<SingPfxManagementVO>> singPfxManagementPage(@RequestParam Integer current, @RequestParam Integer size, @RequestParam Long contractId){
+		SingPfxManagementVO vo = new SingPfxManagementVO();
+		vo.setCurrent(current);
+		vo.setSize(size);
+		vo.setContractId(contractId);
+
 		Query query = new Query();
 		query.setSize(vo.getSize());
 		query.setCurrent(vo.getCurrent());
@@ -212,8 +219,15 @@ public class SignPfxFileController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "获取详情数据")
 	@ApiImplicitParam(name = "id", value = "列表数据主键ID", required = true)
-	public R<SignPfxFile> getById(Long id){
-		return R.data(this.signPfxFileService.getById(id));
+	public R<SignPfxFileVO> getById(Long id){
+		//查询数据
+		SignPfxFile data = this.signPfxFileService.getById(id);
+		//实体转换
+		SignPfxFileVO vo = JSONObject.parseObject(JSONObject.toJSONString(data), SignPfxFileVO.class);
+		List<SignPfxDeputy> deputies = this.signPfxDeputyService.list(Wrappers.<SignPfxDeputy>lambdaQuery().eq(SignPfxDeputy::getSignPfxFileId, id).eq(SignPfxDeputy::getIsDeleted, 0));
+		vo.setSignPfxDeputieList(deputies);
+
+		return R.data(vo);
 	}
 
 	/**
@@ -253,8 +267,13 @@ public class SignPfxFileController extends BladeController {
 	@PostMapping("/save")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "新增", notes = "传入signPfxFile")
-	public R save(@Valid @RequestBody SignPfxFile signPfxFile) {
-		return R.status(this.signPfxFileService.save(signPfxFile));
+	public R save(@Valid @RequestBody SignPfxFileVO vo) {
+
+		if(new Integer("2").equals(vo.getCertificateType())){
+			this.saveSignPfxDeputy(vo);
+		}
+
+		return R.status(this.signPfxFileService.save(vo));
 	}
 
 	/**
@@ -263,10 +282,51 @@ public class SignPfxFileController extends BladeController {
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "修改", notes = "传入signPfxFile")
-	public R update(@Valid @RequestBody SignPfxFile signPfxFile) {
-		return R.status(this.signPfxFileService.updateById(signPfxFile));
+	public R update(@Valid @RequestBody SignPfxFileVO vo) {
+		if(new Integer("2").equals(vo.getCertificateType())){
+			//查询旧数据
+			SignPfxFile oldData = this.signPfxFileService.getById(vo.getId());
+			if(!vo.getProjectContractRole().trim().equals(oldData.getProjectContractRole().trim())){
+				//如果不匹配,先删除
+				this.signPfxDeputyService.update(Wrappers.<SignPfxDeputy>lambdaUpdate().set(SignPfxDeputy::getIsDeleted, 1).eq(SignPfxDeputy::getSignPfxFileId, vo.getId()));
+				//再重新生成
+				this.saveSignPfxDeputy(vo);
+			}
+		}
+		return R.status(this.signPfxFileService.updateById(vo));
 	}
-	
+
+	private void saveSignPfxDeputy(SignPfxFileVO vo){
+		String[] projectContractRoles = vo.getProjectContractRole().trim().split(",");
+		//从表数据
+		List<SignPfxDeputy> insertList = new ArrayList<>();
+		vo.setId(SnowFlakeUtil.getId());
+		for(String projectContractRole : projectContractRoles){
+			String[] array = projectContractRole.split("-");
+			//查询项目信息
+			ProjectInfo projectInfo = this.projectInfoService.getById(array[0]);
+			//获取合同段ID
+			ContractInfo contractInfo = this.contractInfoService.getById(array[1]);
+			//获取角色
+			Role role = this.sysClient.getRole(Long.parseLong(array[2])).getData();
+
+			//新增从表数据
+			SignPfxDeputy signPfxDeputy = new SignPfxDeputy();
+			signPfxDeputy.setSignPfxFileId(vo.getId());
+			signPfxDeputy.setProjectId(projectInfo.getId());
+			signPfxDeputy.setProjectName(projectInfo.getProjectName());
+			signPfxDeputy.setContractId(contractInfo.getId());
+			signPfxDeputy.setContractName(contractInfo.getContractName());
+			signPfxDeputy.setRoleId(role.getId());
+			signPfxDeputy.setRoleName(role.getRoleName());
+
+			insertList.add(signPfxDeputy);
+		}
+		if(insertList.size() > 0){
+			this.signPfxDeputyService.saveBatch(insertList);
+		}
+	}
+
 	/**
 	 * 删除 个人/企业证书信息表
 	 */

+ 27 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectInfoMapper.xml

@@ -45,8 +45,33 @@
         select
             pi.id,
             pi.project_name,
-            count((select id from m_sign_pfx_file where is_deleted = 0 and project_id = pi.id and certificate_type = 1)) AS personalCount,
-            count((select id from m_sign_pfx_file where is_deleted = 0 and project_id = pi.id and certificate_type = 2)) AS enterpriseCount,
+            count(
+              (
+                select
+                  spf.id
+                from
+                  m_sign_pfx_file AS spf
+                left join m_project_assignment_user AS pau on spf.certificate_user_id = pau.user_id
+                where
+                  spf.is_deleted = 0
+                and pau.is_deleted = 0
+                and pau.project_id = pi.id
+                and spf.certificate_type = 1
+              )
+            ) AS personalCount,
+            count(
+              (
+                select
+                  spf.id
+                from m_sign_pfx_file AS spf
+                left join m_sign_pfx_deputy AS spd ON spf.id = spd.sign_pfx_file_id
+                where
+                  spf.is_deleted = 0
+                and spd.is_deleted = 0
+                and spd.project_id = pi.id
+                and spf.certificate_type = 2
+              )
+            ) AS enterpriseCount,
             (select id from m_contract_info where is_deleted = 0 and p_id = pi.id limit 1) AS contractId
         from m_project_info AS pi where pi.is_deleted = 0
         <if test="vo.projectId != null">

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/SignPfxFileMapper.xml

@@ -18,11 +18,11 @@
         <result column="certificate_number" property="certificateNumber"/>
         <result column="certificate_password" property="certificatePassword"/>
         <result column="certificate_file_url" property="certificateFileUrl"/>
+        <result column="enterprise_unified_code" property="enterpriseUnifiedCode"/>
         <result column="signature_file_url" property="signatureFileUrl"/>
         <result column="certificate_type" property="certificateType"/>
         <result column="is_register" property="isRegister"/>
-        <result column="project_id" property="projectId"/>
-        <result column="contract_id" property="contractId"/>
+        <result column="project_contract_role" property="projectContractRole"/>
     </resultMap>
 
     <select id="countSignPfxFile" resultType="java.lang.Integer">