black-goat-me
2023-04-24 a759f9bf2a09b7c4ba10b8afa4e421a8abf511b4
配套表(发料单)增加工序工价列修改完成
工序流转卡维护引出功能添加完成
3个文件已修改
241 ■■■■ 已修改文件
WorkM/报表分析/Mes_OrderProcFlowAllReport.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WorkM/报表分析/Sc_ICMOWorkCompleteSet.cs 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WorkM/车间管理/Sc_ProcessExchangeBillQuery.cs 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WorkM/±¨±í·ÖÎö/Mes_OrderProcFlowAllReport.cs
@@ -190,7 +190,7 @@
                sDlgWhere = sDlgWhere.Substring(1, sDlgWhere.Length - 1);
            }
            //
            DSet = SubCn.RunProcReturn("exec h_p_Mes_OrderProcFlowAllReport " + sDlgWhere, "Gy_Czygl");
            DSet = SubCn.RunProcReturn("exec h_p_Mes_OrderProcFlowAllReport_New_shang_ji_dai_ma " + sDlgWhere, "Gy_Czygl");
            //生成首行标题
            if (DSet == null)
            {
WorkM/±¨±í·ÖÎö/Sc_ICMOWorkCompleteSet.cs
@@ -231,7 +231,9 @@
                return;
            }
            //
            Sub_AddProcSalaryColumn(DSet);
            //Sub_AddProcSalaryColumn(DSet);
            Sub_AddProcSalaryColumn(DSet.Tables[0], DSet.Tables[3]);
            Sub_AddProcSalaryColumn(DSet.Tables[1], DSet.Tables[3]);
            grdMain.DataSource = DSet.Tables[0].DefaultView;
            grdSub.DataSource = DSet.Tables[1].DefaultView;
            //获取动态列 ï¼ˆç‰©æ–™ä¿¡æ¯ï¼‰
