// 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 }