public DataTablesResponse GetListAuthor(IDataTablesRequest dataTableParam, ResourceAuthorSearchViewModel searchViewModel)
        {
            try
            {
                var query = ResourceRepository.GetAll(x => x.IsDeleted == false && x.Type == (int)ResourceType.Author, null, x => x.Authors);
                if (searchViewModel.AuthorId > 0)
                {
                    query = query.Where(x => x.Authors.Any(g => g.IsDeleted == false && g.Id == searchViewModel.AuthorId));
                }

                var dataTableHelper = new DataTableHelper<ResourceAuthorViewModel, Resource>(query, x => new ResourceAuthorViewModel
                {
                    Id = x.Id,
                    Url = x.Url,
                    Tag = x.Tag,
                    Author = x.Authors.AsQueryable().Any(y => y.IsDeleted == false) ? x.Authors.AsQueryable().FirstOrDefault().Name : ""
                });

                var entities = dataTableHelper.GetDataVMForResponse(dataTableParam);
                var result = dataTableHelper.GetDataToList(dataTableParam, entities);

                return new DataTablesResponse(dataTableParam.Draw, result, entities.Count(), entities.Count());
            }
            catch (Exception ex)
            {
                Provider.Instance.LogError(ex);
                return new DataTablesResponse(dataTableParam.Draw, new List<ResourceAuthorViewModel>(), 0, 0);
            }
        }
Example #2
0
 public void AddDupFoldTable(int dup, DataTable dt, string[] newcolname, int[] colwidth, string title = null)
 {
     DataTableHelper dth = new DataTableHelper();
     object[,] table = dth.DataTableTo2DTable(dt);
     if (newcolname != null)
     {
         for (int j = 0; j < newcolname.GetLength(0); j++)
         {
             table[0, j] = newcolname[j];
         }
     }
     table = dth.DupFold2DTable_HasColHeader(dup, table);
     if (colwidth == null)
     {
         AddTable(table, null, title);
     }
     else
     {
         int cn = colwidth.GetLength(0);
         int[] _wid = new int[cn * 2];
         for (int i = 0; i < cn; i++)
         {
             _wid[i] = _wid[cn + i] = colwidth[i];
         }
         AddTable(table, _wid, title);
     }
 }
Example #3
0
 public void AddTable(word.Application wdapp, word.Document wddoc, DataTable dt, string[] newcolname, int[] colwidth, string title = null)
 {
     DataTableHelper dth = new DataTableHelper();
     object[,] table = dth.DataTableTo2DTable(dt);
     if (newcolname != null)
     {
         for (int j = 0; j < newcolname.GetLength(0); j++)
         {
             table[0, j] = newcolname[j];
         }
     }
     this.AddTable(wdapp, wddoc, table, colwidth, title);
 }
