Browse Source

Merge pull request '添加26到80状态工单的取消功能' (#100) from feature_om into develop

Reviewed-on: http://101.201.121.115:3000/leo/LAPP_LF_MOM_BACKEND/pulls/100
Reviewed-by: weichenglei <chenglei.wei@le-it.com.cn>
pull/101/head
weichenglei 3 years ago
parent
commit
4ac62c0201
16 changed files with 555 additions and 35 deletions
  1. +1
    -1
      conf/config.yaml
  2. +38
    -0
      dao/om/SerialOrder.dao.go
  3. +21
    -0
      dao/om/SerialOrderPOLst.dao.go
  4. +58
    -0
      dao/om/implments/SerialOrder.dao.impl.go
  5. +30
    -0
      dao/om/implments/SerialOrderPOLst.dao.impl.go
  6. +1
    -1
      db/db.go
  7. +3
    -1
      meta/base/OPCComValueCheckRuleDetail.meta.go
  8. +1
    -0
      models/base/OPCComValueCheckRuleDetail.model.go
  9. +5
    -1
      models/me/BomLst.model.go
  10. +6
    -0
      models/om/om.go
  11. +1
    -0
      services/base/implments/OPCComValueCheckRuleDetail.service.impl.go
  12. +40
    -0
      services/om/WorkOrder.service.go
  13. +236
    -25
      services/om/implments/WorkOrder.service.impl.go
  14. +22
    -6
      services/schedule/SchedTask.Ctrl.go
  15. +88
    -0
      web/controllers/om/WorkOrder.rest.go
  16. +4
    -0
      web/controllers/om/om.go

+ 1
- 1
conf/config.yaml View File

@ -11,7 +11,7 @@ masterdbdrivername: mssql
masterdbserver: 101.201.121.115 masterdbserver: 101.201.121.115
masterdbuser: sa masterdbuser: sa
masterdbpassword: Leit2020 masterdbpassword: Leit2020
masterdbname: GAAS
masterdbname: LAPP_LF_MOM
masterdbport: 1433 masterdbport: 1433
# 打印模板文件夹路径 # 打印模板文件夹路径


+ 38
- 0
dao/om/SerialOrder.dao.go View File

@ -326,6 +326,44 @@ type SerialOrderDAO interface {
* *
******************************************************************************/ ******************************************************************************/
GetLineWIPQty(string) (int, error) GetLineWIPQty(string) (int, error)
/******************************************************************************
*
* @Function Name : GetWorkOrderUnCompleted
*-----------------------------------------------------------------------------
*
* @Description : 通过workOrderId查询80状态以下的serialOrder
*
* @Function Parameters : workOrderId
*
* @Return Value : 查找到的SerialOrder
*
* @Return Value : 执行时发生的错误
*
* @Author : zhangxin
*
* @Date : 2021-09-26
*
******************************************************************************/
GetWorkOrderUnCompleted(workOrderId string) (result *[]model.VOmSerialorder, err error)
/******************************************************************************
*
* @Function Name : GetWorkOrderUnCompleted
*-----------------------------------------------------------------------------
*
* @Description : 通过serialOrderIdLi查询serialOrder
*
* @Function Parameters : serialOrderIdLi []string
*
* @Return Value : 查找到的SerialOrder
*
* @Return Value : 执行时发生的错误
*
* @Author : zhangxin
*
* @Date : 2021-09-26
*
******************************************************************************/
GetSerialOrderByIDLi(serialOrderIdLi []string) (result *[]model.VOmSerialorder, err error)
} }
/****************************************************************************** /******************************************************************************


+ 21
- 0
dao/om/SerialOrderPOLst.dao.go View File

@ -246,6 +246,27 @@ type SerialOrderPOLstDAO interface {
* *
******************************************************************************/ ******************************************************************************/
SelectDisplaySerialOrder(workLineId string, workOrderId string, serialOrderId string, date string, status int) ([]model.SerialOrderPOData, error) SelectDisplaySerialOrder(workLineId string, workOrderId string, serialOrderId string, date string, status int) ([]model.SerialOrderPOData, error)
/******************************************************************************
*
* @Function Name : GetSerialOrderPOData
*-----------------------------------------------------------------------------
*
* @Description : 查询展示的serialOrderPOLst和process关联的相关数据
*
* @Function Parameters : 序列工单id
*
* @Function Parameters : 产线id状态
*
* @Return Value : *[]model.SerialOrderPOWithProcess
*
* @Return Value : 执行时发生的错误
*
* @Author : zhangxin
*
* @Date : 2021-09-26
*
******************************************************************************/
GetSerialOrderPOData(serialOrderId string, workLineId string) (*[]model.SerialOrderPOWithProcess, error)
} }
/****************************************************************************** /******************************************************************************


+ 58
- 0
dao/om/implments/SerialOrder.dao.impl.go View File

@ -427,3 +427,61 @@ func (impl *SerialOrderDAOImplement) GetLineWIPQty(lineid string) (wipqty int, e
wipqty = int(totalrow) wipqty = int(totalrow)
return return
} }
/******************************************************************************
*
* @Reference LAPP_LF_MOM_BACKEND/dao/om/SerialOrderDAO.GetWorkOrderUnCompleted
*
******************************************************************************/
func (impl *SerialOrderDAOImplement) GetWorkOrderUnCompleted(workOrderId string) (result *[]model.VOmSerialorder, err error) {
data := make([]model.VOmSerialorder, 0)
session := impl.session.Table(impl.meta.TableName)
condition := fmt.Sprintf("%s = %s and %s = %s",
meta.SerialOrder_PlantNr.ColumnName,
meta.SerialOrderStatus_PlantNr.ColumnName,
meta.SerialOrder_SerialOrderId.ColumnName,
meta.SerialOrderStatus_SerialOrderId.ColumnName)
where := fmt.Sprintf("%s = ? and %s = ? and %s < ? and %s >= ?",
meta.SerialOrder_PlantNr.ColumnName,
meta.SerialOrder_WorkOrderId.ColumnName,
meta.SerialOrderStatus_Status.ColumnName,
meta.SerialOrderStatus_Status.ColumnName)
err = session.Join("LEFT", meta.SerialOrderStatus.TableName, condition).Where(where, impl.plantNr, workOrderId, common.WO_STATUS_FINISHED, common.WO_STATUS_RELEASED).Asc(meta.SerialOrder_Sort.ColumnName).Find(&data)
if err != nil {
return nil, err
}
return &data, nil
}
/******************************************************************************
*
* @Reference LAPP_LF_MOM_BACKEND/dao/om/SerialOrderDAO.GetSerialOrderByIDLi
*
******************************************************************************/
func (impl *SerialOrderDAOImplement) GetSerialOrderByIDLi(serialOrderIdLi []string) (result *[]model.VOmSerialorder, err error) {
data := make([]model.VOmSerialorder, 0)
session := impl.session.Table(impl.meta.TableName)
condition := fmt.Sprintf("%s = %s and %s = %s",
meta.SerialOrder_PlantNr.ColumnName,
meta.SerialOrderStatus_PlantNr.ColumnName,
meta.SerialOrder_SerialOrderId.ColumnName,
meta.SerialOrderStatus_SerialOrderId.ColumnName)
where := fmt.Sprintf("%s = ?", meta.SerialOrder_PlantNr.ColumnName)
idSearch := fmt.Sprintf(" and %s in ( ", meta.SerialOrder_SerialOrderId.ColumnName)
for index, serialOrderId := range serialOrderIdLi {
if index != 0 {
idSearch += ", "
}
idSearch += fmt.Sprintf(`'%s'`, serialOrderId)
}
where += idSearch + ")"
err = session.Join("LEFT", meta.SerialOrderStatus.TableName, condition).Where(where, impl.plantNr).Asc(meta.SerialOrder_Sort.ColumnName).Find(&data)
if err != nil {
return nil, err
}
return &data, nil
}

