Exemple #1
0
        /// ****************************************************************************
        /// <summary>
        /// 提交数据
        /// </summary>
        /// ****************************************************************************
        public void SubmitData()
        {
            if (this.ApplicationCode != "")
            {
                DAL.QueryStrategy.BiddingReturnStrategyBuilder sb = new RmsPM.DAL.QueryStrategy.BiddingReturnStrategyBuilder();
                sb.AddStrategy(new Strategy(DAL.QueryStrategy.BiddingReturnStrategyName.BiddingCode, this.BiddingCode));

                string sql = sb.BuildMainQueryString();

                EntityData entity = new EntityData("BiddingReturn");
                dao.FillEntity(sql, entity);
                //删除原有排名
                BLL.BiddingSystem.DelHistoryPlace(this.BiddingCode);
                //产生一张新表
                DataTable dt = new DataTable();
                dt.Columns.Add("BiddingReturnCode", System.Type.GetType("System.String"));
                dt.Columns.Add("Money", System.Type.GetType("System.Decimal"));
                dt.Columns.Add("Remark", System.Type.GetType("System.String"));
                dt.Columns.Add("ReturnDate", System.Type.GetType("System.String"));
                dt.Columns.Add("State", System.Type.GetType("System.String"));
                dt.Columns.Add("BiddingDtlCode", System.Type.GetType("System.String"));
                DataRow dr;
                //读取表中信息,并产生排名
                for (int i = 0; i < this.dgListEdit.Items.Count; i++)
                {
                    dr = dt.NewRow();
                    dr["BiddingReturnCode"] = this.dgListEdit.Items[i].Cells[0].Text.Trim();
                    dr["Money"]             = this.GetControl(i).TotalMoney;
                    dr["Remark"]            = ((HtmlTextArea)this.dgListEdit.Items[i].FindControl("txtRemark")).Value.Trim();
                    dr["ReturnDate"]        = ((AspWebControl.Calendar) this.dgListEdit.Items[i].FindControl("txtReturnDate")).Value;
                    dr["BiddingDtlCode"]    = this.dgListEdit.Items[i].Cells[8].Text.Trim();
                    //dr["State"]=i+1;
                    dt.Rows.Add(dr);
                }
                BLL.Bidding bd = new BLL.Bidding();
                bd.BiddingCode = this.BiddingCode;
                BLL.BiddingReturn br = new BLL.BiddingReturn();
                br.BiddingEmitCode = bd.BiddingLastEmit;
                DataTable dtreturn = br.GetBiddingReturns();
                foreach (DataRow drr in dtreturn.Rows)
                {
                    if (dt.Select("BiddingReturnCode ='" + drr["BiddingReturnCode"].ToString() + "'").Length == 0)
                    {
                        dr = dt.NewRow();
                        dr["BiddingReturnCode"] = drr["BiddingReturnCode"];
                        dr["BiddingDtlCode"]    = drr["BiddingDtlCode"];
                        dr["Money"]             = drr["Money"];
                        dr["Remark"]            = drr["Remark"];
                        dr["ReturnDate"]        = drr["ReturnDate"];
                        //dr.ItemArray.CopyTo(drr.ItemArray, 0);
                        dt.Rows.Add(dr);
                    }
                }


                DataView dv = new DataView(dt);

                dv.Sort = "BiddingDtlCode,Money";
                //for(int i=0;i<dv.Rows.Count;i++)
                int     j            = 0;
                string  tempBDtlCode = "";
                decimal tempMoney    = 0;

                foreach (DataRowView dr2 in dv)
                {
                    if (tempBDtlCode != dr2["BiddingDtlCode"].ToString())
                    {
                        tempBDtlCode = dr2["BiddingDtlCode"].ToString();
                        j            = 0;
                        tempMoney    = 0;
                    }


                    DataRow[] dr1 = entity.CurrentTable.Select("BiddingReturnCode='" + dr2["BiddingReturnCode"].ToString() + "' and " + "BiddingDtlCode='" + dr2["BiddingDtlCode"].ToString() + "'");

                    if (dr1.Length > 0)
                    {
                        dr1[0]["Money"]      = dr2["Money"];
                        dr1[0]["Remark"]     = dr2["Remark"];
                        dr1[0]["ReturnDate"] = dr2["ReturnDate"];
                        //State字段中存放商务标排名,规则为:如果回标金额为0或者为空时不参与商务标排名;金额一样的单位,名次一样。
                        if (!dr2["Money"].ToString().Equals("0") && !dr2["Money"].ToString().Equals(""))
                        {
                            if (tempMoney != System.Convert.ToDecimal(dr2["Money"]))
                            {
                                j++;
                            }
                            dr1[0]["State"] = j;
                        }
                        else
                        {
                            dr1[0]["State"] = "";
                        }
                        tempMoney = System.Convert.ToDecimal(dr2["Money"]);
                    }
                }

                dao.SubmitEntity(entity);
                BLL.Bidding bidding = new BLL.Bidding();
                bidding.BiddingCode = this.BiddingCode;
                bidding.State       = NowState;
                bidding.dao         = dao;
                bidding.BiddingSubmit();
                //更新备注
                BLL.BiddingEmit addRemark = new RmsPM.BLL.BiddingEmit();
                addRemark.BiddingEmitCode = this.BiddingEmitCode;
                addRemark.TotalRemark     = this.txtTotalRemark.Text;
                addRemark.dao             = dao;
                addRemark.BiddingEmitUpdate();
            }
            else
            {
                //删除历史排序记录
                BLL.BiddingSystem.DelHistoryPlace(this.BiddingCode);
                DataTable           dt   = (DataTable)ViewState["dt"];
                BLL.BiddingSupplier BSup = new RmsPM.BLL.BiddingSupplier();

                DAL.QueryStrategy.BiddingReturnStrategyBuilder sb = new RmsPM.DAL.QueryStrategy.BiddingReturnStrategyBuilder();
                sb.AddStrategy(new Strategy(DAL.QueryStrategy.BiddingReturnStrategyName.BiddingEmitCode, this.BiddingEmitCode));

                string sql = sb.BuildMainQueryString();

                EntityData entity = new EntityData("BiddingReturn");
                dao.FillEntity(sql, entity);

                if (dt.Rows.Count > 0)
                {
                    dao.DeleteAllRow(entity);
                    dao.SubmitEntity(entity);
                    string stat = "0";
                    string tempsuppliercodestr = "";
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (((CheckBox)dgListView.Items[i].FindControl("CheckBox1")).Checked == true)
                        {
                            DataRow dr = entity.GetNewRecord();
                            dr["BiddingReturnCode"] = dt.Rows[i]["BiddingReturnCode"].ToString();
                            dr["BiddingDtlCode"]    = dt.Rows[i]["BiddingDtlCode"].ToString();
                            dr["SupplierCode"]      = dt.Rows[i]["SupplierCode"].ToString();
                            dr["OrderCode"]         = dt.Rows[i]["OrderCode"].ToString();
                            dr["BiddingEmitCode"]   = this.BiddingEmitCode;
                            dr["Abnegate"]          = 0;
                            entity.AddNewRecord(dr);
                            //更新供应商表
                            stat = "1";


                            //添加评分信息
                            RmsPM.BLL.BiddingGradeMessage cbiddingGradeMessage = new RmsPM.BLL.BiddingGradeMessage();

                            cbiddingGradeMessage.ApplicationCode      = dt.Rows[i]["BiddingReturnCode"].ToString();
                            cbiddingGradeMessage.BiddingGradeTypeCode = "100002";
                            if (cbiddingGradeMessage.GetBiddings().Rows.Count == 0)
                            {
                                cbiddingGradeMessage.BiddingGradeMessageCode = "";
                                cbiddingGradeMessage.ProjectManage           = "";
                                cbiddingGradeMessage.State = "1";
                                cbiddingGradeMessage.dao   = dao;
                                cbiddingGradeMessage.BiddingGradeMessageAdd();
                            }

                            ////////////////网上招投标数据产生////////////////////
                            if (tempsuppliercodestr.IndexOf(dt.Rows[i]["SupplierCode"].ToString()) == -1 && this.CheckBox2.Checked)
                            {
                                tempsuppliercodestr += "," + dt.Rows[i]["SupplierCode"].ToString();
                                EmitToInsert(dt.Rows[i]["SupplierCode"].ToString(), this.BiddingEmitCode);
                            }
                            ///////////////////////////////////////////////////////
                        }
                        //更新供应商列表

                        BSup.BiddingSupplierCode = this.dgListView.DataKeys[i].ToString();
                        BSup.State = stat;
                        BSup.dao   = dao;
                        BSup.BiddingSupplierUpdate();



                        //BSup.BiddingSupplierUpdate();
                    }
                    dao.SubmitEntity(entity);
                    entity.Dispose();
                }

                //保存开标人
                if (this.CheckBox2.Checked)
                {
                    BiddingBFL.Emit_SendMail(this.BiddingEmitCode, Server.MapPath(ConfigurationManager.AppSettings["VirtualDirectory"].ToString()) + @"\EmailTemplate.xml");
                    foreach (ListItem opener in chkOpener.Items)
                    {
                        if (opener.Selected)
                        {
                            BiddingBFL.InsertBiddingOpener(this.BiddingEmitCode, opener.Value);
                        }
                    }
                }
            }
        }
        public static void GetSHTreeDataSource(DataTable dtConsiderDiathesis, DataTable dtBiddingSupplier, DataTable returndt, string GradeMessageCode, string CodeName, string ParentCodeName, string ParentCode, string Code, string LeftStr, int Deep, decimal PercentageValue, string ConsiderDiathesisCode)
        {
            int num5;

            if (Code == "")
            {
                returndt.Columns.Add("code", Type.GetType("System.String"));
                returndt.Columns.Add("freeflag", Type.GetType("System.String"));
                returndt.Columns.Add("issubtotal", Type.GetType("System.String"));
                returndt.Columns.Add("ColumnCount", Type.GetType("System.Int32"));
                returndt.Clear();
                dtConsiderDiathesis.Columns.Add("code", Type.GetType("System.String"));
                dtConsiderDiathesis.Columns.Add("freeflag", Type.GetType("System.String"));
                dtConsiderDiathesis.Columns.Add("issubtotal", Type.GetType("System.String"));
                dtConsiderDiathesis.Columns.Add("ColumnCount", Type.GetType("System.Int32"));
                for (int i = 0; i < dtBiddingSupplier.Rows.Count; i++)
                {
                    returndt.Columns.Add("Point" + (i + 1), Type.GetType("System.String"));
                    returndt.Columns.Add("Code" + (i + 1), Type.GetType("System.String"));
                    returndt.Columns.Add("GradeMessageCode" + (i + 1), Type.GetType("System.String"));
                    returndt.Columns["Point" + (i + 1)].Caption = dtBiddingSupplier.Rows[i]["SupplierName"].ToString();
                    dtConsiderDiathesis.Columns.Add("Point" + (i + 1), Type.GetType("System.String"));
                    dtConsiderDiathesis.Columns.Add("Code" + (i + 1), Type.GetType("System.String"));
                    dtConsiderDiathesis.Columns.Add("GradeMessageCode" + (i + 1), Type.GetType("System.String"));
                    dtConsiderDiathesis.Columns["Point" + (i + 1)].Caption = dtBiddingSupplier.Rows[i]["SupplierName"].ToString();
                }
            }
            DataRow[] rowArray     = dtConsiderDiathesis.Select(ParentCodeName + "='" + ParentCode.ToString() + "' and BiddingGradeTypeCode='100001'");
            DataTable currentTable = BiddingGradeMessage.GetAllBiddingGradeMessage().CurrentTable;
            string    text         = "";

            for (int j = 0; j < dtBiddingSupplier.Rows.Count; j++)
            {
                if (j != (dtBiddingSupplier.Rows.Count - 1))
                {
                    text = string.Concat(new object[] { text, "'", dtBiddingSupplier.Rows[j]["BiddingSupplierCode"], "'," });
                }
                else
                {
                    text = string.Concat(new object[] { text, "'", dtBiddingSupplier.Rows[j]["BiddingSupplierCode"], "'" });
                }
            }
            int       num3     = 0;
            string    text2    = "";
            DataTable biddings = new DataTable();

            if (text != "")
            {
                foreach (DataRow row in currentTable.Select("ApplicationCode in (" + text + ") and BiddingGradeTypeCode='100001'"))
                {
                    if (num3 != (currentTable.Select("ApplicationCode in (" + text + ") and BiddingGradeTypeCode='100001'").Length - 1))
                    {
                        text2 = string.Concat(new object[] { text2, "'", row["BiddingGradeMessageCode"], "'," });
                    }
                    else
                    {
                        text2 = string.Concat(new object[] { text2, "'", row["BiddingGradeMessageCode"], "'" });
                    }
                    num3++;
                }
                BiddingGrade grade = new BiddingGrade();
                grade.BiddingGradeMessageCode = text2;
                biddings = grade.GetBiddings();
            }
            int num4 = 1;

            foreach (DataRow row2 in rowArray)
            {
                if (num4 == 1)
                {
                    row2["freeflag"] = "1";
                }
                else
                {
                    row2["freeflag"] = "0";
                }
                row2["ColumnCount"] = dtBiddingSupplier.Rows.Count;
                row2["code"]        = Code + ((num4.ToString().Length < 2) ? ("0" + num4.ToString()) : num4.ToString());
                row2["Percentage"]  = Convert.ToDecimal(row2["Percentage"]) * 100M;
                row2["issubtotal"]  = "0";
                DataRow row3 = returndt.NewRow();
                row3.ItemArray = row2.ItemArray;
                returndt.Rows.Add(row3);
                for (num5 = 0; num5 < dtBiddingSupplier.Rows.Count; num5++)
                {
                    row3["Point" + (num5 + 1)]            = 0;
                    row3["Code" + (num5 + 1)]             = "";
                    row3["GradeMessageCode" + (num5 + 1)] = "";
                }
                int num6 = 0;
                if (text != "")
                {
                    foreach (DataRow row4 in currentTable.Select("ApplicationCode in (" + text + ") and BiddingGradeTypeCode='100001'"))
                    {
                        num6++;
                        row3["GradeMessageCode" + num6] = row4["BiddingGradeMessageCode"];
                        foreach (DataRow row5 in biddings.Select(string.Concat(new object[] { "BiddingGradeMessageCode='", row4["BiddingGradeMessageCode"], "' and BiddingConsiderDiathesisCode='", row2["BiddingConsiderDiathesisCode"], "'" })))
                        {
                            row3["Code" + num6]  = row5["BiddingGradeCode"];
                            row3["Point" + num6] = row5["GradePoint"];
                        }
                    }
                }
            }
            DataRow row6 = returndt.NewRow();

            row6["BiddingConsiderDiathesisCode"] = "";
            row6["BiddingConsiderDiathesis"]     = "总计";
            row6["GradeGuideline"] = "";
            row6["freeflag"]       = "0";
            row6["ColumnCount"]    = dtBiddingSupplier.Rows.Count;
            row6["code"]           = Code + ((num4.ToString().Length < 2) ? ("0" + num4.ToString()) : num4.ToString());
            row6["Percentage"]     = Convert.ToDecimal(1) * 100M;
            row6["issubtotal"]     = "1";
            returndt.Rows.Add(row6);
            for (num5 = 0; num5 < dtBiddingSupplier.Rows.Count; num5++)
            {
                row6["Point" + (num5 + 1)]            = 0;
                row6["Code" + (num5 + 1)]             = "";
                row6["GradeMessageCode" + (num5 + 1)] = "";
            }
            for (int k = 0; k < (returndt.Rows.Count - 1); k++)
            {
                for (int m = 0; m < Convert.ToInt32(returndt.Rows[0]["ColumnCount"]); m++)
                {
                    row6["Point" + (m + 1)] = Convert.ToString((decimal)(Convert.ToDecimal(row6["Point" + (m + 1)]) + ((Convert.ToDecimal(returndt.Rows[k]["Point" + (m + 1)]) * Convert.ToDecimal(returndt.Rows[k]["Percentage"])) / 100M)));
                }
            }
        }