Пример #1
0
        void ExecCreateVoucher(string taskId, string procName, Dictionary <string, object> filter)
        {
            DataSet ds = null;

            if (filter == null)
            {
                ds = (DataSet)mBDBHelper.RunDataSetProc(procName);
            }
            else
            {
                var prams = new SqlParameter[filter.Keys.Count];
                var i     = 0;
                foreach (var kv in filter)
                {
                    prams[i++] = new SqlParameter(kv.Key, kv.Value);
                }
                ds = (DataSet)mBDBHelper.RunDataSetProc(procName, prams);
            }

            var lstHeader = EntityConvertor <VoucherHeader> .ToList(ds.Tables[0]);

            var lstEntries = EntityConvertor <VoucherEntry> .ToList(ds.Tables[1]);

            var       dtUdefenties  = ds.Tables[1];
            var       lstUdefenties = new Dictionary <string, Dictionary <string, Dictionary <string, object> > >();
            Auxiliary auxfilter     = new Auxiliary();
            var       lstAuxiliary  = DataManager.GetInstance(mContext).Query(auxfilter);

            foreach (DataRow dr in dtUdefenties.Rows)
            {
                var map = EntityConvertor <Object> .ToMap(dr);

                GenerateActItemGrp(taskId, ref map, ref lstAuxiliary);
                var linkNo = map["linkNo"].ToString();
                if (lstUdefenties.ContainsKey(linkNo))
                {
                    lstUdefenties[linkNo].Add(map["uniqueKey"].ToString(), map);
                }
                else
                {
                    var val = new Dictionary <string, Dictionary <string, object> >();
                    val.Add(map["uniqueKey"].ToString(), map);
                    lstUdefenties.Add(linkNo, val);
                }
            }

            RefreshTaskResult(taskId, ExecTaskType.CreateVoucher.ToString(), 0, "开始执行", "");

            //这里需要异步
            var lstAccountSubjectNo = lstEntries.Select(e => e.accountSubjectNo).Distinct().ToList();
            var bRnt = GenerateAccoutSubject(taskId, lstAccountSubjectNo);

            if (bRnt)
            {
                GenerateVoucher(taskId, lstHeader, lstEntries, lstUdefenties);
            }
        }
Пример #2
0
        public Dictionary <string, Dictionary <string, object> > FindUdefEntrys(long id)
        {
            var       result = new Dictionary <string, Dictionary <string, object> >();
            DataTable dt     = DBHelper.GetInstance(mContext).ExecuteDt("select * from _VoucherEntryUdef where _id =" + id);

            if (dt == null)
            {
                return(result);
            }
            foreach (DataRow dr in dt.Rows)
            {
                var map = EntityConvertor <int> .ToMap(dr);

                var key = dr["_uniqueKey"].ToString();
                result.Add(key, map);
            }
            return(result);
        }