+ 30
- 0
dao/om/implments/SerialOrderPOLst.dao.impl.go View File

@ -353,4 +353,34 @@ func (impl *SerialOrderPOLstDAOImplement) SelectDisplaySerialOrder(workLineId st
} }
err := session.Join("LEFT", meta.SerialOrder.TableName, orderCondition).Join("LEFT", meta.SerialOrderStatus.TableName, condition).Join("LEFT", baseMeta.Process.TableName, processCondition).Where(where, parameters...).Asc(meta.SerialOrder_SerialId.ColumnName).Asc(baseMeta.Process_PO.ColumnName).Find(&result) err := session.Join("LEFT", meta.SerialOrder.TableName, orderCondition).Join("LEFT", meta.SerialOrderStatus.TableName, condition).Join("LEFT", baseMeta.Process.TableName, processCondition).Where(where, parameters...).Asc(meta.SerialOrder_SerialId.ColumnName).Asc(baseMeta.Process_PO.ColumnName).Find(&result)
return result, err return result, err
}
/******************************************************************************
*
* @Reference LAPP_LF_MOM_BACKEND/dao/om/SerialOrderDAO.GetSerialOrderPOData
*
******************************************************************************/
func (impl *SerialOrderPOLstDAOImplement) GetSerialOrderPOData(serialOrderId string, workLineId string) (*[]model.SerialOrderPOWithProcess, error) {
result := make([]model.SerialOrderPOWithProcess, 0)
serialOrderCondition := fmt.Sprintf("%s = %s and %s = %s",
meta.SerialOrderPOLst_PlantNr.ColumnName,
meta.SerialOrder_PlantNr.ColumnName,
meta.SerialOrderPOLst_SerialOrderId.ColumnName,
meta.SerialOrder_SerialOrderId.ColumnName)
processCondition := fmt.Sprintf("%s = %s and %s = %s and %s = %s",
meta.SerialOrderPOLst_PlantNr.ColumnName,
baseMeta.Process_PlantNr.ColumnName,
meta.SerialOrderPOLst_PO.ColumnName,
baseMeta.Process_PO.ColumnName,
meta.SerialOrder_UsedResourceId.ColumnName,
baseMeta.Process_WorkLineId.ColumnName)
session := impl.session.Table(impl.meta.TableName).Join("LEFT", meta.SerialOrder.TableName, serialOrderCondition).Join("LEFT", baseMeta.Process.TableName, processCondition)
where := fmt.Sprintf("%s = ? and %s = ? and %s = ?",
meta.SerialOrderPOLst_PlantNr.ColumnName,
meta.SerialOrderPOLst_SerialOrderId.ColumnName,
meta.SerialOrder_UsedResourceId.ColumnName)
parameters := []interface{}{impl.plantNr, serialOrderId, workLineId}
err := session.Where(where, parameters...).Asc(meta.SerialOrderPOLst_PO.ColumnName).Find(&result)
return &result, err
} }

+ 1
- 1
db/db.go View File

@ -100,7 +100,7 @@ func InitDb() error {
if err != nil { if err != nil {
return err return err
} }
Eloquent.ShowSQL(true)
//Eloquent.ShowSQL(true)
return nil return nil
} }


+ 3
- 1
meta/base/OPCComValueCheckRuleDetail.meta.go View File

