From 482f807361c9bc0dce2db949a29c755cf858548b Mon Sep 17 00:00:00 2001
From: 黄潞潞 <lilith@highdatas.com>
Date: 星期五, 07 六月 2024 18:30:23 +0800
Subject: [PATCH] hotfix 签署方获取

---
 esign_weaver/src/weaver/BothSignService.java          |   20 +++++-
 foundation.system/src/foundation/org/Employee.java    |   12 ++++
 esign_weaver/src/weaver/SignConfig.java               |   21 +++++++
 esign_weaver/src/weaver/PartyBSignService.java        |   16 ++++-
 esign_weaver/src/weaver/WeaverHandler.java            |   22 +++++--
 esign_weaver/src/weaver/ISignService.java             |   44 +++++++++++++-
 foundation.system/src/foundation/user/OnlineUser.java |    9 +++
 esign_weaver/src/weaver/PartyASignService.java        |   16 ++++-
 8 files changed, 139 insertions(+), 21 deletions(-)

diff --git a/esign_weaver/src/weaver/BothSignService.java b/esign_weaver/src/weaver/BothSignService.java
index 6398ad0..5d679c8 100644
--- a/esign_weaver/src/weaver/BothSignService.java
+++ b/esign_weaver/src/weaver/BothSignService.java
@@ -10,9 +10,14 @@
 import weaver.dao.ISignLetter;
 import weaver.dao.Signer;
 
