1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package handler
- import (
- "GtDataStore/app/cmd/organization/internal/logic/job"
- "GtDataStore/app/cmd/organization/internal/svc"
- "GtDataStore/app/model"
- "context"
- "github.com/zeromicro/go-zero/core/logx"
- "time"
- )
- func DevicePump(ctx context.Context, task *job.Task, technologyName string) error {
- // 1. 查询所有的设备
- devices, err := findDevicePump(task.Job.SvcCtx, int64(task.Id))
- if err != nil {
- return err
- }
- // 2. 获得点位信息
- //var wg sync.WaitGroup
- //wg.Add(len(devices))
- //for _, device := range devices {
- // device := device
- // go func() {
- // defer wg.Done()
- // if err := device.Items.FillCurrentValue(); err != nil {
- // logx.Errorf("DevicePump device.Items.FillCurrentValue error: %s", err.Error())
- // }
- // }()
- //}
- //
- //wg.Wait()
- // 3. 转换为存储对象
- workings, err := transDevicePumpData(devices)
- if err != nil {
- return err
- }
- // 4. 批量入库
- if _, err := task.Job.SvcCtx.WorkingPump.MultiInsert(context.Background(), workings); err != nil {
- logx.Errorf("DevicePump task.Job.SvcCtx.WorkingPump.MultiInsert error: %s", err.Error())
- }
- return nil
- }
- func findDevicePump(svcCtx *svc.ServiceContext, projectId int64) ([]model.DcDeviceBind, error) {
- if data := deviceBindCacheTable.GetCache(DEVICE_PUMP); data != nil {
- return data, nil
- }
- if devices, err := svcCtx.DeviceBind.FindByProjectIdDeviceType(context.Background(), projectId, DEVICE_PUMP); err != nil {
- logx.Infof("findDevicePump not found devices")
- return nil, err
- } else {
- deviceBindCacheTable.SetCache(DEVICE_PUMP, devices, time.Now().Add(300*time.Second))
- return devices, nil
- }
- }
- func transDevicePumpData(datas []model.DcDeviceBind) ([]model.DcWorkingPump, error) {
- ts := make([]model.DcWorkingPump, len(datas))
- for i, data := range datas {
- ts[i] = model.DcWorkingPump{
- ProjectId: data.ProjectId,
- DeviceCode: data.DeviceCode,
- FeedPressure: data.Items.GetItemFloat64Value("feed_pressure"),
- OutPressure: data.Items.GetItemFloat64Value("out_pressure"),
- Duration: data.Items.GetItemInt64Value("duration"),
- Current: data.Items.GetItemFloat64Value("current"),
- Frequency: data.Items.GetItemFloat64Value("frequency"),
- Lift: data.Items.GetItemFloat64Value("lift"),
- Efficiency: data.Items.GetItemFloat64Value("efficiency"),
- RunStatus: data.Items.GetItemInt64Value("run_status"),
- FaultStatus: data.Items.GetItemInt64Value("fault_status"),
- CTime: time.Now(),
- }
- }
- return ts, nil
- }
|