@ -19,6 +19,7 @@ import (
var OPCComValueCheckRuleDetail_PlantNr = grmi.NewField("PlantNr", "OPCComValueCheckRuleDetail.PlantNr", "plantnr", grmi.TypeInt) var OPCComValueCheckRuleDetail_PlantNr = grmi.NewField("PlantNr", "OPCComValueCheckRuleDetail.PlantNr", "plantnr", grmi.TypeInt)
var OPCComValueCheckRuleDetail_Id = grmi.NewField("Id", "OPCComValueCheckRuleDetail.Id", "id", grmi.TypeInt) var OPCComValueCheckRuleDetail_Id = grmi.NewField("Id", "OPCComValueCheckRuleDetail.Id", "id", grmi.TypeInt)
var OPCComValueCheckRuleDetail_DetailId = grmi.NewField("DetailId", "OPCComValueCheckRuleDetail.DetailId", "detailid", grmi.TypeInt) var OPCComValueCheckRuleDetail_DetailId = grmi.NewField("DetailId", "OPCComValueCheckRuleDetail.DetailId", "detailid", grmi.TypeInt)
var OPCComValueCheckRuleDetail_ObjectPO = grmi.NewField("ObjectPO", "OPCComValueCheckRuleDetail.ObjectPO", "objectpo", grmi.TypeInt)
var OPCComValueCheckRuleDetail_CheckOperationId = grmi.NewField("CheckOperationId", "OPCComValueCheckRuleDetail.CheckOperationId", "checkoperationid", grmi.TypeInt) var OPCComValueCheckRuleDetail_CheckOperationId = grmi.NewField("CheckOperationId", "OPCComValueCheckRuleDetail.CheckOperationId", "checkoperationid", grmi.TypeInt)
var OPCComValueCheckRuleDetail_CheckPO = grmi.NewField("CheckPO", "OPCComValueCheckRuleDetail.CheckPO", "checkpo", grmi.TypeInt) var OPCComValueCheckRuleDetail_CheckPO = grmi.NewField("CheckPO", "OPCComValueCheckRuleDetail.CheckPO", "checkpo", grmi.TypeInt)
var OPCComValueCheckRuleDetail_CheckStepNo = grmi.NewField("CheckStepNo", "OPCComValueCheckRuleDetail.CheckStepNo", "checkstepno", grmi.TypeInt) var OPCComValueCheckRuleDetail_CheckStepNo = grmi.NewField("CheckStepNo", "OPCComValueCheckRuleDetail.CheckStepNo", "checkstepno", grmi.TypeInt)
@ -53,6 +54,7 @@ var OPCComValueCheckRuleDetail = grmi.NewEntity(
OPCComValueCheckRuleDetail_PlantNr.Name: OPCComValueCheckRuleDetail_PlantNr, OPCComValueCheckRuleDetail_PlantNr.Name: OPCComValueCheckRuleDetail_PlantNr,
OPCComValueCheckRuleDetail_Id.Name: OPCComValueCheckRuleDetail_Id, OPCComValueCheckRuleDetail_Id.Name: OPCComValueCheckRuleDetail_Id,
OPCComValueCheckRuleDetail_DetailId.Name: OPCComValueCheckRuleDetail_DetailId, OPCComValueCheckRuleDetail_DetailId.Name: OPCComValueCheckRuleDetail_DetailId,
OPCComValueCheckRuleDetail_ObjectPO.Name: OPCComValueCheckRuleDetail_ObjectPO,
OPCComValueCheckRuleDetail_CheckOperationId.Name: OPCComValueCheckRuleDetail_CheckOperationId, OPCComValueCheckRuleDetail_CheckOperationId.Name: OPCComValueCheckRuleDetail_CheckOperationId,
OPCComValueCheckRuleDetail_CheckPO.Name: OPCComValueCheckRuleDetail_CheckPO, OPCComValueCheckRuleDetail_CheckPO.Name: OPCComValueCheckRuleDetail_CheckPO,
OPCComValueCheckRuleDetail_CheckStepNo.Name: OPCComValueCheckRuleDetail_CheckStepNo, OPCComValueCheckRuleDetail_CheckStepNo.Name: OPCComValueCheckRuleDetail_CheckStepNo,
@ -72,4 +74,4 @@ var OPCComValueCheckRuleDetail = grmi.NewEntity(
OPCComValueCheckRuleDetail_CreateTime.Name: OPCComValueCheckRuleDetail_CreateTime, OPCComValueCheckRuleDetail_CreateTime.Name: OPCComValueCheckRuleDetail_CreateTime,
}, },
[]string{"PlantNr"}, []string{"PlantNr"},
[]string{"CheckOperationId", "CheckPO", "CheckStepNo", "CheckStepDesc", "CheckPos", "CheckProjectId", "CheckWorkPlaceNr", "ObjectStepNo", "ObjectPos", "ObjectOPCDesc", "OperatorSimbol", "CheckValue", "DoWhenOK", "DoWhenNOK", "LastUser"})
[]string{"ObjectPO", "CheckOperationId", "CheckPO", "CheckStepNo", "CheckStepDesc", "CheckPos", "CheckProjectId", "CheckWorkPlaceNr", "ObjectStepNo", "ObjectPos", "ObjectOPCDesc", "OperatorSimbol", "CheckValue", "DoWhenOK", "DoWhenNOK", "LastUser"})

+ 1
- 0
models/base/OPCComValueCheckRuleDetail.model.go View File

@ -23,6 +23,7 @@ type OPCComValueCheckRuleDetail struct {
Id int `xorm:"pk int 'Id'" json:"OPCComValueCheckRuleDetail-Id"` Id int `xorm:"pk int 'Id'" json:"OPCComValueCheckRuleDetail-Id"`
PlantNr int `xorm:"pk int 'PlantNr'" json:"OPCComValueCheckRuleDetail-PlantNr"` PlantNr int `xorm:"pk int 'PlantNr'" json:"OPCComValueCheckRuleDetail-PlantNr"`
DetailId int `xorm:"pk int 'DetailId'" json:"OPCComValueCheckRuleDetail-DetailId"` DetailId int `xorm:"pk int 'DetailId'" json:"OPCComValueCheckRuleDetail-DetailId"`
ObjectPO int `xorm:"pk int 'ObjectPO'" json:"OPCComValueCheckRuleDetail-ObjectPO"`
CheckOperationId int `xorm:"int 'CheckOperationId' not null" json:"OPCComValueCheckRuleDetail-CheckOperationId"` CheckOperationId int `xorm:"int 'CheckOperationId' not null" json:"OPCComValueCheckRuleDetail-CheckOperationId"`
CheckPO int `xorm:"int 'CheckPO' not null" json:"OPCComValueCheckRuleDetail-CheckPO"` CheckPO int `xorm:"int 'CheckPO' not null" json:"OPCComValueCheckRuleDetail-CheckPO"`
CheckStepNo int `xorm:"int 'CheckStepNo' not null" json:"OPCComValueCheckRuleDetail-CheckStepNo"` CheckStepNo int `xorm:"int 'CheckStepNo' not null" json:"OPCComValueCheckRuleDetail-CheckStepNo"`


+ 5
- 1
models/me/BomLst.model.go View File

@ -81,15 +81,19 @@ func (t *BomLst) GetPage() (Menus []BomLst, err error) {
if t.BomId != "" { if t.BomId != "" {
table = table.And("BomId = ?", t.BomId) table = table.And("BomId = ?", t.BomId)
} }
if err = table.Asc("FmatNr").Find(&Menus); err != nil {
if err = table.Asc("FmatNr").Asc("Position").Find(&Menus); err != nil {
return return
} }
return return
} }
//递归查询侧边栏 //递归查询侧边栏
func (t *BomLst) SetMenu(FmatNr string) (m []BomLst, err error) { func (t *BomLst) SetMenu(FmatNr string) (m []BomLst, err error) {
menulist, err := t.GetPage() menulist, err := t.GetPage()
if err != nil {
return nil, err
}
m = make([]BomLst, 0) m = make([]BomLst, 0)
for i := 0; i < len(menulist); i++ { for i := 0; i < len(menulist); i++ {
//menulist[i].Clipped() //menulist[i].Clipped()


+ 6
- 0
models/om/om.go View File

@ -147,3 +147,9 @@ type SerialOrderOPData struct {
baseModel.OPCComRule `xorm:"extends"` baseModel.OPCComRule `xorm:"extends"`
baseModel.Operation `xorm:"extends"` baseModel.Operation `xorm:"extends"`
} }
type SerialOrderPOWithProcess struct {
SerialOrderPOLst `xorm:"extends"`
SerialOrder `xorm:"extends"`
baseModel.Process `xorm:"extends"`
}

+ 1
- 0
services/base/implments/OPCComValueCheckRuleDetail.service.impl.go View File

@ -24,6 +24,7 @@ var DefaultConditionOfOPCComValueCheckRuleDetail = grmi.NewCondition(
map[string]grmi.ConditionItem{ map[string]grmi.ConditionItem{
meta.OPCComValueCheckRuleDetail_Id.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_Id, grmi.Equal, true), meta.OPCComValueCheckRuleDetail_Id.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_Id, grmi.Equal, true),
meta.OPCComValueCheckRuleDetail_DetailId.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_DetailId, grmi.Equal, true), meta.OPCComValueCheckRuleDetail_DetailId.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_DetailId, grmi.Equal, true),
meta.OPCComValueCheckRuleDetail_ObjectPO.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_ObjectPO, grmi.Equal, false),
meta.OPCComValueCheckRuleDetail_CheckOperationId.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_CheckOperationId, grmi.Equal, false), meta.OPCComValueCheckRuleDetail_CheckOperationId.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_CheckOperationId, grmi.Equal, false),
meta.OPCComValueCheckRuleDetail_CheckPO.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_CheckPO, grmi.Equal, false), meta.OPCComValueCheckRuleDetail_CheckPO.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_CheckPO, grmi.Equal, false),
meta.OPCComValueCheckRuleDetail_CheckStepNo.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_CheckStepNo, grmi.Equal, false), meta.OPCComValueCheckRuleDetail_CheckStepNo.UrlParameterName: grmi.NewConditionItem(meta.OPCComValueCheckRuleDetail_CheckStepNo, grmi.Equal, false),


