/// <summary> /// 数据加载 /// </summary> public void Bind() { try { DataTable tableAssets = new DataTable(); //未开启SN的资产列表 tableAssets.Columns.Add("CID"); //资产编号 tableAssets.Columns.Add("NAME"); //资产名称 tableAssets.Columns.Add("LOCATIONID"); //区域编号 tableAssets.Columns.Add("LOCATIONNAME"); //区域名称 tableAssets.Columns.Add("IMAGE"); //图片编号 tableAssets.Columns.Add("QUANTITY"); //空闲数量 tableAssets.Columns.Add("SELECTQTY"); //选择数量 if (RowData.Count > 0) { foreach (ConsumablesOrderRow Row in RowData) { ConQuant conQuant = autofacConfig.orderCommonService.GetUnUseConByCID(Row.CID, Row.LOCATIONID); Consumables con = autofacConfig.orderCommonService.GetConsByID(Row.CID); AssLocation Loc = autofacConfig.assLocationService.GetByID(Row.LOCATIONID); tableAssets.Rows.Add(Row.CID, con.NAME, Row.LOCATIONID, Loc.NAME, con.IMAGE, conQuant.QUANTITY, Row.QTY); } } ListAssets.DataSource = tableAssets; ListAssets.DataBind(); } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 数据加载 /// </summary> public void Bind() { try { DataTable tableAssets = new DataTable(); //未开启SN的资产列表 tableAssets.Columns.Add("CID"); //资产编号 tableAssets.Columns.Add("NAME"); //资产名称 tableAssets.Columns.Add("LOCID"); // 仓库/存储类型/库位 tableAssets.Columns.Add("LOCNAME"); // 仓库名称/类型名称/库位名称 tableAssets.Columns.Add("IMAGE"); //图片编号 tableAssets.Columns.Add("QUANTITY"); //空闲数量 tableAssets.Columns.Add("SELECTQTY"); //选择数量 if (RowData.Count > 0) { foreach (ConsumablesOrderRow Row in RowData) { ConQuant conQuant = autofacConfig.orderCommonService.GetUnUseConByCID(Row.CID, Row.WAREID, Row.STID, Row.SLID); Consumables con = autofacConfig.consumablesService.GetConsById(Row.CID); WHStorageLocationOutputDto WHLoc = autofacConfig.wareHouseService.GetSLByID(Row.WAREID, Row.STID, Row.SLID); tableAssets.Rows.Add(Row.CID, con.NAME, Row.WAREID + "/" + Row.STID + "/" + Row.SLID, WHLoc.WARENAME + "/" + WHLoc.STNAME + "/" + WHLoc.SLNAME, con.IMAGE, conQuant.QUANTITY, Row.QTY); } } ListCons.DataSource = tableAssets; ListCons.DataBind(); } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 数据加载 /// </summary> public void Bind() { try { foreach (ConsumablesOrderRow data in RowData) { foreach (ListViewRow row in ListCons.Rows) { frmOrderCreateLayout Layout = row.Control as frmOrderCreateLayout; string[] LCData = Layout.lblLocation.BindDataValue.ToString().Split('/'); string cId = Layout.lblName.BindDataValue.ToString(); if (data.CID == cId && data.WAREID == LCData[0] && data.STID == LCData[1] && data.SLID == LCData[2]) { data.QTY = (Decimal)Layout.numNumber.Value; } } } DataTable tableAssets = new DataTable(); //未开启SN的资产列表 tableAssets.Columns.Add("CID"); //资产编号 tableAssets.Columns.Add("NAME"); //资产名称 tableAssets.Columns.Add("LOCID"); // 仓库/存储类型/库位 tableAssets.Columns.Add("LOCNAME"); // 仓库名称/类型名称/库位名称 tableAssets.Columns.Add("IMAGE"); //图片编号 tableAssets.Columns.Add("QUANTITY"); //空闲数量 tableAssets.Columns.Add("SELECTQTY"); //选择数量 if (RowData.Count > 0) { foreach (ConsumablesOrderRow Row in RowData) { ConQuant conQuant = autofacConfig.orderCommonService.GetUnUseConByCID(Row.CID, Row.WAREID, Row.STID, Row.SLID); Consumables con = autofacConfig.consumablesService.GetConsById(Row.CID); WHStorageLocationOutputDto WHLoc = autofacConfig.wareHouseService.GetSLByID(Row.WAREID, Row.STID, Row.SLID); tableAssets.Rows.Add(Row.CID, con.NAME, Row.WAREID + "/" + Row.STID + "/" + Row.SLID, WHLoc.WARENAME + "/" + WHLoc.STNAME + "/" + WHLoc.SLNAME, con.IMAGE, conQuant.QUANTITY, Row.QTY); } } ListCons.DataSource = tableAssets; ListCons.DataBind(); } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 耗材扫描 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void barcodeScanner1_BarcodeScanned(object sender, BarcodeResultArgs e) { try { string CID = e.Value.ToUpper(); var con = _autofacConfig.consumablesService.GetConsById(CID); String STID = (lblST.Tag == null) ? null : lblST.Tag.ToString(); String SLID = (lblSL.Tag == null) ? null : lblSL.Tag.ToString(); if (con != null) { ConInventoryResult result = _autofacConfig.ConInventoryService.GetResultByCID(IID, CID); if (result != null) { if (result.RESULT.ToString() != "0") { throw new Exception("该耗材已盘点完毕,请勿重复盘点!"); } frmCIResultTotalLayout frm = new frmCIResultTotalLayout(); ConQuant conq = _autofacConfig.consumablesService.GetQuants(lblWareHouse.Tag.ToString(), STID, SLID, CID); frm.lblNumber.Text = conq.QUANTITY.ToString(); frm.CID = CID; Form.ShowDialog(frm); } else //盘盈 { frmCIResultTotalLayout frm = new frmCIResultTotalLayout(); ConQuant conq = _autofacConfig.consumablesService.GetQuants(lblWareHouse.Tag.ToString(), STID, SLID, CID); frm.plNumber.Visible = false; frm.Height = 120; frm.CID = CID; Form.ShowDialog(frm); } } else { Toast("未找到对应的耗材!"); } } catch (Exception ex) { Toast(ex.Message); } }
/// <summary> /// 耗材销售单退货 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnInfo RetConSalesOrder(ConSOOutboundInputDto entity) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); foreach (ConSalesOrderRowInputDto Row in entity.RowDatas) { //新增退库行项 List <ConSalesOrderOutbound> orderOutList = _ConSalesOrderOutboundReposity.GetBySOIDAndSOROWID(entity.SOID, Row.SOROWID).AsNoTracking().ToList(); ConSalesOrderRow orderRow = _ConSalesOrderRowReposity.GetOrderRowByCID(entity.SOID, Row.CID).FirstOrDefault(); decimal hasRet = orderRow.QUANTRETREATED; //已经退货数 decimal waitRet = Row.QUANTRETREATED; //等待退货数 foreach (ConSalesOrderOutbound orderOut in orderOutList) { if (waitRet > 0) { if (hasRet >= orderOut.QUANT) { hasRet -= orderOut.QUANT; } else { //新增退库单数据 decimal canRetNum = orderOut.QUANT - hasRet; //此行项可退库数量 ConSalesOrderRetiring orderRetiring = _ConSalesOrderRetiringReposity.GetBySOIDAndWareID(entity.SOID, Row.SOROWID, orderOut.WAREID, orderOut.STID, orderOut.SLID).FirstOrDefault(); if (orderRetiring == null) { ConSalesOrderRetiring orderNewRetiring = new ConSalesOrderRetiring(); orderNewRetiring.SOID = entity.SOID; orderNewRetiring.SOROWID = Row.SOROWID; orderNewRetiring.WAREID = orderOut.WAREID; orderNewRetiring.STID = orderOut.STID; orderNewRetiring.SLID = orderOut.SLID; if (waitRet > canRetNum) { waitRet -= canRetNum; orderNewRetiring.QUANT = canRetNum; } else { orderNewRetiring.QUANT = waitRet; waitRet = 0; } _unitOfWork.RegisterNew(orderNewRetiring); //新增或者修改ConQuant数据 ConQuant conQuant = _ConQuantRepository.GetByCID(Row.CID, orderNewRetiring.WAREID, orderNewRetiring.STID, orderNewRetiring.SLID).FirstOrDefault(); if (conQuant == null) //当前库位不存在库存,则新增 { ConQuant newQuant = new ConQuant(); newQuant.CID = Row.CID; newQuant.WAREID = orderNewRetiring.WAREID; newQuant.STID = orderNewRetiring.STID; newQuant.SLID = orderNewRetiring.SLID; newQuant.QUANTITY = orderNewRetiring.QUANT; newQuant.CREATEUSER = entity.CREATEUSER; newQuant.CREATEDATE = DateTime.Now; newQuant.MODIFYUSER = entity.CREATEUSER; newQuant.MODIFYDATE = DateTime.Now; _unitOfWork.RegisterNew(newQuant); } else //当前库位存在库存,则添加数量 { conQuant.QUANTITY += orderNewRetiring.QUANT; _unitOfWork.RegisterDirty(conQuant); } hasRet -= orderNewRetiring.QUANT; } else { decimal retNumThisTime = 0; if (waitRet > canRetNum) { waitRet -= canRetNum; retNumThisTime = canRetNum; orderRetiring.QUANT = orderRetiring.QUANT + canRetNum; } else { orderRetiring.QUANT = orderRetiring.QUANT + waitRet; retNumThisTime = waitRet; waitRet = 0; } _unitOfWork.RegisterDirty(orderRetiring); //新增或者修改ConQuant数据 ConQuant conQuant = _ConQuantRepository.GetByCID(Row.CID, orderRetiring.WAREID, orderRetiring.STID, orderRetiring.SLID).FirstOrDefault(); if (conQuant == null) //当前库位不存在库存,则新增 { ConQuant newQuant = new ConQuant(); newQuant.CID = Row.CID; newQuant.WAREID = orderRetiring.WAREID; newQuant.STID = orderRetiring.STID; newQuant.SLID = orderRetiring.SLID; newQuant.QUANTITY = retNumThisTime; newQuant.CREATEUSER = entity.CREATEUSER; newQuant.CREATEDATE = DateTime.Now; newQuant.MODIFYUSER = entity.CREATEUSER; newQuant.MODIFYDATE = DateTime.Now; _unitOfWork.RegisterNew(newQuant); } else //当前库位存在库存,则添加数量 { conQuant.QUANTITY += retNumThisTime; _unitOfWork.RegisterDirty(conQuant); } hasRet -= retNumThisTime; } } } } //修改OrderRow行项表退库数量 ConSalesOrderRow conSalesOrderRow = _ConSalesOrderRowReposity.GetOrderRowByCID(entity.SOID, Row.CID).FirstOrDefault(); conSalesOrderRow.QUANTRETREATED = conSalesOrderRow.QUANTRETREATED + Row.QUANTRETREATED; if (conSalesOrderRow.QUANTRETREATED > conSalesOrderRow.QUANTOUT) { throw new Exception("退货数量不能大于出库数量!"); } _unitOfWork.RegisterDirty(conSalesOrderRow); } try { _unitOfWork.Commit(); RInfo.IsSuccess = true; return(RInfo); } catch (Exception ex) { _unitOfWork.Rollback(); sb.Append(ex.Message); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } }
/// <summary> /// 开始盘点 /// </summary> /// <param name="inputDto">开始盘点时,传给后台的数据</param> /// <returns></returns> public ReturnInfo AddConInventoryResult(AddCIResultInputDto inputDto) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); if (IsExist(inputDto.IID)) { RInfo.IsSuccess = true; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } else { try { //更新盘点单状态为盘点中 var inventory = _conInventoryRepository.GetConInventoryByID(inputDto.IID).FirstOrDefault(); if (inventory != null) { //添加当前的盘点单行项 List <string> conList = _conQuantRepository.GetInventoryCons(inventory.LOCATIONID).Select(a => a.CID).ToList(); inventory.STATUS = (int)InventoryStatus.盘点中; inventory.TOTAL = conList.Count; inventory.RESULTCOUNT = 0; _unitOfWork.RegisterDirty(inventory); foreach (var con in conList) { ConQuant conQuant = _conQuantRepository.GetByCID(con, inventory.LOCATIONID).FirstOrDefault(); ConInventoryResult result = new ConInventoryResult { IID = inputDto.IID, CID = con, RESULT = 0, TOTAL = conQuant.QUANTITY, CREATEDATE = DateTime.Now, CREATEUSER = inputDto.UserId, MODIFYDATE = DateTime.Now, MODIFYUSER = inputDto.UserId }; _unitOfWork.RegisterNew(result); //更新盘点的物品状态为锁定 var conq = _conQuantRepository.GetQuants(inputDto.LocationId, con).FirstOrDefault(); if (conq != null) { conq.ISLOCKED = 1; _unitOfWork.RegisterDirty(conq); } } } _unitOfWork.Commit(); RInfo.IsSuccess = true; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } catch (Exception ex) { _unitOfWork.Rollback(); sb.Append(ex.Message); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } } }
/// <summary> /// 根据库位等编号和耗材编号得到耗材库存 /// </summary> /// <param name="WAREID">仓库编号</param> /// <param name="STID">类型编号</param> /// <param name="SLID">库位编号</param> /// <param name="CID">耗材编号</param> /// <returns></returns> public ConQuant GetQuants(string WAREID, string STID, string SLID, string CID) { ConQuant conQuant = _conQuantRepository.GetByCID(CID, WAREID, STID, SLID).FirstOrDefault(); return(conQuant); }
/// <summary> /// 耗材采购单退库 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnInfo ReturnConPurchaseOrder(ConPOInStoInputDto entity) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); foreach (ConPurchaseOrderRowInputDto row in entity.RowDatas) { ConPurchaseOrderReturn hasReturn = _conPurchaseOrderReturnReposity.GetByPOIDAndWareID(entity.POID, row.POROWID, row.WAREID, row.STID, row.SLID).FirstOrDefault(); if (hasReturn == null) //不存在退库行项 { ConPurchaseOrderReturn orderReturn = new ConPurchaseOrderReturn(); orderReturn.POID = entity.POID; orderReturn.POROWID = row.POROWID; orderReturn.WAREID = row.WAREID; orderReturn.STID = row.STID; orderReturn.SLID = row.SLID; orderReturn.QUANT = row.QUANTRETREATED; _unitOfWork.RegisterNew(orderReturn); } else //已存在退库行项 { hasReturn.QUANT = hasReturn.QUANT + row.QUANTRETREATED; _unitOfWork.RegisterDirty(hasReturn); } ConPurchaseOrderRow orderRow = _ConPurchaseOrderRowReposity.GetOrderRowByCID(entity.POID, row.CID).FirstOrDefault(); orderRow.QUANTRETREATED = orderRow.QUANTRETREATED + row.QUANTRETREATED; if (orderRow.QUANTRETREATED > orderRow.QUANTSTORED) { throw new Exception("实际退库数量不可大于可退库数量!"); } _unitOfWork.RegisterDirty(orderRow); ConQuant conq = _conQuantRepository.GetByCID(row.CID, row.WAREID, row.STID, row.SLID).FirstOrDefault(); if (conq == null) //如果原先不存在相关库存,则添加库存信息 { throw new Exception("不存在耗材编号为" + row.CID + "的库存,请检查!"); } else { conq.QUANTITY = conq.QUANTITY - row.QUANTRETREATED; if (conq.QUANTITY < 0) { throw new Exception("耗材" + row.CID + "库存不足,无法退库!"); } else if (conq.QUANTITY == 0) { _unitOfWork.RegisterDeleted(conq); } else { _unitOfWork.RegisterDirty(conq); } } } try { _unitOfWork.Commit(); RInfo.IsSuccess = true; return(RInfo); } catch (Exception ex) { _unitOfWork.Rollback(); sb.Append(ex.Message); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } }
/// <summary> /// 耗材采购单入库 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnInfo InStoConPurhcaseOrder(ConPOInStoInputDto entity) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); if (String.IsNullOrEmpty(entity.WAREID) || String.IsNullOrEmpty(entity.STID) || String.IsNullOrEmpty(entity.SLID)) { throw new Exception("请扫描调入库位!"); } int thisOver = 0; //此次完成入库的行项数 foreach (ConPurchaseOrderRowInputDto row in entity.RowDatas) { ConPurchaseOrderInstorage hasInSto = _conPurchaseOrderInstorageReposity.GetByPOIDAndWareID(entity.POID, row.POROWID, entity.WAREID, entity.STID, entity.SLID).FirstOrDefault(); if (hasInSto == null) //不存在入库行项 { ConPurchaseOrderInstorage instorage = new ConPurchaseOrderInstorage(); instorage.POID = entity.POID; instorage.POROWID = row.POROWID; instorage.WAREID = entity.WAREID; instorage.STID = entity.STID; instorage.SLID = entity.SLID; instorage.QUANT = row.QUANTSTORED; _unitOfWork.RegisterNew(instorage); } else //已存在入库行项 { hasInSto.QUANT = hasInSto.QUANT + row.QUANTSTORED; _unitOfWork.RegisterDirty(hasInSto); } //OrderRow表修改入库数量以及状态 ConPurchaseOrderRow orderRow = _ConPurchaseOrderRowReposity.GetOrderRowByCID(entity.POID, row.CID).FirstOrDefault(); orderRow.QUANTSTORED = orderRow.QUANTSTORED + row.QUANTSTORED; orderRow.STATUS = (int)PurchaseOrderStatus.入库中; if (orderRow.QUANTSTORED == orderRow.QUANTPURCHASED) { orderRow.STATUS = (int)PurchaseOrderStatus.已完成; thisOver += 1; } if (orderRow.QUANTSTORED > orderRow.QUANTPURCHASED) { throw new Exception("实际入库数量不可大于可入库数量!"); } _unitOfWork.RegisterDirty(orderRow); ConQuant con = _conQuantRepository.GetByCID(row.CID, entity.WAREID, entity.STID, entity.SLID).FirstOrDefault(); if (con == null) //如果原先不存在相关库存,则添加库存信息 { ConQuant conQuant = new ConQuant(); conQuant.CID = row.CID; conQuant.WAREID = entity.WAREID; conQuant.STID = entity.STID; conQuant.SLID = entity.SLID; conQuant.QUANTITY = row.QUANTSTORED; conQuant.CREATEDATE = DateTime.Now; conQuant.CREATEUSER = entity.CREATEUSER; conQuant.MODIFYDATE = DateTime.Now; conQuant.MODIFYUSER = entity.CREATEUSER; _unitOfWork.RegisterNew(conQuant); } else { con.QUANTITY = con.QUANTITY + row.QUANTSTORED; _unitOfWork.RegisterDirty(con); } } //order表修改状态 ConPurchaseOrder conPurchaseOrder = _ConPurchaseOrderReposity.GetById(entity.POID).FirstOrDefault(); int allRowsCount = _ConPurchaseOrderRowReposity.GetByPOID(entity.POID).ToList().Count; int hasOverCount = _ConPurchaseOrderRowReposity.GetOrderRowsByStatus(entity.POID, (int)PurchaseOrderStatus.已完成).ToList().Count; if (allRowsCount == hasOverCount + thisOver) { conPurchaseOrder.STATUS = (int)PurchaseOrderStatus.已完成; } else { conPurchaseOrder.STATUS = (int)PurchaseOrderStatus.入库中; } _unitOfWork.RegisterDirty(conPurchaseOrder); try { _unitOfWork.Commit(); RInfo.IsSuccess = true; return(RInfo); } catch (Exception ex) { _unitOfWork.Rollback(); sb.Append(ex.Message); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } }
/// <summary> /// 添加入库单 /// </summary> /// <param name="inputDto">入库单信息</param> /// <returns></returns> public ReturnInfo AddWarehouseReceipt(WarehouseReceiptInputDto inputDto) { ReturnInfo rInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); string maxId = _warehouseReceiptRepository.GetMaxId(); string WRId = Helper.GenerateIDEx("WR", maxId); inputDto.WRID = WRId; sb.Append(Helper.BasicValidate(inputDto).ToString()); if (sb.Length == 0) { var warehouseReceipt = Mapper.Map <WarehouseReceiptInputDto, WarehouseReceipt>(inputDto); warehouseReceipt.CREATEDATE = DateTime.Now; warehouseReceipt.MODIFYDATE = DateTime.Now; try { _unitOfWork.RegisterNew(warehouseReceipt); foreach (var rowInput in inputDto.RowInputDtos) { WarehouseReceiptRow row = new WarehouseReceiptRow { CID = rowInput.CID, MONEY = rowInput.MONEY, CREATEUSER = inputDto.CREATEUSER, CREATEDATE = DateTime.Now, MODIFYUSER = inputDto.MODIFYUSER, MODIFYDATE = DateTime.Now, NOTE = rowInput.NOTE, WRID = WRId, QUANTITY = rowInput.QUANTITY }; _unitOfWork.RegisterNew(row); //修改库存 ConQuant quant = _conQuantRepository.GetQuants(inputDto.LOCATIONID, rowInput.CID) .FirstOrDefault(); if (quant != null) { quant.QUANTITY = quant.QUANTITY - rowInput.QUANTITY; quant.MODIFYDATE = DateTime.Now; quant.MODIFYUSER = inputDto.MODIFYUSER; _unitOfWork.RegisterDirty(quant); } else { ConQuant Quant = new ConQuant { QUANTITY = rowInput.QUANTITY, MODIFYDATE = DateTime.Now, MODIFYUSER = inputDto.MODIFYUSER, CID = rowInput.CID, CREATEUSER = inputDto.CREATEUSER, CREATEDATE = DateTime.Now, LOCATIONID = inputDto.LOCATIONID }; _unitOfWork.RegisterNew(Quant); } //添加处理记录 var pr = new AssProcessRecord { ASSID = "", CID = rowInput.CID, CREATEDATE = DateTime.Now, CREATEUSER = inputDto.CREATEUSER, HANDLEDATE = DateTime.Now, HANDLEMAN = inputDto.HANDLEMAN, MODIFYDATE = DateTime.Now, MODIFYUSER = inputDto.MODIFYUSER, PROCESSCONTENT = inputDto.CREATEUSER + "入库了" + row.CID + ",数量为" + rowInput.QUANTITY, PROCESSMODE = (int)PROCESSMODE.入库, QUANTITY = rowInput.QUANTITY }; _unitOfWork.RegisterNew(pr); } bool result = _unitOfWork.Commit(); rInfo.IsSuccess = result; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } catch (Exception ex) { _unitOfWork.Rollback(); sb.Append(ex.Message); rInfo.IsSuccess = false; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } } else { rInfo.IsSuccess = false; rInfo.ErrorInfo = sb.ToString(); return(rInfo); } }
/// <summary> /// 更新报修单行项 /// </summary> /// <param name="entity"></param> /// <returns></returns> public void UpdateAssTransferOrderRow(TOInputDto entity, PROCESSMODE ProType, OperateType type) { AssTransferOrderRow assROR = new AssTransferOrderRow(); foreach (AssTransferOrderRow Row in entity.Rows) { assROR = _AssTransferOrderRowRepository.GetByID(entity.TOID, Row.TOROWID).FirstOrDefault(); if (assROR == null) { throw new Exception("调拨单行项:" + Row.TOROWID + "不存在!"); } switch (ProType) { case PROCESSMODE.调拨确认: assROR.INTRANSFERQTY = assROR.INTRANSFERQTY - Convert.ToDecimal(Row.TRANSFEREDQTY); //确认调拨数量 if (Row.INTRANSFERQTY < 0) { throw new Exception("确认数量不能超过申请调拨数量!"); } assROR.TRANSFEREDQTY = Convert.ToDecimal(assROR.TRANSFEREDQTY) + Row.TRANSFEREDQTY; break; case PROCESSMODE.调拨取消: assROR.INTRANSFERQTY = assROR.INTRANSFERQTY - Convert.ToDecimal(Row.TRANSFERCANCELQTY); //取消调拨数量 if (Row.INTRANSFERQTY < 0) { throw new Exception("取消数量不能超过申请调拨数量!"); } assROR.TRANSFERCANCELQTY = Convert.ToDecimal(assROR.TRANSFERCANCELQTY) + Row.TRANSFERCANCELQTY; break; } if (assROR.INTRANSFERQTY == 0) //如果全部调拨完毕,则修改行项状态 { if (ProType == PROCESSMODE.调拨确认) { assROR.STATUS = 1; //调拨完成 } else { assROR.STATUS = 2; //调拨取消 } } //更新OrderRow数据 _unitOfWork.RegisterDirty(assROR); if (type == OperateType.资产) { Assets SNData = _AssetsRepository.GetByID(Row.ASSID).FirstOrDefault(); if (ProType == PROCESSMODE.调拨确认) { SNData.LOCATIONID = entity.DESLOCATIONID; //区域 } //修改AssetsSN表中资产状态 SNData.STATUS = (Int32)STATUS.闲置; //资产状态 _unitOfWork.RegisterDirty(SNData); //新建调拨行项 } else { ConQuant assQuant = new ConQuant(); //修改Quant表数据 assQuant.CID = Row.CID; //资产条码 if (ProType == PROCESSMODE.调拨确认) { assQuant.QUANTITY = Convert.ToDecimal(Row.TRANSFEREDQTY); //确认调入数量 assQuant.LOCATIONID = entity.DESLOCATIONID; //区域 } else { assQuant.QUANTITY = Convert.ToDecimal(Row.TRANSFERCANCELQTY); //取消调入数量 assQuant.LOCATIONID = Row.LOCATIONID; //区域 } ConQuant aq = _ConQuantRepository.GetByCID(Row.CID, assQuant.LOCATIONID).FirstOrDefault(); if (aq == null) //如果不存在当前库存地数据,则创建一条新数据 { assQuant.CREATEDATE = DateTime.Now; assQuant.CREATEUSER = entity.MODIFYUSER; assQuant.MODIFYDATE = DateTime.Now; assQuant.MODIFYUSER = entity.MODIFYUSER; _unitOfWork.RegisterNew(assQuant); } else //已有数据,修改库存数量 { aq.QUANTITY = aq.QUANTITY + assQuant.QUANTITY; _unitOfWork.RegisterDirty(aq); } } //往AssProcessRecord表添加数据 CreatePR(entity, Row, ProType); } }
/// <summary> /// 新增调拨单行项 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnInfo AddAssTransferOrderRow(TOInputDto entity, OperateType type) { ReturnInfo RInfo = new ReturnInfo(); try { String TOROWID = "0"; ConQuant assQuant = new ConQuant(); if (entity.Rows != null) { foreach (AssTransferOrderRow Row in entity.Rows) { TOROWID = (int.Parse(TOROWID) + 1).ToString(); Row.TOID = entity.TOID; Row.TOROWID = TOROWID; if (GetRowByRowID(Row.TOID, Row.TOROWID) != null) { throw new Exception("调拨单行项号已存在!"); } _unitOfWork.RegisterNew(Row); //往AssProcessRecord表添加数据 CreatePR(entity, Row, PROCESSMODE.调拨); if (type == OperateType.资产) { Assets assetsSN = _AssetsRepository.GetByID(Row.ASSID).FirstOrDefault(); if (assetsSN == null) { throw new Exception("不存在条码为:" + Row.ASSID + "的资产。"); } assetsSN.STATUS = (Int32)STATUS.调拨中; _unitOfWork.RegisterDirty(assetsSN); } else { ConQuant aq = _ConQuantRepository.GetByCID(Row.CID, Row.LOCATIONID).FirstOrDefault(); if (aq == null) { throw new Exception("库存中不存在编号为+" + Row.CID + "的耗材,请检查!"); } aq.QUANTITY = aq.QUANTITY - Row.INTRANSFERQTY; if (aq.QUANTITY > 0) { //更新数据 _unitOfWork.RegisterDirty(aq); } else if (aq.QUANTITY == 0) { _unitOfWork.RegisterDeleted(aq); } else { throw new Exception("所需调拨数量超过库存数!"); } } } RInfo.IsSuccess = true; RInfo.ErrorInfo = "调拨单行项创建成功!"; } } catch (Exception ex) { _unitOfWork.Rollback(); RInfo.IsSuccess = false; RInfo.ErrorInfo = ex.Message; } return(RInfo); }