diff --git a/conf/app.go b/conf/app.go index cd1d914..d511bd7 100644 --- a/conf/app.go +++ b/conf/app.go @@ -43,12 +43,12 @@ var AppConfig AppConf = AppConf{ TimeFormat: "Mon, 01 Jan 2006 15:04:05 GMT", Charset: "UTF-8", Other: Other{ - IgnoreURLs: []string{"/", "/user/login", "/user/plants", "/admin/tabnames/download", "/user/getimg", "/admin/api/screw/receive", "/admin/log/artdemandhead/selectlastmodify", "/admin/log/artdemandlst/synchronous", "/admin/log/artdemandlstcache/synchronouscache", "/admin/report/filterdatainfo/display", "/admin/ws", "/admin/pln/custorder/dashboard"}, //免token验证路径 + IgnoreURLs: []string{"/", "/user/login", "/user/plants", "/admin/tabnames/download", "/user/getimg", "/admin/api/screw/receive", "/admin/log/artdemandhead/selectlastmodify", "/admin/log/artdemandlst/synchronous", "/admin/log/artdemandlstcache/synchronouscache", "/admin/report/filterdatainfo/display", "/admin/ws", "/admin/pln/custorder/dashboard", "/admin/base/workline/virtual"}, //免token验证路径 JWTTimeout: 72000, LogLevel: "debug", Secret: "lapp_gaas_gframe", }, - PublicRute: []string{"/sysMenu", "/user/getuserinfo", "/user/pwd", "/user/avatar", "/user/profile", "/user/getimg", "/admin/tabnames/list", "/admin/stdeftab/selectarr", "/admin/stdeftab/selectall", "/admin/log/artdemandhead/selectlastmodify", "/admin/log/artdemandlst/synchronous", "/admin/log/artdemandlstcache/synchronouscache", "/admin/pln/custorder/dashboard"}, //免权限检查路径 + PublicRute: []string{"/sysMenu", "/user/getuserinfo", "/user/pwd", "/user/avatar", "/user/profile", "/user/getimg", "/admin/tabnames/list", "/admin/stdeftab/selectarr", "/admin/stdeftab/selectall", "/admin/log/artdemandhead/selectlastmodify", "/admin/log/artdemandlst/synchronous", "/admin/log/artdemandlstcache/synchronouscache", "/admin/pln/custorder/dashboard", "/admin/base/workline/virtual"}, //免权限检查路径 } var ( diff --git a/dao/pln/CustOrder.dao.go b/dao/pln/CustOrder.dao.go index 87970ef..d9c6c38 100644 --- a/dao/pln/CustOrder.dao.go +++ b/dao/pln/CustOrder.dao.go @@ -392,7 +392,7 @@ type CustOrderDAO interface { * @Date : 2022-03-22 * ******************************************************************************/ - SelectProduceOrder(start, end string) ([]model.CustOrderData, error) + SelectProduceOrder(start, end, workLineId string) ([]model.CustOrderData, error) /****************************************************************************** * * @Function Name : SelectCrossDayCustOrder @@ -454,6 +454,25 @@ type CustOrderDAO interface { * ******************************************************************************/ JoinSelect(predicates []grmi.Predicate, orderByFields []grmi.Field) ([]model.CustOrder, error) + /****************************************************************************** + * + * @Function Name : SelectRunningCustOrder + *----------------------------------------------------------------------------- + * + * @Description : 通过虚拟产线查询正在生产的客户订单 + * + * @Function Parameters : 产线id + * + * @Return Value : 查询结果 + * + * @Return Value : 执行时发生的错误 + * + * @Author : zhangxin + * + * @Date : 2022-04-19 + * + ******************************************************************************/ + SelectRunningCustOrder(workLineId string) ([]model.CustOrder, error) } /****************************************************************************** diff --git a/dao/pln/implments/CustOrder.dao.impl.go b/dao/pln/implments/CustOrder.dao.impl.go index c21533e..372e862 100644 --- a/dao/pln/implments/CustOrder.dao.impl.go +++ b/dao/pln/implments/CustOrder.dao.impl.go @@ -799,10 +799,11 @@ func (impl *CustOrderDAOImplement) SelectCustOrderByPlan(start, end string) ([]m } -func (impl *CustOrderDAOImplement) SelectProduceOrder(start, end string) ([]model.CustOrderData, error) { - parameters := []interface{}{impl.plantNr, start, end, "1900-01-01 00:00:00", end, common.WO_STATUS_RELEASED, common.WO_STATUS_CANCELED} - where := fmt.Sprintf("%s = ? and ( (%s >= ? and %s < ?) or (%s = ? and %s < ?) ) and %s > ? and %s != ?", +func (impl *CustOrderDAOImplement) SelectProduceOrder(start, end, workLineId string) ([]model.CustOrderData, error) { + parameters := []interface{}{impl.plantNr, workLineId, start, end, "1900-01-01 00:00:00", end, common.WO_STATUS_RELEASED, common.WO_STATUS_CANCELED} + where := fmt.Sprintf("%s = ? and %s = ? and ( (%s >= ? and %s < ?) or (%s = ? and %s < ?) ) and %s > ? and %s != ?", meta.CustOrder_PlantNr.ColumnName, + meta.CustOrder_WorkLineId.ColumnName, meta.CustOrder_ActEndTime.ColumnName, meta.CustOrder_ActEndTime.ColumnName, meta.CustOrder_ActEndTime.ColumnName, @@ -853,3 +854,20 @@ func (impl *CustOrderDAOImplement) SelectCurrentDayCustOrder(start, end string) return data, err } +// SelectRunningCustOrder 通过虚拟产线查询正在生产的客户订单 +func (impl *CustOrderDAOImplement) SelectRunningCustOrder(workLineId string) ([]model.CustOrder, error) { + parameters := []interface{}{impl.plantNr, workLineId, common.WO_STATUS_RUNNING} + statusCondition := fmt.Sprintf("%s = %s and %s = %s", + meta.CustOrder_PlantNr.ColumnName, + meta.CustOrderStatus_PlantNr.ColumnName, + meta.CustOrder_CustOrderId.ColumnName, + meta.CustOrderStatus_CustOrderId.ColumnName) + where := fmt.Sprintf("%s = ? and %s = ? and %s = ?", + meta.CustOrder_PlantNr.ColumnName, + meta.CustOrder_WorkLineId.ColumnName, + meta.CustOrderStatus_Status.ColumnName) + session := impl.session.Table(impl.meta.TableName).Join("LEFT", meta.CustOrderStatus.TableName, statusCondition) + data := make([]model.CustOrder, 0) + err := session.Where(where, parameters...).Desc(meta.CustOrderStatus_LastModify.SortColumnName).Find(&data) + return data, err +} \ No newline at end of file diff --git a/services/base/WorkLine.service.go b/services/base/WorkLine.service.go index e89d0d6..88725e6 100644 --- a/services/base/WorkLine.service.go +++ b/services/base/WorkLine.service.go @@ -282,6 +282,25 @@ type WorkLineService interface { * ******************************************************************************/ SaveWorkLineScheduler(user *global.User, data schedule.SchedulerData) error + /****************************************************************************** + * + * @Function Name : SelectVirtualWorkLine + *----------------------------------------------------------------------------- + * + * @Description : 查询虚拟产线 + * + * @Function Parameters : 当前访问人员信息 + * + * @Return Value : 产线列表 + * + * @Return Value : 执行时发生的错误 + * + * @Author : zhangxin + * + * @Date : 2021-04-19 + * + ******************************************************************************/ + SelectVirtualWorkLine(user *global.User) ([]model.WorkLine, error) } /****************************************************************************** diff --git a/services/base/implments/WorkLine.service.impl.go b/services/base/implments/WorkLine.service.impl.go index 53cf8d0..10a2573 100644 --- a/services/base/implments/WorkLine.service.impl.go +++ b/services/base/implments/WorkLine.service.impl.go @@ -1097,3 +1097,22 @@ func (impl *WorkLineServiceImplement) SaveWorkLineScheduler(user *global.User, d _ = session.Commit() return nil } + +/****************************************************************************** + * + * @Reference LAPP_ACURA_MOM_BACKEND/services/base/WorkLineService.SelectVirtualWorkLine + * + ******************************************************************************/ +func (impl *WorkLineServiceImplement) SelectVirtualWorkLine(user *global.User) ([]model.WorkLine, error) { + + grmi.Log(user, "/services/base/implments/WorkLine.service.impl.go", "SelectVirtualWorkLine", "查询虚拟产线") + + engine := db.Eloquent.Master() + session := engine.NewSession() + defer session.Close() + dao := dal.NewWorkLineDAO(session, user.PlantNr, user.UserId) + workLineLi, err := dao.Select([]grmi.Predicate{ + meta.WorkLine_GroupType.NewPredicate(grmi.Equal, model.WORK_LINE_TYPE_GROUP), + }, []grmi.Field{meta.WorkLine_WorkLineid}) + return workLineLi, err +} \ No newline at end of file diff --git a/services/pln/CustOrder.service.go b/services/pln/CustOrder.service.go index f8f2772..471921e 100644 --- a/services/pln/CustOrder.service.go +++ b/services/pln/CustOrder.service.go @@ -365,7 +365,7 @@ type CustOrderService interface { * @Date : 2021-12-14 * ******************************************************************************/ - Dashboard(user *global.User) (interface{}, error) + Dashboard(user *global.User, workLineId string) (interface{}, error) /****************************************************************************** * * @Function Name : SelectCanCancelQty diff --git a/services/pln/implments/CustOrder.service.impl.go b/services/pln/implments/CustOrder.service.impl.go index afd9b96..e289955 100644 --- a/services/pln/implments/CustOrder.service.impl.go +++ b/services/pln/implments/CustOrder.service.impl.go @@ -28,6 +28,7 @@ import ( "LAPP_ACURA_MOM_BACKEND/utils" "container/list" "errors" + "fmt" "github.com/360EntSecGroup-Skylar/excelize/v2" uuid "github.com/iris-contrib/go.uuid" "strconv" @@ -2250,7 +2251,7 @@ func (impl *CustOrderServiceImplement) PageSelect(user *global.User, urlParamete * @Reference LAPP_ACURA_MOM_BACKEND/services/pln/CustOrderService.Select * ******************************************************************************/ -func (impl *CustOrderServiceImplement) Dashboard(user *global.User) (interface{}, error) { +func (impl *CustOrderServiceImplement) Dashboard(user *global.User, workLineId string) (interface{}, error) { grmi.Log(user, "/services/pln/implments/CustOrder.service.impl.go", "SelectCustOrder", "查询CustOrder") engine := db.Eloquent.Master() @@ -2271,7 +2272,6 @@ func (impl *CustOrderServiceImplement) Dashboard(user *global.User) (interface{} var personNum int //当班人数 var timeBeat float64 //节拍 var days int //展示天数 - var workLineId string //产线 var ippmTarge int //IPPM for _, v := range dashlist { if v.ParamName == "TimeBeat" { @@ -2521,13 +2521,13 @@ func (impl *CustOrderServiceImplement) Dashboard(user *global.User) (interface{} wg.Add(6) //图例001 go func() { - DashboardData.DashboardDataPic1, err1 = impl.SelectPic1(user, dayModel) + DashboardData.DashboardDataPic1, err1 = impl.SelectPic1(user, dayModel, workLineId) wg.Done() // 操作完成,减少一个计数 }() //图例002 go func() { - DashboardData.DashboardDataPic2, err2 = impl.SelectDefectNumber(user, days) + DashboardData.DashboardDataPic2, err2 = impl.SelectDefectNumber(user, days, workLineId) wg.Done() // 操作完成,减少一个计数 }() @@ -2861,7 +2861,7 @@ func (impl *CustOrderServiceImplement) InitDayModelList(dayModel *baseModel.DayM } // SelectDefectNumber dashboard右上角 查询缺陷数据 -func (impl *CustOrderServiceImplement) SelectDefectNumber(user *global.User, days int) ([]model.DefectItem, error) { +func (impl *CustOrderServiceImplement) SelectDefectNumber(user *global.User, days int, workLineId string) ([]model.DefectItem, error) { result := make([]model.DefectItem, 0, days) engine := db.Eloquent.Master() session := engine.NewSession() @@ -2869,9 +2869,11 @@ func (impl *CustOrderServiceImplement) SelectDefectNumber(user *global.User, day defectRecordDao := qmDal.NewDefectRecordDAO(session, user.PlantNr, user.UserId) repairInfoDao := baseDal.NewRepairInfoDAO(session, user.UserId) custOrderDao := dal.NewCustOrderDAO(session, user.PlantNr, user.UserId) + serialOrderDao := omDal.NewSerialOrderDAO(session, user.PlantNr, user.UserId) productFamilyRelateDao := meDal.NewProductFamilyRelateDAO(session, user.PlantNr, user.UserId) productFamilyMap := make(map[string]int) now := time.Now() + custOrderMap := make(map[string]*model.CustOrder) for i := 0; i < days; i++ { var defectItem model.DefectItem day := now.AddDate(0, 0, -1*i).Format(grmi.DateOutFormat) @@ -2904,6 +2906,36 @@ func (impl *CustOrderServiceImplement) SelectDefectNumber(user *global.User, day serialOrderMap[repairInfo.SerialOrderId] = nil } } + // 判断缺陷的这些工单归属的 + for serialOrderId := range serialOrderMap { + serialOrder, err := serialOrderDao.SelectOne(serialOrderId) + if err != nil { + return nil, grmi.NewBusinessError("查询工单数据失败, 错误:" + err.Error()) + } + if serialOrder == nil { + delete(serialOrderMap, serialOrderId) + continue + } + if serialOrder.CustOrderId == "" { + delete(serialOrderMap, serialOrderId) + continue + } + custOrder, exist := custOrderMap[serialOrder.CustOrderId] + if !exist { + custOrder, err = custOrderDao.SelectOne(serialOrder.CustOrderId) + if err != nil { + return nil, grmi.NewBusinessError("查询客户订单失败, 错误:" + err.Error()) + } + if custOrder == nil { + delete(serialOrderMap, serialOrderId) + continue + } + custOrderMap[serialOrder.CustOrderId] = custOrder + } + if custOrder.WorkLineId != workLineId { + delete(serialOrderMap, serialOrderId) + } + } defectNumber := len(serialOrderMap) custOrderLi, err := custOrderDao.JoinSelect([]grmi.Predicate{ meta.CustOrder_PlanStartTime.NewPredicate(grmi.GreaterOrEqual, start), @@ -3091,12 +3123,11 @@ func (impl *CustOrderServiceImplement) SelectTeamTemPo(user *global.User, dayMod } //图例1 -func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *baseModel.DayModel) (result *model.CutLine1, err error) { +func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *baseModel.DayModel, workLineId string) (result *model.CutLine1, err error) { engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() custOrderDao := dal.NewCustOrderDAO(session, user.PlantNr, user.UserId) - custOrderStatusDao := dal.NewCustOrderStatusDAO(session, user.PlantNr, user.UserId) productFamilyDao := meDal.NewProductFamilyDAO(session, user.PlantNr, user.UserId) productFamilyRelateDao := meDal.NewProductFamilyRelateDAO(session, user.PlantNr, user.UserId) serialOrderDao := omDal.NewSerialOrderDAO(session, user.PlantNr, user.UserId) @@ -3119,22 +3150,19 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b } timeModelList := impl.InitDayModelList(dayModel, todayStartTime) // 查询正在正在生产的客户订单 - custOrderStatusLi, err := custOrderStatusDao.Select([]grmi.Predicate{meta.CustOrderStatus_Status.NewPredicate(grmi.Equal, baseModel.WO_STATUS_RUNNING)}, []grmi.Field{meta.CustOrderStatus_LastModify}) + fmt.Println("--------------------------------------------") + custOrderLi, err := custOrderDao.SelectRunningCustOrder(workLineId) + fmt.Println("--------------------------------------------") + if err != nil { - return nil, grmi.NewBusinessError("查询客户订单状态数据失败, 错误:" + err.Error()) + return nil, grmi.NewBusinessError("查询正在生产的客户订单失败, 错误:" + err.Error()) } + var currentMeter int - if len(custOrderStatusLi) == 0 { + if len(custOrderLi) == 0 { currentMeter = 0 } else { - currentCustOrderId := custOrderStatusLi[len(custOrderStatusLi)-1].CustOrderId - custOrder, err := custOrderDao.SelectOne(currentCustOrderId) - if err != nil { - return nil, grmi.NewBusinessError("查询客户订单数据失败, 错误:" + err.Error()) - } - if custOrder == nil { - return nil, grmi.NewBusinessError("客户订单数据不存在, 订单条码:" + currentCustOrderId) - } + custOrder := custOrderLi[0] productFamily, err := productFamilyDao.SelectOne(custOrder.ProductFamilyId) if err != nil { return nil, grmi.NewBusinessError("查询派生数据失败, 错误:" + err.Error()) @@ -3164,7 +3192,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b // 查询客户订单 两类: // 1. 今天开始时间 < 实际结束时间 < 当前时间 状态 > 26 && != 98 // 2. 实际结束时间为空 实际开始时间 < 当前时间 状态 > 26 && != 98 - custOrderDataLi, err := custOrderDao.SelectProduceOrder(todayStart, endTime) + custOrderDataLi, err := custOrderDao.SelectProduceOrder(todayStart, endTime, workLineId) if err != nil { return nil, grmi.NewBusinessError("查询客户订单失败, 错误:" + err.Error()) } diff --git a/web/controllers/base/WorkLine.rest.go b/web/controllers/base/WorkLine.rest.go index c0ce2be..ea617b1 100644 --- a/web/controllers/base/WorkLine.rest.go +++ b/web/controllers/base/WorkLine.rest.go @@ -650,3 +650,45 @@ func RegisterUpdateWorkLine(party router.Party, path string, method func(*global RegisterMultiWorkLine(party, "PUT", path, method) } + +/****************************************************************************** + * + * @Function Name : RegisterSaveWorkLineScheduler + *----------------------------------------------------------------------------- + * + * @Description : 为一个查询WorkLine的方法注册路由 + * + * @Function Parameters : 路由分组 + * + * @Function Parameters : 路径 + * + * @Function Parameters : 实际处理请求的方法 + * + * @Author : Louwenzhi + * + * @Date : 2021-03-18 22:49:12 + * + ******************************************************************************/ +func RegisterDisplayWorkLine(party router.Party, path string, method func(user *global.User) ([]model.WorkLine, error)) { + party.Get(path, func(ctx iris.Context) { + plantNr, err := ctx.URLParamInt("plantNr") + if err != nil { + supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) + return + } + if plantNr == 0 { + supports.Error(ctx, iris.StatusBadRequest, "参数不全", nil) + return + } + user := &global.User{ + PlantNr: plantNr, + UserId: "Dashboard", + } + result, err := method(user) + if err != nil { + supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) + return + } + supports.Ok(ctx, supports.OptionSuccess, result) + }) +} \ No newline at end of file diff --git a/web/controllers/base/base.go b/web/controllers/base/base.go index ec86be7..39bce1c 100644 --- a/web/controllers/base/base.go +++ b/web/controllers/base/base.go @@ -352,6 +352,8 @@ func RegisterRoutes() { RegisterWorkLineSchedulerManualr(workline, "/manualrscheduler", serviceOfWorkLine.WorkLineSchedulerManualr) // 保存调度结果 RegisterSaveWorkLineScheduler(workline, "/savescheduler", serviceOfWorkLine.SaveWorkLineScheduler) + // 查询所有虚拟产线 + RegisterDisplayWorkLine(workline, "/virtual", serviceOfWorkLine.SelectVirtualWorkLine) // WorkLineProcessLst的路由组 worklineprocesslst := party.Party("/worklineprocesslst") diff --git a/web/controllers/pln/CustOrder.rest.go b/web/controllers/pln/CustOrder.rest.go index 8ed79bd..9605a85 100644 --- a/web/controllers/pln/CustOrder.rest.go +++ b/web/controllers/pln/CustOrder.rest.go @@ -659,14 +659,24 @@ func RegisterWithdrawCustOrder(party router.Party, path string, method func(*glo * @Date : 2021-10-22 13:50:40 * ******************************************************************************/ -func RegisterDashboard(party router.Party, path string, method func(*global.User) (interface{}, error)) { +func RegisterDashboard(party router.Party, path string, method func(*global.User, string) (interface{}, error)) { party.Get(path, func(ctx iris.Context) { + plantNr, err := ctx.URLParamInt("plantNr") + if err != nil { + supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) + return + } + workLineId := ctx.URLParam("workLineId") + if plantNr == 0 || workLineId == "" { + supports.Error(ctx, iris.StatusBadRequest, "参数不全", nil) + return + } user := &global.User{ - PlantNr: 100, + PlantNr: plantNr, UserId: "Dashboard", } - data, err := method(user) + data, err := method(user, workLineId) if err != nil { supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) return