-public class BothSignService implements ISignService{
-
-	@Override
+public class BothSignService extends ISignService{
+	private SignConfig signConfig;
+	
+	public BothSignService(SignConfig signConfig) {
+		super();
+		this.signConfig = signConfig;
+	}
+	
 	public List<Signer> getSigners(Entity entity) throws Exception {
 		List<Signer> signers = new ArrayList();
 		Signer signer;
@@ -26,21 +31,26 @@
 		// 涔欐柟
 		DataObject dataObject = DataObject.getInstance("md_org_account");
 		Entity org = dataObject.getBrowseEntity(customerId);
+		String contractPhone = getContracePhone(signConfig.getPartybPhone(), companyId, customerId);
+		
 		signer = new Signer();
 		signer.setSignatoryNo(org.getString("code")); 
 		signer.setTenantName(org.getString("account_name"));
 		signer.setReceiverName(org.getString("business_person")); 
-		signer.setContactPhone(org.getString("business_phone"));
+		
+		signer.setContactPhone(contractPhone);
 		signers.add(signer);
 		
 		// 鐢叉柟
 		dataObject = DataObject.getInstance("md_org");
 		org = dataObject.getTableEntity(companyId); 
+		contractPhone = getContracePhone(signConfig.getPartyaPhone(), companyId, customerId);
+		
 		signer = new Signer();
 		signer.setTenantName(ISignLetter.DefaultInitiator);;
 		signer.setSignatoryNo(companyId); 
 		signer.setReceiverName(org.getString("name")); 
-		signer.setContactPhone(org.getString("business_phone"));
+		signer.setContactPhone(contractPhone);
 		signers.add(signer);
 		
 		return signers;
diff --git a/esign_weaver/src/weaver/ISignService.java b/esign_weaver/src/weaver/ISignService.java
index 2ede034..bec7a50 100644
--- a/esign_weaver/src/weaver/ISignService.java
+++ b/esign_weaver/src/weaver/ISignService.java
@@ -3,10 +3,48 @@
 import java.util.List;
 
 import foundation.data.entity.Entity;
+import foundation.data.object.DataObject;
+import foundation.org.Employee;
+import foundation.user.OnlineUser;
 import weaver.dao.Signer;
 
-public interface ISignService{
-	
-	public List<Signer> getSigners(Entity entity) throws Exception;
+public abstract class ISignService{
 
+	public List<Signer> getSigners(Entity entity) throws Exception {
+		return null;
+	}
+
+	public String getContracePhone(String sourceCode, String orgId, String accountId) throws Exception {
+		int pos = sourceCode.indexOf("@{");
+		
+		if (pos == -1){
+			return sourceCode;
+		}
+		
+		sourceCode = sourceCode.substring(pos + 2, sourceCode.length());
+		pos = sourceCode.indexOf(".");
+		
+		if (pos == -1) {
+			OnlineUser user = OnlineUser.getInstance();
+			Employee employee = user.getEmployee();
+			if (employee != null) {
+				return employee.getPhone();
+			}
+			return null;
+		}
+		
+		String dataName = sourceCode.substring(0, pos);
+		String field = sourceCode.substring(pos + 1);
+		
+		DataObject dataObject = DataObject.getInstance(dataName);
+		
+		if (dataName.equalsIgnoreCase("md_org")) {
+			Entity entity = dataObject.getTableEntity(orgId);
+			return entity.getString(field);
+		}
+		else {
+			Entity entity = dataObject.getTableEntity(accountId);
+			return entity.getString(field);
+		}
+	}
 }
diff --git a/esign_weaver/src/weaver/PartyASignService.java b/esign_weaver/src/weaver/PartyASignService.java
index 168197d..c889d9e 100644
--- a/esign_weaver/src/weaver/PartyASignService.java
+++ b/esign_weaver/src/weaver/PartyASignService.java
@@ -9,9 +9,14 @@
 import weaver.dao.ISignLetter;
 import weaver.dao.Signer;
 
-public class PartyASignService  implements ISignService{
-
-	@Override
+public class PartyASignService  extends ISignService{
+	private SignConfig signConfig;
+	
+	public PartyASignService(SignConfig signConfig) {
+		super();
+		this.signConfig = signConfig;
+	}
+	
 	public List<Signer> getSigners(Entity entity) throws Exception {
 		List<Signer> signers = new ArrayList(); 
 		Signer signer = new Signer();
@@ -19,10 +24,13 @@
 		DataObject dataObject = DataObject.getInstance("md_org");
 		String companyId = entity.getString("company_id");
 		Entity org = dataObject.getTableEntity(companyId); 
+		String contractPhone = getContracePhone(signConfig.getPartyaPhone(), companyId, null);
+		
 		signer.setTenantName(ISignLetter.DefaultInitiator);;
 		signer.setSignatoryNo(companyId); 
 		signer.setReceiverName(org.getString("name")); 
-		signer.setContactPhone(org.getString("business_phone"));	
+		signer.setContactPhone(contractPhone);	
+		signers.add(signer);
 		
 		return signers;
 	}
diff --git a/esign_weaver/src/weaver/PartyBSignService.java b/esign_weaver/src/weaver/PartyBSignService.java
index 010f181..8cce5bd 100644
--- a/esign_weaver/src/weaver/PartyBSignService.java
+++ b/esign_weaver/src/weaver/PartyBSignService.java
@@ -6,12 +6,19 @@
 
 import foundation.data.entity.Entity;
 import foundation.data.object.DataObject;
+import foundation.org.Employee;
+import foundation.user.OnlineUser;
 import foundation.util.Util;
 import weaver.dao.Signer;
 
-public class PartyBSignService  implements ISignService{
+public class PartyBSignService extends ISignService{
+	private SignConfig signConfig;
+	
+	public PartyBSignService(SignConfig signConfig) {
+		super();
+		this.signConfig = signConfig;
+	}
 
-	@Override
 	public List<Signer> getSigners(Entity entity) throws Exception {
 		List<Signer> signers = new ArrayList(); 
 		Signer signer = new Signer();
@@ -20,13 +27,16 @@
 		if (Util.isEmpty(customerId)) {
 			customerId = entity.getString("customer_id", "");
 		}
+
+		String contractPhone = getContracePhone(signConfig.getPartybPhone(), null, customerId);
 		
 		DataObject dataObject = DataObject.getInstance("md_org_account");
 		Entity org = dataObject.getBrowseEntity(customerId);
 		signer.setSignatoryNo(org.getString("code")); 
 		signer.setTenantName(org.getString("account_name"));
 		signer.setReceiverName(org.getString("business_person")); 
-		signer.setContactPhone(org.getString("business_phone"));
+		signer.setContactPhone(contractPhone);
+		
 		signers.add(signer);
 		
 		return signers;
diff --git a/esign_weaver/src/weaver/SignConfig.java b/esign_weaver/src/weaver/SignConfig.java
index 97502b0..0198a48 100644
--- a/esign_weaver/src/weaver/SignConfig.java
+++ b/esign_weaver/src/weaver/SignConfig.java
@@ -15,6 +15,8 @@
 	private String fileField;
 	private SignType signType;
 	private String initiator;
+	private String partyaPhone;
+	private String partybPhone;
 	private String subject;
 	private VariantExpression expression;
 	
@@ -25,6 +27,8 @@
 		this.fileField = entity.getString("file_field");
 		this.dataname = entity.getString("dataname");
 		this.signType = SignType.parse(entity.getString("sign_type"));
+		this.partyaPhone = entity.getString("partya_Phone");
+		this.partybPhone = entity.getString("partyb_Phone");
 		this.initiator = entity.getString("initiator");
 
 		String subject = entity.getString("subject");
@@ -34,6 +38,7 @@
 			this.expression = new VariantExpression(subject);
 		}
 	}
+	
 	public String getSubjectContent(Entity entity) {
 		if(expression == null) {
 			return subject;
@@ -79,5 +84,21 @@
 	public VariantExpression getExpression() {
 		return expression;
 	}
+	
+	public String getInitiator() {
+		return initiator;
+	}
+	
+	public String getPartyaPhone() {
+		return partyaPhone;
+	}
+	
+	public String getPartybPhone() {
+		return partybPhone;
+	}
+	
+	public String getSubject() {
+		return subject;
+	}
 
 }
diff --git a/esign_weaver/src/weaver/WeaverHandler.java b/esign_weaver/src/weaver/WeaverHandler.java
index 80c71e6..f4d86f7 100644
--- a/esign_weaver/src/weaver/WeaverHandler.java
+++ b/esign_weaver/src/weaver/WeaverHandler.java
@@ -24,6 +24,7 @@
 import foundation.icall.callout.RemoteSourceBucket;
 import foundation.io.FileCenter;
 import foundation.io.object.FileRecord;
+import foundation.org.Employee;
 import foundation.user.OnlineUser;
 import foundation.util.MD5Utils;
 import foundation.util.Util;
@@ -337,7 +338,6 @@
 		String accessKey = eSignSourceMeta.getString(ISignLetter.AppToken);
 		String accessSecret = eSignSourceMeta.getString(ISignLetter.AppSecret);
 		
-		String signerCode = dataReader.getString(ISignLetter.Signer);
 		SignBucket signBucket = SignBucket.getInstance();
 		SignConfig signConfig = signBucket.get(dataName);
 
@@ -442,13 +442,13 @@
 
 		
 		if (SignType.Both == signConfig.getSignType()) {
-			signService = new BothSignService();
+			signService = new BothSignService(signConfig);
 		}
 		else if (SignType.PartyB == signConfig.getSignType()) {
-			signService = new PartyBSignService();
+			signService = new PartyBSignService(signConfig);
 		}
 		else if (SignType.PartyA == signConfig.getSignType()) {
-			signService = new PartyASignService();
+			signService = new PartyASignService(signConfig);
 		}
 		List<Signer> signers = signService.getSigners(dataNameEntity);
 		
@@ -650,6 +650,7 @@
 	private Signer getSigner(String companyId) throws Exception {
 		Signer signer = new Signer();
 		OnlineUser user = OnlineUser.getInstance();
+		Employee employee = user.getEmployee();
 		ActorTarget actor = user.getCurrentActor();
 		String actorId = user.getActorId();
 		String accountId = actor.getTargetId();
@@ -668,13 +669,22 @@
 			signer.setContactPhone(account.getString("business_phone"));
 		}
 		else {
+			
 			DataObject dataObject = DataObject.getInstance("md_org");
 			Entity org = dataObject.getBrowseEntity(companyId);
 			
 			signer.setSignatoryNo(org.getString("id")); 
 			signer.setTenantName(ISignLetter.DefaultInitiator);
-			signer.setReceiverName(org.getString("business_person")); 
-			signer.setContactPhone(org.getString("business_phone"));
+			signer.setReceiverName(user.getName()); 
+			
+			String businessPhone = "";
+			if (employee != null) {
+				businessPhone = employee.getPhone();
+			}
+			else {
+				businessPhone = org.getString("business_phone");
+			}
+			signer.setContactPhone(businessPhone);
 		}
 		
 		return signer;
diff --git a/foundation.system/src/foundation/org/Employee.java b/foundation.system/src/foundation/org/Employee.java
index f838367..549a5c3 100644
--- a/foundation.system/src/foundation/org/Employee.java
+++ b/foundation.system/src/foundation/org/Employee.java
@@ -19,6 +19,8 @@
 	private String id;
 	private String code;
 	private String name;
+	private String phone;
+	private String email;
 	private Org org;
 	private MapList<String, Position> positions;
 	
@@ -65,6 +67,8 @@
 		id = entity.getString("id");
 		code = entity.getString("code");
 		name = entity.getString("name");
+		phone = entity.getString("phone");
+		email = entity.getString("email");
 	}
 
 	private void loadOnePosition(String positionId, Position position) {
@@ -87,6 +91,14 @@
 		return name;
 	}
 	
+	public String getPhone() {
+		return phone;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
 	public void setOrg(Org org) {
 		this.org = org;
 	}
diff --git a/foundation.system/src/foundation/user/OnlineUser.java b/foundation.system/src/foundation/user/OnlineUser.java
index e494acb..8ce9b25 100644
--- a/foundation.system/src/foundation/user/OnlineUser.java
+++ b/foundation.system/src/foundation/user/OnlineUser.java
@@ -183,6 +183,15 @@
 		return employee.getId();
 	}
 
+	public Employee getEmployee() {
+		Employee employee = user.getCurrentEmployee();
+		
+		if (employee == null) {
+			return null;
+		}
+		return employee;
+	}
+	
 	@Override
 	public String getEmployeeName() {
 		Employee employee = user.getCurrentEmployee();

--
Gitblit v1.8.0