Example #4
0
        public DataTable PrintBarCode(MesSession _session, string _sn, string processData)
        {
            META_ParameterInfo info = BLLFactory <META_Parameter> .Instance.FindSingle($"Key='LablePath'");

            string lablePath = info.Value;

            info = BLLFactory <META_Parameter> .Instance.FindSingle($"Key='TracePrinterName'");

            string tracePrinterName = info.Value;

            info = BLLFactory <META_Parameter> .Instance.FindSingle($"Key='ConFormPrinterName'");

            string conFormPrinterName = info.Value;

            info = BLLFactory <META_Parameter> .Instance.FindSingle($"Key='CustomerCode'");

            string           customerCode = info.Value;
            META_DevLinkInfo devInfo      = BLLFactory <META_DevLink> .Instance.FindSingle($"DevCode='OP320'");

            string productType = devInfo.ProcessType;

            new LogInfo(_session, LogLevel.Info, $"打印基础数据准备完成{System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}");

            List <string> lstMsg       = StringHelper.GetStrArray(processData, '/', false);
            string        supplierCode = lstMsg[0];
            string        traceLabel   = lstMsg[1];
            string        conFormLabel = lstMsg[2];
            string        traceability = lstMsg[3];
            string        imsafeCode   = lstMsg[3];

            if (productType == "ECMP" && (supplierCode == "A009D3 01" || supplierCode == "M107190000"))
            {
                imsafeCode = customerCode + supplierCode + lstMsg[3].ToString().Substring(7, 6) + "A";
            }
            else
            {
                imsafeCode = lstMsg[3];
            }
            string sn = lstMsg[4];
            string hw = lstMsg[5];
            string sw = lstMsg[6];

            ApplicationClass lbl_1 = null, lbl_2 = null;
            Document         doc_1 = null, doc_2 = null;

            DataTable dt = DataTableHelper.CreateTable("CheckStatus,ReturnMsg");

            dt.TableName = "PrintCheck";
            try
            {
                lbl_1 = new ApplicationClass();
                lbl_1.Documents.Open(lablePath + conFormLabel);
                doc_1 = lbl_1.ActiveDocument;
                doc_1.Printer.SwitchTo(conFormPrinterName);
                string[] arrProduct = _sn.Trim().Split('-');
                doc_1.Variables.FormVariables.Item("Product").Value     = arrProduct[0].ToUpper();
                doc_1.Variables.FormVariables.Item("SullperCode").Value = supplierCode.ToUpper();
                doc_1.Variables.FormVariables.Item("Date").Value        = System.DateTime.Now.ToString("dd-MM-yy");
                doc_1.Variables.FormVariables.Item("Barcode").Value     = sn.ToUpper();
                doc_1.Variables.FormVariables.Item("HW").Value          = hw.ToUpper();
                doc_1.Variables.FormVariables.Item("SW").Value          = sw.ToUpper();
                new LogInfo(_session, LogLevel.Info, $"产品条码打印:DocName:{lablePath + conFormLabel},Printer:{conFormPrinterName},{doc_1.Printer.FullName}");
                doc_1.PrintDocument(1);

                lbl_2 = new ApplicationClass();
                lbl_2.Documents.Open(lablePath + traceLabel);
                doc_2 = lbl_2.ActiveDocument;
                doc_2.Printer.SwitchTo(tracePrinterName);
                doc_2.Variables.FormVariables.Item("Date").Value = System.DateTime.Now.ToString("dd-MM-yy");
                doc_2.Variables.FormVariables.Item("TraceabilityNumber").Value = traceability.Substring(6, 7).ToUpper();

                if (productType == "ECMP")
                {
                    doc_2.Variables.FormVariables.Item("SerialNumber").Value = customerCode.ToUpper();
                }
                else
                {
                    doc_2.Variables.FormVariables.Item("SerialNumber").Value = arrProduct[1].Substring(0, 13).ToUpper();
                }

                doc_2.Variables.FormVariables.Item("SullperCode").Value = supplierCode.ToUpper();
                doc_2.Variables.FormVariables.Item("Barcode").Value     = imsafeCode.ToUpper();
                if (supplierCode == "A009D3 01")
                {
                    doc_2.Variables.FormVariables.Item("NO.").Value = "01";
                }
                else
                {
                    doc_2.Variables.FormVariables.Item("NO.").Value = "";
                }
                doc_2.PrintDocument(1);
                new LogInfo(_session, LogLevel.Info, $"客户追溯条码打印:DocName:{lablePath + traceLabel},Printer:{tracePrinterName},{doc_2.Printer.FullName}");
                dt.Rows.Add("1", "Print Success.");
            }
            catch (Exception e)
            {
                if (lbl_1 != null)
                {
                    lbl_1.Quit();
                }
                if (lbl_2 != null)
                {
                    lbl_2.Quit();
                }

                LogInfo log = new LogInfo(_session, LogLevel.Error, $"打印异常:{e.ToString()}");
                dt.Rows.Add("-1", e.Message);
            }
            finally
            {
                LogInfo log = new LogInfo(_session, LogLevel.Info, $"退出打印:TracePrinterName:{tracePrinterName},ConFormPrinterName:{conFormPrinterName}");
                if (lbl_1 != null)
                {
                    lbl_1.Documents.CloseAll(true);
                    lbl_1.Quit();//退出
                    lbl_1 = null;
                    doc_1 = null;
                }
                if (lbl_2 != null)
                {
                    lbl_2.Documents.CloseAll(true);
                    lbl_2.Quit();//退出
                    lbl_2 = null;
                    doc_2 = null;
                }
                GC.Collect(0);
            }

            ProcessHelper.KillProcess("lppa");

            return(dt);
        }
        protected override void BeforeExport()
        {
            string lineFilter = string.Empty;
            if (!string.IsNullOrEmpty(_form.Line))
                lineFilter = "產線 = '" + _form.Line + "'";

            UnfinishedWorksheetReportSourceTableAdapter adapter = new UnfinishedWorksheetReportSourceTableAdapter();

            //取得基本報表資料
            ReportDataSet.UnfinishedWorksheetReportSourceDataTable srcTable = adapter.GetData(this.StartDate, this.EndDate,
                this.StartDate == DateTime.MinValue && this.EndDate == DateTime.MaxValue);
            srcTable.Columns.Add("退驗數量", typeof(decimal));
            srcTable.Columns.Add("待驗數量", typeof(decimal));

            //變更公式計算
            srcTable.Columns["完成%"].Expression = "IIF(數量 = 0,0,(已生產數量+待驗數量)/數量)";
            //srcTable.Columns["生產效率"].Expression = "IIF((內部工時+外包工時) = 0,0,(已生產數量+待驗數量)*標準工時/(內部工時+外包工時))";

            //取得日期範圍
            int minYear, minMonth, maxYear, maxMonth;
            DateTime from, to;
            object o;

            o = srcTable.Compute("MIN(年份)", string.Empty);
            minYear = Convert.IsDBNull(o) ? DateTime.MinValue.Year : (int)o;

            o = srcTable.Compute("MIN(月份)", string.Empty);
            minMonth = Convert.IsDBNull(o) ? DateTime.MinValue.Month : (int)o;

            o = srcTable.Compute("MAX(年份)", string.Empty);
            maxYear = Convert.IsDBNull(o) ? DateTime.MinValue.Year : (int)o;

            o = srcTable.Compute("MAX(月份)", string.Empty);
            maxMonth = Convert.IsDBNull(o) ? DateTime.MinValue.Month : (int)o;

            from = new DateTime(minYear, minMonth, 1);
            to = new DateTime(maxYear, maxMonth, 1);

            //取得每月工作時數
            Dictionary<DateTime, decimal> workHoursDic = new Dictionary<DateTime, decimal>();
            for (DateTime date = new DateTime(from.Year, from.Month, 1); date <= to; date = date.AddMonths(1))
            {
                decimal hours = Global.GetWorkingHours(date.Year, date.Month);
                workHoursDic.Add(date, hours);
            }

            //重新運算內部工資
            DateTime curRowMonth = DateTime.MinValue;
            foreach (ReportDataSet.UnfinishedWorksheetReportSourceRow row in srcTable)
            {
                if (!Convert.IsDBNull(row["年份"]))
                {
                    if (row.年份 != curRowMonth.Year || row.月份 != curRowMonth.Month)
                        curRowMonth = new DateTime(row.年份, row.月份, 1);

                    row.內部工資 = Math.Round(row.內部工資 / workHoursDic[curRowMonth], MidpointRounding.AwayFromZero);
                }
            }

            //重新Group資料
            DataTableHelper dtHelper = new DataTableHelper();
            _table = dtHelper.SelectGroupByInto("ReportTable", srcTable,
                "產線,單據日期,預計完成日,工作單號,序號,品號,品名,退驗數量,待驗數量,數量,單位" +
                ",標準工時,單位人工成本, 總標準工時,Sum(內部工時) 內部工時, Sum(內部工資) 內部工資"+
                ",外包工時,外包工資,Sum(已生產數量) 已生產數量,完成%,生產效率,尚需工時,工品編號", lineFilter, "產線,單據日期,預計完成日,工作單號,品號,品名,數量,標準工時,單位人工成本,工品編號");

            //設定欄位
            _table.Columns["單位"].DefaultValue = "KPCS";
            _table.Columns.Add("未完成數量", typeof(decimal), "數量-已生產數量-待驗數量").SetOrdinal(9);

            //取得LaborWage資料庫
            LaborWageHelper lwHelper = new LaborWageHelper();
            LaborWage工作單品號Table lwTable = null;

            //運算序號並填入外包工資與工時
            string curWorksheetNumber = string.Empty;
            //int seriesNumber = 1;
            foreach (DataRow row in _table.Rows)
            {
                string wsNumber = row["工作單號"].ToString();
                string pn = row["品號"].ToString();
                int wpid = (int)row["工品編號"];

                if (curWorksheetNumber != wsNumber)
                {
                    curWorksheetNumber = wsNumber;
                    //seriesNumber = 1;
                    lwTable = lwHelper.GetData(curWorksheetNumber);
                }

                //取得退驗
                row["退驗數量"] = DatabaseSet.GetNGAmount(wsNumber, wpid) / 1000.0f;
                row["待驗數量"] = DatabaseSet.GetInspectedAmount(wsNumber, wpid) / 1000.0f;

                //計算未完成數量
                //row["未完成數量"] = (decimal)row["數量"] - (decimal)row["已生產數量"];

                //DataRow[] lwRows = lwTable.Select(string.Format("品號 = '{0}'", row["品號"].ToString()));
                //DataRow[] lwRows = lwTable.Select(string.Format("工品編號 = {0}", row["工品編號"].ToString()));
                object result = lwTable.Compute("SUM(外包工資)", string.Format("工品編號 = {0}", row["工品編號"].ToString()));
                //if (lwRows.Length > 0)
                if(result != null && result != DBNull.Value)
                {
                    //decimal laborWage = (decimal)lwRows[0]["外包工資"];
                    decimal laborWage = Convert.ToDecimal(result);

                    //decimal number = (decimal)lwRows[0]["數量"];
                    row["外包工資"] = laborWage;
                    row["外包工時"] = laborWage / Settings.HourlyPay;
                    //row["已生產數量"] = (decimal)row["已生產數量"] + number;
                }
                if ((decimal)row["總標準工時"] != 0)
                    //row["生產效率"] = ((decimal)row["內部工時"] + (decimal)row["外包工時"]) / ((decimal)row["總標準工時"] * (decimal)row["完成%"]);
                    //row["尚需工時"] = (decimal)row["總標準工時"] * (1 - (decimal)row["完成%"]);
                    row["尚需工時"] = (decimal)row["總標準工時"] - (decimal)row["內部工時"] - (decimal)row["外包工時"];
                else
                    row["尚需工時"] = 0;

                //row["序號"] = seriesNumber++;
                row["序號"] = wpid;
            }

            base.BeforeExport();
        }
        protected override void WriteContent()
        {
            System.Data.DataTable linesTable = DataTableHelper.SelectDistinct(_table, "���u");

            //�إ߼g�J�e�m�@�~
            int writeRow = 4;
            PasteDataRowsOptions options = new PasteDataRowsOptions();
            options.IncludeSummary = false;	//��ʱ���Summary Row
            options.SummaryColumns.AddRange(new string[] { /*"�h��ƶq", */"�ƶq"/*, "�зǤu��", "���H�u����"*/, "�����u��", "�����u��", "�~�]�u��", "�~�]�u��", "�з��`�u��", "�з��`�u��", "����`�u��" /*"���зǤu��", "��ڤu��", "��ڤu��"*/ });
            options.NoSummaryColumns.AddRange(new string[] { "�зǤu��", "���H�u����", "���зǤu��", "��ڤu��", "��ڤu��" });

            PasteDataRowEventHandler beforeSummary = new PasteDataRowEventHandler(BeforePasteDataRowSummary);
            //this.SheetAdapter.BeforePasteDataRowSummary += beforeSummary;

            DataTableHelper dtHelper = new DataTableHelper();
            DataTable nonNormalHourTable = dtHelper.SelectGroupByInto("ReportTable", _srcTable,
                    "���u, Sum(�����u��) �����u��, �u������",
                    null, "���u,��ڧ�����,�u�@�渹,�~��,�~�W,�ƶq,�зǤu��,���H�u����,���зǤu��,�u�~�s��,�u������");

            //��C�Ӳ��u
            foreach (DataRow lineRow in linesTable.Rows)
            {
                //NOTICE: ��Select����ק�ɤ]�����ק�BeforePasteDataRowSummary���e
                DataRow[] rows = _table.Select("���u = '" + lineRow["���u"] + "'", "�u�@�渹,�Ǹ�");

                foreach (DataRow row in rows)
                {
                    string worksheet = (string)row["�u�@�渹"];
                    int serialNumber = (int)row["�Ǹ�"];
                    //��h���`+�]��
                    object abnormalResult = _srcTable.Compute("SUM(�����u��)", "�u�@�渹='" + worksheet + "' AND �u�~�s�� = " + serialNumber + " AND ���u = '" + lineRow["���u"] + "' AND (�u������=" + (int)HourType.���`�Ͳ��u�� + " OR �u������=" + (int)HourType.�]�� + ")");
                    if (abnormalResult != DBNull.Value)
                        row["����`�u��"] = (decimal)row["����`�u��"] - (decimal)abnormalResult;
                }
                //�g�J���e
                options.IncludeSummary = false;
                options.Row = writeRow;
                options.SummaryPrefix = lineRow["���u"] + "���u�p�p";
                writeRow = this.SheetAdapter.PasteDataRows(rows, options);

                //�g�J���`�Ͳ��u��,�]�ˤu��
                decimal unusual = 0;
                decimal package = 0;

                // ���o���`�Ͳ��u��
                object result = nonNormalHourTable.Compute("SUM(�����u��)", "���u = '" + lineRow["���u"] + "' AND �u������=" + (int)HourType.���`�Ͳ��u��);
                if (result != null && result != DBNull.Value)
                    unusual = (decimal)result;

                // ���o�]�ˤu��
                result = nonNormalHourTable.Compute("SUM(�����u��)", "���u = '" + lineRow["���u"] + "' AND �u������=" + (int)HourType.�]��);
                if (result != null && result != DBNull.Value)
                    package = (decimal)result;

                DataRow tmpRow = _table.NewRow();
                tmpRow["���"] = null;
                tmpRow[0] = "���`�Ͳ��u��";
                tmpRow["����`�u��"] = unusual;
                writeRow = this.SheetAdapter.PasteDataRow(tmpRow, writeRow, options.Column);

                tmpRow[0] = "�]��";
                tmpRow["����`�u��"] = package;
                writeRow = this.SheetAdapter.PasteDataRow(tmpRow, writeRow, options.Column);

                //�g�J�p�p
                options.Row = writeRow;
                _subttlRows.Add(writeRow);
                writeRow = this.SheetAdapter.PasteSummaryRow(rows, options);
            }
            //this.SheetAdapter.BeforePasteDataRowSummary -= beforeSummary;

            decimal ttlUnusual = 0;
            decimal ttlPackage = 0;

            // ���o���`�Ͳ��u��
            object tmpResult = nonNormalHourTable.Compute("SUM(�����u��)", "�u������=" + (int)HourType.���`�Ͳ��u��);
            if (tmpResult != null && tmpResult != DBNull.Value)
                ttlUnusual = (decimal)tmpResult;

            // ���o�]�ˤu��
            tmpResult = nonNormalHourTable.Compute("SUM(�����u��)", "�u������=" + (int)HourType.�]��);
            if (tmpResult != null && tmpResult != DBNull.Value)
                ttlPackage = (decimal)tmpResult;

            //�g�J�`�p(���]�A���`,�]��)
            DataTable tmpTable = _table.Clone();
            tmpTable.Columns["����`�u��"].Expression = string.Empty;	//����`�u�ɦۤv�p��

            DataRow totalRow = tmpTable.NewRow();

            foreach (string sumCol in options.SummaryColumns)
            {
                if (!string.IsNullOrEmpty(tmpTable.Columns[sumCol].Expression))
                    tmpTable.Columns[sumCol].Expression = string.Empty;

                object o;
                o = _table.Compute("SUM(" + sumCol + ")", string.Empty);
                totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            }
            foreach (string noSumCol in options.NoSummaryColumns)
            {
                tmpTable.Columns[noSumCol].Expression = string.Empty;
                totalRow[noSumCol] = DBNull.Value;
            }

            ////����`�u�� - (���`�Ͳ��u��+�]��) �e����L�F
            //object ttlHourObj = _table.Compute("SUM(����`�u��)", string.Empty);
            //decimal ttlHour = Convert.IsDBNull(ttlHourObj) ? 0 : (decimal)ttlHourObj;
            ////totalRow["����`�u��"] = ttlHour - (ttlUnusual + ttlPackage);

            totalRow[0] = "�`�p";
            _ttlRow = writeRow;
            tmpTable.Rows.Add(totalRow);
            writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            //tmpTable = _table.Clone();
            ////�g�J���`,�]���`�p
            //tmpTable.Columns[tmpTable.Columns["�~�]�u��"].Ordinal].DataType = typeof(object);

            //DataRow abnormalTotalRow = tmpTable.NewRow();
            //abnormalTotalRow["���"] = null;
            //abnormalTotalRow[tmpTable.Columns["�~�]�u��"].Ordinal] = "���`�Ͳ��u��";
            //abnormalTotalRow["����`�u��"] = ttlUnusual;
            //writeRow = this.SheetAdapter.PasteDataRow(abnormalTotalRow, writeRow, options.Column);

            //abnormalTotalRow[tmpTable.Columns["�~�]�u��"].Ordinal] = "�]��";
            //abnormalTotalRow["����`�u��"] = ttlPackage;
            //writeRow = this.SheetAdapter.PasteDataRow(abnormalTotalRow, writeRow, options.Column);

            ////�g�J�`�p(+���`,�]��)
            //totalRow = tmpTable.NewRow();
            //options.SummaryColumns = new List<string>(new string[] { "����`�u��", "��`�u��" });
            //options.NoSummaryColumns = new List<string>(new string[] { "�ƶq", "�����u��", "�����u��", "�~�]�u��", "�~�]�u��", "�зǤu��", "���H�u����", "���зǤu��", "��ڤu��", "��ڤu��", "�з��`�u��" });

            //foreach (string sumCol in options.SummaryColumns)
            //{
            //    if (!string.IsNullOrEmpty(tmpTable.Columns[sumCol].Expression))
            //        tmpTable.Columns[sumCol].Expression = string.Empty;

            //    object o;
            //    o = _table.Compute("SUM(" + sumCol + ")", string.Empty);
            //    totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            //}
            //foreach (string noSumCol in options.NoSummaryColumns)
            //{
            //    tmpTable.Columns[noSumCol].Expression = string.Empty;
            //    totalRow[noSumCol] = DBNull.Value;
            //}

            //totalRow[tmpTable.Columns["�~�]�u��"].Ordinal] = "Total";
            //totalRow["���"] = null;
            //tmpTable.Rows.Add(totalRow);

            //_ttlRow = writeRow;
            //writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            base.WriteContent();
        }
Example #7
0
        protected override void BeforeExport()
        {
            //InspectListReportTableAdapter adapter = new InspectListReportTableAdapter();

            //���o�򥻳�����
            string qcn = _form.QCN;
            string worksheetFrom = _form.WorksheetFrom;
            string worksheetTo = _form.WorksheetTo;
            string partNumber = _form.PartNumber;
            DateTime from = _form.From;
            DateTime to = _form.To;

            _table = ReportDataSet.InspectListReportDataTable.GetData(from, to, partNumber, qcn, worksheetFrom, worksheetTo,
                _form.InspeceMode == InspeceMode.ByPn ? true : _form.Group, _form.Line, _form.OnlyNG);

            //_table.Columns.Add("Remark");
            if (_form.InspeceMode == InspeceMode.ByPn)
            {
                _table.Columns.Add("OK", typeof(int), "IIF(���窬�A='OK' AND �e�˦���=1, 1, 0)");
                _table.Columns.Add("ReOK", typeof(int), "IIF(���窬�A='OK' AND �e�˦���>1, 1, 0)");
                _table.Columns.Add("Concession", typeof(int), "IIF(���窬�A='Concession', 1, 0)");
                _table.Columns.Add("NG", typeof(int), "IIF(���窬�A='NG', 1, 0)");
                _table.Columns.Add("OkNum", typeof(int), "IIF(���窬�A='OK' or ���窬�A='Concession', ����ƶq, 0)");

                DataTableHelper helper = new DataTableHelper();
                string field = "MAX(������) ������, ���u, �~��, SUM(����ƶq) ����ƶq, �u�@�渹, �Ȥ�W��, �`�ƶq, �u�~�s��, QCN, " +
                                "Count(�u�ɸ�ƽs��) Total, SUM(OkNum) OkNum, SUM(OK) OK, SUM(Concession) Concession, SUM(ReOK) ReOK, SUM(NG) NG";
                _groupTable = helper.CreateGroupByTable("GroupByPn", _table, field);

                _groupTable.Columns.Add("�~��i��");
                _groupTable.Columns.Add("Remark");

                helper.InsertGroupByInto(_groupTable, _table, field, null, "���u, �u�@�渹, �u�~�s��, �Ȥ�W��");

                //��JQC#�J�`�P�~��i���J�`
                foreach (DataRow grpRow in _groupTable.Rows)
                {
                    string worksheet = (string)grpRow["�u�@�渹"];
                    int wpid = (int)grpRow["�u�~�s��"];

                    DataRow[] rows = _table.Select("�u�@�渹 = '" + worksheet + "' AND �u�~�s��=" + wpid);
                    List<string> qcnList = new List<string>();
                    List<string> reasonList = new List<string>();
                    foreach (DataRow row in rows)
                    {
                        string q = row["QCN"] as string;
                        if (!string.IsNullOrEmpty(q) && !qcnList.Contains(q))
                            qcnList.Add(q);

                        string ngreason = row["�~��i��"] as string;
                        if (!string.IsNullOrEmpty(ngreason))
                        {
                            string[] reasons = ngreason.Split('\n');
                            foreach (string reason in reasons)
                            {
                                if(!reasonList.Contains(reason))
                                    reasonList.Add(reason);
                            }
                        }
                    }

                    grpRow["QCN"] = string.Join("\n", qcnList.ToArray());
                    grpRow["�~��i��"] = string.Join("\n", reasonList.ToArray());
                }
            }

            if (_form.OutputStatistic)
            {
                _statisticTable = new DataTable();
                _statisticTable.Columns.Add("���u", typeof(string));
                _statisticTable.Columns.Add("�J�w�`���", typeof(int));
                _statisticTable.Columns.Add("�e���`����", typeof(int));
                _statisticTable.Columns.Add("�X��v", typeof(double), "IIF(�e���`����=0, 0, �J�w�`��� / �e���`����)");
            }

            base.BeforeExport();
        }
Example #8
0
        public override bool Update()
        {
            //if (IsDirty)
            //{
            DataSet dataSet = new DataSet();

            if (this.DirtyList.Count > 1)
            {
                DataTable storeTable = DataTableHelper.CreateDataTableForUpdateBasicData(WST_STORE_FIELDS.DATABASE_TABLE_NAME);

                foreach (string Key in this.DirtyList.Keys)
                {
                    Dictionary <string, string> rowData = new Dictionary <string, string>()
                    {
                        { COMMON_FIELDS.FIELD_COMMON_UPDATE_KEY, _storeKey },
                        { COMMON_FIELDS.FIELD_COMMON_UPDATE_NAME, Key },
                        { COMMON_FIELDS.FIELD_COMMON_UPDATE_OLD_VALUE, this.DirtyList[Key].FieldOriginalValue },
                        { COMMON_FIELDS.FIELD_COMMON_UPDATE_NEW_VALUE, this.DirtyList[Key].FieldNewValue }
                    };
                    FanHai.Hemera.Utils.Common.Utils.AddRowDataToDataTable(ref storeTable, rowData);
                }
                if (storeTable.Rows.Count > 0)
                {
                    dataSet.Tables.Add(storeTable);
                }
                try
                {
                    DataSet           dsReturn      = null;
                    IServerObjFactory serverFactory = CallRemotingService.GetRemoteObject();
                    if (null != serverFactory)
                    {
                        dsReturn  = serverFactory.CreateIStoreEngine().UpdateStore(dataSet);
                        _errorMsg = FanHai.Hemera.Share.Common.ReturnMessageUtils.GetServerReturnMessage(dsReturn);
                        if (_errorMsg != "")
                        {
                            if (_errorMsg == COMMON_FIELDS.FIELD_COMMON_EDITTIME_EXP)
                            {
                                //提示“数据已经被修改,请刷新后再操作!”信息
                                MessageService.ShowWarning("${res:Global.RecordExpired}");
                            }
                            else
                            {
                                MessageService.ShowError(_errorMsg);
                            }
                            return(false);
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageService.ShowError(ex);
                }
                finally
                {
                    CallRemotingService.UnregisterChannel();
                }
            }
            else
            {
                MessageService.ShowMessage("${res:FanHai.Hemera.Addins.FMM.Msg.UpdateError}", "${res:Global.SystemInfo}");
            }
            //}
            //else
            //{
            //    MessageService.ShowMessage("${res:FanHai.Hemera.Addins.FMM.Msg.UpdateError}", "${res:Global.SystemInfo}");
            //}
            return(true);
        }
Example #9
0
        /// <summary>
        /// 通过上传excel批量退房
        /// 不支持换房
        /// </summary>
        public bool CheckOutBatch(string filePath, out int nSuccess, out DataTable dtErr)
        {
            nSuccess = 0;
            dtErr    = null;
            //读取Excel内容
            DataTable dt = _mExcelHelper.GetDataFromExcel(filePath);

            if (DataTableHelper.IsEmptyDataTable(dt))
            {
                LogManager.GetInstance().ErrorLog("CheckOutBatch,导入的excel表记录为空");
                return(false);
            }

            int nTotalCnt = dt.Rows.Count; //全部待导入的个数

            dtErr = dt.Clone();
            var lstDel = new List <DataRow>();

            try
            {
                foreach (DataRow r in dt.Rows)
                {
                    var sWorkID   = r["工号"].ToString().Trim();
                    var sIDCardNo = r["身份证号码"].ToString().Trim();
                    var sReason   = r["退房原因"].ToString().Trim();

                    //排除明显无效的项
                    var bValid = true;
                    if (string.IsNullOrEmpty(sWorkID) && string.IsNullOrEmpty(sIDCardNo))
                    {
                        bValid = false;
                    }
                    bValid = bValid && IsValidReason(sReason);
                    if (!bValid)
                    {
                        DataTableHelper.CopyDataRow(dtErr, r);
                        lstDel.Add(r);
                    }
                }
            }
            catch (Exception ex)
            {
                LogManager.GetInstance().ErrorLog("CheckOutBatch,关键列不存在", ex);
                return(false);
            }


            foreach (var oDel in lstDel)
            {
                dt.Rows.Remove(oDel);
            }

            _db         = DBO.CreateDatabase();
            _connection = _db.CreateConnection();
            _connection.Open();
            try
            {
                foreach (DataRow rImp in dt.Rows)
                {
                    if (!CheckOutBatch_part(rImp))
                    {
                        DataTableHelper.CopyDataRow(dtErr, rImp);
                    }
                    else
                    {
                        nSuccess++;
                    }
                }
            }
            finally
            {
                _connection.Close();
            }

            return(nSuccess == nTotalCnt);
        }
        public string GetCentros(int iDisplayStart, int iDisplayLength, int sEcho, int iSortCol_0, string sSortDir_0,
                                 string sSearch)
        {
            var  dth  = new DataTableHelper();
            var  db   = new edayRoomEntities();
            user user = db.users.Single(u => u.username == User.Identity.Name);
            IQueryable <Centro> centros = from c in db.Centroes
                                          where
                                          (user.admin ||
                                           (user.leader && c.grupo == user.grupo) ||

                                           c.Mesas1.Any(
                                               m => m.AsignacionParticipacions.Any(ap => ap.id_user == user.id)))
                                          select c;

            dth.iTotalRecords = centros.Count();
            if (!string.IsNullOrEmpty(sSearch))
            {
                centros = centros.Where(c =>
                                        c.Nombre.ToLower().Contains(sSearch.ToLower()) ||
                                        (c.unidadGeografica1 ?? "").ToLower().Contains(sSearch.ToLower()) ||
                                        (c.unidadGeografica2 ?? "").ToLower().Contains(sSearch.ToLower()) ||
                                        (c.unidadGeografica3 ?? "").ToLower().Contains(sSearch.ToLower()) ||
                                        (c.unidadGeografica4 ?? "").ToLower().Contains(sSearch.ToLower()) ||
                                        (c.unidadGeografica5 ?? "").ToLower().Contains(sSearch.ToLower()) ||
                                        (c.unidadGeografica6 ?? "").ToLower().Contains(sSearch.ToLower()) ||
                                        (c.unidadGeografica7 ?? "").ToLower().Contains(sSearch.ToLower()) ||
                                        (c.unidadGeografica8 ?? "").ToLower().Contains(sSearch.ToLower()) ||
                                        c.Direccion.ToLower().Contains(sSearch.ToLower())
                                        );
            }
            dth.iTotalDisplayRecords = centros.Count();

            #region ORDER ALERTAS

            switch (sSortDir_0)
            {
            case "asc":
                switch (iSortCol_0)
                {
                case 0:
                    centros = centros.OrderBy(c => c.Nombre);
                    break;

                case 1:
                    centros = centros.OrderBy(c => c.unidadGeografica1);
                    break;

                case 2:
                    centros = centros.OrderBy(c => c.unidadGeografica2);
                    break;

                case 3:
                    centros = centros.OrderBy(c => c.unidadGeografica3);
                    break;

                case 4:
                    centros = centros.OrderBy(c => c.votantes);
                    break;

                case 5:
                    centros = centros.OrderBy(c => c.Mesas1.Sum(m => m.Participacions.Max(p => p.conteo)));
                    break;
                }
                break;

            case "desc":
                switch (iSortCol_0)
                {
                case 0:
                    centros = centros.OrderByDescending(c => c.Nombre);
                    break;

                case 1:
                    centros = centros.OrderByDescending(c => c.unidadGeografica1);
                    break;

                case 2:
                    centros = centros.OrderByDescending(c => c.unidadGeografica2);
                    break;

                case 3:
                    centros = centros.OrderByDescending(c => c.unidadGeografica3);
                    break;

                case 4:
                    centros = centros.OrderByDescending(c => c.votantes);
                    break;

                case 5:
                    centros = centros.OrderByDescending(c => c.Mesas1.Sum(m => m.Participacions.Max(p => p.conteo)));
                    break;
                }

                break;
            }

            #endregion

            dth.sEcho = sEcho;
            List <Centro> clist = centros.Select(c => c).Skip(iDisplayStart).Take(iDisplayLength).ToList();

            dth.aaData = new List <List <string> >();

            foreach (var l in clist.Select(c => new List <string>
            {
                string.Format(
                    "<a href='#centro={0}' centro-id='{0}' " +
                    "class='centro-link'>{1}</a>",
                    c.id, c.Nombre),
                c.unidadGeografica1,
                c.unidadGeografica2,
                c.unidadGeografica3,
                c.votantes + "",
                c.Mesas1.Sum(m => m.Participacions.Max(p => p.conteo)) + ""
            }))
            {
                dth.aaData.Add(l);
            }
            return(new JavaScriptSerializer().Serialize(dth));
        }
Example #11
0
        /// <summary>
        /// 根据查询条件导出列表数据
        /// </summary>
        /// <returns></returns>
        public ActionResult Export()
        {
            #region 根据参数获取List列表
            string where = GetPagerCondition();
            string CustomedCondition = Request["CustomedCondition"] ?? "";
            List <OvertimeInfo> list = new List <OvertimeInfo>();

            if (!string.IsNullOrWhiteSpace(CustomedCondition))
            {
                //如果为自定义的json参数列表,那么可以使用字典反序列化获取参数,然后处理
                //Dictionary<string, string> dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(CustomedCondition);

                //如果是条件的自定义,可以使用Find查找
                list = baseBLL.Find(CustomedCondition);
            }
            else
            {
                list = baseBLL.Find(where);
            }

            #endregion

            #region 把列表转换为DataTable
            DataTable datatable = DataTableHelper.CreateTable("序号|int," + columnString);
            DataRow   dr;
            int       j = 1;
            for (int i = 0; i < list.Count; i++)
            {
                dr            = datatable.NewRow();
                dr["序号"]      = j++;
                dr["加班事由"]    = list[i].Reason;
                dr["开始时间"]    = list[i].StartTime;
                dr["结束时间"]    = list[i].EndTime;
                dr["加班时长-天"]  = list[i].DurationDay;
                dr["加班时长-小时"] = list[i].DurationHour;
                dr["加班时长"]    = list[i].Duration;
                dr["附件组别ID"]  = list[i].AttachGUID;
                dr["申请单编号"]   = list[i].Apply_ID;
                dr["申请单日期"]   = list[i].ApplyDate;
                dr["申请部门"]    = list[i].ApplyDept;
                dr["备注信息"]    = list[i].Note;
                dr["创建人"]     = list[i].Creator;
                dr["创建时间"]    = list[i].CreateTime;
                //如果为外键,可以在这里进行转义,如下例子
                //dr["客户名称"] = BLLFactory<Customer>.Instance.GetCustomerName(list[i].Customer_ID);//转义为客户名称

                datatable.Rows.Add(dr);
            }
            #endregion

            #region 把DataTable转换为Excel并输出

            //根据用户创建目录,确保生成的文件不会产生冲突
            string filePath = string.Format("/GenerateFiles/{0}/Overtime.xls", CurrentUser.Name);
            GenerateExcel(datatable, filePath);

            #endregion

            //返回生成后的文件路径,让客户端根据地址下载
            return(Content(filePath));
        }
Example #12
0
 public LinqExamples()
 {
     testDS = DataTableHelper.CreateTestDataset();
 }
Example #13
0
        protected override void BeforeExport()
        {
            LoadNP();

            LineLaborHourReportSourceTableAdapter adapter = new LineLaborHourReportSourceTableAdapter();

            //取得基本報表資料
            ReportDataSet.LineLaborHourReportSourceDataTable srcTable = adapter.GetData(_startDate, _endDate);

            //建立報表_table
            CreateReportTable();

            ////取得指定日期範圍內的工作單號
            //OleDbCommand cmd = new OleDbCommand();
            //cmd.CommandText = "SELECT DISTINCT(單號) FROM 工作單 WHERE 單據日期 > #" + _startDate.ToString("yyyy/MM/dd") + "# AND 單據日期 < #" + _endDate.ToString("yyyy/MM/dd") + "#";
            //cmd.Connection = adapter.Connection;

            //DataTable wsNumTable = new DataTable();
            //wsNumTable.Columns.Add(new DataColumn("單號", typeof(string)));

            //OleDbDataAdapter wsNumAdapter = new OleDbDataAdapter();
            //wsNumAdapter.SelectCommand = cmd;
            //wsNumAdapter.Fill(wsNumTable);

            //List<string> wsNumList = new List<string>();
            //foreach (DataRow row in wsNumTable.Rows)
            //    wsNumList.Add(row["單號"].ToString());

            //讀取非生產資料


            //建立分組table(產線,員工)
            DataTable groupTable = DataTableHelper.SelectDistinct(srcTable, "產線", "借入產線", "員工姓名");

            /* 1.08.4
             * //取得LaborWage資料
             * LaborWageHelper lwHelper = new LaborWageHelper();
             * //LaborWage員工工時Table lwTable = lwHelper.GetDataGroupByLabor(wsNumList);
             * LaborWage員工工時Table lwTable = lwHelper.GetDataGroupByDate(_startDate, _endDate);
             *
             * //Union lw table
             * foreach (DataRow r in lwTable.Rows)
             * {
             * string name = r["員工姓名"].ToString();
             *
             * DataRow[] rs = groupTable.Select("借入產線 IS NULL AND 員工姓名 = '" + name + "'");
             * if (rs.Length == 0)
             * {
             * DataRow[] laborRow = DatabaseSet.員工Table.Select("姓名 ='" + name + "'");
             * if (laborRow.Length != 0)
             * {
             * DataRow nr = groupTable.NewRow();
             * nr["產線"] = laborRow[0]["產線"];
             * nr["員工姓名"] = name;
             * groupTable.Rows.Add(nr);
             * }
             * }
             * }
             */

            //Re order
            groupTable.DefaultView.Sort = "產線, 借入產線, 員工姓名";
            groupTable = groupTable.DefaultView.ToTable();

            //對每個分組進行數據填入
            foreach (DataRow groupRow in groupTable.Rows)
            {
                string selFilter = "產線='" + groupRow["產線"] + "' AND 員工姓名 = '" + groupRow["員工姓名"] + "'";

                DataRow newRow = _table.NewRow();

                if (groupRow.IsNull("借入產線"))
                {
                    newRow["產線"] = groupRow["產線"];
                    selFilter   += " AND 借入產線 IS NULL ";
                }
                else
                {
                    newRow["產線"] = groupRow["借入產線"];
                    newRow["借入"] = groupRow["產線"];
                    selFilter   += " AND 借入產線 = '" + groupRow["借入產線"] + "'";
                }

                DataRow[] rows = srcTable.Select(selFilter);

                newRow["員工名稱"] = groupRow["員工姓名"].ToString();

                decimal npHour = 0;
                Dictionary <HourType, decimal> pHours = new Dictionary <HourType, decimal>();
                foreach (HourType hourType in Enum.GetValues(typeof(HourType)))
                {
                    pHours.Add(hourType, 0);
                }

                //對屬於該分組的Row進行填入
                foreach (DataRow srcRow in rows)
                {
                    int     np   = (int)srcRow["非生產編號"];
                    decimal hour = (decimal)srcRow["工時"];

                    //為生產工時
                    if (np == -1)
                    {
                        HourType hourType = (HourType)srcRow["工時類型"];

                        pHours[hourType] += hour;
                    }
                    else
                    {
                        //非生產工時
                        if (NpDic.ContainsKey(np))
                        {
                            if (NpDic[np] != "np請假")
                            {
                                npHour += hour;
                            }

                            newRow[NpDic[np]] = (decimal)newRow[NpDic[np]] + hour;
                        }
                    }
                }
                decimal ttlHour = npHour;
                foreach (decimal val in pHours.Values)
                {
                    ttlHour += val;
                }

                newRow["生產工時"] = pHours[HourType.一般工時];
                foreach (HourType hourType in Enum.GetValues(typeof(HourType)))
                {
                    if (hourType != HourType.一般工時)
                    {
                        newRow[hourType.ToString()] = pHours[hourType];
                    }
                }

                /* 1.08.4
                 * DataRow[] lwRows = lwTable.Select("員工姓名 = '" + groupRow["員工姓名"].ToString() + "'");
                 * if (lwRows.Length > 0)
                 * newRow["外包工時"] = (decimal)lwRows[0]["工時"];
                 */

                _table.Rows.Add(newRow);
            }

            base.BeforeExport();
        }
Example #14
0
        protected override void WriteContent()
        {
            DataTable linesTable = DataTableHelper.SelectDistinct(_table, "產線");

            //建立寫入前置作業
            int writeRow = 4;
            PasteDataRowsOptions options = new PasteDataRowsOptions();

            options.IncludeSummary = true;

            /* 1.08.4
             * options.SummaryColumns.AddRange(new string[] { "生產工時", "外包工時" });*/
            options.SummaryColumns.AddRange(new string[] { "生產工時" });
            foreach (HourType hourType in Enum.GetValues(typeof(HourType)))
            {
                if (hourType != HourType.一般工時)
                {
                    options.SummaryColumns.Add(hourType.ToString());
                }
            }
            options.ExcludeColumns.Add("借入");

            string[] npCols = new string[NpDic.Count];
            NpDic.Values.CopyTo(npCols, 0);
            options.SummaryColumns.AddRange(npCols);

            //對每個產線
            foreach (DataRow lineRow in linesTable.Rows)
            {
                DataRow[] rows = _table.Select("產線 = '" + lineRow["產線"] + "'", "員工名稱");

                //寫入內容
                options.Row           = writeRow;
                options.SummaryPrefix = lineRow["產線"] + "產線小計";

                foreach (DataRow row in rows)
                {
                    if (!row.IsNull("借入"))
                    {
                        row["產線"] = "由" + row["借入"] + "借入";
                    }
                }

                writeRow = this.SheetAdapter.PasteDataRows(rows, options);
            }

            //寫入總計
            DataRow totalRow = _table.NewRow();

            totalRow[0] = "總計";
            foreach (string sumCol in options.SummaryColumns)
            {
                object o;
                o = _table.Compute("SUM([" + sumCol + "])", string.Empty);
                totalRow[sumCol] = Convert.IsDBNull(o) ? 0 : (decimal)o;
            }
            _table.Rows.Add(totalRow);

            writeRow = this.SheetAdapter.PasteDataRow(totalRow, writeRow, 1);

            //設定顯示格式
            foreach (string npCol in npCols)
            {
                this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf(npCol) + 1, "G/通用格式;G/通用格式;* \"-\"_-");
            }

            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("生產工時") + 1, "G/通用格式;G/通用格式;* \"-\"_-");
            foreach (HourType hourType in Enum.GetValues(typeof(HourType)))
            {
                if (hourType != HourType.一般工時)
                {
                    this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf(hourType.ToString()) + 1, "G/通用格式;G/通用格式;* \"-\"_-");
                }
            }
            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("非生產TTL") + 1, "G/通用格式;G/通用格式;* \"-\"_-");
            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("生產%") + 1, "0.00%");
            this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("非生產%") + 1, "0.00%");
            //this.SheetAdapter.SetFormat(4, _table.Columns.IndexOf("外包工時") + 1, "#,##0.00;#,##0.00;* \"-\"_-");

            base.WriteContent();
        }
 private void OpenNdependProject()
 {
     nDependServicesProvider.ProjectManager.ShowDialogChooseAnExistingProject(IntPtr.Zero, out nDependProject);
     if (nDependProject == null) return;
     ICodeBase lastAnalysisCodebase = new CodeBaseManager(nDependProject).LoadLastCodebase();
     codeElementsManager = new CodeElementsManager(lastAnalysisCodebase);
     userDefinedMetrics = new UserDefinedMetrics(lastAnalysisCodebase);
     dataTableHelper = new DataTableHelper(codeElementsManager, userDefinedMetrics);
     FillBaseControls();
 }
