package v1
|
|
import (
|
"apsClient/model"
|
"apsClient/model/request"
|
"apsClient/pkg/contextx"
|
"apsClient/pkg/ecode"
|
"apsClient/service"
|
"github.com/gin-gonic/gin"
|
)
|
|
type ProcessModelApi struct{}
|
|
// List
|
// @Tags 工艺模型
|
// @Summary 获取工艺模型列表
|
// @Produce application/json
|
// @Param object query request.ProcessModelList true "查询参数"
|
// @Success 200 {object} contextx.Response{data=[]model.ProcessModel} "成功"
|
// @Router /v1/processModel/list [get]
|
func (slf *ProcessModelApi) List(c *gin.Context) {
|
var params request.ProcessModelList
|
ctx, ok := contextx.NewContext(c, ¶ms)
|
if !ok {
|
return
|
}
|
|
procedure, code := service.NewTaskService().GetProcedureById(params.ProcedureId)
|
if code != ecode.OK {
|
ctx.Fail(code)
|
return
|
}
|
order, err := service.NewTaskService().GetOrderByWorkOrderId(procedure.WorkOrderID)
|
if err != nil {
|
ctx.Fail(ecode.DBErr)
|
return
|
}
|
var oldProcessModel, newProcessModel, headProcessModel *model.ProcessModel
|
|
if procedure.ProcessModelNumber != "" {
|
oldProcessModel, _ = service.GetProcessModelByNumber(procedure.ProcessModelNumber) //获取旧的工艺参数
|
}
|
newProcessModel, _ = service.NewTaskService().GetProcessParams(procedure, order) //获取新的工艺参数
|
if newProcessModel != nil && (oldProcessModel == nil || newProcessModel.Number != oldProcessModel.Number) { //旧的没有或者编号不同,更新
|
newProcessModel.NewNumber, newProcessModel.NewParamsMap = newProcessModel.Number, newProcessModel.ParamsMap
|
if oldProcessModel != nil {
|
newProcessModel.Number, newProcessModel.ParamsMap = oldProcessModel.Number, oldProcessModel.ParamsMap
|
} else { //旧的没有,也可以"更新"(补充)
|
newProcessModel.Number, newProcessModel.ParamsMap = "", nil
|
}
|
newProcessModel.IsUpdate = true
|
headProcessModel = newProcessModel
|
} else if oldProcessModel != nil {
|
headProcessModel = oldProcessModel
|
}
|
|
offset, limit, unShift := GetOffsetAndLimit(headProcessModel, params.Page, params.PageSize)
|
list, total, err := service.GetOtherProcessModelList(offset, limit, order.ProductName, procedure.ProceduresInfo.ProcedureName) //获取其他工艺参数
|
if err != nil {
|
ctx.Fail(ecode.DBErr)
|
return
|
}
|
if unShift && headProcessModel != nil { //粘在前面
|
list = append([]*model.ProcessModel{headProcessModel}, list...)
|
}
|
ctx.ResultList(list, total)
|
}
|
|
func GetOffsetAndLimit(head *model.ProcessModel, page, pageSize int) (offset, limit int, unShift bool) {
|
unShift = head != nil && page == 1
|
limit = pageSize
|
if unShift {
|
limit-- //第一页少查一个
|
}
|
offset = (page - 1) * pageSize
|
if head != nil && offset > 0 { //第二页开始偏移量左移一个
|
offset--
|
}
|
|
return offset, limit, unShift
|
}
|