/// <summary> /// 从未完成装箱的Pallet中,按照Carton的条码获得状态为0(未完成)的Pallet条码 /// </summary> /// <param name="carton_no"></param> /// <returns></returns> public TPCResult <string> GetPalletNoByCartonNo(string carton_no) { TPCResult <string> result = new TPCResult <string>(); string sql = "select pallet_id from pnt_pallet where carton_id = @code and (status = 0 or status = 1)"; List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@code", DbType.AnsiString, carton_no)); TPCResult <DataTable> dt = Database.Query(sql, parameters); if (dt.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = dt.Message; return(result); } if (dt.Value.Rows.Count == 0) { result.State = RESULT_STATE.NG; result.Message = string.Format("Not found pallet id by carton id:{0}", carton_no); return(result); } result.Value = dt.Value.Rows[0]["pallet_id"].ToString(); return(result); }
/// <summary> /// 从未完成捆包的Pack中,按照Tray的条码获得状态为0(未完成)的Pack条码 /// 为了方便增加status为1的也取出,但是不能重新打印标签,必须通过重新打印 /// 画面打印 /// </summary> /// <param name="tray_no"></param> /// <returns></returns> public TPCResult <string> GetPackNoByTrayNo(string tray_no) { TPCResult <string> result = new TPCResult <string>(); string sql = "select pack_id from pnt_pack where tray_id = @tray and (status = 0 or status = 1)"; List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@tray", DbType.AnsiString, tray_no)); TPCResult <DataTable> dt = Database.Query(sql, parameters); if (dt.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = dt.Message; return(result); } if (dt.Value.Rows.Count == 0) { result.State = RESULT_STATE.NG; result.Message = string.Format("Not found pack id by tray id:{0}", tray_no); return(result); } result.Value = dt.Value.Rows[0]["pack_id"].ToString(); return(result); }
/// <summary> /// 检索以装盘的carton信息 /// </summary> /// <param name="pallet_no">pallet Code</param> /// <returns></returns> public TPCResult <List <CItem> > GetPalletedItems(string pallet_no) { TPCResult <List <CItem> > result = new TPCResult <List <CItem> >(); string sql = "select pallet_id, carton_id, p_date, status from pnt_pallet where pallet_id = @pallet_no and (status = 0 or status = 1) order by carton_id"; List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@pallet_no", DbType.AnsiString, pallet_no)); TPCResult <DataTable> dt = Database.Query(sql, parameters); if (dt.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = dt.Message; return(result); } result.Value = new List <CItem>(); foreach (DataRow row in dt.Value.Rows) { CItem item = new CItem(); item.PCode = row["pallet_id"].ToString(); item.Code = row["carton_id"].ToString(); item.Date = Convert.ToDateTime(row["p_date"]); item.Status = Convert.ToInt32(row["status"]); result.Value.Add(item); } return(result); }
/// <summary> /// 拆包只针对已经完成的 /// </summary> /// <param name="pcode"></param> /// <returns></returns> public TPCResult <List <CItem> > GetItemsByPCode(string pcode) { TPCResult <List <CItem> > result = new TPCResult <List <CItem> >(); string sql = "select name, pcode, ccode, p_date, status from vw_packing where pcode = @pcode " + "and status = 1 " + "order by ccode"; List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@pcode", DbType.AnsiString, pcode)); TPCResult <DataTable> dt = Database.Query(sql, parameters); if (dt.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = dt.Message; return(result); } result.Value = new List <CItem>(); foreach (DataRow row in dt.Value.Rows) { CItem item = new CItem(); item.Name = row["name"].ToString(); item.PCode = row["pcode"].ToString(); item.Code = row["ccode"].ToString(); item.Date = Convert.ToDateTime(row["p_date"]); item.Status = Convert.ToInt32(row["status"]); result.Value.Add(item); } return(result); }
/// <summary> /// 申请新编号 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btApply_Click(object sender, EventArgs e) { //如果前面还有装箱,则先检测是否打印过标签 if (!CanPacking()) { return; } //预约新号 TPCResult <bool> result = m_Model.ApplyNewCode(); if (result.State == RESULT_STATE.NG) { MessageBox.Show(result.Message, "ERROR", MessageBoxButtons.OK); return; } //只有在父No有值时,才能扫描子No txtCNo.ReadOnly = false; txtCNo.Focus(); //防止重复提交 btApply.Enabled = false; txtQty.Text = "0"; }
/// <summary> /// 更新管理表信息 /// </summary> /// <param name="mode">模式:pack, carton, pallet</param> /// <param name="id">箱id</param> /// <param name="user">用户</param> /// <param name="qty">装箱数量</param> /// <param name="action">操作:r=register; c=cancel</param> /// <param name="status">状态:0=BEGIN;1=COMPLETED;2=CANCELED</param> /// <returns></returns> public TPCResult <bool> SetManagerData(PACK_MODE mode, string id, string user, int qty, PACK_ACTION action, PACK_STATUS status) { TPCResult <bool> result = new TPCResult <bool>(); //设定mode string[] MODE_NAME = new string[] { "pack", "carton", "pallet" }; string mode_name = MODE_NAME[(int)mode]; //设定act string[] ACTION_NAME = new string[] { "r", "c" }; string act = ACTION_NAME[(int)action]; string sql = "insert into pnt_mng (pkg_id, pkg_type, act, pkg_date, pkg_qty, pkg_user, pkg_status)" + " values (@id, @type, @act, @date, @qty, @user, @status)"; List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@id", DbType.AnsiString, id)); parameters.Add(new DbParameter("@type", DbType.AnsiString, mode_name)); parameters.Add(new DbParameter("@act", DbType.AnsiString, act)); parameters.Add(new DbParameter("@date", DbType.DateTime, DateTime.Now)); parameters.Add(new DbParameter("@qty", DbType.Int32, qty)); parameters.Add(new DbParameter("@status", DbType.Int32, (int)status)); parameters.Add(new DbParameter("@user", DbType.AnsiString, user)); result = Database.Execute(sql, parameters); return(result); }
public override TPCResult <bool> ScanCCode(string code) { TPCResult <bool> result = new TPCResult <bool>(); if (CheckQuantityIsFull()) { result.Message = LabelPrintGlobal.ShowWarningMessage("QUANTITY_FULL_ERROR"); result.State = RESULT_STATE.NG; return(result); } if (!CheckCNo(code, false)) { result.State = RESULT_STATE.NG; result.Message = LanguageMapping.Instance.GetWarnningMessage(LabelPrintGlobal.g_LanguageConfig, "PACK_CODE_ERROR", LabelPrintGlobal.g_Language); return(result); } //将子项加入数据库中 string carton_no = Parent.PNoEdit.Text; DateTime time = DateTime.Now; result = Database.WriteCartonPack(carton_no, code, time); if (result.State == RESULT_STATE.NG) { return(result); } //将子项加入列表中 AddItem(code, time); //计数器更新 Parent.QTYEdit.Text = string.Format("{0}", Parent.ItemsListView.Items.Count); return(result); }
/// <summary> /// 深度拆包,按照顶级项目全部拆包掉用 /// </summary> /// <param name="mode"></param> /// <param name="code"></param> /// <param name="username"></param> /// <returns></returns> public TPCResult <bool> UnpackItemByDeep(string mode, string code, string username) { TPCResult <bool> result = new TPCResult <bool>(); int qty = GetQuantityByMode(mode); if (qty == -1) { result.State = RESULT_STATE.NG; result.Message = string.Format("Not found quantity in this mode:{0}", mode); return(result); } List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@mode", DbType.AnsiString, mode)); parameters.Add(new DbParameter("@code", DbType.AnsiString, code)); parameters.Add(new DbParameter("@qty", DbType.Int32, qty)); parameters.Add(new DbParameter("@user", DbType.AnsiString, username)); TPCResult <string> ret = Database.ExecuteSP("fn_deep_unpack", parameters); if (ret.State == RESULT_STATE.NG) { result.Message = ret.Message; result.State = RESULT_STATE.NG; return(result); } return(result); }
/// <summary> /// 检查pallet code是否合法 /// 这里主要用于重新装箱时,扫描已装pallet编码 /// 所以需要从pnt_pallet中查找该编号是否存在 /// </summary> /// <param name="pack_no">carton编码</param> /// <returns></returns> public TPCResult <bool> CheckPalletNo(string pallet_no, bool is_repack) { //这里预留接口,目前不需要实现,因为没有实际应用 TPCResult <bool> result = new TPCResult <bool>(); result.Value = true; return(result); }
/// <summary> /// 执行带参数的SQL语句 /// </summary> /// <param name="sql">SQL文</param> /// <param name="parameters">参数列表</param> /// <returns>执行成功与否</returns> public TPCResult <bool> Execute(string sql, List <DbParameter> parameters) { TPCResult <bool> result = new TPCResult <bool>(); //打开连接 if (!Open()) { TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_ERROR, "Open Database Failed."); result.State = RESULT_STATE.NG; result.Message = "Open Database Failed."; return(result); } try { //构造数据库指令 IDbCommand cmd = CreateCommand(sql); if (cmd == null) { result.State = RESULT_STATE.NG; result.Message = "Create SQL Command Failed."; return(result); } //构造数据库指令执行的参数列表 StringBuilder param_logger = new StringBuilder(); foreach (DbParameter param in parameters) { IDbDataParameter dp = cmd.CreateParameter(); dp.DbType = param.DbType; dp.ParameterName = param.ParamName; dp.Value = param.Value; if (param_logger.Length > 0) { param_logger.Append(","); } param_logger.Append(string.Format("{{ParamName:{0}, DbType:{1}, Value:{2}. }}", param.ParamName, param.DbType.ToString(), (param.Value == null) ? "NULL" : param.Value.ToString())); cmd.Parameters.Add(dp); } TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_INFORMATION, string.Format("Execute SQL:{0} Params:{1}", sql, param_logger.ToString())); //执行SQL cmd.ExecuteNonQuery(); result.Value = true; return(result); } catch (Exception e) { TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_ERROR, e.Message); result.State = RESULT_STATE.NG; result.Message = e.Message; return(result); } finally { Close(); } }
private void btOK_Click(object sender, EventArgs e) { //如果没有选择任何拆包的明细,则不允许确定 if (!CheckUnpack()) { return; } if (IsDeepCancel()) { if (MessageBox.Show(LabelPrintGlobal.ShowWarningMessage("DEEP_CANCELED_WARNNING"), "Warnning", MessageBoxButtons.YesNo) == DialogResult.No) { return; } } List <CItem> items = lstUnpackItems.Tag as List <CItem>; if (items != null) { string name = items[0].Name; string mode = GetModeFromTableName(name); if (IsDeepCancel()) { TPCResult <bool> result = null; //深度拆包 if (is_all_cancel) { result = Database.UnpackItemByDeep(mode, txtUnpackCode.Text, Program.LoginUser); } else { result = Database.UnpackItemByDeep(items, Program.LoginUser); } if (result.State == RESULT_STATE.NG) { MessageBox.Show(result.Message); return; } } else { //单层拆包 TPCResult <bool> result = Database.UnpackItemsBySingle(items, Program.LoginUser); if (result.State == RESULT_STATE.NG) { MessageBox.Show(result.Message); return; } } MessageBox.Show(LabelPrintGlobal.ShowWarningMessage("COMPLETED_UNPACK_INFO")); Close(); } else { MessageBox.Show(LabelPrintGlobal.ShowWarningMessage("NO_ITEM_UNPACK_ERROR")); } }
/// <summary> /// 执行一组SQL语句 /// </summary> /// <param name="sqls">待执行的SQL语句列表</param> /// <returns></returns> public TPCResult <bool> Execute(List <string> sqls) { TPCResult <bool> result = new TPCResult <bool>(); //打开连接 if (!Open()) { TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_ERROR, "Open Database Failed."); result.State = RESULT_STATE.NG; result.Message = "Open Database Failed."; return(result); } //开启事务 IDbTransaction ts = BeginTrans(); try { StringBuilder sql_logger = new StringBuilder(); //遍历SQL语句列表,构建每条语句的数据库指令 foreach (string sql in sqls) { IDbCommand cmd = CreateCommand(sql); if (cmd == null) { result.State = RESULT_STATE.NG; result.Message = "Create SQL Command Failed."; return(result); } cmd.Transaction = ts; if (sql_logger.Length > 0) { sql_logger.Append(","); } sql_logger.Append(string.Format("[{0}]", sql)); cmd.ExecuteNonQuery(); } TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_INFORMATION, string.Format("Execute SQLS : {0}", sql_logger.ToString())); //完成事务 ts.Commit(); result.Value = true; return(result); } catch (Exception e) { ts.Rollback(); TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_ERROR, e.Message); result.State = RESULT_STATE.NG; result.Message = e.Message; return(result); } finally { Close(); } }
/// <summary> /// 执行存储过程并获得结果 /// </summary> /// <param name="name">Postgres 函数名</param> /// <param name="parameters">参数列表</param> /// <returns>存储过程结果</returns> public TPCResult <string> ExecuteSP(string name, List <DbParameter> parameters) { TPCResult <string> result = new TPCResult <string>(); //打开连接 if (!Open()) { TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_ERROR, "Open Database Failed."); result.State = RESULT_STATE.NG; result.Message = "Open Database Failed."; return(null); } try { TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_INFORMATION, string.Format("Execute Function:{0}", name)); //创建SQL指令 IDbCommand cmd = CreateCommand(name); cmd.CommandType = CommandType.StoredProcedure; //构建数据库指令参数列表 StringBuilder param_logger = new StringBuilder(); foreach (DbParameter param in parameters) { IDbDataParameter dp = cmd.CreateParameter(); dp.ParameterName = param.ParamName; dp.DbType = param.DbType; dp.Value = param.Value; cmd.Parameters.Add(dp); if (param_logger.Length > 0) { param_logger.Append(","); } param_logger.Append(string.Format("{{ParamName:{0}, DbType:{1}, Value:{2}. }}", param.ParamName, param.DbType.ToString(), (param.Value == null) ? "NULL" : param.Value.ToString())); } TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_INFORMATION, string.Format("\t\tParameters:{0}", param_logger.ToString())); IDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { result.Value = dr.IsDBNull(0) ? "" : dr.GetValue(0).ToString(); } return(result); } catch (Exception e) { TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_ERROR, e.Message); result.State = RESULT_STATE.NG; result.Message = e.Message; return(result); } finally { Close(); } }
/// <summary> /// 检查Pack编码是否合法 /// </summary> /// <param name="code"></param> /// <returns></returns> private bool CheckCNo(string code, bool is_repack) { TPCResult <bool> result = Database.CheckPackNo(code, is_repack); if (result.State == RESULT_STATE.NG) { return(false); } return(result.Value); }
public override TPCResult <System.Data.DataTable> CheckBin(string code) { TPCResult <System.Data.DataTable> result = new TPCResult <System.Data.DataTable>(); result = Database.CheckBin(code); if (result.State == RESULT_STATE.NG) { return(result); } return(result); }
/// <summary> /// 子编号编辑框,收到扫描条码事件 /// 增加子项到列表中,并保存到数据库 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void txtCNo_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Return) { #region 20190522增加针对KK04输入箱号的bin检查 string code0 = txtCNo.Text; if (LabelPrintGlobal.g_Config.Switch.Equals("ON"))//配置文件开关时"ON"时启用 { //string mode = code0.Substring(13, 1); //if (mode == "P") //{ TPCResult <DataTable> checkBin = m_Model.CheckBin(code0); if (checkBin.State == RESULT_STATE.NG) { MessageBox.Show(checkBin.Message); return; } string bin = LabelPrintGlobal.g_Config.Bin; //配置文件bin的对比 //检查bin是否ok if (checkBin.Value.Rows.Count != 1 || checkBin.Value.Rows[0][0].ToString() != bin) { MessageBox.Show("该箱存在马达Bin不匹配", "马达Bin检查:", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //MessageBox.Show(checkBin.Value.Rows[0][0].ToString()); } #endregion string code = CNoEdit.Text; //这里增加限制,如果父项条码没有预约,则不允许扫描 if (txtPNo.Text.Length == 0) { MessageBox.Show(LabelPrintGlobal.ShowWarningMessage("NO_PARENT_SCAN_ERROR"), "WARNNING", MessageBoxButtons.OK); return; } //回车键,这里默认条码扫描后自带回车键 TPCResult <bool> result = m_Model.ScanCCode(code); if (result.State == RESULT_STATE.NG) { MessageBox.Show(result.Message); return; } CNoEdit.Text = ""; //只有至少一个子项输入才能再次预约 btApply.Enabled = true; //开始扫描子项后,不允许修改总数 //txtTotal.Enabled = false; } }
/// <summary> /// 通过数据库计算module数量 /// </summary> /// <param name="mode"></param> /// <param name="code"></param> /// <returns></returns> public TPCResult <int> GetModuleCount(PACK_MODE mode, string code) { TPCResult <int> result = new TPCResult <int>(); string sql = ""; switch (mode) { case PACK_MODE.Pack: sql = "select count(m.module_id) as qty from t_module m, pnt_pack p" + " where p.tray_id = m.tray_id and p.pack_id = @code " + "and p.status = 1"; break; case PACK_MODE.Carton: sql = "select count(m.module_id) as qty from t_module m, pnt_pack p, pnt_carton c " + "where c.pack_id = p.pack_id and p.tray_id = m.tray_id and c.carton_id = @code " + "and (p.status = 1 and c.status = 1)"; break; case PACK_MODE.Pallet: sql = "select count(m.module_id) as qty from t_module m, pnt_pack p, pnt_carton c, pnt_pallet l " + "where l.carton_id = c.carton_id and c.pack_id = p.pack_id and p.tray_id = m.tray_id and l.pallet_id = @code " + "and (p.status = 1 and c.status = 1 and l.status = 1)"; break; } List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@code", DbType.AnsiString, code)); TPCResult <DataTable> dt = Database.Query(sql, parameters); if (dt.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = dt.Message; return(result); } int qty = 0; if (!int.TryParse(dt.Value.Rows[0]["qty"].ToString(), out qty)) { result.State = RESULT_STATE.NG; result.Message = "Get module count failed."; return(result); } result.Value = qty; return(result); }
/// <summary> /// 通过数据库计算lot总数量 /// </summary> /// <param name="mode"></param> /// <param name="code"></param> /// <returns></returns> public TPCResult <int> GetLotTotal(PACK_MODE mode, string code) { TPCResult <int> result = new TPCResult <int>(); string sql = ""; switch (mode) { case PACK_MODE.Pack: sql = "select count(lot) as qty from t_module left join pnt_pack on t_module.tray_id = pnt_pack.tray_id " + "where pack_id = @code "; break; case PACK_MODE.Carton: sql = "select count(lot) as qty from t_module left join pnt_pack on t_module.tray_id = pnt_pack.tray_id " + "left join pnt_carton on pnt_pack.pack_id = pnt_carton.pack_id " + "where carton_id = @code "; break; case PACK_MODE.Pallet: sql = "select count(lot) as qty from t_module left join pnt_pack on t_module.tray_id = pnt_pack.tray_id " + "left join pnt_carton on pnt_pack.pack_id = pnt_carton.pack_id " + "left join pnt_pallet on pnt_carton.carton_id = pnt_pallet.carton_id " + "where pallet_id = @code "; break; } List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@code", DbType.AnsiString, code)); TPCResult <DataTable> dt = Database.Query(sql, parameters); if (dt.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = dt.Message; return(result); } int qty = 0; if (!int.TryParse(dt.Value.Rows[0]["qty"].ToString(), out qty)) { result.State = RESULT_STATE.NG; result.Message = "Get module count failed."; return(result); } result.Value = qty; return(result); }
private void btOK_Click(object sender, EventArgs e) { GetData(); TPCResult <bool> result = LabelPrintGlobal.g_Config.SaveConfig(LabelPrintGlobal.g_ConfigFile); if (result.State == RESULT_STATE.NG) { MessageBox.Show(result.Message); return; } Close(); }
/// <summary> /// 检查Tray编码是否合法 /// </summary> /// <param name="code"></param> /// <returns></returns> private bool CheckCNo(string code, bool is_repack) { //检查数据库该tray是否合法 //1。在module表中存在 //2。在pack表中不存在状态为0或1的 TPCResult <bool> result = Database.CheckTrayNo(code, is_repack); if (result.State == RESULT_STATE.NG) { return(false); } return(result.Value); }
/// <summary> /// 通过SQL语句查询数据库内容 /// </summary> /// <param name="sql">SQL语句</param> /// <returns>查询的数据结果列表</returns> public TPCResult <DataTable> Query(string sql) { TPCResult <DataTable> result = new TPCResult <DataTable>(); //打开连接 if (!Open()) { TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_ERROR, "Open Database Failed."); result.State = RESULT_STATE.NG; result.Message = "Open Database Failed."; return(result); } try { TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_INFORMATION, string.Format("Execute SQL:{0}", sql)); //创建SQL指令 IDbCommand cmd = CreateCommand(sql); //创建数据适配器 IDbDataAdapter da = m_Creator.CreateDataAdapter(); da.SelectCommand = cmd; //执行查询并将结果填入DataSet DataSet ds = new DataSet(); da.Fill(ds); if (ds.Tables.Count == 0) { TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_ERROR, "Execute query failed."); result.State = RESULT_STATE.NG; result.Message = "Execute query failed."; return(result); } result.Value = ds.Tables[0]; return(result); } catch (Exception e) { TPCLogger.Instance.Write(LOGGER_TYPE.LOGGER_ERROR, e.Message); result.State = RESULT_STATE.NG; result.Message = e.Message; return(result); } finally { Close(); } }
private void txtCode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Return) { //从数据库综合视图vw_packing中读取条码的有效性和所属模式 string code = txtCode.Text; TPCResult <List <CItem> > items = Database.GetItemsByPCode(code); if (items.State == RESULT_STATE.NG) { MessageBox.Show(items.Message); return; } FillItems(items.Value); } }
/// <summary> /// 完成装盘,将数据状态设置为完成 /// </summary> /// <param name="items"></param> /// <returns></returns> public TPCResult <bool> CompletedPallet(List <CItem> items) { TPCResult <bool> result = new TPCResult <bool>(); List <string> sqls = new List <string>(); foreach (CItem item in items) { string sql = "update pnt_pallet set status = 1 where pallet_id = '" + item.PCode + "' and carton_id = '" + item.Code + "'"; sqls.Add(sql); } result = Database.Execute(sqls); return(result); }
/// <summary> /// 捆包时,扫描了Tray后,将记录写入数据库 /// 状态为0(未完成) /// </summary> /// <param name="pack_no"></param> /// <param name="tray_no"></param> /// <param name="p_date"></param> /// <returns></returns> public TPCResult <bool> WritePackTray(string pack_no, string tray_no, DateTime p_date) { TPCResult <bool> result = new TPCResult <bool>(); string sql = "insert into pnt_pack values (@packid, @trayid, @pdate, 0)"; List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@packid", DbType.AnsiString, pack_no)); parameters.Add(new DbParameter("@trayid", DbType.AnsiString, tray_no)); parameters.Add(new DbParameter("@pdate", DbType.DateTime, p_date)); result = Database.Execute(sql, parameters); return(result); }
/// <summary> /// 装盘时,扫描了Carton后,将记录写入数据库 /// 状态为0(未完成) /// </summary> /// <param name="pallet_no"></param> /// <param name="carton_no"></param> /// <param name="p_date"></param> /// <returns></returns> public TPCResult <bool> WritePalletCarton(string pallet_no, string carton_no, DateTime p_date) { TPCResult <bool> result = new TPCResult <bool>(); string sql = "insert into pnt_pallet values (@palletid, @cartonid, @pdate, 0)"; List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@palletid", DbType.AnsiString, pallet_no)); parameters.Add(new DbParameter("@cartonid", DbType.AnsiString, carton_no)); parameters.Add(new DbParameter("@pdate", DbType.DateTime, p_date)); result = Database.Execute(sql, parameters); return(result); }
protected override void OnLoad(EventArgs e) { InitLanguage(); TPCResult <bool> result = LabelPrintGlobal.g_Config.LoadConfig(LabelPrintGlobal.g_ConfigFile); if (result.State == RESULT_STATE.NG) { MessageBox.Show(result.Message); Close(); return; } SetData(); }
/// <summary> /// 根据不同模式,关键词及日期,申请新的编号 /// </summary> /// <param name="mode">模式:pack, carton, pallet</param> /// <param name="vendor">关键词</param> /// <param name="site_code"></param> /// <param name="date">日期</param> /// <param name="username"></param> /// <returns></returns> public TPCResult <string> ApplyNewCode(string mode, string vendor, string site_code, string date, int qty, string username) { List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@mode", DbType.AnsiString, mode)); parameters.Add(new DbParameter("@vendor", DbType.AnsiString, vendor)); parameters.Add(new DbParameter("@sitecode", DbType.AnsiString, site_code)); parameters.Add(new DbParameter("@date", DbType.AnsiString, date)); //日期参数要修改 //TPCResult<string> result = Database.ExecuteSP("fn_apply_no", parameters); TPCResult <string> result = Database.ExecuteSP("fn_apply_no", parameters); if (result == null) { result = new TPCResult <string>(); result.State = RESULT_STATE.NG; result.Message = "Execute function fn_apply_no failed."; return(result); } if (result.State == RESULT_STATE.NG) { return(result); } //成功生成ID,则需要加入管理表记录 string sql = "insert into pnt_mng (pkg_id, pkg_type, act, pkg_date, pkg_qty, pkg_user, pkg_status, remark) " + "values (@id, @type, @act, @date, @qty, @user, @status, @remark)"; parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@id", DbType.AnsiString, result.Value)); parameters.Add(new DbParameter("@type", DbType.AnsiString, mode)); parameters.Add(new DbParameter("@act", DbType.AnsiString, "r")); parameters.Add(new DbParameter("@date", DbType.DateTime, DateTime.Now)); parameters.Add(new DbParameter("@qty", DbType.Int32, qty)); parameters.Add(new DbParameter("@user", DbType.AnsiString, username)); parameters.Add(new DbParameter("@status", DbType.Int32, 0)); parameters.Add(new DbParameter("@remark", DbType.AnsiString, "")); TPCResult <bool> ret = Database.Execute(sql, parameters); if (ret.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = ret.Message; } return(result); }
/// <summary> /// 检查carton code是否合法 /// 这里主要用于重新装箱时,扫描已装carton编码 /// 所以需要从pnt_carton中查找该编号是否存在 /// </summary> /// <param name="pack_no">carton编码</param> /// <returns></returns> public TPCResult <bool> CheckCartonNo(string carton_no, bool is_repack) { TPCResult <bool> result = new TPCResult <bool>(); //1. 检查在carton表中是否存在且状态为1(已完成) string sql = "select count(carton_id) as qty from pnt_carton where carton_id = @code and status = 1"; List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@code", DbType.AnsiString, carton_no)); TPCResult <DataTable> dt = Database.Query(sql, parameters); if (dt.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = dt.Message; return(result); } int qty = Convert.ToInt32(dt.Value.Rows[0]["qty"]); if (qty == 0) { result.Value = false; return(result); } //2. 检查在pallet表中是否不存在且状态为0或1 sql = "select count(carton_id) as qty from pnt_pallet where carton_id = @code and (status = 0 or status = 1)"; dt = Database.Query(sql, parameters); if (dt.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = dt.Message; return(result); } qty = Convert.ToInt32(dt.Value.Rows[0]["qty"]); if (is_repack) { result.Value = (qty > 0); } else { result.Value = (qty == 0); } return(result); }
protected override void OnLoad(EventArgs e) { //初始化标签打印模块 string config = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\label.xml"; if (!LabelPrintGlobal.g_LabelCreator.LoadConfig(config)) { MessageBox.Show(LabelPrintGlobal.ShowWarningMessage("LABEL_PRINT_INIT_ERROR"), "ERROR", MessageBoxButtons.OK); Close(); return; } //基础配置文件 LabelPrintGlobal.g_ConfigFile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\config.xml"; TPCResult <bool> rt = LabelPrintGlobal.g_Config.LoadConfig(LabelPrintGlobal.g_ConfigFile); if (rt.State == RESULT_STATE.NG) { MessageBox.Show(rt.Message); Close(); return; } ///初始化三种模式 #region 初始化三种模式 m_Pack = new PackModel(m_PackingForm); m_Carton = new CartonModel(m_PackingForm); m_Pallet = new PalletModel(m_PackingForm); m_Pack.Database = m_DatabseHelper; m_Carton.Database = m_DatabseHelper; m_Pallet.Database = m_DatabseHelper; m_Pack.CodeKey = "BM004HK1-1"; m_Carton.CodeKey = "BM004HK1-1"; m_Pallet.CodeKey = "BM004HK1-1"; #endregion m_PackingForm.Model = m_Pack; m_PackingForm.Show(); InitLanguage(); InitAuth(); ShowMode(PACK_MODE.Pack); }
/// <summary> /// 检查tray code是否合法 /// 这里主要用于重新捆包时,扫描已装tray编码 /// 所以需要从t_module中查找该编号是否存在 /// </summary> /// <param name="tray_no"></param> /// <param name="is_repack"></param> /// <returns></returns> public TPCResult <bool> CheckTrayNo(string tray_no, bool is_repack) { TPCResult <bool> result = new TPCResult <bool>(); //1。在module表中是否存在 string sql = "select count(tray_id) as qty from t_module where tray_id = @code"; List <DbParameter> parameters = new List <DbParameter>(); parameters.Add(new DbParameter("@code", DbType.AnsiString, tray_no)); TPCResult <DataTable> dt = Database.Query(sql, parameters); if (dt.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = dt.Message; return(result); } int qty = Convert.ToInt32(dt.Value.Rows[0]["qty"]); if (qty == 0) { result.Value = false; return(result); } //2。在pack表中不存在状态为0或1的 sql = "select count(tray_id) as qty from pnt_pack where tray_id = @code and (status = 0 or status = 1)"; dt = Database.Query(sql, parameters); if (dt.State == RESULT_STATE.NG) { result.State = RESULT_STATE.NG; result.Message = dt.Message; return(result); } qty = Convert.ToInt32(dt.Value.Rows[0]["qty"]); if (is_repack) { result.Value = (qty > 0); } else { result.Value = (qty == 0); } return(result); }