// Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.

package om

import (
	"LAPP_ACURA_MOM_BACKEND/global"
	"LAPP_ACURA_MOM_BACKEND/grmi"
	model "LAPP_ACURA_MOM_BACKEND/models/om"
	"LAPP_ACURA_MOM_BACKEND/web/middleware/jwts"
	"LAPP_ACURA_MOM_BACKEND/web/supports"
	"github.com/kataras/iris/v12"
	"github.com/kataras/iris/v12/core/router"
	"strconv"
)

/******************************************************************************
 *
 * @Function Name            : RegisterOneSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个处理单条SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : HTTP方法
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterOneSerialOrder(party router.Party, httpMethod string, path string, method func(*global.User, *model.SerialOrder) error) {

	party.Handle(httpMethod, path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}

		var err error = nil

		entity := new(model.SerialOrder)
		if ctx.GetContentLength() > 0 {
			err := ctx.ReadJSON(entity)
			if err != nil {
				supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
				return
			}
		} else {
			entity = nil
		}

		err = method(user, entity)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterIDOfSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个通过主键处理单条SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : HTTP方法
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterIDOfSerialOrder(party router.Party, httpMethod string, path string, method func(*global.User, string) error) {

	party.Handle(httpMethod, path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}

		var err error = nil
		serialOrderId := ctx.Params().GetString("serialOrderId")

		err = method(user, serialOrderId)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterInsertOneSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个插入单条SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterInsertOneSerialOrder(party router.Party, path string, method func(*global.User, *model.SerialOrder) error) {

	RegisterOneSerialOrder(party, "POST", path, method)
}

/******************************************************************************
 *
 * @Function Name            : RegisterDeleteOneSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个删除单条SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterDeleteOneSerialOrder(party router.Party, path string, method func(*global.User, string) error) {

	RegisterIDOfSerialOrder(party, "DELETE", path+"/{serialOrderId:string}", method)
}

/******************************************************************************
 *
 * @Function Name            : RegisterSelectOneSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查找单条SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterSelectOneSerialOrder(party router.Party, path string, method func(*global.User, string) (*model.SerialOrder, error)) {

	party.Get(path+"/{serialOrderId:string}", func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}

		serialOrderId := ctx.Params().GetString("serialOrderId")
		result, err := method(user, serialOrderId)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		if result == nil {
			supports.Error(ctx, iris.StatusNotFound, supports.NotFound, nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterUpdateOneSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个修改单条SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterUpdateOneSerialOrder(party router.Party, path string, method func(*global.User, *model.SerialOrder) error) {

	RegisterOneSerialOrder(party, "PUT", path, method)
}

/******************************************************************************
 *
 * @Function Name            : RegisterMultiSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个处理多条SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : HTTP方法
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterMultiSerialOrder(party router.Party, httpMethod string, path string, method func(*global.User, *[]model.SerialOrder) error) {

	party.Handle(httpMethod, path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}

		entities := make([]model.SerialOrder, 0, 10)
		err := ctx.ReadJSON(&entities)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}

		err = method(user, &entities)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterInsertSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个插入多条SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterInsertSerialOrder(party router.Party, path string, method func(*global.User, *[]model.SerialOrder) error) {

	RegisterMultiSerialOrder(party, "POST", path, method)
}

/******************************************************************************
 *
 * @Function Name            : RegisterDeleteSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个删除多条SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterDeleteSerialOrder(party router.Party, path string, method func(*global.User, *[]model.SerialOrder) error) {

	RegisterMultiSerialOrder(party, "DELETE", path, method)
}

/******************************************************************************
 *
 * @Function Name            : RegisterSelectSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查询SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterSelectSerialOrder(party router.Party, path string, method func(*global.User, map[string]string) ([]model.SerialOrder, error)) {

	party.Get(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}

		result, err := method(user, ctx.URLParams())
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterQuerySerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查询SerialOrder并分页的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterQuerySerialOrder(party router.Party, path string, method func(*global.User, map[string]string) (grmi.PagingResult, error)) {

	party.Get(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}

		result, err := method(user, ctx.URLParams())
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterUpdateSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个修改多条SerialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterUpdateSerialOrder(party router.Party, path string, method func(*global.User, *[]model.SerialOrder) error) {

	RegisterMultiSerialOrder(party, "PUT", path, method)
}

/******************************************************************************
 *
 * @Function Name            : RegisterSelectSortOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查询排序工单页的已排序的工单的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-10-25
 *
 ******************************************************************************/
