// Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved. package models import ( "errors" "leit.com/aps_engine/common" "leit.com/aps_engine/db" "time" "xorm.io/core" ) type OmWorkorder struct { Plantnr int `json:"PlantNr" xorm:"not null pk INT(4)"` Workorderid string `json:"WorkOrderId" xorm:"not null pk NVARCHAR(80)"` Artid string `json:"ArtId" xorm:"not null NVARCHAR(80)"` Custartid string `json:"CustArtId" xorm:"not null NVARCHAR(80)"` Routetemplateid string `json:"RouteTemplateId" 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)"` Orderinfo string `json:"OrderInfo" xorm:"not null NVARCHAR(200)"` Custorderid string `json:"CustOrderId" xorm:"not null NVARCHAR(80)"` Erporderid string `json:"ErpOrderId" xorm:"not null NVARCHAR(80)"` Parentorderid string `json:"ParentOrderId" xorm:"not null NVARCHAR(80)"` Priority int `json:"Priority" xorm:"not null INT(4)"` Planresourcegroupid string `json:"PlanResourceGroupId" xorm:"not null NVARCHAR(80)"` 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)"` Qtyuomid string `json:"QtyUomId" xorm:"not null NVARCHAR(80)"` Rateperhourtoggle int `json:"RatePerHourToggle" xorm:"not null BIT(1)"` Timeperitemtoggle int `json:"TimePerItemToggle" xorm:"not null BIT(1)"` Timeperbatchtoggle int `json:"TimePerBatchToggle" xorm:"not null BIT(1)"` Batchtimefieldtoggle int `json:"BatchTimeFieldToggle" xorm:"not null BIT(1)"` Optimeperitem float32 `json:"OpTimePerItem" xorm:"FLOAT(8)"` Batchtime float32 `json:"BatchTime" xorm:"FLOAT(8)"` Quantityperhour float32 `json:"QuantityPerHour" xorm:"not null FLOAT(8)"` Batchquantity float32 `json:"BatchQuantity" xorm:"not null FLOAT(8)"` Timeuomid string `json:"TimeUomId" xorm:"not null NVARCHAR(80)"` Batchingmethod int `json:"BatchingMethod" xorm:"not null INT(4)"` 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)"` Customerid string `json:"CustomerId" xorm:"not null NVARCHAR(80)"` Customername string `json:"CustomerName" xorm:"not null NVARCHAR(200)"` 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)"` Operationlst []OmWooperation `xorm:"-"` } // 客户订单和它的版本头综合视图 type VWorkorder struct { OmWorkorder `xorm:"extends"` OmWorkorderstatus `xorm:"extends"` OmWorkorderqty `xorm:"extends"` } /******数据表名******/ func (t *OmWorkorder) TableName() string { return "OmWorkorder" } /****************************************************************************** * * @Function Name : *----------------------------------------------------------------------------- * * @Description : 数据添加 * * @Function Parameters: * * @Return Value : * * @Author : Lou Wenzhi * * @Date : 2021/3/6 8:47 * ******************************************************************************/ func (t *OmWorkorder) Add() error { e := db.Eloquent.Master() count := new(OmWorkorder) /**主键:****/ affw, err := e.Table(t.TableName()).ID(core.PK{t.Plantnr, t.Workorderid}).Count(count) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = e.Table(t.TableName()).Insert(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 *OmWorkorder) Del() (err error) { e := db.Eloquent.Master() _, err = e.ID(core.PK{t.Plantnr, t.Workorderid}).Delete(&OmWorkorder{}) if err != nil { return } return nil } /****************************************************************************** * * @Function Name : *----------------------------------------------------------------------------- * * @Description : 数据修改 * * @Function Parameters: * * @Return Value : * * @Author : Lou Wenzhi * * @Date : 2021/3/6 8:47 * ******************************************************************************/ func (t *OmWorkorder) Update() error { e := db.Eloquent.Master() _, err := e.ID(core.PK{t.Plantnr, t.Workorderid}).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 *OmWorkorder) SelectOne() (data OmWorkorder, err error) { e := db.Eloquent.Master() _, err = e.ID(core.PK{t.Plantnr, t.Workorderid}).Get(&data) if err != nil { return data, err } return data, nil } /****************************************************************************** * * @Function Name : *----------------------------------------------------------------------------- * * @Description : 查找单个工单的完整数据 * * @Function Parameters: * * @Return Value : * * @Author : LEO XUE * * @Date : 2021/3/6 8:47 * ******************************************************************************/ func (t *OmWorkorder) SelectOneFullData() (vdata VWorkorder, err error) { var ( j int vdatalst []VWorkorder ) e := db.Eloquent.Master() query := e.Table(t.TableName()) query = query.Join("INNER", "OmWorkorderstatus", "OmWorkorder.PlantNr = OmWorkorderstatus.PlantNr and OmWorkorder.WorkOrderId = OmWorkorderstatus.WorkOrderId") query = query.Join("INNER", "OmWorkorderqty", "OmWorkorder.PlantNr = OmWorkorderqty.PlantNr and OmWorkorder.WorkOrderId = OmWorkorderqty.WorkOrderId") query = query.Where("OmWorkorder.PlantNr = ? and OmWorkorder.WorkOrderId = ?", t.Plantnr, t.Workorderid) if err = query.Find(&vdatalst); err != nil { return } if len(vdatalst) > 0 { vdata = vdatalst[0] } if err = e.Table("OmWooperation").Where("PlantNr = ? and WorkOrderId = ?",t.Plantnr, t.Workorderid).Asc("OperationNr", "SplitNr").Find(&vdata.OmWorkorder.Operationlst); err != nil{ return } for j = 0; j < len(vdata.OmWorkorder.Operationlst); j++ { if vdata.OmWorkorder.Operationlst[j], err = vdata.OmWorkorder.Operationlst[j].SelectOne(); err != nil { return } } return } /****************************************************************************** * * @Function Name : *----------------------------------------------------------------------------- * * @Description : 查找所有未完成的工单数据,包括它的状态和数量数据 * * @Function Parameters: * * @Return Value : * * @Author : LEO XUE * * @Date : 2021/5/10 8:47 * ******************************************************************************/ func (t *OmWorkorder) SelectAllUnfinishedFullData() (vdatalst []VWorkorder, err error) { var ( i,j int ) e := db.Eloquent.Master() query := e.Table(t.TableName()) query = query.Join("INNER", "OmWorkorderstatus", "OmWorkorder.PlantNr = OmWorkorderstatus.PlantNr and OmWorkorder.WorkOrderId = OmWorkorderstatus.WorkOrderId") query = query.Join("INNER", "OmWorkorderqty", "OmWorkorder.PlantNr = OmWorkorderqty.PlantNr and OmWorkorder.WorkOrderId = OmWorkorderqty.WorkOrderId") query = query.Where("OmWorkorder.PlantNr = ? and OmWorkorder.status < ?", t.Plantnr, common.WO_STATUS_FINISHED).Desc("OmWorkorderstatus.Status", "OmWorkorder.PlanStartTime") if err = query.Find(&vdatalst); err != nil { return } // 获取订单工序数据 for i = 0; i < len(vdatalst); i++ { if err = e.Table("OmWooperation").Where("PlantNr = ? and WorkOrderId = ?",t.Plantnr, t.Workorderid).Asc("OperationNr", "SplitNr").Find(&vdatalst[i].OmWorkorder.Operationlst); err != nil{ return } for j = 0; j < len(vdatalst[i].OmWorkorder.Operationlst); j++ { if vdatalst[i].OmWorkorder.Operationlst[j], err = vdatalst[i].OmWorkorder.Operationlst[j].SelectOne(); err != nil { return } } } return }