Example #16
0
        private bool CheckOutBatch_part(DataRow rImp)
        {
            var bSuccess  = false;
            var dtCheckIn = _mTB_EmployeeCheckInDAL.GetByWorkID(DataTableHelper.TryGet(rImp, "工号"),
                                                                DataTableHelper.TryGet(rImp, "身份证号码"));

            if (DataTableHelper.IsEmptyDataTable(dtCheckIn))
            {
                return(false);
            }

            bool    bCanLeave = false;
            decimal?dSum      = null;
            var     sWorkID   = string.Empty;

            //启用事务
            using (_tran = _connection.BeginTransaction())
            {
                try
                {
                    var sReason   = DataTableHelper.TryGet(rImp, "退房原因");
                    var sRemark   = DataTableHelper.TryGet(rImp, "备注");
                    var sCanLeave = DataTableHelper.TryGet(rImp, "同步签退离职系统");

                    //添加退房记录
                    var mTB_EmployeeCheckOut = new TB_EmployeeCheckOut();
                    mTB_EmployeeCheckOut.BedID        = Convert.ToInt32(dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_BedID]);
                    mTB_EmployeeCheckOut.BU           = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_BU] is DBNull ? string.Empty : dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_BU].ToString();
                    mTB_EmployeeCheckOut.BUID         = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_BUID] is DBNull ? 0 : Convert.ToInt32(dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_BUID]);
                    mTB_EmployeeCheckOut.CardNo       = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_CardNo] is DBNull ? string.Empty : dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_CardNo].ToString();
                    mTB_EmployeeCheckOut.CheckInDate  = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_CheckInDate] is DBNull ? DateTime.Now : Convert.ToDateTime(dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_CheckInDate]);
                    mTB_EmployeeCheckOut.CheckOutDate = DateTime.Now;
                    mTB_EmployeeCheckOut.Company      = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_Company] is DBNull ? string.Empty : dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_Company].ToString();
                    mTB_EmployeeCheckOut.Creator      = SessionHelper.Get(HttpContext.Current, TypeManager.User) == null ? ((TB_SystemAdmin)SessionHelper.Get(HttpContext.Current, TypeManager.Admin)).Account : ((TB_User)SessionHelper.Get(HttpContext.Current, TypeManager.User)).ADAccount;
                    sWorkID = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_EmployeeNo] is DBNull ? string.Empty : dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_EmployeeNo].ToString();
                    mTB_EmployeeCheckOut.EmployeeNo = sWorkID;
                    mTB_EmployeeCheckOut.IsSmoking  = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_IsSmoking] is DBNull ? false : Convert.ToBoolean(dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_IsSmoking]);
                    mTB_EmployeeCheckOut.Name       = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_Name] is DBNull ? string.Empty : dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_Name].ToString();
                    mTB_EmployeeCheckOut.Province   = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_Province] is DBNull ? string.Empty : dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_Province].ToString();
                    mTB_EmployeeCheckOut.RoomID     = Convert.ToInt32(dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_RoomID]);
                    mTB_EmployeeCheckOut.Sex        = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_Sex] is DBNull ? 0 : Convert.ToInt32(dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_Sex]);
                    mTB_EmployeeCheckOut.SiteID     = Convert.ToInt32(dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_SiteID]);
                    mTB_EmployeeCheckOut.Telephone  = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_Telephone] is DBNull ? string.Empty : dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_Telephone].ToString();
                    mTB_EmployeeCheckOut.Reason     = sReason == "" ? string.Empty : sReason;
                    mTB_EmployeeCheckOut.Remark     = sRemark == "" ? string.Empty : sRemark;
                    bCanLeave = (0 == string.Compare(sCanLeave, "是", true));
                    mTB_EmployeeCheckOut.CanLeave         = bCanLeave ? 1 : 0;
                    mTB_EmployeeCheckOut.EmployeeTypeName = dtCheckIn.Rows[0][TB_EmployeeCheckIn.col_EmployeeTypeName].ToString();

                    //调房--分配到未入住区域
                    //if (sReason.Contains("调房"))
                    //{
                    //    TB_AssignDormArea tB_AssignDormArea = new TB_AssignDormArea();
                    //    tB_AssignDormArea.DormAreaID = Convert.ToInt32(sReason.Split('#')[1]);
                    //    tB_AssignDormArea.CardNo = dtCheckIn.Rows[0]["CardNo"].ToString();
                    //    tB_AssignDormArea.EmployeeNo = dtCheckIn.Rows[0]["EmployeeNo"].ToString();
                    //    tB_AssignDormArea.CreateUser = SessionHelper.Get(HttpContext.Current, TypeManager.User) == null ? ((TB_SystemAdmin)SessionHelper.Get(HttpContext.Current, TypeManager.Admin)).Account : ((TB_User)SessionHelper.Get(HttpContext.Current, TypeManager.User)).ADAccount;
                    //    tB_AssignDormArea.CreateDate = System.DateTime.Now;
                    //    new AssignRoomBLL().AssignArea(tB_AssignDormArea);
                    //    sReason = sReason.Split('#')[0];
                    //}

                    _mTB_EmployeeCheckOutDAL.Create(mTB_EmployeeCheckOut, _tran, _db);

                    //更新床位状态
                    _mTB_BedDAL.Update(mTB_EmployeeCheckOut.BedID, _tran, _db, TypeManager.BedStatus.Free);
                    //删除入住信息
                    int intID = (int)dtCheckIn.Rows[0]["ID"];
                    _mTB_EmployeeCheckInDAL.Delete(intID, _tran, _db);

                    //添加扣费记录
                    ChargingBLL mChargingBLL = new ChargingBLL();
                    TB_Charging mTB_Charging = new TB_Charging();
                    mTB_Charging.Name          = mTB_EmployeeCheckOut.Name;
                    mTB_Charging.EmployeeNo    = mTB_EmployeeCheckOut.EmployeeNo;
                    mTB_Charging.ChargeContent = "管理费";
                    decimal num = 0.0M;
                    decimal.TryParse(DataTableHelper.TryGet(rImp, "管理费"), out num);
                    mTB_Charging.Money = num;

                    mTB_Charging.AirConditionFee = "空调费";
                    num = 0.0M;
                    decimal.TryParse(DataTableHelper.TryGet(rImp, "空调费"), out num);
                    mTB_Charging.AirConditionFeeMoney = num;

                    mTB_Charging.RoomKeyFee = "钥匙费";
                    num = 0.0M;
                    decimal.TryParse(DataTableHelper.TryGet(rImp, "钥匙费"), out num);
                    mTB_Charging.RoomKeyFeeMoney = num;

                    mTB_Charging.OtherFee = "其他费";
                    num = 0.0M;
                    decimal.TryParse(DataTableHelper.TryGet(rImp, "其他费"), out num);
                    mTB_Charging.OtherFeeMoney = num;
                    mTB_Charging.SiteID        = mTB_EmployeeCheckOut.SiteID;
                    mTB_Charging.Creator       = mTB_EmployeeCheckOut.Creator;
                    mTB_Charging.BU            = mTB_EmployeeCheckOut.BU;
                    mChargingBLL.Add(mTB_Charging, _tran);

                    dSum = mTB_Charging.Money + mTB_Charging.AirConditionFeeMoney
                           + mTB_Charging.RoomKeyFeeMoney + mTB_Charging.OtherFeeMoney; //总扣费

                    //提交事务
                    _tran.Commit();
                    bSuccess = true;
                }
                catch (Exception ex)
                {
                    //回滚事务
                    _tran.Rollback();
                    //throw ex;
                    LogManager.GetInstance().ErrorLog("批量退房失败CheckOutBatch_part", ex);
                }
            }

            if (bSuccess && bCanLeave)
            {
                SigningExitForEM(-1, sWorkID, dSum);
            }
            return(bSuccess);
        }
        protected override void BeforeExport()
        {
            _subttlRows = new List<int>();

            string lineFilter = string.Empty;
            if(!string.IsNullOrEmpty(_form.Line))
                lineFilter = "���u = '" + _form.Line + "'";

            FinishedWorksheetReportSourceTableAdapter adapter = new FinishedWorksheetReportSourceTableAdapter();

            //���o�򥻳�����
            _srcTable = adapter.GetData(_startDate, _endDate);
            _srcTable.Columns.Add("����`�u��auto", typeof(decimal), "(�����u�� + �~�]�u��)");
            //_srcTable.Columns.Add("�h��ƶq", typeof(decimal));

            //���o�C��u�@�ɼ�
            Dictionary<DateTime, decimal> workHoursDic = new Dictionary<DateTime, decimal>();
            DateTime minDate = _startDate;
            DateTime maxDate = _endDate;

            object tmpObj = _srcTable.Compute("MIN(���)",string.Empty);
            if (tmpObj != DBNull.Value)
                minDate = (DateTime)tmpObj;

            tmpObj = _srcTable.Compute("MAX(���)", string.Empty);
            if (tmpObj != DBNull.Value)
            {
                maxDate = (DateTime)tmpObj;
                maxDate = new DateTime(maxDate.Year, maxDate.Month, DateTime.DaysInMonth(maxDate.Year, maxDate.Month));
            }

            for (DateTime date = minDate; date <= maxDate; date = date.AddMonths(1))
            {
                decimal hours = Global.GetWorkingHours(date.Year, date.Month);
                DateTime key = new DateTime(date.Year, date.Month, 1);
                workHoursDic.Add(key, hours);
            }

            //���s�B���ڤu��
            DateTime curRowMonth = DateTime.MinValue;
            foreach (ReportDataSet.FinishedWorksheetReportSourceRow row in _srcTable)
            {
                if (!row.IsNull("�~��"))
                {
                    if (row.�~�� != curRowMonth.Year || row.��� != curRowMonth.Month)
                        curRowMonth = new DateTime(row.�~��, row.���, 1);

                    row.�����u�� = Math.Round(row.�����u�� / workHoursDic[curRowMonth], MidpointRounding.AwayFromZero);
                }
            }

            //���sGroup���
            DataTableHelper dtHelper = new DataTableHelper();
            _table = dtHelper.SelectGroupByInto("ReportTable", _srcTable,
                "���u,��ڧ�����,�u�@�渹,�Ǹ�,�~��,�~�W,�ƶq,���," +
                "Sum(�����u��) �����u��, Sum(�����u��) �����u��,�~�]�u��,�~�]�u��,�зǤu��,���H�u����,����`�u��,����`�u��auto,����`�u��," +
                "�з��`�u��,�з��`�u��,�Ͳ��IJv,���зǤu��,��ڤu��,��ڤu��,�u�~�s��",
                lineFilter, "���u,��ڧ�����,�u�@�渹,�~��,�~�W,�ƶq,�зǤu��,���H�u����,���зǤu��,�u�~�s��");

            //�]�w���
            _table.Columns["���"].DefaultValue = "KPCS";

            //���oLaborWage��Ʈw
            LaborWageHelper lwHelper = new LaborWageHelper();
            LaborWage�u�@��~��Table lwTable = null;

            //�B��Ǹ��ö�J�~�]�u��P�u��
            string curWorksheetNumber = string.Empty;
            //int seriesNumber = 1;
            foreach (DataRow row in _table.Rows)
            {
                string wsNumber = row["�u�@�渹"].ToString();
                string pn = row["�~��"].ToString();
                int wpid = (int)row["�u�~�s��"];

                if (curWorksheetNumber != wsNumber)
                {
                    curWorksheetNumber = wsNumber;
                    lwTable = lwHelper.GetData(curWorksheetNumber);
                    //seriesNumber = 1;
                }

                //���o�h��
                //row["�h��ƶq"] = DatabaseSet.GetNGAmount(wsNumber, wpid) / 1000.0f;

                //DataRow[] lwRows = lwTable.Select("�u�~�s�� = " + row["�u�~�s��"]);
                object result = lwTable.Compute("SUM(�~�]�u��)", string.Format("�u�~�s�� = {0}", row["�u�~�s��"].ToString()));

                //if (lwRows.Length > 0)
                if (result != null && result != DBNull.Value)
                {
                    //decimal laborWage = (decimal)lwRows[0]["�~�]�u��"];
                    decimal laborWage = Convert.ToDecimal(result);

                    row["�~�]�u��"] = laborWage;
                    row["�~�]�u��"] = laborWage / Settings.HourlyPay;
                }

                //row["�Ǹ�"] = seriesNumber++;
                row["�Ǹ�"] = wpid;
                row["����`�u��"] = row["����`�u��auto"];
            }

            base.BeforeExport();
        }
