作者 yangfu

fix :统计修改

fix :统计修改

fix :统计修改

fix :统计修改

fix :统计修改

fix :统计修改

fix :统计修改
@@ -91,7 +91,7 @@ func AutoFlushDeviceDailyRunningRecordOEE(ctx context.Context) error { @@ -91,7 +91,7 @@ func AutoFlushDeviceDailyRunningRecordOEE(ctx context.Context) error {
91 log.Logger.Error(err.Error()) 91 log.Logger.Error(err.Error())
92 continue 92 continue
93 } 93 }
94 - if err := redis.SaveDeviceDailyRunningRecord(v.ProductDate, v); err != nil { 94 + if err := redis.SaveDeviceDailyRunningRecordByKey(v.RedisKey, v); err != nil {
95 log.Logger.Error(err.Error(), map[string]interface{}{"task": "定时刷新设备每日运行记录"}) 95 log.Logger.Error(err.Error(), map[string]interface{}{"task": "定时刷新设备每日运行记录"})
96 continue 96 continue
97 } 97 }
@@ -33,6 +33,8 @@ type DeviceDailyRunningRecord struct { @@ -33,6 +33,8 @@ type DeviceDailyRunningRecord struct {
33 UpdatedAt time.Time `json:"updatedAt"` 33 UpdatedAt time.Time `json:"updatedAt"`
34 // 删除时间 34 // 删除时间
35 DeletedAt time.Time `json:"deletedAt"` 35 DeletedAt time.Time `json:"deletedAt"`
  36 +
  37 + RedisKey string `json:"-"`
36 } 38 }
37 39
38 type DeviceDailyRunningRecordRepository interface { 40 type DeviceDailyRunningRecordRepository interface {
@@ -69,10 +71,12 @@ func (deviceDailyRunningRecord *DeviceDailyRunningRecord) AddDeviceRunningData(d @@ -69,10 +71,12 @@ func (deviceDailyRunningRecord *DeviceDailyRunningRecord) AddDeviceRunningData(d
69 } 71 }
70 72
71 func (deviceDailyRunningRecord *DeviceDailyRunningRecord) String() string { 73 func (deviceDailyRunningRecord *DeviceDailyRunningRecord) String() string {
72 - return fmt.Sprintf("记录ID:%v 工段:%v 设备:%v", 74 + return fmt.Sprintf("记录ID:%v 工段:%v 设备:%v 数量:%v(%v)",
73 deviceDailyRunningRecord.DeviceDailyRunningRecordId, 75 deviceDailyRunningRecord.DeviceDailyRunningRecordId,
74 deviceDailyRunningRecord.WorkStation.SectionName, 76 deviceDailyRunningRecord.WorkStation.SectionName,
75 deviceDailyRunningRecord.DeviceCode, 77 deviceDailyRunningRecord.DeviceCode,
  78 + deviceDailyRunningRecord.DeviceRunningRecordInfo.Count,
  79 + deviceDailyRunningRecord.DeviceRunningRecordInfo.ProductDate,
76 ) 80 )
77 } 81 }
78 82
@@ -98,7 +98,7 @@ func (ptr *PGWorkshopDataConsumeService) Consume(companyId, orgId int, record *d @@ -98,7 +98,7 @@ func (ptr *PGWorkshopDataConsumeService) Consume(companyId, orgId int, record *d
98 if record.DeviceType == domain.DeviceTypeChuanChuanJi && plan != nil && deviceRunningData.Count > 0 { 98 if record.DeviceType == domain.DeviceTypeChuanChuanJi && plan != nil && deviceRunningData.Count > 0 {
99 log.Logger.Debug(fmt.Sprintf("设备统计 设备:%v(%v) 当前数量:%v 增加数量:%v", 99 log.Logger.Debug(fmt.Sprintf("设备统计 设备:%v(%v) 当前数量:%v 增加数量:%v",
100 deviceDailyRecord.DeviceCode, 100 deviceDailyRecord.DeviceCode,
101 - deviceDailyRecord.ProductDate.Local().Format("2006-01-02"), 101 + deviceDailyRecord.DeviceRunningRecordInfo.ProductDate,
102 deviceRunningRecord.DeviceRunningRecordInfo.TodayTotal, 102 deviceRunningRecord.DeviceRunningRecordInfo.TodayTotal,
103 deviceRunningRecord.DeviceRunningRecordInfo.Count)) 103 deviceRunningRecord.DeviceRunningRecordInfo.Count))
104 productRecord, _ := ptr.newProductRecord(companyId, orgId, workStation, device, deviceRunningData, plan) 104 productRecord, _ := ptr.newProductRecord(companyId, orgId, workStation, device, deviceRunningData, plan)
@@ -110,7 +110,7 @@ func (ptr *PGWorkshopDataConsumeService) Consume(companyId, orgId int, record *d @@ -110,7 +110,7 @@ func (ptr *PGWorkshopDataConsumeService) Consume(companyId, orgId int, record *d
110 SendProductRecordStaticsJob(productRecord) 110 SendProductRecordStaticsJob(productRecord)
111 } 111 }
112 } 112 }
113 - if err = redis.SaveDeviceDailyRunningRecord(deviceRunningData.CollectionTime, deviceDailyRecord); err != nil { 113 + if err = redis.SaveDeviceDailyRunningRecordByKey(deviceDailyRecord.RedisKey, deviceDailyRecord); err != nil {
114 return nil, err 114 return nil, err
115 } 115 }
116 return nil, nil 116 return nil, nil
@@ -282,21 +282,21 @@ func (ptr *PGWorkshopDataConsumeService) saveDeviceDailyRunningRecord(companyId, @@ -282,21 +282,21 @@ func (ptr *PGWorkshopDataConsumeService) saveDeviceDailyRunningRecord(companyId,
282 if record, err = deviceDailyRunningRecordRepository.FindOne(map[string]interface{}{ 282 if record, err = deviceDailyRunningRecordRepository.FindOne(map[string]interface{}{
283 "workStationId": workStation.WorkStationId, 283 "workStationId": workStation.WorkStationId,
284 "deviceCode": data.DeviceCode, 284 "deviceCode": data.DeviceCode,
285 - "productDate": utils.GetZeroTime(data.CollectionTime), 285 + "productDate": utils.GetZeroTime(data.CollectionTime.Local()),
286 }); err != nil { 286 }); err != nil {
287 if err != domain.ErrorNotFound { 287 if err != domain.ErrorNotFound {
288 return nil, err 288 return nil, err
289 } 289 }
290 } 290 }
291 if record != nil { 291 if record != nil {
292 - 292 + record.RedisKey = redis.DeviceDailyRunningRecordKeyByTimeStr(record.DeviceRunningRecordInfo.ProductDate, record.DeviceCode)
293 return record, nil 293 return record, nil
294 } 294 }
295 recordInfo := domain.NewDeviceRunningRecordInfo() 295 recordInfo := domain.NewDeviceRunningRecordInfo()
296 recordInfo.ProductPlanId = planId 296 recordInfo.ProductPlanId = planId
297 recordInfo.DeviceName = device.DeviceName 297 recordInfo.DeviceName = device.DeviceName
298 recordInfo.OrgName = device.Ext.OrgName 298 recordInfo.OrgName = device.Ext.OrgName
299 - recordInfo.ProductDate = data.CollectionTime.Format("2006-01-02") 299 + recordInfo.ProductDate = data.CollectionTime.Local().Format("2006-01-02")
300 record = &domain.DeviceDailyRunningRecord{ 300 record = &domain.DeviceDailyRunningRecord{
301 CompanyId: companyId, 301 CompanyId: companyId,
302 OrgId: orgId, 302 OrgId: orgId,
@@ -308,6 +308,7 @@ func (ptr *PGWorkshopDataConsumeService) saveDeviceDailyRunningRecord(companyId, @@ -308,6 +308,7 @@ func (ptr *PGWorkshopDataConsumeService) saveDeviceDailyRunningRecord(companyId,
308 CreatedAt: data.CollectionTime, 308 CreatedAt: data.CollectionTime,
309 UpdatedAt: time.Now(), 309 UpdatedAt: time.Now(),
310 } 310 }
  311 + record.RedisKey = redis.DeviceDailyRunningRecordKeyByTimeStr(record.DeviceRunningRecordInfo.ProductDate, record.DeviceCode)
311 if record, err = deviceDailyRunningRecordRepository.Save(record); err != nil { 312 if record, err = deviceDailyRunningRecordRepository.Save(record); err != nil {
312 return nil, err 313 return nil, err
313 } 314 }
@@ -14,8 +14,9 @@ import ( @@ -14,8 +14,9 @@ import (
14 func GetDeviceDailyRunningRecord(t time.Time, deviceCode string) (*domain.DeviceDailyRunningRecord, error) { 14 func GetDeviceDailyRunningRecord(t time.Time, deviceCode string) (*domain.DeviceDailyRunningRecord, error) {
15 client := GetRedis() 15 client := GetRedis()
16 key := DeviceDailyRunningRecordKey(t, deviceCode) 16 key := DeviceDailyRunningRecordKey(t, deviceCode)
17 - log.Logger.Debug(fmt.Sprintf("Redis Device:%v GET Key:%v", deviceCode, key))  
18 - return getDeviceDailyRunningRecord(client, key) 17 + record, err := getDeviceDailyRunningRecord(client, key)
  18 + log.Logger.Debug(fmt.Sprintf("Redis Device:%v GET Key:%v Value:%v", deviceCode, key, record))
  19 + return record, err
19 } 20 }
20 21
21 func getDeviceDailyRunningRecord(client *redis.Client, key string) (*domain.DeviceDailyRunningRecord, error) { 22 func getDeviceDailyRunningRecord(client *redis.Client, key string) (*domain.DeviceDailyRunningRecord, error) {
@@ -25,6 +26,7 @@ func getDeviceDailyRunningRecord(client *redis.Client, key string) (*domain.Devi @@ -25,6 +26,7 @@ func getDeviceDailyRunningRecord(client *redis.Client, key string) (*domain.Devi
25 return nil, domain.ErrorNotFound 26 return nil, domain.ErrorNotFound
26 } 27 }
27 var record = &domain.DeviceDailyRunningRecord{} 28 var record = &domain.DeviceDailyRunningRecord{}
  29 + record.RedisKey = key
28 if err = json.Unmarshal(data, record); err != nil { 30 if err = json.Unmarshal(data, record); err != nil {
29 return nil, err 31 return nil, err
30 } 32 }
@@ -35,13 +37,25 @@ func getDeviceDailyRunningRecord(client *redis.Client, key string) (*domain.Devi @@ -35,13 +37,25 @@ func getDeviceDailyRunningRecord(client *redis.Client, key string) (*domain.Devi
35 func SaveDeviceDailyRunningRecord(t time.Time, record *domain.DeviceDailyRunningRecord) error { 37 func SaveDeviceDailyRunningRecord(t time.Time, record *domain.DeviceDailyRunningRecord) error {
36 client := GetRedis() 38 client := GetRedis()
37 key := DeviceDailyRunningRecordKey(t, record.DeviceCode) 39 key := DeviceDailyRunningRecordKey(t, record.DeviceCode)
38 - log.Logger.Debug(fmt.Sprintf("Redis Device:%v SET Key:%v Count:%v", record.DeviceCode, key, record.DeviceRunningRecordInfo.Count))  
39 recordData, err := json.Marshal(record) 40 recordData, err := json.Marshal(record)
40 result := client.Set(key, recordData, time.Hour*24*5) 41 result := client.Set(key, recordData, time.Hour*24*5)
41 _, err = result.Result() 42 _, err = result.Result()
42 return err 43 return err
43 } 44 }
44 45
  46 +// 保存每日设备运行数据 - 按键值
  47 +func SaveDeviceDailyRunningRecordByKey(key string, record *domain.DeviceDailyRunningRecord) error {
  48 + client := GetRedis()
  49 + recordData, err := json.Marshal(record)
  50 + if err != nil {
  51 + return err
  52 + }
  53 + log.Logger.Debug(fmt.Sprintf("Redis Device:%v SET Key:%v Value:%v", record.DeviceCode, key, record))
  54 + result := client.Set(key, recordData, time.Hour*24*5)
  55 + _, err = result.Result()
  56 + return err
  57 +}
  58 +
45 // 保存每日设备运行数据 59 // 保存每日设备运行数据
46 func RemoveDeviceDailyRunningRecord(t time.Time, deviceCode string) error { 60 func RemoveDeviceDailyRunningRecord(t time.Time, deviceCode string) error {
47 client := GetRedis() 61 client := GetRedis()
@@ -51,11 +65,25 @@ func RemoveDeviceDailyRunningRecord(t time.Time, deviceCode string) error { @@ -51,11 +65,25 @@ func RemoveDeviceDailyRunningRecord(t time.Time, deviceCode string) error {
51 return err 65 return err
52 } 66 }
53 67
  68 +// 保存每日设备运行数据
  69 +func RemoveDeviceDailyRunningRecordByKey(key string) error {
  70 + client := GetRedis()
  71 + //key := DeviceDailyRunningRecordKey(t, deviceCode)
  72 + result := client.Del(key)
  73 + _, err := result.Result()
  74 + return err
  75 +}
  76 +
54 func DeviceDailyRunningRecordKey(t time.Time, deviceCode string) string { 77 func DeviceDailyRunningRecordKey(t time.Time, deviceCode string) string {
55 str := fmt.Sprintf("%v:device-daily-record:%v-%v:%v:%v", constant.CACHE_PREFIX, constant.MANUFACTURE_DEFAULT_COMPANYID, constant.MANUFACTURE_DEFAULT_ORGID, t.Local().Format("2006-01-02"), deviceCode) 78 str := fmt.Sprintf("%v:device-daily-record:%v-%v:%v:%v", constant.CACHE_PREFIX, constant.MANUFACTURE_DEFAULT_COMPANYID, constant.MANUFACTURE_DEFAULT_ORGID, t.Local().Format("2006-01-02"), deviceCode)
56 return str 79 return str
57 } 80 }
58 81
  82 +func DeviceDailyRunningRecordKeyByTimeStr(timeStr string, deviceCode string) string {
  83 + str := fmt.Sprintf("%v:device-daily-record:%v-%v:%v:%v", constant.CACHE_PREFIX, constant.MANUFACTURE_DEFAULT_COMPANYID, constant.MANUFACTURE_DEFAULT_ORGID, timeStr, deviceCode)
  84 + return str
  85 +}
  86 +
59 // 获取设备每日所有数据记录 87 // 获取设备每日所有数据记录
60 func GetDeviceDailyAllRecord(t time.Time) ([]*domain.DeviceDailyRunningRecord, error) { 88 func GetDeviceDailyAllRecord(t time.Time) ([]*domain.DeviceDailyRunningRecord, error) {
61 client := GetRedis() 89 client := GetRedis()
@@ -70,6 +98,7 @@ func GetDeviceDailyAllRecord(t time.Time) ([]*domain.DeviceDailyRunningRecord, e @@ -70,6 +98,7 @@ func GetDeviceDailyAllRecord(t time.Time) ([]*domain.DeviceDailyRunningRecord, e
70 if err != nil { 98 if err != nil {
71 return nil, err 99 return nil, err
72 } 100 }
  101 + record.RedisKey = v
73 records = append(records, record) 102 records = append(records, record)
74 } 103 }
75 return records, nil 104 return records, nil
@@ -23,12 +23,13 @@ func TestTimeParseInLocal(t *testing.T) { @@ -23,12 +23,13 @@ func TestTimeParseInLocal(t *testing.T) {
23 u1.AgeZeroFormat = u1.AgeZero.Format("2006-01-02") 23 u1.AgeZeroFormat = u1.AgeZero.Format("2006-01-02")
24 24
25 fmt.Println(json.MarshalToString(u1), u1.Age.Local()) 25 fmt.Println(json.MarshalToString(u1), u1.Age.Local())
  26 + timeMarsh(&u1)
  27 +}
26 28
27 - u2 := User{  
28 - Age: tl,  
29 - AgeZero: GetZeroTimeWithLocal(tl, time.Local),  
30 - }  
31 - u2.AgeZeroFormat = u2.AgeZero.Format("2006-01-02") 29 +func timeMarsh(u *User) {
  30 + var u2 = &User{}
  31 + u1Data, _ := json.Marshal(u)
  32 + json.Unmarshal(u1Data, u2)
32 33
33 - fmt.Println(json.MarshalToString(u2), u2.Age.Local()) 34 + fmt.Println("时间:", u2.Age, u2.Age.Local(), u2.AgeZero)
34 } 35 }
@@ -119,6 +119,31 @@ func (controller *StatisticsController) TaskHandler() func(ctx *context.Context) @@ -119,6 +119,31 @@ func (controller *StatisticsController) TaskHandler() func(ctx *context.Context)
119 } 119 }
120 Response(ctx, response, nil) 120 Response(ctx, response, nil)
121 break 121 break
  122 + case "10":
  123 + t := ctx.Input.Query("t")
  124 + c, _ := strconv.Atoi(ctx.Input.Query("c"))
  125 + if len(t) != 0 {
  126 + if v, err := time.ParseInLocation("2006-01-02 - 15:04:05", t, time.UTC); err == nil {
  127 + domainService.SendWorkshopDeviceData(&domain.DeviceCollection{
  128 + DeviceCollectionId: time.Now().Unix(),
  129 + WorkShopName: "NG",
  130 + CollectionTime: v,
  131 + DeviceSn: "CCJ1",
  132 + DeviceType: "CCJ",
  133 + StartupStatus: 1,
  134 + ComStatus: 1,
  135 + ProductCount: c,
  136 + Values: map[string]interface{}{
  137 + "Count": c,
  138 + "Year": 2022,
  139 + "Month": 3,
  140 + "Day": 8,
  141 + "ProductType": 2,
  142 + },
  143 + LatestUpdateTime: time.Now(),
  144 + })
  145 + }
  146 + }
122 } 147 }
123 Response(ctx, nil, nil) 148 Response(ctx, nil, nil)
124 } 149 }
@@ -22,13 +22,14 @@ func Start(log logimp.Logger) { @@ -22,13 +22,14 @@ func Start(log logimp.Logger) {
22 22
23 func OnReceiveData(client pahomqtt.Client, message pahomqtt.Message) { 23 func OnReceiveData(client pahomqtt.Client, message pahomqtt.Message) {
24 payload := make(map[string]interface{}) 24 payload := make(map[string]interface{})
  25 + var collectionTime time.Time
25 err := json.Unmarshal(message.Payload(), &payload) 26 err := json.Unmarshal(message.Payload(), &payload)
26 if err != nil { 27 if err != nil {
27 log.Logger.Error("车间数据json解析失败:" + err.Error()) 28 log.Logger.Error("车间数据json解析失败:" + err.Error())
28 return 29 return
29 } 30 }
30 if workShop, ok := payload["WorkShop"]; ok { 31 if workShop, ok := payload["WorkShop"]; ok {
31 - var collectionTime time.Time 32 +
32 if t, ok := payload["UpTime"]; ok { 33 if t, ok := payload["UpTime"]; ok {
33 collectionTime, _ = time.ParseInLocation("2006-01-02 - 15:04:05", t.(string), time.Local) 34 collectionTime, _ = time.ParseInLocation("2006-01-02 - 15:04:05", t.(string), time.Local)
34 } 35 }
@@ -153,7 +154,7 @@ func OnReceiveData(client pahomqtt.Client, message pahomqtt.Message) { @@ -153,7 +154,7 @@ func OnReceiveData(client pahomqtt.Client, message pahomqtt.Message) {
153 } 154 }
154 //TODO:日志先注释 155 //TODO:日志先注释
155 if err == nil { 156 if err == nil {
156 - log.Logger.Info("MQTT", map[string]interface{}{ 157 + log.Logger.Info(fmt.Sprintf("MQTT:%v", collectionTime), map[string]interface{}{
157 "Topic": message.Topic(), 158 "Topic": message.Topic(),
158 "MessageId": message.MessageID(), 159 "MessageId": message.MessageID(),
159 "Message": payload, 160 "Message": payload,
@@ -19,7 +19,7 @@ func WorkshopDataConsumer(c context.Context, t *asynq.Task) error { @@ -19,7 +19,7 @@ func WorkshopDataConsumer(c context.Context, t *asynq.Task) error {
19 return err 19 return err
20 } 20 }
21 log.Logger.Debug(fmt.Sprintf("【车间数据消费】 消费 设备:%v 消息号:%v 时间:%v ", cmd.DeviceCollection.DeviceSn, cmd.DeviceCollectionId, cmd.CollectionTime), 21 log.Logger.Debug(fmt.Sprintf("【车间数据消费】 消费 设备:%v 消息号:%v 时间:%v ", cmd.DeviceCollection.DeviceSn, cmd.DeviceCollectionId, cmd.CollectionTime),
22 - map[string]interface{}{"p-message": cmd.DeviceCollection}) 22 + map[string]interface{}{"p-message": string(t.Payload())})
23 cmd.CompanyId = constant.MANUFACTURE_DEFAULT_COMPANYID 23 cmd.CompanyId = constant.MANUFACTURE_DEFAULT_COMPANYID
24 cmd.OrgId = constant.MANUFACTURE_DEFAULT_ORGID 24 cmd.OrgId = constant.MANUFACTURE_DEFAULT_ORGID
25 _, err := svr.WorkshopConsume(cmd) 25 _, err := svr.WorkshopConsume(cmd)