Files
bj_power/bj_power_wms/internal/svc/service_context.go
T
SunYF b6799c9de4 feat: 完成产线与仓储系统多模块迭代升级
本次迭代覆盖MES与WMS核心业务:
1. 新增接驳台托盘传感器读取与AGV对接能力
2. 完善工单排产、备料流程与权限体系拆分
3. 优化看板接口与前端路由、样式
4. 新增操作日志、库存盘点与角色保护逻辑
5. 修复代理地址、BOM保存等已知问题
2026-09-04 14:18:53 +08:00

54 lines
1.1 KiB
Go

package svc
import (
"bj_power_wms/ent"
"bj_power_wms/internal/agv"
"bj_power_wms/internal/config"
"bj_power_wms/internal/db"
"bj_power_wms/internal/eventlog"
"bj_power_wms/internal/mesclient"
)
type ServiceContext struct {
Config config.Config
EntClient *ent.Client
EventLog *eventlog.Writer
Agv agv.Client
Mes *mesclient.Client
}
func NewServiceContext(c config.Config) *ServiceContext {
conf := db.DatabaseConf{
Host: c.Postgres.Host,
Port: c.Postgres.Port,
User: c.Postgres.User,
Password: c.Postgres.Password,
Dbname: c.Postgres.DBName,
}
// 目标数据库不存在则自动创建
if err := db.EnsureDB(conf); err != nil {
panic(err)
}
entClient := db.MustNewDB(conf)
// 启动时自动建表
if err := db.AutoMigrate(entClient); err != nil {
panic(err)
}
// 首次启动预置基础数据
if err := db.SeedIfEmpty(entClient); err != nil {
panic(err)
}
return &ServiceContext{
Config: c,
EntClient: entClient,
EventLog: eventlog.NewWriter(entClient),
Agv: agv.New(c.Agv),
Mes: mesclient.New(c.Mes.BaseURL, c.Mes.Token),
}
}