/// <summary> /// 获取材料信息 /// </summary> public void GetMaterialInfo() { try { string MaterialList = ""; if (RemoteMaterialHT.Count > 0) { RemoteMaterialHT.Clear(); } DataTable table = bomDAL.GetList(string.Format("ProductType='{0}' AND ProductCode = '{1}' AND TraceType='{2}'", BaseVariable.DeviceEntity.ProductType, this.txtProductCode.Text, "批次追溯")).Tables[0]; if (table != null) { foreach (DataRow row in table.Rows) { ProductBomInfoMDL model = new ProductBomInfoMDL() { MaterialCode = row["MaterialCode"].ToString(), MaterialName = row["MaterialName"].ToString(), MaterialNum = int.Parse(row["MaterialNum"].ToString()) }; RemoteMaterialHT.Add(row["MaterialCode"].ToString(), model); MaterialList += "'" + row["MaterialCode"].ToString() + "',"; } MaterialList = MaterialList.Substring(0, MaterialList.LastIndexOf(',')); //从数据库获取当前批次材料信息 batchTable = batchDAL.GetList(string.Format("MaterialCode IN({0})", MaterialList)).Tables[0]; if (batchTable.Rows.Count != table.Rows.Count) { this.Tip("材料条码信息不全"); //提示 IsAbleScan = false; return; } else { if (!IsAbleScan) { IsAbleScan = true; this.Tip("材料条码信息通过"); //提示 } } BatchChangeTip(); } } catch (Exception ex) { CLog.WriteErrLog("[FrmScan.GetmaterialInfo]" + ex.Message); } }
//4.bom表 #region 载BOM表 private void DownloadBOM() { try { DataTable table = productBomDAL.GetDataTable(BaseVariable.DeviceEntity.ProductType, "", "", "0"); if (table != null && table.Rows.Count > 0) { int count = table.Rows.Count; this.progressBar.Maximum = count; this.progressBar.Value = 0; for (int i = 0; i < count; i++) { DataRow row = table.Rows[i]; ProductBomInfoMDL model = productBomDAL.DataRowToModel(row); bool rst = lProductBomDAL.Add(model); this.progressBar.Value = i; } } } catch (Exception ex) { CLog.WriteErrLog(ex.Message); } }
/// <summary> /// 获取产品BOM信息 /// </summary> private void Select() { try { string sql = " 1=1 "; string method = context.Request.Params["method"].ToString(); string ProductType = context.Request.Params["ProductType"].ToString(); string ProductCode = context.Request.Params["ProductCode"].ToString(); string MaterialCode = context.Request.Params["MaterialCode"].ToString(); string TraceType = context.Request.Params["TraceType"].ToString(); if (!string.IsNullOrEmpty(ProductType)) { sql += string.Format(" AND ProductType = '{0}'", ProductType); } if (!string.IsNullOrEmpty(ProductCode)) { sql += string.Format(" AND ProductCode = '{0}'", ProductCode); } if (!string.IsNullOrEmpty(MaterialCode)) { sql += string.Format(" AND MaterialCode = '{0}'", MaterialCode); } if (!string.IsNullOrEmpty(TraceType)) { if (TraceType == "1") { TraceType = "'扫描追溯'"; } else if (TraceType == "2") { TraceType = "'批次追溯'"; } else { TraceType = "'扫描追溯','批次追溯'"; } sql += string.Format(" AND TraceType in ({0})", TraceType); } if (method == "model") { string TID = context.Request.Params["TID"].ToString(); if (!string.IsNullOrEmpty(TID)) { sql += string.Format(" AND TID = {0}", TID); } ProductBomInfoMDL model = DataDAL.GetModel(sql); if (model != null) { ReturnData.Code = "1"; ReturnData.Msg = "OK"; ReturnData.Data = model; } } else if (method == "search") { sql += " ORDER BY TID ASC"; DataSet set = DataDAL.GetList(sql); if (set != null && set.Tables.Count > 0) { DataTable table = set.Tables[0]; if (table != null && table.Rows.Count > 0) { //object obj = TableHelper.TableToObj(table); ReturnData.Code = "1"; ReturnData.Msg = "OK"; ReturnData.Data = table; } } } } catch (Exception ex) { CLog.WriteErrLog(ex.Message); } }
/// <summary> /// 添加批次信息 /// </summary> private void Insert() { try { //string ProductCode = context.Request.Params["ProductCode"].ToString(); string ProductType = context.Request.Params["ProductType"].ToString(); string MaterialCode = context.Request.Params["MaterialCode"].ToString(); string BatchNo = context.Request.Params["BatchNo"].ToString(); string BatchNumStr = context.Request.Params["BatchNum"].ToString(); string Supplier = context.Request.Params["Supplier"].ToString(); int BatchNum = 0; bool b = int.TryParse(BatchNumStr, out BatchNum); BatchNoMDL Model = null; string sql = string.Format("materialcode='{0}'", MaterialCode); Model = DataDAL.GetModel(sql); if (Model != null) { Model.BatchNo = BatchNo; Model.BatchNum = (b && BatchNum > 0) ? BatchNum : Model.BatchNum; Model.StockNum = Model.BatchNum; Model.Supplier = Supplier; this.Update(Model); return; } else { Model = new BatchNoMDL(); sql = string.Format("producttype='{0}' AND materialcode='{1}'", ProductType, MaterialCode); ProductBomInfoDAL pb = new ProductBomInfoDAL(); ProductBomInfoMDL info = pb.GetModel(sql); if (b && BatchNum > 0) { Model.BatchNum = BatchNum; } else { if (info != null || info.BatchNum.ToString().Trim() != "") { Model.BatchNum = int.Parse(info.BatchNum.ToString()); } else { Model.BatchNum = 1; } } Model.StockNum = Model.BatchNum; Model.MaterialCode = MaterialCode; Model.MaterialName = info.MaterialName; Model.BatchNo = BatchNo; Model.Supplier = Supplier; bool flag = DataDAL.Add(Model); if (flag) { ReturnData.Code = "1"; ReturnData.Msg = "OK"; } BatchNoHisDAL HisDAL = new BatchNoHisDAL(); BatchNoHisMDL HisModel = new BatchNoHisMDL(); HisModel.MaterialCode = Model.MaterialCode; HisModel.BatchNo = BatchNo; HisModel.BatchNum = Model.BatchNum; HisModel.Supplier = Model.Supplier; HisModel.CreateTime = DateTime.Now; flag = HisDAL.Add(HisModel); } } catch (Exception ex) { CLog.WriteErrLog(ex.Message + ex.StackTrace); } }
/// <summary> /// 防错追溯,将信息添加到数据库 /// </summary> private void ScanResultToDb() { try { if (resultModel != null) { bool rst = false; if (!BaseVariable.NetworkStatus || !BaseVariable.ServerStatus) //离线状态 { resultModel.createtime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); PedalResultMDL IsExistLocal = lResultDAL.GetModel(string.Format("barcode='{0}' and productcode='{1}'", this.txtHJCode.Text, this.txtProductCode.Text)); if (IsExistLocal != null && !IsExistLocal.tid.ToString().Equals("0")) { resultModel.tid = IsExistLocal.tid; string sql = DataExistToDb(false); rst = LocalDbDAL.ExecuteSql(sql); //存到本地数据库 } else { rst = lResultDAL.Add(resultModel); //添加到本地数据库 } } else //在线状态 { //添加批量追溯信息 GetBatchInfoToModel(); //同步到数据库:在没有同步到远程数据库时记录到本地数据库 #region 步到数据库 resultModel.createtime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); rst = false; //更新到远程服务器数据库是否成功 PedalResultMDL IsExistRomote = resultDAL.GetModel(string.Format("barcode='{0}' and productcode='{1}'", this.txtHJCode.Text, this.txtProductCode.Text)); //更新到远程服务器数据库 if (IsExistRomote != null && !IsExistRomote.tid.ToString().Equals("0")) { resultModel.tid = IsExistRomote.tid; resultModel.createtime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //封装更新字段 string sql = DataExistToDb(true); //sql += string.Format("CreateTime='{0}',", resultModel.CreateTime); rst = CommonDAL.ExecuteSql(sql, null); //存到远程服务器数据库 } else { rst = resultDAL.Add(resultModel); //添加到远程服务器数据库 } //更新到本地数据库 //rst = false; if (!rst) { PedalResultMDL IsExistLocal = lResultDAL.GetModel(string.Format("barcode='{0}' and productcode='{1}'", this.txtHJCode.Text, this.txtProductCode.Text)); if (IsExistLocal != null && !IsExistLocal.tid.ToString().Equals("0")) { resultModel.tid = IsExistLocal.tid; string sql = DataExistToDb(true); rst = LocalDbDAL.ExecuteSql(sql); //存到本地数据库 } else { rst = lResultDAL.Add(resultModel); //添加到本地数据库 } } //批次材料数量更新 foreach (DictionaryEntry item in RemoteMaterialHT) // 遍历哈希表 { string code = item.Key.ToString(); ProductBomInfoMDL obj = item.Value as ProductBomInfoMDL; //var obj = item.Value; BatchNoMDL model = LocalMaterialHT[code] as BatchNoMDL; model.StockNum -= obj.MaterialNum; batchDAL.Update(model); //更新数据 } #endregion if (rst) { this.lblOK.Text = "OK"; this.lblOK.ForeColor = Color.Green; } else { this.lblOK.Text = "NG"; this.lblOK.ForeColor = Color.Red; } BatchChangeTip(); //批次数量提示 } } else { this.Tip("记录错误"); } } catch (Exception ex) { CLog.WriteErrLog("[FrmScan.ScanResultToDB]" + ex.Message); } }