diff --git a/services/base/Snr.service.go b/services/base/Snr.service.go index ff5673d..11a3f6f 100644 --- a/services/base/Snr.service.go +++ b/services/base/Snr.service.go @@ -7,6 +7,7 @@ import ( "LAPP_ACURA_MOM_BACKEND/grmi" model "LAPP_ACURA_MOM_BACKEND/models/base" "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 * ******************************************************************************/ - GetNextSnr(user *global.User, snr string) (retsnr string, err error) + GetNextSnr(user *global.User, session *xorm.Session, snr string) (retsnr string, err error) } /****************************************************************************** diff --git a/services/base/implments/Snr.service.impl.go b/services/base/implments/Snr.service.impl.go index 633c8cc..8bbe304 100644 --- a/services/base/implments/Snr.service.impl.go +++ b/services/base/implments/Snr.service.impl.go @@ -10,6 +10,7 @@ import ( meta "LAPP_ACURA_MOM_BACKEND/meta/base" model "LAPP_ACURA_MOM_BACKEND/models/base" "LAPP_ACURA_MOM_BACKEND/utils" + "github.com/go-xorm/xorm" "strconv" "strings" "time" @@ -349,7 +350,7 @@ func (impl *SnrServiceImplement) Update(user *global.User, entities *[]model.Snr * @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 ( lastupdtime time.Time 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 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) stdDao := dal.NewStdefDAO(session,user.UserId) snrtab, err := dao.SelectOne(snr) if err != nil { - session.Rollback() return } @@ -432,7 +424,6 @@ func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (rets //查询对应的key Map stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data1Mapper)},nil) if err != nil{ - session.Rollback() return "",err } stdMap := make(map[string]string) @@ -457,7 +448,6 @@ func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (rets //查询对应的key Map stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data2Mapper)},nil) if err != nil{ - session.Rollback() return "",err } stdMap := make(map[string]string) @@ -484,7 +474,6 @@ func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (rets //查询对应的key Map stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data3Mapper)},nil) if err != nil{ - session.Rollback() return "",err } stdMap := make(map[string]string) @@ -517,7 +506,6 @@ func (impl *SnrServiceImplement) GetNextSnr(user *global.User, snr string) (rets //查询对应的key Map stdData,err := stdDao.Select([]grmi.Predicate{meta.Stdef_StatId.NewPredicate(grmi.Equal, snrtab.Data5Mapper)},nil) if err != nil{ - session.Rollback() return "",err } 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{ - session.Rollback() return } - session.Commit() - return } diff --git a/services/om/implments/SerialOrder.service.impl.go b/services/om/implments/SerialOrder.service.impl.go index db583c8..c622e35 100644 --- a/services/om/implments/SerialOrder.service.impl.go +++ b/services/om/implments/SerialOrder.service.impl.go @@ -3,6 +3,8 @@ package implments import ( + baseSvr "LAPP_ACURA_MOM_BACKEND/services/base" + baseDal "LAPP_ACURA_MOM_BACKEND/dao/base" meDal "LAPP_ACURA_MOM_BACKEND/dao/me" 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) 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 { _ = 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 + serialOrderId := product.MachineCode + serialNumber + product.ColorValue entity.SerialOrderId = serialOrderId err = dao.InsertOne(entity) if err != nil { @@ -1718,7 +1727,6 @@ func (impl *SerialOrderServiceImplement) GenerateCraftDataByCustOrder(user *glob for productId, serialOrderLi := range productSerialOrderMap { - article, err := articleDao.SelectOne(productId) if err != nil { _ = session.Rollback() diff --git a/services/pln/implments/CustOrder.service.impl.go b/services/pln/implments/CustOrder.service.impl.go index 0891d11..ff79b9d 100644 --- a/services/pln/implments/CustOrder.service.impl.go +++ b/services/pln/implments/CustOrder.service.impl.go @@ -16,6 +16,7 @@ import ( meModel "LAPP_ACURA_MOM_BACKEND/models/me" omModel "LAPP_ACURA_MOM_BACKEND/models/om" model "LAPP_ACURA_MOM_BACKEND/models/pln" + baseSvr "LAPP_ACURA_MOM_BACKEND/services/base" omSvr "LAPP_ACURA_MOM_BACKEND/services/om" "github.com/go-xorm/xorm" "strconv" @@ -506,15 +507,15 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde if err := session.Begin(); err != nil { return err } - now := time.Now() + //now := time.Now() today := time.Now().Format("060102") 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) projectDao := meDal.NewProjectDAO(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++ { 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 { _ = 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] for _, product := range productLi { workLine, exist := workLineMap[product.DefaultWorkLineId] if !exist { @@ -607,8 +614,9 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde } 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) if err != nil { _ = session.Rollback() @@ -744,15 +752,15 @@ func (impl *CustOrderServiceImplement) LockCustOrderForGantt(user *global.User, if err := session.Begin(); err != nil { return err } - now := time.Now() + //now := time.Now() today := time.Now().Format("060102") 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) projectDao := meDal.NewProjectDAO(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++ { 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 { _ = 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] for _, product := range productLi { workLine, exist := workLineMap[product.DefaultWorkLineId] if !exist { @@ -845,8 +859,9 @@ func (impl *CustOrderServiceImplement) LockCustOrderForGantt(user *global.User, } 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) if err != nil { _ = session.Rollback() diff --git a/utils/const.go b/utils/const.go new file mode 100644 index 0000000..e367af5 --- /dev/null +++ b/utils/const.go @@ -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", +} diff --git a/utils/time.go b/utils/time.go index 4f65072..aa4ab6c 100644 --- a/utils/time.go +++ b/utils/time.go @@ -363,3 +363,24 @@ func GetDuration(startTime, endTime time.Time, EffFactor float64) (duration time duration = time.Duration(seconds) * time.Second 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 +} \ No newline at end of file