陈鹏飞 3 years ago
parent
commit
163761a510
  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. 8
      src/app/pages/home/home.component.html
  11. 68
      src/app/pages/oil-station-info/oil-station-info.component.html
  12. 15
      src/app/pages/oil-station-info/oil-station-info.component.scss
  13. 43
      src/app/pages/oil-station-info/oil-station-info.component.ts
  14. 16
      src/app/service/babylon/building-basic-infos.service.ts
  15. BIN
      src/assets/images/goback.png

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);
}
/***

8
src/app/pages/home/home.component.html

@ -45,7 +45,7 @@
{{time}}
</span>
<span style="margin: 0 18px;">|</span>
<span style="margin: 0 12px;">|</span>
<span style="margin-right: 8px;"> {{surname}} </span>
<a nz-dropdown [nzDropdownMenu]="menu" [nzTrigger]="'click'" [nzBackdrop]='false'>
@ -60,10 +60,10 @@
<li nz-menu-item (click)="signOut()">退出系统</li>
</ul>
</nz-dropdown-menu>
<span style="margin: 0 12px;" *ngIf="isGasStationBack">|</span>
<img style="cursor: pointer;" *ngIf="isGasStationBack" src="../../../assets/images/goback.png" alt="" (click)="goback()">
</div>
<div class="backbtn" *ngIf="isGasStationBack">
<button nz-button (click)="goback()">返回</button>
</div>
</div>
<div class="content">
<router-outlet></router-outlet>

68
src/app/pages/oil-station-info/oil-station-info.component.html

@ -8,7 +8,7 @@
<div class="table">
<table formGroupName="oilStation">
<tr>
<td class="head">所属组织机构</td>
<td class="head">站名</td>
<td class="text organizations">
{{userdata.organization.displayName}}
</td>
@ -30,6 +30,7 @@
<nz-select [(ngModel)]="httpBody.stationType" formControlName="oilStationType">
<nz-option nzValue="0" nzLabel="自营"></nz-option>
<nz-option nzValue="1" nzLabel="加盟"></nz-option>
<nz-option nzValue="2" nzLabel="其他"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
@ -47,7 +48,7 @@
</tr>
<tr>
<td class="head">地址</td>
<td colspan="text">
<td class="text" colspan="3">
<nz-form-item>
<nz-form-control>
<nz-input-group>
@ -56,7 +57,7 @@
</nz-form-control>
</nz-form-item>
</td>
<td class="head">营业执照有效期<span style="color: red;">*</span></td>
<!-- <td class="head">营业执照有效期<span style="color: red;">*</span></td>
<td colspan="text">
<nz-form-item>
<nz-form-control>
@ -64,7 +65,7 @@
</nz-range-picker>
</nz-form-control>
</nz-form-item>
</td>
</td> -->
</tr>
<tr>
<td class="head">区域</td>
@ -298,7 +299,7 @@
</td>
</tr>
</table>
<table class="imgtable" id="images">
<table formGroupName="validityTime" class="imgtable" id="images">
<tr>
<td class="head">营业执照</td>
<td colspan="3" class="imgbox">
@ -316,6 +317,25 @@
<button nz-button [nzLoading]="isLoadingOne"><i nz-icon nzType="upload"
nzTheme="outline"></i>重新上传</button>
</div>
<div class="timeDiv">
<nz-form-item style="width: 35%;border: 1px solid #91CCFF;margin-right: 12px;">
<nz-form-control>
<nz-range-picker [(ngModel)]="businessLicensevalidityTime"
formControlName="businessLicensevalidityTime">
</nz-range-picker>
</nz-form-control>
</nz-form-item>
<span><span style="color: red;">*</span>提前预警时间天数:</span>
<nz-form-item style="width: 5%;border: 1px solid #91CCFF;margin-right: 12px;">
<nz-form-control>
<nz-input-group>
<input style="padding: 0;text-align: center;" [(ngModel)]="httpBody.validityTermDays" nz-input
type="number" formControlName="businessLicensevalidityTimeDay" />
</nz-input-group>
</nz-form-control>
</nz-form-item>
<span></span>
</div>
</div>
</td>
@ -338,6 +358,26 @@
<button nz-button [nzLoading]="isLoadingTwo"><i nz-icon nzType="upload"
nzTheme="outline"></i>重新上传</button>
</div>
<div class="timeDiv">
<nz-form-item style="width: 35%;border: 1px solid #91CCFF;margin-right: 12px;">
<nz-form-control>
<nz-range-picker [(ngModel)]="hazardousLicensevalidityTime"
formControlName="hazardousLicensevalidityTime">
</nz-range-picker>
</nz-form-control>
</nz-form-item>
<span><span style="color: red;">*</span>提前预警时间天数:</span>
<nz-form-item style="width: 5%;border: 1px solid #91CCFF;margin-right: 12px;">
<nz-form-control>
<nz-input-group>
<input style="padding: 0;text-align: center;" [(ngModel)]="httpBody.dangerousTermDays" nz-input
type="number" formControlName="hazardousLicensevalidityTimeDay" />
</nz-input-group>
</nz-form-control>
</nz-form-item>
<span></span>
</div>
</div>
</td>
</tr>
@ -359,6 +399,24 @@
<button nz-button [nzLoading]="isLoadingThree"><i nz-icon nzType="upload"
nzTheme="outline"></i>重新上传</button>
</div>
<div class="timeDiv">
<nz-form-item style="width: 35%;border: 1px solid #91CCFF;margin-right: 12px;">
<nz-form-control>
<nz-range-picker [(ngModel)]="oilLicensevalidityTime" formControlName="oilLicensevalidityTime">
</nz-range-picker>
</nz-form-control>
</nz-form-item>
<span><span style="color: red;">*</span>提前预警时间天数:</span>
<nz-form-item style="width: 5%;border: 1px solid #91CCFF;margin-right: 12px;">
<nz-form-control>
<nz-input-group>
<input style="padding: 0;text-align: center;" [(ngModel)]="httpBody.sellLicenseTermDays" nz-input
type="number" formControlName="oilLicensevalidityTimeDay" />
</nz-input-group>
</nz-form-control>
</nz-form-item>
<span></span>
</div>
</div>
</td>
</tr>

15
src/app/pages/oil-station-info/oil-station-info.component.scss

@ -74,7 +74,9 @@
.text {
width: 33%;
}
.text2 {
width: 83%;
}
.organizations {
text-align: left;
color: #fff;
@ -98,8 +100,17 @@
padding: 0 16px;
display: flex;
align-items: center;
position: relative;
}
.timeDiv{
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-50%);
display: flex;
align-items: center;
justify-content: flex-end;
}
.uploadDiv {
margin-left: 16px;
width: 120px;

43
src/app/pages/oil-station-info/oil-station-info.component.ts

@ -27,7 +27,7 @@ export class OilStationInfoComponent implements OnInit {
oilStationType: [null],
laneNumber: [null],
address: [null],
validityTime: [null, [Validators.required]],//营业执照有效期
// validityTime: [null, [Validators.required]],//营业执照有效期
locationName: [null],
companyName: [null],
leaderName: [null],
@ -54,6 +54,14 @@ export class OilStationInfoComponent implements OnInit {
address: [null],
distance: [null],
contactInformation: [null]
}),
validityTime: this.fb.group({
businessLicensevalidityTime: [null],
businessLicensevalidityTimeDay: [null, [Validators.required]],
hazardousLicensevalidityTime: [null],
hazardousLicensevalidityTimeDay: [null, [Validators.required]],
oilLicensevalidityTime: [null],
oilLicensevalidityTimeDay: [null, [Validators.required]]
})
});
@ -65,7 +73,9 @@ export class OilStationInfoComponent implements OnInit {
validityTime: any = []//营业执照有效期
businessLicensevalidityTime: any = []//营业执照有效期
hazardousLicensevalidityTime: any = []//危化品有效期
oilLicensevalidityTime: any = []//成品油有效期
//获取油站信息
gallery
getInfo() {
@ -83,9 +93,15 @@ export class OilStationInfoComponent implements OnInit {
this.hospital = data.result.govUnitDetail.hospital
this.fireBrigade = data.result.govUnitDetail.fireBrigade
this.httpBody.stationType = String(this.httpBody.stationType)
this.validityTime[0] = data.result.validityStartTime
this.validityTime[1] = data.result.validityEndTime
this.validityTime = [...this.validityTime]
this.businessLicensevalidityTime[0] = data.result.validityStartTime
this.businessLicensevalidityTime[1] = data.result.validityEndTime
this.businessLicensevalidityTime = [...this.businessLicensevalidityTime]
this.hazardousLicensevalidityTime[0] = data.result.dangerousStartTime
this.hazardousLicensevalidityTime[1] = data.result.dangerousEndTime
this.hazardousLicensevalidityTime = [...this.hazardousLicensevalidityTime]
this.oilLicensevalidityTime[0] = data.result.sellLicenseStartTime
this.oilLicensevalidityTime[1] = data.result.sellLicenseEndTime
this.oilLicensevalidityTime = [...this.oilLicensevalidityTime]
} else {
this.httpBody.id = data.result.id
}
@ -128,6 +144,13 @@ export class OilStationInfoComponent implements OnInit {
organizationUnitId: JSON.parse(sessionStorage.getItem('userdata')).organization.id,
validityStartTime: '',
validityEndTime: '',
dangerousStartTime: '',
dangerousEndTime: '',
sellLicenseStartTime: '',
sellLicenseEndTime: '',
validityTermDays: null,
dangerousTermDays: null,
sellLicenseTermDays: null,
openTime: '',
stationType: '',
laneCount: '',
@ -160,8 +183,14 @@ export class OilStationInfoComponent implements OnInit {
if (this.validateForm.valid) {
this.isLoadingSave = true
this.httpBody.openTime = moment(this.httpBody.openTime).format('YYYY-MM-MM')//开业时间格式化
this.httpBody.validityStartTime = moment(this.validityTime[0]).format('YYYY-MM-MM')//开业时间格式化
this.httpBody.validityEndTime = moment(this.validityTime[1]).format('YYYY-MM-MM')//开业时间格式化
this.httpBody.validityStartTime = moment(this.businessLicensevalidityTime[0]).format('YYYY-MM-MM')//
this.httpBody.validityEndTime = moment(this.businessLicensevalidityTime[1]).format('YYYY-MM-MM')//
this.httpBody.dangerousStartTime = moment(this.hazardousLicensevalidityTime[0]).format('YYYY-MM-MM')//
this.httpBody.dangerousEndTime = moment(this.hazardousLicensevalidityTime[1]).format('YYYY-MM-MM')//
this.httpBody.sellLicenseStartTime = moment(this.oilLicensevalidityTime[0]).format('YYYY-MM-MM')//
this.httpBody.sellLicenseEndTime = moment(this.oilLicensevalidityTime[1]).format('YYYY-MM-MM')//
this.httpBody.govUnitDetail.policeStation = this.validateForm.value.policeStation
this.httpBody.govUnitDetail.hospital = this.validateForm.value.hospital
this.httpBody.govUnitDetail.fireBrigade = this.validateForm.value.fireBrigade

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所需的固定内容

BIN
src/assets/images/goback.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Loading…
Cancel
Save