Example #18
0
        //访问离职系统,进行签退
        private int SigningExitForEM(int id, string workID = "", decimal?cost = null)
        {
            var          sWorkID = workID;
            DbConnection dbConn  = null;

            if (string.IsNullOrEmpty(sWorkID))
            {
                try
                {// get checkout Employee No
                    var dbDorm = DBO.CreateDatabase();
                    dbConn = dbDorm.CreateConnection();
                    dbConn.Open();

                    string strSQL           = @"select RoomID,BedID,EmployeeNo,Name,CardNo from TB_EmployeeCheckOut
                                      where id=@ID";
                    var    dbCommandWrapper = dbDorm.DbProviderFactory.CreateCommand();
                    dbCommandWrapper.CommandType = CommandType.Text;
                    dbCommandWrapper.CommandText = strSQL;
                    dbDorm.AddInParameter(dbCommandWrapper, "@ID", DbType.Int32, id);
                    var ds = dbDorm.ExecuteDataSet(dbCommandWrapper);
                    if (DataTableHelper.IsEmptyDataSet(ds))
                    {
                        return(-1);
                    }
                    var dr = DataTableHelper.GetDataSet_Row0(ds);
                    sWorkID = dr["EmployeeNo"] as string;
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    dbConn.Close();
                }
            }

            if (string.IsNullOrEmpty(sWorkID))
            {
                return(-1);
            }

            //update
            DbTransaction dbTran = null;

            try
            {
                string sAppGroupID = "097F36B9-B8A2-478B-97DA-79E76E384571";
                var    dbEM        = DBO.CreateDatabaseEM();
                dbConn = dbEM.CreateConnection();
                dbConn.Open();
                dbTran = dbConn.BeginTransaction();

                var strSQL      = string.Empty;
                int nRet        = 0;
                var sCreateUser = SessionHelper.Get(HttpContext.Current, TypeManager.User) == null ? ((TB_SystemAdmin)SessionHelper.Get(HttpContext.Current, TypeManager.Admin)).Account : ((TB_User)SessionHelper.Get(HttpContext.Current, TypeManager.User)).EName;

                //create EM_Approved
                if (null != cost && cost.HasValue)
                {
                    strSQL = @"insert into EM_Approved([Approved_ID],[FormID],[ApprovalGroupID],[EmpID],[Cost],[Balance],
                                [DeleteMark],[Remark],[CreateDate],[CreateUserId],[CreateUserName])
                            select [Approving_ID],[FormID],[ApprovalGroupID],[EmpID],@Cost,[Balance],
                                [DeleteMark],'宿舍系统自动签退',GetDate(),NULL,@CreateUserName
                            from EM_Approving
                            where ApprovalGroupID=@AppGroupID
                            and EmpID=@EmpID
                            ";
                }
                else
                {
                    strSQL = @"insert into EM_Approved([Approved_ID],[FormID],[ApprovalGroupID],[EmpID],[Cost],[Balance],
                                [DeleteMark],[Remark],[CreateDate],[CreateUserId],[CreateUserName])
                            select [Approving_ID],[FormID],[ApprovalGroupID],[EmpID],[Cost],[Balance],
                                [DeleteMark],'宿舍系统自动签退',GetDate(),NULL,@CreateUserName
                            from EM_Approving
                            where ApprovalGroupID=@AppGroupID
                            and EmpID=@EmpID
                            ";
                }

                var dbCommandWrapper = dbEM.DbProviderFactory.CreateCommand();
                dbCommandWrapper.CommandType = CommandType.Text;
                dbCommandWrapper.CommandText = strSQL;
                dbEM.AddInParameter(dbCommandWrapper, "@CreateUserName", DbType.String, sCreateUser);
                dbEM.AddInParameter(dbCommandWrapper, "@AppGroupID", DbType.String, sAppGroupID);
                dbEM.AddInParameter(dbCommandWrapper, "@EmpID", DbType.String, sWorkID);
                if (null != cost && cost.HasValue)
                {
                    dbEM.AddInParameter(dbCommandWrapper, "@Cost", DbType.Decimal, cost.Value);
                }
                nRet = dbEM.ExecuteNonQuery(dbCommandWrapper, dbTran);

                //delete EM_Approving
                strSQL                       = @"delete from EM_Approving
                            where 1 = 1
                            and ApprovalGroupID = @AppGroupID
                            and EmpID = @EmpID";
                dbCommandWrapper             = dbEM.DbProviderFactory.CreateCommand();
                dbCommandWrapper.CommandType = CommandType.Text;
                dbCommandWrapper.CommandText = strSQL;
                dbEM.AddInParameter(dbCommandWrapper, "@AppGroupID", DbType.String, sAppGroupID);
                dbEM.AddInParameter(dbCommandWrapper, "@EmpID", DbType.String, sWorkID);
                nRet = dbEM.ExecuteNonQuery(dbCommandWrapper, dbTran);

                dbTran.Commit();
            }
            catch (Exception ex)
            {
                dbTran.Rollback();
                throw ex;
            }
            finally
            {
                dbConn.Close();
            }

            return(0);
        }
