From 29e10589b08189643f378d8f93be5fd889820e9f Mon Sep 17 00:00:00 2001 From: louwenzhi Date: Thu, 31 Mar 2022 16:34:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=EF=BC=8C=E6=89=93=E5=8C=85=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/log/PackOrderItemlst.dao.go | 15 +++++++++ .../implments/PackOrderItemlst.dao.impl.go | 14 ++++++++ dao/om/SerialOrder.dao.go | 2 ++ dao/om/implments/SerialOrder.dao.impl.go | 32 +++++++++++++++++++ dao/pln/implments/CustOrder.dao.impl.go | 3 +- .../pln/implments/CustOrder.service.impl.go | 27 ++++++++++++++-- 6 files changed, 90 insertions(+), 3 deletions(-) diff --git a/dao/log/PackOrderItemlst.dao.go b/dao/log/PackOrderItemlst.dao.go index 5fa28eb..6e263e5 100644 --- a/dao/log/PackOrderItemlst.dao.go +++ b/dao/log/PackOrderItemlst.dao.go @@ -263,6 +263,21 @@ type PackOrderItemlstDAO interface { * ******************************************************************************/ UpdateWhere([]grmi.Predicate, *model.PackOrderItemlst, ...string) error + /****************************************************************************** + * + * @Function Name : SelectListByOrders + *----------------------------------------------------------------------------- + * + * @Description : 按条件修改PackOrderItemlst + * + * @Return Value : 执行时发生的错误 + * + * @Author : 代码生成器创建 + * + * @Date : 2021-03-24 09:53:49 + * + ******************************************************************************/ + SelectListByOrders(serialOrderIds []string) ([]model.PackOrderItemlst, error) } /****************************************************************************** diff --git a/dao/log/implments/PackOrderItemlst.dao.impl.go b/dao/log/implments/PackOrderItemlst.dao.impl.go index 06ea5b5..49b56a0 100644 --- a/dao/log/implments/PackOrderItemlst.dao.impl.go +++ b/dao/log/implments/PackOrderItemlst.dao.impl.go @@ -337,3 +337,17 @@ func (impl *PackOrderItemlstDAOImplement) UpdateWhere(predicates []grmi.Predicat } return nil } + +/****************************************************************************** + * + * @Reference LAPP_ACURA_MOM_BACKEND/dao/log/PackOrderItemlstDAO.SelectListByOrders + * + ******************************************************************************/ +func (impl *PackOrderItemlstDAOImplement) SelectListByOrders(serialOrderIds []string) ([]model.PackOrderItemlst, error) { + data := make([]model.PackOrderItemlst, 0) + err := impl.session.Table(impl.meta.TableName).Where("PlantNr = ? and Status = ?", impl.plantNr, bmodel.PACK_STATUS_CLOSED).In("SerialOrderId", serialOrderIds).Asc("Pos").Find(&data) + if err != nil { + return nil, grmi.NewDataBaseError(err) + } + return data, nil +} diff --git a/dao/om/SerialOrder.dao.go b/dao/om/SerialOrder.dao.go index 235eca9..749d2eb 100644 --- a/dao/om/SerialOrder.dao.go +++ b/dao/om/SerialOrder.dao.go @@ -423,6 +423,8 @@ type SerialOrderDAO interface { ******************************************************************************/ SelectByOriginSerialOrderId(serialOrderId string) (*model.SerialOrder, error) SelectByCustOrderIdForDashboard(custOrderId, start, end string) ([]model.SerialOrder, error) + + SelectSerialOrderByCustOrder(custOrderId string) (serialOrderLi []model.SerialOrder, err error) } /****************************************************************************** diff --git a/dao/om/implments/SerialOrder.dao.impl.go b/dao/om/implments/SerialOrder.dao.impl.go index 904f6b6..36c119b 100644 --- a/dao/om/implments/SerialOrder.dao.impl.go +++ b/dao/om/implments/SerialOrder.dao.impl.go @@ -741,4 +741,36 @@ func (impl *SerialOrderDAOImplement) SelectByCustOrderIdForDashboard(custOrderId data := make([]model.SerialOrder, 0) err := impl.session.Table(impl.meta.TableName).Where(where, parameters...).OrderBy(meta.SerialOrder_ActEndTime.SortColumnName).Find(&data) return data, err +} + +/****************************************************************************** + * + * @Reference LAPP_ACURA_MOM_BACKEND/dao/om/SerialOrderDAO.SelectByCustOrder + * + ******************************************************************************/ +func (impl *SerialOrderDAOImplement) SelectSerialOrderByCustOrder(custOrderId string) (serialOrderLi []model.SerialOrder, err error) { + data := make([]model.VOmSerialorder, 0) + + session := impl.session.Table(impl.meta.TableName) + condition := fmt.Sprintf("%s = %s and %s = %s", + meta.SerialOrder_PlantNr.ColumnName, + meta.SerialOrderStatus_PlantNr.ColumnName, + meta.SerialOrder_SerialOrderId.ColumnName, + meta.SerialOrderStatus_SerialOrderId.ColumnName) + where := fmt.Sprintf("%s = ? and %s = ? and %s <= ?", + meta.SerialOrder_PlantNr.ColumnName, + meta.SerialOrder_CustOrderId.ColumnName, + meta.SerialOrderStatus_Status.ColumnName) + err = session.Join("INNER", meta.SerialOrderStatus.TableName, condition).Where(where, impl.plantNr, custOrderId, common.WO_STATUS_FINISHED).Find(&data) + if err != nil { + return nil, err + } + serialOrderLi = make([]model.SerialOrder, 0, len(data)) + for _, item := range data { + var serialOrder model.SerialOrder + serialOrder = item.SerialOrder + serialOrder.SerialOrderStatus = item.SerialOrderStatus + serialOrderLi = append(serialOrderLi, serialOrder) + } + return serialOrderLi, nil } \ No newline at end of file diff --git a/dao/pln/implments/CustOrder.dao.impl.go b/dao/pln/implments/CustOrder.dao.impl.go index 023d92e..c98f699 100644 --- a/dao/pln/implments/CustOrder.dao.impl.go +++ b/dao/pln/implments/CustOrder.dao.impl.go @@ -844,4 +844,5 @@ func (impl *CustOrderDAOImplement) SelectCurrentDayCustOrder(start, end string) data := make([]model.CustOrder, 0) err := impl.session.Table(impl.meta.TableName).Where(where, parameters...).Desc(meta.CustOrder_PlanEndTime.Name).Find(&data) return data, err -} \ No newline at end of file +} + diff --git a/services/pln/implments/CustOrder.service.impl.go b/services/pln/implments/CustOrder.service.impl.go index 37ab820..df831d3 100644 --- a/services/pln/implments/CustOrder.service.impl.go +++ b/services/pln/implments/CustOrder.service.impl.go @@ -5,6 +5,7 @@ package implments import ( baseDal "LAPP_ACURA_MOM_BACKEND/dao/base" jitDal "LAPP_ACURA_MOM_BACKEND/dao/jit" + logDal "LAPP_ACURA_MOM_BACKEND/dao/log" meDal "LAPP_ACURA_MOM_BACKEND/dao/me" omDal "LAPP_ACURA_MOM_BACKEND/dao/om" dal "LAPP_ACURA_MOM_BACKEND/dao/pln" @@ -2823,6 +2824,8 @@ func (impl *CustOrderServiceImplement) CountTarget(user *global.User) (model.Tar now := time.Now() result := model.TargetItem{} custOrderDao := dal.NewCustOrderDAO(session, user.PlantNr, user.UserId) + serialOrderDao := omDal.NewSerialOrderDAO(session, user.PlantNr, user.UserId) + packDao := logDal.NewPackOrderItemlstDAO(session, user.PlantNr, user.UserId) today := now.Format(grmi.DateOutFormat) start := today + " " + "00:00:00" end := today + " " + "23:59:59" @@ -2836,8 +2839,28 @@ func (impl *CustOrderServiceImplement) CountTarget(user *global.User) (model.Tar return result, nil } for _, custOrderData := range custOrderLi { - result.Target += custOrderData.CustOrderQty.PlanQty - custOrderData.CustOrderQty.CancelQty - result.Current += custOrderData.CustOrderQty.ActQty + result.Current += custOrderData.CustOrderQty.PlanQty - custOrderData.CustOrderQty.CancelQty + //查询工单对应的派生工单状态!=98的是否都已经进入包装 + serialList, err := serialOrderDao.SelectSerialOrderByCustOrder(custOrderData.CustOrder.CustOrderId) + if err != nil { + return result, err + } + //台套对应的派生数量 + serialNUM := len(serialList) + var orders []string + for _, v := range serialList { + orders = append(orders, v.SerialOrderId) + } + //查询进去包装并且包装状态等于80的派生个数 + packList,err :=packDao.SelectListByOrders(orders) + if err != nil { + return result, err + } + //派生对应的打包数量 + packNum :=len(packList) + if serialNUM <= packNum{ + result.Target += 1 + } } return result, nil } From af6a1543c6c1537db9af9350a23d92712223a1e2 Mon Sep 17 00:00:00 2001 From: louwenzhi Date: Fri, 1 Apr 2022 09:26:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E4=BD=8D=E7=BD=AE=E3=80=82=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/om/implments/SerialOrder.dao.impl.go | 15 ++++- .../pln/implments/CustOrder.service.impl.go | 59 +++++++++++++------ 2 files changed, 55 insertions(+), 19 deletions(-) diff --git a/dao/om/implments/SerialOrder.dao.impl.go b/dao/om/implments/SerialOrder.dao.impl.go index 36c119b..7c695cb 100644 --- a/dao/om/implments/SerialOrder.dao.impl.go +++ b/dao/om/implments/SerialOrder.dao.impl.go @@ -5,6 +5,7 @@ package implments import ( "LAPP_ACURA_MOM_BACKEND/grmi" meta "LAPP_ACURA_MOM_BACKEND/meta/om" + meMeta "LAPP_ACURA_MOM_BACKEND/meta/me" common "LAPP_ACURA_MOM_BACKEND/models/base" model "LAPP_ACURA_MOM_BACKEND/models/om" "fmt" @@ -757,11 +758,21 @@ func (impl *SerialOrderDAOImplement) SelectSerialOrderByCustOrder(custOrderId st meta.SerialOrderStatus_PlantNr.ColumnName, meta.SerialOrder_SerialOrderId.ColumnName, meta.SerialOrderStatus_SerialOrderId.ColumnName) + + condition2 := fmt.Sprintf("%s = %s and %s = %s", + meta.SerialOrder_PlantNr.ColumnName, + meMeta.Product_PlantNr.ColumnName, + meta.SerialOrder_ArtId.ColumnName, + meMeta.Product_ProductId.ColumnName) + where := fmt.Sprintf("%s = ? and %s = ? and %s <= ?", meta.SerialOrder_PlantNr.ColumnName, meta.SerialOrder_CustOrderId.ColumnName, - meta.SerialOrderStatus_Status.ColumnName) - err = session.Join("INNER", meta.SerialOrderStatus.TableName, condition).Where(where, impl.plantNr, custOrderId, common.WO_STATUS_FINISHED).Find(&data) + meta.SerialOrderStatus_Status.ColumnName, + meMeta.Product_CreatePackOrderToggle.ColumnName, + meta.SerialOrder_OrderType.ColumnName, + ) + err = session.Join("INNER", meta.SerialOrderStatus.TableName, condition).Join("INNER",meMeta.Product.TableName,condition2).Where(where, impl.plantNr, custOrderId, common.WO_STATUS_FINISHED,1,"SEQ").Find(&data) if err != nil { return nil, err } diff --git a/services/pln/implments/CustOrder.service.impl.go b/services/pln/implments/CustOrder.service.impl.go index df831d3..2785b11 100644 --- a/services/pln/implments/CustOrder.service.impl.go +++ b/services/pln/implments/CustOrder.service.impl.go @@ -2158,7 +2158,7 @@ func (impl *CustOrderServiceImplement) PageSelect(user *global.User, urlParamete pageNumberStr := urlParameters["pageNumber"] pageSizeStr := urlParameters["pageSize"] projectId := urlParameters["projectId"] - productFamilyId := urlParameters["productFamilyId"] + productFamilyId := urlParameters["productFamilyId"] pageNumber, err := strconv.Atoi(pageNumberStr) if err != nil { pageNumber = 1 @@ -2845,22 +2845,48 @@ func (impl *CustOrderServiceImplement) CountTarget(user *global.User) (model.Tar if err != nil { return result, err } + if len(serialList) == 0 { + continue + } //台套对应的派生数量 - serialNUM := len(serialList) + // 记录生产每个台套下面的工单数量 + syncKeyMap := make(map[string][]omModel.SerialOrder) + var orders []string for _, v := range serialList { orders = append(orders, v.SerialOrderId) + syncKeyMap[v.SyncKey] = append(syncKeyMap[v.SyncKey], v) } //查询进去包装并且包装状态等于80的派生个数 - packList,err :=packDao.SelectListByOrders(orders) + packList, err := packDao.SelectListByOrders(orders) if err != nil { return result, err } - //派生对应的打包数量 - packNum :=len(packList) - if serialNUM <= packNum{ - result.Target += 1 + if len(packList) == 0 { + continue } + //构建包装单map数组 + packMap := make(map[string]string) + for _, v := range packList { + packMap[v.SerialOrderId] = v.SerialOrderId + } + //统计数量 + for _, serialOrders := range syncKeyMap { + isPack := true + for _, vv := range serialOrders { + key := vv.SerialOrderId + _, ok := packMap[key] + if !ok { + isPack = false + break + } + } + if isPack { + result.Target += 1 + } + + } + } return result, nil } @@ -3055,11 +3081,11 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, ) (result * delete(productFamilyMeterMap, deleteKey) } result = &model.CutLine1{ - TimeLi: make([]string, 0, now.Hour()), + TimeLi: make([]string, 0, now.Hour()), ProductFamilyMeter: productFamilyMeterMap, } for _, num = range dateTimeLi { - result.TimeLi = append(result.TimeLi, strconv.Itoa(num) + "时") + result.TimeLi = append(result.TimeLi, strconv.Itoa(num)+"时") } for productFamilyId, accomplishTimeMap := range productFamilyAccomplishMap { percentData := model.ProductFamilyProduce{ @@ -3069,7 +3095,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, ) (result * qty, exist := accomplishTimeMap[num] if exist { meter := productFamilyMeterMap[productFamilyId] - percent := (float64(3600/qty)) / float64(meter) / 100 + percent := (float64(3600 / qty)) / float64(meter) / 100 percentData.PercentLi = append(percentData.PercentLi, fmt.Sprintf("%.2f", percent)) } else { percentData.PercentLi = append(percentData.PercentLi, "0.00") @@ -3109,7 +3135,6 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, ) (result * return result, nil - //packDao := jitDal.NewPackOrderDAO(session, user.PlantNr, user.UserId) // ////图例001 @@ -3748,7 +3773,7 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User, if err != nil { return grmi.NewBusinessError("读取Sheet1页失败, error:" + err.Error()) } - today, _ := time.ParseInLocation(grmi.DateTimeOutFormat, time.Now().Format(grmi.DateOutFormat) + " 00:00:00", utils.TimezoneLocation) + today, _ := time.ParseInLocation(grmi.DateTimeOutFormat, time.Now().Format(grmi.DateOutFormat)+" 00:00:00", utils.TimezoneLocation) rowIndex := 0 projectMap := make(map[string]*meModel.Project) productFamilyMap := make(map[string]*meModel.ProductFamily) @@ -3823,8 +3848,8 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User, PlanQty: qty, WorkLineId: productFamily.WorkLineId, QuantityPerHour: int(productFamily.Jph), - PlanStartDate: grmi.Date(planDate), - PlanEndDate: grmi.Date(planDate), + PlanStartDate: grmi.Date(planDate), + PlanEndDate: grmi.Date(planDate), } planDateCustOrderMap[planDate.Format(grmi.DateOutFormat)] = append(planDateCustOrderMap[planDate.Format(grmi.DateOutFormat)], custOrder) } @@ -3881,7 +3906,7 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User, } for index, custOrder := range custOrderLi { custOrder.PlanStartTime = grmi.DateTime(prePlanEndTime) - custOrder.PlanEndTime = grmi.DateTime(prePlanEndTime.Add(time.Duration(custOrder.PlanQty * perCarUsedTime) * time.Second)) + custOrder.PlanEndTime = grmi.DateTime(prePlanEndTime.Add(time.Duration(custOrder.PlanQty*perCarUsedTime) * time.Second)) prePlanEndTime = custOrder.PlanEndTime.Restore() custOrderLi[index] = custOrder } @@ -3919,11 +3944,11 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User, custOrderStatusLi = append(custOrderStatusLi, custOrderStatus) custOrderQty := model.CustOrderQty{ CustOrderId: custOrderId, - PlanQty: custOrder.PlanQty, + PlanQty: custOrder.PlanQty, } custOrderQtyLi = append(custOrderQtyLi, custOrderQty) tempCustOrderLi = append(tempCustOrderLi, custOrder) - if index != 0 && index % 20 == 0 { + if index != 0 && index%20 == 0 { err = custOrderDao.Insert(&tempCustOrderLi) if err != nil { _ = session.Rollback()