+ 40
- 0
services/om/WorkOrder.service.go View File

@ -308,6 +308,46 @@ type WorkOrderService interface {
* *
******************************************************************************/ ******************************************************************************/
SelectUnReleaseWorkOrder(user *models.Usertab, workLineId string) (*[]model.VOmWorkorder, error) SelectUnReleaseWorkOrder(user *models.Usertab, workLineId string) (*[]model.VOmWorkorder, error)
/******************************************************************************
*
* @Function Name : SelectWorkOrderUnCompletedSerialOrder
*-----------------------------------------------------------------------------
*
* @Description : 获取大于等于26小于80的序列工单
*
* @Function Parameters : 当前访问人员信息
*
* @Function Parameters : workOrderId
*
* @Return Value : *[]model.VOmSerialorder
*
* @Return Value : 执行时发生的错误
*
* @Author : zhangxin
*
* @Date : 2021-09-26
*
******************************************************************************/
SelectWorkOrderUnCompletedSerialOrder(user *models.Usertab, workOrderId string) (*[]model.VOmSerialorder, error)
/******************************************************************************
*
* @Function Name : CancelUnCompletedSerialOrder
*-----------------------------------------------------------------------------
*
* @Description : 取消未完成的序列工单
*
* @Function Parameters : 当前访问人员信息
*
* @Function Parameters : serialOrderIdLi
*
* @Return Value : 执行时发生的错误
*
* @Author : zhangxin
*
* @Date : 2021-09-26
*
******************************************************************************/
CancelUnCompletedSerialOrder(user *models.Usertab, serialOrderIdLi []string) error
} }
/****************************************************************************** /******************************************************************************


+ 236
- 25
services/om/implments/WorkOrder.service.impl.go View File

@ -5,22 +5,19 @@ package implments
import ( import (
baseDal "LAPP_LF_MOM_BACKEND/dao/base" baseDal "LAPP_LF_MOM_BACKEND/dao/base"
meDal "LAPP_LF_MOM_BACKEND/dao/me" meDal "LAPP_LF_MOM_BACKEND/dao/me"
baseMeta "LAPP_LF_MOM_BACKEND/meta/base"
meModel "LAPP_LF_MOM_BACKEND/models/me"
"github.com/go-xorm/xorm"
//logDal "LAPP_LF_MOM_BACKEND/dao/log"
dal "LAPP_LF_MOM_BACKEND/dao/om" dal "LAPP_LF_MOM_BACKEND/dao/om"
"LAPP_LF_MOM_BACKEND/db" "LAPP_LF_MOM_BACKEND/db"
"LAPP_LF_MOM_BACKEND/grmi" "LAPP_LF_MOM_BACKEND/grmi"
"LAPP_LF_MOM_BACKEND/infra/logger" "LAPP_LF_MOM_BACKEND/infra/logger"
baseMeta "LAPP_LF_MOM_BACKEND/meta/base"
meMeta "LAPP_LF_MOM_BACKEND/meta/me" meMeta "LAPP_LF_MOM_BACKEND/meta/me"
//logMeta "LAPP_LF_MOM_BACKEND/meta/log"
meta "LAPP_LF_MOM_BACKEND/meta/om" meta "LAPP_LF_MOM_BACKEND/meta/om"
baseModel "LAPP_LF_MOM_BACKEND/models/base" baseModel "LAPP_LF_MOM_BACKEND/models/base"
//logModel "LAPP_LF_MOM_BACKEND/models/log"
meModel "LAPP_LF_MOM_BACKEND/models/me"
model "LAPP_LF_MOM_BACKEND/models/om" model "LAPP_LF_MOM_BACKEND/models/om"
"LAPP_LF_MOM_BACKEND/utils" "LAPP_LF_MOM_BACKEND/utils"
"LAPP_LF_MOM_BACKEND/web/models" "LAPP_LF_MOM_BACKEND/web/models"
"github.com/go-xorm/xorm"
"strconv" "strconv"
"time" "time"
) )
@ -1428,7 +1425,7 @@ func (impl *WorkOrderServiceImplement) OPCCommunication(user *models.Usertab, se
value += workOrderId value += workOrderId
} else if detail.DataType == baseModel.DATA_TYPE_PARTNO { } else if detail.DataType == baseModel.DATA_TYPE_PARTNO {
value += serialOrderStep.SubArtId value += serialOrderStep.SubArtId
} else if detail.DataType == baseModel.DATA_TYPE_SERIALID {
} else if detail.DataType == baseModel.DATA_TYPE_SERIALID {
value += strconv.Itoa(serialId) value += strconv.Itoa(serialId)
} else { } else {
return nil, grmi.NewBusinessError("不支持的OPC通信细则中的DATA TYPE, DATA TYPE:" + detail.DataType) return nil, grmi.NewBusinessError("不支持的OPC通信细则中的DATA TYPE, DATA TYPE:" + detail.DataType)
@ -1644,7 +1641,25 @@ func (impl *WorkOrderServiceImplement) CreateLockWorkOrder(user *models.Usertab,
month := int(now.Month()) month := int(now.Month())
yearStr := baseModel.YEAR_MAP[year] yearStr := baseModel.YEAR_MAP[year]
monthStr := baseModel.MONTH_MAP[month] monthStr := baseModel.MONTH_MAP[month]
today := now.Format(grmi.DateOutFormat)
shiftStartStr := today + " 07:00:00"
shiftEndStr := today + " 19:30:00"
shiftStart, err := time.ParseInLocation(grmi.DatetimeOutFormat, shiftStartStr, utils.TimezoneLocation)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("解析班组时间失败, error:" + err.Error())
}
shiftEnd, err := time.ParseInLocation(grmi.DatetimeOutFormat, shiftEndStr, utils.TimezoneLocation)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("解析班组时间失败, error:" + err.Error())
}
var shift string
if now.Before(shiftStart) || now.After(shiftEnd) {
shift = "N"
} else {
shift = "E"
}
article, err := articleDao.SelectOne(entity.ArtId) article, err := articleDao.SelectOne(entity.ArtId)
if err != nil { if err != nil {
_ = session.Rollback() _ = session.Rollback()
@ -1692,7 +1707,7 @@ func (impl *WorkOrderServiceImplement) CreateLockWorkOrder(user *models.Usertab,
_ = session.Rollback() _ = session.Rollback()
return grmi.NewBusinessError("不存在对应的物料BOM,artId:" + article.ArtId) return grmi.NewBusinessError("不存在对应的物料BOM,artId:" + article.ArtId)
} }
bomLstLi, err := bomLstDao.Select([]grmi.Predicate{meMeta.BomLst_BomId.NewPredicate(grmi.Equal, bomHead.BomId)}, nil)
bomLstLi, err := bomLstDao.Select([]grmi.Predicate{meMeta.BomLst_BomId.NewPredicate(grmi.Equal, bomHead.BomId)}, []grmi.Field{meMeta.BomLst_Position})
if err != nil { if err != nil {
_ = session.Rollback() _ = session.Rollback()
return grmi.NewBusinessError("获取BOM细则失败, error:" + err.Error()) return grmi.NewBusinessError("获取BOM细则失败, error:" + err.Error())
@ -1833,11 +1848,12 @@ func (impl *WorkOrderServiceImplement) CreateLockWorkOrder(user *models.Usertab,
ArtId: article.ArtId, ArtId: article.ArtId,
CustArtId: article.CustArtId, CustArtId: article.CustArtId,
OrderType: baseModel.ODER_TYPE_INTERVAL, OrderType: baseModel.ODER_TYPE_INTERVAL,
OrderType1: shift,
OrderInfo: article.Descr1, OrderInfo: article.Descr1,
PlanResourceGroupId: article.PlanResourceGroupId, PlanResourceGroupId: article.PlanResourceGroupId,
PlanResourceId: entity.WorkLineId, PlanResourceId: entity.WorkLineId,
UsedResourceId: entity.WorkLineId, UsedResourceId: entity.WorkLineId,
PlanQty: float64(entity.Qty),
PlanQty: float64(productQty),
QtyUomId: article.UomId, QtyUomId: article.UomId,
RatePerHourToggle: article.RatePerHourToggle, RatePerHourToggle: article.RatePerHourToggle,
TimePerItemToggle: article.TimePerItemToggle, TimePerItemToggle: article.TimePerItemToggle,
@ -1894,18 +1910,23 @@ func (impl *WorkOrderServiceImplement) CreateLockWorkOrder(user *models.Usertab,
serialOrderLi := make([]model.SerialOrder, 0, entity.Qty) serialOrderLi := make([]model.SerialOrder, 0, entity.Qty)
serialOrderStatusLi := make([]model.SerialOrderStatus, 0, entity.Qty) serialOrderStatusLi := make([]model.SerialOrderStatus, 0, entity.Qty)
custArtMap := make(map[string]string) custArtMap := make(map[string]string)
for artId := range countMap {
art, err := articleDao.SelectOne(artId)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("获取物料数据失败, error:" + err.Error())
}
if art == nil {
_ = session.Rollback()
return grmi.NewBusinessError("未获取到物料数据, artID:" + artId)
if article.ArtSpec1 == baseModel.ART_TYPE_VIRTUAL {
for artId := range countMap {
art, err := articleDao.SelectOne(artId)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("获取物料数据失败, error:" + err.Error())
}
if art == nil {
_ = session.Rollback()
return grmi.NewBusinessError("未获取到物料数据, artID:" + artId)
}
custArtMap[artId] = art.CustArtId
} }
custArtMap[artId] = art.CustArtId
} else {
custArtMap[article.ArtId] = article.CustArtId
} }
// 进行批次工单的时间拆解到序列工单的计划时间上 // 进行批次工单的时间拆解到序列工单的计划时间上
var serialNum string var serialNum string
// 生成序列工单 // 生成序列工单
@ -2234,7 +2255,7 @@ func (impl *WorkOrderServiceImplement) SplitWorkOrder(user *models.Usertab, work
if bomHead == nil { if bomHead == nil {
return grmi.NewBusinessError("不存在对应的物料BOM,artId:" + article.ArtId) return grmi.NewBusinessError("不存在对应的物料BOM,artId:" + article.ArtId)
} }
bomLstLi, err := bomLstDao.Select([]grmi.Predicate{meMeta.BomLst_BomId.NewPredicate(grmi.Equal, bomHead.BomId)}, nil)
bomLstLi, err := bomLstDao.Select([]grmi.Predicate{meMeta.BomLst_BomId.NewPredicate(grmi.Equal, bomHead.BomId)}, []grmi.Field{meMeta.BomLst_Position})
if err != nil { if err != nil {
return grmi.NewBusinessError("获取BOM细则失败, error:" + err.Error()) return grmi.NewBusinessError("获取BOM细则失败, error:" + err.Error())
} }
@ -2249,7 +2270,7 @@ func (impl *WorkOrderServiceImplement) SplitWorkOrder(user *models.Usertab, work
bMap[bomLst.CmatNr] = int(bomLst.CmatQty) bMap[bomLst.CmatNr] = int(bomLst.CmatQty)
count += int(bomLst.CmatQty) count += int(bomLst.CmatQty)
} }
if qty % count != 0 {
if qty%count != 0 {
_ = session.Rollback() _ = session.Rollback()
return grmi.NewBusinessError("因为总成为虚拟总成,拆分工单不符合BOM配置比例关系") return grmi.NewBusinessError("因为总成为虚拟总成,拆分工单不符合BOM配置比例关系")
} }
@ -2414,19 +2435,41 @@ func (impl *WorkOrderServiceImplement) CreateSplitWorkOrder(session *xorm.Sessio
month := int(now.Month()) month := int(now.Month())
yearStr := baseModel.YEAR_MAP[year] yearStr := baseModel.YEAR_MAP[year]
monthStr := baseModel.MONTH_MAP[month] monthStr := baseModel.MONTH_MAP[month]
today := now.Format(grmi.DateOutFormat)
shiftStartStr := today + " 07:00:00"
shiftEndStr := today + " 19:30:00"
shiftStart, err := time.ParseInLocation(grmi.DatetimeOutFormat, shiftStartStr, utils.TimezoneLocation)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("解析班组时间失败, error:" + err.Error())
}
shiftEnd, err := time.ParseInLocation(grmi.DatetimeOutFormat, shiftEndStr, utils.TimezoneLocation)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("解析班组时间失败, error:" + err.Error())
}
var shift string
if now.Before(shiftStart) || now.After(shiftEnd) {
shift = "N"
} else {
shift = "E"
}
article, err := articleDao.SelectOne(artId) article, err := articleDao.SelectOne(artId)
if err != nil { if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("查询物料数据失败, error:" + err.Error()) return grmi.NewBusinessError("查询物料数据失败, error:" + err.Error())
} }
if article == nil { if article == nil {
_ = session.Rollback()
return grmi.NewBusinessError("不存在对应的物料数据") return grmi.NewBusinessError("不存在对应的物料数据")
} }
if article.ArtSpec1 != baseModel.ART_TYPE_FINISHED && article.ArtSpec1 != baseModel.ART_TYPE_VIRTUAL { if article.ArtSpec1 != baseModel.ART_TYPE_FINISHED && article.ArtSpec1 != baseModel.ART_TYPE_VIRTUAL {
_ = session.Rollback()
return grmi.NewBusinessError("传递的物料不是成品或虚拟物料ID") return grmi.NewBusinessError("传递的物料不是成品或虚拟物料ID")
} }
workLineLi, err := artWorkLineDao.Select([]grmi.Predicate{baseMeta.ArtWorkLineLst_ArtId.NewPredicate(grmi.Equal, article.ArtId)}, nil) workLineLi, err := artWorkLineDao.Select([]grmi.Predicate{baseMeta.ArtWorkLineLst_ArtId.NewPredicate(grmi.Equal, article.ArtId)}, nil)
if err != nil { if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("查询物料关联产线失败, error:" + err.Error()) return grmi.NewBusinessError("查询物料关联产线失败, error:" + err.Error())
} }
var workLineExist bool var workLineExist bool
@ -2456,7 +2499,7 @@ func (impl *WorkOrderServiceImplement) CreateSplitWorkOrder(session *xorm.Sessio
if bomHead == nil { if bomHead == nil {
return grmi.NewBusinessError("不存在对应的物料BOM,artId:" + article.ArtId) return grmi.NewBusinessError("不存在对应的物料BOM,artId:" + article.ArtId)
} }
bomLstLi, err := bomLstDao.Select([]grmi.Predicate{meMeta.BomLst_BomId.NewPredicate(grmi.Equal, bomHead.BomId)}, nil)
bomLstLi, err := bomLstDao.Select([]grmi.Predicate{meMeta.BomLst_BomId.NewPredicate(grmi.Equal, bomHead.BomId)}, []grmi.Field{meMeta.BomLst_Position})
if err != nil { if err != nil {
return grmi.NewBusinessError("获取BOM细则失败, error:" + err.Error()) return grmi.NewBusinessError("获取BOM细则失败, error:" + err.Error())
} }
@ -2557,11 +2600,13 @@ func (impl *WorkOrderServiceImplement) CreateSplitWorkOrder(session *xorm.Sessio
if err != nil { if err != nil {
return grmi.NewBusinessError("生成工单流水号失败") return grmi.NewBusinessError("生成工单流水号失败")
} }
workOrder := model.WorkOrder{ workOrder := model.WorkOrder{
WorkOrderId: workOrderId, WorkOrderId: workOrderId,
ArtId: article.ArtId, ArtId: article.ArtId,
CustArtId: article.CustArtId, CustArtId: article.CustArtId,
OrderType: baseModel.ODER_TYPE_INTERVAL, OrderType: baseModel.ODER_TYPE_INTERVAL,
OrderType1: shift,
OrderInfo: article.Descr1, OrderInfo: article.Descr1,
PlanResourceGroupId: article.PlanResourceGroupId, PlanResourceGroupId: article.PlanResourceGroupId,
PlanResourceId: workLineId, PlanResourceId: workLineId,
@ -2695,9 +2740,10 @@ func (impl *WorkOrderServiceImplement) CreateSplitWorkOrder(session *xorm.Sessio
} }
sortNum := serialNum sortNum := serialNum
if workLineId == "X243X247" { if workLineId == "X243X247" {
custArtId := custArtMap[artId] custArtId := custArtMap[artId]
if len(custArtId) < 7 { if len(custArtId) < 7 {
_ = session.Rollback() _ = session.Rollback()
return grmi.NewBusinessError("客户零件号不合规") return grmi.NewBusinessError("客户零件号不合规")
} }
@ -2995,3 +3041,168 @@ func (impl *WorkOrderServiceImplement) SelectUnReleaseWorkOrder(user *models.Use
workOrderLi, err := workOrderDao.SelectUnReleaseWorkOrder(workLineId) workOrderLi, err := workOrderDao.SelectUnReleaseWorkOrder(workLineId)
return workOrderLi, err return workOrderLi, err
} }
/******************************************************************************
*
* @Reference LAPP_LF_MOM_BACKEND/services/om/WorkOrderService.SelectWorkOrderUnCompletedSerialOrder
*
******************************************************************************/
func (impl *WorkOrderServiceImplement) SelectWorkOrderUnCompletedSerialOrder(user *models.Usertab, workOrderId string) (*[]model.VOmSerialorder, error) {
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
dao := dal.NewSerialOrderDAO(session, user.Pid, user.Userid)
return dao.GetWorkOrderUnCompleted(workOrderId)
}
/******************************************************************************
*
* @Reference LAPP_LF_MOM_BACKEND/services/om/WorkOrderService.CancelUnCompletedSerialOrder
*
******************************************************************************/
func (impl *WorkOrderServiceImplement) CancelUnCompletedSerialOrder(user *models.Usertab, serialOrderIdLi []string) error {
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
if err := session.Begin(); err != nil {
return err
}
dao := dal.NewWorkOrderDAO(session, user.Pid, user.Userid)
serialOrderDao := dal.NewSerialOrderDAO(session, user.Pid, user.Userid)
poDao := dal.NewSerialOrderPOLstDAO(session, user.Pid, user.Userid)
serialOrderStatusDao := dal.NewSerialOrderStatusDAO(session, user.Pid, user.Userid)
serialOrderStatusRecDao := dal.NewSerialOrderStatusRecLstDAO(session, user.Pid, user.Userid)
StepDao := dal.NewSerialOrderStepLstDAO(session, user.Pid, user.Userid)
opDetailDao := dal.NewSerialOrderOPDetailDAO(session, user.Pid, user.Userid)
workOrderQtyDao := dal.NewWorkOrderQtyDAO(session, user.Pid, user.Userid)
workOrderStatusDao := dal.NewWorkOrderStatusDAO(session, user.Pid, user.Userid)
workOrderStatusRecDao := dal.NewWorkOrderStatusRecLstDAO(session, user.Pid, user.Userid)
if len(serialOrderIdLi) == 0 {
_ = session.Rollback()
return grmi.NewBusinessError("未获取到工单ID")
}
serialOrderLi, err := serialOrderDao.GetSerialOrderByIDLi(serialOrderIdLi)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("查询序列工单失败, error:" + err.Error())
}
if len(*serialOrderLi) != len(serialOrderIdLi) {
_ = session.Rollback()
return grmi.NewBusinessError("部分序列工单ID错误")
}
var workOrderId string
var status int
for index, serialOrder := range *serialOrderLi {
if workOrderId == "" {
workOrderId = serialOrder.SerialOrder.WorkOrderId
}
status = serialOrder.SerialOrderStatus.Status
if workOrderId != serialOrder.SerialOrder.WorkOrderId {
_ = session.Rollback()
return grmi.NewBusinessError("序列工单不属于同一个批次工单")
}
if index == 0 {
if serialOrder.SerialOrderStatus.Status >= baseModel.ORDER_STATUS_CLOSED || serialOrder.SerialOrderStatus.Status == baseModel.WO_STATUS_INTERRUPT {
_ = session.Rollback()
return grmi.NewBusinessError("序列工单不合规,不允许取消, serialOrderId:" + serialOrder.SerialOrder.SerialOrderId)
} else if serialOrder.SerialOrderStatus.Status == baseModel.ORDER_STATUS_RUNNING {
poDataLi, err := poDao.GetSerialOrderPOData(serialOrder.SerialOrder.SerialOrderId, serialOrder.SerialOrder.UsedResourceId)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("查询工单工序数据失败, error:" + err.Error())
}
for _, poData := range *poDataLi {
if !poData.Process.IsFirstPO {
if poData.SerialOrderPOLst.Status > baseModel.WO_STATUS_RELEASED {
_ = session.Rollback()
return grmi.NewBusinessError("首个工单的非首道序状态不是已下达")
}
} else {
if poData.SerialOrderPOLst.Status != baseModel.ORDER_STATUS_RUNNING && poData.SerialOrderPOLst.Status != baseModel.WO_STATUS_RELEASED {
_ = session.Rollback()
return grmi.NewBusinessError("首个工单的首道序状态不是生产中")
}
}
}
}
} else {
if serialOrder.SerialOrderStatus.Status >= baseModel.WO_STATUS_RUNNING || serialOrder.SerialOrderStatus.Status == baseModel.WO_STATUS_INTERRUPT {
_ = session.Rollback()
return grmi.NewBusinessError("序列工单不合规,不允许取消, serialOrderId:" + serialOrder.SerialOrder.SerialOrderId)
}
}
serialOrderStatus := serialOrder.SerialOrderStatus
serialOrderStatus.Status = baseModel.ORDER_STATUS_CANCELED
err = serialOrderStatusDao.UpdateOne(&serialOrderStatus)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("更新工单状态失败, error:" + err.Error())
}
statusRec := model.SerialOrderStatusRecLst{SerialOrderId: serialOrderStatus.SerialOrderId, PrevStatus: status, Status: baseModel.ORDER_STATUS_CANCELED}
err = serialOrderStatusRecDao.InsertOne(&statusRec)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("插入工单状态变更记录失败, error:" + err.Error())
}
newPo := model.SerialOrderPOLst{Status: baseModel.ORDER_STATUS_CANCELED}
err = poDao.UpdateWhere([]grmi.Predicate{meta.SerialOrderPOLst_SerialOrderId.NewPredicate(grmi.Equal, serialOrder.SerialOrder.SerialOrderId)}, &newPo, meta.SerialOrderPOLst_Status.Name)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("更新工单工序状态失败")
}
newStep := model.SerialOrderStepLst{Status: baseModel.ORDER_STATUS_CANCELED}
err = StepDao.UpdateWhere([]grmi.Predicate{meta.SerialOrderStepLst_SerialOrderId.NewPredicate(grmi.Equal, serialOrder.SerialOrder.SerialOrderId)}, &newStep, meta.SerialOrderStepLst_Status.Name)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("更新工单工步状态失败")
}
newOpDetail := model.SerialOrderOPDetail{Status: baseModel.ORDER_STATUS_CANCELED}
err = opDetailDao.UpdateWhere([]grmi.Predicate{meta.SerialOrderOPDetail_SerialOrderId.NewPredicate(grmi.Equal, serialOrder.SerialOrder.SerialOrderId)}, &newOpDetail, meta.SerialOrderOPDetail_Status.Name)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("更新工单工步详细操作状态失败")
}
}
workOrder, err := dao.SelectOneJoin(workOrderId)
if workOrder.WorkOrderStatus.Status < baseModel.WO_STATUS_RELEASED || workOrder.WorkOrderStatus.Status >= baseModel.ORDER_STATUS_CLOSED {
_ = session.Rollback()
return grmi.NewBusinessError("序列工单状态不符合条件")
}
if workOrder == nil {
_ = session.Rollback()
return grmi.NewBusinessError("未查询到批次工单, workOrderId:" + workOrderId)
}
workOrderStatus := workOrder.WorkOrderStatus.Status
cancelQty := len(serialOrderIdLi)
workOrder.WorkOrderQty.ActQty3 += float64(cancelQty)
workOrder.ActQty += float64(cancelQty)
if int(workOrder.WorkOrderQty.ActQty) == int(workOrder.WorkOrderQty.PlanQty) {
if workOrder.WorkOrderQty.ActQty3 == workOrder.WorkOrderQty.PlanQty {
workOrderStatus = baseModel.ORDER_STATUS_CANCELED
} else {
workOrderStatus = baseModel.WO_STATUS_FINISHED
}
}
err = workOrderQtyDao.UpdateOne(&workOrder.WorkOrderQty)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("更新批次工单数量失败, error:" + err.Error())
}
if workOrder.WorkOrderStatus.Status != workOrderStatus {
statusRec := model.WorkOrderStatusRecLst{WorkOrderId: workOrder.WorkOrder.WorkOrderId, PrevStatus: workOrder.WorkOrderStatus.Status, Status: workOrderStatus}
err = workOrderStatusRecDao.InsertOne(&statusRec)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("插入批次工单状态变更记录失败, error:" + err.Error())
}
workOrder.WorkOrderStatus.Status = workOrderStatus
err = workOrderStatusDao.UpdateOne(&workOrder.WorkOrderStatus)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("更新批次工单状态失败, error:" + err.Error())
}
}
_ = session.Commit()
return nil
}