Example #19
0
        public DataTablesResponse GetList(IDataTablesRequest dataTableParam, UserSearchViewModel searchViewModel)
        {
            try
            {
                var query = UserRepository.GetAll(x => x.IsDeleted == false, null, x => x.Role);

                if (searchViewModel.ActiveType != (int)ActiveType.All)
                {
                    switch (searchViewModel.ActiveType)
                    {
                        case (int)ActiveType.Active:
                            {
                                query = query.Where(x => x.IsActive);
                                break;
                            }

                        case (int)ActiveType.InActive:
                            {
                                query = query.Where(x => !x.IsActive);
                                break;
                            }
                    }
                }

                if (searchViewModel.RoleName != Constants.AllValue.ToString())
                {
                    query = query.Where(x => x.Role.Name == searchViewModel.RoleName);
                }

                var dataTableHelper = new DataTableHelper<UserViewModel, User>(query, x => new UserViewModel
                {
                    Id = x.Id,
                    Email = x.Email,
                    FullName = x.FirstName + " " + x.LastName,
                    Role = x.Role.Name,
                    IsActive = x.IsActive
                });

                var entities = dataTableHelper.GetDataVMForResponse(dataTableParam);
                var result = dataTableHelper.GetDataToList(dataTableParam, entities);

                return new DataTablesResponse(dataTableParam.Draw, result, entities.Count(), entities.Count());
            }
            catch (Exception ex)
            {
                Provider.Instance.LogError(ex);
                return new DataTablesResponse(dataTableParam.Draw, new List<UserViewModel>(), 0, 0);
            }
        }
