feat: 完成产线MES系统全流程功能迭代与优化
本提交完成了多个核心模块的功能完善与业务对齐: 1. 工位终端:固定工位配置、移除自选工位逻辑、适配配置化工位号 2. MES核心:重构工位组合逻辑、新增工单/流程状态管理、补全报工/追溯逻辑 3. WMS客户端:新增修改密码功能、优化帮助弹窗逻辑 4. 文档与权限:补充完整操作手册、统一菜单名称与权限描述 5. 修复多业务校验:排产数量校验、工单状态校验、工位绑定规则
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// FullProcessSeq 全部 12 个工位的完整组合(按顺序执行)
|
||||
const FullProcessSeq = "1,2,3,4,5,6,7,8,9,10,11,12"
|
||||
|
||||
// ParseProcessSeq 解析工位组合字符串为升序去重的工位码列表。
|
||||
// 唯一格式:逗号分隔 "1,3,5" / "10,11,12"。传送带不回走,故组合天然按工位号升序执行。
|
||||
func ParseProcessSeq(s string) []int {
|
||||
s = strings.TrimSpace(s)
|
||||
if s == "" {
|
||||
return nil
|
||||
}
|
||||
seen := map[int]bool{}
|
||||
out := make([]int, 0, 12)
|
||||
for _, p := range strings.Split(s, ",") {
|
||||
p = strings.TrimSpace(p)
|
||||
if p == "" {
|
||||
continue
|
||||
}
|
||||
n, err := strconv.Atoi(p)
|
||||
if err != nil || n < 1 || n > 12 || seen[n] {
|
||||
continue
|
||||
}
|
||||
seen[n] = true
|
||||
out = append(out, n)
|
||||
}
|
||||
sort.Ints(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// NormalizeProcessSeq 规范化:解析后重排为逗号分隔升序,非法/空返回空串。
|
||||
func NormalizeProcessSeq(s string) string {
|
||||
codes := ParseProcessSeq(s)
|
||||
if len(codes) == 0 {
|
||||
return ""
|
||||
}
|
||||
parts := make([]string, len(codes))
|
||||
for i, c := range codes {
|
||||
parts[i] = strconv.Itoa(c)
|
||||
}
|
||||
return strings.Join(parts, ",")
|
||||
}
|
||||
|
||||
// ValidateProcessSeq 校验工位组合:非空、1~12 升序执行。
|
||||
func ValidateProcessSeq(s string) error {
|
||||
if len(ParseProcessSeq(s)) == 0 {
|
||||
return errors.New("工位组合不能为空,请至少选择一个工位")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user