From ea7b0e6279e5a5503b45e4d388968b11979243c8 Mon Sep 17 00:00:00 2001 From: zhouc Date: Fri, 20 Sep 2024 17:04:04 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E5=A4=96=E9=94=80=E5=90=88?= =?UTF-8?q?=E5=90=8C=E4=B8=8A=E4=BC=A0=E9=99=84=E4=BB=B6=20=E5=8F=AA?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=20word=E6=A0=BC=E5=BC=8F=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=EF=BC=9B=202.=E5=A2=9E=E5=8A=A0=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=E5=90=88=E5=90=8C=E4=B8=8A=E4=BC=A0=E9=99=84=E4=BB=B6?= =?UTF-8?q?=20=E5=8F=AA=E6=A0=A1=E9=AA=8C=20word=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E6=A0=87=E7=AD=BE=EF=BC=9B=203.=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=A1=86=E6=9E=B6=E5=90=88=E5=90=8C=E5=90=88=E5=90=8C?= =?UTF-8?q?=E7=AD=BE=E7=AB=A0=E5=90=8C=E6=AD=A5=E4=BA=91=E4=B9=8B=E5=AE=B6?= =?UTF-8?q?=EF=BC=9B=204.=E5=A2=9E=E5=8A=A0=E6=A1=86=E6=9E=B6=E5=90=88?= =?UTF-8?q?=E5=90=8C=E7=AD=BE=E7=AB=A0=E5=90=8C=E6=AD=A5=E4=BA=91=E4=B9=8B?= =?UTF-8?q?=E5=AE=B6=E5=9B=9E=E5=86=99=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salescontrac/form/SalesContractEdit.java | 17 +- .../op/SalesContracSignatureOp.java | 189 ++++++++++++++++++ .../salescontrac/op/SalesOrderAutoSignOp.java | 44 ++-- .../salesorder/op/SalesOrderAutoSignOp.java | 45 +++-- .../api/controller/YZJAuditController.java | 69 ++++++- 5 files changed, 316 insertions(+), 48 deletions(-) create mode 100644 src/main/java/com/yem/wm/es/salescontrac/op/SalesContracSignatureOp.java diff --git a/src/main/java/com/yem/wm/es/salescontrac/form/SalesContractEdit.java b/src/main/java/com/yem/wm/es/salescontrac/form/SalesContractEdit.java index fcfc4168..8f3c1f42 100644 --- a/src/main/java/com/yem/wm/es/salescontrac/form/SalesContractEdit.java +++ b/src/main/java/com/yem/wm/es/salescontrac/form/SalesContractEdit.java @@ -22,18 +22,15 @@ import java.util.EventObject; * @Created by ZZSLL */ -public class SalesContractEdit extends AbstractBillPlugIn implements BeforeF7SelectListener -{ +public class SalesContractEdit extends AbstractBillPlugIn implements BeforeF7SelectListener { @Override - public void afterDoOperation(AfterDoOperationEventArgs e) - { + public void afterDoOperation(AfterDoOperationEventArgs e) { super.afterDoOperation(e); IFormView view = this.getView(); IDataModel model = this.getModel(); DynamicObject dataEntity = model.getDataEntity(); String operateKey = e.getOperateKey(); - if ("save".equals(operateKey)) - { + if ("save".equals(operateKey)) { String billno = dataEntity.getString("billno"); boolean isLastCharLetter = billno.matches(".*[A-Za-z]$"); if (isLastCharLetter) return; @@ -42,6 +39,13 @@ public class SalesContractEdit extends AbstractBillPlugIn implements BeforeF7Se view.updateView("billno"); SaveServiceHelper.save(new DynamicObject[]{model.getDataEntity(true)}); } + if ("signature".equals(operateKey)) { + view.invokeOperation("refresh"); + } + if ("dosign".equals(operateKey)) { +// view.invokeOperation("refresh"); + view.showSuccessNotification("合同盖章完成!"); + } } @Override @@ -52,6 +56,7 @@ public class SalesContractEdit extends AbstractBillPlugIn implements BeforeF7Se yem_internationalrate.addBeforeF7SelectListener(this); } } + @Override public void beforeF7Select(BeforeF7SelectEvent e) { IDataModel model = this.getModel(); diff --git a/src/main/java/com/yem/wm/es/salescontrac/op/SalesContracSignatureOp.java b/src/main/java/com/yem/wm/es/salescontrac/op/SalesContracSignatureOp.java new file mode 100644 index 00000000..a2d48970 --- /dev/null +++ b/src/main/java/com/yem/wm/es/salescontrac/op/SalesContracSignatureOp.java @@ -0,0 +1,189 @@ +package com.yem.wm.es.salescontrac.op; + +import com.alibaba.fastjson.JSONObject; +import com.yem.ia.intebilllogon.Utils.ObjectToJsonUtils; +import com.yem.wm.utils.YEM; +import com.yem.wm.utils.YunzhijiaUtils; +import kd.bos.dataentity.OperateOption; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.EntityMetadataCache; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.MainEntityType; +import kd.bos.entity.operate.result.OperationResult; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.plugin.args.BeforeOperationArgs; +import kd.bos.entity.validate.ErrorLevel; +import kd.bos.entity.validate.ValidationErrorInfo; +import kd.bos.exception.KDBizException; +import kd.bos.exception.KDException; +import kd.bos.id.ID; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.AttachmentServiceHelper; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author zhouc + * @date 2024/9/20 16:30 + * @className SalesContracSignatureOp + * @description 框架合同 合同签章申请服务插件 + */ +public class SalesContracSignatureOp extends AbstractOperationServicePlugIn { + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + List fieldKeys = e.getFieldKeys(); + fieldKeys.add("yem_sigforminstid"); + fieldKeys.add("yem_sigflowinstid"); + fieldKeys.add("yem_sigstatus"); + fieldKeys.add("yem_siguser"); + fieldKeys.add("yem_sigdatetime"); + fieldKeys.add("yem_sigmag"); + } + @Override + public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { + super.beforeExecuteOperationTransaction(e); + List selectedRows = e.getSelectedRows(); + ArrayList ArrayList = new ArrayList<>(); + for (ExtendedDataEntity selectedRow : selectedRows) { + DynamicObject dynamicObject = selectedRow.getDataEntity(); + Object pkid = dynamicObject.getPkValue(); + boolean yem_sigstatus = dynamicObject.getBoolean("yem_sigstatus"); + List> attachments = AttachmentServiceHelper.getAttachments(dynamicObject.getDynamicObjectType().getName(), pkid, "yem_approval"); + if (attachments.size() > 0 && !yem_sigstatus) { + JSONObject json = GetintebilllogonJson(pkid, dynamicObject); + DynamicObject yem_billtype = BusinessDataServiceHelper.loadSingle("bos_entityobject", new QFilter[]{new QFilter("number", QCP.equals, dynamicObject.getDynamicObjectType().getName())}); + MainEntityType entityType = EntityMetadataCache.getDataEntityType("yem_ialog"); + DynamicObject yemIalog = new DynamicObject(entityType); + try { + String s = YunzhijiaUtils.doPost(YunzhijiaUtils.yzjurl + "/cmmpapi/cmmp/flowCreate.do?tokenId=0C89F5DBEB704C1F8671721B148E8224", json.toString()); + System.out.println(s); + JSONObject retJson = JSONObject.parseObject(s); + Boolean success = retJson.getBoolean("success"); + if (success) { +// dynamicObject.set("yem_synfalt",null); + JSONObject data = retJson.getJSONObject("data"); + String formInstId = data.getString("formInstId");//表单定义ID + String flowInstId = data.getString("flowInstId");//流程实例ID + dynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObject.get("id"), dynamicObject.getDynamicObjectType().getName()); + dynamicObject.set("yem_sigforminstid", formInstId); + dynamicObject.set("yem_sigflowinstid", flowInstId); + dynamicObject.set("yem_sigstatus", true); + dynamicObject.set("yem_siguser", YEM.getCurrentUserId()); + dynamicObject.set("yem_sigdatetime", new Date()); + dynamicObject.set("yem_sigmag", "同步云之家成功!"); + SaveServiceHelper.update(dynamicObject, OperateOption.create()); + // 根据实体名构建元数据并创建DynamicObject + yemIalog.getDataEntityType().getPrimaryKey().setValueFast(yemIalog, ID.genLongId()); + yemIalog.set("billno", dynamicObject.get("billno"));//单据编号 + yemIalog.set("yem_billtype", yem_billtype);//单据类型 + yemIalog.set("yem_success", success);//是否成功 + yemIalog.set("yem_req", json.toString());//请求参数 + yemIalog.set("billstatus", "A");//请求参数 + yemIalog.set("yem_response", s);//返回参数 + yemIalog.set("yem_flowinstid", flowInstId);//流程实例ID + yemIalog.set("yem_forminstid", formInstId);//表单实例ID + } else { + // 根据实体名构建元数据并创建DynamicObject + yemIalog.getDataEntityType().getPrimaryKey().setValueFast(yemIalog, ID.genLongId()); + yemIalog.set("billstatus", "A");//请求参数 + yemIalog.set("billno", dynamicObject.get("billno"));//单据编号yemIalog.set("yem_billtype", yem_billtype);//单据类型 + yemIalog.set("yem_success", false);//是否成功 + yemIalog.set("yem_req", json.toString());//请求参数 + yemIalog.set("yem_response", s);//返回参数 + addErrMessage(operationResult, dynamicObject, "云之家生成流程异常:" + s); + dynamicObject.set("yem_sigforminstid", null); + dynamicObject.set("yem_sigflowinstid", null); + dynamicObject.set("yem_sigstatus", false); + dynamicObject.set("yem_sigmag", "同步失败,请查看《智能审批日志》日志!"); + dynamicObject.set("yem_siguser", YEM.getCurrentUserId()); + dynamicObject.set("yem_sigdatetime", new Date()); + SaveServiceHelper.update(dynamicObject, OperateOption.create()); + } + } catch (Exception ex) { + ex.printStackTrace(); + yemIalog.getDataEntityType().getPrimaryKey().setValueFast(yemIalog, ID.genLongId()); + yemIalog.set("billstatus", "A");//请求参数 + yemIalog.set("billno", dynamicObject.get("billno"));//单据编号 + yemIalog.set("yem_billtype", yem_billtype);//单据类型 + yemIalog.set("yem_success", false);//是否成功 + yemIalog.set("yem_req", json.toString());//请求参数 + if (ex instanceof KDException) { + yemIalog.set("yem_error", ((KDException) ex).getStackTraceMessage());//异常信息 + addErrMessage(operationResult, dynamicObject, "云之家接口调用异常:" + ((KDException) ex).getStackTraceMessage()); + } else { + yemIalog.set("yem_error", ex.toString());//异常信息 + addErrMessage(operationResult, dynamicObject, "云之家接口调用异常:" + ex.toString()); + } + dynamicObject.set("yem_sigforminstid", null); + dynamicObject.set("yem_sigflowinstid", null); + dynamicObject.set("yem_sigstatus", false); + dynamicObject.set("yem_sigmag", "同步失败,请查看《智能审批日志》日志!"); + dynamicObject.set("yem_siguser", YEM.getCurrentUserId()); + dynamicObject.set("yem_sigdatetime", new Date()); + SaveServiceHelper.update(dynamicObject, OperateOption.create()); + } + SaveServiceHelper.save(new DynamicObject[]{yemIalog}); + } else { + addErrMessage(operationResult, dynamicObject, "当前订单未上传国贸经理签批附件、当期订单已同步至云之家,禁止执行合同签章申请!"); + } + } + } + + /** + * 获取当前单据入参 + * + * @param pkid + * @return + */ + public JSONObject GetintebilllogonJson(Object pkid, DynamicObject dynamicObject) { + JSONObject Object = new JSONObject(); + QFilter qFilter = new QFilter("yem_isdisable", QCP.equals, false); + qFilter.and(new QFilter("billno", QCP.equals, "WXHT-YZJ")); + DynamicObject yem_ia_intebilllogon = BusinessDataServiceHelper.loadSingle("yem_ia_intebilllogon", "id", qFilter.toArray()); + if (yem_ia_intebilllogon != null) { + long intebilllogonID = yem_ia_intebilllogon.getLong("id"); + //查询单据注册数据 + DynamicObject data = BusinessDataServiceHelper.loadSingle(intebilllogonID, "yem_ia_intebilllogon"); + if (data != null && pkid != null && pkid != "") { + Object = ObjectToJsonUtils.ToJson(data, pkid, dynamicObject.getDynamicObjectType().getName(), ObjectToJsonUtils.getpostcreator()); + } + } else { + this.operationResult.addErrorInfo(new ValidationErrorInfo("", pkid, + 0, 0, "err", "合同签章申请", "未读取启用的《智能审批单据注册》,请修改后重试!", ErrorLevel.Error)); + } + return Object; + } + + /** + * 向操作结果,添加一条错误提示 + * + * @param operationResult 操作结果参数 + * @param dataEntity 校验数据 + * @param errMsg 异常信息 + * @return + */ + private static void addErrMessage(OperationResult operationResult, DynamicObject dataEntity, String errMsg) { + operationResult.setSuccess(false); +// Object pkId = dataEntity.getPkValue(); +// int rowIndex = 0; +// ErrorLevel errorLevel = ErrorLevel.Error; +// +// ValidationErrorInfo errInfo = new ValidationErrorInfo("", +// pkId, 0, rowIndex, +// "BeforeExecuteOperationTransactionSample", +// "接口调用异常", +// "单据编号:【" + dataEntity.get("billno") + "】" + errMsg, +// errorLevel); +// operationResult.setMessage("合同签章申请失败!"); +// operationResult.addErrorInfo(errInfo); + throw new KDBizException("单据编号:【" + dataEntity.get("billno") + "】" + errMsg); + } +} diff --git a/src/main/java/com/yem/wm/es/salescontrac/op/SalesOrderAutoSignOp.java b/src/main/java/com/yem/wm/es/salescontrac/op/SalesOrderAutoSignOp.java index de680722..55bd992c 100644 --- a/src/main/java/com/yem/wm/es/salescontrac/op/SalesOrderAutoSignOp.java +++ b/src/main/java/com/yem/wm/es/salescontrac/op/SalesOrderAutoSignOp.java @@ -48,7 +48,7 @@ public class SalesOrderAutoSignOp extends AbstractOperationServicePlugIn { // Word中的书签名称 final String BOOKMARK = "ensign"; // 修改Word后上传的附件面板 - final String UPLOAD_ATTACHMENT_KEY = "attachmentpanel"; + final String UPLOAD_ATTACHMENT_KEY = "yem_approval"; for (DynamicObject dynamicObject : entities) { String formId = dynamicObject.getDataEntityType().getName(); @@ -104,31 +104,33 @@ public class SalesOrderAutoSignOp extends AbstractOperationServicePlugIn { AttachmentDto attDao = AttachmentServiceHelper.getAttachmentInfoByAttPk(attachment.get("attPkId")); String fileUrl = attDao.getResourcePath(); String filename = attDao.getFilename(); - validatorFileExtension(filename); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - FileServiceFactory.getAttachmentFileService().download(fileUrl, out, null); - InputStream in = new ByteArrayInputStream(out.toByteArray()); - InputStream validatorStream = new ByteArrayInputStream(out.toByteArray()); + if (filename.endsWith(".docx") || filename.endsWith(".doc")) { + validatorFileExtension(filename); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + FileServiceFactory.getAttachmentFileService().download(fileUrl, out, null); + InputStream in = new ByteArrayInputStream(out.toByteArray()); + InputStream validatorStream = new ByteArrayInputStream(out.toByteArray()); - // 获取书签 - List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream); - validatorSignAble(bookMarks, BOOKMARK, filename); + // 获取书签 + List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream); + validatorSignAble(bookMarks, BOOKMARK, filename); - File file; - try { + File file; + try { - ByteArrayInputStream stream = new ByteArrayInputStream(imageData); + ByteArrayInputStream stream = new ByteArrayInputStream(imageData); - // 书签位置替换为图片(书签不会删除) - file = ContactSignUtils.replaceBookmarkWithImage(in, stream, filename, BOOKMARK); - AttachmentUtil.uploadAttachment(appId, formId, String.valueOf(pkId), UPLOAD_ATTACHMENT_KEY, file.getName(), file.getPath()); - List> uploaded = AttachmentServiceHelper.getAttachments(formId, pkId, UPLOAD_ATTACHMENT_KEY); - File pdf = ContactSignUtils.convertToPDF(uploaded); - if (pdf != null) { - AttachmentUtil.uploadAttachment(appId, formId, String.valueOf(pkId), UPLOAD_ATTACHMENT_KEY, pdf.getName(), pdf.getPath()); + // 书签位置替换为图片(书签不会删除) + file = ContactSignUtils.replaceBookmarkWithImage(in, stream, filename, BOOKMARK); + AttachmentUtil.uploadAttachment(appId, formId, String.valueOf(pkId), UPLOAD_ATTACHMENT_KEY, file.getName(), file.getPath()); + List> uploaded = AttachmentServiceHelper.getAttachments(formId, pkId, UPLOAD_ATTACHMENT_KEY); + File pdf = ContactSignUtils.convertToPDF(uploaded); + if (pdf != null) { + AttachmentUtil.uploadAttachment(appId, formId, String.valueOf(pkId), UPLOAD_ATTACHMENT_KEY, pdf.getName(), pdf.getPath()); + } + } catch (IOException ex) { + throw new RuntimeException(ex); } - } catch (IOException ex) { - throw new RuntimeException(ex); } } } diff --git a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAutoSignOp.java b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAutoSignOp.java index c2f4012c..3d0ce178 100644 --- a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAutoSignOp.java +++ b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAutoSignOp.java @@ -105,31 +105,36 @@ public class SalesOrderAutoSignOp extends AbstractOperationServicePlugIn { AttachmentDto attDao = AttachmentServiceHelper.getAttachmentInfoByAttPk(attachment.get("attPkId")); String fileUrl = attDao.getResourcePath(); String filename = attDao.getFilename(); - validatorFileExtension(filename); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - FileServiceFactory.getAttachmentFileService().download(fileUrl, out, null); - InputStream in = new ByteArrayInputStream(out.toByteArray()); - InputStream validatorStream = new ByteArrayInputStream(out.toByteArray()); + /** + * 2024-09-20 增加只校验 word文件 + */ + if(filename.endsWith(".docx")|| filename.endsWith(".doc")){ +// validatorFileExtension(filename); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + FileServiceFactory.getAttachmentFileService().download(fileUrl, out, null); + InputStream in = new ByteArrayInputStream(out.toByteArray()); + InputStream validatorStream = new ByteArrayInputStream(out.toByteArray()); - // 获取书签 - List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream); - validatorSignAble(bookMarks, BOOKMARK, filename); + // 获取书签 + List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream); + validatorSignAble(bookMarks, BOOKMARK, filename); - File file; - try { + File file; + try { - ByteArrayInputStream stream = new ByteArrayInputStream(imageData); + ByteArrayInputStream stream = new ByteArrayInputStream(imageData); - // 书签位置替换为图片(书签不会删除) - file = ContactSignUtils.replaceBookmarkWithImage(in, stream, filename, BOOKMARK); - AttachmentUtil.uploadAttachment(appId, formId, String.valueOf(pkId), UPLOAD_ATTACHMENT_KEY, file.getName(), file.getPath()); - List> uploaded = AttachmentServiceHelper.getAttachments(formId, pkId, UPLOAD_ATTACHMENT_KEY); - File pdf = ContactSignUtils.convertToPDF(uploaded); - if (pdf != null) { - AttachmentUtil.uploadAttachment(appId, formId, String.valueOf(pkId), UPLOAD_ATTACHMENT_KEY, pdf.getName(), pdf.getPath()); + // 书签位置替换为图片(书签不会删除) + file = ContactSignUtils.replaceBookmarkWithImage(in, stream, filename, BOOKMARK); + AttachmentUtil.uploadAttachment(appId, formId, String.valueOf(pkId), UPLOAD_ATTACHMENT_KEY, file.getName(), file.getPath()); + List> uploaded = AttachmentServiceHelper.getAttachments(formId, pkId, UPLOAD_ATTACHMENT_KEY); + File pdf = ContactSignUtils.convertToPDF(uploaded); + if (pdf != null) { + AttachmentUtil.uploadAttachment(appId, formId, String.valueOf(pkId), UPLOAD_ATTACHMENT_KEY, pdf.getName(), pdf.getPath()); + } + } catch (IOException ex) { + throw new RuntimeException(ex); } - } catch (IOException ex) { - throw new RuntimeException(ex); } } } diff --git a/src/main/java/com/yem/wm/syn/eas/api/controller/YZJAuditController.java b/src/main/java/com/yem/wm/syn/eas/api/controller/YZJAuditController.java index 354ef8cc..a2a586ed 100644 --- a/src/main/java/com/yem/wm/syn/eas/api/controller/YZJAuditController.java +++ b/src/main/java/com/yem/wm/syn/eas/api/controller/YZJAuditController.java @@ -200,7 +200,74 @@ public class YZJAuditController { CustomApiResult ces = CustomApiResult.success("调用成功"); return ces; } - + /** + * 云之家框架合同 合同签章回写 + * + * @param data + * @return + * @throws IOException + */ + @ApiPostMapping("/SalescontracCallback") + public CustomApiResult SalescontracCallback(@NotNull @ApiParam("参数") String data) throws IOException { + try { + JSONObject json = JSONObject.parseObject(data); +// JSONObject data1 = json.getJSONObject("data"); + JSONObject basicInfo = json.getJSONObject("basicInfo"); + String formCodeId = basicInfo.getString("formCodeId"); + //通过表单定义ID获取模板 + String formInstId = basicInfo.getString("formInstId"); + ArrayList qFilters = new ArrayList<>(); + qFilters.add(new QFilter("yem_yzjid", QCP.equals, formCodeId)); + qFilters.add(new QFilter("yem_isdisable", QCP.equals, false)); + DynamicObject yem_ia_intebilllogon = BusinessDataServiceHelper.loadSingle("yem_ia_intebilllogon", qFilters.toArray(new QFilter[0])); + if (yem_ia_intebilllogon != null) { + yem_ia_intebilllogon = BusinessDataServiceHelper.loadSingle(yem_ia_intebilllogon.getLong("id"), "yem_ia_intebilllogon"); + } else { + return CustomApiResult.success("调用成功"); + } + //单据类型 + String bos_entityobjectnum = yem_ia_intebilllogon.getString("yem_formid.number"); + //获取单据 + DynamicObject billObj = BusinessDataServiceHelper.loadSingle(bos_entityobjectnum, new QFilter[]{new QFilter("yem_sigforminstid", QCP.equals, formInstId)}); + if (billObj != null) { + billObj = BusinessDataServiceHelper.loadSingle(billObj.get("id"), bos_entityobjectnum); + //通过表单实例ID获取日志对象 yem_sigforminstid + DynamicObject ialog = BusinessDataServiceHelper.loadSingle("yem_ialog", new QFilter[]{new QFilter("yem_forminstid", QCP.equals, billObj.get("yem_sigforminstid"))}); + ialog.set("yem_writeback", data); + SaveServiceHelper.save(new DynamicObject[]{ialog}); + //TODO 调用云之家获取审批结果接口 + JSONObject reqjson = new JSONObject(); + reqjson.put("flowInstId", billObj.get("yem_sigflowinstid")); + String retStr = YunzhijiaUtils.doPost(YunzhijiaUtils.yzjurl + "/gateway/yun/common/approve", reqjson.toString()); + JSONObject retJson = JSONObject.parseObject(retStr); + //状态码 FINISH:同意已完成 + // DISAGRE:不同意已完成 + // RUNNING:待审批 + // SUSPEND:挂起 + // RETURNED:待提交(审批人退回到发起节点) + // TOSUBMIT:待提交(发起人自己撤回) + // ABANDON:废弃 + // DELETE:已删除 + //驳回更新 合同签章同步状态 + if ("DISAGREE".equals(retJson.getString("data"))) { + billObj.set("yem_sigstatus", false);//合同签章同步状态 + billObj.set("yem_sigmag", null);//合同签章同步说明 + billObj.set("yem_sigforminstid", null);//合同签章云之家表单实例id + billObj.set("yem_sigflowinstid", null);//合同签章云之家流程实例id + SaveServiceHelper.save(new DynamicObject[]{billObj}); + } else { + return CustomApiResult.success("根据云之家审批示例ID获取到的状态为【" + retJson.getString("data") + "】,无需更新!"); + } + } else { + return CustomApiResult.fail("501", "未获取到框架合同合同签章云之家表单实例id为【" + formInstId + "】的数据!"); + } + } catch (Exception e) { + CustomApiResult fail = CustomApiResult.fail("501", e.getMessage()); + return fail; + } + CustomApiResult ces = CustomApiResult.success("调用成功"); + return ces; + } private String result(OperationResult result, String operation) { if (!result.isSuccess()) {