Ejemplo n.º 1
0
        void IImportHandler.Deconde(ref DataSet ds)
        {
            DataTable dtDetail = null;

            foreach (DataTable dt in ds.Tables)
            {
                if (dt.TableName == "辅助资料")
                {
                    dtDetail = dt;
                    break;
                }
            }

            if (dtDetail == null)
            {
                throw new FinanceException(FinanceResult.IMPERFECT_DATA);
            }

            int  recordCount = dtDetail.Rows.Count;
            long firstId     = SerialNoService.GetInstance(new Dictionary <string, object> {
                { "Tid", mTid }
            }).GetIncrease(recordCount, SerialNoKey.System);

            DataSet dsResult = new DataSet();

            dsResult.Tables.Add(decondeAuxiliary(dtDetail, firstId));
            ds = dsResult;
        }
Ejemplo n.º 2
0
        public FinanceResponse DoTest()
        {
            var uid = SerialNoService.GetUUID();
            int i   = 1;

            while (i < 1000)
            {
                logger.Debug(uid + ":" + i);
                Thread.Sleep(10);
                i++;
            }
            return(CreateResponse(FinanceResult.SUCCESS));
        }
Ejemplo n.º 3
0
        public FinanceResponse Save(AuxiliarySaveRequest json)
        {
            var aux = json.Content;

            if (aux.id != 0)
            {
                DataManager.GetInstance(mContext).Update(aux);
            }
            else
            {
                aux.id = SerialNoService.GetInstance(mContext).Get(SerialNoKey.System);
                DataManager.GetInstance(mContext).Insert(aux);
                SerialNoService.GetInstance(mContext).Update(SerialNoKey.System);
            }
            UserService.GetInstance(mContext).UpdateTimeStampArticle(TimeStampArticleEnum.Auxiliary);
            return(CreateResponse(FinanceResult.SUCCESS));
        }
Ejemplo n.º 4
0
        public HttpResponseMessage Export(CashflowSheetExportRequest request)
        {
            ExcelExportor exportor             = new ExcelExportor(new CashflowExportHandler());
            Dictionary <string, string> filter = request.filter;
            var lst = service.ListSheet(filter);
            var dt  = EntityConvertor <CashflowSheetItem> .ToDataTable(lst);

            MemoryStream ms = new MemoryStream();

            exportor.Export(ms, dt, ".xls");

            string relativePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
            string sPath        = Path.Combine(Path.GetFullPath(relativePath), "Cache");

            if (!Directory.Exists(sPath))
            {
                Directory.CreateDirectory(sPath);
            }
            string fileName = SerialNoService.GetUUID() + ".xls";
            string filePath = Path.Combine(sPath, fileName);

            using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                byte[] data = ms.ToArray();
                fs.Write(data, 0, data.Length);
                fs.Flush();
            }
            ms.Close();
            ms.Dispose();

            var stream = new FileStream(filePath, FileMode.Open);
            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);

            response.Content = new StreamContent(stream);
            response.Content.Headers.ContentType        = new MediaTypeHeaderValue("application/vnd.ms-excel");
            response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = fileName
            };

            //System.IO.File.Delete(filePath);

            return(response);
        }
Ejemplo n.º 5
0
 protected override void Initialize(HttpControllerContext controllerContext)
 {
     service = SerialNoService.GetInstance(controllerContext.Request.Properties);
     base.Initialize(controllerContext);
 }
