Esempio n. 1
0
 /// <summary>
 /// 执行删除数据并处理相关数据一致性
 /// </summary>
 /// <param name="e">传入的带有数据的事件参数</param>
 /// <returns></returns>
 private bool DeleteData(ListViewDeleteEventArgs e)
 {
     //当前用户输入的id号
     Int64 id = Convert.ToInt64(e.Keys[0]);
     //数据适配器
     //当前数据库连接
     //当前更新语句对象
     using (var da = new t_scrap_record_loseTableAdapter())
     using (var cmd = da.Adapter.DeleteCommand)
     using (var conn = cmd.Connection)
     {
         //打开数据库连接
         conn.Open();
         //开启事务
         using (var tran = conn.BeginTransaction())
         {
             //试运行
             try
             {
                 //设置事务
                 da.Transaction = tran;
                 //获取数据
                 using (var tab = da.GetDataById(id))
                 {
                     //检查是否获取到行
                     if (tab.Rows.Count == 0)
                     {
                         //显示失败
                         throw new Exception("当前遗失报废记录已经被其他用户删除,请刷新后重试!");
                     }
                     else
                     {
                         //首行
                         var row = (DataSetLoseRecord.t_scrap_record_loseRow)tab.Rows[0];
                         //之前录入的用户名称
                         string userName = row.add_person;
                         //检测当前用户所在部门名称和角色以及之前保存该记录的用户部门名称
                         //当前用户所在部门
                         string curUserDeptName = Session["dept_name"].ToString();
                         //用户名称
                         string curUserName = Session["user_name"].ToString();
                         //当前角色id
                         Int16 curUserRoleId = Convert.ToInt16(Session["role_id"]);
                         //录入权限用户则必须和原录入用户一样的名字
                         if (curUserRoleId > 3)
                         {
                             //用户只能操作自己之前录入的
                             if (userName.ToUpper().Equals(curUserName.ToUpper()))
                             {
                                 //显示失败
                                 throw new Exception("当前遗失报废记录录入者并非是您,请找更高级权限的用户操作!");
                             }
                         }
                         //主管级别可以修改本部门人员的
                         else if (curUserRoleId == 3)
                         {
                             //检测之前录入用户所在部门
                             using (var daUser = new DAL.Shared.DataSetUserDeptRoleTableAdapters.v_user_dept_roleTableAdapter())
                             {
                                 //设置事务
                                 daUser.Transaction = tran;
                                 //检测该用户是否属于该部门
                                 int i = Convert.ToInt32(daUser.CountByUserNameAndDeptName(userName, curUserDeptName));
                                 if (i <= 0)
                                 {
                                     //显示失败
                                     throw new Exception("当前遗失报废记录录入者并非是您当前部门用户,请找更高级权限的用户操作!");
                                 }
                             }
                         }
                         //样板经理级别只能修改样板lot卡,生产板经理只能修改生产板lot卡
                         else if (curUserRoleId == 2)
                         {
                             //之前录入的lot卡号
                             string lotId = row.lot_id;
                             //检测是否样板
                             bool isSample = lotId.ToUpper().Contains("S");
                             //检查是否一致
                             if (!isSample && curUserDeptName == "样板")
                             {
                                 //显示失败
                                 throw new Exception("当前遗失报废记录并非是样板,请找更高级权限的用户操作!");
                             }
                             else if (isSample && curUserDeptName == "计划")
                             {
                                 //显示失败
                                 throw new Exception("当前遗失报废记录并非是生产板,请找更高级权限的用户操作!");
                             }
                         }
                         //部门名称
                         string deptName = row.dept_name;
                         //目标数据库表名
                         string toTabName = "[t_dept_lot_card_balance]";
                         //添加到部门结存lot卡或者遗失报废记录
                         if (!ydOperateBalanceLotCrad.InsertOneRecordToLotCardBalance(
                             tran,
                             ydOperateBalanceLotCrad.GetTabNameByDeptName("MRB2"),
                             deptName,
                             toTabName,
                             id
                         ))
                         {
                             return false;
                         }
                         //从遗失报废记录删除数据
                         if (!ydOperateBalanceLotCrad.DeleteOneRecordFromProductOrScrapRecord(cmd, id))
                         {
                             return false;
                         }
                     }
                 }
                 //提交事务
                 tran.Commit();
                 //返回成功
                 return true;
             }
             catch (Exception ex)
             {
                 //回滚事务
                 tran.Rollback();
                 //非数字返回失败
                 throw new Exception(ex.Message);
             }
         }
     }
 }
