diff --git a/src/app/system-management/host-config/anxin-config/anxin-config.component.html b/src/app/system-management/host-config/anxin-config/anxin-config.component.html new file mode 100644 index 0000000..41d2a87 --- /dev/null +++ b/src/app/system-management/host-config/anxin-config/anxin-config.component.html @@ -0,0 +1,5 @@ +
+
+ +
+
\ No newline at end of file diff --git a/src/app/system-management/host-config/anxin-config/anxin-config.component.scss b/src/app/system-management/host-config/anxin-config/anxin-config.component.scss new file mode 100644 index 0000000..d167756 --- /dev/null +++ b/src/app/system-management/host-config/anxin-config/anxin-config.component.scss @@ -0,0 +1,21 @@ +.box { + width: 100%; + height: 100%; + background: #fff; + font-size: 15px; + color: black; + box-sizing: border-box; + display: flex; + flex-direction: column; + overflow-y: auto; +} + +.content { + flex: 1; + box-sizing: border-box; + + textarea { + width: 100%; + height: 400px; + } +} diff --git a/src/app/system-management/host-config/anxin-config/anxin-config.component.spec.ts b/src/app/system-management/host-config/anxin-config/anxin-config.component.spec.ts new file mode 100644 index 0000000..009377b --- /dev/null +++ b/src/app/system-management/host-config/anxin-config/anxin-config.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AnxinConfigComponent } from './anxin-config.component'; + +describe('AnxinConfigComponent', () => { + let component: AnxinConfigComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AnxinConfigComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AnxinConfigComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/system-management/host-config/anxin-config/anxin-config.component.ts b/src/app/system-management/host-config/anxin-config/anxin-config.component.ts new file mode 100644 index 0000000..dc0207b --- /dev/null +++ b/src/app/system-management/host-config/anxin-config/anxin-config.component.ts @@ -0,0 +1,19 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import yaml from 'js-yaml'; +@Component({ + selector: 'app-anxin-config', + templateUrl: './anxin-config.component.html', + styleUrls: ['./anxin-config.component.scss'], +}) +export class AnxinConfigComponent implements OnInit { + @Input() data: any; + validateForm!: FormGroup; + constructor() {} + datacopy; + ngOnInit(): void { + this.datacopy = yaml.dump(JSON.parse(JSON.stringify(this.data)), { + lineWidth: -1, + }); + } +} diff --git a/src/app/system-management/host-config/host-config.component.html b/src/app/system-management/host-config/host-config.component.html index 88a37e8..7527c56 100644 --- a/src/app/system-management/host-config/host-config.component.html +++ b/src/app/system-management/host-config/host-config.component.html @@ -63,7 +63,7 @@ diff --git a/src/app/system-management/host-config/host-config.component.ts b/src/app/system-management/host-config/host-config.component.ts index e230fca..ee3485a 100644 --- a/src/app/system-management/host-config/host-config.component.ts +++ b/src/app/system-management/host-config/host-config.component.ts @@ -36,8 +36,8 @@ interface Camera { } import yaml from 'js-yaml'; -import * as YAML from 'yaml'; import { ImageLabelAnxinComponent } from '../image-label-anxin/image-label-anxin.component'; +import { AnxinConfigComponent } from './anxin-config/anxin-config.component'; @Component({ selector: 'app-host-config', @@ -1502,5 +1502,97 @@ ${newstr}class-id=0 } //安信配置文件 - configToAx() {} + configToAx() { + let data = this.configJsonToAx(); + console.log(data) + // return; + const modal = this.modal.create({ + nzTitle: '下发安信config.json配置', + nzContent: AnxinConfigComponent, + nzViewContainerRef: this.viewContainerRef, + nzWidth: 1000, + nzBodyStyle: { + 'border-radius': '0px', + padding: '7px', + }, + nzComponentParams: { + data: data, + }, + nzOnOk: () => { + new Promise((resolve, reject) => { + console.log('表单信息', instance.validateForm); + let body = { + configFiles: [{ name: 'data.yaml', content: instance.datacopy }], + }; + this.http.put(`/api/EdgeDevices/${this.hostId}`, body).subscribe({ + next: (data) => { + resolve(data); + this.message.success('文件保存成功'); + let params = { + edgeDeviceId: this.hostId, + fileName: 'data.yaml', + }; + this.http + .put('/api/EdgeDevices/Commands/PushFile', '', { + params: params, + }) + .subscribe({ + next: (data) => { + this.message.create('success', `发送文件名成功`); + }, + }); + }, + error: (err) => { + this.message.error('文件保存失败'); + reject(err); + }, + }); + }); + }, + }); + const instance = modal.getContentComponent(); + } + + configJsonToAx() { + let data = { + userInfo: { + user: '', + password: '', + }, + caps:[], + }; + console.log(this.listOfData); + this.listOfData.forEach((item: any) => { + let type = null; + item.type === 0 + ? (type = 2) + : item.type === 1 + ? (type = 1) + : item.type === 2 + ? (type = 0) + : item.type === 3 + ? (type = 4) + : null; + + let areas = []; + if (item.dimensionedPointsAnxinObj) { + if (item.dimensionedPointsAnxinObj.yamlData.length !== 0) { + areas = item.dimensionedPointsAnxinObj.yamlData; + } + } + + let obj:any = { + id: item.id, + type: type, + url: item.uri, + name: item.name, + }; + if(areas.length !== 0){ + obj.areas = areas + } + data.caps.push(obj); + }); + + return data + } } diff --git a/src/app/system-management/image-label-anxin/image-label-anxin.component.ts b/src/app/system-management/image-label-anxin/image-label-anxin.component.ts index b93c299..66f9cb6 100644 --- a/src/app/system-management/image-label-anxin/image-label-anxin.component.ts +++ b/src/app/system-management/image-label-anxin/image-label-anxin.component.ts @@ -35,6 +35,7 @@ export class ImageLabelAnxinComponent implements OnInit { return new Promise((resolve, reject) => { this.http.get(`/api/Cameras/${this.cameraId}`).subscribe((data: any) => { this.camerasData = data; + // this.camerasData.dimensionedPointsAnxin = null this.markType = data.type; const httpOptions = { responseType: 'blob' as 'json', @@ -128,6 +129,7 @@ export class ImageLabelAnxinComponent implements OnInit { DrawPolygoning = ''; initMark(canvas, context) { + // return if (!this.camerasData.dimensionedPointsAnxin) { return; } else { @@ -136,8 +138,9 @@ export class ImageLabelAnxinComponent implements OnInit { ); } console.log('原始标点数据', this.camerasData.dimensionedPointsAnxin); - for (const key in this.camerasData.dimensionedPointsAnxin) { - const element = this.camerasData.dimensionedPointsAnxin[key]; + + for (const key in this.camerasData.dimensionedPointsAnxin.rawData) { + const element = this.camerasData.dimensionedPointsAnxin.rawData[key]; console.log(key, element); if (element.length !== 0) { for (let index = 0; index < element.length; index++) { @@ -453,18 +456,36 @@ export class ImageLabelAnxinComponent implements OnInit { save() { console.log(this.camerasData.dimensionedPointsAnxin); if (!this.camerasData.dimensionedPointsAnxin) { - this.camerasData.dimensionedPointsAnxin = { + this.camerasData.dimensionedPointsAnxin = {}; + this.camerasData.dimensionedPointsAnxin.rawData = { 进出口: [], 收银区: [], 加油区: [], 卸油区: [], }; + this.camerasData.dimensionedPointsAnxin.yamlData = []; } console.log('标点数据', this.PolygonData); + + let yamlData = []; for (const key in this.PolygonData) { const item = this.PolygonData[key]; - this.camerasData.dimensionedPointsAnxin[key] = item.Points; + this.camerasData.dimensionedPointsAnxin.rawData[key] = item.Points; + if (item.Points.length !== 0) { + let points = []; + for (const key in item.Points) { + const v = item.Points[key]; + points.push(Number((v.x / this.canvasWidth).toFixed(4))); + points.push(Number((v.y / this.canvasHeight).toFixed(4))); + } + let obj = { + type: enum_area[key], + points: points, + }; + yamlData.push(obj); + } } + this.camerasData.dimensionedPointsAnxin.yamlData = yamlData; let body = { dimensionedPointsAnxin: JSON.stringify( this.camerasData.dimensionedPointsAnxin @@ -485,3 +506,10 @@ export class ImageLabelAnxinComponent implements OnInit { }); } } + +enum enum_area { + '加油区' = 2, + '卸油区' = 3, + '收银区' = 1, + '进出口' = 0, +} diff --git a/src/app/system-management/system-management.module.ts b/src/app/system-management/system-management.module.ts index bf91fe1..cc273e2 100644 --- a/src/app/system-management/system-management.module.ts +++ b/src/app/system-management/system-management.module.ts @@ -48,6 +48,7 @@ import { DetailsComponent } from './video-streaming/details/details.component'; import { NzRadioModule } from 'ng-zorro-antd/radio'; import { HuangHaiConfigComponent } from './host-config/huang-hai-config/huang-hai-config.component'; import { ImageLabelAnxinComponent } from './image-label-anxin/image-label-anxin.component'; +import { AnxinConfigComponent } from './host-config/anxin-config/anxin-config.component'; @NgModule({ declarations: [ OrganizationComponent, @@ -77,6 +78,7 @@ import { ImageLabelAnxinComponent } from './image-label-anxin/image-label-anxin. DetailsComponent, HuangHaiConfigComponent, ImageLabelAnxinComponent, + AnxinConfigComponent, ], imports: [ CommonModule,