Merge remote-tracking branch 'origin/main' into main

This commit is contained in:
陈绍鑫 2025-07-17 14:12:35 +08:00
commit e45c1e6707
5 changed files with 305 additions and 155 deletions

View File

@ -1055,13 +1055,13 @@ public class ApiService {
}
/**
* 查询星空收付款单
* 查询星空收付款单司库推送星空
* @param dataEntity API映射元数据对象
* @param billMark 单据类型收付款
* @param billNumber 单据编码
* @return
*/
public static HashMap<String, Object> getBillObject(DynamicObject dataEntity, String billMark, String billNumber) {
public static HashMap<String, Object> 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<String, Object> 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<String, Object> 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<List<Object>> lists = k3CloudApi.executeBillQuery(jsonObject.toString());
if (lists.isEmpty()) {
result.put("result", false);
} else {
List<Object> 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<String, Object> xkBillData = getBillObject(dataEntity, billMark, billNumber);
HashMap<String, Object> xkBillData = getSKPushXKBill(dataEntity, billMark, billNumber);
String uploadAttachmentResult = null;
if ((Boolean)xkBillData.get("result")) {
List<Map<String, String>> attachmentData = get_attachment(dataEntity);

View File

@ -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<ReportAdjustBillBatchSaveResDTO> 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<ReportAdjustDataSaveDTO> reportAdjustDataSaveDTOS = new ArrayList<>();
for (Object adjustProject : adjustProjects) {
HashMap<String, Object> adjustProjectHashMap = (HashMap<String, Object>) 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

View File

@ -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<String, Object> accepterbebank = new HashMap<>();
accepterbebank.put("number", map.get("acceptername"));
accepterbebank.put("name", map.get("acceptername"));
map.put("accepterbebank", accepterbebank);
break;
//商业承兑汇票

View File

@ -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,7 +121,7 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
// 获取想要推送单据编码
String billNumber = dataEntity.getString("shkd_sourcenumber");
logger.info("获取推送单据编码 → billNumber{}", billNumber);
HashMap<String, Object> map = getBillObject(dataEntity, billMark, billNumber);
HashMap<String, Object> 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<String> 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<Long> 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;
}

View File

@ -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<String> 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<Long> 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<DynamicObject> paymentObjects = new ArrayList<>(); //所有符合条件存在电子回单的付款单
ArrayList<DynamicObject> receivableObjects = new ArrayList<>(); //所有符合条件存在电子回单的收款单
HashMap<String, Object> 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<Long> 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,21 +301,6 @@ 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<String, Object> 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());
@ -250,14 +312,14 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList);
Path path = Paths.get(dynamicObject.getString("filepath"));
String upfileName = path.getFileName().toString();
logger.info("电子回单查询 → 电子回单附件推送接口 → 获取pdf地址{}", pdfUrl);
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("InterId", resultMap.get("billId"));// 单据内码
jsonObject.put("BillNO", resultMap.get("billNumber"));// 单据编码
jsonObject.put("AliasFileName", upfileName);// 附件别名
jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串
@ -270,8 +332,8 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
Boolean isSuccess = ResponseStatus.getBoolean("IsSuccess");
if (isSuccess) {
dynamicObject.set("shkd_xkfilestatus", "已推送");
paymentObjects.add(dynamicObject);// 付款处理单据收集
logger.info("付款处理 → 电子回单推送星空,单据编码:" + dynamicObject.getString("billno") + "\n附件上传结果" + uploadAttachmentResult);
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
} catch (Exception e) {
throw new RuntimeException(e);
@ -280,7 +342,7 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
}
}
}
});
// 收款处理
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,22 +371,6 @@ 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<String, Object> 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());
@ -327,14 +382,14 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList);
Path path = Paths.get(dynamicObject.getString("filepath"));
String upfileName = path.getFileName().toString();
logger.info("电子回单查询 → 电子回单附件推送接口 → 获取pdf地址{}", pdfUrl);
logger.info("收款单:{}电子回单查询 → 电子回单附件推送接口 → 获取pdf地址{}", dynamicObject.getString("billno"), pdfUrl);
JSONObject jsonObject = new JSONObject();
jsonObject.put("FileName", upfileName);// 文件名
jsonObject.put("FormId", "AP_PAYBILL");// 表单id收款单
jsonObject.put("FormId", "AR_RECEIVEBILL");// 表单id收款单AR_RECEIVEBILL
jsonObject.put("IsLast", true);// 是否最后一次上传
jsonObject.put("InterId", "单据内码");// 单据内码
jsonObject.put("BillNO", dynamicObject.getString("billno"));// 单据编码
jsonObject.put("InterId", resultMap.get("billId"));// 单据内码
jsonObject.put("BillNO", resultMap.get("billNumber"));// 单据编码
jsonObject.put("AliasFileName", upfileName);// 附件别名
jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串
@ -348,8 +403,8 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
Boolean isSuccess = ResponseStatus.getBoolean("IsSuccess");
if (isSuccess) {
dynamicObject.set("shkd_xkfilestatus", "已推送");
receivableObjects.add(dynamicObject);// 收款处理单据收集
logger.info("收款处理 → 电子回单推送星空,单据编码:" + dynamicObject.getString("billno") + "\n附件上传结果" + uploadAttachmentResult);
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
}
} catch (Exception e) {
throw new RuntimeException(e);
@ -358,9 +413,6 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
}
}
}
});
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() {