资金日表取数逻辑更新
This commit is contained in:
parent
4f17a17f37
commit
7222181761
|
@ -17,6 +17,7 @@ import kd.bos.servicehelper.org.OrgUnitServiceHelper;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
|
@ -35,9 +36,9 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
||||||
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
|
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
|
||||||
|
|
||||||
String[] fileNames = {"shkd_ordinal","shkd_company","shkd_init_original","shkd_income_original","shkd_expend_original",
|
String[] fileNames = {"shkd_ordinal","shkd_company","shkd_init_original","shkd_income_original","shkd_expend_original",
|
||||||
"shkd_period_original","shkd_currencyfield"};//字段标识数组
|
"shkd_period_original","shkd_currencyfield","shkd_datatype"};//字段标识数组
|
||||||
DataType[] dataTypes = {DataType.StringType,DataType.StringType,DataType.BigDecimalType,DataType.BigDecimalType,DataType.BigDecimalType,
|
DataType[] dataTypes = {DataType.StringType,DataType.StringType,DataType.BigDecimalType,DataType.BigDecimalType,DataType.BigDecimalType,
|
||||||
DataType.BigDecimalType,DataType.LongType};//字段类型数组
|
DataType.BigDecimalType,DataType.LongType,DataType.StringType};//字段类型数组
|
||||||
|
|
||||||
//获取过滤条件集合
|
//获取过滤条件集合
|
||||||
Map<String, Object> paramMap = this.transQueryParam(reportQueryParam);
|
Map<String, Object> paramMap = this.transQueryParam(reportQueryParam);
|
||||||
|
@ -49,6 +50,8 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
||||||
Date endDate = (Date)paramMap.get("shkd_enddate");//结束时间
|
Date endDate = (Date)paramMap.get("shkd_enddate");//结束时间
|
||||||
DynamicObject orgcurrency = (DynamicObject) paramMap.get("shkd_orgcurrency");
|
DynamicObject orgcurrency = (DynamicObject) paramMap.get("shkd_orgcurrency");
|
||||||
DynamicObject exratetable = (DynamicObject) paramMap.get("shkd_exratetable");
|
DynamicObject exratetable = (DynamicObject) paramMap.get("shkd_exratetable");
|
||||||
|
String shkd_unit = paramMap.get("shkd_unit").toString();//单位
|
||||||
|
|
||||||
String groupName = null;
|
String groupName = null;
|
||||||
|
|
||||||
HashMap<Long, ArrayList<Long>> groupMap = new HashMap<>();//集团id集合
|
HashMap<Long, ArrayList<Long>> groupMap = new HashMap<>();//集团id集合
|
||||||
|
@ -76,9 +79,35 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
||||||
}
|
}
|
||||||
int i = 0;
|
int i = 0;
|
||||||
if(firmParams != null && firmParams.size() > 0){
|
if(firmParams != null && firmParams.size() > 0){
|
||||||
for (Object[] firmParam : firmParams) {
|
if ("0".equals(shkd_unit)) {//当单位为万元时需进行单位换算
|
||||||
firmParam[0] = i+1;
|
for (Object[] firmParam : firmParams) {
|
||||||
i++;
|
firmParam[0] = i+1;
|
||||||
|
if ("2".equals(firmParam[7]) || "3".equals(firmParam[7])){//当行数据为公司资金数据或合计资金数据时,根据单位判断是否计算
|
||||||
|
BigDecimal value1 = (BigDecimal) firmParam[2];
|
||||||
|
BigDecimal value2 = (BigDecimal) firmParam[3];
|
||||||
|
BigDecimal value3 = (BigDecimal) firmParam[4];
|
||||||
|
BigDecimal value4 = (BigDecimal) firmParam[5];
|
||||||
|
BigDecimal divisor = new BigDecimal("10000.00");
|
||||||
|
if (value1 != null){
|
||||||
|
firmParam[2] = value1.divide(divisor ,2, RoundingMode.HALF_UP);
|
||||||
|
}
|
||||||
|
if (value2 != null){
|
||||||
|
firmParam[3] = value2.divide(divisor ,2, RoundingMode.HALF_UP);
|
||||||
|
}
|
||||||
|
if (value3 != null){
|
||||||
|
firmParam[4] = value3.divide(divisor ,2, RoundingMode.HALF_UP);
|
||||||
|
}
|
||||||
|
if (value4 != null){
|
||||||
|
firmParam[5] = value4.divide(divisor ,2, RoundingMode.HALF_UP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
for (Object[] firmParam : firmParams) {
|
||||||
|
firmParam[0] = i+1;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RowMeta row = RowMetaFactory.createRowMeta(fileNames, dataTypes);
|
RowMeta row = RowMetaFactory.createRowMeta(fileNames, dataTypes);
|
||||||
|
@ -196,14 +225,17 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
||||||
firmParams = new ArrayList<Object[]>(cas_cashmgtinits.length);//多公司数据集合
|
firmParams = new ArrayList<Object[]>(cas_cashmgtinits.length);//多公司数据集合
|
||||||
BigDecimal payTotal = BigDecimal.ZERO; //总计 期间支出合计
|
BigDecimal payTotal = BigDecimal.ZERO; //总计 期间支出合计
|
||||||
BigDecimal recTotal = BigDecimal.ZERO; //总计 期间收入合计
|
BigDecimal recTotal = BigDecimal.ZERO; //总计 期间收入合计
|
||||||
|
BigDecimal startBalance = BigDecimal.ZERO;//总计 期初余额合计
|
||||||
|
BigDecimal endBalance = BigDecimal.ZERO;//总计 期间余额合计
|
||||||
BigDecimal payLB = BigDecimal.ZERO; //内部往来,支出合计
|
BigDecimal payLB = BigDecimal.ZERO; //内部往来,支出合计
|
||||||
BigDecimal recLB = BigDecimal.ZERO; //内部往来 期间收入合计
|
BigDecimal recLB = BigDecimal.ZERO; //内部往来 期间收入合计
|
||||||
BigDecimal payNet = BigDecimal.ZERO;//支出净额
|
BigDecimal payNet = BigDecimal.ZERO;//支出净额
|
||||||
BigDecimal recNet = BigDecimal.ZERO;//收入净额
|
BigDecimal recNet = BigDecimal.ZERO;//收入净额
|
||||||
//若是集团,需要在第一行拼接第一行的数据
|
//若是集团,需要在第一行拼接第一行的数据
|
||||||
if("group".equals(shkd_queryorgtype)&& cas_cashmgtinits.length > 0){
|
if("group".equals(shkd_queryorgtype)&& cas_cashmgtinits.length > 0){
|
||||||
Object[] firmParam = new Object[7];//存放公司数据
|
Object[] firmParam = new Object[8];//存放公司数据
|
||||||
firmParam[1] = groupName;//存放集团名称,先优先考虑单集团的凭借
|
firmParam[1] = groupName;//存放集团名称,先优先考虑单集团的凭借
|
||||||
|
firmParam[7] = "1";
|
||||||
firmParams.add(firmParam);
|
firmParams.add(firmParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,7 +247,7 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
||||||
Date begindate = bd_period.getDate("begindate");//获取期初时间
|
Date begindate = bd_period.getDate("begindate");//获取期初时间
|
||||||
DynamicObject org = cas_cashmgtinits[i].getDynamicObject("org");
|
DynamicObject org = cas_cashmgtinits[i].getDynamicObject("org");
|
||||||
if (org != null){//当前组织不为空时,查询对应付款单和收款单,计算收入
|
if (org != null){//当前组织不为空时,查询对应付款单和收款单,计算收入
|
||||||
Object[] firmParam = new Object[7];//存放公司数据
|
Object[] firmParam = new Object[8];//存放公司数据
|
||||||
String name = org.getString("name");
|
String name = org.getString("name");
|
||||||
Object orgPkValue = org.getPkValue();
|
Object orgPkValue = org.getPkValue();
|
||||||
firmParam[1] = name;//存放公司名称
|
firmParam[1] = name;//存放公司名称
|
||||||
|
@ -273,6 +305,7 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
||||||
|
|
||||||
//期初余额 = 初始余额 + 期初前收入 - 期初前支出
|
//期初余额 = 初始余额 + 期初前收入 - 期初前支出
|
||||||
BigDecimal startAmount = journalbalance_total.add(recAmountTotal).subtract(payAmountTotal);
|
BigDecimal startAmount = journalbalance_total.add(recAmountTotal).subtract(payAmountTotal);
|
||||||
|
startBalance = startBalance.add(startAmount);
|
||||||
firmParam[2] = startAmount;
|
firmParam[2] = startAmount;
|
||||||
|
|
||||||
if (endDate == null){
|
if (endDate == null){
|
||||||
|
@ -292,7 +325,7 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
||||||
}
|
}
|
||||||
per_recQF.and("payeedate",QCP.large_equals,startDate);//收款日期payeedate 业务日期bizdate
|
per_recQF.and("payeedate",QCP.large_equals,startDate);//收款日期payeedate 业务日期bizdate
|
||||||
per_recQF.and("payeedate",QCP.less_equals,overDate);
|
per_recQF.and("payeedate",QCP.less_equals,overDate);
|
||||||
DynamicObject[] per_cas_recbills = BusinessDataServiceHelper.load("cas_recbill", "id,billno,org,org.id,org.number,actrecamt,currency,payertype,customerf7,customerf7,payer,receivingtype", per_recQF.toArray());
|
DynamicObject[] per_cas_recbills = BusinessDataServiceHelper.load("cas_recbill", "id,billno,org,org.id,org.number,actrecamt,currency,payertype,payer,receivingtype", per_recQF.toArray());
|
||||||
BigDecimal transactions = this.getTransactions(per_cas_recbills);
|
BigDecimal transactions = this.getTransactions(per_cas_recbills);
|
||||||
recLB =recLB.add(transactions); //内部往来收入合计
|
recLB =recLB.add(transactions); //内部往来收入合计
|
||||||
|
|
||||||
|
@ -330,7 +363,9 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
||||||
|
|
||||||
//期间余额 = 期初余额 +期间收入 -期间支出
|
//期间余额 = 期初余额 +期间收入 -期间支出
|
||||||
BigDecimal endAmount = startAmount.add(perRecAmountTotal).subtract(perPayAmountTotal);
|
BigDecimal endAmount = startAmount.add(perRecAmountTotal).subtract(perPayAmountTotal);
|
||||||
|
endBalance = endBalance.add(endAmount);
|
||||||
firmParam[5] = endAmount;
|
firmParam[5] = endAmount;
|
||||||
|
firmParam[7] = "2";
|
||||||
firmParams.add(firmParam);
|
firmParams.add(firmParam);
|
||||||
payTotal = payTotal.add(perPayAmountTotal);
|
payTotal = payTotal.add(perPayAmountTotal);
|
||||||
recTotal = recTotal.add(perRecAmountTotal);
|
recTotal = recTotal.add(perRecAmountTotal);
|
||||||
|
@ -341,24 +376,29 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
||||||
}
|
}
|
||||||
if ("group".equals(shkd_queryorgtype)&& cas_cashmgtinits.length > 0){
|
if ("group".equals(shkd_queryorgtype)&& cas_cashmgtinits.length > 0){
|
||||||
//总计行的组装
|
//总计行的组装
|
||||||
Object[] firmParam = new Object[7];//存放公司数据
|
Object[] firmParam = new Object[8];//存放公司数据
|
||||||
firmParam[1] = "总计";
|
firmParam[1] = "总计";
|
||||||
|
firmParam[2] = startBalance; // 期初余额总计
|
||||||
firmParam[3] = recTotal; //今日收入合计
|
firmParam[3] = recTotal; //今日收入合计
|
||||||
firmParam[4] = payTotal; //今日收入合计
|
firmParam[4] = payTotal; //今日收入合计
|
||||||
|
firmParam[5] = endBalance;// 期间余额总计
|
||||||
|
firmParam[7] = "3";
|
||||||
firmParams.add(firmParam);
|
firmParams.add(firmParam);
|
||||||
|
|
||||||
Object[] firmParam2 = new Object[7];//存放内部往来数据
|
Object[] firmParam2 = new Object[8];//存放内部往来数据
|
||||||
firmParam2[1] = "内部往来";
|
firmParam2[1] = "内部往来";
|
||||||
firmParam2[3] = recLB; //收入(内部往来)合计
|
firmParam2[3] = recLB; //收入(内部往来)合计
|
||||||
firmParam2[4] = payLB; //支出(内部往来)合计
|
firmParam2[4] = payLB; //支出(内部往来)合计
|
||||||
|
firmParam2[7] = "3";
|
||||||
firmParams.add(firmParam2);
|
firmParams.add(firmParam2);
|
||||||
//内部收支净额的组装
|
//内部收支净额的组装
|
||||||
Object[] firmParam3 = new Object[7];//存放内部往来数据
|
Object[] firmParam3 = new Object[8];//存放内部往来数据
|
||||||
firmParam3[1] = "收支净额";
|
firmParam3[1] = "收支净额";
|
||||||
recNet = recTotal.subtract(recLB);//收入净额
|
recNet = recTotal.subtract(recLB);//收入净额
|
||||||
payNet = payTotal.subtract(payLB);//支出净额
|
payNet = payTotal.subtract(payLB);//支出净额
|
||||||
firmParam3[3] = recNet; //收入(内部往来)合计
|
firmParam3[3] = recNet; //收入(内部往来)合计
|
||||||
firmParam3[4] = payNet; //支出(内部往来)合计
|
firmParam3[4] = payNet; //支出(内部往来)合计
|
||||||
|
firmParam3[7] = "3";
|
||||||
firmParams.add(firmParam3);
|
firmParams.add(firmParam3);
|
||||||
}
|
}
|
||||||
return firmParams;
|
return firmParams;
|
||||||
|
|
Loading…
Reference in New Issue