//一码一签 Pigtail类型 private string add1(Model.SerialNumber serialNumber, long StartSN, int OrderCount) { string Pigtail_Info = ""; int _Pass = 0, _Fill = 0; //记录添加成功与添加失败的数量 serialNumber.Type = E_SerialNumber_Type.ClientSN.ToString(); //条码类型 serialNumber.State = E_Barcode_State.Not_Pack.ToString(); //条码状态 long endSn = StartSN + (OrderCount - 1); //判断编码是否有重复的 if (Exists(StartSN.ToString(), endSn.ToString(), Model.E_SerialNumber_Type.ClientSN)) { Pigtail_Info = "Pigtail编码保存失败:现有编码与数据库中的编码有重复!"; } else { for (long t = StartSN; t <= endSn; t++) { serialNumber.SN = t.ToString(); //SN 赋值 if (Add(serialNumber)) { _Pass++; } else { _Fill++; } //如果添加成功!_pass记录加1,否则_fill加1 } Pigtail_Info = "操作完成!成功添加:" + _Pass + "条\r\n失败:" + _Fill + "条"; } return(Pigtail_Info); }
/// <summary> /// 名称:检测方法三 /// 功能:特殊-8芯配组检测 /// </summary> /// <param name="e"></param> private void InspectMethod_Three(InspectEventArgs e) { try { ResultEventArgs _Result = new ResultEventArgs(); //定义结果返回类 _Result.ErrorList = ""; //异常列表 归零 _GLL_SerialNumber = _M_SerialNumber.GetModel(e.SN); //获取条码 实体 if (_GLL_SerialNumber == null || _GLL_SerialNumber.OrderID != _GLL_WorkOrder.OrderID || _GLL_SerialNumber.Type != Maticsoft.Model.E_SerialNumber_Type.PigtailSN.ToString()) //判断是否属于此工单 { _Result.ErrorList += "此条码:" + e.SN + " 不属于此工单:" + _GLL_WorkOrder.OrderID + ""; } else if (_GLL_SerialNumber.State != Maticsoft.Model.E_Barcode_State.Not_Pack.ToString()) //判断是否已经包装 { _Result.ErrorList += "此条码:" + _GLL_SerialNumber.SN + " 已包装或已打印!包装批号:" + _GLL_SerialNumber.BatchNO + ""; } else { if (_GLL_WorkOrder.InspectType == Maticsoft.Model.E_InspectType.检测3D与Exfo) { Inspect_Three_Inspect_3D(e, _Result); Inspect_Three_Inspect_Exfo(e, _Result); } else if (_GLL_WorkOrder.InspectType == Maticsoft.Model.E_InspectType.检测Exfo) { _Result.Result_3D = true; Inspect_Three_Inspect_Exfo(e, _Result); } else if (_GLL_WorkOrder.InspectType == Maticsoft.Model.E_InspectType.检测3D) { _Result.Result_Exfo = true; Inspect_Three_Inspect_3D(e, _Result); } //--------------------------------------------------检测配组是否完成 ArrayList YetPack_PigtailNum_List = _M_Pack_3D.Get_ClientSN_PigtailNum(e.ClientSN, "8芯配组"); //获取已包装线号 ArrayList Inspect_ClientNum = isEqual(_GLL_Standard_ClientList, YetPack_PigtailNum_List); if (Inspect_ClientNum.Count > 0) { //设置配组 为未完成 _Result.Combination = false; string temClientNum = ArrayListToString(Inspect_ClientNum); _Result.Not_ClientSN_Name = temClientNum; } else { //设置配组 为已完成 _Result.Combination = true; Maticsoft.Model.SerialNumber _TemClient = new Model.SerialNumber(); _TemClient = _M_SerialNumber.GetModel(e.ClientSN); _TemClient.State = Maticsoft.Model.E_Barcode_State.Yet_Pack.ToString(); _TemClient.BatchNO = _GLL_PackBatch.BatchNo; _M_SerialNumber.Update(_TemClient); _Result.Not_ClientSN_Name = ArrayListToString(_GLL_Standard_ClientList); } } e.InspectResult = _Result; } catch (Exception ex) { My_MessageBox.My_MessageBox_Message(ex.Message); } }
/* * /// <summary> * /// 分页获取数据列表 * /// </summary> * public DataSet GetList(int PageSize,int PageIndex,string strWhere) * { * SqlParameter[] parameters = { * new SqlParameter("@tblName", SqlDbType.VarChar, 255), * new SqlParameter("@fldName", SqlDbType.VarChar, 255), * new SqlParameter("@PageSize", SqlDbType.Int), * new SqlParameter("@PageIndex", SqlDbType.Int), * new SqlParameter("@IsReCount", SqlDbType.Bit), * new SqlParameter("@OrderType", SqlDbType.Bit), * new SqlParameter("@strWhere", SqlDbType.VarChar,1000), * }; * parameters[0].Value = "tb_SerialNumber"; * parameters[1].Value = "SN"; * parameters[2].Value = PageSize; * parameters[3].Value = PageIndex; * parameters[4].Value = 0; * parameters[5].Value = 0; * parameters[6].Value = strWhere; * return dbs.RunProcedure("UP_GetRecordByPage",parameters,"ds"); * }*/ #endregion BasicMethod #region ExtensionMethod public string serialNumber_Value(Model.E_InspectMethod _InspectMethod, Model.SerialNumber _serialNumber, long _StartSN, int OrderCount) { switch (_InspectMethod) { case E_InspectMethod.一码一签: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.一码一签_跳线: { return(add1(_serialNumber, _StartSN, OrderCount)); } // case E_InspectMethod.两码一签: { return add1(_serialNumber, _StartSN, OrderCount); } case E_InspectMethod.两码两签: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.双并检测: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.FFOS_四芯: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.FFOS_八芯: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.FFOS_十六芯: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.FFOS_二十四芯: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.FFOS_三十二芯: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.FFOS32_三十二芯双头: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.四芯检测: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.十二芯检测: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.八芯检测: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.TFK十二芯检测x2: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.TFK二十四芯检测x2: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.二十四芯检测: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.四十八芯检测: { return(add1(_serialNumber, _StartSN, OrderCount)); } case E_InspectMethod.MPO检测: { return(add1(_serialNumber, _StartSN, OrderCount)); } // case E_InspectMethod.配组_八芯: { return add2(_serialNumber, _StartSN, _EndSN, 12); } //配组 case E_InspectMethod.配组_二十四芯: { return(add2(_serialNumber, _StartSN, OrderCount, 3)); } //配组 case E_InspectMethod.配组_四十八芯: { return(add2(_serialNumber, _StartSN, OrderCount, 6)); } //配组 case E_InspectMethod.配组_九十六芯: { return(add2(_serialNumber, _StartSN, OrderCount, 12)); } //配组 default: { return("未找到任何与已知检测方法匹配的项,\r\n由此引出的错误可能为检测方法设置不正确!\r\n请重试或联系管理员!"); } } }
/// <summary> /// 根据SqlDataReader返回对象 /// </summary> /// <param name="reader">SqlDataReader对象</param> /// <returns>实体对象</returns> private Model.SerialNumber ToModel(SqlDataReader reader) { Model.SerialNumber serialNumber = new Model.SerialNumber { Id = (Guid)this.ToModelValue(reader, "Id"), Prefix = (string)this.ToModelValue(reader, "Prefix"), FormatDate = (string)this.ToModelValue(reader, "FormatDate"), ClassName = (string)this.ToModelValue(reader, "ClassName"), Length = (int)this.ToModelValue(reader, "Length"), TodayCount = (int)this.ToModelValue(reader, "TodayCount"), Description = (string)this.ToModelValue(reader, "Description") }; return(serialNumber); }
/// <summary> /// 添加 /// </summary> /// <param name="serialNumber">序列号实例</param> /// <returns>序列号实例</returns> public Model.SerialNumber Add(Model.SerialNumber serialNumber) { string sql = "INSERT INTO SerialNumbers (Id, Prefix, FormatDate, ClassName, Length, TodayCount, Description) VALUES (NEWID(), @Prefix, @FormatDate, @ClassName, @Length, @TodayCount, @Description)"; SqlParameter[] parameters = { new SqlParameter("@Prefix", this.ToDbValue(serialNumber.Prefix)), new SqlParameter("@FormatDate", this.ToDbValue(serialNumber.FormatDate)), new SqlParameter("@ClassName", this.ToDbValue(serialNumber.ClassName)), new SqlParameter("@Length", this.ToDbValue(serialNumber.Length)), new SqlParameter("@TodayCount", this.ToDbValue(serialNumber.TodayCount)), new SqlParameter("@Description", this.ToDbValue(serialNumber.Description)) }; GeneratorDal._SqlHelper.ExecuteNonQuery(sql, parameters); return(serialNumber); }
/// <summary> /// 更新条码状态 /// </summary> private void Up_SerialNumber(InspectEventArgs e) { Maticsoft.Model.SerialNumber _serial = new Model.SerialNumber(); if (_GLL_WorkOrder.InspectType == Maticsoft.Model.E_InspectType.检测3D与Exfo) { if (e.InspectResult.Result_3D && e.InspectResult.Result_Exfo) { //更新条码状态 foreach (string temSN in _GLL_Standard_PigtailList) { _serial = _M_SerialNumber.GetModel(temSN); _serial.State = Maticsoft.Model.E_Barcode_State.Yet_Pack.ToString(); _serial.BatchNO = _GLL_PackBatch.BatchNo.ToString(); _M_SerialNumber.Update(_serial); } } } else if (_GLL_WorkOrder.InspectType == Maticsoft.Model.E_InspectType.检测Exfo) { if (e.InspectResult.Result_Exfo == true) { //更新条码状态 foreach (string temSN in _GLL_Standard_PigtailList) { _serial = _M_SerialNumber.GetModel(temSN); _serial.State = Maticsoft.Model.E_Barcode_State.Yet_Pack.ToString(); _serial.BatchNO = _GLL_PackBatch.BatchNo.ToString(); _M_SerialNumber.Update(_serial); } } } else //只检测3D { if (e.InspectResult.Result_3D == true) { //更新条码状态 foreach (string temSN in _GLL_Standard_PigtailList) { _serial = _M_SerialNumber.GetModel(temSN); _serial.State = Maticsoft.Model.E_Barcode_State.Yet_Pack.ToString(); _serial.BatchNO = _GLL_PackBatch.BatchNo.ToString(); _M_SerialNumber.Update(_serial); } } } }
/// <summary> /// 修改 /// </summary> /// <param name="serialNumber">序列号实例</param> /// <returns>受影响的行数</returns> public int Save(Model.SerialNumber serialNumber) { StringBuilder sql = new StringBuilder(); sql.Append("UPDATE SerialNumbers SET Prefix = @Prefix"); sql.Append(", FormatDate = @FormatDate"); sql.Append(", ClassName = @ClassName"); sql.Append(", Length = @Length"); sql.Append(", TodayCount = @TodayCount"); sql.Append(", Description = @Description"); sql.Append(" WHERE Id = @Id"); SqlParameter[] args = { new SqlParameter("@Id", serialNumber.Id) , new SqlParameter("@Prefix", this.ToDbValue(serialNumber.Prefix)) , new SqlParameter("@FormatDate", this.ToDbValue(serialNumber.FormatDate)) , new SqlParameter("@ClassName", this.ToDbValue(serialNumber.ClassName)) , new SqlParameter("@Length", this.ToDbValue(serialNumber.Length)) , new SqlParameter("@TodayCount", this.ToDbValue(serialNumber.TodayCount)) , new SqlParameter("@Description", this.ToDbValue(serialNumber.Description)) }; return(GeneratorDal._SqlHelper.ExecuteNonQuery(sql.ToString(), args)); }
/// <summary> /// 生成编号方法 /// </summary> /// <param name="prefix">编号前缀</param> /// <param name="formatDate">格式化日期</param> /// <param name="className">类名</param> /// <param name="length">流水号长度</param> /// <param name="description">编号描述</param> /// <returns>编号</returns> public string GenerateNumber(string prefix, string formatDate, string className, int length, string description) { lock (NumberGenerator._SyncLock) { Model.SerialNumber serialNumber = this._generatorDal.SingleOrDefault(prefix, formatDate, className, length); if (serialNumber == null) { serialNumber = new Model.SerialNumber(prefix, formatDate, className, length, string.Format("创建{0}", description)); this._generatorDal.Add(serialNumber); } else { serialNumber.UpdateInfo(serialNumber.TodayCount + 1, string.Format("新增{0}", description)); this._generatorDal.Save(serialNumber); } StringBuilder numberBuilder = new StringBuilder(); numberBuilder.Append(serialNumber.Prefix); numberBuilder.Append(serialNumber.FormatDate); numberBuilder.Append(serialNumber.TodayCount.ToString(string.Format("D{0}", length))); return(numberBuilder.ToString()); } }
/// <summary> /// 批量生成编号方法 /// </summary> /// <param name="prefix">编号前缀</param> /// <param name="formatDate">格式化日期</param> /// <param name="className">类名</param> /// <param name="length">流水号长度</param> /// <param name="description">编号描述</param> /// <param name="count">生成数量</param> /// <returns>编号集</returns> public ICollection <string> GenerateNumbers(string prefix, string formatDate, string className, int length, string description, int count) { lock (NumberGenerator._SyncLock) { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) { ICollection <string> numbers = new HashSet <string>(); for (int i = 0; i < count; i++) { Model.SerialNumber serialNumber = this._generatorDal.SingleOrDefault(prefix, formatDate, className, length); if (serialNumber == null) { serialNumber = new Model.SerialNumber(prefix, formatDate, className, length, $"创建{description}"); this._generatorDal.Add(serialNumber); } else { serialNumber.UpdateInfo(serialNumber.TodayCount + 1, $"新增{description}"); this._generatorDal.Save(serialNumber); } StringBuilder numberBuilder = new StringBuilder(); numberBuilder.Append(serialNumber.Prefix); numberBuilder.Append(serialNumber.FormatDate); numberBuilder.Append(serialNumber.TodayCount.ToString($"D{length}")); numbers.Add(numberBuilder.ToString()); } scope.Complete(); return(numbers); } } }
//配组ClientSN 编码与 Pigtail编码 private string add2(Model.SerialNumber serialNumber, long StartSN, int OrderCount, int PigtailCount) { int _Pass = 0, _Fill = 0; //记录添加成功与添加失败的数量 serialNumber.Type = E_SerialNumber_Type.ClientSN.ToString(); //条码类型 serialNumber.State = E_Barcode_State.Not_Pack.ToString(); //条码状态 string ClinentSN_Info = "", Pigtail_Info = ""; long _Endsn = StartSN + (OrderCount - 1); /**********赋值 ClientSn *********/ //判断编码是否有重复的 if (Exists(StartSN.ToString(), _Endsn.ToString(), E_SerialNumber_Type.ClientSN)) { Pigtail_Info = "客户编码保存失败:现有编码与数据库中的编码有重复!"; } else { for (long t = StartSN; t <= _Endsn; t++) { serialNumber.SN = t.ToString(); //SN 赋值 if (Add(serialNumber)) { _Pass++; } else { _Fill++; } //如果添加成功!_pass记录加1,否则_fill加1 ClinentSN_Info = "操作完成 客户编码——!成功添加:" + _Pass + "条\r\n失败:" + _Fill.ToString() + "条"; } } /**********赋值 Pigtail *********/ serialNumber.Type = E_SerialNumber_Type.PigtailSN.ToString(); //条码类型 _Pass = 0; _Fill = 0; //判断编码是否有重复的 if (Exists(StartSN.ToString(), _Endsn.ToString(), E_SerialNumber_Type.PigtailSN)) { Pigtail_Info = "Pigtail编码保存失败:现有编码与数据库中的编码有重复!"; } else { for (int f = 1; f <= PigtailCount; f++) { for (long t = StartSN; t <= _Endsn; t++) { if (f < 10) { serialNumber.SN = t.ToString() + "-0" + f.ToString();; //SN 赋值 } else { serialNumber.SN = t.ToString() + "-" + f.ToString();; //SN 赋值 } if (Add(serialNumber)) { _Pass++; } else { _Fill++; } //如果添加成功!_pass记录加1,否则_fill加1 Pigtail_Info = "操作完成 Pigtail编码——!成功添加:" + _Pass + "条\r\n失败:" + _Fill.ToString() + "条"; } } } return(ClinentSN_Info + "\r\n" + Pigtail_Info); }
/// <summary> /// 名称:检测方法二 /// 功能:检测配组线材 /// </summary> /// <param name="e"></param> private void InspectMethod_Two(InspectEventArgs e) { try { ResultEventArgs _Result = new ResultEventArgs(); //定义结果返回类 _Result.ErrorList = ""; //异常列表 归零 _GLL_SerialNumber = _M_SerialNumber.GetModel(e.SN); //获取条码 实体 if (_GLL_SerialNumber == null || _GLL_SerialNumber.OrderID != _GLL_WorkOrder.OrderID || _GLL_SerialNumber.Type != Maticsoft.Model.E_SerialNumber_Type.PigtailSN.ToString()) //判断是否属于此工单 { _Result.ErrorList += "此条码:" + e.SN + " 不属于此工单:" + _GLL_WorkOrder.OrderID + ""; } else if (_GLL_SerialNumber.State != Maticsoft.Model.E_Barcode_State.Not_Pack.ToString()) //判断是否已经包装 { _Result.ErrorList += "此条码:" + _GLL_SerialNumber.SN + " 已包装或已打印!包装批号:" + _GLL_SerialNumber.BatchNO + ""; } else { //验证线号是否已经存在 string PigtailNum = ""; if (e.SN.Length >= 13) { PigtailNum = e.SN.Substring(11, 2); } //获取线号 ArrayList YetPack_PigtailNum_List = _M_Pack_3D.Get_ClientSN_PigtailNum(e.ClientSN); //获取已包装线号 //判断此线号是否已经包装 bool Cli_IN_Name = false; if (IsUpdate) { Cli_IN_Name = YetPack_PigtailNum_List.Contains(PigtailNum); } if (Cli_IN_Name) { _Result.ErrorList += "客户编码:" + e.ClientSN + " 已存在此线号:" + PigtailNum + " "; } else { if (_GLL_WorkOrder.InspectType == Maticsoft.Model.E_InspectType.检测3D与Exfo) { Inspect_Two_Inspect_3D(e, _Result); Inspect_Two_Inspect_Exfo(e, _Result); } else if (_GLL_WorkOrder.InspectType == Maticsoft.Model.E_InspectType.检测Exfo) { _Result.Result_3D = true; Inspect_Two_Inspect_Exfo(e, _Result); } else if (_GLL_WorkOrder.InspectType == Maticsoft.Model.E_InspectType.检测3D) { _Result.Result_Exfo = true; Inspect_Two_Inspect_3D(e, _Result); } } //再次获取已包装线号 并与标准 客户编码数组进行比较 YetPack_PigtailNum_List = _M_Pack_3D.Get_ClientSN_PigtailNum(e.ClientSN); //获取已包装线号 ArrayList Inspect_ClientNum = isEqual(_GLL_Standard_ClientList, YetPack_PigtailNum_List); if (Inspect_ClientNum.Count > 0) { //设置配组 为未完成 因为不需要进行配组 _Result.Combination = false; string temClientNum = ArrayListToString(Inspect_ClientNum); _Result.Not_ClientSN_Name = temClientNum; } else { //设置配组 为已完成 因为不需要进行配组 _Result.Combination = true; Maticsoft.Model.SerialNumber _TemClient = new Model.SerialNumber(); _TemClient = _M_SerialNumber.GetModel(e.ClientSN); _TemClient.State = Maticsoft.Model.E_Barcode_State.Yet_Pack.ToString(); _TemClient.BatchNO = _GLL_PackBatch.BatchNo; _M_SerialNumber.Update(_TemClient); _Result.Not_ClientSN_Name = ArrayListToString(_GLL_Standard_ClientList); } } e.InspectResult = _Result; } catch (Exception ex) { My_MessageBox.My_MessageBox_Message(ex.Message); } }