diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java index 5606bf6..cffe9e1 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/ApiService.java @@ -1055,13 +1055,13 @@ public class ApiService { } /** - * 查询星空收付款单 + * 查询星空收付款单(司库推送星空) * @param dataEntity API映射元数据对象 * @param billMark 单据类型(收付款) * @param billNumber 单据编码 * @return */ - public static HashMap getBillObject(DynamicObject dataEntity, String billMark, String billNumber) { + public static HashMap getSKPushXKBill(DynamicObject dataEntity, String billMark, String billNumber) { logger.info("获取推送单据类型 → billMark:{}", billMark); String xkBillType = null; if ("cas_paybill".equals(billMark)) { @@ -1098,6 +1098,50 @@ public class ApiService { return result; } + /** + * 查询星空收付款单(星空推送司库) + * @param dataEntity API映射元数据对象 + * @param billMark 单据类型(收付款) + * @param billNumber 推送单据编码(星空单据编码) + * @return + */ + public static HashMap getXKPushSKBill(DynamicObject dataEntity, String billMark, String billNumber) { + logger.info("获取推送单据类型 → billMark:{}", billMark); + String xkBillType = null; + if ("cas_paybill".equals(billMark)) { + xkBillType = "AP_PAYBILL"; + } else if ("cas_recbill".equals(billMark)) { + xkBillType = "AR_RECEIVEBILL"; + } + + HashMap result = new HashMap<>(); + K3CloudApi k3CloudApi = getK3CloudApi(dataEntity); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("OrderString", ""); + jsonObject.put("TopRowCount", 0); + jsonObject.put("SubSystemId", ""); + jsonObject.put("FieldKeys", "FBillNo,FID"); + jsonObject.put("FormId", xkBillType); + jsonObject.put("Limit", 2000); + jsonObject.put("FilterString", "FBillNo='" + billNumber + "'"); + jsonObject.put("StartRow", 0); + try { + List> lists = k3CloudApi.executeBillQuery(jsonObject.toString()); + if (lists.isEmpty()) { + result.put("result", false); + } else { + List objects = lists.get(0); + result.put("billNumber", objects.get(0)); + result.put("billId", objects.get(1)); + result.put("billType", xkBillType); + result.put("result", true); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + return result; + } + /** * 推送星空单据附件 * @param dataEntity API映射元数据对象 @@ -1111,7 +1155,7 @@ public class ApiService { // 获取想要推送单据编码 String billNumber = dataEntity.getString("shkd_sourcenumber"); logger.info("获取推送单据编码 → billNumber:{}", billNumber); - HashMap xkBillData = getBillObject(dataEntity, billMark, billNumber); + HashMap xkBillData = getSKPushXKBill(dataEntity, billMark, billNumber); String uploadAttachmentResult = null; if ((Boolean)xkBillData.get("result")) { List> attachmentData = get_attachment(dataEntity); diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java index 331f094..5b0a029 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java @@ -1,30 +1,27 @@ package shkd.sys.sys.mservice; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; +import kd.bos.login.actions.SerializationUtils; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.tmc.fpm.business.dataproc.query.ReportDataQParam; import kd.tmc.fpm.business.dataproc.query.ReportDataQResult; import kd.tmc.fpm.business.dataproc.save.ReportDataSDKService; -import kd.bos.login.actions.SerializationUtils; import kd.tmc.fpm.business.dataproc.save.domain.*; -import kd.tmc.fpm.business.dataproc.save.ReportDataSaveObject; import kd.tmc.fpm.business.domain.enums.AmountUnit; import kd.tmc.fpm.business.domain.enums.ReportProcessStatus; import kd.tmc.fpm.business.domain.enums.ReportStatus; import kd.tmc.fpm.business.domain.enums.TemplateMetricType; import kd.tmc.fpm.business.domain.service.FpmOperateResult; import kd.tmc.fpm.common.enums.AdjustTypeEnum; -import microsoft.exchange.webservices.data.core.service.response.ResponseObject; - import java.math.BigDecimal; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; /** @@ -123,7 +120,7 @@ public class PlanningService { * @return */ public static FpmResponse planAdjustment(String adjustReason, String orgCode, String periodCode, String entryPeriodCode, JSONArray adjustProjects) { - logger.info("计划调整服务入参:adjustReason={},orgCode={},periodCode={},subjectCode={},entryPeriodCode={},amount={}", adjustReason, orgCode, periodCode, entryPeriodCode, adjustProjects); + logger.info("计划调整服务入参:adjustReason={},orgCode={},periodCode={},entryPeriodCode={},adjustProjects={}", adjustReason, orgCode, periodCode, entryPeriodCode, adjustProjects); ReportAdjustBillBatchSaveDTO reportAdjustBillBatchSaveDTO = new ReportAdjustBillBatchSaveDTO(); reportAdjustBillBatchSaveDTO.setSystemCode("SYS-005");// 体系编码 @@ -140,20 +137,20 @@ public class PlanningService { ArrayList reportAdjustDataSaveDTOS = new ArrayList<>(); for (Object adjustProject : adjustProjects) { - HashMap adjustProjectHashMap = (HashMap) adjustProject; - // 计划科目 - Object subjectCode = adjustProjectHashMap.get("subjectCode"); - // 调整金额 - Object amount = adjustProjectHashMap.get("amount"); + JSONObject adjustProjectJson = (JSONObject) adjustProject; + String subjectCode = adjustProjectJson.getString("subjectCode"); + String amount = adjustProjectJson.getString("amount"); + + logger.info("计划科目:{},调整金额:{}", subjectCode, amount); ReportAdjustDataSaveDTO reportAdjustDataSaveDTO = new ReportAdjustDataSaveDTO(); // reportAdjustDataSaveDTO.setAdjustReason();// 维度组合下每一行的调整原因 // reportAdjustDataSaveDTO.setAmountUnit();// 单位 reportAdjustDataSaveDTO.setCurrencyCode("CNY");// 币别 code - reportAdjustDataSaveDTO.setSubjectCode(subjectCode.toString());// 计划科目 + reportAdjustDataSaveDTO.setSubjectCode(subjectCode);// 计划科目 reportAdjustDataSaveDTO.setTemplateCode("FIX-013");// 调整数据所属编制表的模板编码 // reportAdjustDataSaveDTO.setCompanyCode();// 公司code - reportAdjustDataSaveDTO.setCurrentAdjustAmt(new BigDecimal(amount.toString()));// 本次调整金额 + reportAdjustDataSaveDTO.setCurrentAdjustAmt(new BigDecimal(amount));// 本次调整金额 // reportAdjustDataSaveDTO.setCustom1Code();// 自定义维度1值code // reportAdjustDataSaveDTO.setCustom2Code();// 自定义维度2值code // reportAdjustDataSaveDTO.setCustom3Code();// 自定义维度3值code diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/TicketRegistration.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/TicketRegistration.java index f435f01..6d14478 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/TicketRegistration.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/api/TicketRegistration.java @@ -79,15 +79,12 @@ public class TicketRegistration implements Serializable, ApiSavePlugin { case "102": billtype.put("number", "cdm_recbill_bank_BT_S"); - DynamicObject[] bd_bebank = BusinessDataServiceHelper.load("bd_bebank", "id,number,name", new QFilter("number", QCP.equals, map.get("acceptername")).toArray()); - if (bd_bebank.length > 0) { - map.put("acceptername", bd_bebank[0].getString("name")); - } else { - logger.info("进入收票登记 → 票据号:{},星空推送联行号:{},未查到司库行名行号", map.get("draftbillno"), map.get("acceptername")); + DynamicObject[] bd_bebank = BusinessDataServiceHelper.load("bd_bebank", "id,number,name", new QFilter("name", QCP.equals, map.get("acceptername")).toArray()); + if (bd_bebank == null || bd_bebank.length == 0) { + logger.info("进入收票登记 → 票据号:{},星空推送行名:{},未查到司库行名行号", map.get("draftbillno"), map.get("acceptername")); } - Map accepterbebank = new HashMap<>(); - accepterbebank.put("number", map.get("acceptername")); + accepterbebank.put("name", map.get("acceptername")); map.put("accepterbebank", accepterbebank); break; //商业承兑汇票 diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java index 3547d81..b5c24b1 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ApiMappingBillPlugin.java @@ -23,8 +23,7 @@ import shkd.sys.sys.mservice.ApiService; import java.util.*; -import static shkd.sys.sys.mservice.ApiService.getBillObject; -import static shkd.sys.sys.mservice.ApiService.pushBillAttachment; +import static shkd.sys.sys.mservice.ApiService.*; /** * 动态表单插件 @@ -74,7 +73,7 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin { if ("shkd_generatejson".equals(itemKey)) { DynamicObject billObject = getDynamicObject(dataEntity); if (billObject == null) { - this.getView().showTipNotification("未查询到具体推送单据"); + this.getView().showTipNotification("未查询到具体推送单据或单据不符合过滤要求"); return; } String requestBody = ApiService.assembleRequestBody(billObject, dataEntity); @@ -122,8 +121,8 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin { // 获取想要推送单据编码 String billNumber = dataEntity.getString("shkd_sourcenumber"); logger.info("获取推送单据编码 → billNumber:{}", billNumber); - HashMap map = getBillObject(dataEntity, billMark, billNumber); - this.getView().showTipNotification("查找到单据 → 星空单据编码:" + map.get("billNumber") + ",星空单据ID:" + map.get("billId")); + HashMap map = getSKPushXKBill(dataEntity, billMark, billNumber); + this.getView().showTipNotification("查找到单据 → 星空单据编码:" + map.get("billNumber") + ",星空单据ID:" + map.get("billId")); } // 推送星空单据附件 @@ -266,16 +265,75 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin { break; // 电子回单查询 case "bei_elecreceipt": + // 获取多选基础资料银行类别(推送银行类别) + ArrayList bankTypeArray = new ArrayList<>(); + DynamicObjectCollection bankTypeArr = dataEntity.getDynamicObjectCollection("shkd_banktype"); + for (DynamicObject bankTypeData : bankTypeArr) { + DynamicObject bankType = bankTypeData.getDynamicObject("fbasedataid");//银行类别基础资料数据包 + if (bankType != null) { + String bankTypeName = bankType.getString("name");//银行类别名称 + bankTypeArray.add(bankTypeName); + } + } + + // 获取多选基础资料业务单元(推送组织) + ArrayList orgArray = new ArrayList<>(); + DynamicObjectCollection orgArr = dataEntity.getDynamicObjectCollection("shkd_orgs"); + for (DynamicObject orgData : orgArr) { + orgArray.add(orgData.getLong("fbasedataid_Id")); + } + + // 获取推送开始时间 + Date shkdStartdate = dataEntity.getDate("shkd_startdate"); + DynamicObject[] objects4 = BusinessDataServiceHelper.load("bei_elecreceipt", + "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbank,oppbankname,description," + + "company,oppbanknumber,oppunit,detaildatetime,accountbank,amount,use,debitamount," + + "creditamount,detailid,uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname," + + "filepath,receiptno,ismatch" + , new QFilter("bizdate", QCP.large_equals, shkdStartdate) + .and("ismatch", QCP.equals, "1") + .and("shkd_pushstatus", QCP.not_equals, "已推送") + .and("company", QCP.in, orgArray) + .and("billno", QCP.equals, billNumber).toArray()); + + if (objects4 == null || objects4.length == 0) { + logger.info("无符合条件的推送数据!"); + return null; + } + + //开户银行(银行账户) + DynamicObject accountbank = objects4[0].getDynamicObject("accountbank"); + + //开户行(合作金融机构) + DynamicObject bank = accountbank.getDynamicObject("bank"); + + String bank_number = bank.getString("number"); + DynamicObject[] bd_finorginfo = BusinessDataServiceHelper.load("bd_finorginfo", "id,number,bank_cate", new QFilter("number", QCP.equals, bank_number).toArray()); + + //银行类别 + DynamicObject bank_cate = bd_finorginfo[0].getDynamicObject("bank_cate"); + + String bank_name = bank_cate.getString("name"); + + if (!bankTypeArray.contains(bank_name)) { + logger.info("银行类别不匹配,不推送!"); + return null; + } + billObject = objects4[0]; + + + + /* DynamicObject[] objects4 = BusinessDataServiceHelper.load("bei_elecreceipt", "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbank,oppbankname,description,company," + "oppbanknumber,oppunit,detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid," + "uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno,ismatch" , new QFilter("billno", QCP.equals, billNumber).toArray()); billObject = objects4[0]; - logger.info("获取银企交易明细查询推送对象 → billObject:{}", billObject); + logger.info("获取银企交易明细查询推送对象 → billObject:{}", billObject);*/ break; default: - billObject = null; + return null; } return billObject; } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java index 7ed2a9e..9677b32 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/PushTaskPlugin.java @@ -171,13 +171,62 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { * 星空推送不会有影响吧? */ case "bei_elecreceipt": - DynamicObject[] elecreceiptArays = BusinessDataServiceHelper.load("bei_elecreceipt", "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbank,oppbankname,description,company,oppbanknumber,oppunit,detaildatetime,accountbank,amount,use,debitamount,creditamount,detailid,uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname,filepath,receiptno,ismatch" - , new QFilter("bizdate", QCP.large_equals, getFirstDayOfMonth(3)) + DynamicObject[] ApiMappingArray = BusinessDataServiceHelper.load("shkd_apimapping", "id,billno," + + "shkd_name,shkd_sourcenumber,shkd_domainname,shkd_appkey,shkd_appsecret,shkd_token,shkd_url,shkd_bodytype," + + "shkd_sourcebill,shkd_targetsystem,entryentity,entryentity.shkd_tarfield,entryentity.shkd_tartier," + + "entryentity.shkd_tartype,entryentity.shkd_parentfield,entryentity.shkd_soufield,entryentity.shkd_defaultdata," + + "entryentity.shkd_required,entryentity.shkd_remarks,shkd_submiturl,shkd_banktype,shkd_startdate,shkd_orgs", + new QFilter("shkd_sourcebill", QCP.equals, "bei_elecreceipt").and( + new QFilter("shkd_targetsystem", QCP.equals, "BIP")).toArray()); + + DynamicObject ApiMapping = ApiMappingArray[0]; + + // 获取多选基础资料银行类别(推送银行类别) + ArrayList bankTypeArray = new ArrayList<>(); + DynamicObjectCollection bankTypeArr = ApiMapping.getDynamicObjectCollection("shkd_banktype"); + for (DynamicObject bankTypeData : bankTypeArr) { + DynamicObject bankType = bankTypeData.getDynamicObject("fbasedataid");//银行类别基础资料数据包 + if (bankType != null) { + String bankTypeName = bankType.getString("name");//银行类别名称 + bankTypeArray.add(bankTypeName); + } + } + + // 获取多选基础资料业务单元(推送组织) + ArrayList orgArray = new ArrayList<>(); + DynamicObjectCollection orgArr = ApiMapping.getDynamicObjectCollection("shkd_orgs"); + for (DynamicObject orgData : orgArr) { + orgArray.add(orgData.getLong("fbasedataid_Id")); + } + + // 获取推送开始时间 + Date shkdStartdate = ApiMapping.getDate("shkd_startdate"); + + DynamicObject[] elecreceiptArays = BusinessDataServiceHelper.load("bei_elecreceipt", + "id,billno,shkd_pushstatus,fileserverurl,bizdate,oppbank,oppbankname,description," + + "company,oppbanknumber,oppunit,detaildatetime,accountbank,amount,use,debitamount," + + "creditamount,detailid,uploadfilename,shkd_businessnumber,shkd_businessid,shkd_businessname," + + "filepath,receiptno,ismatch" + , new QFilter("bizdate", QCP.large_equals, shkdStartdate) .and("ismatch", QCP.equals, "1") - .and("shkd_pushstatus", QCP.not_equals, "已推送").toArray()); + .and("shkd_pushstatus", QCP.not_equals, "已推送") + .and("company", QCP.in, orgArray).toArray()); Arrays.stream(elecreceiptArays).forEach(dynamicObject -> { - DynamicObject companys = dynamicObject.getDynamicObject("company"); - if (("SIG1040100、SIG1040901、SIG1040201、SIG1090000、SIG1040700、SIG000101135、SIG1040600、SIG1040300、SIG000100079、SIG000003001、SIG1041000、SIG1040802、SIG000101558、SIG1040808、SIG1040804、SIG1040803、SIG1040801、SIG1040400、SIG104010101、SIG104010102、SIG1040202、SIG1040203、SIG1040204、SIG1040902、SIG000101822、SIG000101799").contains(companys.getString("number"))) { + //开户银行(银行账户) + DynamicObject accountbank = dynamicObject.getDynamicObject("accountbank"); + + //开户行(合作金融机构) + DynamicObject bank = accountbank.getDynamicObject("bank"); + + String bank_number = bank.getString("number"); + DynamicObject[] bd_finorginfo = BusinessDataServiceHelper.load("bd_finorginfo", "id,number,bank_cate", new QFilter("number", QCP.equals, bank_number).toArray()); + + //银行类别 + DynamicObject bank_cate = bd_finorginfo[0].getDynamicObject("bank_cate"); + + String bank_name = bank_cate.getString("name"); + + if (bankTypeArray.contains(bank_name)) { ApiService.paymentSlipsJson(dynamicObject, "BIP", dynamicObjectList, null); } }); @@ -185,26 +234,33 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { break; /** * 推送星空电子回单 + * 改造 */ case "bei_xkfile": - K3CloudApi k3CloudApi = new K3CloudApi(); ArrayList paymentObjects = new ArrayList<>(); //所有符合条件存在电子回单的付款单 ArrayList receivableObjects = new ArrayList<>(); //所有符合条件存在电子回单的收款单 + + + HashMap resultMap = null; + + DynamicObject[] shkd_apimappings = BusinessDataServiceHelper.load("shkd_apimapping", "id,billno," + + "shkd_name,shkd_sourcenumber,shkd_domainname,shkd_appkey,shkd_appsecret,shkd_token,shkd_url,shkd_bodytype," + + "shkd_sourcebill,shkd_targetsystem,entryentity,entryentity.shkd_tarfield,entryentity.shkd_tartier," + + "entryentity.shkd_tartype,entryentity.shkd_parentfield,entryentity.shkd_soufield,entryentity.shkd_defaultdata," + + "entryentity.shkd_required,entryentity.shkd_remarks,shkd_submiturl,shkd_xkusername,shkd_xkappid,shkd_xkacctid," + + "shkd_xkappsec,shkd_xkserverurl,shkd_banktype,shkd_orgs,shkd_startdate", + new QFilter("shkd_targetsystem", QCP.equals, "XK").toArray()); + + DynamicObject xkApiMapping = shkd_apimappings[0]; + + // 获取多选基础资料业务单元(推送组织) ArrayList orgIds = new ArrayList<>(); - orgIds.add(2122671180270829568L);//1 - orgIds.add(2122671723777131520L);//2 - orgIds.add(2122671728936125440L);//3 - orgIds.add(2122671726377598976L);//4 - orgIds.add(2122671730244747264L);//5 - orgIds.add(2122671185438212096L);//6 - orgIds.add(2122671186830721024L);//7 - orgIds.add(2122671188307116032L);//8 - orgIds.add(2122671190010003456L);//9 - orgIds.add(2122671195059946496L);//10 - orgIds.add(2122671198541217792L);//11 - orgIds.add(2122671200252493824L);//12 - orgIds.add(2122671722317512704L);//13 - // 付款处理 + DynamicObjectCollection orgsArr = xkApiMapping.getDynamicObjectCollection("shkd_orgs"); + for (DynamicObject orgData : orgsArr) { + orgIds.add(orgData.getLong("fbasedataid_Id")); + } + + // 筛选选出(未推送过回单、我们推送他们、他们推送我们的付款单) DynamicObject[] objects5 = BusinessDataServiceHelper.load("cas_paybill", "id," + "billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,entry.e_actamt,settletype," + "payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," + @@ -214,8 +270,29 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { .and("billstatus", QCP.equals, "D") .and("org", QCP.in, orgIds).toArray()); + for (DynamicObject dynamicObject : objects5) { + // 星空推送司库单据 + Object shkdBusinessnumber = dynamicObject.get("shkd_businessnumber"); + if (shkdBusinessnumber != null && shkdBusinessnumber != "") { + resultMap = getXKPushSKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("shkd_businessnumber")); + if ((boolean) resultMap.get("result")) { + paymentObjects.add(dynamicObject); + logger.info("付款处理:{},为星空推送司库单据,星空单据编码:{}", dynamicObject.getString("billno"), shkdBusinessnumber); + } + } else { + resultMap = getSKPushXKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("billno")); + if ((boolean) resultMap.get("result")) { + paymentObjects.add(dynamicObject); + logger.info("付款处理:{},为司库推送星空单据,星空单据编码:{}", dynamicObject.getString("billno"), resultMap.get("billNumber")); + } + } + } - Arrays.stream(objects5).forEach(dynamicObject -> { + // 获取k3cloudapi + K3CloudApi k3CloudApi = getK3CloudApi(xkApiMapping); + + // 筛选出符合条件的付款单,查询是否有回单,如果有则推送 + for (DynamicObject dynamicObject : paymentObjects) { // 银行收付处理 DynamicObjectCollection transDetails = QueryServiceHelper.query("bei_transdetail_cas", "id,receredway,debitamount,creditamount,recedbillentry.e_recedbillid", (new QFilter("recedbillentry.e_recedbillid", QCP.equals, dynamicObject.getPkValue())).and(new QFilter("recedbillentry.e_recedbilltype", QCP.equals, "cas_paybill")).toArray()); if (!transDetails.isEmpty()) { @@ -224,63 +301,48 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { if (!details.isEmpty()) { // 交易明细查询的电子回单关联标记字段 if (details.get(0).get("receiptno") != null) { - /** - * 1、第一步 通过查询到的符合条件的收款或者付款单单据编号查到对应星空的对应单据的单据ID和单据编码 - * 2、推送电子回单至星空对应单据 - */ - // 查 - DynamicObject[] objects = BusinessDataServiceHelper.load("shkd_apimapping", "id,billno," + - "shkd_name,shkd_sourcenumber,shkd_domainname,shkd_appkey,shkd_appsecret,shkd_token,shkd_url,shkd_bodytype," + - "shkd_sourcebill,shkd_targetsystem,entryentity,entryentity.shkd_tarfield,entryentity.shkd_tartier," + - "entryentity.shkd_tartype,entryentity.shkd_parentfield,entryentity.shkd_soufield,entryentity.shkd_defaultdata," + - "entryentity.shkd_required,entryentity.shkd_remarks,shkd_submiturl,shkd_xkusername,shkd_xkappid,shkd_xkacctid," + - "shkd_xkappsec,shkd_xkserverurl", - new QFilter("shkd_targetsystem", QCP.equals, "XK").toArray()); - String billNumber = dynamicObject.getString("billno"); - HashMap resultMap = getBillObject(objects[0], dynamicObject.getDataEntityType().getName(), billNumber); - if ((boolean) resultMap.get("result")) { - // 推 - DynamicObject[] dynamicObjects1 = BusinessDataServiceHelper.load("t_bei_elecreceipt", "id,receiptno", new QFilter("receiptno", QCP.equals, details.get(0).getString("receiptno")).toArray()); - DynamicObject dynamicObjectObj = BusinessDataServiceHelper.loadSingle(dynamicObjects1[0].getPkValue(), dynamicObjects1[0].getDynamicObjectType().getName()); - IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObjectObj); - List errMsgList = new ArrayList<>(); - DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," + - "fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," + - "bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getPkValue())}); - String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList); - Path path = Paths.get(dynamicObject.getString("filepath")); - String upfileName = path.getFileName().toString(); - logger.info("电子回单查询 → 电子回单附件推送接口 → 获取pdf地址:{}", pdfUrl); + // 推 + DynamicObject[] dynamicObjects1 = BusinessDataServiceHelper.load("t_bei_elecreceipt", "id,receiptno", new QFilter("receiptno", QCP.equals, details.get(0).getString("receiptno")).toArray()); + DynamicObject dynamicObjectObj = BusinessDataServiceHelper.loadSingle(dynamicObjects1[0].getPkValue(), dynamicObjects1[0].getDynamicObjectType().getName()); + IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObjectObj); + List errMsgList = new ArrayList<>(); + DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," + + "fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," + + "bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getPkValue())}); + String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList); + Path path = Paths.get(dynamicObject.getString("filepath")); + String upfileName = path.getFileName().toString(); + logger.info("付款单:{},电子回单查询 → 电子回单附件推送接口 → 获取pdf地址:{}", dynamicObject.getString("billno"), pdfUrl); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("FileName", upfileName);// 文件名 - jsonObject.put("FormId", "AP_PAYBILL");// 表单id(付款单:AP_PAYBILL) - jsonObject.put("IsLast", true);// 是否最后一次上传 - jsonObject.put("InterId", "单据内码");// 单据内码 - jsonObject.put("BillNO", dynamicObject.getString("billno"));// 单据编码 - jsonObject.put("AliasFileName", upfileName);// 附件别名 - jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("FileName", upfileName);// 文件名 + jsonObject.put("FormId", "AP_PAYBILL");// 表单id(付款单:AP_PAYBILL) + jsonObject.put("IsLast", true);// 是否最后一次上传 + jsonObject.put("InterId", resultMap.get("billId"));// 单据内码 + jsonObject.put("BillNO", resultMap.get("billNumber"));// 单据编码 + jsonObject.put("AliasFileName", upfileName);// 附件别名 + jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串 - String uploadAttachmentResult; - try { - uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString()); - JSONObject resultJson = JSON.parseObject(uploadAttachmentResult); - JSONObject Result = resultJson.getJSONObject("Result"); - JSONObject ResponseStatus = Result.getJSONObject("ResponseStatus"); - Boolean isSuccess = ResponseStatus.getBoolean("IsSuccess"); - if (isSuccess) { - dynamicObject.set("shkd_xkfilestatus", "已推送"); - paymentObjects.add(dynamicObject);// 付款处理单据收集 - logger.info("付款处理 → 电子回单推送星空,单据编码:"+ dynamicObject.getString("billno") +"\n附件上传结果:" + uploadAttachmentResult); - } - } catch (Exception e) { - throw new RuntimeException(e); + String uploadAttachmentResult; + try { + uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString()); + JSONObject resultJson = JSON.parseObject(uploadAttachmentResult); + JSONObject Result = resultJson.getJSONObject("Result"); + JSONObject ResponseStatus = Result.getJSONObject("ResponseStatus"); + Boolean isSuccess = ResponseStatus.getBoolean("IsSuccess"); + if (isSuccess) { + dynamicObject.set("shkd_xkfilestatus", "已推送"); + logger.info("付款处理 → 电子回单推送星空,单据编码:" + dynamicObject.getString("billno") + "\n附件上传结果:" + uploadAttachmentResult); + SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); } + } catch (Exception e) { + throw new RuntimeException(e); } } } } - }); + } + // 收款处理 DynamicObject[] objects6 = BusinessDataServiceHelper.load("cas_recbill", @@ -291,7 +353,16 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { .and("billstatus", QCP.equals, "D") .and("org", QCP.in, orgIds).toArray()); - Arrays.stream(objects6).forEach(dynamicObject -> { + for (DynamicObject dynamicObject : objects6) { + // 只有司库推送星空业务 + resultMap = getSKPushXKBill(xkApiMapping, dynamicObject.getDataEntityType().getName(), dynamicObject.getString("billno")); + if ((boolean) resultMap.get("result")) { + receivableObjects.add(dynamicObject); + logger.info("付款处理:{},为司库推送星空单据,星空单据编码:{}", dynamicObject.getString("billno"), resultMap.get("billNumber")); + } + } + + for (DynamicObject dynamicObject : receivableObjects) { // 银行收付处理 DynamicObjectCollection transDetails = QueryServiceHelper.query("bei_transdetail_cas", "id,receredway,debitamount,creditamount,recedbillentry.e_recedbillid", (new QFilter("recedbillentry.e_recedbillid", QCP.equals, dynamicObject.getPkValue())).and(new QFilter("recedbillentry.e_recedbilltype", QCP.equals, "cas_recbill")).toArray()); if (!transDetails.isEmpty()) { @@ -300,67 +371,48 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { if (!details.isEmpty()) { // 交易明细查询的电子回单关联标记字段 if (details.get(0).get("receiptno") != null) { - receivableObjects.add(dynamicObject);// 收款处理单据收集 - /** - * 1、第一步 通过查询到的符合条件的收款或者付款单单据编号查到对应星空的对应单据的单据ID和单据编码 - * 2、推送电子回单至星空对应单据 - */ - // 查 - DynamicObject[] objects = BusinessDataServiceHelper.load("shkd_apimapping", "id,billno," + - "shkd_name,shkd_sourcenumber,shkd_domainname,shkd_appkey,shkd_appsecret,shkd_token,shkd_url,shkd_bodytype," + - "shkd_sourcebill,shkd_targetsystem,entryentity,entryentity.shkd_tarfield,entryentity.shkd_tartier," + - "entryentity.shkd_tartype,entryentity.shkd_parentfield,entryentity.shkd_soufield,entryentity.shkd_defaultdata," + - "entryentity.shkd_required,entryentity.shkd_remarks,shkd_submiturl,shkd_xkusername,shkd_xkappid,shkd_xkacctid," + - "shkd_xkappsec,shkd_xkserverurl", - new QFilter("shkd_targetsystem", QCP.equals, "XK").toArray()); - String billNumber = dynamicObject.getString("billno"); - HashMap resultMap = getBillObject(objects[0], dynamicObject.getDataEntityType().getName(), billNumber); - if ((boolean) resultMap.get("result")) { - // 推 - DynamicObject[] dynamicObjects1 = BusinessDataServiceHelper.load("t_bei_elecreceipt", "id,receiptno", new QFilter("receiptno", QCP.equals, details.get(0).getString("receiptno")).toArray()); - DynamicObject dynamicObjectObj = BusinessDataServiceHelper.loadSingle(dynamicObjects1[0].getPkValue(), dynamicObjects1[0].getDynamicObjectType().getName()); - IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObjectObj); - List errMsgList = new ArrayList<>(); - DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," + - "fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," + - "bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getPkValue())}); - String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList); - Path path = Paths.get(dynamicObject.getString("filepath")); - String upfileName = path.getFileName().toString(); - logger.info("电子回单查询 → 电子回单附件推送接口 → 获取pdf地址:{}", pdfUrl); + // 推 + DynamicObject[] dynamicObjects1 = BusinessDataServiceHelper.load("t_bei_elecreceipt", "id,receiptno", new QFilter("receiptno", QCP.equals, details.get(0).getString("receiptno")).toArray()); + DynamicObject dynamicObjectObj = BusinessDataServiceHelper.loadSingle(dynamicObjects1[0].getPkValue(), dynamicObjects1[0].getDynamicObjectType().getName()); + IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObjectObj); + List errMsgList = new ArrayList<>(); + DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," + + "fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," + + "bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getPkValue())}); + String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList); + Path path = Paths.get(dynamicObject.getString("filepath")); + String upfileName = path.getFileName().toString(); + logger.info("收款单:{},电子回单查询 → 电子回单附件推送接口 → 获取pdf地址:{}", dynamicObject.getString("billno"), pdfUrl); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("FileName", upfileName);// 文件名 - jsonObject.put("FormId", "AP_PAYBILL");// 表单id(收款单:) - jsonObject.put("IsLast", true);// 是否最后一次上传 - jsonObject.put("InterId", "单据内码");// 单据内码 - jsonObject.put("BillNO", dynamicObject.getString("billno"));// 单据编码 - jsonObject.put("AliasFileName", upfileName);// 附件别名 - jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("FileName", upfileName);// 文件名 + jsonObject.put("FormId", "AR_RECEIVEBILL");// 表单id(收款单:AR_RECEIVEBILL) + jsonObject.put("IsLast", true);// 是否最后一次上传 + jsonObject.put("InterId", resultMap.get("billId"));// 单据内码 + jsonObject.put("BillNO", resultMap.get("billNumber"));// 单据编码 + jsonObject.put("AliasFileName", upfileName);// 附件别名 + jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串 - String uploadAttachmentResult; - try { - uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString()); + String uploadAttachmentResult; + try { + uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString()); - JSONObject resultJson = JSON.parseObject(uploadAttachmentResult); - JSONObject Result = resultJson.getJSONObject("Result"); - JSONObject ResponseStatus = Result.getJSONObject("ResponseStatus"); - Boolean isSuccess = ResponseStatus.getBoolean("IsSuccess"); - if (isSuccess) { - dynamicObject.set("shkd_xkfilestatus", "已推送"); - receivableObjects.add(dynamicObject);// 收款处理单据收集 - logger.info("收款处理 → 电子回单推送星空,单据编码:"+ dynamicObject.getString("billno") +"\n附件上传结果:" + uploadAttachmentResult); - } - } catch (Exception e) { - throw new RuntimeException(e); + JSONObject resultJson = JSON.parseObject(uploadAttachmentResult); + JSONObject Result = resultJson.getJSONObject("Result"); + JSONObject ResponseStatus = Result.getJSONObject("ResponseStatus"); + Boolean isSuccess = ResponseStatus.getBoolean("IsSuccess"); + if (isSuccess) { + dynamicObject.set("shkd_xkfilestatus", "已推送"); + logger.info("收款处理 → 电子回单推送星空,单据编码:" + dynamicObject.getString("billno") + "\n附件上传结果:" + uploadAttachmentResult); + SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); } + } catch (Exception e) { + throw new RuntimeException(e); } } } } - }); - SaveServiceHelper.save(paymentObjects.toArray(new DynamicObject[0])); - SaveServiceHelper.save(receivableObjects.toArray(new DynamicObject[0])); + } break; default: } @@ -390,6 +442,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { /** * 获取指定月份的第一天 + * * @param month * @return */ @@ -406,6 +459,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin { /** * 获取当前月份的第一天 + * * @return */ private static Date getAdjustedFirstDayOfCurrentMonth() {