Example #20
0
        public override bool Insert()
        {
            bool    bResult = false;
            DataSet dataSet = new DataSet();

            DataTable dtAttributeConf           = CreateDataTableForInsert();
            Dictionary <string, string> dataRow = new Dictionary <string, string>()
            {
                { FMM_PRODUCTION_LINE_FIELDS.FIELD_PRODUCTION_LINE_KEY, _objectKey },
                { FMM_PRODUCTION_LINE_FIELDS.FIELD_LINE_NAME, _objectName.ToUpper() },
                { FMM_PRODUCTION_LINE_FIELDS.FIELD_LINE_CODE, _line_code },
                { FMM_PRODUCTION_LINE_FIELDS.FIELD_DESCRIPTIONS, _description },
                { FMM_PRODUCTION_LINE_FIELDS.FIELD_EDITOR, PropertyService.Get(PROPERTY_FIELDS.USER_NAME) }
            };

            FanHai.Hemera.Utils.Common.Utils.AddRowDataToDataTable(ref dtAttributeConf, dataRow);
            if (dtAttributeConf.Rows.Count > 0)
            {
                dataSet.Tables.Add(dtAttributeConf);
            }

            //  UDAs
            if (_UDAs.UserDefinedAttrList.Count > 0)
            {
                DataTable dtUDAs = DataTableHelper.CreateDataTableForUDAEx(BASE_ATTRIBUTE_VALUE_FIELDS.DATABASE_TABLE_NAME, BASE_ATTRIBUTE_VALUE_FIELDS.FIELD_OBJECT_KEY, BASE_ATTRIBUTE_VALUE_FIELDS.FIELD_OBJECT_TYPE);
                _UDAs.ParseInsertDataToDataTable(ref dtUDAs);

                if (dtUDAs.Rows.Count > 0)
                {
                    dataSet.Tables.Add(dtUDAs);
                }
            }
            try
            {
                IServerObjFactory factor = CallRemotingService.GetRemoteObject();
                if (null != factor)
                {
                    if (dataSet.Tables.Count > 0)
                    {
                        DataSet retDS  = factor.CreateIUdaCommonControlEx().AddLineAttributeValue(dataSet);
                        string  strMsg = FanHai.Hemera.Share.Common.ReturnMessageUtils.GetServerReturnMessage(retDS);
                        if (strMsg.Length < 1)
                        {
                            foreach (UserDefinedAttrEx uda in _UDAs.UserDefinedAttrList)
                            {
                                uda.OperationAction = OperationAction.Update;
                            }
                            this.ResetDirtyList();
                            bResult = true;
                        }
                        else
                        {
                            MessageService.ShowError(strMsg);
                        }
                    }
                    else
                    {
                        MessageService.ShowWarning("No dataTable in input parameter");
                    }
                }
            }
            catch (Exception e)
            {
                MessageService.ShowError(e.Message);
            }
            finally
            {
                CallRemotingService.UnregisterChannel();
            }
            return(bResult);
        }
