本次提交覆盖多个业务模块的功能完善与体验优化:
1. **鉴权与配置调整**:
- 统一JWT滑动续签逻辑,简化Token存储,移除RefreshToken相关冗余代码
- 调整多项目配置文件中JWT过期时间为3600秒,统一会话闲置窗口
- 工位配置放开1~12限制,改为仅校验大于0
2. **术语统一替换**:全链路将"精密件"替换为"电气件",修正物料管理描述
3. **功能新增**:
- 新增工位类型、工艺路线与产线点位台账模块
- 添加工艺PDF预览面板、工位终端代理转发接口
- 新增操作日志按操作人列表筛选、工位登出日志记录
- 新增PLC移料指令与产线点位状态管理
4. **业务流程优化**:
- 调整BOM物料删除校验逻辑,优化工单备料计算
- 补充物料图号、检测单号等追溯字段
- 完善工艺流程图与工位绑定关系说明
- 优化前端页面文案与交互细节
5. **代码规范与维护**:
- 新增通用工具函数与前端静态资源
- 整理路由权限与中间件逻辑
- 修复部分接口与配置的不兼容问题
90 lines
2.5 KiB
Go
90 lines
2.5 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"embed"
|
|
"flag"
|
|
"fmt"
|
|
"io/fs"
|
|
|
|
"bj_power_workstation/internal/config"
|
|
"bj_power_workstation/internal/handler"
|
|
"bj_power_workstation/internal/mes"
|
|
"bj_power_workstation/internal/pdfcache"
|
|
"bj_power_workstation/internal/store"
|
|
"bj_power_workstation/internal/svc"
|
|
"bj_power_workstation/internal/syncer"
|
|
"bj_power_workstation/internal/tightening"
|
|
|
|
"github.com/zeromicro/go-zero/core/conf"
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
"github.com/zeromicro/go-zero/rest"
|
|
)
|
|
|
|
//go:embed all:web/static
|
|
var webFS embed.FS
|
|
|
|
var configFile = flag.String("f", "etc/bj_power_workstation.yaml", "the config file")
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
|
|
var c config.Config
|
|
conf.MustLoad(*configFile, &c)
|
|
|
|
// 工位号:由服务端配置文件加载(终端不允许修改),启动时强校验必须 > 0(工位数以数据库/配置为准,不写死 12)。
|
|
if c.Station.StationNo < 1 {
|
|
panic(fmt.Sprintf("Station.StationNo 必须 > 0,当前配置为 %d(请修改 yaml 后重启)", c.Station.StationNo))
|
|
}
|
|
logx.Infof("固定工位号: %d, 本工位螺丝颗数: %d", c.Station.StationNo, c.Station.ScrewCount)
|
|
|
|
staticFS, err := fs.Sub(webFS, "web/static")
|
|
if err != nil {
|
|
panic(fmt.Sprintf("加载内嵌前端资源失败: %v", err))
|
|
}
|
|
|
|
// 本地 SQLite:拧紧数据缓存 + 离线上报队列 + 操作日志 + 内置账号
|
|
st, err := store.Open(c.Sqlite.Path)
|
|
if err != nil {
|
|
panic(fmt.Sprintf("打开本地 SQLite(%s) 失败: %v", c.Sqlite.Path, err))
|
|
}
|
|
defer st.Close()
|
|
|
|
if err := store.SeedIfEmpty(st); err != nil {
|
|
panic(fmt.Sprintf("初始化内置用户失败: %v", err))
|
|
}
|
|
|
|
rootCtx, cancel := context.WithCancel(context.Background())
|
|
defer cancel()
|
|
|
|
mc := mes.New(c.Mes.BaseURL, c.Internal.Token)
|
|
|
|
// 后台同步协程:联网时向 MES 补报未同步数据
|
|
sy := syncer.New(st, mc)
|
|
go sy.Run(rootCtx)
|
|
|
|
// 内置模拟拧紧枪数据源(Sim.Enable=true 时启动;正式丹尼科尔协议接入后由 NetSource 替代)
|
|
if c.Sim.Enable {
|
|
go tightening.NewMockSource(st, mc, c.Station.StationNo).Start(rootCtx)
|
|
}
|
|
|
|
// 工艺文件 PDF 本地预缓存
|
|
pdc := pdfcache.New(c.PdfCache.Dir)
|
|
|
|
ctx := &svc.ServiceContext{
|
|
Config: c,
|
|
Store: st,
|
|
Mes: mc,
|
|
Syncer: sy,
|
|
PdfCache: pdc,
|
|
WebFS: staticFS,
|
|
}
|
|
|
|
server := rest.MustNewServer(c.RestConf)
|
|
defer server.Stop()
|
|
handler.RegisterHandlers(server, ctx)
|
|
|
|
fmt.Printf("Starting bj_power_workstation server at %s:%d...\n", c.Host, c.Port)
|
|
logx.Infof("Starting bj_power_workstation server at %s:%d...", c.Host, c.Port)
|
|
server.Start()
|
|
} |