邵佳豪 3 years ago
parent
commit
b06b77f951
  1. 22
      src/app/babylon/controller/config-manager.ts
  2. 22
      src/app/babylon/controller/data-manager.ts
  3. 2
      src/app/babylon/controller/mode-manager.ts
  4. 15
      src/app/babylon/controller/serve-manager.ts
  5. 156
      src/app/babylon/model/data/institution/building/export-data.ts
  6. 26
      src/app/babylon/model/info/mark/other/mark-plan-multi-arrow.ts
  7. 1
      src/app/babylon/view/facilityinfoinscene-window/facilityinfo-ui-item.ts
  8. 2
      src/app/babylon/view/facilityinfoinscene-window/facilityinfoinscene-window.ts
  9. 7
      src/app/babylon/view/toolbar-window/toobar-window.ts
  10. 16
      src/app/service/babylon/building-basic-infos.service.ts

22
src/app/babylon/controller/config-manager.ts

@ -103,6 +103,28 @@ export class ConfigManager {
return result;
}
/**
*
* @param type
*/
static getFacilityNumUnit(type: FacilityType): string {
let result = "个";
switch (type) {
case FacilityType.XF_XFS: result = "立方"; break;
case FacilityType.XF_MHT: result = "块"; break;
}
if (TsTool.stringContain(type, "XF_MHQ_"))//灭火器
{
result = "具";
}
return result;
}
/**
*
* @param facilityType

22
src/app/babylon/controller/data-manager.ts

@ -9,6 +9,7 @@ import {
BuildingData_Normal,
BuildingType
} from '../model/data/institution/building/building-data';
import { ExportData } from '../model/data/institution/building/export-data';
import { AllFacilityData } from '../model/data/institution/facility/all-facility-data';
import { PropertyData_Base_IMG } from '../model/data/institution/facility/property-data/base/property-data-base-img';
import { PropertyData_JYJ } from '../model/data/institution/facility/property-data/in/property-data-jyj';
@ -538,6 +539,27 @@ export class DataManager {
}
}
/**
*
* @param data
*/
static saveExportData(data: InstitutionData) {
if (data != null && data.normalBuildingDatas != null && data.normalBuildingDatas.length > 0) {
let mainBuildingDate = data.normalBuildingDatas[0];
let exportData = new ExportData(mainBuildingDate.outdoorData.facilities);
ServeManager.instance.saveGasStationExcelData(exportData);
}
else {
console.log("单位没有初始化,缺少主体建筑");
}
}
/**
*
*/

2
src/app/babylon/controller/mode-manager.ts