Esempio n. 2
0
 /// <summary>
 /// 根据输入的参数值来执行更新数据
 /// </summary>
 /// <param name="e">传入的带有数据的事件参数</param>
 /// <returns></returns>
 private bool UpdateData(FormViewUpdateEventArgs e)
 {
     //检测是否更改了需要更新到其他部门的数据内容
     if (e.OldValues["proc_name"].Equals(e.NewValues["proc_name"]) &&
         e.OldValues["lot_id"].Equals(e.NewValues["lot_id"]) &&
         e.OldValues["product_num"].Equals(e.NewValues["product_num"]) &&
         e.OldValues["scrap_proc_name"].Equals(e.NewValues["scrap_proc_name"]) &&
         e.OldValues["pnl_qty"].Equals(e.NewValues["pnl_qty"])
     )
     {
         //执行只更新本遗失报废记录
         e.Cancel = false;
         //更新事件继续执行
         return false;
     }
     //当前用户所在部门
     string procName = Session["proc_name"].ToString();
     //之前批量卡号
     string lotIdOld = e.OldValues["lot_id"].ToString().ToUpper();
     //当前用户输入的新的批量卡号
     string lotIdNew = e.NewValues["lot_id"].ToString().ToUpper();
     //不能从样板批量卡修改为生产板批量卡,反之亦然
     if (lotIdNew.Contains("S") != lotIdOld.Contains("S"))
     {
         throw new Exception("不能从样板批量卡修改为生产板批量卡,反之亦然!");
     }
     //检测部门名称
     if (lotIdOld.Contains("S") && procName != "样板" && procName != "MRB")
     {
         throw new Exception("当前只能录入生产板批量卡!");
     }
     //检测部门名称
     if (!lotIdOld.Contains("S") && procName != "PMC" && procName != "MRB")
     {
         throw new Exception("当前只能录入样板批量卡!");
     }
     //检测是否正确批量卡号
     if (!ydOperateLotCard.IsLotCardId(ref lotIdNew) || !ydOperateSampleLotCard.IsSampleLotCardId(ref lotIdNew))
     {
         //非数字返回失败
         throw new Exception("您输入了一个不合格的批量卡号 " + lotIdNew + " !");
     }
     //数据适配器
     //当前添加语句对象
     //当前数据库连接
     using (var da = new t_scrap_record_loseTableAdapter())
     using (var cmd = da.Adapter.UpdateCommand)
     using (var conn = cmd.Connection)
     {
         //打开数据库连接
         conn.Open();
         //开启事务
         using (var tran = conn.BeginTransaction())
         {
             //设置事务
             da.Transaction = tran;
             //试运行
             try
             {
                 //之前提供遗失板的部门名称
                 string procNameOld = e.OldValues["proc_name"].ToString();
                 //之后提供遗失板的部门名称
                 string procNameNew = e.NewValues["proc_name"].ToString();
                 //当前行id号
                 Int64 id = Convert.ToInt64(e.Keys["id"]);
                 //获取数据
                 using (var tab = da.GetDataById(id))
                 {
                     //检查是否获取到行
                     if (tab.Rows.Count == 0)
                     {
                         //显示失败
                         throw new Exception("当前遗失报废记录已经被其他用户删除,请刷新后重试!");
                     }
                     else
                     {
                         //首行
                         var row = (DataSetLoseRecord.t_scrap_record_loseRow)tab.Rows[0];
                         //之前录入的用户名称
                         string userName = row.add_person;
                         //检测当前用户所在部门名称和角色以及之前保存该记录的用户部门名称
                         //当前用户所在部门
                         string curUserProcName = Session["proc_name"].ToString();
                         //用户名称
                         string curUserName = Session["user_name"].ToString();
                         //当前角色id
                         Int16 curUserRoleId = Convert.ToInt16(Session["role_id"]);
                         //录入权限用户则必须和原录入用户一样的名字
                         if (curUserRoleId > 3)
                         {
                             //用户只能操作自己之前录入的
                             if (userName.ToUpper().Equals(curUserName.ToUpper()))
                             {
                                 //显示失败
                                 throw new Exception("当前遗失报废记录录入者并非是您,请找更高级权限的用户操作!");
                             }
                         }
                         //主管级别可以修改本部门的
                         else if (curUserRoleId == 3)
                         {
                             //检测之前录入用户所在部门
                             using (var daUser = new DAL.Shared.DataSetUserProcRoleTableAdapters.v_user_proc_roleTableAdapter())
                             {
                                 //设置事务
                                 daUser.Transaction = tran;
                                 //检测该用户是否属于该部门
                                 int i = Convert.ToInt32(daUser.CountByUserNameAndProcName(userName, curUserProcName));
                                 if (i <= 0)
                                 {
                                     //显示失败
                                     throw new Exception("当前遗失报废记录录入者并非是您当前部门用户,请找更高级权限的用户操作!");
                                 }
                             }
                         }
                         //样板经理级别只能修改样板批量卡,生产板经理只能修改生产板批量卡
                         else if (curUserRoleId == 2)
                         {
                             //之前录入的批量卡号
                             string lotId = row.lot_id;
                             //检测是否样板
                             bool isSample = lotId.ToUpper().Contains("S");
                             //检查是否一致
                             if (!isSample && curUserProcName == "样板")
                             {
                                 //显示失败
                                 throw new Exception("当前遗失报废记录并非是样板,请找更高级权限的用户操作!");
                             }
                             else if (isSample && curUserProcName == "PMC")
                             {
                                 //显示失败
                                 throw new Exception("当前遗失报废记录并非是生产板,请找更高级权限的用户操作!");
                             }
                         }
                         //目标数据库表名
                         string toTabName = procNameOld == "成品仓" ?
                             "[t_complete_lot_card_wait]" : "[t_proc_lot_card_balance]";
                         //添加到部门结存批量卡
                         if (!ydOperateBalanceLotCrad.InsertOneRecordToLotCardBalance(
                             tran,
                             ydOperateBalanceLotCrad.GetTabNameByProcName("MRB2"),
                             procNameOld,
                             toTabName,
                             id,
                             true
                         ))
                         {
                             return false;
                         }
                     }
                 }
                 //保存一条记录到数据库
                 if (!ydOperateBalanceLotCrad.UpdateOneRecord(cmd, e, procNameNew, false))
                 {
                     //失败就直接返回
                     return false;
                 }
                 //提交事务
                 tran.Commit();
                 //返回成功
                 return true;
             }
             catch (Exception ex)
             {
                 //回滚事务
                 tran.Rollback();
                 //非数字返回失败
                 throw new Exception(ex.Message);
             }
         }
     }
 }
