/// <summary> /// 得到用户的采购单列表 /// </summary> /// <param name="UserId">用户编号</param> /// <returns></returns> public DataTable GetOrders(string UserId) { var area = _assPurchaseOrderRepository.GetAll(); if (!string.IsNullOrEmpty(UserId)) { area = area.Where(a => a.PURCHASER == UserId); } var list = from assPurchaseOrder in area join user in SMOWMSDbContext.coreUsers on assPurchaseOrder.PURCHASER equals user.USER_ID orderby assPurchaseOrder.CREATEDATE descending select new AssPOListOutputDto() { REALID = assPurchaseOrder.REALID, POID = assPurchaseOrder.POID, NAME = assPurchaseOrder.NAME, PURCHASER = assPurchaseOrder.PURCHASER, PURCHASERNAME = user.USER_NAME, STATUS = assPurchaseOrder.STATUS, STATUSNAME = "", CREATEDATE = assPurchaseOrder.CREATEDATE, Time = "" }; var temTable = LINQToDataTable.ToDataTable(list); foreach (DataRow row in temTable.Rows) { AssPurchaseOrderRow assPurchaseOrderRow = _assPoRowRepository.GetByPOID(row["POID"].ToString()).FirstOrDefault(); AssTemplate assTemplate = _assTemplateRepository.GetById(assPurchaseOrderRow.TEMPLATEID).FirstOrDefault(); row["Image"] = assTemplate.IMAGE; int status = int.Parse(row["STATUS"].ToString()); row["STATUSNAME"] = Enum.GetName(typeof(PurchaseOrderStatus), status); row["Time"] = DateTime.Parse(row["CREATEDATE"].ToString()).ToShortDateString(); } return(temTable); }
/// <summary> /// 更新采购单信息 /// </summary> /// <param name="inputDto">采购单信息</param> /// <returns></returns> public ReturnInfo UpdatePurchaseOrderOnly(AssPurchaseOrderInputDto inputDto) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); string ValidateInfo = Helper.BasicValidate(inputDto).ToString(); sb.Append(ValidateInfo); if (sb.Length == 0) { try { AssPurchaseOrder purchaseOrder = _assPurchaseOrderRepository.GetById(inputDto.POID).FirstOrDefault(); if (purchaseOrder != null) { purchaseOrder.VID = inputDto.VID; purchaseOrder.PURCHASER = inputDto.PURCHASER; purchaseOrder.REALID = inputDto.REALID; purchaseOrder.MODIFYUSER = inputDto.MODIFYUSER; purchaseOrder.NAME = inputDto.NAME; purchaseOrder.MODIFYDATE = DateTime.Now; _unitOfWork.RegisterDirty(purchaseOrder); } //得到原有行项的所有TemplateId List <string> TempIds = _assPoRowRepository.GetAll().Where(a => a.POID == inputDto.POID) .Select(a => a.TEMPLATEID).ToList(); //得到现在行项的所有TemplateId List <string> NowTempIds = inputDto.RowInputDtos.Select(a => a.TEMPLATEID).ToList(); //得到更新的 List <string> Update = TempIds.Intersect(NowTempIds).ToList(); //得到新增的 List <string> Add = NowTempIds.Except(TempIds).ToList(); //得到删除的 List <string> Delete = TempIds.Except(NowTempIds).ToList(); foreach (var templateId in Add) { var info = inputDto.RowInputDtos.Find(a => a.TEMPLATEID == templateId); AssPurchaseOrderRow row = new AssPurchaseOrderRow { POID = inputDto.POID, CREATEDATE = DateTime.Now, CREATEUSER = inputDto.CREATEUSER, MODIFYDATE = DateTime.Now, MODIFYUSER = inputDto.CREATEUSER, QUANTPURCHASED = info.QUANT, // Time = DateTime.Now, REALPRICE = info.PRICE, QUANTRETREATED = 0, QUANTSTORED = 0, STATUS = (int)PurchaseOrderStatus.采购中, TEMPLATEID = templateId }; _unitOfWork.RegisterNew(row); } foreach (var templateId in Delete) { AssPurchaseOrderRow row = _assPoRowRepository .GetByPOIDandTemplateID(purchaseOrder.POID, templateId).FirstOrDefault(); if (row != null) { _unitOfWork.RegisterDeleted(row); } } foreach (var templateId in Update) { var info = inputDto.RowInputDtos.Find(a => a.TEMPLATEID == templateId); AssPurchaseOrderRow row = _assPoRowRepository .GetByPOIDandTemplateID(purchaseOrder.POID, templateId).FirstOrDefault(); if (row != null) { row.POID = inputDto.POID; row.CREATEDATE = DateTime.Now; row.CREATEUSER = inputDto.CREATEUSER; row.MODIFYDATE = DateTime.Now; row.MODIFYUSER = inputDto.CREATEUSER; row.QUANTPURCHASED = info.QUANT; row.REALPRICE = info.PRICE; // row.Time = DateTime.Now; row.QUANTRETREATED = 0; row.QUANTSTORED = 0; row.STATUS = (int)PurchaseOrderStatus.采购中; row.TEMPLATEID = templateId; _unitOfWork.RegisterDirty(row); } } bool result = _unitOfWork.Commit(); RInfo.IsSuccess = result; RInfo.ErrorInfo = inputDto.POID; 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="inputDto">采购入库相关信息</param> /// <returns></returns> public ReturnInfo InstorageAss(AssInStorageInputDto inputDto) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); string ValidateInfo = Helper.BasicValidate(inputDto).ToString(); sb.Append(ValidateInfo); if (sb.Length == 0) { try { //先确定数量是否超出 AssPurchaseOrderRow row = _assPoRowRepository .GetByPOIDandTemplateID(inputDto.POID, inputDto.TEMPLATEID).FirstOrDefault(); if (row != null) { if (row.QUANTPURCHASED < row.QUANTSTORED + inputDto.SnList.Count) { RInfo.IsSuccess = false; RInfo.ErrorInfo = "入库量超过采购量!"; return(RInfo); } else { row.QUANTSTORED = row.QUANTSTORED + inputDto.SnList.Count; var asspo = _assPurchaseOrderRepository.GetById(inputDto.POID).FirstOrDefault(); if (asspo != null) { asspo.STATUS = (int)PurchaseOrderStatus.入库中; if (row.QUANTPURCHASED == row.QUANTSTORED) { row.STATUS = (int)PurchaseOrderStatus.已完成; //判断是否需要将整个采购单状态改为"已完成" //得到采购单的行项数 var count = _assPoRowRepository.GetByPOID(inputDto.POID).Count(); //得到已完成的行项数 var count2 = _assPoRowRepository.GetByPOID(inputDto.POID) .Count(a => a.STATUS == (int)PurchaseOrderStatus.已完成); if (count == count2 + 1) { //包括当前行项,所有行项均已完成,则更新整个采购单状态为"已完成" asspo.STATUS = (int)PurchaseOrderStatus.已完成; _unitOfWork.RegisterDirty(asspo); } } else { row.STATUS = (int)PurchaseOrderStatus.入库中; } } _unitOfWork.RegisterDirty(row); } } AssTemplate assTemplate = _assTemplateRepository.GetById(inputDto.TEMPLATEID).AsNoTracking() .FirstOrDefault(); if (assTemplate != null) { for (int i = 0; i < inputDto.SnList.Count; i++) { //资产入库 string MaxId = _assetsRepository.GetMaxID(); string ASSID = Helper.GenerateASSID("ASS", MaxId, i); Assets assets = new Assets { STATUS = (int)STATUS.闲置, ASSID = ASSID, BUYDATE = DateTime.Now, CREATEUSER = inputDto.UserId, EXPIRYDATE = DateTime.Now.AddYears(1), IMAGE = assTemplate.IMAGE, ISINWAREHOUSE = 1, ISLOCKED = 0, MODIFYUSER = inputDto.UserId, NAME = assTemplate.NAME, NOTE = assTemplate.NOTE, PRICE = assTemplate.PRICE, SLID = inputDto.SLID, WAREID = inputDto.WAREID, STID = inputDto.STID, SPECIFICATION = assTemplate.SPECIFICATION, TYPEID = assTemplate.TYPEID, UNIT = assTemplate.UNIT, VENDOR = assTemplate.VENDOR, CREATEDATE = DateTime.Now, MODIFYDATE = DateTime.Now, SN = inputDto.SnList[i], TEMPLATEID = inputDto.TEMPLATEID }; _unitOfWork.RegisterNew(assets); var pr = new AssProcessRecord { ASSID = ASSID, CREATEDATE = DateTime.Now, CREATEUSER = inputDto.UserId, HANDLEDATE = DateTime.Now, HANDLEMAN = inputDto.UserId, MODIFYDATE = DateTime.Now, MODIFYUSER = inputDto.UserId, PROCESSCONTENT = inputDto.UserId + "入库了" + ASSID + ",数量为1", PROCESSMODE = (int)PROCESSMODE.入库, QUANTITY = 1 }; _unitOfWork.RegisterNew(pr); string SN = inputDto.SnList[i]; //添加采购入库关联表 AssPurchaseOrderInstorage instorage = new AssPurchaseOrderInstorage { POID = inputDto.POID, SN = SN, TEMPLATEID = inputDto.TEMPLATEID, // Time = DateTime.Now }; _unitOfWork.RegisterNew(instorage); } bool result = _unitOfWork.Commit(); RInfo.IsSuccess = result; RInfo.ErrorInfo = ""; return(RInfo); } else { RInfo.IsSuccess = false; RInfo.ErrorInfo = "该资产模板不存在!"; 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="inputDto">采购单数据</param> /// <returns></returns> public ReturnInfo AddPurchaseOrder(AssPurchaseOrderInputDto inputDto) { ReturnInfo RInfo = new ReturnInfo(); StringBuilder sb = new StringBuilder(); if (string.IsNullOrEmpty(inputDto.POID)) { string MaxId = _assPurchaseOrderRepository.GetMaxId(); string PoId = Helper.GenerateIDEx2("P", MaxId); //产生资产编号 inputDto.POID = PoId; } string ValidateInfo = Helper.BasicValidate(inputDto).ToString(); sb.Append(ValidateInfo); if (sb.Length == 0) { try { AssPurchaseOrder purchaseOrder = Mapper.Map <AssPurchaseOrderInputDto, AssPurchaseOrder>(inputDto); purchaseOrder.STATUS = (int)PurchaseOrderStatus.采购中; purchaseOrder.CREATEDATE = DateTime.Now; purchaseOrder.MODIFYDATE = DateTime.Now; _unitOfWork.RegisterNew(purchaseOrder); foreach (var inputDtoRow in inputDto.RowInputDtos) { AssPurchaseOrderRow row = new AssPurchaseOrderRow { QUANTPURCHASED = inputDtoRow.QUANT, REALPRICE = inputDtoRow.PRICE, TEMPLATEID = inputDtoRow.TEMPLATEID, STATUS = (int)PurchaseOrderStatus.采购中, CREATEUSER = inputDtoRow.CREATEUSER, MODIFYUSER = inputDtoRow.MODIFYUSER, CREATEDATE = DateTime.Now, MODIFYDATE = DateTime.Now, // Time = DateTime.Now, POID = inputDto.POID }; _unitOfWork.RegisterNew(row); } bool result = _unitOfWork.Commit(); RInfo.IsSuccess = result; RInfo.ErrorInfo = inputDto.POID; 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); } }