/// <summary> /// 生成楼栋模板 /// </summary> /// <param name="building">楼栋</param> /// <param name="templet">模板</param> /// <returns></returns> public TempletDto CreateBuildingTempletDto(Building building, Templet templet) { TempletDto templetDto = new TempletDto(); templetDto.TempletId = templet.TempletId; templetDto.TempletName = templet.TempletName; templetDto.FieldGroups = new List <FieldGroupDto>(); //获取实体属性 var propertys = building.GetType().GetProperties(); foreach (var fieldGroup in templet.FieldGroups) { FieldGroupDto fieldGroupDto = new FieldGroupDto(); fieldGroupDto.FieldGroupName = fieldGroup.FieldGroupName; fieldGroupDto.Fields = new List <FieldDto>(); if (fieldGroup.Fields != null && fieldGroup.Fields.Count > 0) { foreach (var field in fieldGroup.Fields) { FieldDto fieldDto = new FieldDto(); fieldDto.EdiTextType = field.EdiTextType; fieldDto.FieldName = field.FieldName; fieldDto.FieldType = field.FieldType; fieldDto.Title = field.Title; fieldDto.MaxLength = field.MaxLength; fieldDto.MinLength = field.MinLength; fieldDto.IsRequired = field.IsRequired; fieldDto.IsNull = field.IsNull; switch (field.FieldType) { case 1: fieldDto.Type = "E"; break; case 2: fieldDto.Type = "T"; break; case 3: fieldDto.Type = "R"; break; case 5: fieldDto.Type = "C"; break; case 6: fieldDto.Type = "DT"; break; default: break; } List <FxtDataAcquisition.Domain.Models.SYSCode> codes = new List <FxtDataAcquisition.Domain.Models.SYSCode>(); switch (field.FieldName) { case "PurposeCode": codes = _codeService.PurposeCodeManager(); break; case "MaintenanceCode": codes = _codeService.LevelManager(); break; case "BuildingTypeCode": codes = _codeService.BuildingTypeCodeManager(); break; case "StructureCode": codes = _codeService.BuildingStructureCodeManager(); break; case "Wall": codes = _codeService.WallCodeManager(); break; case "InnerFitmentCode": codes = _codeService.InnerFitmentCodeManager(); break; case "PipelineGasCode": codes = _codeService.PipelineGasCodeManager(); break; case "HeatingModeCode": codes = _codeService.HeatingModeCodeManager(); break; case "WallTypeCode": codes = _codeService.WallTypeCodeManager(); break; case "BHouseTypeCode": codes = _codeService.BHousetypeCodeManager(); break; default: break; } //取值 var property = propertys.Where(pInfo => pInfo.Name == field.FieldName).FirstOrDefault(); if (property != null) { var value = property.GetValue(building); if (value != null) { if (value is DateTime) { fieldDto.Value = DateTime.Parse(value.ToString()).ToString("yyyy-MM-dd HH:mm:ss"); } else { fieldDto.Value = value.ToString(); if (codes != null && codes.Count > 0) { //选项值 if (fieldDto.FieldType == 3) { var code = codes.FirstOrDefault(m => m.Code == int.Parse(fieldDto.Value)); fieldDto.Value = code == null ? "" : code.CodeName; } else if (fieldDto.FieldType == 5) { //多选 var vs = fieldDto.Value.Split(',').ConvertToIntList(); var codeList = codes.Where(m => vs.Contains(m.Code)); if (codeList != null) { var vsname = codeList.Select(m => m.CodeName); fieldDto.Value = string.Join(",", vsname); } } fieldDto.Choise = codes.Select(m => m.CodeName).ToList(); } } } } fieldGroupDto.Fields.Add(fieldDto); } } templetDto.FieldGroups.Add(fieldGroupDto); } return(templetDto); }