// Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
|
|
package models
|
|
|
|
import (
|
|
"errors"
|
|
"leit.com/LAPP_GAAS_GFrame/db"
|
|
"leit.com/LAPP_GAAS_GFrame/schedule"
|
|
"time"
|
|
"xorm.io/core"
|
|
)
|
|
|
|
type OmSerialorder struct {
|
|
Plantnr int `json:"PlantNr" xorm:"not null pk INT(4)"`
|
|
Workorderid string `json:"WorkOrderId" xorm:"not null pk NVARCHAR(40)"`
|
|
Serialorderid string `json:"SerialOrderId" xorm:"not null pk NVARCHAR(40)"`
|
|
Artid string `json:"ArtId" xorm:"not null NVARCHAR(80)"`
|
|
Ordertype string `json:"OrderType" xorm:"not null NVARCHAR(40)"`
|
|
Ordertype1 string `json:"OrderType1" xorm:"not null NVARCHAR(40)"`
|
|
Ordertype2 string `json:"OrderType2" xorm:"not null NVARCHAR(40)"`
|
|
Planresourceid string `json:"PlanResourceId" xorm:"not null NVARCHAR(80)"`
|
|
Usedresourceid string `json:"UsedResourceId" xorm:"not null NVARCHAR(80)"`
|
|
Planqty float32 `json:"PlanQty" xorm:"not null FLOAT(8)"`
|
|
Optimeperitem float32 `json:"OpTimePerItem" xorm:"FLOAT(8)"`
|
|
Timeuomid string `json:"QtyUomId" xorm:"not null NVARCHAR(20)"`
|
|
Planstartdate time.Time `json:"PlanStartDate" xorm:"not null DATE(3)"`
|
|
Planenddate time.Time `json:"PlanEndDate" xorm:"not null DATE(3)"`
|
|
Setupstarttime time.Time `json:"SetupStartTime" xorm:"not null DATETIME(8)"`
|
|
Setupendtime time.Time `json:"SetupEndTime" xorm:"not null DATETIME(8)"`
|
|
Planstarttime time.Time `json:"PlanStartTime" xorm:"not null DATETIME(8)"`
|
|
Planendtime time.Time `json:"PlanEndTime" xorm:"not null DATETIME(8)"`
|
|
Actstarttime time.Time `json:"ActStartTime" xorm:"not null DATETIME(8)"`
|
|
Actendtime time.Time `json:"ActEndTime" xorm:"not null DATETIME(8)"`
|
|
Projectid string `json:"ProjectId" xorm:"not null NVARCHAR(80)"`
|
|
Lastmodify time.Time `json:"LastModify" xorm:"DATETIME(8)"`
|
|
Lastuser string `json:"LastUser" xorm:"not null NVARCHAR(40)"`
|
|
Createtime time.Time `json:"CreateTime" xorm:"DATETIME(8)"`
|
|
Serstatustab OmSerialorderstatus `json:"ProdStatusTab" xorm:"-"`
|
|
}
|
|
|
|
// 生产订单和它的状态的综合视图
|
|
type VOmSerialorder struct {
|
|
OmSerialorder `xorm:"extends"`
|
|
OmSerialorderstatus `xorm:"extends"`
|
|
}
|
|
|
|
/******数据表名******/
|
|
func (t *OmSerialorder) TableName() string {
|
|
return "OmSerialOrder"
|
|
}
|
|
|
|
/******************************************************************************
|
|
*
|
|
* @Function Name :
|
|
*-----------------------------------------------------------------------------
|
|
*
|
|
* @Description : 数据添加
|
|
*
|
|
* @Function Parameters:
|
|
*
|
|
* @Return Value :
|
|
*
|
|
* @Author : Lou Wenzhi
|
|
*
|
|
* @Date : 2021/3/6 8:47
|
|
*
|
|
******************************************************************************/
|
|
func (t *OmSerialorder) Add() error {
|
|
e := db.Eloquent.Master()
|
|
serordtab := new(OmSerialorder)
|
|
|
|
/**主键:****/
|
|
affw, err := e.Table(t.TableName()).ID(core.PK{t.Plantnr, t.Workorderid, t.Serialorderid}).Count(serordtab)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if affw > 0 {
|
|
return errors.New("数据已经存在!")
|
|
}
|
|
_, err = e.Table(t.TableName()).Insert(t)
|
|
|
|
// 写入订单状态
|
|
if err = serordtab.Serstatustab.Add(); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
/******************************************************************************
|
|
*
|
|
* @Function Name :
|
|
*-----------------------------------------------------------------------------
|
|
*
|
|
* @Description : 数据删除
|
|
*
|
|
* @Function Parameters:
|
|
*
|
|
* @Return Value :
|
|
*
|
|
* @Author : Lou Wenzhi
|
|
*
|
|
* @Date : 2021/3/6 8:47
|
|
*
|
|
******************************************************************************/
|
|
func (t *OmSerialorder) Del() error {
|
|
e := db.Eloquent.Master()
|
|
|
|
/**删除订单****/
|
|
_, err := e.ID(core.PK{t.Plantnr, t.Workorderid, t.Serialorderid}).Delete(&OmSerialorder{})
|
|
if err != nil {
|
|
return errors.New("删除失败!")
|
|
}
|
|
|
|
// 删除订单状态
|
|
if err = t.Serstatustab.Del(); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
/******************************************************************************
|
|
*
|
|
* @Function Name :
|
|
*-----------------------------------------------------------------------------
|
|
*
|
|
* @Description : 数据修改
|
|
*
|
|
* @Function Parameters:
|
|
*
|
|
* @Return Value :
|
|
*
|
|
* @Author : Lou Wenzhi
|
|
*
|
|
* @Date : 2021/3/6 8:47
|
|
*
|
|
******************************************************************************/
|
|
func (t *OmSerialorder) Update() error {
|
|
e := db.Eloquent.Master()
|
|
/**主键:****/
|
|
_, err := e.ID(core.PK{t.Plantnr, t.Workorderid, t.Serialorderid}).Update(t)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
/******************************************************************************
|
|
*
|
|
* @Function Name :
|
|
*-----------------------------------------------------------------------------
|
|
*
|
|
* @Description : 数据查找
|
|
*
|
|
* @Function Parameters:
|
|
*
|
|
* @Return Value :
|
|
*
|
|
* @Author : Lou Wenzhi
|
|
*
|
|
* @Date : 2021/3/6 8:47
|
|
*
|
|
******************************************************************************/
|
|
func (t *OmSerialorder) SelectOne() (data OmSerialorder, err error) {
|
|
e := db.Eloquent.Master()
|
|
|
|
/**主键:****/
|
|
_, err = e.ID(core.PK{t.Plantnr, t.Workorderid}).Get(&data)
|
|
if err != nil {
|
|
return
|
|
}
|
|
// 获取订单生产状态
|
|
_, err = e.ID(core.PK{t.Plantnr, t.Workorderid}).Get(&data.Serstatustab)
|
|
if err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
/******************************************************************************
|
|
*
|
|
* @Function Name :
|
|
*-----------------------------------------------------------------------------
|
|
*
|
|
* @Description : 数据查找
|
|
*
|
|
* @Function Parameters:
|
|
*
|
|
* @Return Value :
|
|
*
|
|
* @Author : Lou Wenzhi
|
|
*
|
|
* @Date : 2021/3/6 8:47
|
|
*
|
|
******************************************************************************/
|
|
func (t *OmSerialorder) SelectByBatchOrder() (datalst []OmSerialorder, err error) {
|
|
var (
|
|
i int
|
|
data OmSerialorder
|
|
vdatalst []VOmSerialorder
|
|
)
|
|
|
|
e := db.Eloquent.Master()
|
|
if err =e.Table("OmSerialorder").Join("INNER","OmSerialorderstatus",
|
|
"OmSerialorderstatus.PlantNr = OmSerialorder.PlantNr and OmSerialorderstatus.Prodorderid = OmSerialorder.Prodorderid").Where("OmSerialorder.PlantNr = ? and OmSerialorder.Prodorderid = ?",
|
|
t.Plantnr, t.Workorderid).OrderBy("OmSerialorder.Serialorderid").Find(&vdatalst); err != nil {
|
|
return
|
|
}
|
|
datalst = []OmSerialorder{}
|
|
for i = 0; i < len(vdatalst); i++ {
|
|
data = OmSerialorder{}
|
|
data = vdatalst[i].OmSerialorder
|
|
data.Serstatustab = vdatalst[i].OmSerialorderstatus
|
|
datalst = append(datalst, data)
|
|
}
|
|
return
|
|
}
|
|
|
|
/******************************************************************************
|
|
*
|
|
* @Function Name : SelectLineWIP
|
|
*-----------------------------------------------------------------------------
|
|
*
|
|
* @Description : 查找指定产线上的WIP
|
|
*
|
|
* @Function Parameters:
|
|
*
|
|
* @Return Value :
|
|
*
|
|
* @Author : Leo Xue
|
|
*
|
|
* @Date : 2021/3/6 8:47
|
|
*
|
|
******************************************************************************/
|
|
func (t *OmSerialorder) GetLineWIPQty(lineid string) (wipqty int, err error) {
|
|
var (
|
|
totalrow int64
|
|
datalst []VOmSerialorder
|
|
)
|
|
|
|
e := db.Eloquent.Master()
|
|
wipqty = 0
|
|
if totalrow, err = e.Table(t.TableName()).Join("INNER","OmSerialOrderStatus",
|
|
"OmSerialOrderStatus.PlantNr = OmSerialOrder.PlantNr and OmSerialOrderStatus.SerialOrderId = OmSerialOrder.SerialOrderId").Where("OmSerialOrderStatus.PlantNr = ? and OmSerialOrderStatus.Status >= ? and OmSerialOrderStatus.Status < ?", t.Plantnr, schedule.WO_STATUS_RELEASED, schedule.WO_STATUS_FINISHED).Count(&datalst); err != nil{
|
|
return
|
|
}
|
|
wipqty = int(totalrow)
|
|
return
|
|
}
|
|
|
|
/******************************************************************************
|
|
*
|
|
* @Function Name : SelectLineBatchOrderUnReleasedTasks
|
|
*-----------------------------------------------------------------------------
|
|
*
|
|
* @Description : 查找指定产线和批次订单的未下达的序列订单
|
|
*
|
|
* @Function Parameters:
|
|
*
|
|
* @Return Value :
|
|
*
|
|
* @Author : Leo Xue
|
|
*
|
|
* @Date : 2021/3/6 8:47
|
|
*
|
|
******************************************************************************/
|
|
func (t *OmSerialorder) SelectLineBatchOrderUnReleasedTasks(lineid, batchorderid string) (datalst []VOmSerialorder, err error) {
|
|
e := db.Eloquent.Master()
|
|
|
|
e = e
|
|
return
|
|
}
|
|
|