feat: 为MES和工作站服务添加启动后自动打开浏览器功能
优化WMS客户端URL处理逻辑,移除尾斜杠避免请求404错误 更新工作站配置默认工位号为1 新增数据库字段支持工位页签配置 删除WMS端未完成的权限树形化和范围验证测试文件 删除物料档案对齐方案文档 新增自动打开浏览器的跨平台实现,服务启动后等待1秒后打开管理后台,提升使用便捷性
This commit is contained in:
@@ -10,8 +10,11 @@ import (
|
||||
"io/fs"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path"
|
||||
"runtime"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"bj_power_mes/common/logx"
|
||||
"bj_power_mes/internal/config"
|
||||
@@ -150,6 +153,22 @@ func newStaticHandler(fsys embed.FS) http.Handler {
|
||||
})
|
||||
}
|
||||
|
||||
// openBrowser 用系统默认浏览器打开 url(Windows/macOS/Linux)
|
||||
func openBrowser(url string) {
|
||||
var cmd *exec.Cmd
|
||||
switch runtime.GOOS {
|
||||
case "windows":
|
||||
cmd = exec.Command("rundll32", "url.dll,FileProtocolHandler", url)
|
||||
case "darwin":
|
||||
cmd = exec.Command("open", url)
|
||||
default:
|
||||
cmd = exec.Command("xdg-open", url)
|
||||
}
|
||||
if err := cmd.Start(); err != nil {
|
||||
gologx.Errorf("自动打开浏览器失败(%s): %v", url, err)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
@@ -221,5 +240,11 @@ func main() {
|
||||
fmt.Printf("Starting bj_power_mes server at %s:%d...\n", c.Host, c.Port)
|
||||
gologx.Infof("Starting bj_power_mes server at %s:%d...", c.Host, c.Port)
|
||||
|
||||
// 启动后自动打开管理后台(等 1 秒让端口就绪;Host=0.0.0.0 时用 127.0.0.1 访问)
|
||||
go func() {
|
||||
time.Sleep(time.Second)
|
||||
openBrowser(fmt.Sprintf("http://127.0.0.1:%d", c.Port))
|
||||
}()
|
||||
|
||||
server.Start()
|
||||
}
|
||||
|
||||
@@ -110,8 +110,8 @@ var schemaPatchSQL = []string{
|
||||
`ALTER TABLE inspection_record ADD COLUMN IF NOT EXISTS attachment_ids varchar(512) NOT NULL DEFAULT ''`,
|
||||
`ALTER TABLE inspection_record ADD COLUMN IF NOT EXISTS disposal_type varchar(20) NOT NULL DEFAULT ''`,
|
||||
`ALTER TABLE inspection_record ADD COLUMN IF NOT EXISTS disposal_remark varchar(500) NOT NULL DEFAULT ''`,
|
||||
// work_order_bom 表名注解为 work_order_bom
|
||||
`ALTER TABLE work_order_bom ADD COLUMN IF NOT EXISTS related_standard varchar(255) NOT NULL DEFAULT ''`,
|
||||
// work_order_bom 表名注解为 work_order_bom(表已于 2026-09-23 退役删除,此补丁仅对历史库存留档库有意义)
|
||||
`ALTER TABLE IF EXISTS work_order_bom ADD COLUMN IF NOT EXISTS related_standard varchar(255) NOT NULL DEFAULT ''`,
|
||||
`ALTER TABLE process_step ADD COLUMN IF NOT EXISTS attachment jsonb NOT NULL DEFAULT '[]'::jsonb`,
|
||||
`ALTER TABLE work_order ADD COLUMN IF NOT EXISTS created_by varchar(64) NOT NULL DEFAULT ''`,
|
||||
`ALTER TABLE work_order ADD COLUMN IF NOT EXISTS due_date timestamp`,
|
||||
@@ -194,7 +194,6 @@ var schemaPatchSQL = []string{
|
||||
`ALTER TABLE workpiece_process DROP COLUMN IF EXISTS process_code`,
|
||||
`ALTER TABLE workpiece_bind DROP COLUMN IF EXISTS process_code`,
|
||||
`ALTER TABLE material_request DROP COLUMN IF EXISTS process_code`,
|
||||
`ALTER TABLE work_order_bom DROP COLUMN IF EXISTS process_code`,
|
||||
`ALTER TABLE workpiece DROP COLUMN IF EXISTS current_process`,
|
||||
// 既有库补列(新装库由 ent AutoMigrate 直接建出,此处幂等兜底)
|
||||
`ALTER TABLE work_order ADD COLUMN IF NOT EXISTS flow_combination jsonb`,
|
||||
@@ -206,6 +205,9 @@ var schemaPatchSQL = []string{
|
||||
// ---- 半成品流转新模型(2026-09-22 定稿):进度唯一权威源=workpiece.currentStationNo ----
|
||||
// semi_flow 补进度快照列 completed_text("已完成至工位N");旧 done_process_codes 保留历史数据、不再写入
|
||||
`ALTER TABLE semi_flow ADD COLUMN IF NOT EXISTS completed_text varchar(64) NOT NULL DEFAULT ''`,
|
||||
|
||||
// ---- 工位终端可见页签配置(2026-09-23):按工位勾选终端显示哪些页签(jsonb 数组),空=全部显示 ----
|
||||
`ALTER TABLE station ADD COLUMN IF NOT EXISTS visible_tabs jsonb`,
|
||||
}
|
||||
|
||||
// EnsureSchema ent 建表 + 幂等列补丁(只增,不删数据)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package production
|
||||
package production
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
@@ -36,19 +36,18 @@ func New(baseURL, token string) *Client {
|
||||
return c
|
||||
}
|
||||
|
||||
// SetBaseURL 热切换 WMS 地址;空串回退默认地址
|
||||
// SetBaseURL 热切换 WMS 地址;空串回退默认地址。
|
||||
// 注意:所有请求路径都以 "/api/..." 开头,这里必须去掉尾斜杠,否则拼出 "//api" 404。
|
||||
func (c *Client) SetBaseURL(u string) {
|
||||
u = strings.TrimSpace(u)
|
||||
if u == "" {
|
||||
u = defaultBaseURL
|
||||
}
|
||||
if !strings.HasSuffix(u, "/") {
|
||||
u += "/"
|
||||
}
|
||||
u = strings.TrimRight(u, "/")
|
||||
c.baseURL.Store(u)
|
||||
}
|
||||
|
||||
// BaseURL 当前生效的 WMS 地址(带尾斜杠)
|
||||
// BaseURL 当前生效的 WMS 地址(不带尾斜杠,请求路径以 /api/... 开头直接拼接)
|
||||
func (c *Client) BaseURL() string {
|
||||
return c.baseURL.Load().(string)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user