+ 22
- 6
services/schedule/SchedTask.Ctrl.go View File

@ -345,11 +345,27 @@ func (tasksrv *TaskSrv) ReleaseSerialOrder(relQty int, releaseId string) (err er
// 写入打印条码的逻辑 // 写入打印条码的逻辑
snr := new(models.Snrtab) snr := new(models.Snrtab)
snr.Finr = common.PlantNr snr.Finr = common.PlantNr
printID, err := snr.GetNextSnrWithSession(session, "Printer")
if err != nil {
innerLog.Error("ReleaseSerialOrder 更新工单工艺详细步骤状态失败, error:"+err.Error()+" serialOrderId:"+serialOrderStatus.SerialOrderId, "release id:"+releaseId)
_ = session.Rollback()
return grmi.NewBusinessError("获取打印条码流水号失败, error:" + err.Error())
var next bool
var printID string
for !next {
printID, err = snr.GetNextSnrWithSession(session, "Printer")
if err != nil {
innerLog.Error("ReleaseSerialOrder 更新工单工艺详细步骤状态失败, error:"+err.Error()+" serialOrderId:"+serialOrderStatus.SerialOrderId, "release id:"+releaseId)
_ = session.Rollback()
return grmi.NewBusinessError("获取打印条码流水号失败, error:" + err.Error())
}
existPrintHead, err := printHeadDao.SelectOne(printID)
if err != nil {
innerLog.Error("ReleaseSerialOrder 获取失败, error:"+err.Error()+" serialOrderId:"+serialOrderStatus.SerialOrderId, "release id:"+releaseId)
_ = session.Rollback()
return grmi.NewBusinessError("获取打印条码流水号失败, error:" + err.Error())
}
if existPrintHead != nil {
continue
} else {
next = true
break
}
} }
article, exist := artMap[serialOrder.ArtId] article, exist := artMap[serialOrder.ArtId]
if !exist { if !exist {
@ -435,7 +451,7 @@ func (tasksrv *TaskSrv) ReleaseSerialOrder(relQty int, releaseId string) (err er
PrintHeadId: printID, PrintHeadId: printID,
Pos: 6, Pos: 6,
VarName: "$shift$", VarName: "$shift$",
VarValue: "E",
VarValue: serialOrder.OrderType1,
} }
pd7 := baseModel.PrintDetail{ pd7 := baseModel.PrintDetail{
PrintHeadId: printID, PrintHeadId: printID,


+ 88
- 0
web/controllers/om/WorkOrder.rest.go View File

@ -693,4 +693,92 @@ func RegisterSelectUnReleaseWorkOrder(party router.Party, path string, method fu
} }
supports.Ok(ctx, supports.OptionSuccess, result) supports.Ok(ctx, supports.OptionSuccess, result)
}) })
}
/******************************************************************************
*
* @Function Name : RegisterGetUnCompletedSerialOrder
*-----------------------------------------------------------------------------
*
* @Description : 为一个查找状态>= 26 <80的serialOrder的方法注册路由
*
* @Function Parameters : 路由分组
*
* @Function Parameters : 路径
*
* @Function Parameters : 实际处理请求的方法
*
* @Author : zhangxin
*
* @Date : 2021-09-26
*
******************************************************************************/
func RegisterGetUnCompletedSerialOrder(party router.Party, path string, method func(*models.Usertab, string) (*[]model.VOmSerialorder, error)) {
party.Get(path, func(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
workOrderId := ctx.URLParam("workOrderId")
if workOrderId == "" {
supports.Error(ctx, iris.StatusBadRequest, "未获取到workOrderId", nil)
return
}
result, err := method(user, workOrderId)
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 : RegisterGetUnCompletedSerialOrder
*-----------------------------------------------------------------------------
*
* @Description : 为一个取消状态>= 26 <80的serialOrder的方法注册路由
*
* @Function Parameters : 路由分组
*
* @Function Parameters : 路径
*
* @Function Parameters : 实际处理请求的方法
*
* @Author : zhangxin
*
* @Date : 2021-09-26
*
******************************************************************************/
func RegisterCancelUnCompletedSerialOrder(party router.Party, path string, method func(*models.Usertab, []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
}
var serialOrderIdLi []string
if err := ctx.ReadJSON(&serialOrderIdLi); err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
err := method(user, serialOrderIdLi)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, nil)
})
} }