Esempio n. 3
0
 //导出数据到Excel
 protected void lBtnToExcel_Click(object sender, EventArgs e)
 {
     //获取数据并填充到数据表
     using (var da = new t_scrap_record_loseTableAdapter())
     {
         //检测session中保存的查询条件
         object obj = Session["scrap_record_lose_where_content"];
         string str = string.Empty;
         if (obj != null && obj.ToString().Length > 0)
         {
             str = obj.ToString();
         }
         //获取前1万行数据
         var tab = da.GetPagedData(0, 10000, str, "order by [id] desc");
         //设置列标题
         string[] titleCol =
             ("序号,遗失日期,部门名称,lot卡号,生产编号,pnl遗失数,pcs遗失数," +
             "备注,录入员,录取时间,修改时间").Split(',');
         //设置表名称
         string titleTab = "遗失报废记录";
         //临时文件名称
         string fileName = titleTab + DateTime.Now.ToString("yyMMddHHmmss") + ".xls";
         //执行导出数据到excel
         bool isSuccess = ydPublicMethod.DataTable2Excel(tab, titleCol, ref fileName, titleTab);
         //如果成功则跳转到指定页面
         if (isSuccess)
         {
             Response.Redirect(fileName);
             //停止加载后续内容
             Response.End();
         }
     }
 }
Esempio n. 4
0
 /// <summary>
 /// 根据输入的LOT格式来保存多条数据到数据库
 /// </summary>
 /// <param name="e">传入的带有数据的事件参数</param>
 /// <returns></returns>
 private bool InsertData(FormViewInsertEventArgs e)
 {
     //当前用户所在部门
     string procName = Session["proc_name"].ToString();
     //当前用户输入的批量卡号
     string lotId = e.Values["lot_id"].ToString().ToUpper();
     //检测部门名称
     if (lotId.Contains("S") && procName != "样板" && procName != "MRB")
     {
         throw new Exception("当前只能录入生产板批量卡!");
     }
     //检测部门名称
     if (!lotId.Contains("S") && procName != "PMC" && procName != "MRB")
     {
         throw new Exception("当前只能录入样板批量卡!");
     }
     //检测是否正确批量卡号
     if (!ydOperateLotCard.IsLotCardId(ref lotId) && !ydOperateSampleLotCard.IsSampleLotCardId(ref lotId))
     {
         //非数字返回失败
         throw new Exception("您输入了一个不合格的批量卡号 " + lotId + " !");
     }
     //数据适配器
     //当前添加语句对象
     //当前数据库连接
     using (var da = new t_scrap_record_loseTableAdapter())
     using (var cmd = da.Adapter.InsertCommand)
     using (var conn = cmd.Connection)
     {
         //打开数据库连接
         conn.Open();
         //开启事务
         using (var tran = conn.BeginTransaction())
         {
             //设置事务
             da.Transaction = tran;
             //试运行
             try
             {
                 //检测批量卡是否正确
                 //正则表达式
                 string strReg = @"^[1-9]\d(0[1-9]|1[012])-S?[1-9]\d{0,4}$";
                 //检测是否正确批量卡号
                 if (!Regex.IsMatch(lotId, strReg))
                 {
                     //非数字返回失败
                     throw new Exception("您输入了一个不合格的批量卡号 " + lotId + " !");
                 }
                 //提供遗失板的部门名称文本框
                 var tb = (TextBox)fvLoseRecordAdd.FindControl("txtProcName");
                 //提供遗失板的部门名称
                 procName = tb.Text;
                 //保存一条记录到数据库
                 if (!ydOperateBalanceLotCrad.InsertOneRecord(cmd, lotId, e, procName, false, null))
                 {
                     //失败就直接返回
                     return false;
                 }
                 //提交事务
                 tran.Commit();
                 //返回成功
                 return true;
             }
             catch (Exception ex)
             {
                 //回滚事务
                 tran.Rollback();
                 //非数字返回失败
                 throw new Exception(ex.Message);
             }
         }
     }
 }