资金计划优化日志输出

This commit is contained in:
yuxueliang0813 2025-08-14 21:51:18 +08:00
parent 9e88a03b69
commit 63608afa17
2 changed files with 77 additions and 17 deletions

View File

@ -54,7 +54,7 @@ public class FundPlanCollectionTask extends AbstractTask implements Plugin {
//调用SAP应收已清接口按照事业部月份计划科目汇总金额
Map<String, BigDecimal> acctamountMap = getSapARClearedData();
if(acctamountMap == null || acctamountMap.isEmpty()){
logger.info("未获取到月份、计划科目汇总金额");
logger.info("SAP未获取到月份、计划科目汇总金额");
return;
}
ReportDataSDKService reportService = new ReportDataSDKService();//报表服务用于写入或者查询报表数据
@ -75,10 +75,10 @@ public class FundPlanCollectionTask extends AbstractTask implements Plugin {
for(DynamicObject doinfo : collection){
doinfo = BusinessDataServiceHelper.loadSingle(doinfo.getPkValue(),entityName);
billno = doinfo.getString("billno");
logger.info("资金计划编制单号"+billno);
logger.info("SAP资金计划编制单号"+billno);
maindimentrys = doinfo.getDynamicObjectCollection("maindimentry");//主维度分录
if(maindimentrys.isEmpty()){
logger.info("资金计划编制单主维度分录为空,不继续反写"+billno);
logger.info("SAP资金计划编制单主维度分录为空,不继续反写"+billno);
continue;
}
json_obj = new JSONObject();
@ -114,9 +114,9 @@ public class FundPlanCollectionTask extends AbstractTask implements Plugin {
//PLANREFERENCEAMT 计划参考值 ACTMAT 已执行额度
mmInfo.put("templateMetricType","ACTMAT");//度量值预置类型
mmInfo.put("amount",acctamountMap.get(months+accountnum));//写入金额-从SAP接口中汇总
logger.info(billno+"收款计划实际数入参 months "+months);
logger.info(billno+"收款计划实际数入参 accountnum "+accountnum);
logger.info(billno+"收款计划实际数"+acctamountMap.get(months+accountnum));
logger.info(billno+"SAP收款计划实际数入参 months "+months);
logger.info(billno+"SAP收款计划实际数入参 accountnum "+accountnum);
logger.info(billno+"SAP收款计划实际数"+acctamountMap.get(months+accountnum));
mmInfo.put("amountUnit","one");//金额单位 one元 thousand千元 ten_thousand 万元
mms.add(mmInfo);
itemInfo.put("metricMembers",mms);//度量值列表
@ -124,11 +124,11 @@ public class FundPlanCollectionTask extends AbstractTask implements Plugin {
}
json_obj.put("batchSaveData",items);//报表批量写入数据
logger.info(billno+"收款计划实际数入参"+json_obj.toJSONString());
logger.info(billno+"SAP收款计划实际数入参"+json_obj.toJSONString());
pdsp = gson.fromJson(json_obj.toJSONString(), ReportDataBatchSaveParam.class);
result = reportService.batchSaveReportData(SerializationUtils.serializeToBase64(pdsp));
frv = SerializationUtils.deSerializeFromBase64(result);
logger.info(billno+"收款计划实际数反写结果"+frv.getCode()+frv.getMessage());
logger.info(billno+"SAP收款计划实际数反写结果"+frv.getCode()+frv.getMessage());
}
}
}
@ -184,6 +184,8 @@ public class FundPlanCollectionTask extends AbstractTask implements Plugin {
acctamountMap.put(mapkey,amount);
}
logger.info("SAP应收已清对应资金科目"+mapkey);
logger.info("SAP应收已清会计科目"+sapresult.getString("HKONT"));
logger.info("SAP应收已清金额"+amount);
//根据品牌和事业部关系将该笔金额归属到事业部上
// ppsybinfo = BusinessDataServiceHelper.loadSingleFromCache(ppsybName,new QFilter[]{new QFilter("shjh_productgroup.number", QCP.equals, productnum)});
// if(ppsybinfo != null){

View File

@ -7,6 +7,8 @@ import kd.bos.context.RequestContext;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.db.DB;
import kd.bos.db.DBRoute;
import kd.bos.entity.operate.OperateOptionConst;
import kd.bos.exception.KDException;
import kd.bos.logging.Log;
@ -32,6 +34,7 @@ import java.util.*;
/**
* 定时任务更新付款资金计划的计划参考数
* 目前仅有从sap获取应付未清数据还需要增加已经在资金系统内的付款申请单数据
* @author yuxueliang
*/
public class FundPlanPaymentTask extends AbstractTask implements Plugin {
@ -40,6 +43,9 @@ public class FundPlanPaymentTask extends AbstractTask implements Plugin {
private static final String payReceName = "shjh_request_account";//付款申请单_资金计划科目配置表
// private static final String ppsybName = "shjh_ejbm_syb";//二级部门和事业部对应关系 tk_shjh_pg
//非关闭付款申请单表头到期日范围内的金额合计按照资金科目编号+到期日年月进行分组
private static final String paysql = "select tfm.fnumber,to_char(apbl.fk_shjh_duedate,'yyyy-MM'),sum(apbl.fapplyamount) from t_ap_applypaybill apbl left join t_fpm_member tfm on tfm.fid=apbl.fk_shjh_membersubject where apbl.fk_shjh_membersubject>0 and apbl.fbillstatus<>'D' and to_char(apbl.fk_shjh_duedate,'yyyyMMDD')>=? and to_char(apbl.fk_shjh_duedate,'yyyyMMDD')<=? GROUP by tfm.fnumber,to_char(apbl.fk_shjh_duedate,'yyyy-MM')";
private static final Log logger = LogFactory.getLog(FundPlanPaymentTask.class);
private Gson gson = new Gson();//用于将json格式化为对象
@ -56,7 +62,7 @@ public class FundPlanPaymentTask extends AbstractTask implements Plugin {
//调用SAP应付未清接口按照事业部月份计划科目汇总金额
Map<String, BigDecimal> acctamountMap = getSapAR();
if(acctamountMap == null || acctamountMap.isEmpty()){
logger.info("未获取到月份、计划科目汇总金额");
logger.info("SAP未获取到月份、计划科目汇总金额");
return;
}
ReportDataSDKService reportService = new ReportDataSDKService();//报表服务用于写入或者查询报表数据
@ -90,7 +96,7 @@ public class FundPlanPaymentTask extends AbstractTask implements Plugin {
doinfo = BusinessDataServiceHelper.loadSingle(doinfo.getPkValue(),entityName);
maindimentrys = doinfo.getDynamicObjectCollection("maindimentry");//主维度分录
if(maindimentrys.isEmpty()){
logger.info("资金计划编制主维度分录为空"+doinfo.getString("billno"));
logger.info("SAP资金计划编制主维度分录为空"+doinfo.getString("billno"));
continue;
}
}else{
@ -98,7 +104,7 @@ public class FundPlanPaymentTask extends AbstractTask implements Plugin {
maindimentrys = doinfo.getDynamicObjectCollection("maindimentry");//主维度分录
}
billno = doinfo.getString("billno");
logger.info("资金计划编制单号"+billno);
logger.info("SAP资金计划编制单号"+billno);
json_obj = new JSONObject();
//体系编号 非必填时系统通过编报主体 code确定需保证一个编报主体只关联一个体系
json_obj.put("systemCode",doinfo.getDynamicObject("bodysys").getString("number"));
@ -132,9 +138,9 @@ public class FundPlanPaymentTask extends AbstractTask implements Plugin {
//PLANREFERENCEAMT 计划参考值 ACTMAT 已执行额度
mmInfo.put("templateMetricType","PLANREFERENCEAMT");//度量值预置类型
mmInfo.put("amount",acctamountMap.get(months+accountnum));//写入金额-从SAP接口中获取
logger.info(billno+"付款计划参考数入参 months "+months);
logger.info(billno+"付款计划参考数入参 accountnum "+accountnum);
logger.info(billno+"付款计划参考数"+acctamountMap.get(months+accountnum));
logger.info(billno+"SAP付款计划参考数入参 months "+months);
logger.info(billno+"SAP付款计划参考数入参 accountnum "+accountnum);
logger.info(billno+"SAP付款计划参考数"+acctamountMap.get(months+accountnum));
mmInfo.put("amountUnit","one");//金额单位 one元 thousand千元 ten_thousand 万元
mms.add(mmInfo);
itemInfo.put("metricMembers",mms);//度量值列表
@ -142,11 +148,11 @@ public class FundPlanPaymentTask extends AbstractTask implements Plugin {
}
json_obj.put("batchSaveData",items);//报表批量写入数据
logger.info(billno+"付款计划参考数入参"+json_obj.toJSONString());
logger.info(billno+"SAP付款计划参考数入参"+json_obj.toJSONString());
pdsp = gson.fromJson(json_obj.toJSONString(), ReportDataBatchSaveParam.class);
result = reportService.batchSaveReportData(SerializationUtils.serializeToBase64(pdsp));
frv = SerializationUtils.deSerializeFromBase64(result);
logger.info(billno+"付款计划参考数反写结果"+frv.getCode()+frv.getMessage());
logger.info(billno+"SAP付款计划参考数反写结果"+frv.getCode()+frv.getMessage());
}
}
}
@ -176,7 +182,7 @@ public class FundPlanPaymentTask extends AbstractTask implements Plugin {
List<DynamicObject> pzblist = getPzb();
if(pzblist.isEmpty()){
//配置表没有对应规则返回null
logger.info("付款申请单配置表没有对应规则");
logger.info("SAP付款申请单配置表没有对应规则");
return null;
}
JSONArray items = data.getJSONArray("IT_ITEM");
@ -210,6 +216,8 @@ public class FundPlanPaymentTask extends AbstractTask implements Plugin {
acctamountMap.put(mapkey,amount);
}
logger.info("SAP应付凭证对应资金科目"+mapkey);
logger.info("SAP应付凭证会计科目"+sapresult.getString("HKONT"));
logger.info("SAP应付未清金额"+amount);
//根据二级部门和事业部关系将该笔金额归属到事业部上
// ppsybinfo = BusinessDataServiceHelper.loadSingleFromCache(ppsybName,new QFilter[]{new QFilter("shjh_orgdept.number", QCP.equals, deptnum)});
// if(ppsybinfo != null){
@ -225,6 +233,56 @@ public class FundPlanPaymentTask extends AbstractTask implements Plugin {
// logger.info("根据SAP的二级部门编号未找到对应的二级部门和事业部关系"+deptnum);
// }
}
//追加付款申请单金额计算逻辑
logger.info("SAP追加付款申请单金额之前大小"+acctamountMap.size());
DB.query(DBRoute.of("fi"),paysql,new Object[]{duedate_starts,duedate_ends},(rs) -> {
String sql_months;//月份
String sql_mapkey;
BigDecimal sql_amount;
int rows = 0;
while(rs.next()) {
sql_months = JhzjUtils.getFundPeriodBySAPDate(rs.getString(2));
sql_mapkey = sql_months+rs.getString(1);
sql_amount = rs.getBigDecimal(3);//付款申请单合计金额
if(acctamountMap.containsKey(sql_mapkey)){
acctamountMap.put(sql_mapkey, JhzjUtils.addTwoAmount(sql_amount,acctamountMap.get(sql_mapkey)));
}else{
acctamountMap.put(sql_mapkey,sql_amount);
}
rows++;
}
logger.info("SAP付款申请单金额查询结果集大小"+rows);
return acctamountMap;
});
logger.info("SAP追加付款申请单金额之后大小"+acctamountMap.size());
// Map<String, BigDecimal> payreqamouts = DB.query(DBRoute.of("fi"),paysql,new Object[]{duedate_starts,duedate_ends},(rs) -> {
// Map<String, BigDecimal> reqamouts = new HashMap<>();
// String sql_months;//月份
// String sql_mapkey;
// BigDecimal sql_amount;
// while(rs.next()) {
// sql_months = JhzjUtils.getFundPeriodBySAPDate(rs.getString(2));
// sql_mapkey = sql_months+rs.getString(1);
// sql_amount = rs.getBigDecimal(3);//付款申请单合计金额
// if(reqamouts.containsKey(sql_mapkey)){
// reqamouts.put(sql_mapkey, JhzjUtils.addTwoAmount(sql_amount,reqamouts.get(sql_mapkey)));
// }else{
// reqamouts.put(sql_mapkey,sql_amount);
// }
// }
// return reqamouts;
// });
// logger.info("付款申请单资金计划金额集合大小"+payreqamouts.size());
// //遍历付款申请单的金额map 以追加到acctamountMap
// for (Map.Entry<String, BigDecimal> entry : payreqamouts.entrySet()) {
// if(acctamountMap.containsKey(entry.getKey())){
// //sap解析的数据中包含付款申请单则两个map金额相加
// acctamountMap.put(entry.getKey(), JhzjUtils.addTwoAmount(entry.getValue(),acctamountMap.get(entry.getKey())));
// }else{
// //sap解析的数据中不包含付款申请单则直接put进acctamountMap
// acctamountMap.put(entry.getKey(), entry.getValue());
// }
// }
return acctamountMap;
}
}