@ -28,7 +28,7 @@ export class ModeManager {
/**
*
*/
public static isDebug = false;
public static isDebug = true;

15
src/app/babylon/controller/serve-manager.ts

@ -3,6 +3,7 @@ import { classToPlain } from "class-transformer";
import { PlanComponent } from "src/app/pages/plan/plan.component";
import { BuildingBasicInfosService } from "src/app/service/babylon/building-basic-infos.service";
import { ObjectsService } from "src/app/service/objects.service";
import { ExportData } from "../model/data/institution/building/export-data";
import { InsitutionDataSimple } from "../model/data/institution/institution-data-simple";
import { AllMarkPlanData } from "../model/data/mark/mark-plan-data";
import { DataManager } from "./data-manager";
@ -68,6 +69,8 @@ export class ServeManager {
//暂时没有失败的回调 onError
})
}
//保存单位列表
@ -157,6 +160,18 @@ export class ServeManager {
//#endregion
//#region 导出excel的信息
saveGasStationExcelData(exportData: ExportData) {
this.buildingBISrv.postGasStationExcelData(DataManager.institutionData_simple.name, DataManager.institutionData_simple.id, exportData)
.subscribe(data => {
console.log("保存导出信息成功:" + DataManager.institutionData_simple.id, `'${JSON.stringify(exportData)}'`);
}, (error) => {
console.log("保存导出信息失败:" + DataManager.institutionData_simple.id, error);
});
}
//#endregion
//#region 文件上传
/**

156
src/app/babylon/model/data/institution/building/export-data.ts

@ -0,0 +1,156 @@
import { Type } from "class-transformer";
import { ConfigManager } from "src/app/babylon/controller/config-manager";
import { TsTool } from "src/app/babylon/tool/ts-tool";
import { FacilityType } from "../../model-data/model-data-facility";
import { FacilityDatasByType } from "../../model-data/model-edit-data";
import { PropertyData_JYJ } from "../facility/property-data/in/property-data-jyj";
import { PropertyData_SYGX } from "../facility/property-data/in/property-data-sygx";
import { PropertyData_YG } from "../facility/property-data/in/property-data-yg";
import { PropertyData_YQHSGX } from "../facility/property-data/in/property-data-yqhsgx";
/**
*
*/
export class ExportData {
// @Type(() => ExportData_JYJ)
加油机: ExportData_JYJ[] = [];
// @Type(() => ExportData_YG)
油罐: ExportData_YG[] = [];
// @Type(() => ExportData_SYGX)
输油管线: ExportData_SYGX[] = [];
// @Type(() => ExportData_YQHS)
油气回收: ExportData_YQHS[] = [];
// @Type(() => ExportData_XFSB)
消防设备: ExportData_XFSB[] = [];
constructor(facilityByTypes: FacilityDatasByType[]) {
for (let i = 0; i < facilityByTypes.length; i++) {
let facilities = facilityByTypes[i].facilities;
if (facilities == null) {
continue;
}
let type = facilityByTypes[i].facilityType;
if (TsTool.stringContain(type, "XF_")) {
this..push(new ExportData_XFSB(facilityByTypes[i]));
}
for (let j = 0; j < facilities.length; j++) {
switch (type) {
case FacilityType.JY_JYJ: this.加油机.push(new ExportData_JYJ(facilities[j].propertyData as PropertyData_JYJ));
break;
case FacilityType.JY_YG: this.油罐.push(new ExportData_YG(facilities[j].propertyData as PropertyData_YG));
break;
case FacilityType.JY_SYGX: this.输油管线.push(new ExportData_SYGX(facilities[j].propertyData as PropertyData_SYGX));
break;
case FacilityType.JY_YQHSGX: this.油气回收.push(new ExportData_YQHS(facilities[j].propertyData as PropertyData_YQHSGX));
break;
}
}
}
}
}
/**
*
*/
export class ExportData_JYJ {
名称: string;
品牌: string;
油枪数量: string;
油品品号: string;
油泵类型: string;
流量: string;
功率: string;
constructor(jyj_property: PropertyData_JYJ) {
this. = jyj_property.name;
this. = jyj_property.brand;
this. = jyj_property.oilGunNum;
this. = jyj_property.oilProductNo;
this. = jyj_property.oilPumpType;
this. = jyj_property.flow;
this. = jyj_property.power;
}
}
/**
*
*/
export class ExportData_YG {
名称: string;
油品品号: string;
油罐容积: string;
安全容积: string;
罐区: string;
油罐类型: string;
constructor(yg_property: PropertyData_YG) {
this. = yg_property.name;
this. = yg_property.oilProductNo;
this. = yg_property.oilTankVolume;
this. = yg_property.safeVolume;
this. = yg_property.tankFarm;
this. = yg_property.oilTankType;
}
}
/**
* 线
*/
export class ExportData_SYGX {
名称: string;
连接的加油机: string;
连接的油罐: string;
constructor(sygx_property: PropertyData_SYGX) {
this. = sygx_property.name;
this. = sygx_property.linkJYJ;
this. = sygx_property.linkYG;
}
}
/**
*
*/
export class ExportData_YQHS {
名称: string;
油气回收系统类型: string;
油气回收泵类型: string;
constructor(yqhs_property: PropertyData_YQHSGX) {
this. = yqhs_property.name;
this. = yqhs_property.VRUType;
this. = yqhs_property.VRUPumpType;
}
}
/**
*
*/
export class ExportData_XFSB {
名称: string;
数目: string;
constructor(facByType: FacilityDatasByType) {
this. = ConfigManager.getFacilityTypeName(facByType.facilityType);
this. = "0";
if (facByType.facilities != null) {
this. = facByType.facilities.length.toString();
}
this. += ConfigManager.getFacilityNumUnit(facByType.facilityType);
}
}

26
src/app/babylon/model/info/mark/other/mark-plan-multi-arrow.ts

@ -94,7 +94,6 @@ export class ModelInfo_mark_multiArrow extends ModelInfo_mark {
let localPos = point.subtract(this.modelBox.absolutePosition);
localPos.y = localPos.y / this.modelBox.scaling.y;
console.log(point, localPos, this.modelBox.absolutePosition);
// let startBox = MeshBuilder.CreateBox("start", { size: 1 });
// startBox.setParent(this.modelBox);
@ -233,7 +232,8 @@ export class ModelInfo_mark_multiArrow extends ModelInfo_mark {
*/
class ArrowInfo {
static s_step = 3;//箭头间隔(从头到下一个的头)
static s_step = 1;//箭头间隔(从头到下一个的头)
// static s_scale = 0.3;//整体大小的缩放
lastArrowInfo: ArrowInfo;//上一个箭头
parent: Mesh;
@ -269,23 +269,25 @@ class ArrowInfo {
let index = 0;
let size = ArrowInfo.s_step / 3;//整体大小
while (distance > ArrowInfo.s_step) {
let offset = index * ArrowInfo.s_step;
let forwardDistance = this.forward.multiplyByFloats(1, 0, 1).normalize().multiplyByFloats(offset, offset, offset);
let meshStart: Vector3 = this.start.add(forwardDistance);
let posArray = [];
posArray.push(new Vector3(0, 0, 2));
posArray.push(new Vector3(-1, 0, 1));
posArray.push(new Vector3(-0.5, 0, 1));
posArray.push(new Vector3(-0.5, 0, 0));
posArray.push(new Vector3(0.5, 0, 0));
posArray.push(new Vector3(0.5, 0, 1));
posArray.push(new Vector3(1, 0, 1));
let l_mesh = MeshBuilder.ExtrudePolygon("arrow", { shape: posArray, depth: 1, updatable: false }, SceneManager.Instance.scene);
posArray.push(new Vector3(0, 0, 2 * size));
posArray.push(new Vector3(-1 * size, 0, 1 * size));
posArray.push(new Vector3(-0.5 * size, 0, 1 * size));
posArray.push(new Vector3(-0.5 * size, 0, 0 * size));
posArray.push(new Vector3(0.5 * size, 0, 0 * size));
posArray.push(new Vector3(0.5 * size, 0, 1 * size));
posArray.push(new Vector3(1 * size, 0, 1 * size));
let l_mesh = MeshBuilder.ExtrudePolygon("arrow", { shape: posArray, depth: size * 0.5, updatable: false }, SceneManager.Instance.scene);
l_mesh.material = this.mat;

1
src/app/babylon/view/facilityinfoinscene-window/facilityinfo-ui-item.ts

@ -1,6 +1,7 @@
import { Vector2 } from "@babylonjs/core";
import { SceneManager } from "../../controller/scene-manager";
import { ExportData_JYJ } from "../../model/data/institution/building/export-data";
import { PropertyData_Base } from "../../model/data/institution/facility/property-data/property-data-base";
import { FacilityType, ModelData_facility } from "../../model/data/model-data/model-data-facility";
import { ModelInfo_facility } from "../../model/info/model/model-info-facility";

2
src/app/babylon/view/facilityinfoinscene-window/facilityinfoinscene-window.ts

@ -467,7 +467,7 @@ export class FacilityInfoInSceneWindow extends UIBase {
/**
*
*/
static readonly c_selectJYJColor = Color3.Green();
static readonly c_selectJYJColor = Color3.Teal();
/**
*

7
src/app/babylon/view/toolbar-window/toobar-window.ts

@ -48,10 +48,15 @@ export class ToolbarWindow extends UIBase {
//保存数据
onBtnSave() {
let data = DataManager.institutionData;
ModeManager.log(data);
// ModeManager.log(data);
ServeManager.instance.saveInstitutionData(data, DataManager.institutionData_simple.key, DataManager.institutionData_simple.id, () => {
ModeManager.log("保存成功" + DataManager.institutionData_simple.key);
});
console.log("导出数据");
//保存导出数据
DataManager.saveExportData(data);
}
/***

16
src/app/service/babylon/building-basic-infos.service.ts

@ -24,6 +24,11 @@ export class BuildingBasicInfosService {
*/
readonly api_sandBox = "api/Services/3D/Sandboxie";
/**
*
*/
readonly api_excelData = "api/Services/3D/GasStationExcelData";
/**
*
@ -58,6 +63,17 @@ export class BuildingBasicInfosService {
}
/**
*
* @param name
* @param id
* @param data
*/
postGasStationExcelData(name: string, id: number, data: object): Observable<any> {
return this.postInfos(this.api_excelData, data, { name: name, "gasStationId": id });
}
//#region 通用封装,新增api时调用即可,不需关心具体组装规则。若修改规则,只需修改此通用封装
/**
* get类api所需的固定内容

Loading…
Cancel
Save