Browse Source

添加流水号占用和派工逻辑结合

feature_task
zhangxin 2 years ago
parent
commit
4481397137
7 changed files with 94 additions and 59 deletions
  1. +14
    -14
      meta/pln/ReleaseTaskConfig.meta.go
  2. +11
    -11
      models/pln/ReleaseTaskConfig.model.go
  3. +11
    -11
      services/pln/ReleaseTaskConfig.service.go
  4. +1
    -1
      services/pln/implments/CustOrder.service.impl.go
  5. +9
    -6
      services/pln/implments/CustOrderLogic.service.impl.go
  6. +16
    -16
      services/pln/implments/ReleaseTaskConfig.service.impl.go
  7. +32
    -0
      utils/time.go

+ 14
- 14
meta/pln/ReleaseTaskConfig.meta.go View File

@ -13,15 +13,15 @@ import (
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
var ReleaseTaskConfig_PlantNr = grmi.NewField("PlantNr", "[PLN_ReleaseTaskConfig].PlantNr", "plantnr", grmi.TypeInt)
var ReleaseTaskConfig_ConfigNr = grmi.NewField("ConfigNr", "[PLN_ReleaseTaskConfig].ConfigNr", "confignr", grmi.TypeInt)
var ReleaseTaskConfig_LeadTime = grmi.NewField("LeadTime", "[PLN_ReleaseTaskConfig].LeadTime", "leadtime", grmi.TypeInt)
var ReleaseTaskConfig_TimeUomId = grmi.NewField("TimeUomId", "[PLN_ReleaseTaskConfig].TimeUomId", "timeuomid", grmi.TypeString)
var ReleaseTaskConfig_BussinessObjType = grmi.NewField("BussinessObjType", "[PLN_ReleaseTaskConfig].BussinessObjType", "bussinessobjtype", grmi.TypeString)
var ReleaseTaskConfig_BussinessObjId = grmi.NewField("BussinessObjId", "[PLN_ReleaseTaskConfig].BussinessObjId", "bussinessobjid", grmi.TypeString)
var ReleaseTaskConfig_BusinessObjType = grmi.NewField("BusinessObjType", "[PLN_ReleaseTaskConfig].BusinessObjType", "businessobjtype", grmi.TypeString)
var ReleaseTaskConfig_BusinessObjId = grmi.NewField("BusinessObjId", "[PLN_ReleaseTaskConfig].BusinessObjId", "businessobjid", grmi.TypeString)
var ReleaseTaskConfig_LastModify = grmi.NewField("LastModify", "[PLN_ReleaseTaskConfig].LastModify", "lastmodify", grmi.TypeDateTime)
var ReleaseTaskConfig_LastUser = grmi.NewField("LastUser", "[PLN_ReleaseTaskConfig].LastUser", "lastuser", grmi.TypeString)
var ReleaseTaskConfig_CreateTime = grmi.NewField("CreateTime", "[PLN_ReleaseTaskConfig].CreateTime", "createtime", grmi.TypeDateTime)
@ -32,22 +32,22 @@ var ReleaseTaskConfig_CreateTime = grmi.NewField("CreateTime", "[PLN_ReleaseTask
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
var ReleaseTaskConfig = grmi.NewEntity(
"PLN_ReleaseTaskConfig",
func() interface{} { return &model.ReleaseTaskConfig{} },
map[string]grmi.Field{
ReleaseTaskConfig_PlantNr.Name: ReleaseTaskConfig_PlantNr,
ReleaseTaskConfig_ConfigNr.Name: ReleaseTaskConfig_ConfigNr,
ReleaseTaskConfig_LeadTime.Name: ReleaseTaskConfig_LeadTime,
ReleaseTaskConfig_TimeUomId.Name: ReleaseTaskConfig_TimeUomId,
ReleaseTaskConfig_BussinessObjType.Name: ReleaseTaskConfig_BussinessObjType,
ReleaseTaskConfig_BussinessObjId.Name: ReleaseTaskConfig_BussinessObjId,
ReleaseTaskConfig_LastModify.Name: ReleaseTaskConfig_LastModify,
ReleaseTaskConfig_LastUser.Name: ReleaseTaskConfig_LastUser,
ReleaseTaskConfig_CreateTime.Name: ReleaseTaskConfig_CreateTime,
ReleaseTaskConfig_PlantNr.Name: ReleaseTaskConfig_PlantNr,
ReleaseTaskConfig_ConfigNr.Name: ReleaseTaskConfig_ConfigNr,
ReleaseTaskConfig_LeadTime.Name: ReleaseTaskConfig_LeadTime,
ReleaseTaskConfig_TimeUomId.Name: ReleaseTaskConfig_TimeUomId,
ReleaseTaskConfig_BusinessObjType.Name: ReleaseTaskConfig_BusinessObjType,
ReleaseTaskConfig_BusinessObjId.Name: ReleaseTaskConfig_BusinessObjId,
ReleaseTaskConfig_LastModify.Name: ReleaseTaskConfig_LastModify,
ReleaseTaskConfig_LastUser.Name: ReleaseTaskConfig_LastUser,
ReleaseTaskConfig_CreateTime.Name: ReleaseTaskConfig_CreateTime,
},
[]string{"PlantNr"},
[]string{"LeadTime", "TimeUomId", "BussinessObjType", "BussinessObjId", "LastUser"})
[]string{"LeadTime", "TimeUomId", "BusinessObjType", "BusinessObjId", "LastUser"})

+ 11
- 11
models/pln/ReleaseTaskConfig.model.go View File

@ -16,19 +16,19 @@ import (
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
type ReleaseTaskConfig struct {
PlantNr int `xorm:"pk int 'PlantNr'" json:"PLN_ReleaseTaskConfig-PlantNr"`
ConfigNr int `xorm:"pk int 'ConfigNr' autoincr" json:"PLN_ReleaseTaskConfig-ConfigNr"`
LeadTime int `xorm:"int 'LeadTime' not null" json:"PLN_ReleaseTaskConfig-LeadTime"`
TimeUomId string `xorm:"nvarchar(40) 'TimeUomId' not null" json:"PLN_ReleaseTaskConfig-TimeUomId"`
BussinessObjType string `xorm:"nvarchar(40) 'BussinessObjType' not null" json:"PLN_ReleaseTaskConfig-BussinessObjType"`
BussinessObjId string `xorm:"nvarchar(40) 'BussinessObjId' not null" json:"PLN_ReleaseTaskConfig-BussinessObjId"`
LastModify grmi.DateTime `xorm:"datetime 'LastModify' not null updated" json:"PLN_ReleaseTaskConfig-LastModify"`
LastUser string `xorm:"nvarchar(20) 'LastUser' not null" json:"PLN_ReleaseTaskConfig-LastUser"`
CreateTime grmi.DateTime `xorm:"datetime 'CreateTime' not null created" json:"PLN_ReleaseTaskConfig-CreateTime"`
PlantNr int `xorm:"pk int 'PlantNr'" json:"PLN_ReleaseTaskConfig-PlantNr"`
ConfigNr int `xorm:"pk int 'ConfigNr' autoincr" json:"PLN_ReleaseTaskConfig-ConfigNr"`
LeadTime int `xorm:"int 'LeadTime' not null" json:"PLN_ReleaseTaskConfig-LeadTime"`
TimeUomId string `xorm:"nvarchar(40) 'TimeUomId' not null" json:"PLN_ReleaseTaskConfig-TimeUomId"`
BusinessObjType string `xorm:"nvarchar(40) 'BusinessObjType' not null" json:"PLN_ReleaseTaskConfig-BusinessObjType"`
BusinessObjId string `xorm:"nvarchar(40) 'BusinessObjId' not null" json:"PLN_ReleaseTaskConfig-BusinessObjId"`
LastModify grmi.DateTime `xorm:"datetime 'LastModify' not null updated" json:"PLN_ReleaseTaskConfig-LastModify"`
LastUser string `xorm:"nvarchar(20) 'LastUser' not null" json:"PLN_ReleaseTaskConfig-LastUser"`
CreateTime grmi.DateTime `xorm:"datetime 'CreateTime' not null created" json:"PLN_ReleaseTaskConfig-CreateTime"`
}
/******************************************************************************
@ -42,7 +42,7 @@ type ReleaseTaskConfig struct {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
func (self *ReleaseTaskConfig) GetKey() core.PK {


+ 11
- 11
services/pln/ReleaseTaskConfig.service.go View File

@ -18,7 +18,7 @@ import (
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
type ReleaseTaskConfigService interface {
@ -37,7 +37,7 @@ type ReleaseTaskConfigService interface {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
InsertOne(*global.User, *model.ReleaseTaskConfig) error
@ -54,7 +54,7 @@ type ReleaseTaskConfigService interface {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
DeleteOne(*global.User, int) error
@ -73,7 +73,7 @@ type ReleaseTaskConfigService interface {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
SelectOne(*global.User, int) (*model.ReleaseTaskConfig, error)
@ -92,7 +92,7 @@ type ReleaseTaskConfigService interface {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
UpdateOne(*global.User, *model.ReleaseTaskConfig) error
@ -111,7 +111,7 @@ type ReleaseTaskConfigService interface {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
Insert(*global.User, *[]model.ReleaseTaskConfig) error
@ -130,7 +130,7 @@ type ReleaseTaskConfigService interface {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
Delete(*global.User, *[]model.ReleaseTaskConfig) error
@ -151,7 +151,7 @@ type ReleaseTaskConfigService interface {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
Select(*global.User, map[string]string) ([]model.ReleaseTaskConfig, error)
@ -172,7 +172,7 @@ type ReleaseTaskConfigService interface {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
SelectAndPaging(*global.User, map[string]string) (grmi.PagingResult, error)
@ -191,7 +191,7 @@ type ReleaseTaskConfigService interface {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
Update(*global.User, *[]model.ReleaseTaskConfig) error
@ -213,7 +213,7 @@ type ReleaseTaskConfigService interface {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
func NewReleaseTaskConfigService() ReleaseTaskConfigService {


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

@ -228,7 +228,7 @@ func (impl *CustOrderServiceImplement) InsertOne(user *global.User, entity *mode
custOrderId, err := snrDao.GetNextSnr(project.CustOrderSnr)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("生成客户订单流水号失败, error:" + custOrderId)
return grmi.NewBusinessError("生成客户订单流水号失败, error:" + err.Error())
}
entity.CustOrderId = custOrderId
custOrderQty := model.CustOrderQty{


+ 9
- 6
services/pln/implments/CustOrderLogic.service.impl.go View File

@ -116,7 +116,7 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde
err = snrDao.OccupySnrWithTime(snrId, custOrder.PlanStartTime.Restore(), baseModel.SNR_OCCUPY_CUSTORDER, custOrder.CustOrderId, custOrder.PlanQty)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError(fmt.Sprintf("派生%s占用流水号失败", custOrder.ProductFamilyId))
return grmi.NewBusinessError(fmt.Sprintf("派生%s占用流水号失败,错误:%v, 流水号ID:%s", custOrder.ProductFamilyId, err, snrId))
}
}
}
@ -124,7 +124,7 @@ func (impl *CustOrderServiceImplement) LockCustOrder(user *global.User, custOrde
err = snrDao.OccupySnrWithTime(project.SerialOrderSnr, custOrder.PlanStartTime.Restore(), baseModel.SNR_OCCUPY_CUSTORDER, custOrder.CustOrderId, custOrder.PlanQty)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError(fmt.Sprintf("派生%s占用流水号失败", custOrder.ProductFamilyId))
return grmi.NewBusinessError(fmt.Sprintf("派生%s占用流水号失败,错误:%v, 流水号ID:%s", custOrder.ProductFamilyId, err, project.SerialOrderSnr))
}
}
}
@ -322,7 +322,7 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User,
productLi, err := productRelateDao.SelectProductByFamilyIdForCreateSerialOrder(custOrder.ProjectId, custOrder.ProductFamilyId)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError(fmt.Sprintf("获取派生%s的生产总成失败", custOrder.ProductFamilyId))
return grmi.NewBusinessError(fmt.Sprintf("获取派生%s的生产总成失败,错误:%v", custOrder.ProductFamilyId, err))
}
if len(productLi) == 0 {
_ = session.Rollback()
@ -337,7 +337,7 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User,
err = snrDao.OccupySnrWithTime(snrId, custOrder.PlanStartTime.Restore(), baseModel.SNR_OCCUPY_CUSTORDER, custOrder.CustOrderId, custOrder.PlanQty)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError(fmt.Sprintf("派生%s占用流水号失败", custOrder.ProductFamilyId))
return grmi.NewBusinessError(fmt.Sprintf("派生%s占用流水号失败,错误:%v, 流水号ID:%s", custOrder.ProductFamilyId, err, snrId))
}
}
}
@ -345,11 +345,13 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User,
err = snrDao.OccupySnrWithTime(project.SerialOrderSnr, custOrder.PlanStartTime.Restore(), baseModel.SNR_OCCUPY_CUSTORDER, custOrder.CustOrderId, custOrder.PlanQty)
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError(fmt.Sprintf("派生%s占用流水号失败", custOrder.ProductFamilyId))
return grmi.NewBusinessError(fmt.Sprintf("派生%s占用流水号失败,错误:%v, 流水号ID:%s", custOrder.ProductFamilyId, err, project.SerialOrderSnr))
}
}
}
_ = session.Commit()
//newReleaseTaskLi := make([]model.CustOrder, 0)
//for _, custOrder := range
sort.Slice(releaseCustOrderLi, func(i, j int) bool {
itemI := releaseCustOrderLi[i]
itemJ := releaseCustOrderLi[j]
@ -357,6 +359,7 @@ func (impl *CustOrderServiceImplement) AnalysisPlanFromExcel(user *global.User,
jUnix := itemJ.PlanStartTime.Restore().Unix()
return iUnix < jUnix
})
plantNr := user.PlantNr
channel, exist := common.ReleaseTaskChannel[plantNr]
if !exist {
@ -1232,7 +1235,7 @@ func (impl *CustOrderServiceImplement) RepairReleaseFailedTask(user *global.User
err = channel.ResetChannel()
if err != nil {
_ = session.Rollback()
return grmi.NewBusinessError("刷新任务队列失败")
return grmi.NewBusinessError("刷新任务队列失败, 错误:" + err.Error())
}
custOrderLi, err := custOrderDao.SelectNeedReleaseCustOrder()
if err != nil {


+ 16
- 16
services/pln/implments/ReleaseTaskConfig.service.impl.go View File

@ -17,19 +17,19 @@ import (
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
var DefaultConditionOfReleaseTaskConfig = grmi.NewCondition(
map[string]grmi.ConditionItem{
meta.ReleaseTaskConfig_ConfigNr.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_ConfigNr, grmi.Equal, true),
meta.ReleaseTaskConfig_LeadTime.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_LeadTime, grmi.Equal, false),
meta.ReleaseTaskConfig_TimeUomId.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_TimeUomId, grmi.Equal, false),
meta.ReleaseTaskConfig_BussinessObjType.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_BussinessObjType, grmi.Equal, false),
meta.ReleaseTaskConfig_BussinessObjId.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_BussinessObjId, grmi.Equal, false),
meta.ReleaseTaskConfig_LastModify.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_LastModify, grmi.Approximate, false),
meta.ReleaseTaskConfig_LastUser.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_LastUser, grmi.Equal, false),
meta.ReleaseTaskConfig_CreateTime.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_CreateTime, grmi.Approximate, false),
meta.ReleaseTaskConfig_ConfigNr.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_ConfigNr, grmi.Equal, true),
meta.ReleaseTaskConfig_LeadTime.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_LeadTime, grmi.Equal, false),
meta.ReleaseTaskConfig_TimeUomId.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_TimeUomId, grmi.Equal, false),
meta.ReleaseTaskConfig_BusinessObjType.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_BusinessObjType, grmi.Equal, false),
meta.ReleaseTaskConfig_BusinessObjId.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_BusinessObjId, grmi.Equal, false),
meta.ReleaseTaskConfig_LastModify.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_LastModify, grmi.Approximate, false),
meta.ReleaseTaskConfig_LastUser.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_LastUser, grmi.Equal, false),
meta.ReleaseTaskConfig_CreateTime.UrlParameterName: grmi.NewConditionItem(meta.ReleaseTaskConfig_CreateTime, grmi.Approximate, false),
},
nil,
)
@ -40,7 +40,7 @@ var DefaultConditionOfReleaseTaskConfig = grmi.NewCondition(
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
var DefaultConditionOfReleaseTaskConfigAndPaging = grmi.NewCondition(
@ -57,7 +57,7 @@ var DefaultConditionOfReleaseTaskConfigAndPaging = grmi.NewCondition(
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
type ReleaseTaskConfigServiceImplement struct {
@ -74,7 +74,7 @@ type ReleaseTaskConfigServiceImplement struct {
*
* @Author : 代码生成器创建
*
* @Date : 2022-06-23 17:08:07
* @Date : 2022-06-23 17:23:13
*
******************************************************************************/
func NewReleaseTaskConfigServiceImplement() *ReleaseTaskConfigServiceImplement {
@ -346,8 +346,8 @@ func (impl *ReleaseTaskConfigServiceImplement) Save(user *global.User, entity *m
}
}()
err = dao.DeleteWhere([]grmi.Predicate{
meta.ReleaseTaskConfig_BussinessObjType.NewPredicate(grmi.Equal, entity.BussinessObjType),
meta.ReleaseTaskConfig_BussinessObjId.NewPredicate(grmi.Equal, entity.BussinessObjId),
meta.ReleaseTaskConfig_BusinessObjType.NewPredicate(grmi.Equal, entity.BusinessObjType),
meta.ReleaseTaskConfig_BusinessObjId.NewPredicate(grmi.Equal, entity.BusinessObjId),
})
if err != nil {
return err
@ -369,8 +369,8 @@ func (impl *ReleaseTaskConfigServiceImplement) SelectConfig(user *global.User, o
defer session.Close()
dao := dal.NewReleaseTaskConfigDAO(session, user.PlantNr, user.UserId)
result, err := dao.Select([]grmi.Predicate{
meta.ReleaseTaskConfig_BussinessObjType.NewPredicate(grmi.Equal, objType),
meta.ReleaseTaskConfig_BussinessObjId.NewPredicate(grmi.Equal, objId)}, nil)
meta.ReleaseTaskConfig_BusinessObjType.NewPredicate(grmi.Equal, objType),
meta.ReleaseTaskConfig_BusinessObjId.NewPredicate(grmi.Equal, objId)}, nil)
if err != nil {
return nil, err
}


+ 32
- 0
utils/time.go View File

@ -403,3 +403,35 @@ func GetHoursData(startTime, endTime time.Time) (data []string, err error) {
}
}
// CalcDurationByUom 根据传入得数量和单位返回时间
func CalcDurationByUom(qty float64, uom string) time.Duration {
seconds := GetTimeUomSeconds(uom)
return time.Duration(float64(qty) * seconds)
}
// GetTimeUomSeconds 基于时间单位获取秒数
func GetTimeUomSeconds(uomId string) (seconds float64) {
seconds = 0
switch strings.ToUpper(uomId) {
case TIME_UOM_WEEK:
seconds = 7 * 24 * 3600
case TIME_UOM_DAY:
seconds = 24 * 3600
case TIME_UOM_HOUR:
seconds = 3600
case TIME_UOM_MINUTE:
seconds = 60
case TIME_UOM_SECOND:
seconds = 1
}
return
}
const (
// 时间类型
TIME_UOM_WEEK = "WEEK"
TIME_UOM_DAY = "DAY"
TIME_UOM_HOUR = "HOUR"
TIME_UOM_MINUTE = "MINUTE"
TIME_UOM_SECOND = "SECOND"
)

Loading…
Cancel
Save