| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- package services
- import (
- "context"
- "fmt"
- "fwh-toolbox-server/domain"
- "fwh-toolbox-server/dto"
- "fwh-toolbox-server/repositories"
- "fwh-toolbox-server/taskQueue"
- "fwh-toolbox-server/utils/global"
- "strconv"
- "time"
- "github.com/xuri/excelize/v2"
- "go.uber.org/zap"
- )
- // 获取更新状态
- func GetSiteInfoUpdateStatus() (*domain.SiteInfoUpdateRecord, error) {
- return repositories.GetSiteInfoUpdateNewRecord()
- }
- // 请求更新站点信息表
- func UpdateSiteInfoDate() error {
- id, err := repositories.CreateSiteInfoUpdateInfo()
- if err != nil {
- return err
- }
- if err := taskQueue.EnqueueSiteInfoUpdateTask(domain.TaskSiteInfoUpdate{
- Id: *id,
- }); err != nil {
- return err
- }
- return nil
- }
- // 获取站点信息表
- func QuerySiteInfoDataList(para dto.SiteInfoRequest) (*dto.ResPage[dto.SiteInfoDTO], error) {
- res, err := repositories.GetSiteInfoManageList(para.PageNum, para.PageSize, para.Filter, para.Search)
- if err != nil {
- return nil, err
- }
- result := dto.ResPage[dto.SiteInfoDTO]{
- Data: []dto.SiteInfoDTO{},
- PageSize: res.PageSize,
- PageNum: res.PageNum,
- Total: res.Total,
- }
- for _, d := range res.Data {
- result.Data = append(result.Data, *dto.SiteInfoDomainToSiteInfoDTO(&d))
- }
- return &result, nil
- }
- // 导出站点信息表
- func ExportSiteInfoDataList(filer *domain.SiteInfoFilter) (*excelize.File, error) {
- res, err := repositories.GetSiteInfoManageList(0, 0, filer, "")
- if err != nil {
- return nil, err
- }
- record, err := repositories.GetSiteInfoUpdateNewRecord()
- if err != nil {
- return nil, err
- }
- // 创建新的excel文件
- f := excelize.NewFile()
- // 写标题行
- f.SetCellValue("Sheet1", "A1", "SN")
- f.SetCellValue("Sheet1", "B1", "Installer")
- f.SetCellValue("Sheet1", "C1", "ActiveTime")
- f.SetCellValue("Sheet1", "D1", "Status")
- f.SetCellValue("Sheet1", "E1", "OnLineTime")
- f.SetCellValue("Sheet1", "F1", "OffLineTime")
- f.SetCellValue("Sheet1", "G1", "FhpSn")
- f.SetCellValue("Sheet1", "H1", "Version")
- f.SetCellValue("Sheet1", "I1", "SlVersion")
- f.SetCellValue("Sheet1", "J1", "SlVersionJson")
- f.SetCellValue("Sheet1", "K1", "MeterVersion")
- f.SetCellValue("Sheet1", "L1", "MbVersion")
- f.SetCellValue("Sheet1", "M1", "AwsVersion")
- f.SetCellValue("Sheet1", "N1", "AppVersion")
- f.SetCellValue("Sheet1", "O1", "ProtocolVer")
- f.SetCellValue("Sheet1", "P1", "SysHdVersion")
- f.SetCellValue("Sheet1", "Q1", "Remark")
- f.SetCellValue("Sheet1", "R1", "Country")
- f.SetCellValue("Sheet1", "S1", "Province")
- f.SetCellValue("Sheet1", "T1", "ManufactureDate")
- f.SetCellValue("Sheet1", "U1", "HardwareVersion")
- f.SetCellValue("Sheet1", "V1", "CveStatus")
- f.SetCellValue("Sheet1", "W1", "SecurityPatchLevel")
- f.SetCellValue("Sheet1", "X1", "TargetVersion")
- f.SetCellValue("Sheet1", "Y1", "LastUpgradeTime")
- f.SetCellValue("Sheet1", "Z1", "UpgradeStatus")
- f.SetCellValue("Sheet1", "AA1", "Owner/Maintainer")
- f.SetCellValue("Sheet1", "AB1", "DataSource")
- f.SetCellValue("Sheet1", "AC1", "LastUpdated")
- // 写入数据
- for i, d := range res.Data {
- f.SetCellValue("Sheet1", "A"+strconv.Itoa(i+2), d.Sn)
- f.SetCellValue("Sheet1", "B"+strconv.Itoa(i+2), global.Deref(d.InstallerName, ""))
- f.SetCellValue("Sheet1", "C"+strconv.Itoa(i+2), d.ActiveTime)
- f.SetCellValue("Sheet1", "D"+strconv.Itoa(i+2), d.Status)
- f.SetCellValue("Sheet1", "E"+strconv.Itoa(i+2), global.Deref(d.OnLineTime, ""))
- f.SetCellValue("Sheet1", "F"+strconv.Itoa(i+2), global.Deref(d.OffLineTime, ""))
- f.SetCellValue("Sheet1", "G"+strconv.Itoa(i+2), d.FhpSn)
- f.SetCellValue("Sheet1", "H"+strconv.Itoa(i+2), d.Version)
- f.SetCellValue("Sheet1", "I"+strconv.Itoa(i+2), d.SlVersion)
- f.SetCellValue("Sheet1", "J"+strconv.Itoa(i+2), d.SlVersionJson)
- f.SetCellValue("Sheet1", "K"+strconv.Itoa(i+2), global.Deref(d.MeterVersion, ""))
- f.SetCellValue("Sheet1", "L"+strconv.Itoa(i+2), global.Deref(d.MbVersion, ""))
- f.SetCellValue("Sheet1", "M"+strconv.Itoa(i+2), global.Deref(d.AwsVersion, ""))
- f.SetCellValue("Sheet1", "N"+strconv.Itoa(i+2), global.Deref(d.AppVersion, ""))
- f.SetCellValue("Sheet1", "O"+strconv.Itoa(i+2), d.ProtocolVer)
- f.SetCellValue("Sheet1", "P"+strconv.Itoa(i+2), d.SysHdVersion)
- f.SetCellValue("Sheet1", "Q"+strconv.Itoa(i+2), global.Deref(d.Remark, ""))
- f.SetCellValue("Sheet1", "R"+strconv.Itoa(i+2), d.Country)
- f.SetCellValue("Sheet1", "S"+strconv.Itoa(i+2), d.Province)
- var manufactureDate string = ""
- if len(d.Sn) > 9 {
- year := d.Sn[len(d.Sn)-8 : len(d.Sn)-6]
- week := d.Sn[len(d.Sn)-6 : len(d.Sn)-4]
- manufactureDate = fmt.Sprintf("%s年%s周", year, week)
- }
- f.SetCellValue("Sheet1", "T"+strconv.Itoa(i+2), manufactureDate)
- f.SetCellValue("Sheet1", "U"+strconv.Itoa(i+2), "V"+strconv.Itoa(d.SysHdVersion))
- f.SetCellValue("Sheet1", "V"+strconv.Itoa(i+2), "无")
- f.SetCellValue("Sheet1", "W"+strconv.Itoa(i+2), "安全")
- f.SetCellValue("Sheet1", "X"+strconv.Itoa(i+2), d.Version)
- f.SetCellValue("Sheet1", "Y"+strconv.Itoa(i+2), global.Deref(d.FirmUpgradeTime, ""))
- f.SetCellValue("Sheet1", "Z"+strconv.Itoa(i+2), "成功")
- f.SetCellValue("Sheet1", "AA"+strconv.Itoa(i+2), "Jerry Liang/LMT")
- f.SetCellValue("Sheet1", "AB"+strconv.Itoa(i+2), "Fleetview")
- f.SetCellValue("Sheet1", "AC"+strconv.Itoa(i+2), record.UpdateTime.Format(time.DateTime))
- }
- return f, err
- }
- // 查询单个站点实时信息(同时更新单个站点数据)
- func GetSiteInfoData(sn string) (*dto.SiteInfoDTO, error) {
- res, err := repositories.QuerySiteInfoList(dto.SiteInfoPara{
- SN: &sn,
- PageSize: 10,
- PageNum: 1,
- })
- if err != nil {
- return nil, err
- }
- if res.Result == nil {
- return nil, fmt.Errorf("code: %s, msg: %s", strconv.Itoa(res.Code), res.Message)
- }
- if len(*res.Result) == 0 {
- return nil, fmt.Errorf("code: %s, msg: %s", strconv.Itoa(res.Code), res.Message)
- }
- domainData := domain.FwhSiteInfoToSiteInfoDomain(&(*res.Result)[0])
- // 数据插入数据库
- if err := repositories.InsertSiteInfoData(*domainData); err != nil {
- zap.L().Error("保存站点信息失败", zap.String("err", err.Error()), zap.String("sn", sn))
- }
- dtoData := dto.SiteInfoDomainToSiteInfoDTO(domainData)
- return dtoData, nil
- }
- // 使能站点xlog
- func OperateSiteInfoEnableXlog(ctx context.Context, sn string) (string, error) {
- return repositories.FwhMqttEnableXlog(ctx, sn)
- }
|