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