Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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";
        }
Exemplo n.º 6
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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        /// <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);
        }
Exemplo n.º 9
0
        /// <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);
        }
Exemplo n.º 10
0
        /// <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();
            }
        }
Exemplo n.º 11
0
        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"));
            }
        }
Exemplo n.º 12
0
        /// <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();
            }
        }
Exemplo n.º 13
0
        /// <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();
            }
        }
Exemplo n.º 14
0
        /// <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);
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        /// <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;
            }
        }
Exemplo n.º 17
0
        /// <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);
        }
Exemplo n.º 18
0
        /// <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);
        }
Exemplo n.º 19
0
        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();
        }
Exemplo n.º 20
0
        /// <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);
        }
Exemplo n.º 21
0
        /// <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();
            }
        }
Exemplo n.º 22
0
 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);
     }
 }
Exemplo n.º 23
0
        /// <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);
        }
Exemplo n.º 24
0
        /// <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);
        }
Exemplo n.º 25
0
        /// <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);
        }
Exemplo n.º 26
0
        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();
        }
Exemplo n.º 27
0
        /// <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);
        }
Exemplo n.º 28
0
        /// <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);
        }
Exemplo n.º 29
0
        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);
        }
Exemplo n.º 30
0
        /// <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);
        }