From 2950a2cf8acc39e7b5ee35af4ecec1c609757f2f Mon Sep 17 00:00:00 2001 From: zhangxin Date: Sun, 24 Apr 2022 16:21:58 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8Ddashboard=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/pln/pln.go | 2 +- .../pln/implments/CustOrder.service.impl.go | 36 ++++++++++--------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/models/pln/pln.go b/models/pln/pln.go index b376ec1..bbe51e8 100644 --- a/models/pln/pln.go +++ b/models/pln/pln.go @@ -71,7 +71,7 @@ type HourProductData struct { //Dashboard数据展示 type DashboardPic struct { - DashboardDataPic1 *CutLine1 //图例1 + DashboardDataPic1 CutLine1 //图例1 DashboardDataPic2 []DefectItem //图例2 DashboardDataPic3 PerDashboardData //图例3 DashboardDataPic4 TargetItem //目标数据 diff --git a/services/pln/implments/CustOrder.service.impl.go b/services/pln/implments/CustOrder.service.impl.go index 3c02413..779e7a4 100644 --- a/services/pln/implments/CustOrder.service.impl.go +++ b/services/pln/implments/CustOrder.service.impl.go @@ -3103,7 +3103,7 @@ func (impl *CustOrderServiceImplement) SelectTeamTemPo(user *global.User, dayMod } //图例1 -func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *baseModel.DayModel, workLineId string) (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() @@ -3133,7 +3133,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b custOrderLi, err := custOrderDao.SelectRunningCustOrder(workLineId) if err != nil { - return nil, grmi.NewBusinessError("查询正在生产的客户订单失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询正在生产的客户订单失败, 错误:" + err.Error()) } var currentMeter int @@ -3143,23 +3143,23 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b custOrder := custOrderLi[0] productFamily, err := productFamilyDao.SelectOne(custOrder.ProductFamilyId) if err != nil { - return nil, grmi.NewBusinessError("查询派生数据失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询派生数据失败, 错误:" + err.Error()) } if productFamily == nil { - return nil, grmi.NewBusinessError("客户订单派生不存在, 派生ID:" + custOrder.ProductFamilyId) + return result, grmi.NewBusinessError("客户订单派生不存在, 派生ID:" + custOrder.ProductFamilyId) } if productFamily.Jph == 0 { - return nil, grmi.NewBusinessError("派生JPH为0 派生ID:" + custOrder.ProductFamilyId) + return result, grmi.NewBusinessError("派生JPH为0 派生ID:" + custOrder.ProductFamilyId) } currentMeter = int(float64(3600) / productFamily.Jph) productFamilyMeterMap[custOrder.ProductFamilyId] = float64(3600) / productFamily.Jph productFamilyMap[custOrder.ProductFamilyId] = productFamily productLi, err := productFamilyRelateDao.SelectProductByFamilyId(custOrder.ProjectId, custOrder.ProductFamilyId) if err != nil { - return nil, grmi.NewBusinessError("查询派生下总成数据失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询派生下总成数据失败, 错误:" + err.Error()) } if len(productLi) == 0 { - return nil, grmi.NewBusinessError("派生下未关联需要生产的座椅总成, 派生ID:" + custOrder.ProductFamilyId) + return result, grmi.NewBusinessError("派生下未关联需要生产的座椅总成, 派生ID:" + custOrder.ProductFamilyId) } productFamilyRelateMap[custOrder.ProductFamilyId] = make(map[string]interface{}, len(productLi)) for _, product := range productLi { @@ -3172,7 +3172,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b // 2. 实际结束时间为空 实际开始时间 < 当前时间 状态 > 26 && != 98 custOrderDataLi, err := custOrderDao.SelectProduceOrder(todayStart, endTime, workLineId) if err != nil { - return nil, grmi.NewBusinessError("查询客户订单失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询客户订单失败, 错误:" + err.Error()) } productFamilyAccomplishMap := make(map[int]map[string]model.HourProductData) @@ -3182,20 +3182,20 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b if !exist { productFamily, err = productFamilyDao.SelectOne(productFamilyId) if err != nil { - return nil, grmi.NewBusinessError("查询派生数据失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询派生数据失败, 错误:" + err.Error()) } if productFamily == nil { - return nil, grmi.NewBusinessError("客户订单中派生不存在, 派生Id:" + productFamilyId + ", 客户订单Id:" + custOrderData.CustOrder.CustOrderId) + return result, grmi.NewBusinessError("客户订单中派生不存在, 派生Id:" + productFamilyId + ", 客户订单Id:" + custOrderData.CustOrder.CustOrderId) } if productFamily.Jph == 0 { - return nil, grmi.NewBusinessError("派生JPH为0 派生ID:" + productFamilyId) + return result, grmi.NewBusinessError("派生JPH为0 派生ID:" + productFamilyId) } productLi, err := productFamilyRelateDao.SelectProductByFamilyId(custOrderData.CustOrder.ProjectId, productFamilyId) if err != nil { - return nil, grmi.NewBusinessError("查询派生下总成数据失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询派生下总成数据失败, 错误:" + err.Error()) } if len(productLi) == 0 { - return nil, grmi.NewBusinessError("派生下未关联需要生产的座椅总成, 派生ID:" + productFamilyId) + return result, grmi.NewBusinessError("派生下未关联需要生产的座椅总成, 派生ID:" + productFamilyId) } productFamilyRelateMap[productFamilyId] = make(map[string]interface{}, len(productLi)) for _, product := range productLi { @@ -3207,7 +3207,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b // 查询客户订单下的工单 serialOrderDataLi, err := serialOrderDao.SelectByCustOrderIdForDashboard(custOrderData.CustOrder.CustOrderId, todayStart, endTime) if err != nil { - return nil, grmi.NewBusinessError("查询客户订单下工单失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询客户订单下工单失败, 错误:" + err.Error()) } // 记录生产每个台套下面的工单数量 syncKeyMap := make(map[string][]omModel.SerialOrder) @@ -3275,7 +3275,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b for hour, _ := range productFamilyAccomplishMap { displayHourLi = append(displayHourLi, strconv.Itoa(hour)+"时") } - result = &model.CutLine1{ + result = model.CutLine1{ TimeLi: displayHourLi, Standard: 1.0, ProductFamilyMeter: currentMeter, @@ -3304,7 +3304,10 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b usedTime := impl.GetUsefulTime(currentTime, productFamilyProductData.LastDoneTime, timeModelList) currentTime = productFamilyProductData.LastDoneTime meter := productFamilyMeterMap[productFamilyProductData.ProductFamilyId] - percent := meter / (float64(usedTime) / float64(productFamilyProductData.Qty)) * (float64(usedTime) / float64(hourAllUsedTime)) + var percent float64 + if productFamilyProductData.Qty != 0 && usedTime != 0 && hourAllUsedTime != 0 { + percent = meter / (float64(usedTime) / float64(productFamilyProductData.Qty)) * (float64(usedTime) / float64(hourAllUsedTime)) + } hourPercent += percent } result.ProduceData = append(result.ProduceData, hourPercent) @@ -3312,6 +3315,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b return result, nil } + func (impl *CustOrderServiceImplement) GetUsefulTime(start, end time.Time, timeLine *list.List) int { var duration int for element := timeLine.Front(); element != nil; element = element.Next() { -- 2.30.1.windows.1 From 6eab0e7a439e2f92d44aa3b162b90f23094d6ca8 Mon Sep 17 00:00:00 2001 From: zhangxin Date: Sun, 24 Apr 2022 16:48:29 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8C=89=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E4=B8=8B=E6=B5=81=E6=B0=B4=E5=8F=B7=20=E5=92=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BF=BB=E8=BD=A6=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/base/Snr.dao.go | 2 + dao/base/implments/Snr.dao.impl.go | 331 +++++++++++++++++- models/base/Const.go | 6 + models/pln/pln.go | 2 +- .../pln/implments/CustOrder.service.impl.go | 96 ++--- utils/time.go | 4 +- 6 files changed, 396 insertions(+), 45 deletions(-) diff --git a/dao/base/Snr.dao.go b/dao/base/Snr.dao.go index 58858dc..c4cc117 100644 --- a/dao/base/Snr.dao.go +++ b/dao/base/Snr.dao.go @@ -7,6 +7,7 @@ import ( "LAPP_ACURA_MOM_BACKEND/grmi" model "LAPP_ACURA_MOM_BACKEND/models/base" "github.com/go-xorm/xorm" + "time" ) /****************************************************************************** @@ -232,6 +233,7 @@ type SnrDAO interface { * ******************************************************************************/ GetNextSnr(string) (string, error) + GetNextSnrWithTime(snr string, t time.Time) (returnSnr string, err error) } /****************************************************************************** diff --git a/dao/base/implments/Snr.dao.impl.go b/dao/base/implments/Snr.dao.impl.go index 8c5b3ef..7fa2920 100644 --- a/dao/base/implments/Snr.dao.impl.go +++ b/dao/base/implments/Snr.dao.impl.go @@ -429,7 +429,7 @@ func (impl *SnrDAOImplement) GetNextSnr(snr string) (retsnr string, err error) { } else { if snrtab.DateFormat == "Func:GenerateTimeFormatForAcura" { - dateStr, err := utils.GenerateTimeFormatForAcura() + dateStr, err := utils.GenerateTimeFormatForAcura(time.Now()) if err != nil { return "", err } @@ -661,7 +661,7 @@ func (impl *SnrDAOImplement) GetSessionNextSnr(user *global.User, session *xorm. } else { if snrtab.DateFormat == "Func:GenerateTimeFormatForAcura" { - dateStr, err := utils.GenerateTimeFormatForAcura() + dateStr, err := utils.GenerateTimeFormatForAcura(time.Now()) if err != nil { return "", err } @@ -790,3 +790,330 @@ func (impl *SnrDAOImplement) SelectStd(dataMap string) ([]model.Stdef, error) { } return data, nil } + +// SelectNexSnrFromCache 从缓存获取下一个序列号 +func (impl *SnrDAOImplement) SelectNexSnrFromCache(snrId, date, rule string, startNr, year, month, week int) (int, error) { + var ( + where string // 查询条件 + parameters []interface{} // 查询参数 + ) + switch rule { + case model.RESET_RULE_DAYLY: + where = fmt.Sprintf("%s = ? and %s = ? and %s = ?", + meta.SnrCache_PlantNr.ColumnName, + meta.SnrCache_SnrId.ColumnName, + meta.SnrCache_SnrDate.ColumnName) + parameters = []interface{}{impl.plantNr, snrId, date} + case model.RESET_RULE_WEEKLY: + where = fmt.Sprintf("%s = ? and %s = ? and %s = ? and %s = ?", + meta.SnrCache_PlantNr.ColumnName, + meta.SnrCache_SnrId.ColumnName, + meta.SnrCache_SnrYear.ColumnName, + meta.SnrCache_SnrWeek.ColumnName) + parameters = []interface{}{impl.plantNr, snrId, year, week} + case model.RESET_RULE_MONTHLY: + where = fmt.Sprintf("%s = ? and %s = ? and %s = ? and %s = ?", + meta.SnrCache_PlantNr.ColumnName, + meta.SnrCache_SnrId.ColumnName, + meta.SnrCache_SnrYear.ColumnName, + meta.SnrCache_SnrMonth.ColumnName) + parameters = []interface{}{impl.plantNr, snrId, year, month} + case model.RESET_RULE_YEARLY: + where = fmt.Sprintf("%s = ? and %s = ? and %s = ?", + meta.SnrCache_PlantNr.ColumnName, + meta.SnrCache_SnrId.ColumnName, + meta.SnrCache_SnrYear.ColumnName, + ) + parameters = []interface{}{impl.plantNr, snrId, year} + default: + return 0, grmi.NewBusinessError("不支持的规则类型") + } + + var data model.SnrCache + ok, err := impl.session.Table(meta.SnrCache.TableName).Where(where, parameters...).Get(&data) + if err != nil { + return 0, err + } + if !ok { + return startNr, nil + } + return data.NextNr, nil +} + +// GetMaxItemNr 获取最大的itemNr +func (impl *SnrDAOImplement) GetMaxItemNr(snrId string) (int, error) { + where := fmt.Sprintf("%s = ? and %s = ?", + meta.SnrCache_PlantNr.ColumnName, + meta.SnrCache_SnrId.ColumnName, + ) + parameters := []interface{}{impl.plantNr, snrId} + var snrCache model.SnrCache + ok, err := impl.session.Table(meta.SnrCache.TableName).Where(where, parameters...).Desc(meta.SnrCache_ItemNr.SortColumnName).Get(&snrCache) + if err != nil { + return 0, err + } + if !ok { + return 0, nil + } + return snrCache.ItemNr, nil +} + +// UpdateSnrCache 更新snrCache +func (impl *SnrDAOImplement) UpdateSnrCache(snrId, rule string, year, month, week, nextSnr int, date time.Time) error { + var ( + where string // 查询条件 + parameters []interface{} // 查询参数 + ) + switch rule { + case model.RESET_RULE_DAYLY: + where = fmt.Sprintf("%s = ? and %s = ? and %s = ?", + meta.SnrCache_PlantNr.ColumnName, + meta.SnrCache_SnrId.ColumnName, + meta.SnrCache_SnrDate.ColumnName) + parameters = []interface{}{impl.plantNr, snrId, date.Format(grmi.DateOutFormat)} + case model.RESET_RULE_WEEKLY: + where = fmt.Sprintf("%s = ? and %s = ? and %s = ? and %s = ?", + meta.SnrCache_PlantNr.ColumnName, + meta.SnrCache_SnrId.ColumnName, + meta.SnrCache_SnrYear.ColumnName, + meta.SnrCache_SnrWeek.ColumnName) + parameters = []interface{}{impl.plantNr, snrId, year, week} + case model.RESET_RULE_MONTHLY: + where = fmt.Sprintf("%s = ? and %s = ? and %s = ? and %s = ?", + meta.SnrCache_PlantNr.ColumnName, + meta.SnrCache_SnrId.ColumnName, + meta.SnrCache_SnrYear.ColumnName, + meta.SnrCache_SnrMonth.ColumnName) + parameters = []interface{}{impl.plantNr, snrId, year, month} + case model.RESET_RULE_YEARLY: + where = fmt.Sprintf("%s = ? and %s = ? and %s = ?", + meta.SnrCache_PlantNr.ColumnName, + meta.SnrCache_SnrId.ColumnName, + meta.SnrCache_SnrYear.ColumnName, + ) + parameters = []interface{}{impl.plantNr, snrId, year} + default: + return grmi.NewBusinessError("不支持的规则类型") + } + var data model.SnrCache + ok, err := impl.session.Table(meta.SnrCache.TableName).Where(where, parameters...).Get(&data) + if err != nil { + return err + } + if !ok { + maxItemNr, err := impl.GetMaxItemNr(snrId) + if err != nil { + return err + } + snrCache := model.SnrCache{ + PlantNr: impl.plantNr, + SnrId: snrId, + ItemNr: maxItemNr+1, + SnrDate: grmi.Date(date), + SnrYear: year, + SnrMonth: month, + SnrDay: date.Day(), + SnrWeek: week, + NextNr: nextSnr, + } + _, err = impl.session.Table(meta.SnrCache.TableName).Insert(&snrCache) + if err != nil { + return grmi.NewDataBaseError(err) + } + return nil + } else { + data.SnrDate = grmi.Date(date) + data.LastModify = grmi.DateTime(time.Now()) + data.LastUser = impl.userid + data.NextNr = nextSnr + data.SnrYear = year + data.SnrMonth = month + data.SnrDay = date.Day() + data.SnrWeek = week + _, err = impl.session.Table(meta.SnrCache.TableName).Cols(meta.SnrCache.UpdatingMembers...).ID(data.GetKey()).Update(&data) + if err != nil { + return grmi.NewDataBaseError(err) + } + return nil + } +} + +/****************************************************************************** + * + * @Reference LAPP_ACURA_MOM_BACKEND/dao/base/SnrDAO.GetNextSnrWithTime + * + ******************************************************************************/ +func (impl *SnrDAOImplement) GetNextSnrWithTime(snr string, t time.Time) (returnSnr string, err error) { + year, month, _ := t.Date() + _, week := t.ISOWeek() + date := t.Format(grmi.DateOutFormat) + snrData, err := impl.SelectOne(snr) + if err != nil { + return + } + if snrData == nil { + return "", grmi.NewBusinessError("未查询到流水号规则") + } + nextSnr, err := impl.SelectNexSnrFromCache(snr, date, snrData.ResetNrRule, snrData.StartNr, year, int(month), week) + if err != nil { + return "", err + } + // 组合返回值 + layout := []byte(snrData.Identifierlayout) + for i := 0; i < len(layout); i++ { + switch string(layout[i]) { + case "1": //前缀 + //判断是否开通了映射 + if snrData.Data1MappingToggle { + //查询对应的key Map + stdData, err := impl.SelectStd(snrData.Data1Mapper) + if err != nil { + return "", err + } + stdMap := make(map[string]string) + for _, v := range stdData { + val := v.StdefTyp + key := v.Bez + stdMap[key] = val + } + value, ok := stdMap[snrData.Prefix] + if ok { + returnSnr = returnSnr + value + } else { + returnSnr = returnSnr + snrData.Prefix + } + + } else { + returnSnr = returnSnr + snrData.Prefix + } + case "2": //日期变量 + //判断是否开通了映射 + if snrData.Data2MappingToggle { + //查询对应的key Map + stdData, err := impl.SelectStd(snrData.Data2Mapper) + if err != nil { + return "", err + } + stdMap := make(map[string]string) + for _, v := range stdData { + val := v.StdefTyp + key := v.Bez + stdMap[key] = val + } + value, ok := stdMap[utils.Date(t.Unix(), snrData.DateFormat)] + if ok { + returnSnr = returnSnr + value + } else { + returnSnr = returnSnr + utils.Date(t.Unix(), snrData.DateFormat) + } + + } else { + + if snrData.DateFormat == "Func:GenerateTimeFormatForAcura" { + dateStr, err := utils.GenerateTimeFormatForAcura(t) + if err != nil { + return "", err + } + returnSnr = returnSnr + dateStr + } else { + returnSnr = returnSnr + utils.Date(t.Unix(), snrData.DateFormat) + } + } + + case "3": //中缀 + + //判断是否开通了映射 + if snrData.Data3MappingToggle { + //查询对应的key Map + stdData, err := impl.SelectStd(snrData.Data3Mapper) + if err != nil { + return "", err + } + stdMap := make(map[string]string) + for _, v := range stdData { + val := v.StdefTyp + key := v.Bez + stdMap[key] = val + } + value, ok := stdMap[snrData.Infix] + if ok { + returnSnr = returnSnr + value + } else { + returnSnr = returnSnr + snrData.Infix + } + + } else { + returnSnr = returnSnr + snrData.Infix + } + + case "4": //流水号 + + var nextnum string + if snrData.IdentifierFormat == "CHAR" { + nextnum = utils.ConvInt2FormatString(nextSnr, snrData.Length) + } else { + nextnum = strconv.Itoa(nextSnr) + } + + //判断是否开通了映射 + if snrData.Data4MappingToggle { + //查询对应的key Map + stdData, err := impl.SelectStd(snrData.Data4Mapper) + if err != nil { + return "", err + } + stdMap := make(map[string]string) + for _, v := range stdData { + val := v.StdefTyp + key := v.Bez + stdMap[key] = val + } + value, ok := stdMap[nextnum] + if ok { + returnSnr = returnSnr + value + } else { + returnSnr = returnSnr + nextnum + } + + } else { + returnSnr = returnSnr + nextnum + } + case "5": //后缀 + //判断是否开通了映射 + if snrData.Data5MappingToggle { + //查询对应的key Map + stdData, err := impl.SelectStd(snrData.Data5Mapper) + if err != nil { + return "", err + } + stdMap := make(map[string]string) + for _, v := range stdData { + val := v.StdefTyp + key := v.Bez + stdMap[key] = val + } + value, ok := stdMap[snrData.Postfix] + if ok { + returnSnr = returnSnr + value + } else { + returnSnr = returnSnr + snrData.Postfix + } + + } else { + returnSnr = returnSnr + snrData.Postfix + } + + } + } + //更新下一序列值 + updateNextSnr := nextSnr + snrData.Step + if updateNextSnr > snrData.EndNr { + switch strings.ToUpper(snrData.OverflowHandling) { + case "NO": + case "RESET": + updateNextSnr = snrData.StartNr + } + } + err = impl.UpdateSnrCache(snr, snrData.ResetNrRule, year, int(month), week, updateNextSnr, t) + return +} \ No newline at end of file diff --git a/models/base/Const.go b/models/base/Const.go index ad92ef2..eff63c3 100644 --- a/models/base/Const.go +++ b/models/base/Const.go @@ -6,6 +6,12 @@ const ( PROJECT_ACURA = "ACURA" PROJECT_NANSHA = "nansha" + // 流水号重置规则 + RESET_RULE_DAYLY = "DAILY" + RESET_RULE_WEEKLY = "WEEKLY" + RESET_RULE_MONTHLY = "MONTHLY" + RESET_RULE_YEARLY = "YEARLY" + WORKPLACE_CONIFG_WIRTE_SEAT = "SEAT" WORKPLACE_CONFIG_WRITE_SIGN = "SIGN" diff --git a/models/pln/pln.go b/models/pln/pln.go index b376ec1..bbe51e8 100644 --- a/models/pln/pln.go +++ b/models/pln/pln.go @@ -71,7 +71,7 @@ type HourProductData struct { //Dashboard数据展示 type DashboardPic struct { - DashboardDataPic1 *CutLine1 //图例1 + DashboardDataPic1 CutLine1 //图例1 DashboardDataPic2 []DefectItem //图例2 DashboardDataPic3 PerDashboardData //图例3 DashboardDataPic4 TargetItem //目标数据 diff --git a/services/pln/implments/CustOrder.service.impl.go b/services/pln/implments/CustOrder.service.impl.go index 3c02413..99b6ef2 100644 --- a/services/pln/implments/CustOrder.service.impl.go +++ b/services/pln/implments/CustOrder.service.impl.go @@ -31,6 +31,8 @@ import ( "strconv" "strings" "sync" + + //"sync" "time" ) @@ -871,11 +873,7 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde // 创建序列工单和工单状态 for i := 0; i < orderData.PlanQty; i++ { syncKey = custOrderId + "-" + strconv.Itoa(i) - serialNumber, err := snrDao.GetNextSnr(project.SerialOrderSnr) - if err != nil { - _ = session.Rollback() - return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error()) - } + for _, product := range productLi { // 获取生产使用的产线 var resourceId string @@ -911,12 +909,19 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde } else { resourceId = product.DefaultWorkLineId } - serialOrderId := product.MachineCode + serialNumber + product.ProductType + product.ColorValue planStartTime := orderData.PlanStartTime.Restore().Add(time.Duration(int(perDuration)*current) * time.Second) planEndTime := orderData.PlanStartTime.Restore().Add(time.Duration(int(perDuration)*(current+1)) * time.Second) current++ planStartDate := grmi.Date(planStartTime) planEndDate := grmi.Date(planEndTime) + + serialNumber, err := snrDao.GetNextSnrWithTime(project.SerialOrderSnr, planStartTime) + if err != nil { + _ = session.Rollback() + return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error()) + } + serialOrderId := product.MachineCode + serialNumber + product.ProductType + product.ColorValue + timeInt, err := strconv.Atoi(planStartTime.Format("060102150405")) if err != nil { _ = session.Rollback() @@ -1179,11 +1184,8 @@ func (impl *CustOrderServiceImplement) LockCustOrderForGantt(user *global.User, //second := serialNumber % 34 //firstStr := baseModel.NUMBER_MAP[first] //secondStr := baseModel.NUMBER_MAP[second] - serialNumber, err := snrDao.GetNextSnr(project.SerialOrderSnr) - if err != nil { - _ = session.Rollback() - return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error()) - } + + for _, product := range productLi { workLine, exist := workLineMap[product.DefaultWorkLineId] if !exist { @@ -1200,7 +1202,6 @@ func (impl *CustOrderServiceImplement) LockCustOrderForGantt(user *global.User, } //machineCode := product.MachineCode //serialOrderId := machineCode + yearStr + monthStr + dayStr + firstStr + secondStr + "0" + product.ColorValue - serialOrderId := product.MachineCode + serialNumber + product.ProductType + product.ColorValue schedKeyStr, err := snrDao.GetNextSnr(workLine.SchedKeySnr) if err != nil { _ = session.Rollback() @@ -1216,6 +1217,13 @@ func (impl *CustOrderServiceImplement) LockCustOrderForGantt(user *global.User, planEndTime := orderData.CustOrder.PlanStartTime.Restore().Add(time.Duration(int(perDuration)*(current+1)) * time.Second) planStartDate := grmi.Date(planStartTime) planEndDate := grmi.Date(planEndTime) + serialNumber, err := snrDao.GetNextSnrWithTime(project.SerialOrderSnr, planStartTime) + if err != nil { + _ = session.Rollback() + return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error()) + } + serialOrderId := product.MachineCode + serialNumber + product.ProductType + product.ColorValue + if i == 0 { isFirstPieceToggle = true } @@ -2343,6 +2351,7 @@ func (impl *CustOrderServiceImplement) Dashboard(user *global.User, workLineId s var dayModelEndTime int nowTime := time.Now() var WorkShift int + _ = WorkShift //构建开始时间和结束时间 startDayTime := utils.GetZeroTime(time.Now()) if dayModel.WorkShiftToggle { @@ -2514,39 +2523,39 @@ func (impl *CustOrderServiceImplement) Dashboard(user *global.User, workLineId s var wg sync.WaitGroup wg.Add(6) //图例001 - go func() { + go func(wg *sync.WaitGroup) { DashboardData.DashboardDataPic1, err1 = impl.SelectPic1(user, dayModel, workLineId) wg.Done() // 操作完成,减少一个计数 - }() + }(&wg ) //图例002 - go func() { + go func(wg *sync.WaitGroup) { DashboardData.DashboardDataPic2, err2 = impl.SelectDefectNumber(user, days, workLineId) wg.Done() // 操作完成,减少一个计数 - }() + }(&wg) //图例003 - go func() { + go func(wg *sync.WaitGroup) { DashboardData.DashboardDataPic3, err3 = impl.SelectPic3(user, DayModelHours, dayModelStartHour, dayModelEndHour, startDayTime, endDayTime, timeBeat, personNum, workLineId) wg.Done() // 操作完成,减少一个计数 - }() + }(&wg) //图例004 - go func() { + go func(wg *sync.WaitGroup) { DashboardData.DashboardDataPic4, err4 = impl.CountTarget(user, workLineId) wg.Done() // 操作完成,减少一个计数 - }() + }(&wg) //计算当前节拍,及其平均 - go func() { + go func(wg *sync.WaitGroup) { DashboardData.TeamTemPo, DashboardData.PerHourTemPo, err5 = impl.SelectTeamTemPo(user, dayModel, personNum, startDayTime, WorkShift, workLineId) wg.Done() // 操作完成,减少一个计数 - }() + }(&wg) - go func() { + go func(wg *sync.WaitGroup) { DashboardData.DashboardDataStatus, err6 = impl.SelectAndonInfo(user) wg.Done() // 操作完成,减少一个计数 - }() + }(&wg) wg.Wait() if err1 != nil { return nil, err1 @@ -2557,12 +2566,15 @@ func (impl *CustOrderServiceImplement) Dashboard(user *global.User, workLineId s if err3 != nil { return nil, err3 } + if err4 != nil { return nil, err4 } + if err5 != nil { return nil, err5 } + if err6 != nil { return nil, err6 } @@ -2571,6 +2583,7 @@ func (impl *CustOrderServiceImplement) Dashboard(user *global.User, workLineId s //节拍 DashboardData.CurrentTempo = timeBeat DashboardData.IppmTarge = ippmTarge + DashboardData.DateTimeNow = utils.TimeFormat(time.Now(), "yyyy-MM-dd HH:00") return DashboardData, err @@ -3103,7 +3116,7 @@ func (impl *CustOrderServiceImplement) SelectTeamTemPo(user *global.User, dayMod } //图例1 -func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *baseModel.DayModel, workLineId string) (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() @@ -3133,7 +3146,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b custOrderLi, err := custOrderDao.SelectRunningCustOrder(workLineId) if err != nil { - return nil, grmi.NewBusinessError("查询正在生产的客户订单失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询正在生产的客户订单失败, 错误:" + err.Error()) } var currentMeter int @@ -3143,23 +3156,23 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b custOrder := custOrderLi[0] productFamily, err := productFamilyDao.SelectOne(custOrder.ProductFamilyId) if err != nil { - return nil, grmi.NewBusinessError("查询派生数据失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询派生数据失败, 错误:" + err.Error()) } if productFamily == nil { - return nil, grmi.NewBusinessError("客户订单派生不存在, 派生ID:" + custOrder.ProductFamilyId) + return result, grmi.NewBusinessError("客户订单派生不存在, 派生ID:" + custOrder.ProductFamilyId) } if productFamily.Jph == 0 { - return nil, grmi.NewBusinessError("派生JPH为0 派生ID:" + custOrder.ProductFamilyId) + return result, grmi.NewBusinessError("派生JPH为0 派生ID:" + custOrder.ProductFamilyId) } currentMeter = int(float64(3600) / productFamily.Jph) productFamilyMeterMap[custOrder.ProductFamilyId] = float64(3600) / productFamily.Jph productFamilyMap[custOrder.ProductFamilyId] = productFamily productLi, err := productFamilyRelateDao.SelectProductByFamilyId(custOrder.ProjectId, custOrder.ProductFamilyId) if err != nil { - return nil, grmi.NewBusinessError("查询派生下总成数据失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询派生下总成数据失败, 错误:" + err.Error()) } if len(productLi) == 0 { - return nil, grmi.NewBusinessError("派生下未关联需要生产的座椅总成, 派生ID:" + custOrder.ProductFamilyId) + return result, grmi.NewBusinessError("派生下未关联需要生产的座椅总成, 派生ID:" + custOrder.ProductFamilyId) } productFamilyRelateMap[custOrder.ProductFamilyId] = make(map[string]interface{}, len(productLi)) for _, product := range productLi { @@ -3172,7 +3185,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b // 2. 实际结束时间为空 实际开始时间 < 当前时间 状态 > 26 && != 98 custOrderDataLi, err := custOrderDao.SelectProduceOrder(todayStart, endTime, workLineId) if err != nil { - return nil, grmi.NewBusinessError("查询客户订单失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询客户订单失败, 错误:" + err.Error()) } productFamilyAccomplishMap := make(map[int]map[string]model.HourProductData) @@ -3182,20 +3195,20 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b if !exist { productFamily, err = productFamilyDao.SelectOne(productFamilyId) if err != nil { - return nil, grmi.NewBusinessError("查询派生数据失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询派生数据失败, 错误:" + err.Error()) } if productFamily == nil { - return nil, grmi.NewBusinessError("客户订单中派生不存在, 派生Id:" + productFamilyId + ", 客户订单Id:" + custOrderData.CustOrder.CustOrderId) + return result, grmi.NewBusinessError("客户订单中派生不存在, 派生Id:" + productFamilyId + ", 客户订单Id:" + custOrderData.CustOrder.CustOrderId) } if productFamily.Jph == 0 { - return nil, grmi.NewBusinessError("派生JPH为0 派生ID:" + productFamilyId) + return result, grmi.NewBusinessError("派生JPH为0 派生ID:" + productFamilyId) } productLi, err := productFamilyRelateDao.SelectProductByFamilyId(custOrderData.CustOrder.ProjectId, productFamilyId) if err != nil { - return nil, grmi.NewBusinessError("查询派生下总成数据失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询派生下总成数据失败, 错误:" + err.Error()) } if len(productLi) == 0 { - return nil, grmi.NewBusinessError("派生下未关联需要生产的座椅总成, 派生ID:" + productFamilyId) + return result, grmi.NewBusinessError("派生下未关联需要生产的座椅总成, 派生ID:" + productFamilyId) } productFamilyRelateMap[productFamilyId] = make(map[string]interface{}, len(productLi)) for _, product := range productLi { @@ -3207,7 +3220,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b // 查询客户订单下的工单 serialOrderDataLi, err := serialOrderDao.SelectByCustOrderIdForDashboard(custOrderData.CustOrder.CustOrderId, todayStart, endTime) if err != nil { - return nil, grmi.NewBusinessError("查询客户订单下工单失败, 错误:" + err.Error()) + return result, grmi.NewBusinessError("查询客户订单下工单失败, 错误:" + err.Error()) } // 记录生产每个台套下面的工单数量 syncKeyMap := make(map[string][]omModel.SerialOrder) @@ -3275,7 +3288,7 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b for hour, _ := range productFamilyAccomplishMap { displayHourLi = append(displayHourLi, strconv.Itoa(hour)+"时") } - result = &model.CutLine1{ + result = model.CutLine1{ TimeLi: displayHourLi, Standard: 1.0, ProductFamilyMeter: currentMeter, @@ -3304,7 +3317,10 @@ func (impl *CustOrderServiceImplement) SelectPic1(user *global.User, dayModel *b usedTime := impl.GetUsefulTime(currentTime, productFamilyProductData.LastDoneTime, timeModelList) currentTime = productFamilyProductData.LastDoneTime meter := productFamilyMeterMap[productFamilyProductData.ProductFamilyId] - percent := meter / (float64(usedTime) / float64(productFamilyProductData.Qty)) * (float64(usedTime) / float64(hourAllUsedTime)) + var percent float64 + if productFamilyProductData.Qty != 0 && usedTime != 0 && hourAllUsedTime != 0 { + percent = meter / (float64(usedTime) / float64(productFamilyProductData.Qty)) * (float64(usedTime) / float64(hourAllUsedTime)) + } hourPercent += percent } result.ProduceData = append(result.ProduceData, hourPercent) diff --git a/utils/time.go b/utils/time.go index c545ea4..7805149 100644 --- a/utils/time.go +++ b/utils/time.go @@ -365,8 +365,8 @@ func GetDuration(startTime, endTime time.Time, EffFactor float64) (duration time } // GenerateTimeFormatForAcura 生成讴歌工单流水号中日期的格式 -func GenerateTimeFormatForAcura() (dateStr string, err error) { - year, month, day := time.Now().Date() +func GenerateTimeFormatForAcura(t time.Time) (dateStr string, err error) { + year, month, day := t.Date() YearStr, exist := YEAR_MAP[year] if !exist { err = errors.New("年份映射值不存在") -- 2.30.1.windows.1 From 704ed54fce751c7a5b004db4dd4fb69e911f7955 Mon Sep 17 00:00:00 2001 From: zhangxin Date: Sun, 24 Apr 2022 16:49:36 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=91=E8=BF=90?= =?UTF-8?q?=E7=BF=BB=E8=BD=A6=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jit/implments/ShipOrder.service.impl.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/services/jit/implments/ShipOrder.service.impl.go b/services/jit/implments/ShipOrder.service.impl.go index 1b32186..837078f 100644 --- a/services/jit/implments/ShipOrder.service.impl.go +++ b/services/jit/implments/ShipOrder.service.impl.go @@ -18,6 +18,7 @@ import ( model "LAPP_ACURA_MOM_BACKEND/models/jit" omModel "LAPP_ACURA_MOM_BACKEND/models/om" "LAPP_ACURA_MOM_BACKEND/utils" + "fmt" json "github.com/json-iterator/go" "github.com/kataras/iris/v12" "strconv" @@ -1351,6 +1352,7 @@ func (impl *ShipOrderServiceImplement) ChangeAdvanceToFormal(user *global.User, advanceShipOrderDataMap[key] += 1 } } + fmt.Println("advanceShipOrderDataMap:", advanceShipOrderDataMap) formalShipOrderItemLi, err := shipOrderLstDao.Select([]grmi.Predicate{meta.ShipOrderItemLst_ShipOrderId.NewPredicate(grmi.Equal, formalShipOrderId)}, []grmi.Field{meta.ShipOrderItemLst_Pos}) if err != nil { return grmi.NewBusinessError("查询正式发运单子项失败, error:" + err.Error()) @@ -1362,9 +1364,9 @@ func (impl *ShipOrderServiceImplement) ChangeAdvanceToFormal(user *global.User, formalShipOrderCarSetMap[shipOrderItem.PackTemplateId] = 1 } else { formalShipOrderCarSetMap[shipOrderItem.PackTemplateId] += 1 - } } + formalShipOrderDataMap := make(map[string]int) for productFamilyId, qty := range formalShipOrderCarSetMap { productLi, err := productFamilyRelateDao.SelectPackProductByFamilyId(formalShipOrder.ProjectId, productFamilyId) if err != nil { @@ -1374,12 +1376,22 @@ func (impl *ShipOrderServiceImplement) ChangeAdvanceToFormal(user *global.User, for _, product := range productLi { key += product.ProductId } + _, exist := formalShipOrderDataMap[key] + if !exist { + formalShipOrderDataMap[key] = qty + } else { + formalShipOrderDataMap[key] += qty + } + + } + for key, qty := range formalShipOrderDataMap { advanceQty, exist := advanceShipOrderDataMap[key] if !exist { - return grmi.NewBusinessError("两个发运单发运子项不匹配, 包装模板不匹配, 包装模板ID:" + productFamilyId) + fmt.Println("key:", key) + return grmi.NewBusinessError("两个发运单发运子项不匹配, 包装模板不匹配") } if qty != advanceQty { - return grmi.NewBusinessError("两个发运单发运子项不匹配, 包装模板数量不匹配, 包装模板ID:" + productFamilyId) + return grmi.NewBusinessError("两个发运单发运子项不匹配, 包装模板数量不匹配") } } //advanceShipOrderItemLi, err := shipOrderLstDao.Select([]grmi.Predicate{meta.ShipOrderItemLst_ShipOrderId.NewPredicate(grmi.Equal, advanceShipOrderId), meta.ShipOrderItemLst_Status.NewPredicate(grmi.Equal, model.SHIP_STATUS_CLOSED)}, []grmi.Field{meta.ShipOrderItemLst_Pos}) -- 2.30.1.windows.1 From 2ece65a86c65df3a2df49ba6af39ffcb232cdf52 Mon Sep 17 00:00:00 2001 From: zhangxin Date: Sun, 24 Apr 2022 16:54:36 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=89=B9=E6=AC=A1?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E4=BC=A0=E5=85=A5=E8=AE=A1=E5=88=92=E6=97=A5?= =?UTF-8?q?=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/om/SerialOrder.service.go | 2 +- .../om/implments/SerialOrder.service.impl.go | 27 ++++++++++--------- web/controllers/om/SerialOrder.rest.go | 5 ++-- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/services/om/SerialOrder.service.go b/services/om/SerialOrder.service.go index 1bde81f..39d9c66 100644 --- a/services/om/SerialOrder.service.go +++ b/services/om/SerialOrder.service.go @@ -513,7 +513,7 @@ type SerialOrderService interface { PrintRuleInfo(user *global.User, session *xorm.Session, serialOrderStep *model.SerialOrderStepLst, rule *baseModel.PrintBasicRuleInfo, printTemplate *baseModel.LabelTemplateHead, article *baseModel.Article, bkFlag bool, planDate string) error ExtractArtId(bomHead *meModel.BomHead) map[string]int ExtractEOL(session *xorm.Session, user *global.User, serialOrder *model.SerialOrder) (status bool, remark string, recordT time.Time, err error) - CreateBatchSerialOrder(user *global.User, productId string, projectId string, workLineId string, qty int, preSchKey int, priority int) error + CreateBatchSerialOrder(user *global.User, productId string, projectId string, workLineId string, qty int, preSchKey int, priority int, planDate string) error TraceSubArticleBatch(user *global.User, barcode string, paging *grmi.Paging) (grmi.PagingResult, error) ExportTraceSubArticleBatch(user *global.User, barcode string) (string, error) CancelMultiSerialOrder(user *global.User, serialOrderIdLi []string) error diff --git a/services/om/implments/SerialOrder.service.impl.go b/services/om/implments/SerialOrder.service.impl.go index 727ef2c..5acce64 100644 --- a/services/om/implments/SerialOrder.service.impl.go +++ b/services/om/implments/SerialOrder.service.impl.go @@ -18,6 +18,7 @@ import ( eolModel "LAPP_ACURA_MOM_BACKEND/models/eol" meModel "LAPP_ACURA_MOM_BACKEND/models/me" model "LAPP_ACURA_MOM_BACKEND/models/om" + "LAPP_ACURA_MOM_BACKEND/utils" "github.com/go-xorm/xorm" "strconv" "strings" @@ -3876,10 +3877,14 @@ func (impl *SerialOrderServiceImplement) GetSerialOrderDetailTrace(user *global. * @Reference LAPP_ACURA_MOM_BACKEND/services/om/SerialOrderService.CreateBatchSerialOrder * ******************************************************************************/ -func (impl *SerialOrderServiceImplement) CreateBatchSerialOrder(user *global.User, productId string, projectId string, workLineId string, qty int, preSchKey int, priority int) error { +func (impl *SerialOrderServiceImplement) CreateBatchSerialOrder(user *global.User, productId string, projectId string, workLineId string, qty int, preSchKey int, priority int, planDate string) error { engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() + planDateT, err := time.ParseInLocation(grmi.DateOutFormat, planDate, utils.TimezoneLocation) + if err != nil { + return grmi.NewBusinessError("计划日期格式错误") + } productDao := meDal.NewProductDAO(session, user.PlantNr, user.UserId) serialOrderDao := dal.NewSerialOrderDAO(session, user.PlantNr, user.UserId) serialOrderStatusDao := dal.NewSerialOrderStatusDAO(session, user.PlantNr, user.UserId) @@ -3925,9 +3930,8 @@ func (impl *SerialOrderServiceImplement) CreateBatchSerialOrder(user *global.Use return grmi.NewBusinessError("开启事务失败, 错误:" + err.Error()) } if priority != 0 { - now := time.Now() for i := 1; i <= qty; i++ { - serialNumber, err := snrDao.GetNextSnr(project.INTSerialOrderSnr) + serialNumber, err := snrDao.GetNextSnrWithTime(project.INTSerialOrderSnr, planDateT) if err != nil { _ = session.Rollback() return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error()) @@ -3945,10 +3949,10 @@ func (impl *SerialOrderServiceImplement) CreateBatchSerialOrder(user *global.Use PlanResourceId: workLineId, UsedResourceId: workLineId, PlanQty: 1, - PlanStartDate: grmi.Date(now), - PlanEndDate: grmi.Date(now), - PlanStartTime: grmi.DateTime(now), - PlanEndTime: grmi.DateTime(now), + PlanStartDate: grmi.Date(planDateT), + PlanEndDate: grmi.Date(planDateT), + PlanStartTime: grmi.DateTime(planDateT), + PlanEndTime: grmi.DateTime(planDateT), PickingFlag: product.PickingFlag, } err = serialOrderDao.InsertOne(&insertOrder) @@ -3990,7 +3994,6 @@ func (impl *SerialOrderServiceImplement) CreateBatchSerialOrder(user *global.Use _ = session.Rollback() return grmi.NewBusinessError("生成的排序Key已存在工单") } - now := time.Now() for i := 1; i <= qty; i++ { serialNumber, err := snrDao.GetNextSnr(project.INTSerialOrderSnr) if err != nil { @@ -4013,10 +4016,10 @@ func (impl *SerialOrderServiceImplement) CreateBatchSerialOrder(user *global.Use PlanResourceId: workLineId, UsedResourceId: workLineId, PlanQty: 1, - PlanStartDate: grmi.Date(now), - PlanEndDate: grmi.Date(now), - PlanStartTime: grmi.DateTime(now), - PlanEndTime: grmi.DateTime(now), + PlanStartDate: grmi.Date(planDateT), + PlanEndDate: grmi.Date(planDateT), + PlanStartTime: grmi.DateTime(planDateT), + PlanEndTime: grmi.DateTime(planDateT), PickingFlag: product.PickingFlag, } err = serialOrderDao.InsertOne(&insertOrder) diff --git a/web/controllers/om/SerialOrder.rest.go b/web/controllers/om/SerialOrder.rest.go index c5e8291..c198be2 100644 --- a/web/controllers/om/SerialOrder.rest.go +++ b/web/controllers/om/SerialOrder.rest.go @@ -1130,7 +1130,7 @@ func RegisterDisplaySerialOrderTrace(party router.Party, path string, method fun * @Date : 2022-01-11 * ******************************************************************************/ -func RegisterCreateBatchSerialOrder(party router.Party, path string, method func(user *global.User, productId string, projectId string, workLineId string, qty int, preSchKey int, priority int) error) { +func RegisterCreateBatchSerialOrder(party router.Party, path string, method func(user *global.User, productId string, projectId string, workLineId string, qty int, preSchKey int, priority int, planDate string) error) { party.Post(path, func(ctx iris.Context) { user, ok := jwts.ParseToken(ctx) @@ -1144,13 +1144,14 @@ func RegisterCreateBatchSerialOrder(party router.Party, path string, method func Qty int `json:"OM_SerialOrder-Qty"` PreSchedKey int `json:"OM_SerialOrder-PreSchedKey"` Priority int `json:"OM_SerialOrder-Priority"` + PlanDate string `json:"OM_SerialOrder-PlanDate"` } var data Req if err := ctx.ReadJSON(&data); err != nil { supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) return } - err := method(user, data.ProductId, data.ProjectId, data.WorkLineId, data.Qty, data.PreSchedKey, data.Priority) + err := method(user, data.ProductId, data.ProjectId, data.WorkLineId, data.Qty, data.PreSchedKey, data.Priority, data.PlanDate) if err != nil { supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) return -- 2.30.1.windows.1