zoukankan      html  css  js  c++  java
  • 多种方式收费解决方案

    核心算法:

            /// <summary>
            /// 计算付款明细
            /// </summary>
            /// <param name="cpy_account"></param>
            /// <param name="tmp"></param>
            /// <param name="tmp_row"></param>
            /// <returns></returns>
            private decimal Settlement(decimal cpy_account, ref decimal tmp, ref decimal tmp_row)
            {
                decimal sy_account = 0;//剩余应付
    
                if (cpy_account > 0)
                {
                    if (tmp >= cpy_account)
                    {
                        tmp_row = cpy_account;
                        tmp -= cpy_account;
                    }
                    else
                    {
                        tmp_row = tmp;
                        tmp = 0;
                        sy_account = cpy_account - tmp_row;
                    }
                }
                return sy_account;
            }
            /// <summary>
            /// 执行结算
            /// </summary>
            /// <param name="cpy_account"></param>
            /// <param name="tmpList"></param>
            /// <returns></returns>
            private List<decimal> SettlementRun(decimal cpy_account, List<decimal> tmpList)
            {
                List<decimal> decList = new List<decimal>();
    
                decimal sy_account = cpy_account;
                for (int i = 0; i < tmpList.Count; i++)
                {
                    decimal tmp = tmpList[i];
                    decimal tmp_row = 0;
                    sy_account = Settlement(sy_account, ref tmp, ref tmp_row);
                    tmpList[i] = tmp;
    
                    decList.Add(tmp_row);
                }
    
                return decList;
            }

    调用执行:

            List<decimal> tmpList = new List<decimal>() { xj1, xj2, xj3, sk1, sk2, sk3, sk4, fq1, fq2, fq3, fq4, fq5, fq6, fq7, dsf1, dsf2, dsf3, dsf4, qt1, qt2, qt3 };
    ///收费明细循环 /// foreach (DataRow dataRow in ctmzpts.Rows) {
           //明细行应付金额
           decimal cpy_account = dataRow["cpy_account"].ToDecimal(); 
    List<decimal> decList = SettlementRun(cpy_account, tmpList); decimal xj1_row = decList[0]; decimal xj2_row = decList[1]; decimal xj3_row = decList[2]; decimal sk1_row = decList[3]; decimal sk2_row = decList[4]; decimal sk3_row = decList[5]; decimal sk4_row = decList[6]; decimal fq1_row = decList[7]; decimal fq2_row = decList[8]; decimal fq3_row = decList[9]; decimal fq4_row = decList[10]; decimal fq5_row = decList[11]; decimal fq6_row = decList[12]; decimal fq7_row = decList[13]; decimal dsf1_row = decList[14]; decimal dsf2_row = decList[15]; decimal dsf3_row = decList[16]; decimal dsf4_row = decList[17]; decimal qt1_row = decList[18]; decimal qt2_row = decList[19]; decimal qt3_row = decList[20];

           //TODO...
         }

     看不懂说明用不到,用到了就能看懂了^-^

  • 相关阅读:
    SQL的内连接与外连接
    for,foreach,iterator的用法和区别
    StringUtils中 isNotEmpty 和isNotBlank的区别
    Context解读
    常用的加密方式
    Android中前景,背景 和 Gravity的设置属性
    使用WebView时软键盘遮挡H5页面解决办法
    Git merge Dev 分支到 master
    C#高级编程笔记 Day 5, 2016年9月 13日 (泛型)
    C#高级编程笔记 Delegate 的粗浅理解 2016年9月 13日
  • 原文地址:https://www.cnblogs.com/mapstar/p/13886286.html
Copyright © 2011-2022 走看看