Example #21
0
        void InitReportTable()
        {
            ReportDataSetTableAdapters.UnitPriceReportTableAdapter adapter = new Mong.ReportDataSetTableAdapters.UnitPriceReportTableAdapter();

            //���o�򥻳�����
            _table = adapter.GetData(_startDate, _endDate);

            //���o�u�@�渹,�~��,��ڤu���
            System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
            cmd.CommandText = "SELECT �u�@��.�渹 AS �渹, ���~�~��.�~��, Year(�u��.���) AS �~��, Month(�u��.���) AS ���, " +
                                "IIF(SUM(�u��.�u��) IS NULL , 0, SUM(�u��.�u��)) AS ��ڤu��," +
                                "IIF(SUM(�u��.�u��) IS NULL , 0, SUM(���u.�~�� * �u��.�u��)) AS ��ڤu�� " +
                                "FROM ((((�u�@�� INNER JOIN �u�@��~�� ON �u�@��~��.�渹 = �u�@��.�渹) " +
                                "INNER JOIN ���~�~�� ON �u�@��~��.�~�� = ���~�~��.�~��) " +
                                "LEFT JOIN �u�� ON �u��.�u�@�渹 =  �u�@��~��.�渹 AND �u�@��~��.�s�� = �u��.�u�~�s��) " +
                                "LEFT JOIN ���u ON �u��.���u�s�� = ���u.�s��) " +
                                "WHERE �u�@��.��ڧ����� > #" + _startDate.ToString("yyyy/MM/dd") + "# AND �u�@��.��ڧ����� < #" + _endDate.ToString("yyyy/MM/dd") + "# " +
                                "GROUP BY  �u�@��.�渹, ���~�~��.�~��, Year(�u��.���), Month(�u��.���)" +
                                "ORDER BY  �u�@��.�渹, ���~�~��.�~��, Year(�u��.���), Month(�u��.���)";

            cmd.Connection = adapter.Connection;
            System.Data.DataTable baseTable = new System.Data.DataTable();
            baseTable.Columns.Add(new DataColumn("�渹", typeof(string)));
            baseTable.Columns.Add(new DataColumn("�~��", typeof(string)));
            baseTable.Columns.Add(new DataColumn("��ڤu��", typeof(decimal)));
            baseTable.Columns.Add(new DataColumn("��ڤu��", typeof(decimal)));
            baseTable.Columns.Add(new DataColumn("�~��", typeof(int)));
            baseTable.Columns.Add(new DataColumn("���", typeof(int)));
            System.Data.OleDb.OleDbDataAdapter baseAdapter = new System.Data.OleDb.OleDbDataAdapter();
            baseAdapter.SelectCommand = cmd;
            baseAdapter.Fill(baseTable);

            //���o����d��
            int minYear, minMonth, maxYear, maxMonth;
            DateTime minDate, maxDate;
            object o;

            o = baseTable.Compute("MIN(�~��)", string.Empty);
            minYear = Convert.IsDBNull(o) ? DateTime.MinValue.Year : (int)o;

            o = baseTable.Compute("MIN(���)", string.Empty);
            minMonth = Convert.IsDBNull(o) ? DateTime.MinValue.Month : (int)o;

            o = baseTable.Compute("MAX(�~��)", string.Empty);
            maxYear = Convert.IsDBNull(o) ? DateTime.MinValue.Year : (int)o;

            o = baseTable.Compute("MAX(���)", string.Empty);
            maxMonth = Convert.IsDBNull(o) ? DateTime.MinValue.Month : (int)o;

            minDate = new DateTime(minYear, minMonth, 1);
            maxDate = new DateTime(maxYear, maxMonth, 1);

            //���o�C��u�@�ɼ�
            Dictionary<DateTime, decimal> workHoursDic = new Dictionary<DateTime, decimal>();
            for (DateTime date = new DateTime(minDate.Year, minDate.Month, 1); date <= maxDate; date = date.AddMonths(1))
            {
                decimal hours = Global.GetWorkingHours(date.Year, date.Month);
                workHoursDic.Add(date, hours);
            }

            //���s�p��baseTable����ڤu��
            DateTime curRowMonth = DateTime.MinValue;
            foreach (DataRow row in baseTable.Rows)
            {
                if (!Convert.IsDBNull(row["�~��"]))
                {
                    int year = (int)row["�~��"];
                    int month = (int)row["���"];

                    if (year != curRowMonth.Year || month != curRowMonth.Month)
                        curRowMonth = new DateTime(year, month, 1);

                    row["��ڤu��"] = Math.Round(((decimal)row["��ڤu��"]) / workHoursDic[curRowMonth], MidpointRounding.AwayFromZero);
                }
            }

            //���sGroup
            DataTableHelper dtHelper = new DataTableHelper();
            System.Data.DataTable groupTable = dtHelper.SelectGroupByInto("GroupTable", baseTable, "�~��,SUM(��ڤu��) ��ڤu��, SUM(��ڤu��) ��ڤu��", null, "�~��");

            //���o���w����d�򤺪��u�@�渹
            cmd = new System.Data.OleDb.OleDbCommand();
            cmd.CommandText = "SELECT DISTINCT(�渹) FROM �u�@�� WHERE ��ڧ����� > #" + _startDate.ToString("yyyy/MM/dd") + "# AND ��ڧ����� < #" + _endDate.ToString("yyyy/MM/dd") + "#";
            cmd.Connection = adapter.Connection;
            System.Data.DataTable wsNumTable = new System.Data.DataTable();
            wsNumTable.Columns.Add(new DataColumn("�渹", typeof(string)));
            System.Data.OleDb.OleDbDataAdapter wsNumAdapter = new System.Data.OleDb.OleDbDataAdapter();
            wsNumAdapter.SelectCommand = cmd;
            wsNumAdapter.Fill(wsNumTable);

            List<string> wsNumList = new List<string>();
            foreach (DataRow row in wsNumTable.Rows)
                wsNumList.Add(row["�渹"].ToString());

            //���oLaborWage��Ʈw
            LaborWageHelper lwHelper = new LaborWageHelper();
            LaborWage�u�@��~��Table lwTable = lwHelper.GetDataGroupByPartNumber(wsNumList);

            //��J�u��P�u��
            foreach (ReportDataSet.UnitPriceReportRow row in _table)
            {
                DataRow[] partRows = groupTable.Select(string.Format("�~�� = '{0}'", row.�~��));
                if (partRows.Length > 0)
                {

                    row._��ڤu��_��_�~_ = (decimal)partRows[0]["��ڤu��"];
                    row._��ڤu��_��_�~_ = (decimal)partRows[0]["��ڤu��"];

                }

                //��JLaborWage���
                DataRow[] lwRows = lwTable.Select(string.Format("�~�� = '{0}'", row.�~��));
                if (lwRows.Length > 0)
                {
                    decimal wage = (decimal)lwRows[0]["�~�]�u��"];
                    row._��ڤu��_��_�~_ += wage;
                    row._��ڤu��_��_�~_ += wage / Settings.HourlyPay;
                }
            }
        }
