Browse Source

添加适配新的流水号逻辑

pull/77/head
zhangxin 3 years ago
parent
commit
77d0dfd7bf
6 changed files with 178 additions and 89 deletions
  1. +2
    -1
      services/base/Snr.service.go
  2. +2
    -17
      services/base/implments/Snr.service.impl.go
  3. +33
    -25
      services/om/implments/SerialOrder.service.impl.go
  4. +61
    -46
      services/pln/implments/CustOrder.service.impl.go
  5. +59
    -0
      utils/const.go
  6. +21
    -0
      utils/time.go

+ 2
- 1
services/base/Snr.service.go View File

@ -7,6 +7,7 @@ import (
"LAPP_ACURA_MOM_BACKEND/grmi" "LAPP_ACURA_MOM_BACKEND/grmi"
model "LAPP_ACURA_MOM_BACKEND/models/base" model "LAPP_ACURA_MOM_BACKEND/models/base"
"LAPP_ACURA_MOM_BACKEND/services/base/implments" "LAPP_ACURA_MOM_BACKEND/services/base/implments"
"github.com/go-xorm/xorm"
) )
/****************************************************************************** /******************************************************************************
@ -213,7 +214,7 @@ type SnrService interface {
* @Date : 2021-08-20 11:11:05 * @Date : 2021-08-20 11:11:05
* *
******************************************************************************/ ******************************************************************************/
GetNextSnr(user *global.User, snr string) (retsnr string, err error)
GetNextSnr(user *global.User, session *xorm.Session, snr string) (retsnr string, err error)
} }
/****************************************************************************** /******************************************************************************


+ 2
- 17
services/base/implments/Snr.service.impl.go View File

@ -10,6 +10,7 @@ import (
meta "LAPP_ACURA_MOM_BACKEND/meta/base" meta "LAPP_ACURA_MOM_BACKEND/meta/base"
model "LAPP_ACURA_MOM_BACKEND/models/base" model "LAPP_ACURA_MOM_BACKEND/models/base"
"LAPP_ACURA_MOM_BACKEND/utils" "LAPP_ACURA_MOM_BACKEND/utils"
"github.com/go-xorm/xorm"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -349,7 +350,7 @@ func (impl *SnrServiceImplement) Update(user *global.User, entities *[]model.Snr
* @Reference LAPP_ACURA_MOM_BACKEND/services/base/SnrService.GetNextSnr * @Reference LAPP_ACURA_MOM_BACKEND/services/base/SnrService.GetNextSnr
* *
******************************************************************************/ ******************************************************************************/
func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (retsnr string, err error) {
func (impl *SnrServiceImplement) GetNextSnr(user *global.User, session *xorm.Session, snr string) (retsnr string, err error) {
var ( var (
lastupdtime time.Time lastupdtime time.Time
y, l_y, d, l_d, wk, l_wk int y, l_y, d, l_d, wk, l_wk int
@ -357,21 +358,12 @@ func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (rets
layout []byte layout []byte
i, nextsnr int i, nextsnr int
) )
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
err = session.Begin()
if err != nil {
return
}
dao := dal.NewSnrDAO(session, user.PlantNr, user.UserId) dao := dal.NewSnrDAO(session, user.PlantNr, user.UserId)
stdDao := dal.NewStdefDAO(session,user.UserId) stdDao := dal.NewStdefDAO(session,user.UserId)
snrtab, err := dao.SelectOne(snr) snrtab, err := dao.SelectOne(snr)
if err != nil { if err != nil {
session.Rollback()
return return
} }
@ -432,7 +424,6 @@ func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (rets
//查询对应的key Map //查询对应的key Map
stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data1Mapper)},nil) stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data1Mapper)},nil)
if err != nil{ if err != nil{
session.Rollback()
return "",err return "",err
} }
stdMap := make(map[string]string) stdMap := make(map[string]string)
@ -457,7 +448,6 @@ func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (rets
//查询对应的key Map //查询对应的key Map
stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data2Mapper)},nil) stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data2Mapper)},nil)
if err != nil{ if err != nil{
session.Rollback()
return "",err return "",err
} }
stdMap := make(map[string]string) stdMap := make(map[string]string)
@ -484,7 +474,6 @@ func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (rets
//查询对应的key Map //查询对应的key Map
stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data3Mapper)},nil) stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data3Mapper)},nil)
if err != nil{ if err != nil{
session.Rollback()
return "",err return "",err
} }
stdMap := make(map[string]string) stdMap := make(map[string]string)
@ -517,7 +506,6 @@ func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (rets
//查询对应的key Map //查询对应的key Map
stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data5Mapper)},nil) stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data5Mapper)},nil)
if err != nil{ if err != nil{
session.Rollback()
return "",err return "",err
} }
stdMap := make(map[string]string) stdMap := make(map[string]string)
@ -553,10 +541,7 @@ func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (rets
} }
if err = dao.UpdateOne(snrtab); err != nil{ if err = dao.UpdateOne(snrtab); err != nil{
session.Rollback()
return return
} }
session.Commit()
return return
} }