+ 4
- 0
web/controllers/om/om.go View File

@ -161,6 +161,10 @@ func RegisterRoutes() {
RegisterSortWorkOrder(workorder, "/sort", serviceOfWorkOrder.SortWorkOrder) RegisterSortWorkOrder(workorder, "/sort", serviceOfWorkOrder.SortWorkOrder)
// 获取所有的未派工work order // 获取所有的未派工work order
RegisterSelectUnReleaseWorkOrder(workorder, "/getunrelease", serviceOfWorkOrder.SelectUnReleaseWorkOrder) RegisterSelectUnReleaseWorkOrder(workorder, "/getunrelease", serviceOfWorkOrder.SelectUnReleaseWorkOrder)
// 获取所有的>= 26 <80 serialOrder
RegisterGetUnCompletedSerialOrder(workorder, "/getuncomplete", serviceOfWorkOrder.SelectWorkOrderUnCompletedSerialOrder)
// 取消>= 26 <80 serialOrder
RegisterCancelUnCompletedSerialOrder(workorder, "/canceluncomplete", serviceOfWorkOrder.CancelUnCompletedSerialOrder)
// WorkOrderStatus的路由组 // WorkOrderStatus的路由组
workorderstatus := party.Party("/workorderstatus") workorderstatus := party.Party("/workorderstatus")


Loading…
Cancel
Save