资金日表取数逻辑更新
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,11 +79,37 @@ public class CapitalDayListDataPlugin extends AbstractReportListDataPlugin imple
 | 
			
		|||
        }
 | 
			
		||||
        int i = 0;
 | 
			
		||||
        if(firmParams != null && firmParams.size() > 0){
 | 
			
		||||
            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);
 | 
			
		||||
        CollectionInput inputs = new CollectionInput(row, firmParams);
 | 
			
		||||
        DataSet resultDataSet = Algo.create(this.getClass().getName()).createDataSet(inputs);
 | 
			
		||||
| 
						 | 
				
			
			@ -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