Просмотр исходного кода

修改回流上料采集和默认回流工序

章政 8 лет назад
Родитель
Сommit
b136b90f0c

+ 17 - 8
UAS-MES/FunctionCode/Make/Make_ColorBoxLoadPrint.cs

@@ -104,13 +104,15 @@ namespace UAS_MES.Make
                     {
                         if (LogicHandler.CheckStepSNAndMacode(ma_code.Text, User.UserSourceCode, code.Text, User.UserCode, out macode, out Msid, out ErrorMessage) || ListA.Rows.Count > 0)
                         {
+                            string ms_firstsn = "";
                             sql.Clear();
-                            sql.Append("select ma_code,ma_craftcode,ms_sncode,ma_qty,pr_detail,pr_code,ma_bomversion from makeserial left join make on ");
+                            sql.Append("select ma_code,ma_craftcode,ms_sncode,ma_qty,pr_detail,pr_code,ma_bomversion,ms_firstsn from makeserial left join make on ");
                             sql.Append("ms_makecode=ma_code left join product on ms_prodcode=pr_code where ms_id='" + Msid + "'");
                             dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                             if (dt.Rows.Count > 0)
                             {
                                 BaseUtil.SetFormValue(this.Controls, dt);
+                                ms_firstsn = dt.Rows[0]["ms_firstsn"].ToString();
                                 Lock.Checked = true;
                                 LoadCollectNum();
                                 OperateResult.AppendText(">>获取序列号" + code.Text + "成功\n", Color.Green);
@@ -126,11 +128,12 @@ namespace UAS_MES.Make
                             if (load.Checked == true)
                             {
                                 sql.Clear();
-                                sql.Append("select sp_id,sp_tracekind,sp_barcoderule,sp_prefix,sp_ifuseregex,sp_ifforsn,sp_length,sp_soncode,");
-                                sql.Append("sp_repcode,pr_id,sp_type,sp_prefix,sp_length,sp_regex from stepproduct left join product on pr_code=sp_soncode left join craftmaterial on cm_sncode='" + ms_sncode.Text + "' ");
-                                sql.Append("and cm_makecode='" + ma_code.Text + "' and cm_soncode=sp_soncode where (cm_id is null or cm_status=-1) and ");
-                                sql.Append("sp_bomversion='" + ma_bomversion.Text + "' and sp_craftcode='" + ma_craftcode.Text + "' and sp_stepcode='" + User.CurrentStepCode + "' ");
-                                sql.Append("And sp_mothercode ='" + pr_code.Text + "' and((sp_type = '物料' and( sp_tracekind <> 2 or sp_tracekind is null))or sp_type <> '物料') order by SP_DETNO asc");
+                                sql.Append("select sp_id,sp_tracekind,sp_barcoderule,sp_ifuseregex,sp_ifforsn,sp_length,sp_soncode,sp_repcode");
+                                sql.Append(",pr_id,sp_type,sp_prefix,sp_regex from stepproduct left join product on pr_code=sp_soncode where ");
+                                sql.Append("sp_bomversion='" + ma_bomversion.Text + "' and sp_craftcode='" + ma_craftcode.Text + "' and sp_stepcode='" + User.CurrentStepCode + "'");
+                                sql.Append("And sp_mothercode ='" + pr_code.Text + "' and((sp_type = '物料' and( sp_tracekind <> 2 or sp_tracekind is null))or sp_type <> '物料')");
+                                sql.Append("and not exists(select 1 from craftmaterial where (cm_sncode='" + ms_firstsn + "' or cm_sncode in (select sn from makesnrelation where firstsn='" + ms_firstsn + "')) and cm_makecode='" + ma_code.Text + "' and cm_soncode=");
+                                sql.Append("sp_soncode and cm_status=0) order by SP_DETNO asc");
                                 ListA = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                                 //获取对应 产品的机身标的打印模板
                                 if (ListA.Rows.Count > 0)
@@ -148,13 +151,19 @@ namespace UAS_MES.Make
                             {
                                 if (LogicHandler.CheckStepSNAndMacode(macode, User.UserSourceCode, code.Text, User.UserCode, out macode, out Msid, out ErrorMessage))
                                 {
-                                    dt = (DataTable)dh.ExecuteSql("select cm_id,cm_stepcode,ms_makecode,cm_mccode from craftmaterial left join makeserial on cm_makecode=ms_makecode and cm_sncode=ms_sncode where ms_sncode='" + code.Text + "' and cm_makecode='" + macode + "'", "select");
+                                    dt = (DataTable)dh.ExecuteSql("select ms_firstsn,cm_id,cm_stepcode,ms_makecode,cm_mccode from craftmaterial left join makeserial on cm_makecode=ms_makecode and cm_sncode=ms_sncode where ms_sncode='" + code.Text + "' and cm_makecode='" + macode + "'", "select");
                                     if (dt.Rows.Count > 0)
                                     {
                                         string ms_macode = dt.Rows[0]["ms_makecode"].ToString();
+                                        ms_firstsn = dt.Rows[0]["ms_firstsn"].ToString();
                                         string cm_stepcode = dt.Rows[0]["cm_stepcode"].ToString();
                                         string cm_mccode = dt.Rows[0]["cm_mccode"].ToString();
-                                        dh.ExecuteSql("delete from craftmaterial where cm_sncode='" + code.Text + "' and cm_makecode='" + macode + "' and cm_status=0", "delete");
+                                        //进行下料
+                                        sql.Clear();
+                                        sql.Append("delete from craftmaterial where (cm_sncode in (select sn from makesnrelation where firstsn");
+                                        sql.Append("='" + ms_firstsn + "') or cm_sncode = '" + ms_firstsn + "') and cm_makecode = '" + ma_code.Text + "' ");
+                                        sql.Append("and cm_status = 0 and cm_stepcode='" + User.CurrentStepCode + "'");
+                                        dh.ExecuteSql(sql.GetString(), "delete");
                                         LogicHandler.InsertMakeProcess(ms_macode, code.Text, User.UserSourceCode, "上料采集操作", "下料成功", User.UserCode);
                                         int count = dh.getRowCount("craftMaterial", "cm_mccode='" + cm_mccode + "' and cm_stepcode='" + cm_stepcode + "' and cm_sncode='" + code.Text + "'");
                                         if (count == 0)

+ 28 - 24
UAS-MES/FunctionCode/Make/Make_FeedingCollection.cs

@@ -217,33 +217,35 @@ namespace UAS_MES.Make
                     {
                         if (LogicHandler.CheckStepSNAndMacode(ma_code.Text, User.UserSourceCode, code.Text, User.UserCode, out oMakeCode, out oMsid, out ErrorMessage))
                         {
-                            dt = (DataTable)dh.ExecuteSql("select cm_makecode,cm_craftcode,nvl(cm_status,0)cm_status,cm_id,cm_stepcode,ms_makecode,cm_mccode,cm_materialtype from craftmaterial left join makeserial on cm_makecode=ms_makecode and cm_sncode=ms_sncode where ms_sncode='" + code.Text + "' and cm_makecode='" + ma_code.Text + "'", "select");
+                            dt = (DataTable)dh.ExecuteSql("select ms_firstsn,cm_makecode,cm_craftcode,nvl(cm_status,0)cm_status,cm_id,cm_stepcode,ms_makecode,cm_mccode,cm_materialtype from craftmaterial left join makeserial on cm_makecode=ms_makecode and cm_sncode=ms_sncode where ms_sncode='" + code.Text + "' and cm_makecode='" + ma_code.Text + "'", "select");
                             if (dt.Rows.Count > 0)
                             {
                                 string ms_macode = dt.Rows[0]["ms_makecode"].ToString();
+                                string ms_firstsn = dt.Rows[0]["ms_firstsn"].ToString();
                                 string cm_stepcode = dt.Rows[0]["cm_stepcode"].ToString();
                                 string cm_mccode = dt.Rows[0]["cm_mccode"].ToString();
                                 string cm_materialtype = dt.Rows[0]["cm_materialtype"].ToString();
                                 string cm_status = dt.Rows[0]["cm_status"].ToString();
                                 string cm_makecode = dt.Rows[0]["cm_makecode"].ToString();
                                 string cm_craftcode = dt.Rows[0]["cm_craftcode"].ToString();
-                                if (cm_materialtype == "1" && cm_status == "0")
-                                {
-                                    dh.ExecuteSql("delete from craftmaterial where cm_sncode='" + code.Text + "' and cm_makecode='" + ma_code.Text + "' and cm_status=0", "delete");
-                                    LogicHandler.InsertMakeProcess(ms_macode, code.Text, User.UserSourceCode, "上料采集操作", "下料成功", User.UserCode);
-                                    int count = dh.getRowCount("craftMaterial", "cm_mccode='" + cm_mccode + "' and cm_stepcode='" + cm_stepcode + "' and cm_sncode='" + code.Text + "'");
-                                    if (count == 0)
-                                        dh.UpdateByCondition("makecraftdetail ", "mcd_inqty=mcd_inqty-1,mcd_outqty=mcd_outqty-1,mcd_okqty = mcd_okqty - 1", "mcd_mccode='" + cm_mccode + "' and mcd_stepcode='" + cm_stepcode + "'");
-                                    //清除已被使用的序列号
-                                    sql.Clear();
-                                    sql.Append("update makeserial set ms_nextmacode='' where ms_sncode in(select cm_barcode from craftmaterial where ");
-                                    sql.Append("cm_makecode='" + cm_makecode + "' and cm_stepcode='" + cm_stepcode + "' and cm_craftcode='" + cm_craftcode + "' ");
-                                    sql.Append("and cm_materialtype=1 and nvl(cm_status,0) =0) and ms_nextmacode='" + ma_code.Text + "'");
-                                    dh.ExecuteSql(sql.GetString(), "update");
-                                    LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "上料采集", "下料成功", code.Text, "");
-                                    OperateResult.AppendText(">>序列号" + code.Text + "下料成功\n", Color.Green, code);
-                                }
-                                else OperateResult.AppendText(">>序列号" + code.Text + "已被扣料,不允许下料\n", Color.Green, code);
+                                //进行下料
+                                sql.Clear();
+                                sql.Append("delete from craftmaterial where (cm_sncode in (select sn from makesnrelation where firstsn");
+                                sql.Append("='"+ ms_firstsn + "') or cm_sncode = '"+ ms_firstsn + "') and cm_makecode = '"+ma_code.Text+"' ");
+                                sql.Append("and cm_status = 0 and cm_stepcode='"+User.CurrentStepCode+"'");
+                                dh.ExecuteSql(sql.GetString(), "delete");
+                                LogicHandler.InsertMakeProcess(ms_macode, code.Text, User.UserSourceCode, "上料采集操作", "下料成功", User.UserCode);
+                                int count = dh.getRowCount("craftMaterial", "cm_mccode='" + cm_mccode + "' and cm_stepcode='" + cm_stepcode + "' and cm_sncode='" + code.Text + "'");
+                                if (count == 0)
+                                    dh.UpdateByCondition("makecraftdetail ", "mcd_inqty=mcd_inqty-1,mcd_outqty=mcd_outqty-1,mcd_okqty = mcd_okqty - 1", "mcd_mccode='" + cm_mccode + "' and mcd_stepcode='" + cm_stepcode + "'");
+                                //清除已被使用的序列号
+                                sql.Clear();
+                                sql.Append("update makeserial set ms_nextmacode='' where ms_sncode in(select cm_barcode from craftmaterial where ");
+                                sql.Append("cm_makecode='" + cm_makecode + "' and cm_stepcode='" + cm_stepcode + "' and cm_craftcode='" + cm_craftcode + "' ");
+                                sql.Append("and cm_materialtype=1 and nvl(cm_status,0) =0) and ms_nextmacode='" + ma_code.Text + "'");
+                                dh.ExecuteSql(sql.GetString(), "update");
+                                LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "上料采集", "下料成功", code.Text, "");
+                                OperateResult.AppendText(">>序列号" + code.Text + "下料成功\n", Color.Green, code);
                             }
                             else OperateResult.AppendText(">>序列号" + code.Text + "未上料,无需下料\n", Color.Red, code);
                         }
@@ -260,7 +262,7 @@ namespace UAS_MES.Make
             //将录入框的值给序列号
             sn_code.Text = code.Text;
             sql.Clear();
-            sql.Append("select ma_prodcode,ma_craftcode,ma_bomversion,ma_qty,ma_code,pr_detail,ms_status,ms_id,ms_craftcode,ms_nextstepcode");
+            sql.Append("select ma_prodcode,ms_firstsn,ma_craftcode,ma_bomversion,ma_qty,ma_code,pr_detail,ms_status,ms_id,ms_craftcode,ms_nextstepcode");
             sql.Append(",ms_prodcode,ms_makecode,ms_code,ms_stepname  from makeserial left join make on ma_code=ms_makecode ");
             sql.Append("left join product on ms_prodcode=pr_code where ms_sncode='" + code.Text + "' order by ms_id desc");
             dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
@@ -273,6 +275,7 @@ namespace UAS_MES.Make
                 make_prodcode = dt.Rows[0]["ms_prodcode"].ToString();
                 nextstepcode = dt.Rows[0]["ms_nextstepcode"].ToString();
                 ms_status = dt.Rows[0]["ms_status"].ToString();
+                string ms_firstsn = dt.Rows[0]["ms_firstsn"].ToString();
                 BaseUtil.SetFormValue(this.Controls, dt);
                 string ifforsn = dh.getFieldDataByCondition("make left join stepbom on ma_prodcode=sb_prodcode left join stepproduct on sb_id=sp_sbid", "nvl(sp_ifforsn,0) sp_ifforsn", "ma_code='" + ma_code.Text + "' and sp_craftcode='" + ma_craftcode.Text + "' and sb_bomversion='" + ma_bomversion.Text + "' order by sp_detno").ToString();
                 if (ifforsn != "" && ifforsn != "0")
@@ -289,11 +292,12 @@ namespace UAS_MES.Make
                         //单独用一个DataTable存储一个
                         dt1 = new DataTable();
                         sql.Clear();
-                        sql.Append("select sp_id,sp_tracekind,sp_barcoderule,sp_prefix,sp_ifuseregex,sp_ifforsn,sp_length,sp_soncode,");
-                        sql.Append("sp_repcode,pr_id,sp_type,sp_prefix,sp_length,sp_regex from stepproduct left join product on pr_code=sp_soncode left join craftmaterial on cm_sncode='" + sn_code.Text + "' ");
-                        sql.Append("and cm_makecode='" + ma_code.Text + "' and cm_soncode=sp_soncode where (cm_id is null or cm_status=-1) and ");
-                        sql.Append("sp_bomversion='" + mabomversion + "' and sp_craftcode='" + ms_craftcode + "' and sp_stepcode='" + User.CurrentStepCode + "' ");
-                        sql.Append("And sp_mothercode ='" + make_prodcode + "' and((sp_type = '物料' and( sp_tracekind <> 2 or sp_tracekind is null))or sp_type <> '物料') order by SP_DETNO asc");
+                        sql.Append("select sp_id,sp_tracekind,sp_barcoderule,sp_ifuseregex,sp_ifforsn,sp_length,sp_soncode,sp_repcode");
+                        sql.Append(",pr_id,sp_type,sp_prefix,sp_regex from stepproduct left join product on pr_code=sp_soncode where ");
+                        sql.Append("sp_bomversion='" + mabomversion + "' and sp_craftcode='" + ms_craftcode + "' and sp_stepcode='" + User.CurrentStepCode + "'");
+                        sql.Append("And sp_mothercode ='" + make_prodcode + "' and((sp_type = '物料' and( sp_tracekind <> 2 or sp_tracekind is null))or sp_type <> '物料')");
+                        sql.Append("and not exists(select 1 from craftmaterial where (cm_sncode='"+ ms_firstsn + "' or cm_sncode in (select sn from makesnrelation where firstsn='"+ms_firstsn+"')) and cm_makecode='" + ma_code.Text+"' and cm_soncode=");
+                        sql.Append("sp_soncode and cm_status=0) order by SP_DETNO asc");
                         dt1 = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                         sn_code.Text = code.Text;
                         code.Clear();

+ 2 - 2
UAS-MES/FunctionCode/Make/Make_Repair.cs

@@ -203,10 +203,10 @@ namespace UAS_MES.Make
                             //判断是否存在上料记录
                             string firstsn = dt.Rows[0]["ms_firstsn"].ToString();
                             sql.Clear();
-                            sql.Append("select cm_sncode,cm_status,cm_maprodcode,cm_stepcode,cm_soncode,min(cm_indate)cm_indate,sum(case ");
+                            sql.Append("select cm_craftcode,cm_stepcode,cm_soncode,min(cm_indate)cm_indate,sum(case ");
                             sql.Append("when cm_status=-1 then 0 else 1 end)qty from craftmaterial left join product on pr_code=cm_soncode ");
                             sql.Append("where(cm_sncode in (select sn from makesnrelation where firstsn='" + firstsn + "') or cm_sncode='" + firstsn + "')");
-                            sql.Append("group by  cm_sncode,cm_status,cm_maprodcode,cm_stepcode,cm_soncode having sum(case when cm_status=-1 then 0 else 1 end)=0 order by cm_indate");
+                            sql.Append("group by  cm_craftcode,cm_stepcode,cm_soncode having sum(case when cm_status=-1 then 0 else 1 end)=0 order by cm_indate");
                             dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                             if (dt.Rows.Count > 0)
                             {