Browse Source

修改dashboard的逻辑

pull/200/head
zhangxin 2 years ago
parent
commit
49c3a9f289
10 changed files with 186 additions and 29 deletions
  1. +2
    -2
      conf/app.go
  2. +20
    -1
      dao/pln/CustOrder.dao.go
  3. +21
    -3
      dao/pln/implments/CustOrder.dao.impl.go
  4. +19
    -0
      services/base/WorkLine.service.go
  5. +19
    -0
      services/base/implments/WorkLine.service.impl.go
  6. +1
    -1
      services/pln/CustOrder.service.go
  7. +47
    -19
      services/pln/implments/CustOrder.service.impl.go
  8. +42
    -0
      web/controllers/base/WorkLine.rest.go
  9. +2
    -0
      web/controllers/base/base.go
  10. +13
    -3
      web/controllers/pln/CustOrder.rest.go

+ 2
- 2
conf/app.go View File

@ -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 (


+ 20
- 1
dao/pln/CustOrder.dao.go View File

@ -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)
}
/******************************************************************************


+ 21
- 3
dao/pln/implments/CustOrder.dao.impl.go View File

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

+ 19
- 0
services/base/WorkLine.service.go View File

@ -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)
}
/******************************************************************************


+ 19
- 0
services/base/implments/WorkLine.service.impl.go View File

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

+ 1
- 1
services/pln/CustOrder.service.go View File

@ -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


+ 47
- 19
services/pln/implments/CustOrder.service.impl.go View File

@ -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())
}


+ 42
- 0
web/controllers/base/WorkLine.rest.go View File

@ -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)
})
}

+ 2
- 0
web/controllers/base/base.go View File

@ -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")


+ 13
- 3
web/controllers/pln/CustOrder.rest.go View File

@ -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


Loading…
Cancel
Save