/// <summary> /// 新增一条新的数据 /// /// (新增一行新的主数据, 服务类负责把这行新的主数据, 拆分为多行子数据.) /// /// 处理结果, 将存储在 主数据的 SubDataList 属性中. /// </summary> /// <param name="mainData"></param> public void InsertNewMainData(MainData mainData) { // 参数有效性检查. if (mainData == null) { throw new ArgumentNullException("主数据不能为空!"); } if (mainData.MainInitValue < 0) { throw new ArgumentException("主数据金额不能为负数!"); } // 首先, 初始化 主数据的 子数据列表. mainData.InitSubDataList(); // 获取初始的 主数据的 金额. decimal remainValue = mainData.MainInitValue; // 拆分处理. while (remainValue > 0) { // 构造一个子数据. SubData subData = new SubData(); // 子数据的初始值,为 当前余额, 与 单位最大数值 中, 较小对一个. subData.SubInitValue = Math.Min(remainValue, this.MaxSubValue); // 余额 = 初始值. subData.SubBalanceValue = subData.SubInitValue; // 加入列表. mainData.SubDataList.Add(subData); // 余额递减. remainValue -= this.MaxSubValue; } }