Создана конвертация
This commit is contained in:
parent
666a1a3c12
commit
e6a62b4f2b
10454
data1.json
10454
data1.json
File diff suppressed because it is too large
Load Diff
6965
data2.json
6965
data2.json
File diff suppressed because it is too large
Load Diff
13
go.mod
13
go.mod
@ -1,3 +1,16 @@
|
||||
module gitstore.ru/tolikproh/sirius
|
||||
|
||||
go 1.20
|
||||
|
||||
require github.com/xuri/excelize/v2 v2.7.1
|
||||
|
||||
require (
|
||||
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
|
||||
github.com/richardlehane/mscfb v1.0.4 // indirect
|
||||
github.com/richardlehane/msoleps v1.0.3 // indirect
|
||||
github.com/xuri/efp v0.0.0-20220603152613-6918739fd470 // indirect
|
||||
github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22 // indirect
|
||||
golang.org/x/crypto v0.8.0 // indirect
|
||||
golang.org/x/net v0.9.0 // indirect
|
||||
golang.org/x/text v0.9.0 // indirect
|
||||
)
|
||||
|
62
go.sum
Normal file
62
go.sum
Normal file
@ -0,0 +1,62 @@
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
|
||||
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
|
||||
github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
|
||||
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
||||
github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM=
|
||||
github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/xuri/efp v0.0.0-20220603152613-6918739fd470 h1:6932x8ltq1w4utjmfMPVj09jdMlkY0aiA6+Skbtl3/c=
|
||||
github.com/xuri/efp v0.0.0-20220603152613-6918739fd470/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
|
||||
github.com/xuri/excelize/v2 v2.7.1 h1:gm8q0UCAyaTt3MEF5wWMjVdmthm2EHAWesGSKS9tdVI=
|
||||
github.com/xuri/excelize/v2 v2.7.1/go.mod h1:qc0+2j4TvAUrBw36ATtcTeC1VCM0fFdAXZOmcF4nTpY=
|
||||
github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22 h1:OAmKAfT06//esDdpi/DZ8Qsdt4+M5+ltca05dA5bG2M=
|
||||
github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
|
||||
golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
|
||||
golang.org/x/image v0.5.0/go.mod h1:FVC7BI/5Ym8R25iw5OLsgshdUBbT1h5jZTpA+mvAdZ4=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
|
||||
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
|
||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
55
main.go
55
main.go
@ -1,29 +1,68 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
excelize "github.com/xuri/excelize/v2"
|
||||
"gitstore.ru/tolikproh/sirius/model"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var sirius model.Sirius
|
||||
siriusJson, err := ioutil.ReadFile("data1.json")
|
||||
siriusJson, err := ioutil.ReadFile("sirius.json")
|
||||
if err != nil {
|
||||
fmt.Println("No read file")
|
||||
panic(err)
|
||||
fmt.Println("No read file: sirius.json")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
fmt.Println(json.Valid(siriusJson))
|
||||
siriusJson = bytes.TrimPrefix(siriusJson, []byte("\xef\xbb\xbf"))
|
||||
|
||||
if !json.Valid(siriusJson) {
|
||||
fmt.Println("Formated file not supported: sirius.json")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
fmt.Println("Start converted ....")
|
||||
|
||||
err = json.Unmarshal(siriusJson, &sirius)
|
||||
if err != nil {
|
||||
fmt.Println("Error unmarshal")
|
||||
panic(err)
|
||||
fmt.Println("Error unmarshal file: sirius.json")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
sirius.Zone.Get()
|
||||
fmt.Println(sirius.Zone.Get())
|
||||
if err := SaveToExel("sirius.xlsx", sirius.NewBolid().ZoneInfo()); err != nil {
|
||||
fmt.Println("Error create file: sirius.xlsx")
|
||||
os.Exit(0)
|
||||
}
|
||||
fmt.Println("Converted finalise. Create file: sirius.xlsx")
|
||||
}
|
||||
|
||||
func SaveToExel(filename string, data []model.ZoneInfo) error {
|
||||
f := excelize.NewFile()
|
||||
defer func() {
|
||||
if err := f.Close(); err != nil {
|
||||
return
|
||||
}
|
||||
}()
|
||||
// Create a new sheet.
|
||||
f.SetCellValue("Sheet1", "A2", "№ зоны")
|
||||
f.SetCellValue("Sheet1", "B2", "Описание зоны")
|
||||
f.SetCellValue("Sheet1", "C2", "Адреса в зоне")
|
||||
i := 3
|
||||
for _, d := range data {
|
||||
f.SetCellValue("Sheet1", "A"+strconv.Itoa(i), d.ZoneNum)
|
||||
f.SetCellValue("Sheet1", "B"+strconv.Itoa(i), d.ZoneName)
|
||||
f.SetCellValue("Sheet1", "C"+strconv.Itoa(i), d.InputString())
|
||||
i++
|
||||
}
|
||||
// Save spreadsheet by the given path.
|
||||
if err := f.SaveAs(filename); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
273
model/model.go
273
model/model.go
@ -1,184 +1,131 @@
|
||||
package model
|
||||
|
||||
// Sirius structure
|
||||
type Sirius struct {
|
||||
Device `json:"device"`
|
||||
Zone `json:"zone"`
|
||||
ZoneGroup `json:"zone_group"`
|
||||
Input `json:"input"`
|
||||
Output `json:"output"`
|
||||
Reader `json:"reader"`
|
||||
Channel `json:"channel"`
|
||||
AccessGroup `json:"access_group"`
|
||||
import "fmt"
|
||||
|
||||
type Bolid struct {
|
||||
Devices []DevBolid
|
||||
Zones []ZoneBolid
|
||||
}
|
||||
|
||||
// Device
|
||||
type Device struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
// type DeviceRows struct {
|
||||
// I1 int64
|
||||
// I2 int64
|
||||
// B1 bool
|
||||
// I3 int64
|
||||
// I4 int64
|
||||
// I5 int64
|
||||
// I6 int64
|
||||
// I7 int64
|
||||
// I8 int64
|
||||
// I9 int64
|
||||
// IntArr1 []int64
|
||||
// IntArr2 []int64
|
||||
// Name string
|
||||
// }
|
||||
|
||||
// Zone
|
||||
type Zone struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows [][]interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
func (z *Zone) Get() []ZoneRows {
|
||||
var zr []ZoneRows
|
||||
for _, z := range z.Rows {
|
||||
i, b, s := InterToArray(z)
|
||||
|
||||
zz := ZoneRows{
|
||||
Number: i[0],
|
||||
I1: i[1],
|
||||
B1: b[0],
|
||||
I2: i[2],
|
||||
I3: i[3],
|
||||
I4: i[4],
|
||||
B2: b[1],
|
||||
B3: b[2],
|
||||
Name: s[0],
|
||||
}
|
||||
zr = append(zr, zz)
|
||||
}
|
||||
return zr
|
||||
}
|
||||
|
||||
type ZoneRows struct {
|
||||
Number int64
|
||||
I1 int64
|
||||
B1 bool
|
||||
I2 int64
|
||||
I3 int64
|
||||
I4 int64
|
||||
B2 bool
|
||||
B3 bool
|
||||
type DevBolid struct {
|
||||
Name string
|
||||
Type int64
|
||||
Addr int64
|
||||
Input []InputBolid
|
||||
}
|
||||
|
||||
// ZoneGroup
|
||||
type ZoneGroup struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
type InputBolid struct {
|
||||
ZoneId int64
|
||||
Name string
|
||||
Addr int64
|
||||
}
|
||||
|
||||
// type ZoneGroupRows struct {
|
||||
// Number int64
|
||||
// I2 int64
|
||||
// B1 bool
|
||||
// I3 int64
|
||||
// I4 int64
|
||||
// IntArr []int64
|
||||
// Name string
|
||||
// }
|
||||
|
||||
// Input
|
||||
type Input struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
type ZoneBolid struct {
|
||||
ZoneId int64
|
||||
Name string
|
||||
Number int64
|
||||
}
|
||||
|
||||
// type InputRows struct {
|
||||
// Addr int64
|
||||
// I2 int64
|
||||
// I3 int64
|
||||
// I4 int64
|
||||
// I5 int64
|
||||
// I6 int64
|
||||
// I7 int64
|
||||
// I8 int64
|
||||
// Name string
|
||||
// }
|
||||
|
||||
// Output
|
||||
type Output struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
type ZoneInfo struct {
|
||||
ZoneNum int64
|
||||
ZoneName string
|
||||
Input []InputInfo
|
||||
}
|
||||
|
||||
// type OutputRows struct {
|
||||
// Addr int64
|
||||
// I2 int64
|
||||
// I3 int64
|
||||
// I4 int64
|
||||
// I5 int64
|
||||
// I6 int64
|
||||
// I7 int64
|
||||
// I8 int64
|
||||
// I9 int64
|
||||
// I10 int64
|
||||
// I11 int64
|
||||
// IntArr1 []int64
|
||||
// IntArr2 []int64
|
||||
// I12 int64
|
||||
// I13 int64
|
||||
// Name string
|
||||
// }
|
||||
|
||||
// Reader
|
||||
type Reader struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
type InputInfo struct {
|
||||
DevAdd int64
|
||||
Address int64
|
||||
}
|
||||
|
||||
// type ReaderRows struct {
|
||||
// I1 int64
|
||||
// I2 int64
|
||||
// I3 int64
|
||||
// I4 int64
|
||||
// I5 int64
|
||||
// I6 int64
|
||||
// IntArr1 []int64
|
||||
// IntArr2 []int64
|
||||
// Name string
|
||||
// }
|
||||
func (z *ZoneInfo) InputString() string {
|
||||
var zones string
|
||||
|
||||
// Channel
|
||||
type Channel struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
i := 0
|
||||
for _, inp := range z.Input {
|
||||
if i != 0 {
|
||||
zones = zones + ", "
|
||||
}
|
||||
zones = zones + fmt.Sprint(inp.DevAdd) + "." + fmt.Sprint(inp.Address)
|
||||
i++
|
||||
}
|
||||
|
||||
// type ChannelRows struct {
|
||||
// I1 int64
|
||||
// I2 int64
|
||||
// I3 int64
|
||||
// I4 int64
|
||||
// I5 int64
|
||||
// Name string
|
||||
// }
|
||||
|
||||
// AccessGroup
|
||||
type AccessGroup struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
return zones
|
||||
}
|
||||
|
||||
// type AccessGroupRows struct {
|
||||
// I1 int64
|
||||
// I2 int64
|
||||
// IntArr1 []AccessGroupIntArray
|
||||
// Name string
|
||||
// }
|
||||
func (b *Bolid) ZoneInfo() []ZoneInfo {
|
||||
var zonesInfo []ZoneInfo
|
||||
|
||||
// type AccessGroupIntArray struct {
|
||||
// I1 int64
|
||||
// I2 int64
|
||||
// }
|
||||
for _, zon := range b.Zones {
|
||||
var zi ZoneInfo
|
||||
for _, dev := range b.Devices {
|
||||
var i InputInfo
|
||||
for _, inp := range dev.Input {
|
||||
if zon.ZoneId == inp.ZoneId {
|
||||
zi.ZoneNum = zon.Number
|
||||
zi.ZoneName = zon.Name
|
||||
i.DevAdd = dev.Addr
|
||||
i.Address = inp.Addr
|
||||
zi.Input = append(zi.Input, i)
|
||||
}
|
||||
}
|
||||
}
|
||||
zonesInfo = append(zonesInfo, zi)
|
||||
}
|
||||
|
||||
return zonesInfo
|
||||
}
|
||||
|
||||
func (s *Sirius) NewBolid() *Bolid {
|
||||
return &Bolid{
|
||||
Devices: s.NewDevices(),
|
||||
Zones: s.NewZones(),
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Sirius) NewDevices() []DevBolid {
|
||||
var devices []DevBolid
|
||||
|
||||
for _, dev := range s.Device.Get() {
|
||||
d := DevBolid{
|
||||
Name: dev.Name,
|
||||
Type: dev.Type,
|
||||
Addr: dev.Addr,
|
||||
Input: s.GetInput(dev.DevID),
|
||||
}
|
||||
devices = append(devices, d)
|
||||
}
|
||||
|
||||
return devices
|
||||
}
|
||||
|
||||
func (s *Sirius) GetInput(devId int64) []InputBolid {
|
||||
var inputs []InputBolid
|
||||
|
||||
for _, inp := range s.Input.Get() {
|
||||
if devId == inp.DevID {
|
||||
i := InputBolid{
|
||||
ZoneId: inp.ZoneID,
|
||||
Name: inp.Name,
|
||||
Addr: inp.AddrU,
|
||||
}
|
||||
inputs = append(inputs, i)
|
||||
}
|
||||
}
|
||||
|
||||
return inputs
|
||||
}
|
||||
|
||||
func (s *Sirius) NewZones() []ZoneBolid {
|
||||
var zones []ZoneBolid
|
||||
|
||||
for _, zon := range s.Zone.Get() {
|
||||
z := ZoneBolid{
|
||||
ZoneId: zon.ZoneID,
|
||||
Name: zon.Name,
|
||||
Number: zon.Number,
|
||||
}
|
||||
zones = append(zones, z)
|
||||
}
|
||||
|
||||
return zones
|
||||
}
|
||||
|
257
model/sirius.go
Normal file
257
model/sirius.go
Normal file
@ -0,0 +1,257 @@
|
||||
package model
|
||||
|
||||
// Sirius structure
|
||||
type Sirius struct {
|
||||
Device `json:"device"`
|
||||
Zone `json:"zone"`
|
||||
ZoneGroup `json:"zone_group"`
|
||||
Input `json:"input"`
|
||||
Output `json:"output"`
|
||||
Reader `json:"reader"`
|
||||
Channel `json:"channel"`
|
||||
AccessGroup `json:"access_group"`
|
||||
User `json:"user"`
|
||||
Script `json:"script"`
|
||||
Program `json:"program"`
|
||||
Controller `json:"controller"`
|
||||
}
|
||||
|
||||
// Device
|
||||
type Device struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows [][]interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
func (z *Device) Get() []DeviceRows {
|
||||
var zr []DeviceRows
|
||||
for _, z := range z.Rows {
|
||||
i, b, s, _ := InterToArray(z)
|
||||
|
||||
zz := DeviceRows{
|
||||
DevID: i[0],
|
||||
I2: i[1],
|
||||
B1: b[0],
|
||||
Addr: i[2],
|
||||
I4: i[3],
|
||||
Type: i[4],
|
||||
I6: i[5],
|
||||
I7: i[6],
|
||||
I8: i[7],
|
||||
I9: i[8],
|
||||
Name: s[0],
|
||||
}
|
||||
zr = append(zr, zz)
|
||||
}
|
||||
return zr
|
||||
}
|
||||
|
||||
// Type-40(КДЛС-С) Type-81(КДЛ-2И)
|
||||
type DeviceRows struct {
|
||||
DevID int64
|
||||
I2 int64
|
||||
B1 bool
|
||||
Addr int64
|
||||
I4 int64
|
||||
Type int64
|
||||
I6 int64
|
||||
I7 int64
|
||||
I8 int64
|
||||
I9 int64
|
||||
IntArr1 []int64
|
||||
IntArr2 []int64
|
||||
Name string
|
||||
}
|
||||
|
||||
// Zone
|
||||
type Zone struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows [][]interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
func (z *Zone) Get() []ZoneRows {
|
||||
var zr []ZoneRows
|
||||
for _, z := range z.Rows {
|
||||
i, b, s, _ := InterToArray(z)
|
||||
|
||||
zz := ZoneRows{
|
||||
ZoneID: i[0],
|
||||
I1: i[1],
|
||||
B1: b[0],
|
||||
Number: i[2],
|
||||
I3: i[3],
|
||||
I4: i[4],
|
||||
B2: b[1],
|
||||
B3: b[2],
|
||||
Name: s[0],
|
||||
}
|
||||
zr = append(zr, zz)
|
||||
}
|
||||
return zr
|
||||
}
|
||||
|
||||
type ZoneRows struct {
|
||||
ZoneID int64
|
||||
I1 int64
|
||||
B1 bool
|
||||
Number int64
|
||||
I3 int64
|
||||
I4 int64
|
||||
B2 bool
|
||||
B3 bool
|
||||
Name string
|
||||
}
|
||||
|
||||
// ZoneGroup
|
||||
type ZoneGroup struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
// type ZoneGroupRows struct {
|
||||
// Number int64
|
||||
// I2 int64
|
||||
// B1 bool
|
||||
// I3 int64
|
||||
// I4 int64
|
||||
// IntArr []int64
|
||||
// Name string
|
||||
// }
|
||||
|
||||
// Input
|
||||
type Input struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows [][]interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
func (z *Input) Get() []InputRows {
|
||||
var zr []InputRows
|
||||
for _, z := range z.Rows {
|
||||
i, _, s, _ := InterToArray(z)
|
||||
|
||||
zz := InputRows{
|
||||
InputID: i[0],
|
||||
DevID: i[1],
|
||||
AddrU: i[2],
|
||||
I4: i[3],
|
||||
I5: i[4],
|
||||
I6: i[5],
|
||||
ZoneID: i[6],
|
||||
I8: i[7],
|
||||
Name: s[0],
|
||||
}
|
||||
zr = append(zr, zz)
|
||||
}
|
||||
return zr
|
||||
}
|
||||
|
||||
type InputRows struct {
|
||||
InputID int64
|
||||
DevID int64
|
||||
AddrU int64
|
||||
I4 int64
|
||||
I5 int64
|
||||
I6 int64
|
||||
ZoneID int64
|
||||
I8 int64
|
||||
Name string
|
||||
}
|
||||
|
||||
// Output
|
||||
type Output struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
// type OutputRows struct {
|
||||
// Addr int64
|
||||
// I2 int64
|
||||
// I3 int64
|
||||
// I4 int64
|
||||
// I5 int64
|
||||
// I6 int64
|
||||
// I7 int64
|
||||
// I8 int64
|
||||
// I9 int64
|
||||
// I10 int64
|
||||
// I11 int64
|
||||
// IntArr1 []int64
|
||||
// IntArr2 []int64
|
||||
// I12 int64
|
||||
// I13 int64
|
||||
// Name string
|
||||
// }
|
||||
|
||||
// Reader
|
||||
type Reader struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
// type ReaderRows struct {
|
||||
// I1 int64
|
||||
// I2 int64
|
||||
// I3 int64
|
||||
// I4 int64
|
||||
// I5 int64
|
||||
// I6 int64
|
||||
// IntArr1 []int64
|
||||
// IntArr2 []int64
|
||||
// Name string
|
||||
// }
|
||||
|
||||
// Channel
|
||||
type Channel struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
// type ChannelRows struct {
|
||||
// I1 int64
|
||||
// I2 int64
|
||||
// I3 int64
|
||||
// I4 int64
|
||||
// I5 int64
|
||||
// Name string
|
||||
// }
|
||||
|
||||
// AccessGroup
|
||||
type AccessGroup struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
// type AccessGroupRows struct {
|
||||
// I1 int64
|
||||
// I2 int64
|
||||
// IntArr1 []AccessGroupIntArray
|
||||
// Name string
|
||||
// }
|
||||
|
||||
// type AccessGroupIntArray struct {
|
||||
// I1 int64
|
||||
// I2 int64
|
||||
// }
|
||||
|
||||
// User
|
||||
type User struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
// Script
|
||||
type Script struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
// Program
|
||||
type Program struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
}
|
||||
|
||||
// Controller
|
||||
type Controller struct {
|
||||
Keys []string `json:"keys"`
|
||||
Rows []interface{} `json:"rows"`
|
||||
}
|
@ -1,9 +1,10 @@
|
||||
package model
|
||||
|
||||
func InterToArray(inp []interface{}) ([]int64, []bool, []string) {
|
||||
func InterToArray(inp []interface{}) ([]int64, []bool, []string, []interface{}) {
|
||||
var i []int64
|
||||
var b []bool
|
||||
var s []string
|
||||
var a []interface{}
|
||||
for _, v1 := range inp {
|
||||
switch v2 := v1.(type) {
|
||||
case float64:
|
||||
@ -12,8 +13,10 @@ func InterToArray(inp []interface{}) ([]int64, []bool, []string) {
|
||||
b = append(b, bool(v2))
|
||||
case string:
|
||||
s = append(s, string(v2))
|
||||
default:
|
||||
a = append(a, v2)
|
||||
}
|
||||
|
||||
}
|
||||
return i, b, s
|
||||
return i, b, s, a
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
BIN
sirius.xlsx
Executable file
BIN
sirius.xlsx
Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user