public void Setup() { // Mock _configuration = new Mock <IConfiguration>(MockBehavior.Loose); _auditRepo = new Mock <IAuditRepo>(MockBehavior.Loose); _logger = new Mock <ILogger <AuditController> >(MockBehavior.Loose); // Mapper var config = new MapperConfiguration(cfg => { cfg.AddProfile(new AutoMapperConfig()); }); _mapper = new Mapper(config); // Config Filler <Audit> pFiller = new Filler <Audit>(); Filler <AuditDTO> pFillerDTO = new Filler <AuditDTO>(); audit = pFiller.Create(); auditDTO = pFillerDTO.Create(); // Service under test _auditController = new AuditController(_configuration.Object, _mapper, _auditRepo.Object, _logger.Object); }
public async Task Reject(AuditDTO audit) { var data = await this.GetTheDataAsync(audit.Id); // 修改主数据状态 { data.Status = 2; data.AuditeTime = audit.AuditTime; data.AuditUserId = audit.AuditUserId; await UpdateAsync(data); } // 解锁货位 在自动入库的时候,货位可能被入库锁锁定了 { var localIds = data.InStorDetails.Select(s => s.LocalId).ToList(); var listLocal = await Db.GetIQueryable <PB_Location>().Where(w => localIds.Contains(w.Id) && w.LockType == 1).ToListAsync(); foreach (var item in listLocal) { item.LockType = 0; } var localSvc = _ServiceProvider.GetRequiredService <IPB_LocationBusiness>(); await localSvc.UpdateDataAsync(listLocal); } // 更新收货单数据 if (!data.RecId.IsNullOrEmpty()) { var recSvc = _ServiceProvider.GetRequiredService <ITD_ReceivingBusiness>(); await recSvc.UpdateByInStorage(data.RecId); } }
public async Task Reject(AuditDTO audit) { var data = await this.GetTheDataAsync(audit.Id); // 修改出库状态 { data.Status = 2; data.AuditeTime = audit.AuditTime; data.AuditUserId = audit.AuditUserId; await UpdateAsync(data); } // 解锁货位 在自动出库的时候,货位可能被出库锁锁定了 { var localIds = data.OutStorDetails.Select(s => s.LocalId).ToList(); var listLocal = await Db.GetIQueryable <PB_Location>().Where(w => localIds.Contains(w.Id) && w.LockType == 2).ToListAsync(); foreach (var item in listLocal) { item.LockType = 0; } var localSvc = _ServiceProvider.GetRequiredService <IPB_LocationBusiness>(); await localSvc.UpdateDataAsync(listLocal); } }
public async Task Approval(AuditDTO audit) { var data = await this.GetEntityAsync(audit.Id); if (audit.AuditType == AuditType.Confirm) { data.Status = 1; data.ConfirmTime = audit.AuditTime; data.ConfirmUserId = audit.AuditUserId; } if (audit.AuditType == AuditType.Cancel) { data.Status = 2; data.ConfirmTime = audit.AuditTime; data.ConfirmUserId = audit.AuditUserId; } if (audit.AuditType == AuditType.Approve) { data.Status = 3; data.AuditeTime = audit.AuditTime; data.AuditUserId = audit.AuditUserId; } if (audit.AuditType == AuditType.Reject) { data.Status = 4; data.AuditeTime = audit.AuditTime; data.AuditUserId = audit.AuditUserId; } await UpdateAsync(data); }
public ActionResult Create(AuditDTO audit) { MethodBase method = MethodBase.GetCurrentMethod(); try { Audit newAudit = Mapper.Map <Audit>(audit); newAudit.IsValid = true; newAudit.Id = 0; var response = AuditRepo.Create(newAudit); if (response > 0) { CreateLog(Enums.Success, GetMethodCode(method), LogLevel.Information); return(Ok(response)); } else { CreateLog(Enums.BadRequest, GetMethodCode(method), LogLevel.Warning); return(BadRequest(response)); } } catch (Exception ex) { return(HandleError(ex.Message, GetMethodCode(method))); } }
public async Task Approval(AuditDTO audit) { audit.StorId = _Op.Property.DefaultStorageId; audit.AuditUserId = _Op.UserId; audit.AuditTime = DateTime.Now; await _tD_SendBus.Approval(audit); }
public HttpResponseMessage AddAudit(int id, AuditDTO data) { var ordData = new OrderData(id); ordData.AddAuditMessage(data.Message, "Conference", UserInfo.DisplayName, "False"); ordData.Save(); return(Request.CreateResponse(HttpStatusCode.OK, NBrightRepository.Instance.GetOrders(PortalSettings.PortalId).FirstOrDefault(o => o.ItemId == id))); }
public async Task ComplatedInByTray(string id) { var audit = new AuditDTO(); audit.Id = id; audit.StorId = _Op.Property.DefaultStorageId; audit.AuditUserId = _Op.UserId; audit.AuditTime = DateTime.Now; audit.AuditType = AuditType.Approve; await _tD_InStorageBus.Approve(audit); }
public async Task <ReturnVal <bool> > ListToRegion(AuditDTO dto) { var sc = await this._user.Get(AppUserFlagData.OrgRegion); var rev = await this._courseSvc.List2RegionAsync(new CourseAuditCommand(dto.CourseID, this._user.UserId, this._user.UserName, sc.Code, sc.Name, dto.Desc)); await this._partnerSvc.CourseToList(rev.Creator.Code, dto.CourseID, sc.Name, sc.Code, 0); await this._puserSvc.ListedCourse(rev.Creator.Code, dto.CourseID); return(this.RetOk(true)); }
public async Task Reject(AuditDTO audit) { var data = await this.GetEntityAsync(audit.Id); // 修改主数据状态 { data.Status = 2; data.AuditeTime = audit.AuditTime; data.AuditUserId = audit.AuditUserId; await UpdateAsync(data); } }
public async Task <ReturnVal <bool> > ListToRegionRemove(AuditDTO dto) { var sc = await this._user.GetRegion(); //_ = await this._user.Get(AppUserFlagData.OrgRegion); var coures = await this._courseSvc.UnList2RegionAsync(new CourseAuditCommand(dto.CourseID, this._user.UserId, this._user.UserName, sc.Code, sc.Name, dto.Desc)); await this._partnerSvc.CourselistRemove(dto.CourseID, sc.Code, PartnerType.Region); await this._puserSvc.ListCourseRemove(coures.Creator.Code, dto.CourseID); return(this.RetOk(true)); }
public async Task Audit(AuditDTO audit) { audit.StorId = _Op.Property.DefaultStorageId; audit.AuditUserId = _Op.UserId; audit.AuditTime = DateTime.Now; if (audit.AuditType == AuditType.Approve) { await _tD_OutStorageBus.Approve(audit); } else { await _tD_OutStorageBus.Reject(audit); } }
public async Task <ReturnVal <bool> > RegionReject(AuditDTO dto) { var sc = await this._user.Get(AppUserFlagData.OrgRegion); await this._courseSvc.RegionRejectAsync(new CourseAuditCommand(dto.CourseID , this._user.UserId , this._user.UserName , sc.Code , sc.Name , dto.Desc )); return(RetOk(true)); }
public ActionResult <ObjectResult> Audit([FromBody] AuditDTO auditDTO) { try { OrderService orderService = new OrderService(Startup.BeePlaceDataBaseConnectionString); OrderItemAudit orderItemAudit = new OrderItemAudit(); orderItemAudit.IdOrderItem = auditDTO.IdOrderItem; orderItemAudit.Name = auditDTO.Name; orderItemAudit.Type = auditDTO.Type; orderItemAudit.FilePath = auditDTO.FilePath; orderItemAudit.DateCreated = DateTime.Now; orderItemAudit.DateUpdated = DateTime.Now; orderService.CreateAudit(orderItemAudit); return(StatusCode((int)HttpStatusCode.OK)); } catch (Exception e) { return(StatusCode((int)HttpStatusCode.InternalServerError)); } }
public List <AuditDTO> GetAuditBS(string itemsPerPage, string pageno) { List <AuditDTO> auditDTOList = new List <AuditDTO>(); List <AuditDO> auditDOList = new List <AuditDO>(); AdminRepository adminDAobj = new AdminRepository(); auditDOList = adminDAobj.GetAuditDA(itemsPerPage, pageno); foreach (AuditDO auditDO in auditDOList) { AuditDTO auditDTO = new AuditDTO(); auditDTO.RowNum = auditDO.AuditId.ToString(); auditDTO.TotalCount = auditDO.TotalCount.ToString(); auditDTO.AuditId = auditDO.AuditId; auditDTO.CreatedON = auditDO.CreatedON; auditDTO.RequestId = auditDO.RequestId; auditDTO.UserName = auditDO.UserName; auditDTOList.Add(auditDTO); } return(auditDTOList); }
public ActionResult Delete(AuditDTO audit) { MethodBase method = MethodBase.GetCurrentMethod(); try { if (audit.Id > 0) { Audit delAudit = Mapper.Map <Audit>(audit); AuditRepo.Delete(delAudit); CreateLog(Enums.Success, GetMethodCode(method), LogLevel.Information); return(Ok(true)); } else { CreateLog(Enums.BadRequest, GetMethodCode(method), LogLevel.Information); return(BadRequest()); } } catch (Exception ex) { return(HandleError(ex.Message, GetMethodCode(method))); } }
public async Task Approve(AuditDTO audit) { var now = DateTime.Now; var data = await this.GetTheDataAsync(audit.Id); var detail = data.BadDetails; var dicMUnit = detail.GroupBy(s => new { s.Material.Id, s.Material.MeasureId }).Select(s => new { s.Key.Id, s.Key.MeasureId }).ToDictionary(k => k.Id, v => v.MeasureId); PB_Location defaultBadLocation = null; // 找到默认的报损货位 { var localSvc = Db.GetIQueryable <PB_Location>(); //这里要修改,要从货区的类型来过滤 defaultBadLocation = await localSvc.Where(w => w.StorId == audit.StorId && w.PB_StorArea.Type == "Bad").OrderByDescending(o => o.IsDefault).FirstOrDefaultAsync(); if (defaultBadLocation == null) { throw new Exception("没有指定默认报损货位"); } } var lmSvc = _ServiceProvider.GetRequiredService <IIT_LocalMaterialBusiness>(); var ldSvc = _ServiceProvider.GetRequiredService <IIT_LocalDetailBusiness>(); // 原库位出库 { var badGroup = detail .GroupBy(w => new { w.FromLocalId, w.TrayId, w.ZoneId, w.MaterialId, w.BatchNo, w.BarCode }) .Select(s => new { s.Key.FromLocalId, s.Key.TrayId, s.Key.ZoneId, s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, BadNum = s.Sum(o => o.BadNum) }) .ToList(); var localIds = badGroup.Select(s => s.FromLocalId).ToList(); var trayIds = badGroup.Select(s => s.TrayId).ToList(); var zoneIds = badGroup.Select(s => s.ZoneId).ToList(); var materialIds = badGroup.Select(s => s.MaterialId).ToList(); var batchNos = badGroup.Select(s => s.BatchNo).ToList(); var barCodes = badGroup.Select(s => s.BarCode).ToList(); //修改库存 { var lmQuery = Db.GetIQueryable <IT_LocalMaterial>(); if (localIds.Count > 0) { lmQuery = lmQuery.Where(w => localIds.Contains(w.LocalId)); } if (trayIds.Count > 0) { lmQuery = lmQuery.Where(w => trayIds.Contains(w.TrayId)); } if (zoneIds.Count > 0) { lmQuery = lmQuery.Where(w => zoneIds.Contains(w.ZoneId)); } if (materialIds.Count > 0) { lmQuery = lmQuery.Where(w => materialIds.Contains(w.MaterialId)); } if (batchNos.Count > 0) { lmQuery = lmQuery.Where(w => batchNos.Contains(w.BatchNo)); } if (barCodes.Count > 0) { lmQuery = lmQuery.Where(w => barCodes.Contains(w.BarCode)); } var listLM = await lmQuery.ToListAsync(); var listDel = new List <IT_LocalMaterial>(); var listUpdate = new List <IT_LocalMaterial>(); var listRB = new List <IT_RecordBook>(); foreach (var bad in badGroup) { var lm = listLM.Where(w => w.StorId == audit.StorId && w.LocalId == bad.FromLocalId && w.TrayId == bad.TrayId && w.ZoneId == bad.ZoneId && w.MaterialId == bad.MaterialId && w.BatchNo == bad.BatchNo && w.BarCode == bad.BarCode).SingleOrDefault(); if (lm == null || lm.Num < bad.BadNum) { throw new Exception($"没有找到对应物料的库存数据/库存数量不够({bad.BadNum})"); } if (lm.Num == bad.BadNum) { listDel.Add(lm); } else if (lm.Num > bad.BadNum) { lm.Num -= bad.BadNum; listUpdate.Add(lm); } // 增加(报损-出)BadOut台帐 var rbOut = new IT_RecordBook() { Id = IdHelper.GetId(), RefCode = data.Code, Type = "BadOut", FromStorId = audit.StorId, FromLocalId = bad.FromLocalId, ToStorId = audit.StorId, ToLocalId = defaultBadLocation.Id, MaterialId = bad.MaterialId, MeasureId = dicMUnit[bad.MaterialId], BarCode = bad.BarCode, BatchNo = bad.BatchNo, Num = bad.BadNum, CreateTime = audit.AuditTime, CreatorId = audit.AuditUserId, Deleted = false }; listRB.Add(rbOut); // 增加(报损-入)BadOut台帐 var rbIn = new IT_RecordBook() { Id = IdHelper.GetId(), RefCode = data.Code, Type = "BadIn", FromStorId = audit.StorId, FromLocalId = bad.FromLocalId, ToStorId = audit.StorId, ToLocalId = defaultBadLocation.Id, MaterialId = bad.MaterialId, MeasureId = dicMUnit[bad.MaterialId], BarCode = bad.BarCode, BatchNo = bad.BatchNo, Num = bad.BadNum, CreateTime = audit.AuditTime, CreatorId = audit.AuditUserId, Deleted = false }; listRB.Add(rbIn); } if (listDel.Count > 0) { await lmSvc.DeleteDataAsync(listDel); } if (listUpdate.Count > 0) { await lmSvc.UpdateDataAsync(listUpdate); } // 保存数据台帐 var rbSvc = _ServiceProvider.GetRequiredService <IIT_RecordBookBusiness>(); await rbSvc.AddDataAsync(listRB); } // 修改库存明细 { var ldQuery = Db.GetIQueryable <IT_LocalDetail>(); if (localIds.Count > 0) { ldQuery = ldQuery.Where(w => localIds.Contains(w.LocalId)); } if (trayIds.Count > 0) { ldQuery = ldQuery.Where(w => trayIds.Contains(w.TrayId)); } if (zoneIds.Count > 0) { ldQuery = ldQuery.Where(w => zoneIds.Contains(w.ZoneId)); } if (materialIds.Count > 0) { ldQuery = ldQuery.Where(w => materialIds.Contains(w.MaterialId)); } if (batchNos.Count > 0) { ldQuery = ldQuery.Where(w => batchNos.Contains(w.BatchNo)); } if (barCodes.Count > 0) { ldQuery = ldQuery.Where(w => barCodes.Contains(w.BarCode)); } var listLD = await ldQuery.ToListAsync(); var listDel = new List <IT_LocalDetail>(); var listUpdate = new List <IT_LocalDetail>(); foreach (var bad in badGroup) { var badNum = bad.BadNum; var lds = listLD.Where(w => w.StorId == audit.StorId && w.LocalId == bad.FromLocalId && w.TrayId == bad.TrayId && w.ZoneId == bad.ZoneId && w.MaterialId == bad.MaterialId && w.BatchNo == bad.BatchNo && w.BarCode == bad.BarCode).OrderBy(o => o.InTime).ToList(); if (lds.Sum(s => s.Num) < badNum) { throw new Exception($"库存(明细)数量不够({bad.BadNum})"); } foreach (var item in lds) { if (item.Num <= badNum) { listDel.Add(item); badNum -= item.Num.GetValueOrDefault(0); } else { item.Num -= badNum; listUpdate.Add(item); badNum = 0; } if (badNum == 0) { break; } } } if (listDel.Count > 0) { await ldSvc.DeleteDataAsync(listDel); } if (listUpdate.Count > 0) { await ldSvc.UpdateDataAsync(listUpdate); } } } //默认报损库位入库 { var badGroup = detail .GroupBy(w => new { w.MaterialId, w.BatchNo, w.BarCode }) .Select(s => new { s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, BadNum = s.Sum(o => o.BadNum) }) .ToList(); var materialIds = badGroup.Select(s => s.MaterialId).ToList(); var batchNos = badGroup.Select(s => s.BatchNo).ToList(); var barCodes = badGroup.Select(s => s.BarCode).ToList(); // 修改库存 { var lmQuery = Db.GetIQueryable <IT_LocalMaterial>().Where(w => w.StorId == audit.StorId && w.LocalId == defaultBadLocation.Id); if (materialIds.Count > 0) { lmQuery = lmQuery.Where(w => materialIds.Contains(w.MaterialId)); } if (batchNos.Count > 0) { lmQuery = lmQuery.Where(w => batchNos.Contains(w.BatchNo)); } if (barCodes.Count > 0) { lmQuery = lmQuery.Where(w => barCodes.Contains(w.BarCode)); } var listLM = await lmQuery.ToListAsync(); var listAdd = new List <IT_LocalMaterial>(); var listUpdate = new List <IT_LocalMaterial>(); foreach (var bad in badGroup) { var lm = listLM.Where(w => w.StorId == audit.StorId && w.LocalId == defaultBadLocation.Id && w.MaterialId == bad.MaterialId && w.BatchNo == bad.BatchNo && w.BarCode == bad.BarCode).SingleOrDefault(); if (lm != null) { lm.Num += bad.BadNum; listUpdate.Add(lm); } else { lm = new IT_LocalMaterial() { Id = IdHelper.GetId(), StorId = audit.StorId, LocalId = defaultBadLocation.Id, MaterialId = bad.MaterialId, MeasureId = dicMUnit[bad.MaterialId], BatchNo = bad.BatchNo, BarCode = bad.BarCode, Num = bad.BadNum }; listAdd.Add(lm); } } if (listAdd.Count > 0) { await lmSvc.AddDataAsync(listAdd); } if (listUpdate.Count > 0) { await lmSvc.UpdateDataAsync(listUpdate); } } // 增加库存明细 { var listAdd = new List <IT_LocalDetail>(); foreach (var bad in detail) { var ld = new IT_LocalDetail(); ld.Id = IdHelper.GetId(); ld.StorId = audit.StorId; ld.LocalId = defaultBadLocation.Id; ld.MaterialId = bad.MaterialId; ld.MeasureId = dicMUnit[bad.MaterialId]; ld.BatchNo = bad.BatchNo; ld.BarCode = bad.BarCode; ld.InTime = audit.AuditTime; ld.Amount = bad.Amount; ld.CreateTime = now; ld.CreatorId = audit.AuditUserId; ld.Price = bad.Price; ld.Num = bad.BadNum; ld.Deleted = false; listAdd.Add(ld); } if (listAdd.Count > 0) { var localdetailSvc = _ServiceProvider.GetRequiredService <IIT_LocalDetailBusiness>(); await localdetailSvc.AddDataAsync(listAdd); } } } // 修改主数据状态 { data.Status = 1; data.AuditeTime = audit.AuditTime; data.AuditUserId = audit.AuditUserId; await UpdateAsync(data); } }
public IHttpActionResult PostUserActions(AuditDTO model) { try { if (ModelState.IsValid) { if (audittrail.validAppID(model.application_id)) { if (audittrail.GetAppType(model.application_id) == "web") { audit_trail audit = new audit_trail() { id = Guid.NewGuid(), application_id = model.application_id, user_id = model.user_id, action = model.action, date_time = DateTime.Now, device_name = model.device_name, os_version = model.os_version, location = model.location, ip_address = model.ip_address }; db.audit_trail.Add(audit); db.SaveChanges(); if (db.SaveChanges() >= 0) { return(Ok()); } else { return(Conflict()); } } else if (audittrail.GetAppType(model.application_id) == "ios") { audit_trail audit = new audit_trail() { id = Guid.NewGuid(), application_id = model.application_id, user_id = model.user_id, action = model.action, date_time = DateTime.Now, device_name = model.device_name, os_version = model.os_version, location = model.location, ip_address = null }; db.audit_trail.Add(audit); db.SaveChanges(); if (db.SaveChanges() >= 0) { return(Ok()); } else { return(Conflict()); } } else { return(NotFound()); } } else { return(NotFound()); } } return(BadRequest(ModelState)); } catch (Exception e) { return(InternalServerError(e)); } }
public async Task Approve(AuditDTO audit) { var now = DateTime.Now; var data = await this.GetTheDataAsync(audit.Id); var detail = data.InStorDetails; var dicMUnit = detail.Select(s => new { s.MaterialId, s.Material.MeasureId }).GroupBy(g => new { g.MaterialId, g.MeasureId }).ToDictionary(k => k.Key.MaterialId, v => v.Key.MeasureId); // 增加库存明细 { var ldGrout = detail .GroupBy(g => new { g.StorId, g.LocalId, g.TrayId, g.ZoneId, g.MaterialId, g.BatchNo, g.BarCode, g.Price }) .Select(s => new { s.Key.StorId, s.Key.LocalId, s.Key.TrayId, s.Key.ZoneId, s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, s.Key.Price, TotalAmt = s.Sum(o => o.TotalAmt), Num = s.Sum(o => o.Num) }) .ToList(); var listLd = new List <IT_LocalDetail>(); foreach (var item in ldGrout) { var ld = new IT_LocalDetail(); ld.Id = IdHelper.GetId(); ld.StorId = audit.StorId; ld.InStorId = audit.Id; ld.LocalId = item.LocalId; ld.TrayId = item.TrayId; ld.ZoneId = item.ZoneId; ld.MaterialId = item.MaterialId; ld.MeasureId = dicMUnit[item.MaterialId]; ld.BatchNo = item.BatchNo; ld.BarCode = item.BarCode; ld.InTime = audit.AuditTime; ld.Amount = item.TotalAmt; ld.CreateTime = now; ld.CreatorId = audit.AuditUserId; ld.Price = item.Price; ld.Num = item.Num; ld.Deleted = false; listLd.Add(ld); } if (listLd.Count > 0) { var localdetailSvc = _ServiceProvider.GetRequiredService <IIT_LocalDetailBusiness>(); await localdetailSvc.AddDataAsync(listLd); } } // 增加库存 { var lmGrout = detail .GroupBy(g => new { g.StorId, g.LocalId, g.TrayId, g.ZoneId, g.MaterialId, g.BatchNo, g.BarCode }) .Select(s => new { s.Key.StorId, s.Key.LocalId, s.Key.TrayId, s.Key.ZoneId, s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, Num = s.Sum(o => o.Num) }) .ToList(); //查询当前库存记录 var localIds = lmGrout.Select(s => s.LocalId).ToList(); var trayIds = lmGrout.Select(s => s.TrayId).ToList(); var zoneIds = lmGrout.Select(s => s.ZoneId).ToList(); var materIds = lmGrout.Select(s => s.MaterialId).ToList(); var batchNos = lmGrout.Select(s => s.BatchNo).ToList(); var barCodes = lmGrout.Select(s => s.BarCode).ToList(); var lmQuery = Db.GetIQueryable <IT_LocalMaterial>(); lmQuery = lmQuery.Where(w => w.StorId == audit.StorId); if (localIds.Count > 0) { lmQuery = lmQuery.Where(w => localIds.Contains(w.LocalId)); } if (trayIds.Count > 0) { lmQuery = lmQuery.Where(w => trayIds.Contains(w.TrayId)); } if (zoneIds.Count > 0) { lmQuery = lmQuery.Where(w => zoneIds.Contains(w.ZoneId)); } if (materIds.Count > 0) { lmQuery = lmQuery.Where(w => materIds.Contains(w.MaterialId)); } if (batchNos.Count > 0) { lmQuery = lmQuery.Where(w => batchNos.Contains(w.BatchNo)); } if (barCodes.Count > 0) { lmQuery = lmQuery.Where(w => barCodes.Contains(w.BarCode)); } var lmDbData = await lmQuery.ToListAsync(); //处理库存 var localMaterialSvc = _ServiceProvider.GetRequiredService <IIT_LocalMaterialBusiness>(); var listLmAdd = new List <IT_LocalMaterial>(); var listLmUpdate = new List <IT_LocalMaterial>(); foreach (var item in lmGrout) { //如果存再当前相同的物料,就在库存上直接相加 var lmItem = lmDbData.Where(w => w.StorId == item.StorId && w.LocalId == item.LocalId && w.TrayId == item.TrayId && w.ZoneId == item.ZoneId && w.MaterialId == item.MaterialId && w.BatchNo == item.BatchNo && w.BarCode == item.BarCode).SingleOrDefault(); if (lmItem != null) { lmItem.Num += item.Num; listLmUpdate.Add(lmItem); } else { //如果当前库存不存再相同的物料,就增加此物料的记录 var lm = new IT_LocalMaterial(); lm.Id = IdHelper.GetId(); lm.StorId = item.StorId; lm.LocalId = item.LocalId; lm.TrayId = item.TrayId; lm.ZoneId = item.ZoneId; lm.MaterialId = item.MaterialId; lm.MeasureId = dicMUnit[item.MaterialId]; lm.BatchNo = item.BatchNo; lm.BarCode = item.BarCode; lm.Num = item.Num; listLmAdd.Add(lm); } } if (listLmAdd.Count > 0) { await localMaterialSvc.AddDataAsync(listLmAdd); } if (listLmUpdate.Count > 0) { await localMaterialSvc.UpdateDataAsync(listLmUpdate); } } // 处理台帐 { var lmGrout = detail .GroupBy(g => new { g.StorId, g.LocalId, g.TrayId, g.ZoneId, g.MaterialId, g.BatchNo, g.BarCode }) .Select(s => new { s.Key.StorId, s.Key.LocalId, s.Key.TrayId, s.Key.ZoneId, s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, Num = s.Sum(o => o.Num) }) .ToList(); var listRB = new List <IT_RecordBook>(); foreach (var item in lmGrout) { var rb = new IT_RecordBook(); rb.Id = IdHelper.GetId(); rb.RefCode = data.Code; rb.Type = "In"; rb.ToStorId = item.StorId; rb.ToLocalId = item.LocalId; rb.MaterialId = item.MaterialId; rb.MeasureId = dicMUnit[item.MaterialId]; rb.BatchNo = item.BatchNo; rb.BarCode = item.BarCode; rb.Num = item.Num; rb.CreateTime = now; rb.CreatorId = audit.AuditUserId; rb.Deleted = false; listRB.Add(rb); } if (listRB.Count > 0) { var bookSvc = _ServiceProvider.GetRequiredService <IIT_RecordBookBusiness>(); await bookSvc.AddDataAsync(listRB); } } // 处理托盘位置数据 { var dicTray = new Dictionary <string, string>(); foreach (var item in detail) { if (item.TrayId != null && !dicTray.ContainsKey(item.TrayId)) { dicTray.Add(item.TrayId, item.LocalId); } } var trayIds = dicTray.Keys.ToList(); if (trayIds.Count > 0) { var listTray = await Db.GetIQueryable <PB_Tray>().Where(w => trayIds.Contains(w.Id)).ToListAsync(); foreach (var tray in listTray) { tray.LocalId = dicTray[tray.Id]; } var traySvc = _ServiceProvider.GetRequiredService <IPB_TrayBusiness>(); await traySvc.UpdateDataAsync(listTray); } } // 解锁货位 在自动入库的时候,货位可能被入库锁锁定了 { var localIds = detail.Select(s => s.LocalId).ToList(); var listLocal = await Db.GetIQueryable <PB_Location>().Where(w => localIds.Contains(w.Id) && w.LockType == 1).ToListAsync(); //await Db.Update_SqlAsync<PB_Location>(w => localIds.Contains(w.Id) && w.LockType == 1, ("LockType", UpdateType.Equal, 0)); foreach (var item in listLocal) { item.LockType = 0; } var localSvc = _ServiceProvider.GetRequiredService <IPB_LocationBusiness>(); await localSvc.UpdateDataAsync(listLocal); } // 修改主数据状态 { data.Status = 1; data.AuditeTime = audit.AuditTime; data.AuditUserId = audit.AuditUserId; await UpdateAsync(data); } // 更新收货单数据 if (!data.RecId.IsNullOrEmpty()) { var recSvc = _ServiceProvider.GetRequiredService <ITD_ReceivingBusiness>(); await recSvc.UpdateByInStorage(data.RecId); } }
public async Task Approve(AuditDTO audit) { var now = DateTime.Now; var data = await this.GetTheDataAsync(audit.Id); var detail = data.OutStorDetails; var dicMUnit = detail.Select(s => new { s.MaterialId, s.Material.MeasureId }).GroupBy(g => new { g.MaterialId, g.MeasureId }).ToDictionary(k => k.Key.MaterialId, v => v.Key.MeasureId); var lmSvc = _ServiceProvider.GetRequiredService <IIT_LocalMaterialBusiness>(); var ldSvc = _ServiceProvider.GetRequiredService <IIT_LocalDetailBusiness>(); // 减库存明细 { //await UpdateAsync(data); var ldGrout = detail .GroupBy(g => new { g.StorId, g.LocalId, g.TrayId, g.ZoneId, g.MaterialId, g.BatchNo, g.BarCode, g.Price }) .Select(s => new { s.Key.StorId, s.Key.LocalId, s.Key.TrayId, s.Key.ZoneId, s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, s.Key.Price, TotalAmt = s.Sum(o => o.TotalAmt), Num = s.Sum(o => o.OutNum) }) .ToList(); //查询当前库存明细记录 var localIds = ldGrout.Select(s => s.LocalId).ToList(); var trayIds = ldGrout.Select(s => s.TrayId).ToList(); var zoneIds = ldGrout.Select(s => s.ZoneId).ToList(); var materIds = ldGrout.Select(s => s.MaterialId).ToList(); var batchNos = ldGrout.Select(s => s.BatchNo).ToList(); var barCodes = ldGrout.Select(s => s.BarCode).ToList(); var listLd = Db.GetIQueryable <IT_LocalDetail>(); listLd = listLd.Where(w => w.StorId == audit.StorId); if (localIds.Count > 0) { listLd = listLd.Where(w => localIds.Contains(w.LocalId)); } if (trayIds.Count > 0) { listLd = listLd.Where(w => trayIds.Contains(w.TrayId)); } if (zoneIds.Count > 0) { listLd = listLd.Where(w => zoneIds.Contains(w.ZoneId)); } if (materIds.Count > 0) { listLd = listLd.Where(w => materIds.Contains(w.MaterialId)); } if (batchNos.Count > 0) { listLd = listLd.Where(w => batchNos.Contains(w.BatchNo)); } if (barCodes.Count > 0) { listLd = listLd.Where(w => barCodes.Contains(w.BarCode)); } var lmDbData = await listLd.ToListAsync(); //处理库存明细 var localMaterialSvc = _ServiceProvider.GetRequiredService <IIT_LocalDetailBusiness>(); var listLmUpdate = new List <IT_LocalDetail>(); var listDel = new List <IT_LocalDetail>(); foreach (var lm in ldGrout) { var lmNum = lm.Num; var lds = lmDbData.Where(w => w.StorId == audit.StorId && w.LocalId == lm.LocalId && w.TrayId == lm.TrayId && w.ZoneId == lm.ZoneId && w.MaterialId == lm.MaterialId && w.BatchNo == lm.BatchNo && w.BarCode == lm.BarCode).OrderBy(o => o.InTime).ToList(); if (lds.Sum(s => s.Num) < lmNum) { throw new Exception($"库存(明细)数量不够({lm.Num})"); } foreach (var item in lds) { if (item.Num <= lmNum) { listDel.Add(item); lmNum -= item.Num.GetValueOrDefault(0); } else { item.Num -= lmNum; listLmUpdate.Add(item); lmNum = 0; } if (lmNum == 0) { break; } } } if (listDel.Count > 0) { await ldSvc.DeleteDataAsync(listDel); } if (listLmUpdate.Count > 0) { await ldSvc.UpdateDataAsync(listLmUpdate); } } // 减除库存 { var lmGrout = detail .GroupBy(g => new { g.StorId, g.LocalId, g.TrayId, g.ZoneId, g.MaterialId, g.BatchNo, g.BarCode }) .Select(s => new { s.Key.StorId, s.Key.LocalId, s.Key.TrayId, s.Key.ZoneId, s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, Num = s.Sum(o => o.OutNum) }) .ToList(); //查询当前库存记录 var localIds = lmGrout.Select(s => s.LocalId).ToList(); var trayIds = lmGrout.Select(s => s.TrayId).ToList(); var zoneIds = lmGrout.Select(s => s.ZoneId).ToList(); var materIds = lmGrout.Select(s => s.MaterialId).ToList(); var batchNos = lmGrout.Select(s => s.BatchNo).ToList(); var barCodes = lmGrout.Select(s => s.BarCode).ToList(); var lmQuery = Db.GetIQueryable <IT_LocalMaterial>(); lmQuery = lmQuery.Where(w => w.StorId == audit.StorId); if (localIds.Count > 0) { lmQuery = lmQuery.Where(w => localIds.Contains(w.LocalId)); } if (trayIds.Count > 0) { lmQuery = lmQuery.Where(w => trayIds.Contains(w.TrayId)); } if (zoneIds.Count > 0) { lmQuery = lmQuery.Where(w => zoneIds.Contains(w.ZoneId)); } if (materIds.Count > 0) { lmQuery = lmQuery.Where(w => materIds.Contains(w.MaterialId)); } if (batchNos.Count > 0) { lmQuery = lmQuery.Where(w => batchNos.Contains(w.BatchNo)); } if (barCodes.Count > 0) { lmQuery = lmQuery.Where(w => barCodes.Contains(w.BarCode)); } var lmDbData = await lmQuery.ToListAsync(); //处理库存 var listLmUpdate = new List <IT_LocalMaterial>(); var listDel = new List <IT_LocalMaterial>(); foreach (var lm in lmGrout) { var lds = lmDbData.Where(w => w.StorId == audit.StorId && w.LocalId == lm.LocalId && w.TrayId == lm.TrayId && w.ZoneId == lm.ZoneId && w.MaterialId == lm.MaterialId && w.BatchNo == lm.BatchNo && w.BarCode == lm.BarCode).SingleOrDefault(); if (lds == null || lds.Num < lm.Num) { throw new Exception($"没有找到对应物料的库存数据/库存数量不够({lm.Num})"); } if (lds.Num == lm.Num) { listDel.Add(lds); } else if (lds.Num > lm.Num) { lds.Num -= lm.Num; listLmUpdate.Add(lds); } } if (listDel.Count > 0) { await lmSvc.DeleteDataAsync(listDel); } if (listLmUpdate.Count > 0) { await lmSvc.UpdateDataAsync(listLmUpdate); } } // 添加台帐 { var lmGrout = detail .GroupBy(g => new { g.StorId, g.LocalId, g.TrayId, g.ZoneId, g.MaterialId, g.BatchNo, g.BarCode }) .Select(s => new { s.Key.StorId, s.Key.LocalId, s.Key.TrayId, s.Key.ZoneId, s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, Num = s.Sum(o => o.OutNum) }) .ToList(); var listRB = new List <IT_RecordBook>(); foreach (var item in lmGrout) { var rb = new IT_RecordBook(); rb.Id = IdHelper.GetId(); rb.RefCode = data.Code; rb.Type = "Out"; rb.ToStorId = item.StorId; rb.ToLocalId = item.LocalId; rb.MaterialId = item.MaterialId; rb.MeasureId = dicMUnit[item.MaterialId]; rb.BatchNo = item.BatchNo; rb.BarCode = item.BarCode; rb.Num = item.Num; rb.CreateTime = now; rb.CreatorId = audit.AuditUserId; rb.Deleted = false; listRB.Add(rb); } if (listRB.Count > 0) { var bookSvc = _ServiceProvider.GetRequiredService <IIT_RecordBookBusiness>(); await bookSvc.AddDataAsync(listRB); } } // 处理托盘位置数据 //{ // var dicTray = new Dictionary<string, string>(); // foreach (var item in detail) // { // if (item.TrayId != null && !dicTray.ContainsKey(item.TrayId)) // dicTray.Add(item.TrayId, item.LocalId); // } // var trayIds = dicTray.Keys.ToList(); // if (trayIds.Count > 0) // { // var listTray = await Service.GetIQueryable<PB_Tray>().Where(w => trayIds.Contains(w.Id)).ToListAsync(); // foreach (var tray in listTray) // { // tray.LocalId = dicTray[tray.Id]; // } // var traySvc = _ServiceProvider.GetRequiredService<IPB_TrayBusiness>(); // await traySvc.UpdateDataAsync(listTray); // } //} // 解锁货位 在自动出库的时候,货位可能被出库锁锁定了 { var localIds = data.OutStorDetails.Select(s => s.LocalId).ToList(); var listLocal = await Db.GetIQueryable <PB_Location>().Where(w => localIds.Contains(w.Id) && w.LockType == 2).ToListAsync(); foreach (var item in listLocal) { item.LockType = 0; } var localSvc = _ServiceProvider.GetRequiredService <IPB_LocationBusiness>(); await localSvc.UpdateDataAsync(listLocal); } // 修改出库状态 { data.Status = 1; data.AuditeTime = audit.AuditTime; data.AuditUserId = audit.AuditUserId; await UpdateAsync(data); } }
public async Task Approve(AuditDTO audit) { var now = DateTime.Now; var data = await this.GetTheDataAsync(audit.Id); var detail = data.MoveDetails; var dicMUnit = detail.GroupBy(s => new { s.Material.Id, s.Material.MeasureId }).Select(s => new { s.Key.Id, s.Key.MeasureId }).ToDictionary(k => k.Id, v => v.MeasureId); var lmSvc = _ServiceProvider.GetRequiredService <IIT_LocalMaterialBusiness>(); var ldSvc = _ServiceProvider.GetRequiredService <IIT_LocalDetailBusiness>(); // 原库位出库 { var badGroup = detail .GroupBy(w => new { w.FromLocalId, w.FromTrayId, w.FromZoneId, w.MaterialId, w.BatchNo, w.BarCode }) .Select(s => new { s.Key.FromLocalId, s.Key.FromTrayId, s.Key.FromZoneId, s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, MoveNum = s.Sum(o => o.MoveNum) }) .ToList(); var localIds = badGroup.Select(s => s.FromLocalId).ToList(); var trayIds = badGroup.Select(s => s.FromTrayId).ToList(); var zoneIds = badGroup.Select(s => s.FromZoneId).ToList(); var materialIds = badGroup.Select(s => s.MaterialId).ToList(); var batchNos = badGroup.Select(s => s.BatchNo).ToList(); var barCodes = badGroup.Select(s => s.BarCode).ToList(); //修改库存 { var lmQuery = Db.GetIQueryable <IT_LocalMaterial>(); if (localIds.Count > 0) { lmQuery = lmQuery.Where(w => localIds.Contains(w.LocalId)); } if (trayIds.Count > 0) { lmQuery = lmQuery.Where(w => trayIds.Contains(w.TrayId)); } if (zoneIds.Count > 0) { lmQuery = lmQuery.Where(w => zoneIds.Contains(w.ZoneId)); } if (materialIds.Count > 0) { lmQuery = lmQuery.Where(w => materialIds.Contains(w.MaterialId)); } if (batchNos.Count > 0) { lmQuery = lmQuery.Where(w => batchNos.Contains(w.BatchNo)); } if (barCodes.Count > 0) { lmQuery = lmQuery.Where(w => barCodes.Contains(w.BarCode)); } var listLM = await lmQuery.ToListAsync(); var listDel = new List <IT_LocalMaterial>(); var listUpdate = new List <IT_LocalMaterial>(); foreach (var move in badGroup) { var lm = listLM.Where(w => w.StorId == audit.StorId && w.LocalId == move.FromLocalId && w.TrayId == move.FromTrayId && w.ZoneId == move.FromZoneId && w.MaterialId == move.MaterialId && w.BatchNo == move.BatchNo && w.BarCode == move.BarCode).SingleOrDefault(); if (lm == null || lm.Num < move.MoveNum) { throw new Exception($"没有找到对应物料的库存数据/库存数量不够({move.MoveNum})"); } if (lm.Num == move.MoveNum) { listDel.Add(lm); } else if (lm.Num > move.MoveNum) { lm.Num -= move.MoveNum; listUpdate.Add(lm); } } if (listDel.Count > 0) { await lmSvc.DeleteDataAsync(listDel); } if (listUpdate.Count > 0) { await lmSvc.UpdateDataAsync(listUpdate); } } // 修改库存明细 { var ldQuery = Db.GetIQueryable <IT_LocalDetail>(); if (localIds.Count > 0) { ldQuery = ldQuery.Where(w => localIds.Contains(w.LocalId)); } if (trayIds.Count > 0) { ldQuery = ldQuery.Where(w => trayIds.Contains(w.TrayId)); } if (zoneIds.Count > 0) { ldQuery = ldQuery.Where(w => zoneIds.Contains(w.ZoneId)); } if (materialIds.Count > 0) { ldQuery = ldQuery.Where(w => materialIds.Contains(w.MaterialId)); } if (batchNos.Count > 0) { ldQuery = ldQuery.Where(w => batchNos.Contains(w.BatchNo)); } if (barCodes.Count > 0) { ldQuery = ldQuery.Where(w => barCodes.Contains(w.BarCode)); } var listLD = await ldQuery.ToListAsync(); var listDel = new List <IT_LocalDetail>(); var listUpdate = new List <IT_LocalDetail>(); foreach (var bad in badGroup) { var badNum = bad.MoveNum; var lds = listLD.Where(w => w.StorId == audit.StorId && w.LocalId == bad.FromLocalId && w.TrayId == bad.FromTrayId && w.ZoneId == bad.FromZoneId && w.MaterialId == bad.MaterialId && w.BatchNo == bad.BatchNo && w.BarCode == bad.BarCode).OrderBy(o => o.InTime).ToList(); if (lds.Sum(s => s.Num) < badNum) { throw new Exception($"库存(明细)数量不够({bad.MoveNum})"); } foreach (var item in lds) { if (item.Num <= badNum) { listDel.Add(item); badNum -= item.Num.GetValueOrDefault(0); } else { item.Num -= badNum; listUpdate.Add(item); badNum = 0; } if (badNum == 0) { break; } } } if (listDel.Count > 0) { await ldSvc.DeleteDataAsync(listDel); } if (listUpdate.Count > 0) { await ldSvc.UpdateDataAsync(listUpdate); } } } //目标库位入库 { // 增加库存 { var lmGrout = detail .GroupBy(g => new { g.StorId, g.ToLocalId, g.ToTrayId, g.ToZoneId, g.MaterialId, g.BatchNo, g.BarCode }) .Select(s => new { s.Key.StorId, s.Key.ToLocalId, s.Key.ToTrayId, s.Key.ToZoneId, s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, MoveNum = s.Sum(o => o.MoveNum) }) .ToList(); //查询当前库存记录 var localIds = lmGrout.Select(s => s.ToLocalId).ToList(); var trayIds = lmGrout.Select(s => s.ToTrayId).ToList(); var zoneIds = lmGrout.Select(s => s.ToZoneId).ToList(); var materIds = lmGrout.Select(s => s.MaterialId).ToList(); var batchNos = lmGrout.Select(s => s.BatchNo).ToList(); var barCodes = lmGrout.Select(s => s.BarCode).ToList(); var lmQuery = Db.GetIQueryable <IT_LocalMaterial>(); lmQuery = lmQuery.Where(w => w.StorId == audit.StorId); if (localIds.Count > 0) { lmQuery = lmQuery.Where(w => localIds.Contains(w.LocalId)); } if (trayIds.Count > 0) { lmQuery = lmQuery.Where(w => trayIds.Contains(w.TrayId)); } if (zoneIds.Count > 0) { lmQuery = lmQuery.Where(w => zoneIds.Contains(w.ZoneId)); } if (materIds.Count > 0) { lmQuery = lmQuery.Where(w => materIds.Contains(w.MaterialId)); } if (batchNos.Count > 0) { lmQuery = lmQuery.Where(w => batchNos.Contains(w.BatchNo)); } if (barCodes.Count > 0) { lmQuery = lmQuery.Where(w => barCodes.Contains(w.BarCode)); } var lmDbData = await lmQuery.ToListAsync(); //处理库存 var listLmAdd = new List <IT_LocalMaterial>(); var listLmUpdate = new List <IT_LocalMaterial>(); foreach (var item in lmGrout) { //如果存再当前相同的物料,就在库存上直接相加 var lmItem = lmDbData.Where(w => w.StorId == item.StorId && w.LocalId == item.ToLocalId && w.TrayId == item.ToTrayId && w.ZoneId == item.ToZoneId && w.MaterialId == item.MaterialId && w.BatchNo == item.BatchNo && w.BarCode == item.BarCode).SingleOrDefault(); if (lmItem != null) { lmItem.Num += item.MoveNum; listLmUpdate.Add(lmItem); } else { //如果当前库存不存再相同的物料,就增加此物料的记录 var lm = new IT_LocalMaterial(); lm.Id = IdHelper.GetId(); lm.StorId = item.StorId; lm.LocalId = item.ToLocalId; lm.TrayId = item.ToTrayId; lm.ZoneId = item.ToZoneId; lm.MaterialId = item.MaterialId; lm.MeasureId = dicMUnit[item.MaterialId]; lm.BatchNo = item.BatchNo; lm.BarCode = item.BarCode; lm.Num = item.MoveNum; listLmAdd.Add(lm); } } if (listLmAdd.Count > 0) { await lmSvc.AddDataAsync(listLmAdd); } if (listLmUpdate.Count > 0) { await lmSvc.UpdateDataAsync(listLmUpdate); } } // 增加库存明细 { var ldGrout = detail .GroupBy(g => new { g.StorId, g.ToLocalId, g.ToTrayId, g.ToZoneId, g.MaterialId, g.BatchNo, g.BarCode, g.Price }) .Select(s => new { s.Key.StorId, s.Key.ToLocalId, s.Key.ToTrayId, s.Key.ToZoneId, s.Key.MaterialId, s.Key.BatchNo, s.Key.BarCode, s.Key.Price, TotalAmt = s.Sum(o => o.Amount), MoveNum = s.Sum(o => o.MoveNum) }) .ToList(); var listLd = new List <IT_LocalDetail>(); foreach (var item in ldGrout) { var ld = new IT_LocalDetail(); ld.Id = IdHelper.GetId(); ld.StorId = audit.StorId; ld.InStorId = null; ld.LocalId = item.ToLocalId; ld.TrayId = item.ToTrayId; ld.ZoneId = item.ToZoneId; ld.MaterialId = item.MaterialId; ld.MeasureId = dicMUnit[item.MaterialId]; ld.BatchNo = item.BatchNo; ld.BarCode = item.BarCode; ld.InTime = audit.AuditTime; ld.Amount = item.TotalAmt; ld.CreateTime = now; ld.CreatorId = audit.AuditUserId; ld.Price = item.Price; ld.Num = item.MoveNum; ld.Deleted = false; listLd.Add(ld); } if (listLd.Count > 0) { await ldSvc.AddDataAsync(listLd); } } } // 处理台帐 { var listRB = new List <IT_RecordBook>(); foreach (var move in detail) { // 增加(移库-出)MoveOut台帐 var rbOut = new IT_RecordBook() { Id = IdHelper.GetId(), RefCode = data.Code, Type = "MoveOut", FromStorId = audit.StorId, FromLocalId = move.FromLocalId, ToStorId = audit.StorId, ToLocalId = move.ToLocalId, MaterialId = move.MaterialId, MeasureId = dicMUnit[move.MaterialId], BarCode = move.BarCode, BatchNo = move.BatchNo, Num = move.MoveNum, CreateTime = audit.AuditTime, CreatorId = audit.AuditUserId, Deleted = false }; listRB.Add(rbOut); // 增加(移库-入)MoveIn台帐 var rbIn = new IT_RecordBook() { Id = IdHelper.GetId(), RefCode = data.Code, Type = "MoveIn", FromStorId = audit.StorId, FromLocalId = move.FromLocalId, ToStorId = audit.StorId, ToLocalId = move.ToLocalId, MaterialId = move.MaterialId, MeasureId = dicMUnit[move.MaterialId], BarCode = move.BarCode, BatchNo = move.BatchNo, Num = move.MoveNum, CreateTime = audit.AuditTime, CreatorId = audit.AuditUserId, Deleted = false }; listRB.Add(rbIn); } // 保存数据台帐 var rbSvc = _ServiceProvider.GetRequiredService <IIT_RecordBookBusiness>(); await rbSvc.AddDataAsync(listRB); } // 处理托盘位置数据 { var dicTray = new Dictionary <string, string>(); foreach (var item in detail) { if (item.ToTrayId != null && !dicTray.ContainsKey(item.ToTrayId)) { dicTray.Add(item.ToTrayId, item.ToLocalId); } } var trayIds = dicTray.Keys.ToList(); if (trayIds.Count > 0) { var listTray = await Db.GetIQueryable <PB_Tray>().Where(w => trayIds.Contains(w.Id)).ToListAsync(); foreach (var tray in listTray) { tray.LocalId = dicTray[tray.Id]; } var traySvc = _ServiceProvider.GetRequiredService <IPB_TrayBusiness>(); await traySvc.UpdateDataAsync(listTray); } } // 修改主数据状态 { data.Status = 1; data.AuditeTime = audit.AuditTime; data.AuditUserId = audit.AuditUserId; await UpdateAsync(data); } }