Пример #1
0
 /// <summary>
 /// 检测指定的lotid是否存在
 /// </summary>
 /// <param name="lotId">样板批量卡序号</param>
 /// <param name="tran">在指定事务中执行查询</param>
 /// <returns></returns>
 internal static bool IsExistSampleLotId(string strLotId, SqlTransaction tran)
 {
     //检测样板批量卡id号是否存在于sample所开的样板批量卡记录中
     using (var da = new t_sample_lot_cardTableAdapter())
     {
         if (tran != null)
         {
             //当前数据库连接
             da.Connection = tran.Connection;
             //设置事务
             da.Transaction = tran;
         }
         //获取数据
         using (var tab = da.GetDataByLotId(strLotId))
         {
             //lotid号存在提示错误
             if (tab.Rows.Count > 0)
             {
                 //报告失败
                 throw new Exception("待保存的样板批量卡号 " + strLotId + " 已经存在于样板批量卡记录中!");
             }
         }
     }
     //检测样板批量卡id号是否存在于样板wip记录中
     using (var da = new t_proc_lot_card_balanceTableAdapter())
     {
         if (tran != null)
         {
             //当前数据库连接
             da.Connection = tran.Connection;
             //设置事务
             da.Transaction = tran;
         }
         //获取数据
         using (var tab = da.GetFirstRowByLotId(strLotId))
         {
             //lotid号存在提示错误
             if (tab.Rows.Count > 0)
             {
                 //报告失败
                 throw new Exception("待保存的样板批量卡号 " + strLotId + " 已经存在于样板wip记录中!");
             }
         }
     }
     //返回不存在
     return false;
 }
