public async Task <PedestalDto> Update(PedestalDto input) { var entity = await _repository.GetAsync(input.Id); if (input.SubProjectId.HasValue) { var subProject = await _subProjectManager.GetAsync((Guid)input.SubProjectId); // 如果梁片未完成则初始化状态码;否则插入记录表 if (!subProject.IsFinished) { await _subProjectManager.InitStageCode(subProject); } else { _subProjectManager.InsertStageLog(subProject); } // 检查占用 await _pedestalManager.CheckOccupation(input.Id, input.SubProjectId); // 删除原有台座上的梁片 await _pedestalManager.DeleteSubProjectInPedestal(subProject); // 判断是否未制梁台或存梁台 await _pedestalManager.QualifyToPedestal(entity, subProject); } else { throw new UserFriendlyException("没有子项目id"); } entity = await _repository.UpdateAsync(input.MapTo(entity)); return(entity.MapTo <PedestalDto>()); }
public List <GenerateOutput> Generate(WorkshopLayoutInput input) { List <GenerateOutput> list = new List <GenerateOutput>(); for (int i = 0; i < input.ProductionLine; i++) { #region 返回生成的布局信息 GenerateOutput output = new GenerateOutput(); output.ProductionLine = (i + 1).ToString(); PedestalDto pedestalDto = new PedestalDto(); pedestalDto.ProductionLine = i + 1; //如果要保存到数据库,即生成模板实例, if (input.IsSave) { pedestalDto.WorkshopLayoutId = input.LayoutId; pedestalDto.ProjectId = input.ProjectId; } //左部或上部制梁台 pedestalDto.Area = "LU"; pedestalDto.Type = "ZL"; List <PedestalDto> LU_ZL_blocks = GenerateBlocks(pedestalDto, input.BeamPedestal, input.IsSave); //左部或上部存梁台 pedestalDto.Type = "CL"; List <PedestalDto> LU_CL_blocks = GenerateBlocks(pedestalDto, input.SaveBeam, input.IsSave); //左部或上部钢筋绑扎台 pedestalDto.Type = "GJ"; List <PedestalDto> LU_BZ_blocks = GenerateBlocks(pedestalDto, input.BindRebar, input.IsSave); //右部或下部制梁台 pedestalDto.Area = "RD"; pedestalDto.Type = "ZL"; List <PedestalDto> RD_ZL_blocks = GenerateBlocks(pedestalDto, input.BeamPedestal, input.IsSave); //右部或下部存梁台 pedestalDto.Type = "CL"; List <PedestalDto> RD_CL_blocks = GenerateBlocks(pedestalDto, input.SaveBeam, input.IsSave); //右部或下部钢筋绑扎台 pedestalDto.Type = "GJ"; List <PedestalDto> RD_BZ_blocks = GenerateBlocks(pedestalDto, input.BindRebar, input.IsSave); output.LU_BeamPedestal = LU_ZL_blocks; output.LU_SaveBeam = LU_CL_blocks; output.LU_BindRebar = LU_BZ_blocks; output.RD_BeamPedestal = RD_ZL_blocks; output.RD_SaveBeam = RD_CL_blocks; output.RD_BindRebar = RD_BZ_blocks; list.Add(output); #endregion } return(list); }
private List <PedestalDto> GenerateBlocks(PedestalDto dto, int number, bool isSave) { var dtos = new List <PedestalDto>(); for (int i = 1; i <= number; i++) { var pedestalDto = dto.Clone(); pedestalDto.Code = "L" + dto.ProductionLine + "_" + dto.Area + "_" + dto.Type + "_" + i.ToString("00000");; dtos.Add(pedestalDto); } if (isSave) { foreach (var item in dtos) { _pedestalRepository.Insert(ObjectMapper.Map <Pedestal>(item)); } } return(dtos); }