func RegisterSelectSortOrder(party router.Party, path string, method func(*global.User, map[string]string) (grmi.PagingResult, error)) {

	party.Get(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}

		result, err := method(user, ctx.URLParams())
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : SelectUnSortOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查询排序工单页的未排序的工单的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-10-25
 *
 ******************************************************************************/
func RegisterSelectUnSortOrder(party router.Party, path string, method func(*global.User, map[string]string) (grmi.PagingResult, error)) {

	party.Get(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}

		result, err := method(user, ctx.URLParams())
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterSelectUrgencyOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查询排序工单页的紧急工单的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-10-25
 *
 ******************************************************************************/
func RegisterSelectUrgencyOrder(party router.Party, path string, method func(*global.User, map[string]string) (grmi.PagingResult, error)) {

	party.Get(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}

		result, err := method(user, ctx.URLParams())
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterChangeOrderToUrgency
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个将序列工单放到紧急队列的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-10-25
 *
 ******************************************************************************/
func RegisterChangeOrderToUrgency(party router.Party, path string, method func(user *global.User, serialOrderId string, priority int) (err error)) {

	party.Post(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}
		type Req struct {
			SerialOrderId string `json:"serialOrderId"`
			Priority      int    `json:"priority"`
		}
		var data Req
		if err := ctx.ReadJSON(&data); err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		err := method(user, data.SerialOrderId, data.Priority)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterWithdrawSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个撤回已计划的内部订单的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-10-25
 *
 ******************************************************************************/
func RegisterWithdrawSerialOrder(party router.Party, path string, method func(user *global.User, serialOrderId string, source string) (err error)) {

	party.Post(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}
		type Req struct {
			SerialOrderId string `json:"serialOrderId"`
			Source        string `json:"source"`
		}
		var data Req
		if err := ctx.ReadJSON(&data); err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		err := method(user, data.SerialOrderId, data.Source)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterCancelSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个取消未计划的内部订单的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-10-25
 *
 ******************************************************************************/
func RegisterCancelSerialOrder(party router.Party, path string, method func(user *global.User, serialOrderId string) error) {

	party.Post(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}
		type Req struct {
			SerialOrderId string `json:"serialOrderId"`
		}
		var data Req
		if err := ctx.ReadJSON(&data); err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		err := method(user, data.SerialOrderId)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterPutIntSerialOrderToSeq
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个将未计划的内部订单放到计划队列中的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-10-25
 *
 ******************************************************************************/
func RegisterPutIntSerialOrderToSeq(party router.Party, path string, method func(user *global.User, serialOrderId string, preSchedKey int64) error) {

	party.Post(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}
		type Req struct {
			SerialOrderId string `json:"serialOrderId"`
			PreSchedKey   int64  `json:"preSchedKey"`
		}
		var data Req
		if err := ctx.ReadJSON(&data); err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		if data.PreSchedKey == 0 {
			supports.Error(ctx, iris.StatusBadRequest, "未指定前面的调用Key", nil)
			return
		}
		err := method(user, data.SerialOrderId, data.PreSchedKey)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterChangeOrderSchedKey
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个修改排序队列中内部订单的调用Key的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-10-25
 *
 ******************************************************************************/
func RegisterChangeOrderSchedKey(party router.Party, path string, method func(user *global.User, serialOrderId string, schedKey int64) error) {

	party.Post(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}
		type Req struct {
			SerialOrderId string `json:"serialOrderId"`
			SchedKey      int64  `json:"schedKey"`
		}
		var data Req
		if err := ctx.ReadJSON(&data); err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		if data.SchedKey == 0 {
			supports.Error(ctx, iris.StatusBadRequest, "未调整的调用Key", nil)
			return
		}
		err := method(user, data.SerialOrderId, data.SchedKey)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterGenerateSerialOrderCraft
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个生成SerialOrder工艺的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-11-25
 *
 ******************************************************************************/
func RegisterGenerateSerialOrderCraft(party router.Party, path string, method func(*global.User, string) error) {

	party.Post(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			return
		}
		type Req struct {
			SerialOrderId string `json:"serialOrderId"`
		}
		var entity Req
		if err := ctx.ReadJSON(&entity); err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		err := method(user, entity.SerialOrderId)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterGenerateSerialOrderCraft
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个派工已锁定的内部订单的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-11-29
 *
 ******************************************************************************/
func RegisterReleaseSerialOrder(party router.Party, path string, method func(*global.User, string) error) {

	party.Post(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			return
		}
		type Req struct {
			SerialOrderId string `json:"serialOrderId"`
		}
		var entity Req
		if err := ctx.ReadJSON(&entity); err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		err := method(user, entity.SerialOrderId)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterSelectSerialOrderOperationData
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查找单条SerialOrder操作记录的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterSelectSerialOrderOperationData(party router.Party, path string, method func(*global.User, string) (interface{}, error)) {

	party.Get(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			return
		}

		serialOrderId := ctx.URLParam("serialOrderId")
		if serialOrderId == "" {
			supports.Error(ctx, iris.StatusBadRequest, "未获取到工单ID", nil)
		}
		result, err := method(user, serialOrderId)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterSelectSerialOrderOperationTrace
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查找单条SerialOrder操作记录的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : 代码生成器创建
 *
 * @Date                     : 2021-10-22 14:06:37
 *
 ******************************************************************************/
func RegisterSelectSerialOrderOperationTrace(party router.Party, path string, method func(*global.User, string) (interface{}, error)) {

	party.Get(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			return
		}

		serialOrderId := ctx.URLParam("serialOrderId")
		if serialOrderId == "" {
			supports.Error(ctx, iris.StatusBadRequest, "未获取到工单ID", nil)
		}
		result, err := method(user, serialOrderId)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterSerialOrderPOTrace
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查询SerialOrder PO 追溯数据的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-09-16
 *
 ******************************************************************************/
func RegisterSerialOrderPOTrace(party router.Party, path string, method func(user *global.User, status int, workLineId, start, end, serialOrderId string, pageNumber int64, pageSize int64) (interface{}, error)) {

	party.Get(path, func(ctx iris.Context) {
		var err error
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			return
		}
		serialOrderId := ctx.URLParam("serialOrderId")
		workLineId := ctx.URLParam("workLineId")
		start := ctx.URLParam("start")
		end := ctx.URLParam("end")
		status, err := ctx.URLParamInt("status")
		if err != nil {
			status = 0
		}
		pageNumber, err := ctx.URLParamInt64("pageNumber")
		if err != nil {
			pageNumber = 1
		}
		pageSize, err := ctx.URLParamInt64("pageSize")
		if err != nil {
			pageSize = 10
		}
		result, err := method(user, status, workLineId, start, end, serialOrderId, pageNumber, pageSize)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterSerialOrderDetailTrace
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查询SerialOrder Detail 追溯数据的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-09-17
 *
 ******************************************************************************/
func RegisterSerialOrderDetailTrace(party router.Party, path string, method func(*global.User, string) (interface{}, error)) {

	party.Get(path, func(ctx iris.Context) {
		var err error
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}
		serialOrderId := ctx.URLParam("serialOrderId")
		if serialOrderId == "" {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur+"serialOrderId为空", nil)
			return
		}
		result, err := method(user, serialOrderId)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterExportSerialOrderOPTraceData
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查询导出产品追溯数据数据的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-09-17
 *
 ******************************************************************************/
func RegisterExportSerialOrderOPTraceData(party router.Party, path string, method func(*global.User, string, int, string, string, string, string, bool) (string, error)) {

	party.Get(path, func(ctx iris.Context) {
		var err error
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}
		workOrderId := ctx.URLParam("workOrderId")
		serialOrderId := ctx.URLParam("serialOrderId")
		workLineId := ctx.URLParam("workLineId")
		date := ctx.URLParam("date")
		statusStr := ctx.URLParam("status")
		NGCode := ctx.URLParam("NGCode")
		repairStr := ctx.URLParam("repair")
		var status int
		if statusStr != "" {
			status, err = strconv.Atoi(statusStr)
			if err != nil {
				supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
				return
			}
		}

		var repair bool
		if repairStr == "true" {
			repair = true
		}
		result, err := method(user, workOrderId, status, workLineId, date, serialOrderId, NGCode, repair)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterExportSerialOrderOPTraceData
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个查询导出产品追溯数据数据的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2021-09-17
 *
 ******************************************************************************/
func RegisterDisplaySerialOrderTrace(party router.Party, path string, method func(*global.User, string, int, string, string, string, string, bool, int64, int64) (interface{}, error)) {

	party.Get(path, func(ctx iris.Context) {
		var err error
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}
		workOrderId := ctx.URLParam("workOrderId")
		serialOrderId := ctx.URLParam("serialOrderId")
		workLineId := ctx.URLParam("workLineId")
		date := ctx.URLParam("date")
		statusStr := ctx.URLParam("status")
		NGCode := ctx.URLParam("NGCode")
		repairStr := ctx.URLParam("repair")
		pageNumber, err := ctx.URLParamInt64("pageNumber")
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}
		pageSize, err := ctx.URLParamInt64("pageSize")
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
			return
		}
		var status int
		if statusStr != "" {
			status, err = strconv.Atoi(statusStr)
			if err != nil {
				supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
				return
			}
		}

		var repair bool
		if repairStr == "true" {
			repair = true
		}
		result, err := method(user, workOrderId, status, workLineId, date, serialOrderId, NGCode, repair, pageSize, pageNumber)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterCreateBatchSerialOrder
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个创建多个serialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2022-01-11
 *
 ******************************************************************************/
func RegisterCreateBatchSerialOrder(party router.Party, path string, method func(user *global.User, productId string, projectId string, workLineId string, qty int, preSchKey int, priority int, planDate string) error) {

	party.Post(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			return
		}
		type Req struct {
			ProductId   string `json:"OM_SerialOrder-productId"`
			ProjectId   string `json:"OM_SerialOrder-ProjectId"`
			WorkLineId  string `json:"OM_SerialOrder-WorkLineId"`
			Qty         int    `json:"OM_SerialOrder-Qty"`
			PreSchedKey int    `json:"OM_SerialOrder-PreSchedKey"`
			Priority    int    `json:"OM_SerialOrder-Priority"`
			PlanDate string `json:"OM_SerialOrder-PlanDate"`
		}
		var data Req
		if err := ctx.ReadJSON(&data); err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		err := method(user, data.ProductId, data.ProjectId, data.WorkLineId, data.Qty, data.PreSchedKey, data.Priority, data.PlanDate)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterTraceArticleBatch
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个创建多个serialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2022-01-11
 *
 ******************************************************************************/
func RegisterTraceArticleBatch(party router.Party, path string, method func(user *global.User, barcode string, paging *grmi.Paging) (grmi.PagingResult, error)) {

	party.Get(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			return
		}
		barcode := ctx.URLParam("barcode")
		pageNumber, err := ctx.URLParamInt64("pageNumber")
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		pageSize, err := ctx.URLParamInt64("pageSize")
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		paging := &grmi.Paging{
			Number: pageNumber,
			Size: pageSize,
		}
		result, err := method(user, barcode, paging)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

/******************************************************************************
 *
 * @Function Name            : RegisterExportTraceArticleBatch
 *-----------------------------------------------------------------------------
 *
 * @Description              : 为一个创建多个serialOrder的方法注册路由
 *
 * @Function Parameters      : 路由分组
 *
 * @Function Parameters      : 路径
 *
 * @Function Parameters      : 实际处理请求的方法
 *
 * @Author                   : zhangxin
 *
 * @Date                     : 2022-03-17
 *
 ******************************************************************************/
func RegisterExportTraceArticleBatch(party router.Party, path string, method func(user *global.User, barcode string) (string, error)) {

	party.Get(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			return
		}
		barcode := ctx.URLParam("barcode")
		result, err := method(user, barcode)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}

// RegisterCancelMultiSerialOrder 批量取消工单
func RegisterCancelMultiSerialOrder(party router.Party, path string, method func(user *global.User, serialOrderIdLi []string) error) {

	party.Post(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			return
		}
		type Req struct {
			SerialOrderIdLi []string `json:"serialOrderIdLi"`
		}
		var data Req
		if err := ctx.ReadJSON(&data); err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		if len(data.SerialOrderIdLi) == 0 {
			supports.Error(ctx, iris.StatusBadRequest, "未获取到工单条码", nil)
			return
		}
		err := method(user, data.SerialOrderIdLi)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, nil)
	})
}


// RegisterGetProductTraceDataReport 查询工单的生产数据
func RegisterGetProductTraceDataReport(party router.Party, path string, method func(user *global.User, serialOrderId string) (interface{}, error)) {

	party.Get(path, func(ctx iris.Context) {
		user, ok := jwts.ParseToken(ctx)
		if !ok {
			return
		}
		serialOrderId := ctx.URLParam("serialOrderId")
		if serialOrderId == "" {
			supports.Error(ctx, iris.StatusBadRequest, "未获取到工单ID", nil)
			return
		}
		result, err := method(user, serialOrderId)
		if err != nil {
			supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
			return
		}
		supports.Ok(ctx, supports.OptionSuccess, result)
	})
}
