2026-08-27 10:09:54 +08:00
|
|
|
package errorx
|
|
|
|
|
|
|
|
|
|
type code = uint32
|
|
|
|
|
|
|
|
|
|
type CodeError struct {
|
|
|
|
|
code uint32
|
|
|
|
|
message string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (e *CodeError) Code() uint32 {
|
|
|
|
|
return e.code
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (e *CodeError) Error() string {
|
|
|
|
|
return e.message
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewCodeError(code code, msg string) *CodeError {
|
|
|
|
|
message[code] = msg
|
|
|
|
|
return &CodeError{
|
|
|
|
|
code: code,
|
|
|
|
|
message: msg,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
TefNotFound = NewCodeError(1000001, "设备不存在")
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// OK 成功
|
|
|
|
|
const OK code = 0
|
|
|
|
|
|
|
|
|
|
// 公共错误 100+
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
ServiceUnavailable = 100001 + iota // 服务不可用
|
|
|
|
|
RequestParamInvalidWithField // 请求参数错误
|
|
|
|
|
RequestParamInvalid // 请求参数错误
|
|
|
|
|
TokenInvalid // token错误
|
|
|
|
|
DbError // 数据库错误
|
|
|
|
|
RedisError // 缓存错误
|
|
|
|
|
RefreshTokenInvalid // RefreshToken错误
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// login 200+
|
|
|
|
|
const (
|
|
|
|
|
BadUsernameOrPassword = 200001 + iota // 用户名或密码错误
|
|
|
|
|
BadMobileOrPassword // 手机号或密码错误
|
|
|
|
|
NeedVerifyCode // 请进行人机校验
|
|
|
|
|
BadVerifyCode // 人机校验失败
|
|
|
|
|
AccountLocked // 账号已锁定,请15分钟后再试
|
|
|
|
|
MultipleRoles // 请选择角色
|
|
|
|
|
NoRole // 用户暂未分配角色
|
|
|
|
|
RoleNotMatch // 用户无此角色
|
|
|
|
|
NoPassword // 用户未设置密码,请使用其它方式登录
|
|
|
|
|
BadMobileOrSms // 手机号或短信验证码错误
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// permission 300+
|
|
|
|
|
const (
|
|
|
|
|
PermissionNotFound = 300001 + iota // 未找到接口权限
|
|
|
|
|
PermissionAlreadyExists // 权限已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// role 301+
|
|
|
|
|
const (
|
|
|
|
|
RoleNotFound = 301001 + iota // 未找到角色
|
|
|
|
|
RoleAlreadyExists // 角色已存在
|
|
|
|
|
RoleHasUsers // 角色已分配角色
|
|
|
|
|
RoleHasPermissions // 角色已分配权限
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// api 302+
|
|
|
|
|
const (
|
|
|
|
|
ApiNotFound = 302001 + iota // 未找到接口
|
|
|
|
|
ApiAlreadyExists // 接口已存在
|
|
|
|
|
ApiHasPermissions // 接口已分配权限
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// user 400+
|
|
|
|
|
const (
|
|
|
|
|
UserNotFound = 400001 + iota // 未找到用户
|
|
|
|
|
UserAlreadyExists // 用户已存在
|
|
|
|
|
UserNotAllow
|
|
|
|
|
UserPasswordNotMatch
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// dept 401+
|
|
|
|
|
const (
|
|
|
|
|
DeptNotFound = 401001 + iota // 未找到部门
|
|
|
|
|
DeptAlreadyExists // 部门已存在
|
|
|
|
|
DeptHasUsers // 部门下有用户
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// line 500+
|
|
|
|
|
const (
|
|
|
|
|
LineNotFound = 500001 + iota // 未找到产线
|
|
|
|
|
LineAlreadyExists // 产线已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// equipment 600+
|
|
|
|
|
const (
|
|
|
|
|
EquipmentNotFound = 600001 + iota // 未找到设备
|
|
|
|
|
EquipmentAlreadyExists // 设备已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// cnc machine 610+
|
|
|
|
|
const (
|
|
|
|
|
CncMachineNotFound = 610001 + iota // 未找到机床
|
|
|
|
|
CncMachineAlreadyExists // 机床已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// robot 620+
|
|
|
|
|
const (
|
|
|
|
|
RobotNotFound = 620001 + iota // 未找到机器人
|
|
|
|
|
RobotAlreadyExists // 机器人已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// plc 630+
|
|
|
|
|
const (
|
|
|
|
|
PLCNotFound = 630001 + iota // 未找到PLC
|
|
|
|
|
PLCAlreadyExists // PLC已存在
|
|
|
|
|
PLCNotConnect // PLC未连接
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// process 700+
|
|
|
|
|
const (
|
|
|
|
|
ProcessNotFound = 700001 + iota // 未找到工艺流程
|
|
|
|
|
ProcessAlreadyExists // 工艺流程已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// step 710+
|
|
|
|
|
const (
|
|
|
|
|
StepNotFound = 710001 + iota // 未找到工步
|
|
|
|
|
StepAlreadyExists // 工步已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// program 800+
|
|
|
|
|
const (
|
|
|
|
|
ProgramNotFound = 800001 + iota // 未找到数控程序
|
|
|
|
|
ProgramAlreadyExists // 数控程序已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// other 900+
|
|
|
|
|
const (
|
|
|
|
|
EquipmentCategoryNotFound = 900001 + iota
|
|
|
|
|
EquipmentCategoryAlreadyExists
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// work order 1000+
|
|
|
|
|
const (
|
|
|
|
|
WorkOrderNotFound = 1000001 + iota // 未找到工单
|
|
|
|
|
WorkOrderAlreadyExists // 工单已存在
|
|
|
|
|
WorkOrderConcurrentlyInProcess // 已有工单在执行
|
|
|
|
|
WorkOrderAlreadyPausing // 工单正在暂停中
|
|
|
|
|
WorkOrderAlreadyPaused // 工单已暂停
|
2026-08-27 10:56:41 +08:00
|
|
|
WorkOrderAlreadyCancelling // 工单正在取消中
|
|
|
|
|
OtherOrdersInProgress // 有其他工单正在运行
|
2026-08-27 10:09:54 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// work order 1100+
|
|
|
|
|
const (
|
|
|
|
|
TaskNotFound = 1100001 + iota // 未找到工单
|
|
|
|
|
TaskAlreadyExists // 工单已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// workpiece 1200+
|
|
|
|
|
const (
|
|
|
|
|
WorkpieceNotFound = 1200001 + iota // 未找到工件
|
|
|
|
|
WorkpieceAlreadyExists // 工件已存在 = 1200001 + iota // 未找到工件
|
|
|
|
|
OrderProcessorNotReady // 工单处理器未就绪
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// material 1210+
|
|
|
|
|
const (
|
|
|
|
|
MaterialNotFound = 1210001 + iota // 未找到物料
|
|
|
|
|
MaterialAlreadyExists // 物料已存在 = 1200001 + iota // 未找到工件
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// fixture type 1220+
|
|
|
|
|
const (
|
|
|
|
|
FixtureTypeNotFound = 1220001 + iota
|
|
|
|
|
FixtureTypeAlreadyExists
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// rack 1300+
|
|
|
|
|
const (
|
|
|
|
|
RackNotFound = 1300001 + iota // 未找到料架
|
|
|
|
|
RackAlreadyExists // 料架已存在
|
|
|
|
|
RackLocationUsed // 料架位置已被占用
|
|
|
|
|
RackLocationEmpty // 料架位置无料
|
|
|
|
|
RackLocationExceedCapacity // 料架位置无料
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
DockNotFound = 1400001 + iota
|
|
|
|
|
DockAlreadyExists
|
|
|
|
|
DockLocationExceedCapacity
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Tool
|
|
|
|
|
const (
|
|
|
|
|
ToolNotFound = 1500001 + iota // 未找到刀具
|
|
|
|
|
ToolAlreadyExists // 刀具已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// ToolRack
|
|
|
|
|
const (
|
|
|
|
|
ToolRackNotFound = 1500001 + iota // 未找到刀具库
|
|
|
|
|
ToolRackAlreadyExists // 刀具库已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// ToolType
|
|
|
|
|
const (
|
|
|
|
|
ToolTypeNotFound = 1510001 + iota // 未找到刀具类型
|
|
|
|
|
ToolTypeAlreadyExists // 刀具类型已存在
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
MachineNotFound = 1600001 + iota // 未找到料架
|
|
|
|
|
MachineUsed // 机床已被占用
|
|
|
|
|
MachineFixtureExist // 夹具已存在
|
|
|
|
|
MachineFixtureTypeNotMatch // 夹具类型不匹配
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
MillingTempStationLineError = 1700001 + iota // 未找到料架
|
|
|
|
|
MillingTempStationHasWorkpiece
|
|
|
|
|
MillingTempStationNotFound
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
2026-08-27 10:56:41 +08:00
|
|
|
TrayTypeNotFound = 1800001 + iota // 未找到托盘类型
|
|
|
|
|
TrayTypeAlreadyExists // 托盘类型已存在
|
2026-08-27 10:09:54 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
// CommonErrCode 未知错误
|
|
|
|
|
CommonErrCode code = 900000
|
|
|
|
|
// DirectErrCode 直接显示错误信息
|
|
|
|
|
DirectErrCode code = 900001
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
2026-08-27 10:56:41 +08:00
|
|
|
DockErrorNotFound = 1900001 + iota // 未找到托盘类型
|
|
|
|
|
DockFrontHasSmallTray // 托盘类型已存在
|
|
|
|
|
DockReadError // 托盘类型已存在
|
2026-08-27 10:09:54 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var message = make(map[code]string)
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
|
|
|
|
|
|
message[OK] = "OK"
|
|
|
|
|
message[CommonErrCode] = "服务器开小差啦, 稍后再来试一试"
|
|
|
|
|
|
|
|
|
|
message[ServiceUnavailable] = "服务不可用"
|
|
|
|
|
message[RequestParamInvalidWithField] = "参数错误"
|
|
|
|
|
message[RequestParamInvalid] = "参数错误"
|
|
|
|
|
message[TokenInvalid] = "token错误"
|
|
|
|
|
message[DbError] = "数据库繁忙, 请稍后再试"
|
|
|
|
|
message[RedisError] = "缓存错误, 请稍后再试"
|
|
|
|
|
message[RefreshTokenInvalid] = "RefreshToken错误"
|
|
|
|
|
|
|
|
|
|
message[BadUsernameOrPassword] = "用户名或密码错误"
|
|
|
|
|
message[BadMobileOrPassword] = "手机号或密码错误"
|
|
|
|
|
message[NeedVerifyCode] = "请输入验证码"
|
|
|
|
|
message[BadVerifyCode] = "验证码错误"
|
|
|
|
|
message[AccountLocked] = "账号已锁定,请15分钟后再试"
|
|
|
|
|
message[MultipleRoles] = "请选择角色"
|
|
|
|
|
message[NoRole] = "用户暂未分配角色"
|
|
|
|
|
message[RoleNotMatch] = "角色不匹配"
|
|
|
|
|
message[NoPassword] = "用户未设置密码,请使用其它方式登录"
|
|
|
|
|
message[BadMobileOrSms] = "手机号或短信验证码错误"
|
|
|
|
|
|
|
|
|
|
message[PermissionNotFound] = "抱歉, 您的权限不足"
|
|
|
|
|
message[PermissionAlreadyExists] = "权限已存在"
|
|
|
|
|
message[RoleNotFound] = "未找到角色"
|
|
|
|
|
message[RoleAlreadyExists] = "角色已存在"
|
|
|
|
|
message[RoleHasUsers] = "角色已分配角色"
|
|
|
|
|
message[RoleHasPermissions] = "角色已分配权限"
|
|
|
|
|
message[ApiNotFound] = "未找到接口"
|
|
|
|
|
message[ApiAlreadyExists] = "接口已存在"
|
|
|
|
|
message[ApiHasPermissions] = "接口已分配权限"
|
|
|
|
|
|
|
|
|
|
message[UserNotFound] = "未找到用户"
|
|
|
|
|
message[UserAlreadyExists] = "用户已存在"
|
|
|
|
|
message[UserNotAllow] = "用户没有权限"
|
|
|
|
|
message[UserPasswordNotMatch] = "用户原密码不匹配"
|
|
|
|
|
|
|
|
|
|
message[DeptNotFound] = "未找到部门"
|
|
|
|
|
message[DeptAlreadyExists] = "部门已存在"
|
|
|
|
|
message[DeptHasUsers] = "部门下有用户"
|
|
|
|
|
|
|
|
|
|
message[LineNotFound] = "未找到产线"
|
|
|
|
|
message[LineAlreadyExists] = "产线已存在"
|
|
|
|
|
|
|
|
|
|
message[EquipmentNotFound] = "未找到设备"
|
|
|
|
|
message[EquipmentAlreadyExists] = "设备已存在"
|
|
|
|
|
|
|
|
|
|
message[CncMachineNotFound] = "未找到机床"
|
|
|
|
|
message[CncMachineAlreadyExists] = "机床已存在"
|
|
|
|
|
|
|
|
|
|
message[RobotNotFound] = "未找到机器人"
|
|
|
|
|
message[RobotAlreadyExists] = "机器人已存在"
|
|
|
|
|
|
|
|
|
|
message[PLCNotFound] = "未找到PLC"
|
|
|
|
|
message[PLCAlreadyExists] = "PLC已存在"
|
|
|
|
|
message[PLCNotConnect] = "PLC未连接"
|
|
|
|
|
|
|
|
|
|
message[ProcessNotFound] = "未找到工艺"
|
|
|
|
|
message[ProcessAlreadyExists] = "工艺已存在"
|
|
|
|
|
|
|
|
|
|
message[StepNotFound] = "未找到工步"
|
|
|
|
|
message[StepAlreadyExists] = "工步已存在"
|
|
|
|
|
|
|
|
|
|
message[ProgramNotFound] = "未找到数控程序"
|
|
|
|
|
message[ProgramAlreadyExists] = "数控程序已存在"
|
|
|
|
|
|
|
|
|
|
message[WorkOrderNotFound] = "未找到工单"
|
|
|
|
|
message[WorkOrderAlreadyExists] = "工单已存在"
|
|
|
|
|
message[WorkOrderConcurrentlyInProcess] = "已有工单在执行"
|
|
|
|
|
|
|
|
|
|
message[RackNotFound] = "未找到料架"
|
|
|
|
|
message[RackAlreadyExists] = "料架已存在"
|
|
|
|
|
|
|
|
|
|
message[RackLocationUsed] = "料架位置已被占用"
|
|
|
|
|
message[RackLocationEmpty] = "料架位置无料"
|
|
|
|
|
message[RackLocationExceedCapacity] = "位置超出料架容量"
|
|
|
|
|
|
|
|
|
|
message[TaskNotFound] = "未找到工单"
|
|
|
|
|
message[TaskAlreadyExists] = "工单已存在"
|
|
|
|
|
|
|
|
|
|
message[WorkpieceNotFound] = "未找到工件"
|
|
|
|
|
message[WorkpieceAlreadyExists] = "当前位置已占用"
|
|
|
|
|
|
|
|
|
|
message[MaterialNotFound] = "未找到物料"
|
|
|
|
|
message[MaterialAlreadyExists] = "物料已存在"
|
|
|
|
|
|
|
|
|
|
message[FixtureTypeNotFound] = "未找到夹具类型"
|
|
|
|
|
message[FixtureTypeAlreadyExists] = "夹具类型已存在"
|
|
|
|
|
|
|
|
|
|
message[DockNotFound] = "未找到接驳台"
|
|
|
|
|
message[DockAlreadyExists] = "接驳台已存在"
|
|
|
|
|
message[DockLocationExceedCapacity] = "位置超出接驳台容量"
|
|
|
|
|
|
|
|
|
|
message[ToolNotFound] = "未找到刀具"
|
|
|
|
|
message[ToolAlreadyExists] = "刀具已存在"
|
|
|
|
|
|
|
|
|
|
message[ToolRackNotFound] = "未找到刀具库"
|
|
|
|
|
message[ToolRackAlreadyExists] = "刀具库已存在"
|
|
|
|
|
|
|
|
|
|
message[ToolTypeNotFound] = "未找到刀具类型"
|
|
|
|
|
message[ToolTypeAlreadyExists] = "刀具类型已存在"
|
|
|
|
|
|
|
|
|
|
message[MachineNotFound] = "机床未找到"
|
|
|
|
|
message[MachineUsed] = "机床已被占用"
|
|
|
|
|
message[MachineFixtureExist] = "夹具已存在"
|
|
|
|
|
message[MachineFixtureTypeNotMatch] = "夹具类型不匹配"
|
|
|
|
|
|
|
|
|
|
message[MillingTempStationLineError] = "铣线只能选择铣线Robot"
|
|
|
|
|
message[MillingTempStationHasWorkpiece] = "铣线只能选择铣线Robot"
|
|
|
|
|
|
2026-08-27 10:56:41 +08:00
|
|
|
message[TrayTypeNotFound] = "未找到托盘类型"
|
|
|
|
|
message[TrayTypeAlreadyExists] = "托盘类型已存在"
|
2026-08-27 10:09:54 +08:00
|
|
|
|
|
|
|
|
message[DockErrorNotFound] = "接驳台查找错误"
|
2026-08-27 10:56:41 +08:00
|
|
|
message[DockFrontHasSmallTray] = "此位置前面有小托盘,请重新扫描接驳台后再操作"
|
2026-08-27 10:09:54 +08:00
|
|
|
message[DockReadError] = "读取接驳台"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func MapErrMsg(errCode code, msg ...string) string {
|
|
|
|
|
if errCode == DirectErrCode {
|
|
|
|
|
return msg[0]
|
|
|
|
|
}
|
|
|
|
|
if msg, ok := message[errCode]; ok {
|
|
|
|
|
return msg
|
|
|
|
|
} else {
|
|
|
|
|
return "服务器开小差啦,稍后再来试一试"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func IsCodeErr(errCode code) bool {
|
|
|
|
|
if _, ok := message[errCode]; ok {
|
|
|
|
|
return true
|
|
|
|
|
} else {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
}
|