| | |
| | | { |
| | | public partial class Form1 : Form |
| | | { |
| | | public DBHelper oCN = new DBHelper(); |
| | | public DBHelper oCN = new DBHelper(); |
| | | public Form1() |
| | | { |
| | | InitializeComponent(); |
| | | } |
| | | |
| | | //读取数据 |
| | | private void btnReadData_Click(object sender, EventArgs e) |
| | | private void btnReadData_Click(object sender, EventArgs e) |
| | | { |
| | | int year = DateTime.Now.Year; |
| | | string month = DateTime.Now.Month.ToString(); |
| | | string day = DateTime.Now.Day.ToString(); |
| | | |
| | | |
| | | //if (month.Length < 2) { |
| | | // month = "0" + month; |
| | | //} |
| | | //if (day.Length < 2) |
| | | //{ |
| | | // day = "0" + day; |
| | | //} |
| | | |
| | | string dataTime = DateTime.Now.ToString("yyyyMMdd"); |
| | | //CustomWriteLog("1:" + dataTime, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | ////判断是否有这个文件 |
| | | bool flag = File.Exists($@"D:\{year}\{month}\{day}\{dataTime}.txt"); |
| | | //bool flag = File.Exists($@"C:\Users\admin\Desktop\新建文件夹 (2)\20231123.txt"); |
| | | //CustomWriteLog("2:" + flag, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | if (flag) |
| | | |
| | | DataTable list = oCN.RunProcReturn("select * from Sb_EquipMentCollection_SN WITH(NOLOCK) where HFlag=0 order by HCreateTime", "Sb_EquipMentCollection_SN").Tables[0]; |
| | | |
| | | //循环集合 |
| | | for (int i = 0; i < list.Rows.Count; i++) |
| | | { |
| | | StreamReader stream = new StreamReader($@"D:\{year}\{month}\{day}\{dataTime}.txt", Encoding.GetEncoding("gb2312")); |
| | | //CustomWriteLog("3:"+ $@"D:\{year}\{month}\{day}\{dataTime}.txt", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | //StreamReader stream = new StreamReader($@"C:\Users\admin\Desktop\新建文件夹 (2)\20231123.txt",Encoding.GetEncoding("gb2312")); |
| | | string FileData = stream.ReadToEnd(); |
| | | stream.Close(); |
| | | FileData = FileData.Substring(0, FileData.Length - 1); |
| | | FileData = "[" + FileData + "]"; |
| | | //CustomWriteLog("4:" + FileData, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | //JSON序列化转换字典集合 |
| | | List<Dictionary<string, string>> list = new List<Dictionary<string, string>>(); |
| | | List<object> DataList = JsonConvert.DeserializeObject<List<object>>(FileData); |
| | | foreach (JObject item in DataList) |
| | | { |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | foreach (var itm in item.Properties()) |
| | | { |
| | | dic.Add(itm.Name, itm.Value.ToString()); |
| | | } |
| | | list.Add(dic); |
| | | } |
| | | //CustomWriteLog("5:" + list.Count, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | //获取当前时间 |
| | | DateTime ActionTime = DateTime.Parse(DateTime.Now.AddMinutes(-1).ToString("yyyy-MM-dd HH:mm:ss")); |
| | | DateTime EndTime = DateTime.Parse(DateTime.Now.AddMinutes(1).ToString("yyyy-MM-dd HH:mm:00")); |
| | | //循环集合 |
| | | for (int i = 0; i < list.Count; i++) |
| | | { |
| | | DateTime NowTime = DateTime.Parse(list[i]["HDate"].ToString()); |
| | | if (NowTime >= ActionTime && NowTime < EndTime) |
| | | { |
| | | string HResult = list[i]["HResult"].ToString(); |
| | | bool flag = false; |
| | | string HResult = list.Rows[i]["HResult"].ToString(); |
| | | string HBadCodeSN = list.Rows[i]["HBarCode"].ToString(); |
| | | string HCreateTime = list.Rows[i]["HCreateTime"].ToString(); |
| | | //开始事务 |
| | | oCN.BeginTran(); |
| | | |
| | | //CustomWriteLog("6:" + HResult, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | if (HResult == "OK") |
| | | { |
| | | HResultOK(list[i]); |
| | | } |
| | | else if (HResult == "NG") |
| | | { |
| | | HResultNG(list[i]); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //CustomWriteLog("时间不在保存范围内", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | } |
| | | if (HResult == "OK") |
| | | { |
| | | flag=HResultOK(list.Rows[i]); |
| | | } |
| | | else if (HResult == "NG") |
| | | { |
| | | flag = HResultNG(list.Rows[i]); |
| | | } |
| | | |
| | | if (flag) { |
| | | oCN.RunProc("update Sb_EquipMentCollection_SN set HFlag=1 where HBarCode='" + HBadCodeSN + "' and HCreateTime='"+ HCreateTime + "'"); |
| | | //结束事务 |
| | | oCN.Commit(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | public void HResultOK(Dictionary<string, string> dic) |
| | | public bool HResultOK(DataRow dic) |
| | | { |
| | | try |
| | | { |
| | | string HBadCodeSN = dic["HBadCodeSN"].ToString(); |
| | | bool flag = false; |
| | | string HBadCodeSN = dic["HBarCode"].ToString(); |
| | | HBadCodeSN = TM_ZH(HBadCodeSN); |
| | | bool flag = SNHBardCodeList(HBadCodeSN); |
| | | int num = SNHBardCodeList(HBadCodeSN); |
| | | |
| | | if (flag) |
| | | if (num == 0) |
| | | { |
| | | getAdd(dic, HBadCodeSN, "OK"); |
| | | flag = getOutBillAdd(dic, HBadCodeSN, "OK"); |
| | | } |
| | | |
| | | else if (num == 1) |
| | | { |
| | | //判断这个条码之前的状态是否为NG |
| | | DataSet ds = oCN.RunProcReturn(@"select * from Sb_EquipMentCollection_SN WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "' and HCreateTime<'" + dic["HCreateTime"].ToString() + "' and HResult='NG'", "Sb_EquipMentCollection_SN"); |
| | | |
| | | //查询出站单是否包含条码 |
| | | DataSet ds1 = oCN.RunProcReturn(@"select a.HSourceID,a.HProcID,* from Sc_StationOutBillMain a WITH(NOLOCK) |
| | | inner join Sc_StationOutBillSub_SN sn WITH(NOLOCK) on a.HInterID=sn.HInterID |
| | | left join Gy_Source s WITH(NOLOCK) on a.HSourceID=s.HItemID |
| | | 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"); |
| | | |
| | | if (ds.Tables[0].Rows.Count > 0 && ds1.Tables[0].Rows.Count == 0) |
| | | { |
| | | flag = getOKOutBillAdd(dic, HBadCodeSN, "OK"); |
| | | } |
| | | else |
| | | { |
| | | if (ds1.Tables[0].Rows.Count > 0) |
| | | { |
| | | flag = true; |
| | | //oCN.RollBack(); |
| | | } |
| | | else |
| | | { |
| | | flag = getOutBillAdd(dic, HBadCodeSN, "OK"); |
| | | } |
| | | } |
| | | } |
| | | else if (num == 2) |
| | | { |
| | | flag = false; |
| | | } |
| | | return flag; |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | oCN.RollBack(); |
| | | //objJsonResult.code = "0"; |
| | | //objJsonResult.count = 0; |
| | | //objJsonResult.Message = "没有返回任何记录!" + e.ToString(); |
| | | //objJsonResult.data = null; |
| | | //return objJsonResult; |
| | | string HBadCodeSN = dic["HBarCode"].ToString(); |
| | | CustomWriteLog("条码:" + HBadCodeSN + ",错误原因:" + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | public void HResultNG(Dictionary<string, string> dic) |
| | | public bool HResultNG(DataRow dic) |
| | | { |
| | | try |
| | | { |
| | | string HBadCodeSN = dic["HBadCodeSN"].ToString(); |
| | | bool flag = false; |
| | | int num = 0; |
| | | string HBadCodeSN = dic["HBarCode"].ToString(); |
| | | HBadCodeSN = TM_ZH(HBadCodeSN); |
| | | bool flag = SNHBardCodeList(HBadCodeSN); |
| | | num = SNHBardCodeList(HBadCodeSN); |
| | | |
| | | if (flag) |
| | | if (num == 0 || num == 1) |
| | | { |
| | | getAdd(dic, HBadCodeSN, "NG"); |
| | | //开始事务 |
| | | oCN.BeginTran(); |
| | | flag = getOutBillAdd(dic, HBadCodeSN, "NG"); |
| | | |
| | | //反写条码状态 |
| | | oCN.RunProc("update Gy_BarCodeBill set HStatus='不良',HRemark='"+dic["HBadReason"].ToString()+"' where HBarCode='" + HBadCodeSN + "'"); |
| | | |
| | | //结束事务 |
| | | oCN.Commit(); |
| | | if (flag) |
| | | { |
| | | //新增不良汇报 |
| | | flag = getBadBillAdd(dic); |
| | | //反写条码状态 |
| | | oCN.RunProc("update Gy_BarCodeBill set HStatus='不良',HRemark='" + dic["HType"].ToString() + "' where HBarCode='" + HBadCodeSN + "'"); |
| | | } |
| | | } |
| | | else if (num == 2) |
| | | { |
| | | flag = false; |
| | | } |
| | | return flag; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | //回滚事务 |
| | | oCN.RollBack(); |
| | | //objJsonResult.code = "0"; |
| | | //objJsonResult.count = 0; |
| | | //objJsonResult.Message = "没有返回任何记录!" + e.ToString(); |
| | | //objJsonResult.data = null; |
| | | //return objJsonResult; |
| | | string HBadCodeSN = dic["HBarCode"].ToString(); |
| | | CustomWriteLog("条码:" + HBadCodeSN + ",错误原因:"+e.Message, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | public bool getAdd(Dictionary<string, string> dic,string HBadCodeSN,string HResult) { |
| | | //新增出站汇报单 |
| | | public bool getOutBillAdd(DataRow dic, string HBadCodeSN, string HResult) |
| | | { |
| | | try |
| | | { |
| | | //获取绑定流转卡 |
| | | DataSet ds = oCN.RunProcReturn(@"select * from Gy_BarCodeBill where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill"); |
| | | DataSet ds = oCN.RunProcReturn(@"select * from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill"); |
| | | string HProcExchBillNo = ds.Tables[0].Rows[0]["HSourceBillNo"].ToString(); |
| | | string HProcNumber = dic["HProcNumber"].ToString(); |
| | | |
| | | ds = oCN.RunProcReturn("select * from Gy_Source where HNumber='" + dic["HSouceNumber"].ToString() + "' ", "Gy_Source"); |
| | | ds = oCN.RunProcReturn("select * from Gy_Source WITH(NOLOCK) where HNumber='" + dic["HSourceCode"].ToString() + "' ", "Gy_Source"); |
| | | long HSourceID = 0; |
| | | if (ds.Tables[0].Rows.Count != 0) { |
| | | if (ds.Tables[0].Rows.Count != 0) |
| | | { |
| | | HSourceID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产资源ID |
| | | } |
| | | |
| | | ds = oCN.RunProcReturn("select * from Gy_Department where HNumber='" + dic["HDeptNumber"].ToString() + "' ", "Gy_Department"); |
| | | long HDeptID = 0; |
| | | //查询职员 |
| | | ds = oCN.RunProcReturn("select * from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee"); |
| | | long HEmpIDs = 0; |
| | | string HEmpName = ""; |
| | | if (ds.Tables[0].Rows.Count != 0) |
| | | { |
| | | HDeptID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产部门 |
| | | HEmpIDs = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//职员ID |
| | | HEmpName = ds.Tables[0].Rows[0]["HName"].ToString(); |
| | | } |
| | | |
| | | ds = oCN.RunProcReturn(@"select b.HProcNo,b.HProcID,a.HMaterID,a.HQty,a.HInterID,HEntryID,a.HICMOInterID,a.HICMOEntryID,a.HICMOBillNo from Sc_ProcessExchangeBillMain a |
| | | inner join Sc_ProcessExchangeBillSub b on a.HInterID=b.HInterID |
| | | left join Gy_Process p on b.HProcID=p.HItemID |
| | | long HDeptID = 0; |
| | | long HPRDOrgIDs = 0; |
| | | string sReturn = ""; |
| | | if (GetSingleSystemParameter("WMS_CampanyName", ref sReturn) == "杭州斯莫尔") |
| | | { |
| | | HDeptID = 389505; |
| | | HPRDOrgIDs = 100199; |
| | | } |
| | | 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; |
| | | } |
| | | |
| | | |
| | | |
| | | 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"); |
| | | |
| | | string sExeReturnInfo = ""; |
| | | long HMainInterID = 0; |
| | | string BillType = "3791"; |
| | | string HBillSubType = "3791"; |
| | | |
| | | string HWorkShopID= ds.Tables[0].Rows[0]["HWorkShopID"].ToString(); |
| | | int HBillStatus = 1; |
| | | string HMaker = "";//制单人 |
| | | string HMaker = HEmpName;//制单人 |
| | | string HMouldNum = "";//模穴号 |
| | | int HYear = DateTime.Now.Year; |
| | | double HPeriod = DateTime.Now.Month; |
| | |
| | | long HPayProcID = 0;//核算工序ID |
| | | long HGroupID = 22;//班组ID 白班 |
| | | |
| | | long HEmpID = 0;//操作员ID |
| | | long HEmpID2 = 0;////操作员2ID |
| | | long HEmpID = HEmpIDs;//操作员ID |
| | | long HEmpID2 = HEmpIDs;////操作员2ID |
| | | string HBarCode = HProcExchBillNo;//条形码 |
| | | string HAddr = ""; |
| | | string HBarCodeMaker = ""; |
| | |
| | | double HPrice = 0; |
| | | double HMoney = 0; |
| | | double HBadCount = 0;//不良数量 |
| | | long HCenterID = 0;//工作中心ID |
| | | long HCenterID = long.Parse(ds.Tables[0].Rows[0]["HCenterID"].ToString());//工作中心ID |
| | | string HProcNo = ds.Tables[0].Rows[0]["HProcNo"].ToString();//流水号 |
| | | string HOrderProcNO = "";//订单跟踪号 |
| | | string HSourceNameList = "";//设备清单 |
| | |
| | | double HPriceRate = 0;//系数 |
| | | double HWorkTimes = 0;//工时 |
| | | long HQCCheckID = 0;//检验员ID |
| | | long HPRDOrgID = 100199;//组织ID |
| | | long HPRDOrgID = HPRDOrgIDs;//组织ID |
| | | double HmaterOutqty = 0;//白坯发布 |
| | | double HProcPriceRate = 0;//工价系数 |
| | | int HTemporaryAreaID = 0;//暂放区 |
| | | long HInterID = 0; |
| | | string HBillNo = ""; |
| | | int HShiftsID = 0; |
| | | |
| | | oCN.BeginTran(); |
| | | DataSet set= oCN.RunProcReturn("exec h_p_Gy_GetWorkShiftInfo " + HWorkShopID + "," + HCenterID, "h_p_Gy_GetWorkShiftInfo"); |
| | | if (set.Tables[0].Rows.Count > 0) { |
| | | HShiftsID = int.Parse(set.Tables[0].Rows[0]["HInterID"].ToString()); |
| | | } |
| | | |
| | | ds = oCN.RunProcReturn("exec h_p_Sc_SNBarcodeProcCtrl_S '" + HBadCodeSN + "'," + HProcID, "h_v_Gy_QualifiedRecordsList"); |
| | | if (ds.Tables[0].Rows.Count == 0) |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("条码:" + HBadCodeSN + "工序:" + HProcID + ",工序控制查无数据!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | else if (ds.Tables[0].Rows[0]["HBack"].ToString() == "2") |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("条码:" + HBadCodeSN + "工序:" + HProcID + "," + ds.Tables[0].Rows[0]["HBackRemark"].ToString() + "!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | |
| | | |
| | | //判断当前流转卡的出站单 是否有数据 |
| | | ds = oCN.RunProcReturn(@"select * from Sc_StationOutBillMain a |
| | | left join Gy_Process p on a.HProcID=p.HItemID |
| | | where HProcExchBillNo='" + HProcExchBillNo + "' and p.HNumber='" + HProcNumber + "'", "Sc_StationOutBillMain"); |
| | | 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"); |
| | | |
| | | if (ds.Tables[0].Rows.Count != 0) |
| | | { |
| | | HInterID = long.Parse(ds.Tables[0].Rows[0]["HInterID"].ToString()); |
| | | HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();//递入type得到的单据号 |
| | | } |
| | | |
| | | |
| | | if (ds.Tables[0].Rows.Count == 0) |
| | | { |
| | | HInterID = CreateBillID("3791", ref sExeReturnInfo);//递入type得到的单据ID |
| | |
| | | ",HSupID,HQty,HPrice,HMoney,HBadCount,HCenterID,HProcNo,HOrderProcNO,HSourceNameList" + |
| | | ",HMainSourceInterID,HMainSourceBillNo,HMainSourceBillType,HLastSubProc" + |
| | | ",HEmpID2,HEmpID3,HEmpID4,HEmpID5,HDSQty,HChongQty,HPriceRate,HWorkTimes,HQCCheckID,HMainInterID,HPRDOrgID" + |
| | | ",HmaterOutqty,HProcPriceRate,HTemporaryAreaID" + |
| | | ",HmaterOutqty,HProcPriceRate,HTemporaryAreaID,HShiftsID" + |
| | | ") " + |
| | | " values('" + BillType + "','" + HBillSubType + "'," + HInterID + ",'" + HBillNo + "'," + HBillStatus + ",getdate(),'" + HMaker + "',getdate(),'" + HMouldNum + "'" + |
| | | "," + HYear + "," + HPeriod + ",'" + HRemark + "','" + HSourceName + "'," + HPieceQty + "," + HWasterQty + "," + HPlanPieceQty + "," + HBadPNL + |
| | |
| | | "," + HSupID + "," + HQty + "," + HPrice + "," + HMoney + "," + HBadCount + "," + HCenterID + "," + HProcNo + ",'" + HOrderProcNO + "'" + ",'" + HSourceNameList + "'" + |
| | | "," + HMainSourceInterID + ",'" + HMainSourceBillNo + "','" + HMainSourceBillType + "'," + Convert.ToString(HLastSubProc ? 1 : 0) + |
| | | "," + HEmpID2 + "," + HEmpID3 + "," + HEmpID4 + "," + HEmpID5 + "," + HDSQty + "," + HChongQty + "," + HPriceRate + "," + HWorkTimes + "," + HQCCheckID + "," + HMainInterID + "," + HPRDOrgID + |
| | | "," + HmaterOutqty + "," + HProcPriceRate + "," + HTemporaryAreaID + ") "); |
| | | "," + HmaterOutqty + "," + HProcPriceRate + "," + HTemporaryAreaID + ","+ HShiftsID + ") "); |
| | | } |
| | | |
| | | if (HResult == "OK") |
| | | { |
| | | ds = oCN.RunProcReturn("select * from Sc_StationOutBillSub_SN where HInterID='" + HInterID + "' order by HEntryID desc", "Sc_StationOutBillSub_SN"); |
| | | ds = oCN.RunProcReturn("select * 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, GETDATE(), '', " + 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 HProcExchInterID='" + HProcExchInterID + "' and HProcExchEntryID=" + HProcExchEntryID); |
| | | oCN.RunProc("update Sc_StationOutBillMain set HQty+=1 where HInterID='" + HInterID + "'"); |
| | | } |
| | | else if (HResult == "NG") |
| | | { |
| | | //反写工序出站单的不良数量 |
| | | oCN.RunProc("update Sc_StationOutBillMain set HBadCount+=1 where HProcExchInterID='" + HProcExchInterID + "' and HProcExchEntryID=" + HProcExchEntryID); |
| | | ds = oCN.RunProcReturn("select * 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"); |
| | | |
| | | if (ds.Tables[0].Rows.Count > 0) { |
| | | string HRepairDate = ds.Tables[0].Rows[0]["HMakeDate"].ToString(); |
| | | |
| | | if (DateTime.Parse(HBadDate) < DateTime.Parse(HRepairDate)) { |
| | | //反写工序出站单的不良数量 |
| | | oCN.RunProc("update Sc_StationOutBillMain set HBadCount+=1 where HInterID='" + HInterID + "'"); |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | //反写工序出站单的不良数量 |
| | | oCN.RunProc("update Sc_StationOutBillMain set HBadCount+=1 where HInterID='" + HInterID + "'"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("结果不为OK或NG!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | oCN.Commit(); |
| | | |
| | | //查询出站数量是否超过流转卡数量 |
| | | 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} |
| | | group by b.HInterID,b.HEntryID,b.HQty", "Sc_ProcessExchangeBill_Out"); |
| | | |
| | | if (double.Parse(ds.Tables[0].Rows[0][0].ToString()) < 0) |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("流转卡:"+ HProcExchBillNo + ",出站数量超过流转卡数量!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | |
| | | bool flag = false; |
| | | |
| | | flag = AddXt_XtRoutBill(HInterID, HBillNo, HBadCodeSN); |
| | | |
| | | if (!flag) |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("系统参数保存失败,条码:" + HBadCodeSN, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | |
| | | //增加产线组装追溯单 |
| | | DataSet dataSet = oCN.RunProcReturn("exec h_p_Gy_BarCodeBillBomList '" + HProcExchBillNo + "'," + HProcID, "h_p_Gy_BarCodeBillBomList"); |
| | | |
| | | if (dataSet.Tables[0].Rows.Count > 0) |
| | | { |
| | | //判配件数量是否等于0 |
| | | for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) |
| | | { |
| | | double SYHQty = double.Parse(dataSet.Tables[0].Rows[i]["配件数量"].ToString()); |
| | | string HMaterNamePJ = dataSet.Tables[0].Rows[i]["配件代码"].ToString(); |
| | | string HMaterBarCode = dataSet.Tables[0].Rows[i]["HBarCode"].ToString(); |
| | | if (SYHQty == 0) { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("配件条码:"+ HMaterBarCode + ",配件代码:" + HMaterNamePJ + ",数量为0!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | //查询职员 |
| | | 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(); |
| | | } |
| | | |
| | | Int64 HInterID1 = CreateBillID("3727", ref sExeReturnInfo); |
| | | string HBillNo1 = CreateBillCode_Prod("3727", ref sExeReturnInfo, true); |
| | | |
| | | //保存生产组装单主表 |
| | | 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})"; |
| | | oCN.RunProc(sql); |
| | | |
| | | for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) |
| | | { |
| | | string HMaterIDs = dataSet.Tables[0].Rows[i]["HMaterID"].ToString(); |
| | | 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}','') "; |
| | | oCN.RunProc(sq2); |
| | | } |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog(e.Message, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | //条码解析 |
| | | public bool SNHBardCodeList(string HBadCodeSN) |
| | | //新增返修OK出站汇报单 |
| | | public bool getOKOutBillAdd(DataRow dic, string HBadCodeSN, string HResult) |
| | | { |
| | | try |
| | | { |
| | | //获取绑定流转卡 |
| | | DataSet ds = oCN.RunProcReturn(@"select * from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill"); |
| | | string HProcExchBillNo = ds.Tables[0].Rows[0]["HSourceBillNo"].ToString(); |
| | | string HProcNumber = dic["HProcNumber"].ToString(); |
| | | |
| | | ds = oCN.RunProcReturn("select * from Gy_Source WITH(NOLOCK) where HNumber='" + dic["HSourceCode"].ToString() + "' ", "Gy_Source"); |
| | | long HSourceID = 0; |
| | | if (ds.Tables[0].Rows.Count != 0) |
| | | { |
| | | HSourceID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产资源ID |
| | | } |
| | | |
| | | //查询职员 |
| | | ds = oCN.RunProcReturn("select * from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee"); |
| | | long HEmpIDs = 0; |
| | | if (ds.Tables[0].Rows.Count != 0) |
| | | { |
| | | HEmpIDs = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//职员ID |
| | | } |
| | | |
| | | long HDeptID = 0; |
| | | long HPRDOrgIDs = 0; |
| | | string sReturn = ""; |
| | | if (GetSingleSystemParameter("WMS_CampanyName", ref sReturn) == "杭州斯莫尔") |
| | | { |
| | | HDeptID = 389505; |
| | | HPRDOrgIDs = 100199; |
| | | } |
| | | 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; |
| | | } |
| | | |
| | | ds = oCN.RunProcReturn(@"select b.HProcNo,b.HProcID,a.HMaterID,a.HQty,a.HInterID,HEntryID,a.HICMOInterID,a.HICMOEntryID,a.HICMOBillNo |
| | | 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"); |
| | | |
| | | long HICMOInterID = long.Parse(ds.Tables[0].Rows[0]["HICMOInterID"].ToString());//任务单ID |
| | | long HICMOEntryID = long.Parse(ds.Tables[0].Rows[0]["HICMOEntryID"].ToString());//任务单ID |
| | | string HICMOBillNo = ds.Tables[0].Rows[0]["HICMOBillNo"].ToString();//任务单 |
| | | long HProcExchInterID = long.Parse(ds.Tables[0].Rows[0]["HInterID"].ToString()); |
| | | long HProcExchEntryID = long.Parse(ds.Tables[0].Rows[0]["HEntryID"].ToString()); |
| | | long HMaterID = long.Parse(ds.Tables[0].Rows[0]["HMaterID"].ToString());//产品ID |
| | | long HProcID = long.Parse(ds.Tables[0].Rows[0]["HProcID"].ToString());//当前工序ID |
| | | long HInterID = 0; |
| | | string HBillNo = ""; |
| | | |
| | | ds = oCN.RunProcReturn("exec h_p_Sc_SNBarcodeProcCtrl_S '" + HBadCodeSN + "'," + HProcID, "h_v_Gy_QualifiedRecordsList"); |
| | | if (ds.Tables[0].Rows.Count == 0) |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("条码:" + HBadCodeSN + "工序:" + HProcID + ",工序控制查无数据!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | else if (ds.Tables[0].Rows[0]["HBack"].ToString() == "2") |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("条码:" + HBadCodeSN + "工序:" + HProcID + "," + ds.Tables[0].Rows[0]["HBackRemark"].ToString() + "!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | |
| | | ds = oCN.RunProcReturn("select * from Sc_AssemblyBillMain WITH(NOLOCK) where HMainSourceInterID=" + HProcExchInterID + " and HMainSourceEntryID=" + HProcExchEntryID, "Sc_AssemblyBillMain"); |
| | | DateTime HDate=DateTime.Now; |
| | | //当产品没有配件的时候 查询 不良记录 |
| | | if (ds.Tables[0].Rows.Count == 0) |
| | | { |
| | | ds = oCN.RunProcReturn("select * from Sc_QualityReportBillSub WITH(NOLOCK) where HProcExchInterID=" + HProcExchInterID + " and HProcExchEntryID=" + HProcExchEntryID+ " and HBarCode='" + HBadCodeSN + "'", "Sc_AssemblyBillMain"); |
| | | HDate = DateTime.Parse(ds.Tables[0].Rows[0]["HMakeDate"].ToString()); |
| | | } |
| | | else { |
| | | HDate = DateTime.Parse(ds.Tables[0].Rows[0]["HDate"].ToString()); |
| | | } |
| | | |
| | | //查询是否有返修记录 |
| | | ds = oCN.RunProcReturn(@"select a.HBarCode,a.HProcess,b.HSourceInterID,b.HSourceEntryID,b.HRepairResult from Sc_SourceLineRepairBillMain a WITH(NOLOCK) |
| | | inner join Sc_SourceLineRepairBillSub b WITH(NOLOCK) on a.HInterID = b.HInterID |
| | | where a.HBarCode = '" + HBadCodeSN + "' and a.HProcess ="+ HProcID + " and b.HSourceInterID ="+ HProcExchInterID + " " + |
| | | "and b.HSourceEntryID="+ HProcExchEntryID + " and b.HRepairResult = 'OK'", "Sc_SourceLineRepairBillMain"); |
| | | |
| | | if (ds.Tables[0].Rows.Count == 0) |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("条码:" + HBadCodeSN + ",无返修记录", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | |
| | | //判断当前流转卡的出站单 是否有数据 |
| | | 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) ='" + HDate.ToString("yyyy-MM-dd") + "'", "Sc_StationOutBillMain"); |
| | | |
| | | if (ds.Tables[0].Rows.Count != 0) |
| | | { |
| | | HInterID = long.Parse(ds.Tables[0].Rows[0]["HInterID"].ToString()); |
| | | HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();//递入type得到的单据号 |
| | | } |
| | | |
| | | if (HResult == "OK") |
| | | { |
| | | ds = oCN.RunProcReturn("select * 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)"); |
| | | |
| | | CustomWriteLog("条码:" + HBadCodeSN + "工序:"+ HProcNumber + ",出站时间:" + HMakeTime, "TM" + DateTime.Now.ToString("yyyy-MM-dd")); |
| | | |
| | | //反写工序出站单的合格数量 |
| | | //oCN.RunProc("update Sc_StationOutBillMain set HQty+=1,HBadCount-=1 where HInterID='" + HInterID + "'"); |
| | | oCN.RunProc("update Sc_StationOutBillMain set HQty+=1 where HInterID='" + HInterID + "'"); |
| | | //反写条码状态 |
| | | oCN.RunProc("update Gy_BarCodeBill set HStatus='' where HBarCode='" + HBadCodeSN + "'"); |
| | | } |
| | | else |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("结果不为OK!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog(e.Message, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | //保存系统参数到出站单 |
| | | public bool AddXt_XtRoutBill(long HInterID, string HBillNo,string HBadCodeSN) { |
| | | 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"); |
| | | string HProcExchInterID = ds.Tables[0].Rows[0]["HProcExchInterID"].ToString(); |
| | | string HProcExchEntryID = ds.Tables[0].Rows[0]["HProcExchEntryID"].ToString(); |
| | | string HProcExchBillNo = ds.Tables[0].Rows[0]["HProcExchBillNo"].ToString(); |
| | | string HProcID = ds.Tables[0].Rows[0]["HProcID"].ToString(); |
| | | string HProcNum = ds.Tables[0].Rows[0]["HNumber"].ToString(); |
| | | //注:因为 组装 拍照 时间间隔比较短 所以目前只明确组装工序才可以保存工艺参数 之后如果有其他工序的话 需要增加工序字段 |
| | | if (HProcID == "88"|| HProcNum=="005") { |
| | | ds = oCN.RunProcReturn(@"select s.HItemID HMouldID,t.HItemID HTechParamID,HCount,HCreateTime,a.HResult from Sb_EquipMentCollectionTechParam_SN a WITH(NOLOCK) |
| | | inner join Gy_Source s WITH(NOLOCK) on a.HSourceCode=s.HNumber |
| | | inner join Gy_TechnologyParameter t WITH(NOLOCK) on a.HType=t.HName |
| | | where a.HFlag=0 and a.HBarCode='" + HBadCodeSN + "'", "Sb_EquipMentCollectionTechParam_SN"); |
| | | //注:当前只有一道工序有参数 如果有多道工序的话 需要增加 工序的过滤 |
| | | |
| | | if (ds.Tables[0].Rows.Count != 0) |
| | | { |
| | | |
| | | for (int i = 0; i < ds.Tables[0].Rows.Count; i++) |
| | | { |
| | | string HMouldID = ds.Tables[0].Rows[i]["HMouldID"].ToString(); |
| | | string HTechParamID = ds.Tables[0].Rows[i]["HTechParamID"].ToString(); |
| | | string HCount = ds.Tables[0].Rows[i]["HCount"].ToString(); |
| | | 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"); |
| | | |
| | | 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}')"; |
| | | |
| | | oCN.RunProc(sql); |
| | | } |
| | | oCN.RunProc("update Sb_EquipMentCollectionTechParam_SN set HFlag=1 where HBarCode='" + HBadCodeSN + "'"); |
| | | } |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("工艺参数保存:" + sql + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | //条码解析 |
| | | public int SNHBardCodeList(string HBadCodeSN) |
| | | { |
| | | 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 + "'"); |
| | | |
| | | //重新查询条码档案 进入新增方法 |
| | | ds = oCN.RunProcReturn(@"select * from Gy_BarCodeBill where HBarCode='" + HBadCodeSN + "'", "Gy_BarCodeBill"); |
| | | } |
| | | } |
| | | |
| | | //判断条码是否在数据库里 |
| | | if (ds.Tables[0].Rows.Count == 0) |
| | | { |
| | | //判断长度是否为29位 |
| | | //判断长度是否为29位 无尘车间 |
| | | if (HBadCodeSN.Length == 29) |
| | | { |
| | | string str1 = HBadCodeSN.Substring(23, 3); |
| | | 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) |
| | |
| | | } |
| | | else |
| | | { |
| | | CustomWriteLog("条码:"+ HBadCodeSN + ",流转卡不存在!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | else { |
| | | //判断长度是否为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; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("条码:" + HBadCodeSN + ",长度不等于29位!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | return 2; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | CustomWriteLog("条码:" + HBadCodeSN + ",条码已存在数据库!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | return 1; |
| | | } |
| | | return true; |
| | | return 0; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("条码:" + HBadCodeSN + "," + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | return 2; |
| | | } |
| | | } |
| | | |
| | | //保存条码数据 |
| | | //新增条码数据 |
| | | public void get_HBardBillSave(string HBarCode, string HProcExchBillNo) |
| | | { |
| | | try |
| | | { |
| | | //查询流转卡数据 |
| | | 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 |
| | | left join Gy_Material m on a.HMaterID=m.HItemID |
| | | left join Xt_ORGANIZATIONS o on a.HPRDORGID=o.HItemID |
| | | left join Gy_Unit u on a.HUnitID=u.HItemID |
| | | 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"); |
| | | |
| | | string HMaterNumber = dataSet.Tables[0].Rows[0]["物料代码"].ToString(); |
| | | string HOrgNumber = dataSet.Tables[0].Rows[0]["组织代码"].ToString(); |
| | | |
| | | //判断流转卡不能为空 |
| | | if (HBarCode.Trim() == "") |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("条码:" + HBarCode + ",流转卡不能为空!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | //objJsonResult.code = "0"; |
| | | //objJsonResult.count = 0; |
| | | //objJsonResult.Message = "条形码不能为空,不能生成条码!"; |
| | | //return objJsonResult; |
| | | } |
| | | |
| | | oCN.BeginTran(); |
| | | |
| | | //日期获取方式 |
| | | string sDate = DateTime.Now.ToString(); |
| | | string HWei = "0"; //尾数 |
| | |
| | | bool HGiveAwayFlag = false; |
| | | Int64 HEntryID = 1; |
| | | string sExeReturnInfo = ""; |
| | | Int64 HInterID = CreateBillID_Prod("85", ref sExeReturnInfo); |
| | | Int64 HInterID = CreateBillID_Prod("85", ref sExeReturnInfo); |
| | | int HOrgID = int.Parse(dataSet.Tables[0].Rows[0]["HPRDORGID"].ToString()); |
| | | string HCoilNO2 = ""; |
| | | string HFurnaceNO2 = ""; |
| | |
| | | + ", " + BoolToString(HGiveAwayFlag) |
| | | + ",'" + HMaterName + "','" + HMaterModel + "','" + HPinfan + "'," + HAuxPropID.ToString() + ",'" + HMTONo + "','" + HInnerBillNo + "','','')"); |
| | | |
| | | oCN.Commit(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | CustomWriteLog("条码:" + HBarCode + "," + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | oCN.RollBack(); |
| | | CustomWriteLog("条码:" + HBarCode + "," + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | } |
| | | } |
| | | |
| | | //条码补充 |
| | | public string TM_ZH(string HBadCodeSN) |
| | | { |
| | | try |
| | | { |
| | | //HBadCodeSN = "P1" + HBadCodeSN; |
| | | //HBadCodeSN = HBadCodeSN.Substring(0, 13) + ":" + HBadCodeSN.Substring(13, 15); |
| | | return HBadCodeSN; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | CustomWriteLog("条码:" + HBadCodeSN + "," + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return ""; |
| | | } |
| | | |
| | | } |
| | | |
| | | //定时读取数据 |
| | | private void timer1_Tick(object sender, EventArgs e) |
| | | { |
| | | DataTable list = oCN.RunProcReturn("select top 100 * from Sb_EquipMentCollection_SN WITH(NOLOCK) where HFlag=0 order by HCreateTime asc", "Sb_EquipMentCollection_SN").Tables[0]; |
| | | |
| | | //循环集合 |
| | | for (int i = 0; i < list.Rows.Count; i++) |
| | | { |
| | | bool flag = false; |
| | | string HResult = list.Rows[i]["HResult"].ToString(); |
| | | string HBadCodeSN = list.Rows[i]["HBarCode"].ToString(); |
| | | string HCreateTime = list.Rows[i]["HCreateTime"].ToString(); |
| | | |
| | | //HBadCodeSN = "P1099081-00-E:SDU324292189300"; |
| | | //HResult = "OK"; |
| | | //开始事务 |
| | | oCN.BeginTran(); |
| | | |
| | | if (HResult == "OK") |
| | | { |
| | | flag = HResultOK(list.Rows[i]); |
| | | } |
| | | else if (HResult == "NG") |
| | | { |
| | | flag = HResultNG(list.Rows[i]); |
| | | } |
| | | |
| | | if (flag) |
| | | { |
| | | oCN.RunProc("update Sb_EquipMentCollection_SN set HFlag=1 where HBarCode='" + HBadCodeSN + "' and HCreateTime='" + HCreateTime + "'"); |
| | | //结束事务 |
| | | oCN.Commit(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | //新增不良汇报单 |
| | | public bool getBadBillAdd(DataRow dic) { |
| | | try |
| | | { |
| | | |
| | | //查询职员 |
| | | DataSet ds = oCN.RunProcReturn("select * from Gy_Employee WITH(NOLOCK) where HNumber='" + dic["HEmpCode"].ToString() + "' ", "Gy_Employee"); |
| | | long HEmpIDs = 0; |
| | | 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(); |
| | | } |
| | | |
| | | long HDeptID = 0;//车间 |
| | | string sReturn = ""; |
| | | if (GetSingleSystemParameter("WMS_CampanyName", ref sReturn) == "杭州斯莫尔") |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | string HProcExchInterID = "0"; |
| | | string HProcExchEntryID = "0"; |
| | | string HProcExchBillNo = ""; |
| | | long HMaterID = 0; |
| | | long HProcID = 0; |
| | | long HUnitID = 0; |
| | | long HICMOInterID = 0; |
| | | long HICMOEntryID = 0; |
| | | string HICMOBillNo = ""; |
| | | 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 |
| | | left join Gy_Process p WITH(NOLOCK) on b.HProcID=p.HItemID |
| | | where HBillNo=(select HSourceBillNo from Gy_BarCodeBill WITH(NOLOCK) where HBarCode='" + dic["HBarCode"].ToString() + "') and p.HNumber='" + dic["HProcNumber"].ToString() + "' ", "Sc_ProcessExchangeBillMain"); |
| | | if (ds.Tables[0].Rows.Count != 0) |
| | | { |
| | | HMaterID = int.Parse(ds.Tables[0].Rows[0]["HMaterID"].ToString()); |
| | | HUnitID = int.Parse(ds.Tables[0].Rows[0]["HUnitID"].ToString()); |
| | | HICMOInterID = int.Parse(ds.Tables[0].Rows[0]["HICMOInterID"].ToString()); |
| | | HICMOEntryID = int.Parse(ds.Tables[0].Rows[0]["HICMOEntryID"].ToString()); |
| | | HICMOBillNo = ds.Tables[0].Rows[0]["HICMOBillNo"].ToString(); |
| | | HProcExchInterID = ds.Tables[0].Rows[0]["HInterID"].ToString(); |
| | | HProcExchEntryID = ds.Tables[0].Rows[0]["HEntryID"].ToString(); |
| | | HProcExchBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString(); |
| | | HProcID = int.Parse(ds.Tables[0].Rows[0]["HProcID"].ToString()); |
| | | } |
| | | |
| | | |
| | | ds = oCN.RunProcReturn("select * from Gy_Source WITH(NOLOCK) where HNumber='" + dic["HSourceCode"].ToString() + "' ", "Gy_Source"); |
| | | long HSourceID = 0; |
| | | if (ds.Tables[0].Rows.Count != 0) |
| | | { |
| | | HSourceID = long.Parse(ds.Tables[0].Rows[0]["HItemID"].ToString());//生产资源ID |
| | | } |
| | | |
| | | string sExeReturnInfo = ""; |
| | | long HInterID = CreateBillID("3717", ref sExeReturnInfo);//递入type得到的单据ID |
| | | string HBillNo = CreateBillCode_Prod("3717", ref sExeReturnInfo, true);//递入type得到的单据号 |
| | | DateTime HDate = DateTime.Parse(dic["HCreateTime"].ToString());//日期 |
| | | string HRemark = "";//备注 |
| | | long HEmpID = HEmpIDs;//质检员 |
| | | long HGroupID = 22;//班组ID 白班 |
| | | string HMaker = HMakers;//制单人 |
| | | long HMainSourceInterID = HICMOInterID; |
| | | long HMainSourceEntryID = HICMOEntryID; |
| | | string HMainSourceBillNo = HICMOBillNo; |
| | | |
| | | //主表 |
| | | oCN.RunProc(@"Insert Into Sc_QualityReportBillMain |
| | | (HBillType,HBillSubType,HBillStatus,HInterID,HBillNo,HDate |
| | | ,HYear,HPeriod,HRemark,HMaker,HMakeDate |
| | | ,HEmpID,HGroupID,HDeptID,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo) |
| | | values('3717','3717',1," + HInterID + ",'" + HBillNo + "','" + HDate + "'" + |
| | | "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + HRemark + "','" + HMaker + "',getdate()" + |
| | | ",'" + HEmpID + "'," + HGroupID + "," + HDeptID + "," + HMainSourceInterID + "," + HMainSourceEntryID + ",'" + HMainSourceBillNo + "') "); |
| | | |
| | | string HBarCode = dic["HBarCode"].ToString(); |
| | | string HMakeDate = dic["HCreateTime"].ToString(); |
| | | string HResult = dic["HResult"].ToString(); |
| | | oCN.RunProc($@"Insert into Sc_QualityReportBillSub |
| | | (HInterID,HENTRYID,HBillNo_bak,HEmpID,HBarCode,HBadReasonID,HAddr,HMaker,HMakeDate |
| | | ,HMaterID,HUnitID,HRemark,HSourceID,HICMOInterID,HICMOEntryID,HICMOBillNo,HReportType |
| | | ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney |
| | | ,HQty,HResult,HProcExchInterID,HProcExchEntryID,HProcExchBillNo,HProcID) |
| | | values({HInterID},1,'{HBillNo}',{HEmpID},'{HBarCode}',0,'','{HMaker}','{HMakeDate}' |
| | | ,{HMaterID},{ HUnitID},'',{HSourceID},{ HICMOInterID},{ HICMOEntryID},'{HICMOBillNo}',0 |
| | | ,0,0,'','',0,0 |
| | | ,1,'{HResult}',{ HProcExchInterID},{ HProcExchEntryID},'{ HProcExchBillNo}'," + HProcID + ")"); |
| | | |
| | | return true; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | oCN.RollBack(); |
| | | CustomWriteLog("报错原因:" + e.Message + "!", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | #region 基础方法 |
| | | |
| | | //查询系统参数 |
| | | public string GetSingleSystemParameter(string sKey, ref string sReturn) |
| | | { |
| | | try |
| | | { |
| | | //查询主表 |
| | | DataSet DsSub; |
| | | //循环 |
| | | DsSub = oCN.RunProcReturn("Select HValue from Xt_SystemParameter with(nolock) Where HKey='" + sKey + "' ", "Xt_SystemParameter"); |
| | | if (DsSub == null || DsSub.Tables[0].Rows.Count == 0) |
| | | { |
| | | sReturn = "找不到该参数!"; |
| | | return ""; |
| | | } |
| | | else |
| | | { |
| | | return isStrNull(DsSub.Tables[0].Rows[0]["HValue"]); |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | sReturn = e.Message; |
| | | throw (e); |
| | | } |
| | | } |
| | | |
| | |
| | | return -2; |
| | | } |
| | | } |
| | | |
| | | //条码补充 |
| | | public string TM_ZH(string HBadCodeSN) { |
| | | try |
| | | { |
| | | //HBadCodeSN = "P1" + HBadCodeSN; |
| | | //HBadCodeSN = HBadCodeSN.Substring(0, 13) + ":" + HBadCodeSN.Substring(13, 15); |
| | | return HBadCodeSN; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | CustomWriteLog("条码:" + HBadCodeSN + "," + e.Message, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | return ""; |
| | | } |
| | | |
| | | } |
| | | |
| | | //判断是否是INT64 |
| | | public static Int64 isLong(object message) |
| | | { |
| | |
| | | { |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | //定时读取数据 |
| | | private void timer1_Tick(object sender, EventArgs e) |
| | | private void Form1_FormClosing(object sender, FormClosingEventArgs e) |
| | | { |
| | | int year = DateTime.Now.Year; |
| | | string month = DateTime.Now.Month.ToString(); |
| | | string day = DateTime.Now.Day.ToString(); |
| | | |
| | | |
| | | //if (month.Length < 2) { |
| | | // month = "0" + month; |
| | | //} |
| | | //if (day.Length < 2) |
| | | //{ |
| | | // day = "0" + day; |
| | | //} |
| | | |
| | | string dataTime = DateTime.Now.ToString("yyyyMMdd"); |
| | | //CustomWriteLog("1:" + dataTime, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | ////判断是否有这个文件 |
| | | bool flag = File.Exists($@"D:\{year}\{month}\{day}\{dataTime}.txt"); |
| | | //bool flag = File.Exists($@"C:\Users\admin\Desktop\新建文件夹 (2)\20231123.txt"); |
| | | //CustomWriteLog("2:" + flag, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | if (flag) |
| | | if (MessageBox.Show("确定要关闭吗?", "确认", MessageBoxButtons.YesNo) == DialogResult.No) |
| | | { |
| | | StreamReader stream = new StreamReader($@"D:\{year}\{month}\{day}\{dataTime}.txt", Encoding.GetEncoding("gb2312")); |
| | | //CustomWriteLog("3:"+ $@"D:\{year}\{month}\{day}\{dataTime}.txt", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | //StreamReader stream = new StreamReader($@"C:\Users\admin\Desktop\新建文件夹 (2)\20231123.txt",Encoding.GetEncoding("gb2312")); |
| | | string FileData = stream.ReadToEnd(); |
| | | stream.Close(); |
| | | FileData = FileData.Substring(0, FileData.Length - 1); |
| | | FileData = "[" + FileData + "]"; |
| | | //CustomWriteLog("4:" + FileData, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | //JSON序列化转换字典集合 |
| | | List<Dictionary<string, string>> list = new List<Dictionary<string, string>>(); |
| | | List<object> DataList = JsonConvert.DeserializeObject<List<object>>(FileData); |
| | | foreach (JObject item in DataList) |
| | | { |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | foreach (var itm in item.Properties()) |
| | | { |
| | | dic.Add(itm.Name, itm.Value.ToString()); |
| | | } |
| | | list.Add(dic); |
| | | } |
| | | //CustomWriteLog("5:" + list.Count, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | //获取当前时间 |
| | | DateTime ActionTime = DateTime.Parse(DateTime.Now.AddMinutes(-1).ToString("yyyy-MM-dd HH:mm:ss")); |
| | | DateTime EndTime = DateTime.Parse(DateTime.Now.AddMinutes(1).ToString("yyyy-MM-dd HH:mm:00")); |
| | | //循环集合 |
| | | for (int i = 0; i < list.Count; i++) |
| | | { |
| | | DateTime NowTime = DateTime.Parse(list[i]["HDate"].ToString()); |
| | | if (NowTime >= ActionTime && NowTime < EndTime) |
| | | { |
| | | string HResult = list[i]["HResult"].ToString(); |
| | | |
| | | //CustomWriteLog("6:" + HResult, DateTime.Now.ToString("yyyy-MM-dd")); |
| | | if (HResult == "OK") |
| | | { |
| | | HResultOK(list[i]); |
| | | } |
| | | else if (HResult == "NG") |
| | | { |
| | | HResultNG(list[i]); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //CustomWriteLog("时间不在保存范围内", DateTime.Now.ToString("yyyy-MM-dd")); |
| | | } |
| | | } |
| | | e.Cancel = true; |
| | | } |
| | | } |
| | | } |