Пример #2
0
        /// <summary>
        /// 根据输入的参数保存到数据库
        /// </summary>
        /// <param name="e">传入的带有数据的事件参数</param>
        /// <returns></returns>
        private bool UpdateData(FormViewUpdateEventArgs e)
        {
            //数据适配器
            //当前添加语句对象
            //当前数据库连接
            using (var da = new t_proc_lot_card_balanceTableAdapter())
            using (var daChange = new t_proc_lot_card_balance_changeTableAdapter())
            using (var cmd = da.Adapter.InsertCommand)
            using (var conn = cmd.Connection)
            {
                //打开数据库连接
                conn.Open();
                //设置数据库连接
                da.Connection = daChange.Connection = cmd.Connection = conn;
                //开启事务
                using (var tran = conn.BeginTransaction())
                {
                    //设置事务
                    da.Transaction = daChange.Transaction = cmd.Transaction = tran;
                    //试运行
                    try
                    {
                        //执行保存数据
                        if (da.UpdateData(
                            e.NewValues["prev_proc_name"].ToString(),
                            e.NewValues["proc_name"].ToString(),
                            e.NewValues["lot_id"].ToString(),
                            e.NewValues["product_num"].ToString(),
                            Convert.ToInt32(e.NewValues["pnl_qty"]),
                            Convert.ToInt32(e.NewValues["pcs_qty"]),
                            e.NewValues["remark"] == null ? null : e.NewValues["remark"].ToString(),
                            e.NewValues["add_person"].ToString(),
                            Convert.ToDateTime(e.NewValues["add_time"]),
                            Convert.ToDateTime(e.NewValues["last_change_time"]),
                            e.NewValues["accept_person"] == null ? null : e.NewValues["accept_person"].ToString(),
                            e.NewValues["accept_time"] == null ? null : (DateTime?)e.NewValues["accept_time"],
                            Convert.ToBoolean(e.NewValues["is_complete_wenzi"]),
                            Convert.ToInt64(e.Keys[0])
                        ) <= 0)
                        {
                            //抛出错误
                            throw new Exception("修改部门批量卡结存发生错误!");
                        }
                        //取得一个相关guid
                        var guid = Guid.NewGuid().ToString();
                        //保存到修改记录表
                        if (daChange.InsertData(
                            e.OldValues["prev_proc_name"].ToString(),
                            e.OldValues["proc_name"].ToString(),
                            e.OldValues["lot_id"].ToString(),
                            e.OldValues["product_num"].ToString(),
                            Convert.ToInt32(e.OldValues["pnl_qty"]),
                            Convert.ToInt32(e.OldValues["pcs_qty"]),
                            e.OldValues["remark"] == null ? null : e.OldValues["remark"].ToString(),
                            e.OldValues["add_person"].ToString(),
                            e.OldValues["accept_person"] == null ? null : e.OldValues["accept_person"].ToString(),
                            e.OldValues["accept_time"] == null ? null : (DateTime?)e.OldValues["accept_time"],
                            Convert.ToBoolean(e.OldValues["is_complete_wenzi"]),
                            false,
                            guid
                        ) <= 0)
                        {
                            //抛出错误
                            throw new Exception("添加修改批量卡结存旧数据日志记录发生错误!");
                        }
                        //保存到修改记录表
                        if (daChange.InsertData(
                            e.NewValues["prev_proc_name"].ToString(),
                            e.NewValues["proc_name"].ToString(),
                            e.NewValues["lot_id"].ToString(),
                            e.NewValues["product_num"].ToString(),
                            Convert.ToInt32(e.NewValues["pnl_qty"]),
                            Convert.ToInt32(e.NewValues["pcs_qty"]),
                            e.NewValues["remark"] == null ? null : e.NewValues["remark"].ToString(),
                            e.NewValues["add_person"].ToString(),
                            e.NewValues["accept_person"] == null ? null : e.NewValues["accept_person"].ToString(),
                            e.NewValues["accept_time"] == null ? null : (DateTime?)e.NewValues["accept_time"],
                            Convert.ToBoolean(e.NewValues["is_complete_wenzi"]),
                            true,
                            guid
                        ) <= 0)
                        {
                            //抛出错误
                            throw new Exception("添加修改批量卡结存新数据日志记录发生错误!");
                        }

                        //提交事务
                        tran.Commit();
                        //返回成功
                        return true;
                    }
                    catch (Exception ex)
                    {
                        //回滚事务
                        tran.Rollback();
                        //抛出错误
                        throw new Exception(ex.Message);
                    }
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 根据输入的参数保存到数据库
        /// </summary>
        /// <param name="e">传入的带有数据的事件参数</param>
        /// <returns></returns>
        private bool InsertData(FormViewInsertEventArgs e)
        {
            //数据适配器
            //当前添加语句对象
            //当前数据库连接
            using (var da = new t_proc_lot_card_balanceTableAdapter())
            using (var daChange = new t_proc_lot_card_balance_changeTableAdapter())
            using (var cmd = da.Adapter.InsertCommand)
            using (var conn = cmd.Connection)
            {
                //打开数据库连接
                conn.Open();
                //开启事务
                using (var tran = conn.BeginTransaction())
                {
                    //设置事务
                    da.Transaction = daChange.Transaction = tran;
                    //试运行
                    try
                    {
                        //执行保存数据
                        if (da.Insert(
                            e.Values["prev_proc_name"].ToString(),
                            e.Values["proc_name"].ToString(),
                            e.Values["lot_id"].ToString(),
                            e.Values["product_num"].ToString(),
                            (int)e.Values["pnl_qty"],
                            (int)e.Values["pcs_qty"],
                            e.Values["remark"].ToString(),
                            e.Values["add_person"].ToString(),
                            (DateTime)e.Values["add_time"],
                            (DateTime)e.Values["last_change_time"],
                            e.Values["accept_person"].ToString(),
                            (DateTime?)e.Values["accept_time"],
                            (bool)e.Values["is_complete_wenzi"]
                        ) <= 0)
                        {
                            //抛出错误
                            throw new Exception("添加部门批量卡结存发生错误!");
                        }
                        //取得一个相关guid
                        var guid = Guid.NewGuid().ToString();
                        //保存到修改记录表
                        if (daChange.InsertData(
                            e.Values["prev_proc_name"].ToString(),
                            e.Values["proc_name"].ToString(),
                            e.Values["lot_id"].ToString(),
                            e.Values["product_num"].ToString(),
                            (int)e.Values["pnl_qty"],
                            (int)e.Values["pcs_qty"],
                            e.Values["remark"].ToString(),
                            e.Values["add_person"].ToString(),
                            e.Values["accept_person"].ToString(),
                            (DateTime?)e.Values["accept_time"],
                            (bool)e.Values["is_complete_wenzi"],
                            true,
                            guid
                        ) <= 0)
                        {
                            //抛出错误
                            throw new Exception("添加修改批量卡结存日志记录发生错误!");
                        }

                        //提交事务
                        tran.Commit();
                        //返回成功
                        return true;
                    }
                    catch (Exception ex)
                    {
                        //回滚事务
                        tran.Rollback();
                        //抛出错误
                        throw new Exception(ex.Message);
                    }
                }
            }
        }
Пример #4
0
        /// <summary>
        /// 根据输入的参数在数据库中删除记录
        /// </summary>
        /// <param name="id">待删除的行的序号</param>
        /// <returns></returns>
        private bool DeleteData(Int64 id)
        {
            //数据适配器
            //当前添加语句对象
            //当前数据库连接
            using (var da = new t_proc_lot_card_balanceTableAdapter())
            using (var daChange = new t_proc_lot_card_balance_changeTableAdapter())
            using (var cmd = da.Adapter.InsertCommand)
            using (var conn = cmd.Connection)
            {
                //打开数据库连接
                conn.Open();
                //设置数据库连接
                da.Connection = daChange.Connection = cmd.Connection = conn;
                //开启事务
                using (var tran = conn.BeginTransaction())
                {
                    //设置事务
                    da.Transaction = daChange.Transaction = cmd.Transaction = tran;
                    //试运行
                    try
                    {
                        //提取数据
                        var tab = da.GetDataById(id);
                        //检测数据
                        if (tab.Rows.Count <= 0)
                        {
                            //抛出错误
                            throw new Exception("删除部门批量卡结存发生错误,数据不存在!");
                        }
                        //获取首行数据
                        var row = (DataSetProcLotCardMgr.t_proc_lot_card_balanceRow)tab.Rows[0];
                        //当前用户所在部门
                        string procName = Session["proc_name"].ToString().ToUpper();
                        //当前角色id
                        Int16 roleId = Convert.ToInt16(Session["role_id"]);
                        //检测是否有权限
                        if ((procName != mustProcName && procName != "样板") || roleId < 0 || roleId > 1)
                        {
                            throw new Exception("您没有添加记录权限!");
                        }
                        //当前输入的批量卡序号
                        string lotId = row.lot_id.Trim().ToUpper();
                        //检测是否样板
                        bool isSample = lotId.Contains("S");
                        //检测是否正确批量卡号
                        if (!isSample && !ydOperateLotCard.IsLotCardId(ref lotId))
                        {
                            //非数字返回失败
                            throw new Exception("您输入了一个不合格的批量卡号 " + lotId + " !");
                        }
                        //检测是否正确样板批量卡号
                        if (isSample && !ydOperateSampleLotCard.IsSampleLotCardId(ref lotId))
                        {
                            //非数字返回失败
                            throw new Exception("您输入了一个不合格的样板批量卡号 " + lotId + " !");
                        }
                        //检测lot卡类型
                        if (lotId.Contains("S") && procName != "样板")
                        {
                            throw new Exception("当前只能删除样板批量卡!");
                        }
                        //检测lot卡类型
                        if (!lotId.Contains("S") && procName != "PMC")
                        {
                            throw new Exception("当前只能删除生产板批量卡!");
                        }

                        //执行保存数据
                        if (da.Delete(id) <= 0)
                        {
                            //抛出错误
                            throw new Exception("删除部门批量卡结存发生错误!");
                        }
                        //取得一个相关guid
                        var guid = Guid.NewGuid().ToString();
                        //保存到修改记录表
                        if (daChange.InsertData(
                            row.prev_proc_name,
                            row.proc_name,
                            row.lot_id,
                            row.product_num,
                            row.pnl_qty,
                            row.pcs_qty,
                            row.IsremarkNull() ? null : row.remark,
                            row.add_person,
                            row.Isaccept_personNull() ? null : row.accept_person,
                            row.Isaccept_timeNull() ? null : (DateTime?)row.accept_time,
                            row.is_complete_wenzi,
                            false,
                            guid
                        ) <= 0)
                        {
                            //抛出错误
                            throw new Exception("添加修改批量卡结存旧数据日志记录发生错误!");
                        }
                        //提交事务
                        tran.Commit();
                        //返回成功
                        return true;
                    }
                    catch (Exception ex)
                    {
                        //回滚事务
                        tran.Rollback();
                        //抛出错误
                        throw new Exception(ex.Message);
                    }
                }
            }
        }
Пример #5
0
        //根据传入的参数处理事情
        public void ProcessRequest(HttpContext context)
        {
            //清空之前数据
            context.Response.Clear();
            //检测是否含有session
            if (context.Session.Count < 5)
            {
                //跳转
                context.Response.Redirect("/Account/Login", true);
                //停止加载后续内容
                context.Response.End();
                //直接返回
                return;
            }
            //执行基类的方法
            if (!base.CheckIsLogin(context))
            {
                return;
            }
            //当前使用的查询参数类型
            var parField = ParameterField.None;
            //用户传入的批量卡序号
            string lotId = context.Request["lnum"];
            string productNum = string.Empty;
            //检测批量卡编号
            if (lotId != null && lotId.Length > 0)
            {
                //查询字段类型为生产编号
                parField = ParameterField.LotNum;
                //去掉空格
                lotId = lotId.Trim();
                //检测批量卡号重新设置参数值
                if (!lotId.Contains("-"))
                {
                    //添加减号
                    lotId = "-" + lotId;
                }
                //使用模糊查询
                lotId = "%" + lotId + "%";
            }
            else
            {
                //用户传入的生产编号
                productNum = context.Request["pnum"];
                if (productNum != null && productNum.Length > 0)
                {
                    //查询字段类型为生产编号
                    parField = ParameterField.ProductNum;
                    //设置参数值
                    productNum = "%" + productNum.Trim().ToUpper() + "%";
                }
            }
            //当前未使用特定的三种字段类型之一进行查询则不输出值直接退出
            if (parField == ParameterField.None)
            {
                return;
            }
            //用户传入的部门名称
            string procName = context.Request["proc"];//检测批量卡编号
            if (procName == null || procName.Length == 0)
            {
                //当前用户所在部门名称
                procName = context.Session["proc_name"].ToString();
            }
            //将查询到的结果保存到泛型变量中
            var l = new List<LiItem>();
            //数据适配器
            using (var da = new t_proc_lot_card_balanceTableAdapter())
            {
                //批量卡结存表
                DataSetProcLotCardMgr.t_proc_lot_card_balanceDataTable tab;
                //使用批量卡编号进行查询
                if (parField == ParameterField.LotNum)
                {
                    //获取数据
                    tab = da.GetDataLikeProcNameAndLotId(procName, lotId);
                }
                else
                {
                    //获取数据
                    tab = da.GetDataLikeProcNameAndProductNum(procName, productNum);
                }
                //获取单据数据
                AddBalanceLotListItem(tab, ref l);
            }
            //待输出到浏览器的数据
            string strResult = string.Empty;
            //如果在客户清单中查询到数据
            if (l.Count > 0)
            {
                //将泛型变量各项目放入数组
                var itms = new LiItem[l.Count];
                //复制泛型变量的内容到数组
                l.CopyTo(itms);
                //循环重新设置单只数
                foreach (var itm in itms)
                {
                    //将实例加入li
                    strResult += itm.ToString();
                }
            }

            //加入ul头尾
            strResult = "<ul>\n" + strResult + "</ul>\n";
            //写入数据
            context.Response.Write(strResult);
        }
Пример #6
0
        /// <summary>
        /// 根据输入的参数值来执行更新数据
        /// </summary>
        /// <param name="e">传入的带有数据的事件参数</param>
        /// <returns></returns>
        private bool UpdateData(FormViewUpdateEventArgs e)
        {
            //数据适配器
            //当前添加语句对象
            //当前数据库连接
            using (var da = new v_mantissa_lot_card_outTableAdapter())
            using (var conn = da.Connection)
            {
                //打开数据库连接
                conn.Open();
                //开启事务
                using (var tran = conn.BeginTransaction())
                {
                    //设置事务
                    da.Transaction = tran;
                    //试运行
                    try
                    {
                        //部门名称
                        string procName = e.OldValues["proc_name"].ToString();
                        //当前行单号
                        string billNum = Convert.ToString(e.Keys[0]);
                        //获取数据
                        using (var tab = da.GetDataByBillNum(billNum))
                        {
                            //检查是否获取到行
                            if (tab.Rows.Count == 0)
                            {
                                //显示失败
                                throw new Exception("当前记录已经被其他用户删除!");
                            }
                            //数据适配器
                            using (var daHead = new t_mantissa_lot_card_out_headTableAdapter())
                            using (var daContent = new t_mantissa_lot_card_out_contentTableAdapter())
                            using (var daBalance = new t_mantissa_lot_card_balanceTableAdapter())
                            using (var daProc = new t_proc_lot_card_balanceTableAdapter())
                            {
                                //设置数据库连接
                                daHead.Connection = daContent.Connection = daBalance.Connection = daProc.Connection = conn;
                                //设置事务
                                daHead.Transaction = daContent.Transaction = daBalance.Transaction = daProc.Transaction = tran;
                                //将之前的单据内容写回
                                foreach (DataSetMantissaOut.v_mantissa_lot_card_outRow row in tab.Rows)
                                {
                                    //检测是否超过原下部门余数
                                    if (ydOperateBalanceLotCrad.IsOutstripProcBalance(
                                        tran,
                                        row.next_proc_name,
                                        row.lot_id,
                                        null,
                                        row.pnl_qty,
                                        row.pcs_qty
                                    ))
                                    {
                                        return false;
                                    }
                                    //修改原下部门批量卡余数
                                    if (!ydOperateBalanceLotCrad.UpdateBalanceAfterInsert(
                                        tran,
                                        row.next_proc_name,
                                        row.lot_id,
                                        null,
                                        row.pnl_qty,
                                        row.pcs_qty
                                    ))
                                    {
                                        return false;
                                    }
                                    //执行插入到尾数结存清单
                                    daBalance.InsertData(
                                        row.prev_proc_name,
                                        row.proc_name,
                                        row.lot_id,
                                        row.product_num,
                                        row.pnl_qty,
                                        row.pcs_qty,
                                        "尾数出库单写回" + (row.IsremarkNull() ? string.Empty : ":" + row.remark),
                                        Session["user_name"].ToString()
                                    );
                                }
                                //从单据内容中删除
                                daContent.DeleteByBillNum(billNum);
                                //从单据表头中删除
                                daHead.Delete(billNum);

                                //日期
                                DateTime billDate = Convert.ToDateTime(e.NewValues["bill_date"]);
                                //下部门
                                string nextProcName = Convert.ToString(e.NewValues["next_proc_name"]);
                                //单据备注
                                string billRemark = Convert.ToString(e.NewValues["remark"]);
                                //录入员
                                string addPerson = e.NewValues["add_person"].ToString();
                                //录入时间
                                DateTime addTime = Convert.ToDateTime(e.NewValues["add_time"]);
                                //最后修改时间
                                DateTime lastChangeTime = Convert.ToDateTime(e.NewValues["last_change_time"]);
                                //保存表头
                                daHead.Insert(
                                    billDate,
                                    billNum,
                                    procName,
                                    nextProcName,
                                    billRemark,
                                    addPerson,
                                    addTime,
                                    lastChangeTime
                                );
                                //遍历子表执行保存
                                for (int iRow = 0; iRow < 10; iRow++)
                                {
                                    //子表各控件
                                    var tr = tabDataListSon.Rows[iRow + 1];
                                    var litRowId = (Literal)tr.Cells[0].Controls[0];
                                    var txtPrevProcName = (TextBox)tr.Cells[1].Controls[0];
                                    var txtLotId = (TextBox)tr.Cells[2].Controls[0];
                                    var txtProductNum = (TextBox)tr.Cells[3].Controls[0];
                                    var txtPnlQty = (TextBox)tr.Cells[4].Controls[0];
                                    var txtPcsQty = (TextBox)tr.Cells[5].Controls[0];
                                    var txtRemark = (TextBox)tr.Cells[6].Controls[0];
                                    //取得数据
                                    byte rowId = Convert.ToByte(litRowId.Text);
                                    string prevProcName = txtPrevProcName.Text;
                                    string lotId = txtLotId.Text;
                                    string productNum = txtProductNum.Text;
                                    int pnlQty = txtPnlQty.Text.Trim().Length <= 0 ? 0 : int.Parse(txtPnlQty.Text.Trim());
                                    int pcsQty = txtPcsQty.Text.Trim().Length <= 0 ? 0 : int.Parse(txtPcsQty.Text.Trim());
                                    string remark = txtRemark.Text;
                                    //存在数据才保存
                                    if (lotId.Length > 0 && productNum.Length > 0 && pnlQty + pcsQty > 0)
                                    {
                                        //保存到单据内容清单
                                        daContent.Insert(
                                            billNum,
                                            rowId,
                                            prevProcName,
                                            lotId,
                                            productNum,
                                            pnlQty,
                                            pcsQty,
                                            remark
                                        );
                                        //保存到部门批量卡结存清单
                                        daProc.Insert(
                                            procName,
                                            nextProcName,
                                            lotId,
                                            productNum,
                                            pnlQty,
                                            pcsQty,
                                            "出库单写入" + (remark.Length > 0 ? ":" + remark : string.Empty),
                                            Session["user_name"].ToString(),
                                            DateTime.Now,
                                            DateTime.Now,
                                            null,
                                            null,
                                            true
                                        );
                                        //从尾数结存清单中扣除
                                        if (!ydOperateMantissaLotCard.DecreaseMantissaBalance(
                                            daBalance,
                                            prevProcName,
                                            lotId,
                                            pnlQty,
                                            pcsQty
                                        ))
                                        {
                                            return false;
                                        }
                                    }
                                }
                            }
                        }
                        //提交事务
                        tran.Commit();
                        //返回成功
                        return true;
                    }
                    catch (Exception ex)
                    {
                        //回滚事务
                        tran.Rollback();
                        //非数字返回失败
                        throw new Exception(ex.Message);
                    }
                }
            }
        }
Пример #7
0
 /// <summary>
 /// 根据输入的LOT格式来保存多条数据到数据库
 /// </summary>
 /// <param name="e">传入的带有数据的事件参数</param>
 /// <param name="procName">当前部门名称</param>
 /// <returns></returns>
 private bool InsertData(FormViewInsertEventArgs e, string procName)
 {
     //日期
     DateTime billDate = Convert.ToDateTime(e.Values["bill_date"]);
     //单号
     string billNum = Convert.ToString(e.Values["bill_num"]);
     //下部门
     string nextProcName = Convert.ToString(e.Values["next_proc_name"]);
     //单据备注
     string billRemark = Convert.ToString(e.Values["remark"]);
     //录入员
     string addPerson = e.Values["add_person"].ToString();
     //录入时间
     DateTime addTime = Convert.ToDateTime(e.Values["add_time"]);
     //最后修改时间
     DateTime lastChangeTime = Convert.ToDateTime(e.Values["last_change_time"]);
     //数据适配器
     //当前添加语句对象
     //当前数据库连接
     using (var daHead = new t_mantissa_lot_card_out_headTableAdapter())
     using (var daContent = new t_mantissa_lot_card_out_contentTableAdapter())
     using (var daBalance = new t_mantissa_lot_card_balanceTableAdapter())
     using (var daProc = new t_proc_lot_card_balanceTableAdapter())
     using (var conn = daHead.Connection)
     {
         //打开数据库连接
         conn.Open();
         //开启事务
         using (var tran = conn.BeginTransaction())
         {
             //设置数据库连接对象
             daContent.Connection = daBalance.Connection = daProc.Connection = conn;
             //设置事务
             daHead.Transaction = daContent.Transaction = daBalance.Transaction = daProc.Transaction = tran;
             //试运行
             try
             {
                 //保存表头
                 daHead.Insert(
                     billDate,
                     billNum,
                     procName,
                     nextProcName,
                     billRemark,
                     addPerson,
                     addTime,
                     lastChangeTime
                 );
                 //遍历子表执行保存
                 for (int iRow = 0; iRow < 10; iRow++)
                 {
                     //子表各控件
                     var tr = tabDataListSon.Rows[iRow + 1];
                     var litRowId = (Literal)tr.Cells[0].Controls[0];
                     var txtPrevProcName = (TextBox)tr.Cells[1].Controls[0];
                     var txtLotId = (TextBox)tr.Cells[2].Controls[0];
                     var txtProductNum = (TextBox)tr.Cells[3].Controls[0];
                     var txtPnlQty = (TextBox)tr.Cells[4].Controls[0];
                     var txtPcsQty = (TextBox)tr.Cells[5].Controls[0];
                     var txtRemark = (TextBox)tr.Cells[6].Controls[0];
                     //取得数据
                     byte rowId = Convert.ToByte(litRowId.Text);
                     string prevProcName = txtPrevProcName.Text;
                     string lotId = txtLotId.Text;
                     string productNum = txtProductNum.Text;
                     int pnlQty = txtPnlQty.Text.Trim().Length <= 0 ? 0 : int.Parse(txtPnlQty.Text.Trim());
                     int pcsQty = txtPcsQty.Text.Trim().Length <= 0 ? 0 : int.Parse(txtPcsQty.Text.Trim());
                     string remark = txtRemark.Text;
                     //存在数据才保存
                     if (lotId.Length > 0 && productNum.Length > 0 && pnlQty + pcsQty > 0)
                     {
                         //保存到单据内容清单
                         daContent.Insert(
                             billNum,
                             rowId,
                             prevProcName,
                             lotId,
                             productNum,
                             pnlQty,
                             pcsQty,
                             remark
                         );
                         //保存到清单部门批量卡结存清单
                         daProc.Insert(
                             procName,
                             nextProcName,
                             lotId,
                             productNum,
                             pnlQty,
                             pcsQty,
                             "出库单写入" + (remark.Length > 0 ? ":" + remark : string.Empty),
                             Session["user_name"].ToString(),
                             DateTime.Now,
                             DateTime.Now,
                             null,
                             null,
                             true
                         );
                         //从尾数结存清单中扣除
                         if (!ydOperateMantissaLotCard.DecreaseMantissaBalance(
                             daBalance,
                             prevProcName,
                             lotId,
                             pnlQty,
                             pcsQty
                         ))
                         {
                             return false;
                         }
                     }
                 }
                 //提交事务
                 tran.Commit();
                 //返回成功
                 return true;
             }
             catch (Exception ex)
             {
                 //回滚事务
                 tran.Rollback();
                 //非数字返回失败
                 throw new Exception(ex.Message);
             }
         }
     }
 }
 /// <summary>
 /// 将url中提供的id的待报废记录数据写入窗口中的文本框
 /// </summary>
 private void SetWaitScrapRecordToForm()
 {
     //调用过程填写默认值
     fvWaitScrapRecordBackAdd_ItemCreated(null, null);
     //获取传入的url中的id参数
     string strId = Request["waitid"];
     int id;
     if (!string.IsNullOrEmpty(strId) && int.TryParse(strId, out id))
     {
         //获取该条记录的数据写入文本框
         using (var da = new t_proc_lot_card_balanceTableAdapter())
         using (var tab = da.GetDataById(id))
         {
             //检测是否取到数据
             if (tab.Rows.Count > 0)
             {
                 //首行
                 var row = (DataSetProcLotCardMgr.t_proc_lot_card_balanceRow)tab.Rows[0];
                 //填写数据
                 //批量卡号
                 var tb = (TextBox)fvWaitScrapRecordBackAdd.FindControl("txtLotId");
                 if (tb != null)
                 {
                     //设置默认值
                     tb.Text = row.lot_id;
                 }
                 //生产编号
                 tb = (TextBox)fvWaitScrapRecordBackAdd.FindControl("txtProductNum");
                 if (tb != null)
                 {
                     //设置默认值
                     tb.Text = row.product_num;
                 }
                 //pcs数量
                 tb = (TextBox)fvWaitScrapRecordBackAdd.FindControl("txtPcsQty");
                 if (tb != null)
                 {
                     //设置默认值
                     tb.Text = row.pcs_qty.ToString();
                 }
             }
         }
     }
 }
Пример #9
0
 /// <summary>
 /// 添加一条下部门未完成批量卡或者到成品仓记录
 /// </summary>
 /// <param name="tran">当前事务</param>
 /// <param name="nextProcName">部门名称</param>
 /// <param name="lotId">要保存的记录中保存的批量卡序号</param>
 /// <param name="e">包含有数据列表值的事件参数</param>
 /// <returns></returns>
 private static bool InsertOneRecordToLotCardBalance(
     SqlTransaction tran,
     string nextProcName,
     string lotId,
     FormViewInsertEventArgs e
 )
 {
     //是否已经做过文字再到线路
     //bool isCompleteWenZi
     //当前数据库连接对象
     var conn = tran.Connection;
     try
     {
         //查询对象
         SqlCommand cmd;
         //检测部门名称
         if (nextProcName == "成品仓")
         {
             //实例化数据适配器
             var da = new t_complete_lot_card_waitTableAdapter();
             //设置事务
             da.Transaction = tran;
             //查询对象
             cmd = da.Adapter.InsertCommand;
         }
         else
         {
             //实例化数据适配器
             var da = new t_proc_lot_card_balanceTableAdapter();
             //设置事务
             da.Transaction = tran;
             //查询对象
             cmd = da.Adapter.InsertCommand;
         }
         //设置数据库连接
         cmd.Connection = conn;
         //设置参数和属性后保存
         using (cmd)
         {
             //设置超时
             cmd.CommandTimeout = 50;
             //设置参数值
             cmd.Parameters.Clear();
             cmd.Parameters.AddWithValue("@prev_proc_name", e.Values["proc_name"]);
             cmd.Parameters.AddWithValue("@proc_name", nextProcName);
             cmd.Parameters.AddWithValue("@lot_id", lotId);
             cmd.Parameters.AddWithValue("@product_num", e.Values["product_num"]);
             cmd.Parameters.AddWithValue("@pnl_qty", e.Values["pnl_qty"]);
             cmd.Parameters.AddWithValue("@pcs_qty", e.Values["pcs_qty"]);
             cmd.Parameters.AddWithValue("@remark", DBNull.Value);
             cmd.Parameters.AddWithValue("@add_person", e.Values["add_person"]);
             cmd.Parameters.AddWithValue("@add_time", e.Values["add_time"]);
             cmd.Parameters.AddWithValue("@last_change_time", e.Values["last_change_time"]);
             cmd.Parameters.AddWithValue("@accept_person", DBNull.Value);
             cmd.Parameters.AddWithValue("@accept_time", DBNull.Value);
             if (e.Values["proc_name"].ToString() == "文字" && e.Values["next_proc_name"].ToString() == "线路")
             {
                 cmd.Parameters.AddWithValue("@is_complete_wenzi", true);
             }
             else
             {
                 cmd.Parameters.AddWithValue("@is_complete_wenzi", false);
             }
             //执行查询
             if (cmd.ExecuteNonQuery() == 0)
             {
                 //抛出错误
                 throw new Exception("添加数据到下部门结存批量卡失败!");
             }
             //返回成功
             return true;
         }
     }
     catch (Exception ex)
     {
         //抛出错误
         throw ex;
     }
 }
Пример #10
0
 /// <summary>
 /// 添加一条部门未完成批量卡或者到成品仓
 /// </summary>
 /// <param name="tran">当前事务</param>
 /// <param name="e">包含有数据列表值的事件参数</param>
 /// <param name="isAccept">是够已经确认过数量</param>
 /// <returns></returns>
 internal static bool InsertOneRecordToLotCardBalance(
     SqlTransaction tran,
     FormViewUpdateEventArgs e,
     bool? isAccept
 )
 {
     //当前数据库连接对象
     var conn = tran.Connection;
     try
     {
         //要插入到的部门名称
         string nextProcName = e.NewValues["next_proc_name"].ToString();
         //检测当前部门
         if (nextProcName == "成品仓")
         {
             //实例化数据适配器
             using (var da = new t_complete_lot_card_waitTableAdapter())
             using (var cmd = da.Adapter.InsertCommand)
             {
                 //设置数据库连接
                 da.Connection = conn;
                 //设置事务
                 da.Transaction = tran;
                 //设置超时
                 cmd.CommandTimeout = 50;
                 //设置参数值
                 cmd.Parameters.Clear();
                 cmd.Parameters.AddWithValue("@prev_proc_name", e.NewValues["proc_name"]);
                 cmd.Parameters.AddWithValue("@proc_name", nextProcName);
                 cmd.Parameters.AddWithValue("@lot_id", e.NewValues["lot_id"]);
                 cmd.Parameters.AddWithValue("@product_num", e.NewValues["product_num"]);
                 cmd.Parameters.AddWithValue("@pnl_qty", e.NewValues["pnl_qty"]);
                 cmd.Parameters.AddWithValue("@pcs_qty", e.NewValues["pcs_qty"]);
                 cmd.Parameters.AddWithValue("@remark", DBNull.Value);
                 cmd.Parameters.AddWithValue("@add_person", e.NewValues["add_person"]);
                 cmd.Parameters.AddWithValue("@add_time", e.NewValues["add_time"]);
                 cmd.Parameters.AddWithValue("@last_change_time", e.NewValues["last_change_time"]);
                 //执行查询
                 if (cmd.ExecuteNonQuery() == 0)
                 {
                     //抛出错误
                     throw new Exception("添加数据到下部门结存批量卡失败!");
                 }
             }
         }
         else
         {
             //实例化数据适配器
             using (var da = new t_proc_lot_card_balanceTableAdapter())
             using (var cmd = da.Adapter.InsertCommand)
             {
                 //设置数据库连接
                 da.Connection = conn;
                 //设置事务
                 da.Transaction = tran;
                 //设置超时
                 cmd.CommandTimeout = 50;
                 //设置参数值
                 cmd.Parameters.Clear();
                 //当前部门
                 string procName = HttpContext.Current.Session["proc_name"].ToString();
                 if (procName == "MRB")
                 {
                     cmd.Parameters.AddWithValue("@prev_proc_name", "MRB");
                     cmd.Parameters.AddWithValue("@proc_name", e.NewValues["proc_name"]);
                 }
                 else
                 {
                     cmd.Parameters.AddWithValue("@prev_proc_name", e.NewValues["proc_name"]);
                     cmd.Parameters.AddWithValue("@proc_name", nextProcName);
                 }
                 cmd.Parameters.AddWithValue("@lot_id", e.NewValues["lot_id"]);
                 cmd.Parameters.AddWithValue("@product_num", e.NewValues["product_num"]);
                 cmd.Parameters.AddWithValue("@pnl_qty", e.NewValues["pnl_qty"]);
                 cmd.Parameters.AddWithValue("@pcs_qty", e.NewValues["pcs_qty"]);
                 cmd.Parameters.AddWithValue("@remark", DBNull.Value);
                 cmd.Parameters.AddWithValue("@add_person", e.NewValues["add_person"]);
                 cmd.Parameters.AddWithValue("@add_time", e.NewValues["add_time"]);
                 cmd.Parameters.AddWithValue("@last_change_time", e.NewValues["last_change_time"]);
                 if (procName != "MRB")
                 {
                     if (isAccept.HasValue && isAccept.Value)
                     {
                         cmd.Parameters.AddWithValue("@accept_person", HttpContext.Current.Session["user_name"]);
                         cmd.Parameters.AddWithValue("@accept_time", DateTime.Now);
                     }
                     else
                     {
                         cmd.Parameters.AddWithValue("@accept_person", DBNull.Value);
                         cmd.Parameters.AddWithValue("@accept_time", DBNull.Value);
                     }
                     if (e.NewValues["proc_name"].ToString() == "文字" && e.NewValues["proc_name"].ToString() == "线路")
                     {
                         cmd.Parameters.AddWithValue("@is_complete_wenzi", true);
                     }
                     else
                     {
                         cmd.Parameters.AddWithValue("@is_complete_wenzi", false);
                     }
                 }
                 //执行查询
                 if (cmd.ExecuteNonQuery() == 0)
                 {
                     //抛出错误
                     throw new Exception("添加数据到下部门结存批量卡失败!");
                 }
             }
         }
         //返回成功
         return true;
     }
     catch (Exception ex)
     {
         //抛出错误
         throw ex;
     }
 }
Пример #11
0
 protected void lvProcLotCardMgr_ItemCommand(object sender, ListViewCommandEventArgs e)
 {
     //当前listview行
     var itm = e.Item;
     //检测命令类型
     if (itm.ItemType != ListViewItemType.DataItem)
     {
         //直接返回
         return;
     }
     //检测是否含有session
     if (Session.Count < 5)
     {
         //跳转
         Response.Redirect("/Account/Login", true);
         //停止加载后续内容
         Response.End();
         //直接返回
         return;
     }
     //当前是否存在数据
     if (e.Item.DataItemIndex < 0)
     {
         return;
     }
     //当前数据行id号
     Int64 id = Convert.ToInt64(e.CommandArgument.ToString().Trim());
     //当前数据行
     DataSetProcLotCardMgr.t_proc_lot_card_balanceRow row = null;
     using (var da = new t_proc_lot_card_balanceTableAdapter())
     {
         //取得数据
         var tab = da.GetDataById(id);
         //获取首行
         if (tab.Rows.Count > 0)
         {
             row = (DataSetProcLotCardMgr.t_proc_lot_card_balanceRow)tab.Rows[0];
         }
     }
     //检测数据
     if (row == null)
     {
         throw new Exception(string.Format("未找到序号为 {0} 的结存数据!: ", id));
     }
     //当前行的部门名称
     string curProcName = row.proc_name.ToUpper();
     //当前用户所在部门
     string procName = Session["proc_name"].ToString().ToUpper();
     //当前角色id
     Int16 roleId = Convert.ToInt16(Session["role_id"]);
     //检测是否有权限
     //本部门人员只能确认
     if (procName == curProcName)
     {
         //检测命令名称
         if (e.CommandName == "AcceptQty")
         {
             //检测角色
             if (roleId < 0 || roleId > 4)
             {
                 throw new Exception("您没有确认该序号记录的权限!序号: " + id.ToString());
             }
         }
         else if (e.CommandName == "CancelAcceptQty")
         {
             throw new Exception("您没有取消确认该序号记录的权限!序号: " + id.ToString());
         }
     }
     //计划部,样板组操作员级别以上人员只允许取消确认
     else if (procName == mustProcName || procName == "样板")
     {
         //检测角色
         if (roleId < 0 || roleId > 4)
         {
             //检测命令名称
             if (e.CommandName == "AcceptQty")
             {
                 throw new Exception("您没有确认该序号记录的权限!序号: " + id.ToString());
             }
             else if (e.CommandName == "CancelAcceptQty")
             {
                 throw new Exception("您没有取消确认该序号记录的权限!序号: " + id.ToString());
             }
         }
         //分清是样板还是生产板
         var lotId = row.lot_id;
         //生产对应生产批量卡,样板对应样板批量卡
         if ((!lotId.Contains("S") && procName != mustProcName)
             || (lotId.Contains("S") && procName != "样板")
         )
         {
             //检测命令名称
             if (e.CommandName == "AcceptQty")
             {
                 throw new Exception("您没有确认该序号记录的权限!序号: " + id.ToString());
             }
             else if (e.CommandName == "CancelAcceptQty")
             {
                 throw new Exception("您没有取消确认该序号记录的权限!序号: " + id.ToString());
             }
         }
     }
     else
     {
         //检测命令名称
         if (e.CommandName == "AcceptQty")
         {
             throw new Exception("您没有确认该序号记录的权限!序号: " + id.ToString());
         }
         else if (e.CommandName == "CancelAcceptQty")
         {
             throw new Exception("您没有取消确认该序号记录的权限!序号: " + id.ToString());
         }
     }
     //当前用户的名称
     string userName = Session["user_name"].ToString();
     //检测命令名称
     if (e.CommandName == "AcceptQty")
     {
         //修改指定的单据
         using (var da = new t_proc_lot_card_balanceTableAdapter())
         {
             //执行确认数量
             da.AcceptQtyById(userName, id);
             //重新绑定数据
             lvProcLotCardMgr.DataBind();
         }
     }
     else if (e.CommandName == "CancelAcceptQty")
     {
         //修改指定的单据
         using (var da = new t_proc_lot_card_balanceTableAdapter())
         {
             //执行取消确认的数量
             da.CancelAcceptQtyById(id);
             //重新绑定数据
             lvProcLotCardMgr.DataBind();
         }
     }
 }
Пример #12
0
 /// <summary>
 /// 检测是否存在指定的部门名称
 /// </summary>
 /// <param name="tran">当前事务</param>
 /// <param name="procName">部门名称</param>
 /// <param name="lotId">当前待报数的批量卡序号</param>
 /// <returns></returns>
 internal static bool IsMinLotId(SqlTransaction tran, string procName, string lotId)
 {
     //部门名称转大写
     procName = procName.ToUpper();
     //检测批量卡号
     if (lotId.Length < 6)
     {
         throw new Exception("提供的批量卡号不正确!");
     }
     //实例化数据适配器并获取数据
     using (var da = new t_proc_lot_card_balanceTableAdapter())
     {
         //当前数据库连接
         da.Connection = tran.Connection;
         //设置事务
         da.Transaction = tran;
         //检测当前批量卡是否已经做过文字部门
         var i = da.GetIsCompleteWenZi(procName, lotId);
         bool isCompleteWenZi = false;
         if (i.HasValue && i.Value > 0)
         {
             isCompleteWenZi = true;
         }
         //获取
         string minLotId;
         //检测是否样板
         bool isSample = lotId.ToUpper().Contains("S");
         //非样板使用生产订单和批量卡中的数据
         if (!isSample)
         {
             minLotId = da.GetMinLotIdByProcName(procName, isCompleteWenZi, lotId).ToString();
         }
         else
         {
             minLotId = da.GetMinSampleLotIdByProcName(procName, isCompleteWenZi, lotId).ToString();
         }
         //检测是否获取到数据
         if (minLotId != null && minLotId.ToString() == lotId)
         {
             //提供的是本部门结存中的最小批量卡号
             return true;
         }
         else
         {
             //提供的不是本部门结存中的最小批量卡号
             throw new Exception(
                 string.Format(
                     "当前批量卡 {0} 不是最小的批量卡号 {1}",
                     lotId,
                     minLotId
                 )
             );
         }
     }
 }