资金日表取数逻辑更新
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 java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
|
@ -35,9 +36,9 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
|||
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
|
||||
|
||||
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.BigDecimalType,DataType.LongType};//字段类型数组
|
||||
DataType.BigDecimalType,DataType.LongType,DataType.StringType};//字段类型数组
|
||||
|
||||
//获取过滤条件集合
|
||||
Map<String, Object> paramMap = this.transQueryParam(reportQueryParam);
|
||||
|
@ -49,6 +50,8 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
|||
Date endDate = (Date)paramMap.get("shkd_enddate");//结束时间
|
||||
DynamicObject orgcurrency = (DynamicObject) paramMap.get("shkd_orgcurrency");
|
||||
DynamicObject exratetable = (DynamicObject) paramMap.get("shkd_exratetable");
|
||||
String shkd_unit = paramMap.get("shkd_unit").toString();//单位
|
||||
|
||||
String groupName = null;
|
||||
|
||||
HashMap<Long, ArrayList<Long>> groupMap = new HashMap<>();//集团id集合
|
||||
|
@ -76,9 +79,35 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
|||
}
|
||||
int i = 0;
|
||||
if(firmParams != null && firmParams.size() > 0){
|
||||
for (Object[] firmParam : firmParams) {
|
||||
firmParam[0] = i+1;
|
||||
i++;
|
||||
if ("0".equals(shkd_unit)) {//当单位为万元时需进行单位换算
|
||||
for (Object[] firmParam : firmParams) {
|
||||
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);
|
||||
|
@ -196,14 +225,17 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
|||
firmParams = new ArrayList<Object[]>(cas_cashmgtinits.length);//多公司数据集合
|
||||
BigDecimal payTotal = BigDecimal.ZERO; //总计 期间支出合计
|
||||
BigDecimal recTotal = BigDecimal.ZERO; //总计 期间收入合计
|
||||
BigDecimal startBalance = BigDecimal.ZERO;//总计 期初余额合计
|
||||
BigDecimal endBalance = BigDecimal.ZERO;//总计 期间余额合计
|
||||
BigDecimal payLB = BigDecimal.ZERO; //内部往来,支出合计
|
||||
BigDecimal recLB = BigDecimal.ZERO; //内部往来 期间收入合计
|
||||
BigDecimal payNet = BigDecimal.ZERO;//支出净额
|
||||
BigDecimal recNet = BigDecimal.ZERO;//收入净额
|
||||
//若是集团,需要在第一行拼接第一行的数据
|
||||
if("group".equals(shkd_queryorgtype)&& cas_cashmgtinits.length > 0){
|
||||
Object[] firmParam = new Object[7];//存放公司数据
|
||||
Object[] firmParam = new Object[8];//存放公司数据
|
||||
firmParam[1] = groupName;//存放集团名称,先优先考虑单集团的凭借
|
||||
firmParam[7] = "1";
|
||||
firmParams.add(firmParam);
|
||||
}
|
||||
|
||||
|
@ -215,7 +247,7 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
|||
Date begindate = bd_period.getDate("begindate");//获取期初时间
|
||||
DynamicObject org = cas_cashmgtinits[i].getDynamicObject("org");
|
||||
if (org != null){//当前组织不为空时,查询对应付款单和收款单,计算收入
|
||||
Object[] firmParam = new Object[7];//存放公司数据
|
||||
Object[] firmParam = new Object[8];//存放公司数据
|
||||
String name = org.getString("name");
|
||||
Object orgPkValue = org.getPkValue();
|
||||
firmParam[1] = name;//存放公司名称
|
||||
|
@ -273,6 +305,7 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
|||
|
||||
//期初余额 = 初始余额 + 期初前收入 - 期初前支出
|
||||
BigDecimal startAmount = journalbalance_total.add(recAmountTotal).subtract(payAmountTotal);
|
||||
startBalance = startBalance.add(startAmount);
|
||||
firmParam[2] = startAmount;
|
||||
|
||||
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.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);
|
||||
recLB =recLB.add(transactions); //内部往来收入合计
|
||||
|
||||
|
@ -330,7 +363,9 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
|||
|
||||
//期间余额 = 期初余额 +期间收入 -期间支出
|
||||
BigDecimal endAmount = startAmount.add(perRecAmountTotal).subtract(perPayAmountTotal);
|
||||
endBalance = endBalance.add(endAmount);
|
||||
firmParam[5] = endAmount;
|
||||
firmParam[7] = "2";
|
||||
firmParams.add(firmParam);
|
||||
payTotal = payTotal.add(perPayAmountTotal);
|
||||
recTotal = recTotal.add(perRecAmountTotal);
|
||||
|
@ -341,24 +376,29 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
|
|||
}
|
||||
if ("group".equals(shkd_queryorgtype)&& cas_cashmgtinits.length > 0){
|
||||
//总计行的组装
|
||||
Object[] firmParam = new Object[7];//存放公司数据
|
||||
Object[] firmParam = new Object[8];//存放公司数据
|
||||
firmParam[1] = "总计";
|
||||
firmParam[2] = startBalance; // 期初余额总计
|
||||
firmParam[3] = recTotal; //今日收入合计
|
||||
firmParam[4] = payTotal; //今日收入合计
|
||||
firmParam[5] = endBalance;// 期间余额总计
|
||||
firmParam[7] = "3";
|
||||
firmParams.add(firmParam);
|
||||
|
||||
Object[] firmParam2 = new Object[7];//存放内部往来数据
|
||||
Object[] firmParam2 = new Object[8];//存放内部往来数据
|
||||
firmParam2[1] = "内部往来";
|
||||
firmParam2[3] = recLB; //收入(内部往来)合计
|
||||
firmParam2[4] = payLB; //支出(内部往来)合计
|
||||
firmParam2[7] = "3";
|
||||
firmParams.add(firmParam2);
|
||||
//内部收支净额的组装
|
||||
Object[] firmParam3 = new Object[7];//存放内部往来数据
|
||||
Object[] firmParam3 = new Object[8];//存放内部往来数据
|
||||
firmParam3[1] = "收支净额";
|
||||
recNet = recTotal.subtract(recLB);//收入净额
|
||||
payNet = payTotal.subtract(payLB);//支出净额
|
||||
firmParam3[3] = recNet; //收入(内部往来)合计
|
||||
firmParam3[4] = payNet; //支出(内部往来)合计
|
||||
firmParam3[7] = "3";
|
||||
firmParams.add(firmParam3);
|
||||
}
|
||||
return firmParams;
|
||||
|
|
Loading…
Reference in New Issue