/// <summary> /// 得到所有耗材采购单 /// </summary> /// <returns></returns> public DataTable GetOrders() { var FirstOrders = _ConPurchaseOrderReposity.GetAll(); var result = from Order in FirstOrders join User in _SMOWMSDbContext.coreUsers on Order.PURCHASER equals User.USER_ID select new ConPurchaseOrderOutputDto() { POID = Order.POID, NAME = Order.NAME, REALID = Order.REALID, STATUS = Order.STATUS, PURCHASER = Order.PURCHASER, PURCHASERNAME = User.USER_NAME, CREATEDATE = Order.CREATEDATE, TIME = "" }; var OrderTable = LINQToDataTable.ToDataTable(result); foreach (DataRow Row in OrderTable.Rows) { ConPurchaseOrderRow conPurchaseOrderRow = _ConPurchaseOrderRowReposity.GetByPOID(Row["POID"].ToString()).FirstOrDefault(); Consumables consumables = _consumablesRepository.GetByID(conPurchaseOrderRow.CID).FirstOrDefault(); Row["Image"] = consumables.IMAGE; Row["STATUSNAME"] = Enum.GetName(typeof(PurchaseOrderStatus), int.Parse(Row["STATUS"].ToString())); Row["TIME"] = DateTime.Parse(Row["CREATEDATE"].ToString()).ToShortDateString(); } return(OrderTable); }
/// <summary> /// 耗材采购单创建 /// </summary> /// <param name="inputDto"></param> /// <returns></returns> public ReturnInfo AddPurchaseOrder(ConPurchaseOrderInputDto inputDto) { ReturnInfo RInfo = new ReturnInfo(); if (string.IsNullOrEmpty(inputDto.NAME)) { throw new Exception("采购单名称不能为空!"); } if (string.IsNullOrEmpty(inputDto.PURCHASER)) { throw new Exception("请选择采购人!"); } String MaxID = _ConPurchaseOrderReposity.GetMaxID(); //获取最大采购单ID String NowID = Helper.GenerateID("PO", MaxID); //产生采购单编号 inputDto.POID = NowID; try { ConPurchaseOrder purchaseOrder = new ConPurchaseOrder(); purchaseOrder = Mapper.Map <ConPurchaseOrderInputDto, ConPurchaseOrder>(inputDto); purchaseOrder.STATUS = 0; _unitOfWork.RegisterNew(purchaseOrder); foreach (var Row in inputDto.RowData) { ConPurchaseOrderRow purchaseOrderRow = new ConPurchaseOrderRow(); purchaseOrderRow = Mapper.Map <ConPurchaseOrderRowInputDto, ConPurchaseOrderRow>(Row); purchaseOrderRow.POID = NowID; purchaseOrderRow.CREATEUSER = inputDto.CREATEUSER; purchaseOrderRow.CREATEDATE = DateTime.Now; purchaseOrderRow.MODIFYUSER = inputDto.MODIFYUSER; purchaseOrderRow.MODIFYDATE = DateTime.Now; purchaseOrderRow.STATUS = 0; _unitOfWork.RegisterNew(purchaseOrderRow); } bool result = _unitOfWork.Commit(); RInfo.IsSuccess = result; RInfo.ErrorInfo = inputDto.POID; return(RInfo); } catch (Exception ex) { _unitOfWork.Rollback(); RInfo.IsSuccess = false; RInfo.ErrorInfo = ex.Message; return(RInfo); } }
/// <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 UpdatePruchaseOrder(ConPurchaseOrderInputDto inputDto) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); ConPurchaseOrder Order = _ConPurchaseOrderReposity.GetById(inputDto.POID).FirstOrDefault(); if (Order == null) { sb.Append("该采购单不存在,请检查!"); RInfo.IsSuccess = false; RInfo.ErrorInfo = sb.ToString(); return(RInfo); } else //采购单存在 { Order.REALID = inputDto.REALID; Order.NAME = inputDto.NAME; Order.VID = inputDto.VID; Order.PURCHASER = inputDto.PURCHASER; Order.MODIFYDATE = inputDto.MODIFYDATE; Order.MODIFYUSER = inputDto.MODIFYUSER; _unitOfWork.RegisterDirty(Order); //如果原来存在行项,则先删除 List <ConPurchaseOrderRow> Rows = _ConPurchaseOrderRowReposity.GetByPOID(inputDto.POID).ToList(); if (Rows.Count > 0) //如果存在行项 { foreach (ConPurchaseOrderRow Row in Rows) { _unitOfWork.RegisterDeleted(Row); } } ///添加新的选择行项 foreach (ConPurchaseOrderRowInputDto Row in inputDto.RowData) { ConPurchaseOrderRow purchaseOrderRow = new ConPurchaseOrderRow(); purchaseOrderRow = Mapper.Map <ConPurchaseOrderRowInputDto, ConPurchaseOrderRow>(Row); purchaseOrderRow.POID = inputDto.POID; purchaseOrderRow.CREATEUSER = inputDto.CREATEUSER; purchaseOrderRow.CREATEDATE = DateTime.Now; purchaseOrderRow.MODIFYUSER = inputDto.MODIFYUSER; purchaseOrderRow.MODIFYDATE = DateTime.Now; purchaseOrderRow.STATUS = 0; _unitOfWork.RegisterNew(purchaseOrderRow); } 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); } } }