Example #22
0
        /// <summary>
        /// 业务接口调用
        /// </summary>
        /// <param name="Xml">XML格式</param>
        /// <param name="DeviceMark">设备号</param>
        /// <param name="Token">记号</param>
        /// <returns></returns>
        public string Invoke(string Xml, string DeviceMark, string Token)
        {
            //Stopwatch sw = new Stopwatch();
            //sw.Start();
            Xml = GZipHelper.Uncompress(Xml);
            StringBuilder Output     = new StringBuilder();
            ArrayList     arraySql   = new ArrayList();
            ArrayList     arrayParam = new ArrayList();
            int           Type       = 0;
            bool          IsOk       = false;

            try
            {
                AnalysisXml(Xml, out arraySql, out arrayParam, out Type);
                switch (Type)
                {
                case 0:    //新增
                    IsOk = DataFactory.SqlHelper().BatchExecuteBySql((object[])arraySql.ToArray(typeof(object)), (object[])arrayParam.ToArray(typeof(object))) >= 0 ? true : false;
                    Output.Append(ResultMsg(IsOk, DbErrorMsg.ReturnMsg));
                    break;

                case 1:    //修改
                    IsOk = DataFactory.SqlHelper().BatchExecuteBySql((object[])arraySql.ToArray(typeof(object)), (object[])arrayParam.ToArray(typeof(object))) >= 0 ? true : false;
                    Output.Append(ResultMsg(IsOk, DbErrorMsg.ReturnMsg));
                    break;

                case 2:    //删除
                    IsOk = DataFactory.SqlHelper().BatchExecuteBySql((object[])arraySql.ToArray(typeof(object)), (object[])arrayParam.ToArray(typeof(object))) >= 0 ? true : false;
                    Output.Append(ResultMsg(IsOk, DbErrorMsg.ReturnMsg));
                    break;

                case 3:    //查询
                    string     strSql           = string.Join(",", (string[])arraySql.ToArray(typeof(string)));
                    object[]   arrayParamobject = (object[])arrayParam.ToArray(typeof(object));
                    SqlParam[] paramArray       = (SqlParam[])arrayParamobject[0];
                    DataTable  dt = DataFactory.SqlHelper().GetDataTableBySQL(new StringBuilder(strSql), paramArray);
                    if (DataTableHelper.IsExistRows(dt))
                    {
                        Output.Append(DataTableHelper.DataTableToXML(dt));
                    }
                    else
                    {
                        Output.Append(ResultMsg(false, "没有找到您要的相关数据"));
                    }
                    break;

                case 4:    //存储过程-DataTableProc
                    string    DataTableProc            = string.Join(",", (string[])arraySql.ToArray(typeof(string)));
                    object[]  DataTableProcParamobject = (object[])arrayParam.ToArray(typeof(object));
                    Hashtable DataTableProcparamArray  = (Hashtable)DataTableProcParamobject[0];
                    DataTable DataTableProc_dt         = DataFactory.SqlHelper().GetDataTableProc(DataTableProc, DataTableProcparamArray);
                    if (DataTableHelper.IsExistRows(DataTableProc_dt))
                    {
                        Output.Append(DataTableHelper.DataTableToXML(DataTableProc_dt));
                    }
                    else
                    {
                        Output.Append(ResultMsg(false, "没有找到您要的相关数据"));
                    }
                    break;

                case 5:    //存储过程-DataSetProc
                    string    DataSetProc            = string.Join(",", (string[])arraySql.ToArray(typeof(string)));
                    object[]  DataSetProcParamobject = (object[])arrayParam.ToArray(typeof(object));
                    Hashtable DataSetProcparamArray  = (Hashtable)DataSetProcParamobject[0];
                    DataSet   DataSetProc_dt         = DataFactory.SqlHelper().GetDataSetProc(DataSetProc, DataSetProcparamArray);
                    if (DataSetProc_dt != null)
                    {
                        Output.Append(DataTableHelper.DataSetToXML(DataSetProc_dt));
                    }
                    else
                    {
                        Output.Append(ResultMsg(false, "没有找到您要的相关数据"));
                    }
                    break;

                case 6:    //存储过程-ExecuteByProc
                    string    ExecuteByProc            = string.Join(",", (string[])arraySql.ToArray(typeof(string)));
                    object[]  ExecuteByProcParamobject = (object[])arrayParam.ToArray(typeof(object));
                    Hashtable ExecuteByProcparamArray  = (Hashtable)ExecuteByProcParamobject[0];
                    IsOk = DataFactory.SqlHelper().ExecuteByProc(ExecuteByProc, ExecuteByProcparamArray) >= 0 ? true : false;
                    Output.Append(ResultMsg(IsOk, DbErrorMsg.ReturnMsg));
                    break;

                case 7:    //存储过程-BatchExecuteByProc
                    IsOk = DataFactory.SqlHelper().BatchExecuteByProc((object[])arraySql.ToArray(typeof(object)), (object[])arrayParam.ToArray(typeof(object))) >= 0 ? true : false;
                    Output.Append(ResultMsg(IsOk, DbErrorMsg.ReturnMsg));
                    break;

                case -1:    //异常信息
                    Output.Append(ResultMsg(false, Logger.LogErrorMsg));
                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                Output.Append(ResultMsg(false, ex.Message));
            }
            //sw.Stop();
            //LoggerTime.WriteLog("服务器处理总耗时:" + sw.ElapsedMilliseconds + "毫秒-----------\r\n");
            return(GZipHelper.Compress(Output.ToString()));
        }