@@ -484,82 +486,131 @@
        }
        private void Sub_AddProcSalaryColumn(DataSet DSet)
        //private void Sub_AddProcSalaryColumn(DataSet DSet)
        //{
        //    //工序工价变量
        //    string sProcSalary = "";
        //    //为数据表添加工序工价列
        //    DataColumn oProcSalaryColumnPT = new DataColumn();
        //    DataColumn oProcSalaryColumnFL = new DataColumn();
        //    oProcSalaryColumnPT.DataType = System.Type.GetType("System.String");
        //    oProcSalaryColumnFL.DataType = System.Type.GetType("System.String");
        //    oProcSalaryColumnPT.ColumnName = "工序工价";
        //    oProcSalaryColumnFL.ColumnName = "工序工价";
        //    DSet.Tables[0].Columns.Add(oProcSalaryColumnPT);
        //    DSet.Tables[1].Columns.Add(oProcSalaryColumnFL);
        //    //拼接配套表成品代码对应工序工价
        //    for (int i = 0; i < DSet.Tables[0].Rows.Count; i++)
        //    {
        //        for(int j=0;j<DSet.Tables[3].Rows.Count;j++)
        //        {
        //            if(DSet.Tables[1].Rows[i]["成品代码"].Equals(DSet.Tables[3].Rows[j]["物料代码"]))
        //            {
        //                if(DSet.Tables[3].Rows[j]["主工序"]==null||DSet.Tables[3].Rows[j]["主工序"].Equals(""))
        //                {
        //                    sProcSalary = sProcSalary + DSet.Tables[3].Rows[j]["工序"] + "(";
        //                    for(int k = 0; k < DSet.Tables[3].Rows.Count; k++)
        //                    {
        //                        if(DSet.Tables[3].Rows[j]["工序"].Equals(DSet.Tables[3].Rows[k]["主工序"]))
        //                        {
        //                            sProcSalary = sProcSalary + DSet.Tables[3].Rows[k]["工序"] + "(" + DSet.Tables[3].Rows[k]["单价"] + ")"+(double)DSet.Tables[0].Rows[i]["总需求量"]*(double)DSet.Tables[3].Rows[k]["单价"];
        //                        }
        //                    }
        //                    if(sProcSalary.Split('(').Length>1)
        //                    {
        //                        sProcSalary = sProcSalary + ")";
        //                    }else
        //                    {
        //                        sProcSalary = sProcSalary + DSet.Tables[3].Rows[j]["单价"] + ")" + (double)DSet.Tables[0].Rows[i]["总需求量"] * (double)DSet.Tables[3].Rows[j]["单价"];
        //                    }
        //                }
        //            }
        //        }
        //        DSet.Tables[0].Rows[i]["工序工价"] = sProcSalary;
        //        sProcSalary = "";
        //    }
        //    //拼接发料清单成品代码对应工序工价
        //    for (int i = 0; i < DSet.Tables[1].Rows.Count; i++)
        //    {
        //        for (int j = 0; j < DSet.Tables[3].Rows.Count; j++)
        //        {
        //            if (DSet.Tables[1].Rows[i]["成品代码"].Equals(DSet.Tables[3].Rows[j]["物料代码"]))
        //            {
        //                if (DSet.Tables[3].Rows[j]["主工序"] == null || DSet.Tables[3].Rows[j]["主工序"].Equals(""))
        //                {
        //                    sProcSalary = sProcSalary + DSet.Tables[3].Rows[j]["工序"] + "(";
        //                    for (int k = 0; k < DSet.Tables[3].Rows.Count; k++)
        //                    {
        //                        if (DSet.Tables[3].Rows[j]["工序"].Equals(DSet.Tables[3].Rows[k]["主工序"]))
        //                        {
        //                            sProcSalary = sProcSalary + DSet.Tables[3].Rows[k]["工序"] + "(" + DSet.Tables[3].Rows[k]["单价"] + ")"+ (double)DSet.Tables[0].Rows[i]["总需求量"] * (double)DSet.Tables[3].Rows[k]["单价"];
        //                        }
        //                    }
        //                    if (sProcSalary.Split('(').Length > 1)
        //                    {
        //                        sProcSalary = sProcSalary + ")";
        //                    }
        //                    else
        //                    {
        //                        sProcSalary = sProcSalary + DSet.Tables[3].Rows[j]["单价"] + ")"+ (double)DSet.Tables[0].Rows[i]["总需求量"] * (double)DSet.Tables[3].Rows[j]["单价"];
        //                    }
        //                }
        //            }
        //        }
        //        DSet.Tables[1].Rows[i]["工序工价"] = sProcSalary;
        //        sProcSalary = "";
        //    }
        //}
        private void Sub_AddProcSalaryColumn(DataTable DSetResource,DataTable DSetColumnInfo)
        {
            //工序工价变量
            string sProcSalary = "";
            //为数据表添加工序工价列
            DataColumn oProcSalaryColumnPT = new DataColumn();
            DataColumn oProcSalaryColumnFL = new DataColumn();
            oProcSalaryColumnPT.DataType = System.Type.GetType("System.String");
            oProcSalaryColumnFL.DataType = System.Type.GetType("System.String");
            oProcSalaryColumnPT.ColumnName = "工序工价";
            oProcSalaryColumnFL.ColumnName = "工序工价";
            DSet.Tables[0].Columns.Add(oProcSalaryColumnPT);
            DSet.Tables[1].Columns.Add(oProcSalaryColumnFL);
            //拼接配套表成品代码对应工序工价
            for (int i = 0; i < DSet.Tables[0].Rows.Count; i++)
            {
                for(int j=0;j<DSet.Tables[3].Rows.Count;j++)
                {
                    if(DSet.Tables[1].Rows[i]["成品代码"].Equals(DSet.Tables[3].Rows[j]["物料代码"]))
                    {
                        if(DSet.Tables[3].Rows[j]["主工序"]==null||DSet.Tables[3].Rows[j]["主工序"].Equals(""))
                        {
                            sProcSalary = sProcSalary + DSet.Tables[3].Rows[j]["工序"] + "(";
                            for(int k = 0; k < DSet.Tables[3].Rows.Count; k++)
                            {
                                if(DSet.Tables[3].Rows[j]["工序"].Equals(DSet.Tables[3].Rows[k]["主工序"]))
                                {
                                    sProcSalary = sProcSalary + DSet.Tables[3].Rows[k]["工序"] + "(" + DSet.Tables[3].Rows[k]["单价"] + ")"+(double)DSet.Tables[0].Rows[i]["总需求量"]*(double)DSet.Tables[3].Rows[k]["单价"];
                                }
                            }
                            if(sProcSalary.Split('(').Length>1)
                            {
                                sProcSalary = sProcSalary + ")";
                            }else
                            {
                                sProcSalary = sProcSalary + DSet.Tables[3].Rows[j]["单价"] + ")" + (double)DSet.Tables[0].Rows[i]["总需求量"] * (double)DSet.Tables[3].Rows[j]["单价"];
                            }
                        }
                    }
                }
                DSet.Tables[0].Rows[i]["工序工价"] = sProcSalary;
                sProcSalary = "";
            }
            DSetResource.Columns.Add(oProcSalaryColumnPT);
            //拼接发料清单成品代码对应工序工价
            for (int i = 0; i < DSet.Tables[1].Rows.Count; i++)
            for(int i = 0; i < DSetResource.Rows.Count;i++)
            {
                for (int j = 0; j < DSet.Tables[3].Rows.Count; j++)
                string sHProcID = "";
                for (int j=0;j<DSetColumnInfo.Rows.Count;j++)
                {
                    if (DSet.Tables[1].Rows[i]["成品代码"].Equals(DSet.Tables[3].Rows[j]["物料代码"]))
                    if(DSetResource.Rows[i]["物料内码"].Equals(DSetColumnInfo.Rows[j]["物料内码"]))
                    {
                        if (DSet.Tables[3].Rows[j]["主工序"] == null || DSet.Tables[3].Rows[j]["主工序"].Equals(""))
                       if(sHProcID.Equals(DSetColumnInfo.Rows[j]["工序内码"].ToString()))
                        {
                            sProcSalary = sProcSalary + DSet.Tables[3].Rows[j]["工序"] + "(";
                            for (int k = 0; k < DSet.Tables[3].Rows.Count; k++)
                            sProcSalary = sProcSalary + " " + DSetColumnInfo.Rows[j]["子工序名称"] + "(" + string.Format("{0:F2}", Double.Parse(DSetColumnInfo.Rows[j]["单价"].ToString()))+ ")"+string.Format("{0:F2}",(Double.Parse(DSetResource.Rows[i]["总需求量"].ToString())* Double.Parse(DSetColumnInfo.Rows[j]["单价"].ToString())));
                        }
                        else
                        {
                            sHProcID = DSetColumnInfo.Rows[j]["工序内码"].ToString();
                            if(sProcSalary.Length>0)
                            {
                                if (DSet.Tables[3].Rows[j]["工序"].Equals(DSet.Tables[3].Rows[k]["主工序"]))
                                {
                                    sProcSalary = sProcSalary + DSet.Tables[3].Rows[k]["工序"] + "(" + DSet.Tables[3].Rows[k]["单价"] + ")"+ (double)DSet.Tables[0].Rows[i]["总需求量"] * (double)DSet.Tables[3].Rows[k]["单价"];
                                }
                            }
                            if (sProcSalary.Split('(').Length > 1)
                            {
                                sProcSalary = sProcSalary + ")";
                                sProcSalary = sProcSalary + ")" + DSetColumnInfo.Rows[j]["工序名称"].ToString() + "(" + DSetColumnInfo.Rows[j]["子工序名称"] + "(" + string.Format("{0:F2}", Double.Parse(DSetColumnInfo.Rows[j]["单价"].ToString())) + ")" + string.Format("{0:F2}", (Double.Parse(DSetResource.Rows[i]["总需求量"].ToString()) * Double.Parse(DSetColumnInfo.Rows[j]["单价"].ToString())));
                            }
                            else
                            {
                                sProcSalary = sProcSalary + DSet.Tables[3].Rows[j]["单价"] + ")"+ (double)DSet.Tables[0].Rows[i]["总需求量"] * (double)DSet.Tables[3].Rows[j]["单价"];
                                sProcSalary = sProcSalary + DSetColumnInfo.Rows[j]["工序名称"].ToString() + "("+ DSetColumnInfo.Rows[j]["子工序名称"] + "(" + string.Format("{0:F2}", Double.Parse(DSetColumnInfo.Rows[j]["单价"].ToString())) + ")" + string.Format("{0:F2}", (Double.Parse(DSetResource.Rows[i]["总需求量"].ToString()) * Double.Parse(DSetColumnInfo.Rows[j]["单价"].ToString())));
                            }
                        }
                    }
                }
                DSet.Tables[1].Rows[i]["工序工价"] = sProcSalary;
                if(sProcSalary.Length>0)
                {
                    sProcSalary = sProcSalary + ")";
                }
                DSetResource.Rows[i]["工序工价"] = sProcSalary;
                sProcSalary = "";
            }
            //去除物料内码列
            DSetResource.Columns.Remove("物料内码");
        }
        private void label8_Click(object sender, EventArgs e)
        {
WorkM/³µ¼ä¹ÜÀí/Sc_ProcessExchangeBillQuery.cs
@@ -3,6 +3,7 @@
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;
using gregn6Lib;
@@ -519,7 +520,8 @@
        private void dc_Click(object sender, EventArgs e)
        {
            DBUtility.Gy_BaseFun.DataToExcel(this.Text, grdMain);
            //DBUtility.Gy_BaseFun.DataToExcel(this.Text, grdMain);
            DataGridViewToExcel2();
        }
@@ -1210,9 +1212,79 @@
            ofrm.ShowDialog();
        }
        private void DataGridViewToExcel2()
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = "Execl文件(*.xls)|*.xls";
            saveFileDialog.FilterIndex = 0;
            saveFileDialog.RestoreDirectory = true;
            saveFileDialog.CreatePrompt = true;
            saveFileDialog.Title = "数据视图导出EXCEL文件";
            saveFileDialog.ShowDialog();
            if (saveFileDialog.FileName == "")
            {
                return;
            }
            Stream myStream;
            myStream = saveFileDialog.OpenFile();
            StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
            string str = "";
            DateTime start = DateTime.Now;
            try
            {
                //写标题
                for (int i = 0; i < grdMain.ColumnCount; i++)
                {
                    if (i > 0)
                    {
                        str += "\t";
                    }
                    str += grdMain.Columns[i].HeaderText;
                }
                sw.WriteLine(str);
                //写内容
                for (int j = 0; j < grdMain.Rows.Count; j++)
                {
                    string tempStr = "";
                    for (int k = 0; k < grdMain.Columns.Count; k++)
                    {
                        if (k > 0)
                        {
                            tempStr += "\t";
                        }
                        if (grdMain.Rows[j].Cells[k].Value == null)
                        {
                            tempStr += string.Empty;
                        }
                        else
                        {
                            tempStr += grdMain.Rows[j].Cells[k].Value.ToString();
                        }
                    }
                    sw.WriteLine(tempStr);
                }
                sw.Close();
                myStream.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                sw.Close();
                myStream.Close();
            }
            MessageBox.Show("将此工作表导出为excel共耗时:" + DateTime.Now.Subtract(start).TotalMilliseconds.ToString() + "毫秒");
        }
    }
}