|  | @@ -4214,6 +4214,8 @@ ORDER BY
 | 
	
		
			
				|  |  |                  opInfos[i].City = city;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            var opParentFeeData = new StatisticsOP()._OPParentFeeInfo;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              if (_dto.Type == 1)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  //同比增长率=(本期数-同期数)/ 同期数
 | 
	
	
		
			
				|  | @@ -4247,6 +4249,27 @@ ORDER BY
 | 
	
		
			
				|  |  |                                               ))
 | 
	
		
			
				|  |  |                                        .OrderBy(x => x.FeeId)
 | 
	
		
			
				|  |  |                                        .ToList();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                
 | 
	
		
			
				|  |  | +                var opParentYearIds = yearData.Select(x => x.FeeId).ToList();
 | 
	
		
			
				|  |  | +                var opParentYearDataSelector = opParentFeeData.Where(x => !opParentYearIds.Contains(x.Id)).ToList();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (opParentYearDataSelector.Count > 0)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    foreach (var item in opParentYearDataSelector)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        yearData.Add(
 | 
	
		
			
				|  |  | +                            new StatisticsOPYOY(feeId: item.Id,
 | 
	
		
			
				|  |  | +                                                feeName: item.Name,
 | 
	
		
			
				|  |  | +                                                currPeriodFee: 0.00M,
 | 
	
		
			
				|  |  | +                                                samePeriodFee: 0.00M,
 | 
	
		
			
				|  |  | +                                                currPeriodGroupTotal: 0,
 | 
	
		
			
				|  |  | +                                                samePeriodGroupTotal: 0,
 | 
	
		
			
				|  |  | +                                                subFeeData: new StatisticsOPSubFeeYOY[] { }
 | 
	
		
			
				|  |  | +                                                ));
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    yearData = yearData.OrderBy(x => x.FeeId).ToList();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  return Ok(JsonView(true, "操作成功!", yearData));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              else if (_dto.Type == 2)
 | 
	
	
		
			
				|  | @@ -4286,8 +4309,51 @@ ORDER BY
 | 
	
		
			
				|  |  |                                                               ))
 | 
	
		
			
				|  |  |                                                           .ToArray()
 | 
	
		
			
				|  |  |                                                 ))
 | 
	
		
			
				|  |  | -                                       .OrderBy(x => x.MonthId)
 | 
	
		
			
				|  |  | +                                       //.OrderBy(x => x.MonthId)
 | 
	
		
			
				|  |  |                                         .ToList();
 | 
	
		
			
				|  |  | +                //1、月份是否足够十二月
 | 
	
		
			
				|  |  | +                var monthIds = new int[] {1,2,3,4,5,6,7,8,9,10,11,12 };
 | 
	
		
			
				|  |  | +                var monthDataIds = monthData.Select(x => x.MonthId).ToArray();
 | 
	
		
			
				|  |  | +                var newMonthIds = monthIds.Where(x => !monthDataIds.Contains(x)).ToList();
 | 
	
		
			
				|  |  | +                if (newMonthIds.Count > 0)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    foreach (var item in newMonthIds)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        monthData.Add(new StatisticsOPMonthYOY(
 | 
	
		
			
				|  |  | +                                          monthId: item,
 | 
	
		
			
				|  |  | +                                          monthName: Enum.IsDefined(typeof(MonthEnum), (int)item) ? ((MonthEnum)(int)item).GetEnumDescription() : "",
 | 
	
		
			
				|  |  | +                                          feeDatas: Array.Empty<StatisticsOPYOY>()
 | 
	
		
			
				|  |  | +                                          ));
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    monthData = monthData.OrderBy(x => x.MonthId).ToList();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                //2、费用父类是否足够
 | 
	
		
			
				|  |  | +                for (int i = 0; i < monthData.Count; i++)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var month = monthData[i];
 | 
	
		
			
				|  |  | +                    var opParentFeeIds = month.FeeDatas.Select(x => x.FeeId).ToList();
 | 
	
		
			
				|  |  | +                    var opParentFeeDataSelector = opParentFeeData.Where(x => !opParentFeeIds.Contains(x.Id)).ToList();
 | 
	
		
			
				|  |  | +                    if (opParentFeeDataSelector.Count > 0)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        var feeDatas = month.FeeDatas.ToList();
 | 
	
		
			
				|  |  | +                        foreach (var item in opParentFeeDataSelector)
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            feeDatas.Add(new StatisticsOPYOY(
 | 
	
		
			
				|  |  | +                                             feeId: item.Id,
 | 
	
		
			
				|  |  | +                                             feeName: item.Name,
 | 
	
		
			
				|  |  | +                                             currPeriodFee: 0.00M,
 | 
	
		
			
				|  |  | +                                             samePeriodFee: 0.00M,
 | 
	
		
			
				|  |  | +                                             currPeriodGroupTotal: 0,
 | 
	
		
			
				|  |  | +                                             samePeriodGroupTotal: 0,
 | 
	
		
			
				|  |  | +                                             subFeeData: Array.Empty<StatisticsOPSubFeeYOY>()
 | 
	
		
			
				|  |  | +                                ));
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        feeDatas = feeDatas.OrderBy(x => x.FeeId).ToList();
 | 
	
		
			
				|  |  | +                        monthData[i].FeeDatas = feeDatas.ToArray();
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                //3、费用子类是否足够
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  return Ok(JsonView(true, "操作成功!", monthData));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              return Ok(JsonView(false, "操作失败!"));
 |