From 908b765ab55adb5b9f5dc0d3f69882d86349cc9e Mon Sep 17 00:00:00 2001
From: SHAOJIAHAO <55341701@qq.com>
Date: Wed, 26 Apr 2023 13:48:20 +0800
Subject: [PATCH] =?UTF-8?q?[=E5=AE=8C=E5=96=84]=E5=AE=8C=E5=96=84=E5=AE=89?=
=?UTF-8?q?=E4=BF=A1=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../anxin-config/anxin-config.component.html | 5 +
.../anxin-config/anxin-config.component.scss | 21 ++++
.../anxin-config.component.spec.ts | 25 +++++
.../anxin-config/anxin-config.component.ts | 19 ++++
.../host-config/host-config.component.html | 2 +-
.../host-config/host-config.component.ts | 96 ++++++++++++++++++-
.../image-label-anxin.component.ts | 36 ++++++-
.../system-management.module.ts | 2 +
8 files changed, 199 insertions(+), 7 deletions(-)
create mode 100644 src/app/system-management/host-config/anxin-config/anxin-config.component.html
create mode 100644 src/app/system-management/host-config/anxin-config/anxin-config.component.scss
create mode 100644 src/app/system-management/host-config/anxin-config/anxin-config.component.spec.ts
create mode 100644 src/app/system-management/host-config/anxin-config/anxin-config.component.ts
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,