コード例 #1
0
        /// <summary>
        /// Handle前检查
        /// </summary>
        /// <param name="entity"></param>
        protected virtual void PreCheckForHandle(PostIncomeInfo entity, string confirmedSOSysNoStr)
        {
            entity.Validate(p => p.SysNo != null, () =>
            {
                throw new ArgumentNullException("entity.SysNo");
            })
            .Validate(p => p.HandleStatus != null, () =>
            {
                throw new ArgumentNullException("entity.HandleStatus");
            });

            var soSysNoList = confirmedSOSysNoStr.Replace(",", ".")
                              .Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries)
                              .Distinct().ToList()
                              .ConvertAll(s => Int32.Parse(s));
            var soList = ExternalDomainBroker.GetSOBaseInfoList(soSysNoList);

            if (soList.Count != soSysNoList.Count)
            {
                var exceptSysNoList = soSysNoList.Except(soList.Select(s => s.SysNo.Value)).ToList();
                ThrowBizException("PostIncome_InvalidSOSysNo", string.Join(".", exceptSysNoList));
            }
            else
            {
                var recTotal = soList.Sum(s => s.ReceivableAmount);
                if (recTotal > entity.IncomeAmt.Value)
                {
                    ThrowBizException("PostIncome_ReceivableAmtMoreThanIncomeAmt");
                }
            }
        }