diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100644 index 0000000..ae5bd4f --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,61 @@ +version: '3' +networks: + falcon-net: +volumes: + db-vol: +services: + db-adminer: + image: adminer + container_name: db-adminer + restart: always + ports: + - 9403:8080 + networks: + - falcon-net + db-service: + image: 'postgres:17.0' + shm_size: 128mb + container_name: db + restart: always + environment: + POSTGRES_PASSWORD: Me8140@01 + volumes: + - db-vol:/var/lib/postgresql/data + networks: + - falcon-net + nats-service: + image: nats:2.10.21-alpine + container_name: nats + restart: unless-stopped + networks: + - falcon-net + falcon-handset-service: + image: registry.espin.casa/cml04-falcon-system + container_name: handset + restart: unless-stopped + entrypoint: ["./cml04-falcon-system","handset"] + ports: + - 9402:9443 + networks: + - falcon-net + falcon-barcode-service: + image: registry.espin.casa/cml04-falcon-system + container_name: barcode + restart: unless-stopped + entrypoint: ["./cml04-falcon-system","barcode"] + networks: + - falcon-net + falcon-bundle-service: + image: registry.espin.casa/cml04-falcon-system + container_name: bundle + restart: unless-stopped + entrypoint: ["./cml04-falcon-system","bundle"] + networks: + - falcon-net + falcon-sap-service: + image: registry.espin.casa/cml04-falcon-system + container_name: sap + restart: unless-stopped + entrypoint: ["./cml04-falcon-system","sap"] + networks: + - falcon-net \ No newline at end of file diff --git a/internal/storage/storage.go b/internal/storage/storage.go index 7d6fbdc..fc9c968 100644 --- a/internal/storage/storage.go +++ b/internal/storage/storage.go @@ -14,6 +14,9 @@ type Storager interface { StoreBarcode(ctx context.Context, in *types.Barcode) error StoreProductionOrder(ctx context.Context, in *types.ProductionOrder) error StoreCustomerOrder(ctx context.Context, in *types.CustomerOrder) error + StoreBeamCutPattern(ctx context.Context, in *types.BeamCutPattern) error + StoreLayerCutPattern(ctx context.Context, in *types.LayerCutPattern) error + StoreBeamGroup(ctx context.Context, in *types.BeamGroup) error ConfirmBundle(ctx context.Context, barcode string) error } @@ -30,6 +33,21 @@ type DBConfig struct { Name string } +// StoreBeamGroup implements Storager. +func (s *storage) StoreBeamGroup(ctx context.Context, in *types.BeamGroup) error { + return s.db.Save(in).Error +} + +// StoreLayerCutPattern implements Storager. +func (s *storage) StoreLayerCutPattern(ctx context.Context, in *types.LayerCutPattern) error { + return s.db.Save(in).Error +} + +// StoreBeamCutPattern implements Storager. +func (s *storage) StoreBeamCutPattern(ctx context.Context, in *types.BeamCutPattern) error { + return s.db.Save(in).Error +} + // StoreCustomerOrder implements Storager. func (s *storage) StoreCustomerOrder(ctx context.Context, in *types.CustomerOrder) error { return s.db.Save(in).Error @@ -75,6 +93,7 @@ func Automigrate(db *gorm.DB) error { &types.CustomerOrder{}, &types.BeamCutPattern{}, &types.LayerCutPattern{}, + &types.BeamGroup{}, ) } diff --git a/sap/app/app.go b/sap/app/app.go index 0a8fc04..6307762 100644 --- a/sap/app/app.go +++ b/sap/app/app.go @@ -105,6 +105,7 @@ func Run(cmd *cobra.Command, args []string) { "event_id": event.EventID, "production_order": po.POrderNo, })) + // store data if err := storage.StoreProductionOrder(ctx, po); err != nil { log.Error("store production order data failed", err, logFields) continue @@ -122,13 +123,14 @@ func Run(cmd *cobra.Command, args []string) { "customer_order": co.COrderNo, "production_order": co.POrderNo, })) + // store data if err := storage.StoreCustomerOrder(ctx, co); err != nil { log.Error("store customer order data failed", err, logFields) continue } case "sap.in.telegramas.z_sms_10003": - co := &types.CustomerOrder{} - if err := json.Unmarshal(buffer.Bytes(), co); err != nil { + bcp := &types.BeamCutPattern{} + if err := json.Unmarshal(buffer.Bytes(), bcp); err != nil { log.Error("decode event message data failed", err, logFields) continue } @@ -136,10 +138,47 @@ func Run(cmd *cobra.Command, args []string) { log.Info("received new production data from SAP event", logFields.Add( logger.LogFields{ "event_id": event.EventID, - "customer_order": co.COrderNo, - "production_order": co.POrderNo, + "beam_cut_pattern": bcp.BeamCutN, + "production_order": bcp.SchedulNo, })) - if err := storage.StoreCustomerOrder(ctx, co); err != nil { + // store data + if err := storage.StoreBeamCutPattern(ctx, bcp); err != nil { + log.Error("store customer order data failed", err, logFields) + continue + } + case "sap.in.telegramas.z_sms_10004": + lcp := &types.LayerCutPattern{} + if err := json.Unmarshal(buffer.Bytes(), lcp); err != nil { + log.Error("decode event message data failed", err, logFields) + continue + } + // log info banner + log.Info("received new production data from SAP event", logFields.Add( + logger.LogFields{ + "event_id": event.EventID, + "layer_cut_pattern": lcp.LayCutNo, + "production_order": lcp.SchedulNo, + })) + // store data + if err := storage.StoreLayerCutPattern(ctx, lcp); err != nil { + log.Error("store customer order data failed", err, logFields) + continue + } + case "sap.in.telegramas.z_sms_10005": + bg := &types.BeamGroup{} + if err := json.Unmarshal(buffer.Bytes(), bg); err != nil { + log.Error("decode event message data failed", err, logFields) + continue + } + // log info banner + log.Info("received new production data from SAP event", logFields.Add( + logger.LogFields{ + "event_id": event.EventID, + "layer_cut_pattern": bg.BeamCutN, + "production_order": bg.SchedulNo, + })) + // store data + if err := storage.StoreBeamGroup(ctx, bg); err != nil { log.Error("store customer order data failed", err, logFields) continue }