+ 33
- 25
services/om/implments/SerialOrder.service.impl.go View File

@ -3,6 +3,8 @@
package implments package implments
import ( import (
baseSvr "LAPP_ACURA_MOM_BACKEND/services/base"
baseDal "LAPP_ACURA_MOM_BACKEND/dao/base" baseDal "LAPP_ACURA_MOM_BACKEND/dao/base"
meDal "LAPP_ACURA_MOM_BACKEND/dao/me" meDal "LAPP_ACURA_MOM_BACKEND/dao/me"
dal "LAPP_ACURA_MOM_BACKEND/dao/om" dal "LAPP_ACURA_MOM_BACKEND/dao/om"
@ -162,34 +164,41 @@ func (impl *SerialOrderServiceImplement) InsertOne(user *global.User, entity *mo
} }
dao := dal.NewSerialOrderDAO(session, user.PlantNr, user.UserId) dao := dal.NewSerialOrderDAO(session, user.PlantNr, user.UserId)
statusDao := dal.NewSerialOrderStatusDAO(session, user.PlantNr, user.UserId) statusDao := dal.NewSerialOrderStatusDAO(session, user.PlantNr, user.UserId)
snrDao := baseDal.NewSnrDAO(session, user.PlantNr, user.UserId)
serialNumberStr, err := snrDao.GetNextSnr(project.SerialOrderSnr)
//snrDao := baseDal.NewSnrDAO(session, user.PlantNr, user.UserId)
//serialNumberStr, err := snrDao.GetNextSnr(project.SerialOrderSnr)
//if err != nil {
// _ = session.Rollback()
// return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error())
//}
//serialNumber, err := strconv.Atoi(serialNumberStr)
//if err != nil {
// _ = session.Rollback()
// return grmi.NewBusinessError("流水号规则错误, error:" + err.Error())
//}
//first := serialNumber / 34
//if first > 34 {
// _ = session.Rollback()
// return grmi.NewBusinessError("超过流水号支持的范围")
//}
//second := serialNumber % 34
//firstStr := baseModel.NUMBER_MAP[first]
//secondStr := baseModel.NUMBER_MAP[second]
//machineCode := product.MachineCode
//now := time.Now()
//year := now.Year()
//month := int(now.Month())
//day := now.Day()
//yearStr := baseModel.YEAR_MAP[year]
//monthStr := baseModel.MONTH_MAP[month]
//dayStr := baseModel.DAY_MAP[day]
//serialOrderId := machineCode + yearStr + monthStr + dayStr + firstStr + secondStr + "0" + product.ColorValue
snrSvr := baseSvr.NewSnrService()
serialNumber, err := snrSvr.GetNextSnr(user, session, project.SerialOrderSnr)
if err != nil { if err != nil {
_ = session.Rollback() _ = session.Rollback()
return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error()) return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error())
} }
serialNumber, err := strconv.Atoi(serialNumberStr)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("流水号规则错误, error:" + err.Error())
}
first := serialNumber / 34
if first > 34 {
_ = session.Rollback()
return grmi.NewBusinessError("超过流水号支持的范围")
}
second := serialNumber % 34
firstStr := baseModel.NUMBER_MAP[first]
secondStr := baseModel.NUMBER_MAP[second]
machineCode := product.MachineCode
now := time.Now()
year := now.Year()
month := int(now.Month())
day := now.Day()
yearStr := baseModel.YEAR_MAP[year]
monthStr := baseModel.MONTH_MAP[month]
dayStr := baseModel.DAY_MAP[day]
serialOrderId := machineCode + yearStr + monthStr + dayStr + firstStr + secondStr + "0" + product.ColorValue
serialOrderId := product.MachineCode + serialNumber + product.ColorValue
entity.SerialOrderId = serialOrderId entity.SerialOrderId = serialOrderId
err = dao.InsertOne(entity) err = dao.InsertOne(entity)
if err != nil { if err != nil {
@ -1718,7 +1727,6 @@ func (impl *SerialOrderServiceImplement) GenerateCraftDataByCustOrder(user *glob
for productId, serialOrderLi := range productSerialOrderMap { for productId, serialOrderLi := range productSerialOrderMap {
article, err := articleDao.SelectOne(productId) article, err := articleDao.SelectOne(productId)
if err != nil { if err != nil {
_ = session.Rollback() _ = session.Rollback()


+ 61
- 46
services/pln/implments/CustOrder.service.impl.go View File

@ -16,6 +16,7 @@ import (
meModel "LAPP_ACURA_MOM_BACKEND/models/me" meModel "LAPP_ACURA_MOM_BACKEND/models/me"
omModel "LAPP_ACURA_MOM_BACKEND/models/om" omModel "LAPP_ACURA_MOM_BACKEND/models/om"
model "LAPP_ACURA_MOM_BACKEND/models/pln" model "LAPP_ACURA_MOM_BACKEND/models/pln"
baseSvr "LAPP_ACURA_MOM_BACKEND/services/base"
omSvr "LAPP_ACURA_MOM_BACKEND/services/om" omSvr "LAPP_ACURA_MOM_BACKEND/services/om"
"github.com/go-xorm/xorm" "github.com/go-xorm/xorm"
"strconv" "strconv"
@ -506,15 +507,15 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde
if err := session.Begin(); err != nil { if err := session.Begin(); err != nil {
return err return err
} }
now := time.Now()
//now := time.Now()
today := time.Now().Format("060102") today := time.Now().Format("060102")
todayInt, _ := strconv.Atoi(today) todayInt, _ := strconv.Atoi(today)
year := now.Year()
month := int(now.Month())
day := now.Day()
yearStr := baseModel.YEAR_MAP[year]
monthStr := baseModel.MONTH_MAP[month]
dayStr := baseModel.DAY_MAP[day]
//year := now.Year()
//month := int(now.Month())
//day := now.Day()
//yearStr := baseModel.YEAR_MAP[year]
//monthStr := baseModel.MONTH_MAP[month]
//dayStr := baseModel.DAY_MAP[day]
custOrderDao := dal.NewCustOrderDAO(session, user.PlantNr, user.UserId) custOrderDao := dal.NewCustOrderDAO(session, user.PlantNr, user.UserId)
projectDao := meDal.NewProjectDAO(session, user.PlantNr, user.UserId) projectDao := meDal.NewProjectDAO(session, user.PlantNr, user.UserId)
snrDao := baseDal.NewSnrDAO(session, user.PlantNr, user.UserId) snrDao := baseDal.NewSnrDAO(session, user.PlantNr, user.UserId)
@ -575,24 +576,30 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde
// 创建序列工单和工单状态 // 创建序列工单和工单状态
for i := 0; i < orderData.CustOrder.PlanQty; i++ { for i := 0; i < orderData.CustOrder.PlanQty; i++ {
syncKey = custOrderId + "-" + strconv.Itoa(i) syncKey = custOrderId + "-" + strconv.Itoa(i)
serialNumberStr, err := snrDao.GetNextSnr(project.SerialOrderSnr)
//serialNumberStr, err := snrDao.GetNextSnr(project.SerialOrderSnr)
//if err != nil {
// _ = session.Rollback()
// return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error())
//}
//serialNumber, err := strconv.Atoi(serialNumberStr)
//if err != nil {
// _ = session.Rollback()
// return grmi.NewBusinessError("流水号规则错误, error:" + err.Error())
//}
//first := serialNumber / 34
//if first > 34 {
// _ = session.Rollback()
// return grmi.NewBusinessError("超过流水号支持的范围")
//}
//second := serialNumber % 34
//firstStr := baseModel.NUMBER_MAP[first]
//secondStr := baseModel.NUMBER_MAP[second]
snrSvr := baseSvr.NewSnrService()
serialNumber, err := snrSvr.GetNextSnr(user, session, project.SerialOrderSnr)
if err != nil { if err != nil {
_ = session.Rollback() _ = session.Rollback()
return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error()) return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error())
} }
serialNumber, err := strconv.Atoi(serialNumberStr)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("流水号规则错误, error:" + err.Error())
}
first := serialNumber / 34
if first > 34 {
_ = session.Rollback()
return grmi.NewBusinessError("超过流水号支持的范围")
}
second := serialNumber % 34
firstStr := baseModel.NUMBER_MAP[first]
secondStr := baseModel.NUMBER_MAP[second]
for _, product := range productLi { for _, product := range productLi {
workLine, exist := workLineMap[product.DefaultWorkLineId] workLine, exist := workLineMap[product.DefaultWorkLineId]
if !exist { if !exist {
@ -607,8 +614,9 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde
} }
workLineMap[product.DefaultWorkLineId] = workLine workLineMap[product.DefaultWorkLineId] = workLine
} }
machineCode := product.MachineCode
serialOrderId := machineCode + yearStr + monthStr + dayStr + firstStr + secondStr + "0" + product.ColorValue
//machineCode := product.MachineCode
//serialOrderId := machineCode + yearStr + monthStr + dayStr + firstStr + secondStr + "0" + product.ColorValue
serialOrderId := product.MachineCode + serialNumber + product.ColorValue
schedKeyStr, err := snrDao.GetNextSnr(workLine.SchedKeySnr) schedKeyStr, err := snrDao.GetNextSnr(workLine.SchedKeySnr)
if err != nil { if err != nil {
_ = session.Rollback() _ = session.Rollback()
@ -744,15 +752,15 @@ func (impl *CustOrderServiceImplement) LockCustOrderForGantt(user *global.User,
if err := session.Begin(); err != nil { if err := session.Begin(); err != nil {
return err return err
} }
now := time.Now()
//now := time.Now()
today := time.Now().Format("060102") today := time.Now().Format("060102")
todayInt, _ := strconv.Atoi(today) todayInt, _ := strconv.Atoi(today)
year := now.Year()
month := int(now.Month())
day := now.Day()
yearStr := baseModel.YEAR_MAP[year]
monthStr := baseModel.MONTH_MAP[month]
dayStr := baseModel.DAY_MAP[day]
//year := now.Year()
//month := int(now.Month())
//day := now.Day()
//yearStr := baseModel.YEAR_MAP[year]
//monthStr := baseModel.MONTH_MAP[month]
//dayStr := baseModel.DAY_MAP[day]
custOrderDao := dal.NewCustOrderDAO(session, user.PlantNr, user.UserId) custOrderDao := dal.NewCustOrderDAO(session, user.PlantNr, user.UserId)
projectDao := meDal.NewProjectDAO(session, user.PlantNr, user.UserId) projectDao := meDal.NewProjectDAO(session, user.PlantNr, user.UserId)
snrDao := baseDal.NewSnrDAO(session, user.PlantNr, user.UserId) snrDao := baseDal.NewSnrDAO(session, user.PlantNr, user.UserId)
@ -813,24 +821,30 @@ func (impl *CustOrderServiceImplement) LockCustOrderForGantt(user *global.User,
// 创建序列工单和工单状态 // 创建序列工单和工单状态
for i := 0; i < orderData.CustOrder.PlanQty; i++ { for i := 0; i < orderData.CustOrder.PlanQty; i++ {
syncKey = custOrderId + "-" + strconv.Itoa(i+1) syncKey = custOrderId + "-" + strconv.Itoa(i+1)
serialNumberStr, err := snrDao.GetNextSnr(project.SerialOrderSnr)
//serialNumberStr, err := snrDao.GetNextSnr(project.SerialOrderSnr)
//if err != nil {
// _ = session.Rollback()
// return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error())
//}
//serialNumber, err := strconv.Atoi(serialNumberStr)
//if err != nil {
// _ = session.Rollback()
// return grmi.NewBusinessError("流水号规则错误, error:" + err.Error())
//}
//first := serialNumber / 34
//if first > 34 {
// _ = session.Rollback()
// return grmi.NewBusinessError("超过流水号支持的范围")
//}
//second := serialNumber % 34
//firstStr := baseModel.NUMBER_MAP[first]
//secondStr := baseModel.NUMBER_MAP[second]
snrSvr := baseSvr.NewSnrService()
serialNumber, err := snrSvr.GetNextSnr(user, session, project.SerialOrderSnr)
if err != nil { if err != nil {
_ = session.Rollback() _ = session.Rollback()
return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error()) return grmi.NewBusinessError("生成工单流水号失败, error:" + err.Error())
} }
serialNumber, err := strconv.Atoi(serialNumberStr)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("流水号规则错误, error:" + err.Error())
}
first := serialNumber / 34
if first > 34 {
_ = session.Rollback()
return grmi.NewBusinessError("超过流水号支持的范围")
}
second := serialNumber % 34
firstStr := baseModel.NUMBER_MAP[first]
secondStr := baseModel.NUMBER_MAP[second]
for _, product := range productLi { for _, product := range productLi {
workLine, exist := workLineMap[product.DefaultWorkLineId] workLine, exist := workLineMap[product.DefaultWorkLineId]
if !exist { if !exist {
@ -845,8 +859,9 @@ func (impl *CustOrderServiceImplement) LockCustOrderForGantt(user *global.User,
} }
workLineMap[product.DefaultWorkLineId] = workLine workLineMap[product.DefaultWorkLineId] = workLine
} }
machineCode := product.MachineCode
serialOrderId := machineCode + yearStr + monthStr + dayStr + firstStr + secondStr + "0" + product.ColorValue
//machineCode := product.MachineCode
//serialOrderId := machineCode + yearStr + monthStr + dayStr + firstStr + secondStr + "0" + product.ColorValue
serialOrderId := product.MachineCode + serialNumber + product.ColorValue
schedKeyStr, err := snrDao.GetNextSnr(workLine.SchedKeySnr) schedKeyStr, err := snrDao.GetNextSnr(workLine.SchedKeySnr)
if err != nil { if err != nil {
_ = session.Rollback() _ = session.Rollback()


+ 59
- 0
utils/const.go View File

@ -0,0 +1,59 @@
package utils
var YEAR_MAP = map[int]string{
2021: "M",
2022: "N",
2023: "P",
2024: "Q",
}
var MONTH_MAP = map[int]string{
1: "1",
2: "2",
3: "3",
4: "4",
5: "5",
6: "6",
7: "7",
8: "8",
9: "9",
10: "A",
11: "B",
12: "C",
}
var DAY_MAP = map[int]string{
0: "0",
1: "1",
2: "2",
3: "3",
4: "4",
5: "5",
6: "6",
7: "7",
8: "8",
9: "9",
10: "A",
11: "B",
12: "C",
13: "D",
14: "E",
15: "F",
16: "G",
17: "H",
18: "J",
19: "K",
20: "L",
21: "M",
22: "N",
23: "P",
24: "Q",
25: "R",
26: "S",
27: "T",
28: "U",
29: "V",
30: "W",
31: "X",
}

+ 21
- 0
utils/time.go View File

@ -363,3 +363,24 @@ func GetDuration(startTime, endTime time.Time, EffFactor float64) (duration time
duration = time.Duration(seconds) * time.Second duration = time.Duration(seconds) * time.Second
return return
} }
// GenerateTimeFormatForAcura 生成讴歌工单流水号中日期的格式
func GenerateTimeFormatForAcura() (dateStr string, err error) {
year, month, day := time.Now().Date()
YearStr, exist := YEAR_MAP[year]
if !exist {
err = errors.New("年份映射值不存在")
return
}
monthStr, exist := MONTH_MAP[int(month)]
if !exist {
err = errors.New("月份映射值不存在")
return
}
dayStr, exist := DAY_MAP[day]
if !exist {
err = errors.New("天映射值不存在")
return
}
return YearStr + monthStr + dayStr, nil
}

Loading…
Cancel
Save