Ejemplo n.º 6
0
        void IImportHandler.Deconde(ref DataSet ds)
        {
            DataTable dt = ds.Tables[0];

            DataRow[] dataRows = dt.Select("1=1", "代码 asc");

            long idIndex = SerialNoService.GetInstance(new Dictionary <string, object> {
                { "Tid", mTid }
            }).GetIncrease(dt.Rows.Count, SerialNoKey.System);

            Auxiliary auxiliary = new Auxiliary()
            {
                type = (long)AuxiliaryType.AccountGroup
            };
            var lstAuxiliary = DataManager.GetInstance(new Dictionary <string, object> {
                { "Tid", mTid }
            }).Query <Auxiliary>(auxiliary);

            ///TODO:
            ///     1、列名映射
            ///     2、值转换
            ///     3、计算父子关系
            List <AccountSubject> lst = new List <AccountSubject>();

            foreach (DataRow dr in dataRows)
            {
                AccountSubject at = new AccountSubject();
                at.id = idIndex;
                foreach (DataColumn col in dt.Columns)
                {
                    switch (col.ColumnName)
                    {
                    case "代码":
                        var no = dr[col.ColumnName].ToString();
                        at.no = no;
                        var pointIndex = at.no.LastIndexOf(".");
                        if (pointIndex > -1)
                        {
                            var            parentNo      = no.Substring(0, pointIndex);
                            AccountSubject parentAccount = lst.FirstOrDefault(a => a.no == parentNo);
                            if (parentAccount == null)
                            {
                                throw new FinanceException(FinanceResult.RECORD_NOT_EXIST, "找不到父节点科目【" + parentNo + "】.");
                            }
                            at.parentId = parentAccount.id;
                            at.level    = parentAccount.level + 1;
                            at.rootId   = parentAccount.rootId == 0 ? parentAccount.id : parentAccount.rootId;
                            parentAccount.isHasChild = true;
                        }
                        else
                        {
                            at.level = 1;
                        }
                        break;

                    case "名称":
                        at.name     = dr[col.ColumnName].ToString();
                        at.fullName = CalcFullName(lst, at);
                        break;

                    case "类别":
                        string    strAux = dr[col.ColumnName].ToString();
                        Auxiliary aux    = lstAuxiliary.Find(t => t.name == strAux);
                        if (aux == null)
                        {
                            //如果需要,去数据库检索一遍
                            throw new FinanceException(FinanceResult.RECORD_NOT_EXIST, "类别【" + strAux + "】.");
                        }
                        at.groupId = aux.id;
                        break;

                    case "余额方向":
                        at.direction = dr[col.ColumnName].ToString() == "借" ? 1 : -1;
                        break;
                        //case "现金科目":
                        //    at.isCashSubject = dr[col.ColumnName].ToString() == "是";
                        //    break;
                        //case "银行科目":
                        //    at.isBankSubject = dr[col.ColumnName].ToString() == "是";
                        //    break;
                        //case "现金等价物":
                        //    at.isCashEqulvalent = dr[col.ColumnName].ToString() == "是";
                        //    break;
                        //case "主表项目":
                        //    var val = dr[col.ColumnName].ToString();
                        //    if(!string.IsNullOrEmpty(val))
                        //        at.mainProjectId = 0L;
                        //    break;
                    }
                }
                if (!string.IsNullOrEmpty(at.no))
                {
                    lst.Add(at);
                    idIndex++;
                }
            }
            DataTable dtRsp = EntityConvertor <AccountSubject> .ToDataTable(lst);

            dtRsp.TableName = "AccountSubject";
            ds = new DataSet();
            ds.Tables.Add(dtRsp);
        }
Ejemplo n.º 7
0
        public FinanceResponse Upload(HttpRequestMessage request)
        {
            try
            {
                string       relativePath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
                string       path         = Path.GetFullPath(relativePath + ".Cache/") + SerialNoService.GetUUID() + ".xls";
                FileStream   fs           = new FileStream(path, FileMode.Append);
                BinaryWriter w            = new BinaryWriter(fs);
                fs.Position = fs.Length;
                request.Content.CopyToAsync(fs).Wait();
                w.Close();
                fs.Close();

                var    query = request.GetQueryNameValuePairs();
                string name  = "";
                foreach (var kv in query)
                {
                    if (kv.Key == "name")
                    {
                        name = kv.Value;
                        break;
                    }
                }

                IImportHandler dtl = null;
                switch (name)
                {
                case "BalanceSheet":
                    dtl = new BalanceSheetDTL();
                    break;

                case "ProfitSheet":
                    dtl = new ProfitSheetDTL();
                    break;
                }
                if (dtl == null)
                {
                    return(CreateResponse(FinanceResult.SYSTEM_ERROR));
                }

                dtl.SetFileName(path);
                ExcelImportor importor = new ExcelImportor(long.Parse(Tid), dtl);
                importor.Import();

                return(CreateResponse(FinanceResult.SUCCESS));
            }
            catch
            {
                return(CreateResponse(FinanceResult.SYSTEM_ERROR));
            }
        }