/// <summary> /// 根据报修单编号返回报废单信息 /// </summary> /// <param name="ID"></param> /// <returns></returns> public SOInputDto GetByID(string ID) { SOInputDto ro = Mapper.Map <AssScrapOrder, SOInputDto>(_AssScrapOrderRepository.GetByID(ID).AsNoTracking().FirstOrDefault()); ro.Rows = _AssScrapOrderRowRepository.GetBySOID(ID).AsNoTracking().ToList(); return(ro); }
/// <summary> /// 更新报废单行项 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnInfo UpdateAssScrapOrderRow(SOInputDto entity) { ReturnInfo RInfo = new ReturnInfo(); try { AssScrapOrderRow assROR = new AssScrapOrderRow(); AssQuant assQuant = new AssQuant(); foreach (AssScrapOrderRow Row in entity.Rows) { assROR = _AssScrapOrderRowRepository.GetByID(entity.SOID, Row.SOROWID).FirstOrDefault(); if (assROR == null) { throw new Exception("报废单行项:" + Row.SOROWID + "不存在!"); } assROR.SCRAPQTY = assROR.SCRAPQTY - Convert.ToDecimal(Row.RETURNQTY); //报废数量 if (Row.SCRAPQTY < 0) { throw new Exception("还原数量不能超过报废总数"); } assROR.RETURNQTY = Convert.ToDecimal(assROR.RETURNQTY) + Row.RETURNQTY; if (assROR.SCRAPQTY == 0) //如果全部维修完毕,则修改行项状态 { assROR.STATUS = 1; } //更新OrderRow数据 _unitOfWork.RegisterDirty(assROR); //往AssProcessRecord表添加数据 CreateSR(entity, Row, PROCESSMODE.报废还原); Assets assetsSN = _AssetsRepository.GetByID(Row.ASSID).FirstOrDefault(); if (assetsSN == null) { throw new Exception("不存在条码为:" + Row.ASSID + "的资产!"); } assetsSN.STATUS = (Int32)STATUS.闲置; _unitOfWork.RegisterDirty(assetsSN); } RInfo.IsSuccess = true; RInfo.ErrorInfo = "维修单行项更新成功!"; } catch (Exception ex) { _unitOfWork.Rollback(); RInfo.IsSuccess = false; RInfo.ErrorInfo = ex.Message; } return(RInfo); }
/// <summary> /// 数据加载 /// </summary> public void Bind() { try { SOInputDto SOData = autofacConfig.assScrapOrderService.GetByID(SOID); coreUser User = autofacConfig.coreUserService.GetUserByID(SOData.SCRAPMAN); lblDealMan.Text = User.USER_NAME; DatePicker.Value = SOData.SCRAPDATE; if (String.IsNullOrEmpty(SOData.NOTE)) { lblNote.Text = SOData.NOTE; } DataTable tableAssets = new DataTable(); //未开启SN的资产列表 tableAssets.Columns.Add("ASSID"); //资产编号 tableAssets.Columns.Add("NAME"); //资产名称 tableAssets.Columns.Add("IMAGE"); //资产图片 tableAssets.Columns.Add("SN"); //序列号 tableAssets.Columns.Add("STATUS"); //行项状态 foreach (AssScrapOrderRow Row in SOData.Rows) { Assets assets = autofacConfig.orderCommonService.GetAssetsByID(Row.ASSID); if (Row.STATUS == 0) { tableAssets.Rows.Add(Row.ASSID, assets.NAME, assets.IMAGE, Row.SN, "已报废"); } else { tableAssets.Rows.Add(Row.ASSID, assets.NAME, assets.IMAGE, Row.SN, "已还原"); } } if (tableAssets.Rows.Count > 0) { ListAssetsSN.DataSource = tableAssets; ListAssetsSN.DataBind(); } if (Client.Session["Role"].ToString() == "SMOSECUser") { plButton.Visible = false; } //如果维修单已完成,则隐藏维修单处理按钮 if (SOData.STATUS == 1) { plButton.Visible = false; } } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 更新报废单 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnInfo UpdateAssScrapOrder(SOInputDto entity) { ReturnInfo RInfo = new ReturnInfo(); try { if (String.IsNullOrEmpty(entity.SOID)) { throw new Exception("报废单编号不能为空"); } AssScrapOrder aro = _AssScrapOrderRepository.GetByID(entity.SOID).FirstOrDefault(); if (aro != null) { if (aro.STATUS == 1) { throw new Exception("只有已报废的的才能还原"); } else { List <AssScrapOrderRow> Rows = _AssScrapOrderRowRepository.GetScrapBySOID(aro.SOID).AsNoTracking().ToList(); if (Rows.Count == entity.Rows.Count) { aro.STATUS = 1; } //更新报修单行项 aro.MODIFYDATE = entity.MODIFYDATE; aro.MODIFYUSER = entity.MODIFYUSER; _unitOfWork.RegisterDirty(aro); UpdateAssScrapOrderRow(entity); bool result = _unitOfWork.Commit(); RInfo.IsSuccess = result; RInfo.ErrorInfo = "修改成功!"; return(RInfo); } } else { throw new Exception("报修单不存在!"); } } catch (Exception ex) { _unitOfWork.Rollback(); RInfo.IsSuccess = false; RInfo.ErrorInfo = ex.Message; return(RInfo); } }
/// <summary> /// 新增报废单行项 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnInfo AddAssScrapOrderRow(SOInputDto entity) { ReturnInfo RInfo = new ReturnInfo(); try { String SOROWID = "0"; AssQuant assQuant = new AssQuant(); if (entity.Rows != null) { foreach (AssScrapOrderRow Row in entity.Rows) { SOROWID = (int.Parse(SOROWID) + 1).ToString(); Row.SOID = entity.SOID; Row.SOROWID = SOROWID; if (GetRowByRowID(Row.SOID, Row.SOROWID) != null) { throw new Exception("报废单行项号已存在!"); } _unitOfWork.RegisterNew(Row); //往AssProcessRecord表添加数据 CreateSR(entity, Row, PROCESSMODE.清理报废); Assets assetsSN = _AssetsRepository.GetByID(Row.ASSID).FirstOrDefault(); if (assetsSN == null) { throw new Exception("不存在条码为:" + Row.ASSID + "的资产!"); } assetsSN.STATUS = (Int32)STATUS.报废; _unitOfWork.RegisterDirty(assetsSN); } RInfo.IsSuccess = true; RInfo.ErrorInfo = "维修单行项创建成功!"; } } catch (Exception ex) { _unitOfWork.Rollback(); RInfo.IsSuccess = false; RInfo.ErrorInfo = ex.Message; } return(RInfo); }
/// <summary> /// 新增报废单 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnInfo AddAssScrapOrder(SOInputDto entity) { ReturnInfo RInfo = new ReturnInfo(); if (String.IsNullOrEmpty(entity.SCRAPMAN)) { throw new Exception("报废人不能为空"); } if (String.IsNullOrEmpty(entity.SCRAPDATE.ToString())) { throw new Exception("报废日期不能为空"); } String MaxID = _AssScrapOrderRepository.GetMaxID(); //获取当前最大报修单编号 String NowID = Helper.GeneratePRID("S", MaxID); //生成最新的报修单编号 entity.SOID = NowID; try { AssScrapOrder OrderData = new AssScrapOrder(); OrderData.SOID = NowID; OrderData.SCRAPMAN = entity.SCRAPMAN; OrderData.SCRAPDATE = entity.SCRAPDATE; OrderData.NOTE = entity.NOTE; OrderData.STATUS = entity.STATUS; OrderData.CREATEDATE = entity.CREATEDATE; OrderData.CREATEUSER = entity.CREATEUSER; _unitOfWork.RegisterNew(OrderData); AddAssScrapOrderRow(entity); bool result = _unitOfWork.Commit(); RInfo.IsSuccess = result; RInfo.ErrorInfo = "创建成功!"; return(RInfo); } catch (Exception ex) { _unitOfWork.Rollback(); RInfo.IsSuccess = false; RInfo.ErrorInfo = ex.Message; return(RInfo); } }
/// <summary> /// 加载数据 /// </summary> public void Bind() { try { SOInputDto SOData = autofacConfig.assScrapOrderService.GetByID(SOID); coreUser User = autofacConfig.coreUserService.GetUserByID(SOData.SCRAPMAN); lblDealMan.Text = User.USER_NAME; lblDealMan.Tag = SOData.SCRAPMAN; DatePicker.Value = SOData.SCRAPDATE; if (String.IsNullOrEmpty(SOData.NOTE)) { lblNote.Text = SOData.NOTE; } DataTable tableAssets = new DataTable(); //未开启SN的资产列表 tableAssets.Columns.Add("SOROWID"); //报修单行项编号 tableAssets.Columns.Add("ASSID"); //资产编号 tableAssets.Columns.Add("NAME"); //资产名称 tableAssets.Columns.Add("IMAGE"); //图片编号 tableAssets.Columns.Add("SN"); //序列号 foreach (AssScrapOrderRow Row in SOData.Rows) { Assets assets = autofacConfig.orderCommonService.GetAssetsByID(Row.ASSID); if (Row.STATUS == 0) { tableAssets.Rows.Add(Row.SOROWID, Row.ASSID, assets.NAME, Row.IMAGE, Row.SN); } } if (tableAssets.Rows.Count > 0) { ListAssetsSN.DataSource = tableAssets; ListAssetsSN.DataBind(); } } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 创建ProcessRecorder表数据 /// </summary> /// <param name="Data"></param> /// <param name="RowData"></param> /// <param name="Type"></param> public void CreateSR(SOInputDto Data, AssScrapOrderRow RowData, PROCESSMODE Type) { AssProcessRecord assProcessRecord = new AssProcessRecord { ASSID = RowData.ASSID, //资产条码 CREATEDATE = DateTime.Now, //创建时间 CREATEUSER = Data.CREATEUSER, //创建用户 HANDLEDATE = DateTime.Now, //处理时间 MODIFYDATE = DateTime.Now, //修改时间 MODIFYUSER = Data.MODIFYUSER, //修改用户 }; switch (Type) { case PROCESSMODE.清理报废: assProcessRecord.QUANTITY = RowData.SCRAPQTY; assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.清理报废; assProcessRecord.HANDLEMAN = Data.CREATEUSER; break; case PROCESSMODE.报废还原: assProcessRecord.QUANTITY = RowData.SCRAPQTY; assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.报废还原; assProcessRecord.HANDLEMAN = Data.MODIFYUSER; break; } assProcessRecord.ASSID = RowData.ASSID; switch (Type) //根据操作模式,输入操作内容 { case PROCESSMODE.清理报废: assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "报废了物品编号为" + RowData.ASSID + "的资产"; break; case PROCESSMODE.报废还原: assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "还原了物品编号为" + RowData.ASSID + "的资产"; break; } _unitOfWork.RegisterNew(assProcessRecord); }
/// <summary> /// 确认还原 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Press(object sender, EventArgs e) { try { if (getNum() == 0) { throw new Exception("请选择确认行项!"); } SOInputDto BasicData = new SOInputDto(); BasicData.MODIFYDATE = DateTime.Now; BasicData.MODIFYUSER = Client.Session["UserID"].ToString(); BasicData.SOID = SOID; List <AssScrapOrderRow> Data = new List <AssScrapOrderRow>(); foreach (ListViewRow Row in ListAssetsSN.Rows) { frmAssSNSDLayout Layout = Row.Control as frmAssSNSDLayout; Data.Add(Layout.getData()); } BasicData.Rows = Data; ReturnInfo r = autofacConfig.assScrapOrderService.UpdateAssScrapOrder(BasicData); if (r.IsSuccess) { ShowResult = ShowResult.Yes; Form.Close(); Toast("资产还原成功!"); } else { throw new Exception(r.ErrorInfo); } } catch (Exception ex) { Toast(ex.Message); } }