zrg
2025-11-24 572702f6f763e47a26c807264e7dee573375b6de
WFormSynchronizeData_SMR/WFormSynchronizeData_SMR/Form1.cs
@@ -75,7 +75,7 @@
                bool flag = false;
                string HBadCodeSN = dic["HBarCode"].ToString();
                HBadCodeSN = TM_ZH(HBadCodeSN);
                //HBadCodeSN = TM_ZH(HBadCodeSN);
                //判断当天条码有没有存储在条码表里 如果没有 则保存数据 并返回0
                //如果已存在 则返回 1
                //如果条件不满足的 则返回 2
@@ -101,9 +101,9 @@
                    //查询这个工序对应的条码 出站单是否已经存在
                    DataSet ds1 = oCN.RunProcReturn(@"select a.HProcID from Sc_StationOutBillMain a WITH(NOLOCK)
inner join Sc_StationOutBillSub_SN sn WITH(NOLOCK) on a.HInterID=sn.HInterID
left join Gy_Process p WITH(NOLOCK) on a.HProcID=p.HItemID
where  p.HNumber='" + dic["HProcNumber"].ToString() + "' and sn.HBarCode='" + HBadCodeSN + "'", "Sc_StationOutBillSub_SN");
                                                    inner join Sc_StationOutBillSub_SN sn WITH(NOLOCK) on a.HInterID=sn.HInterID
                                                    left join Gy_Process p WITH(NOLOCK) on a.HProcID=p.HItemID
                                                    where  p.HNumber='" + dic["HProcNumber"].ToString() + "' and sn.HBarCode='" + HBadCodeSN + "'", "Sc_StationOutBillSub_SN");
                    //判断条码之前是否为NG  同时 判断出站单的条码数据是不存在
                    if (ds.Tables[0].Rows.Count > 0 && ds1.Tables[0].Rows.Count == 0)
@@ -151,7 +151,7 @@
                bool flag = false;
                int num = 0;
                string HBadCodeSN = dic["HBarCode"].ToString();
                HBadCodeSN = TM_ZH(HBadCodeSN);
                //HBadCodeSN = TM_ZH(HBadCodeSN);
                //判断当天条码有没有存储在条码表里 如果没有 则保存数据 并返回0
                //如果已存在 则返回 1
                //如果条件不满足的 则返回 2
@@ -160,13 +160,15 @@
                if (num == 0 || num == 1)
                {
                    flag = getOutBillAdd(dic, HBadCodeSN, "NG");
                    CustomWriteLog("条码不良:" + HBadCodeSN, DateTime.Now.ToString("yyyy-MM-dd"));
                    if (flag)
                    {
                        //新增不良汇报
                        flag = getBadBillAdd(dic);
                        CustomWriteLog("完成不良汇报:", DateTime.Now.ToString("yyyy-MM-dd"));
                        //反写条码状态
                        oCN.RunProc("update Gy_BarCodeBill set HStatus='不良',HRemark='" + dic["HType"].ToString() + "' where HBarCode='" + HBadCodeSN + "'");
                        CustomWriteLog("反写条码状态:", DateTime.Now.ToString("yyyy-MM-dd"));
                    }
                }
                else if (num == 2)
@@ -192,16 +194,17 @@
            {
                Stopwatch timer = new Stopwatch();
                timer.Start();
                string HMakers = ""; //制单人
                CustomWriteLog("2.1.1.出站单新增开始:" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
                //获取绑定流转卡
                DataSet ds = oCN.RunProcReturn(@"select * from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill");
                DataSet ds = oCN.RunProcReturn(@"select HSourceBillNo from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill");
                string HProcExchBillNo = ds.Tables[0].Rows[0]["HSourceBillNo"].ToString();
                string HProcNumber = dic["HProcNumber"].ToString();
                CustomWriteLog("2.1.2.绑定流转卡:"+ HProcNumber+"----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
                //查询生产资源
                ds = oCN.RunProcReturn("select * from Gy_Source WITH(NOLOCK) where HNumber='" + dic["HSourceCode"].ToString() + "' ", "Gy_Source");
                ds = oCN.RunProcReturn("select HItemID from Gy_Source WITH(NOLOCK) where HNumber='" + dic["HSourceCode"].ToString() + "' ", "Gy_Source");
                long HSourceID = 0;
                if (ds.Tables[0].Rows.Count != 0)
                {
@@ -211,13 +214,14 @@
                CustomWriteLog("2.1.3.获取生产资源:" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
                //查询职员
                ds = oCN.RunProcReturn("select * from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee");
                ds = oCN.RunProcReturn("select HItemID,HName  from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee");
                long HEmpIDs = 0;
                string HEmpName = "";
                if (ds.Tables[0].Rows.Count != 0)
                {
                    HEmpIDs = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//职员ID
                    HEmpName = ds.Tables[0].Rows[0]["HName"].ToString();
                    HMakers = ds.Tables[0].Rows[0]["HName"].ToString();
                }
                CustomWriteLog("2.1.4.查询职员信息:" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
@@ -245,9 +249,9 @@
                //根据流转卡和工序 查询出站单需要保存的信息
                ds = oCN.RunProcReturn(@"select   a.HWorkShopID,b.HProcNo,b.HProcID,a.HMaterID,a.HQty,a.HInterID,HEntryID,a.HICMOInterID,a.HICMOEntryID,a.HICMOBillNo,b.HCenterID  from Sc_ProcessExchangeBillMain a WITH(NOLOCK)
inner join Sc_ProcessExchangeBillSub b WITH(NOLOCK) on a.HInterID=b.HInterID
left join Gy_Process p WITH(NOLOCK) on  b.HProcID=p.HItemID
where a.HBillNo='" + HProcExchBillNo + "'  and p.HNumber='" + HProcNumber + "'", "Sc_ProcessExchangeBillMain");
                                        inner join Sc_ProcessExchangeBillSub b WITH(NOLOCK) on a.HInterID=b.HInterID
                                        left join Gy_Process p WITH(NOLOCK) on  b.HProcID=p.HItemID
                                        where a.HBillNo='" + HProcExchBillNo + "'  and p.HNumber='" + HProcNumber + "'", "Sc_ProcessExchangeBillMain");
                CustomWriteLog("2.1.6.查询流转卡信息:" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
@@ -346,9 +350,10 @@
                //判断当前流转卡的出站单 是否有数据
                ds = oCN.RunProcReturn(@"select  * from Sc_StationOutBillMain a WITH(NOLOCK)
left join Gy_Process p WITH(NOLOCK) on  a.HProcID=p.HItemID
where HProcExchBillNo='" + HProcExchBillNo + "' and p.HNumber='" + HProcNumber + "' and CONVERT(varchar(10),HDate,20) ='" + DateTime.Now.ToString("yyyy-MM-dd") + "'", "Sc_StationOutBillMain");
                ds = oCN.RunProcReturn(@"select  HInterID,HBillNo from Sc_StationOutBillMain a WITH(NOLOCK)
                                        left join Gy_Process p WITH(NOLOCK) on  a.HProcID=p.HItemID
                                        where HProcExchBillNo='" + HProcExchBillNo + "' and p.HNumber='" + HProcNumber + "'" +
                                        " and CONVERT(varchar(10),HDate,20) ='" + DateTime.Now.ToString("yyyy-MM-dd") + "'", "Sc_StationOutBillMain");
                CustomWriteLog("2.1.9获取是否有出站单 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
@@ -388,6 +393,7 @@
                 "," + HmaterOutqty + "," + HProcPriceRate + "," + HTemporaryAreaID + ","+ HShiftsID + ") ");
                }
                CustomWriteLog("2.1.10 出站单新增 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
                if (HResult == "OK")
@@ -395,27 +401,28 @@
                    CustomWriteLog("2.1.11 条码反写 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
                    //查询 出站单子表 条码表的数据
                    ds = oCN.RunProcReturn("select  * from Sc_StationOutBillSub_SN WITH(NOLOCK) where HInterID='" + HInterID + "' order by HEntryID desc", "Sc_StationOutBillSub_SN");
                    ds = oCN.RunProcReturn("select  HEntryID from Sc_StationOutBillSub_SN WITH(NOLOCK) where HInterID='" + HInterID + "' order by HEntryID desc", "Sc_StationOutBillSub_SN");
                    string HMakeTime = dic["HCreateTime"].ToString();
                    oCN.RunProc($@"insert into Sc_StationOutBillSub_SN(HInterID,HBillNo_bak,HEntryID,HBarCode,HBarCodeQty,HMakeTime,HRemark,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney)
values({ HInterID}, '{ HBillNo}', {(ds.Tables[0].Rows.Count == 0 ? 1 : int.Parse(ds.Tables[0].Rows[0]["HEntryID"].ToString()) + 1)}, '{HBadCodeSN}', 1, '"+ HMakeTime + "', '', " + HProcExchInterID + "," + HProcExchEntryID + ", '" + HProcExchBillNo + "', '', 0, 0)");
                    values({ HInterID}, '{ HBillNo}', {(ds.Tables[0].Rows.Count == 0 ? 1 : int.Parse(ds.Tables[0].Rows[0]["HEntryID"].ToString()) + 1)}, '{HBadCodeSN}', 1, '"+ HMakeTime + "', '', " + HProcExchInterID + "," + HProcExchEntryID + ", '" + HProcExchBillNo + "', '', 0, 0)");
                    CustomWriteLog("条码:" + HBadCodeSN + "工序:" + HProcNumber + ",出站时间:" + HMakeTime, "TM" + DateTime.Now.ToString("yyyy-MM-dd"));
                    //反写工序出站单的合格数量
                    oCN.RunProc("update Sc_StationOutBillMain  set HQty+=1  where HInterID='" + HInterID + "'");
                    CustomWriteLog("反写合格数量!条码:" + HBadCodeSN + ",工序:" + HProcNumber + ",出站单ID" + HInterID, DateTime.Now.ToString("yyyy-MM-dd"));
                    CustomWriteLog("2.1.12 条码反写 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
                }
                else if (HResult == "NG")
                {
                    CustomWriteLog("2.1.13 不合格反写 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
                    //通过条码查询生产质量汇报单数据
                    ds = oCN.RunProcReturn("select  * from Sc_QualityReportBillSub WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "' order by HMakeDate desc", "Sc_QualityReportBillSub");
                    ds = oCN.RunProcReturn("select  HMakeDate from Sc_QualityReportBillSub WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "' order by HMakeDate desc", "Sc_QualityReportBillSub");
                    if (ds.Tables[0].Rows.Count > 0) {
                        string HBadDate = ds.Tables[0].Rows[0]["HMakeDate"].ToString();
                        //通过条码查询返修记录单的数据
                        ds = oCN.RunProcReturn("select  * from Sc_SourceLineRepairBillMain WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "' order by HMakeDate desc", "Sc_SourceLineRepairBillMain");
                        ds = oCN.RunProcReturn("select  HMakeDate from Sc_SourceLineRepairBillMain WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "' order by HMakeDate desc", "Sc_SourceLineRepairBillMain");
                        if (ds.Tables[0].Rows.Count > 0) {
                            string HRepairDate = ds.Tables[0].Rows[0]["HMakeDate"].ToString();
@@ -425,12 +432,14 @@
                            if (DateTime.Parse(HBadDate) < DateTime.Parse(HRepairDate)) {
                                //反写工序出站单的不良数量
                                oCN.RunProc("update Sc_StationOutBillMain  set HBadCount+=1,HWasterQty_Work+=1 where HInterID='" + HInterID + "'");
                                CustomWriteLog("反写不合格数量!条码:"+ HBadCodeSN+",工序:"+ HProcNumber+",出站单ID"+ HInterID, DateTime.Now.ToString("yyyy-MM-dd"));
                            }
                        }
                    } else {
                        //反写工序出站单的不良数量
                        oCN.RunProc("update Sc_StationOutBillMain  set HBadCount+=1,HWasterQty_Work+=1 where HInterID='" + HInterID + "'");
                        CustomWriteLog("反写不合格数量!条码:" + HBadCodeSN + ",工序:" + HProcNumber + ",出站单ID" + HInterID, DateTime.Now.ToString("yyyy-MM-dd"));
                    }
                    CustomWriteLog("2.1.14 不合格反写 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
@@ -442,7 +451,7 @@
                    return false;
                }
                //                //查询出站数量是否超过流转卡数量
                //查询出站数量是否超过流转卡数量
                //                ds = oCN.RunProcReturn($@"select (b.HQty -sum(isnull(ou.HQty,0))-sum(isnull(ou.HBadCount,0))) HQty from Sc_ProcessExchangeBillSub b WITH(NOLOCK)
                //left join Sc_StationOutBillMain ou WITH(NOLOCK) on b.HInterID=ou.HProcExchInterID and b.HEntryID=ou.HProcExchEntryID
                //where b.HInterID={HProcExchInterID} and b.HEntryID={HProcExchEntryID}
@@ -457,7 +466,7 @@
                CustomWriteLog("2.1.15 反写结束 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
                //增加工序判断
                //增加工序判断 拍照工序跳过工艺参数绑定 不走下面流程,直接结束本次新增
                if (HProcNumber == "013")
                {
                    return true;
@@ -504,13 +513,13 @@
                    //查询职员
                    ds = oCN.RunProcReturn("select * from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee");
                    string HMakers = "";
                    if (ds.Tables[0].Rows.Count != 0)
                    {
                        HEmpIDs = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//职员ID
                        HMakers = ds.Tables[0].Rows[0]["HName"].ToString();
                    }
                    //ds = oCN.RunProcReturn("select HItemID,HName  from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee");
                    //if (ds.Tables[0].Rows.Count != 0)
                    //{
                    //    HEmpIDs = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//职员ID
                    //    HMakers = ds.Tables[0].Rows[0]["HName"].ToString();
                    //}
                    CustomWriteLog("2.1.21 职员查询 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
@@ -519,11 +528,13 @@
                    //保存生产组装单主表
                    string sql = $@"Insert Into Sc_AssemblyBillMain(HYear,HPeriod,HBillType,HBillSubType,HInterID,HDate
,HBillNo,HBillStatus,HMaker,HMakeDate,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo
,HICMOInterID,HICMOBillNo,HBarCode_P,HMaterID,HUnitID,HAssemblyStatus,HProdOrgID)
values('{DateTime.Now.Year}','{DateTime.Now.Month}','3727','3727',{HInterID1},getdate()
,'{HBillNo1}','1','{HMakers}',getdate(),{HProcExchInterID},{HProcExchEntryID},'{HProcExchBillNo}'
,{HICMOInterID},'{HICMOBillNo}','{HBadCodeSN}',{HMaterID},0,'汇报',{HPRDOrgIDs})";
                            ,HBillNo,HBillStatus,HMaker,HMakeDate,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo
                            ,HICMOInterID,HICMOBillNo,HBarCode_P,HMaterID,HUnitID,HAssemblyStatus,HProdOrgID)
                            values('{DateTime.Now.Year}','{DateTime.Now.Month}','3727','3727',{HInterID1},getdate()
                            ,'{HBillNo1}','1','{HMakers}',getdate(),{HProcExchInterID},{HProcExchEntryID},'{HProcExchBillNo}'
                            ,{HICMOInterID},'{HICMOBillNo}','{HBadCodeSN}',{HMaterID},0,'汇报',{HPRDOrgIDs})";
                    CustomWriteLog("2.1.21 sql语句 :" + sql + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
                    oCN.RunProc(sql);
                    CustomWriteLog("2.1.22 保存主表 :" + HProcNumber + "----" + timer.Elapsed, DateTime.Now.ToString("yyyy-MM-dd"));
@@ -535,11 +546,11 @@
                        string HBarCodes =  dataSet.Tables[0].Rows[i]["HBarCode"].ToString();
                        //子表存储
                        string sq2 = $@"Insert Into Sc_AssemblyBillSub(HInterID,HBillNo_bak,HEntryID,HSourceInterID,HSourceEntryID,HSourceBillNo
                ,HSourceBillType,HMaterID,HSourceID,HEquipID,HUnitID,HQty
                ,HGroupID,HWorkerID,HScanDate,HBarCode,HBarCode_P,HSNNumber)
                values({HInterID1},'{HBillNo1}',{(i + 1)},0,0,''
                ,'',{ HMaterIDs},0,0,0,1
                ,0,0,getdate(),'{HBarCodes}','{HBadCodeSN}','') ";
                                        ,HSourceBillType,HMaterID,HSourceID,HEquipID,HUnitID,HQty
                                        ,HGroupID,HWorkerID,HScanDate,HBarCode,HBarCode_P,HSNNumber)
                                        values({HInterID1},'{HBillNo1}',{(i + 1)},0,0,''
                                        ,'',{ HMaterIDs},0,0,0,1
                                        ,0,0,getdate(),'{HBarCodes}','{HBadCodeSN}','') ";
                        oCN.RunProc(sq2);
                    }
@@ -708,7 +719,6 @@
            string sql = "";
            try
            {
                //查询出站单的信息 方便参数保存
                 DataSet ds = oCN.RunProcReturn(@"select a.HProcExchInterID,a.HProcExchEntryID,a.HProcExchBillNo,a.HProcID,p.HNumber from Sc_StationOutBillMain a WITH(NOLOCK) 
left join Gy_Process p WITH(NOLOCK)  on a.HProcID=p.HItemID where HInterID=" + HInterID + " and HBillNo='" + HBillNo + "'", "Sc_StationOutBillMain");
@@ -737,7 +747,7 @@
                            string HGetTime = ds.Tables[0].Rows[i]["HCreateTime"].ToString();
                            string HResult = ds.Tables[0].Rows[i]["HResult"].ToString();
                            DataSet dataSet = oCN.RunProcReturn("select * from Sc_StationOutBillSub_TechParam WITH(NOLOCK) where HInterID=" + HInterID + " and HBillNo_bak='" + HBillNo + "'", "Sc_StationOutBillSub_TechParam");
                            DataSet dataSet = oCN.RunProcReturn("select HInterID,HEntryID from Sc_StationOutBillSub_TechParam WITH(NOLOCK) where HInterID=" + HInterID + " and HBillNo_bak='" + HBillNo + "'", "Sc_StationOutBillSub_TechParam");
                            sql = "insert into Sc_StationOutBillSub_TechParam(HInterID,HBillNo_bak,HEntryID ,HSourceInterID,HSourceEntryID,HSourceBillNo,HTechParamID,HRelValue,HGetTime,HBarCode,HMouldID,HRemark)" +
                                $"values({HInterID},'{HBillNo}',{(dataSet.Tables[0].Rows.Count + 1)},{HProcExchInterID},{HProcExchEntryID},'{HProcExchBillNo}',{HTechParamID},{HCount},'{HGetTime}','{HBadCodeSN}',{HMouldID},'{HResult}')";
@@ -763,78 +773,48 @@
        {
            try
            {
                DataSet ds = oCN.RunProcReturn(@"select * from Gy_BarCodeBill where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill");
                //判断条码是否存在条码档案
                if (ds.Tables[0].Rows.Count > 0)
                {
                    string HSourceBillNo = ds.Tables[0].Rows[0]["HSourceBillNo"].ToString();
                    DataSet dataTable = oCN.RunProcReturn(@"select * from Sc_ProcessExchangeBillMain where HBillNo='" + HSourceBillNo + "'", "Sc_ProcessExchangeBillMain");
                    //判断条码的源单 流转卡是否被删除
                    if (dataTable.Tables[0].Rows.Count == 0)
                    {
                        //如果源单已经删除  则条码也删除重新生成
                        oCN.RunProc("delete from Gy_BarCodeBill where HBarCode='" + HBadCodeSN + "'");
                // 查询条码是否存在条码档案
                DataSet barCodeDs = oCN.RunProcReturn(@"select HSourceBillNo from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill");
                        //重新查询条码档案 进入新增方法
                        ds = oCN.RunProcReturn(@"select * from Gy_BarCodeBill where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill");
                if (barCodeDs.Tables[0].Rows.Count > 0)
                {
                    string HSourceBillNo = barCodeDs.Tables[0].Rows[0]["HSourceBillNo"].ToString();
                    DataSet processExchangeDs = oCN.RunProcReturn(@"select HInterID from Sc_ProcessExchangeBillMain WITH(NOLOCK) where HBillNo='" + HSourceBillNo + "'", "Sc_ProcessExchangeBillMain");
                    if (processExchangeDs.Tables[0].Rows.Count == 0)
                    {
                        oCN.RunProc("delete from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "'");
                        // 重新查询条码档案
                        barCodeDs = oCN.RunProcReturn(@"select HSourceBillNo from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill");
                    }
                }
                //判断条码是否在数据库里
                if (ds.Tables[0].Rows.Count == 0)
                //判断条码是否在数据库里 如果有列没有数据返回那就是进去保存
                if (barCodeDs.Tables[0].Rows.Count == 0)
                {
                    //判断长度是否为29位 无尘车间
                    if (HBadCodeSN.Length == 29)
                    //判断条码长度是29位还是50位   29 无尘车间    50 15车间
                    if (HBadCodeSN.Length == 29 || HBadCodeSN.Length == 50)
                    {
                        string str1 = HBadCodeSN.Substring(18, 8);
                        ds = oCN.RunProcReturn("select  * from Sc_ProcessExchangeBillMain where HProjectNum like'" + str1 + "-1%'", "Sc_ProcessExchangeBillMain");
                        //判断是否能找到对应的流转卡
                        if (ds.Tables[0].Rows.Count > 0)
                        string str1 = HBadCodeSN.Length == 29 ? HBadCodeSN.Substring(18, 8) : HBadCodeSN.Substring(42, 8);
                        string HProcExchBillNo = GetProcExchBillNo(str1);
                        if (HProcExchBillNo == null && HBadCodeSN.Length == 29)
                        {
                            string HProcExchBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
                            get_HBardBillSave(HBadCodeSN, HProcExchBillNo);
                            // 第一次截取未找到,进行第二次截取
                            str1 = HBadCodeSN.Substring(0, 8);  // 示例的重新截取方法
                            HProcExchBillNo = GetProcExchBillNo(str1);
                        }
                        else
                        if (HProcExchBillNo == null)
                        {
                            str1 = HBadCodeSN.Substring(23, 3);
                            ds = oCN.RunProcReturn("select  * from Sc_ProcessExchangeBillMain where HProjectNum like'" + str1 + "-1%'", "Sc_ProcessExchangeBillMain");
                            //判断是否能找到对应的流转卡
                            if (ds.Tables[0].Rows.Count > 0)
                            {
                                string HProcExchBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
                                get_HBardBillSave(HBadCodeSN, HProcExchBillNo);
                            }
                            else
                            {
                                oCN.RollBack();
                                CustomWriteLog("条码:" + HBadCodeSN + ",流转卡不存在!", DateTime.Now.ToString("yyyy-MM-dd"));
                                return 2;
                            }
                        }
                    }
                    //判断长度是否为50位  15车间
                    else if (HBadCodeSN.Length == 50)
                    {
                        string str1 = HBadCodeSN.Substring(42, 8);
                        ds = oCN.RunProcReturn("select  * from Sc_ProcessExchangeBillMain where HProjectNum like'" + str1 + "-1%'", "Sc_ProcessExchangeBillMain");
                        //判断是否能找到对应的流转卡
                        if (ds.Tables[0].Rows.Count > 0)
                        {
                            string HProcExchBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
                            get_HBardBillSave(HBadCodeSN, HProcExchBillNo);
                        }
                        else
                        {
                            oCN.RollBack();
                            CustomWriteLog("条码:" + HBadCodeSN + ",流转卡不存在!", DateTime.Now.ToString("yyyy-MM-dd"));
                            return 2;
                        }
                        //保存条码
                        get_HBardBillSave(HBadCodeSN, HProcExchBillNo);
                    }
                    else
                    {
                        oCN.RollBack();
                        CustomWriteLog("条码:" + HBadCodeSN + ",长度不等于29位!", DateTime.Now.ToString("yyyy-MM-dd"));
                        CustomWriteLog("条码:" + HBadCodeSN + ",长度不等于29位或50位!", DateTime.Now.ToString("yyyy-MM-dd"));
                        return 2;
                    }
                }
@@ -852,6 +832,20 @@
            }
        }
        // 根据条码 获取流转卡编号
        public string GetProcExchBillNo(string str1)
        {
            DataSet ds = oCN.RunProcReturn("select HBillNo from Sc_ProcessExchangeBillMain WITH(NOLOCK) where HProjectNum like'" + str1 + "-1%'", "Sc_ProcessExchangeBillMain");
            if (ds.Tables[0].Rows.Count > 0)
            {
                return ds.Tables[0].Rows[0]["HBillNo"].ToString();
            }
            return null;
        }
        //新增条码数据
        public void get_HBardBillSave(string HBarCode, string HProcExchBillNo)
        {
@@ -859,10 +853,10 @@
            {
                //查询流转卡数据
                DataSet dataSet = oCN.RunProcReturn(@"select  a.HPRDORGID, m.HModel 物料规格,m.HName 名物料称,a.HBillNo,a.HInterID,a.HMaterID,m.HNumber 物料代码,o.HNumber 组织代码,a.HUnitID,u.HNumber 单位代码 from Sc_ProcessExchangeBillMain a WITH(NOLOCK)
left join Gy_Material m WITH(NOLOCK) on a.HMaterID=m.HItemID
left join Xt_ORGANIZATIONS o WITH(NOLOCK) on a.HPRDORGID=o.HItemID
left join Gy_Unit u WITH(NOLOCK) on a.HUnitID=u.HItemID
where HBillNo='" + HProcExchBillNo + "'", "Sc_ProcessExchangeBillMain");
                                    left join Gy_Material m WITH(NOLOCK) on a.HMaterID=m.HItemID
                                    left join Xt_ORGANIZATIONS o WITH(NOLOCK) on a.HPRDORGID=o.HItemID
                                    left join Gy_Unit u WITH(NOLOCK) on a.HUnitID=u.HItemID
                                    where HBillNo='" + HProcExchBillNo + "'", "Sc_ProcessExchangeBillMain");
                //判断流转卡不能为空
@@ -871,7 +865,7 @@
                    oCN.RollBack();
                    CustomWriteLog("条码:" + HBarCode + ",流转卡不能为空!", DateTime.Now.ToString("yyyy-MM-dd"));
                }
                //日期获取方式
                string sDate = DateTime.Now.ToString();
                string HWei = "0";      //尾数
@@ -977,7 +971,7 @@
                //HResult = "OK";
                //开始事务
                oCN.BeginTran();
                 if (HResult == "OK")
                {
                    flag = HResultOK(list.Rows[i]);
@@ -986,14 +980,16 @@
                {
                    flag = HResultNG(list.Rows[i]);
                }
                CustomWriteLog("1-1.循环结束:", DateTime.Now.ToString("yyyy-MM-dd"));
                if (flag)
                {
                    CustomWriteLog("1.1.1更新:",DateTime.Now.ToString("yyyy-MM-dd"));
                    oCN.RunProc("update Sb_EquipMentCollection_SN set HFlag=1 where HBarCode='" + HBadCodeSN + "' and HCreateTime='" + HCreateTime + "'");
                    //结束事务
                    oCN.Commit();
                    CustomWriteLog("1.1.2提交:", DateTime.Now.ToString("yyyy-MM-dd"));
                }
                CustomWriteLog("1.1.3提交:", DateTime.Now.ToString("yyyy-MM-dd"));
            }
        }
@@ -1001,9 +997,9 @@
        public bool getBadBillAdd(DataRow dic) {
            try
            {
                CustomWriteLog("新增不良汇报1.1:", DateTime.Now.ToString("yyyy-MM-dd"));
                //查询职员
                DataSet ds = oCN.RunProcReturn("select * from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee");
                DataSet ds = oCN.RunProcReturn("select HItemID,HName from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee");
                long HEmpIDs = 0;
                string HMakers = "";
                if (ds.Tables[0].Rows.Count != 0)
@@ -1019,16 +1015,10 @@
                    HDeptID = 389505;
                }
                else
                {
                    //ds = oCN.RunProcReturn("select * from Gy_Department where HNumber='" + dic["HDeptNumber"].ToString() + "' ", "Gy_Department");
                    //if (ds.Tables[0].Rows.Count != 0)
                    //{
                    //    HDeptID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产部门
                    //}
                {
                    HDeptID = 0;
                }
                CustomWriteLog("新增不良汇报1.2:", DateTime.Now.ToString("yyyy-MM-dd"));
                string HProcExchInterID = "0";
                string HProcExchEntryID = "0";
                string HProcExchBillNo = "";
@@ -1039,6 +1029,7 @@
                long HICMOEntryID = 0;
                string HICMOBillNo = "";
                CustomWriteLog("新增不良汇报1.3:"+ dic["HBarCode"].ToString()   +       dic["HProcNumber"].ToString() , DateTime.Now.ToString("yyyy-MM-dd"));
                //根据 条码+工序 查询流转卡信息
                ds = oCN.RunProcReturn(@"select b.HProcID, HMaterID,HUnitID,a.HICMOInterID,a.HICMOEntryID,a.HICMOBillNo,HBillNo,a.HInterID,b.HEntryID,a.HBillNo from Sc_ProcessExchangeBillMain a WITH(NOLOCK)
inner join Sc_ProcessExchangeBillSub b  WITH(NOLOCK) on a.HInterID=b.HInterID
@@ -1057,7 +1048,7 @@
                    HProcID = int.Parse(ds.Tables[0].Rows[0]["HProcID"].ToString());
                }
                CustomWriteLog("新增不良汇报1.4:"+ dic["HSourceCode"].ToString(), DateTime.Now.ToString("yyyy-MM-dd"));
                ds = oCN.RunProcReturn("select HItemID from Gy_Source WITH(NOLOCK) where HNumber='" + dic["HSourceCode"].ToString() + "' ", "Gy_Source");
                long HSourceID = 0;
                if (ds.Tables[0].Rows.Count != 0)
@@ -1076,15 +1067,15 @@
                long HMainSourceInterID = HICMOInterID;
                long HMainSourceEntryID = HICMOEntryID;
                string HMainSourceBillNo = HICMOBillNo;
                CustomWriteLog("新增不良汇报1.5:", DateTime.Now.ToString("yyyy-MM-dd"));
                //主表
                oCN.RunProc(@"Insert Into Sc_QualityReportBillMain   
(HBillType,HBillSubType,HBillStatus,HInterID,HBillNo,HDate
,HYear,HPeriod,HRemark,HMaker,HMakeDate
,HEmpID,HGroupID,HDeptID,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo)
,HEmpID,HGroupID,HDeptID,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo,HSTOCKORGID)
                        values('3717','3717',1," + HInterID + ",'" + HBillNo + "','" + HDate + "'" +
                "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + HRemark + "','" + HMaker + "',getdate()" +
                ",'" + HEmpID + "'," + HGroupID + "," + HDeptID + "," + HMainSourceInterID + "," + HMainSourceEntryID + ",'" + HMainSourceBillNo + "') ");
                ",'" + HEmpID + "'," + HGroupID + "," + HDeptID + "," + HMainSourceInterID + "," + HMainSourceEntryID + ",'" + HMainSourceBillNo + "','100199') ");
                string HBarCode = dic["HBarCode"].ToString();
                string HMakeDate = dic["HCreateTime"].ToString();
@@ -1099,14 +1090,15 @@
,0,0,'','',0,0
,1,'{HResult}',{ HProcExchInterID},{ HProcExchEntryID},'{ HProcExchBillNo}'," + HProcID + ")");
                return true;
                CustomWriteLog("新增不良汇报1.6:", DateTime.Now.ToString("yyyy-MM-dd"));
                return true;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                CustomWriteLog("报错原因:" + e.Message + "!", DateTime.Now.ToString("yyyy-MM-dd"));
                return false;
            }
            }
        }
        #region 基础方法