作者 yangfu

fix: 工时管理修改,增加多渠道配置读取

  1 +POSTGRESQL_DB_NAME = allied_creation_dev
  2 +POSTGRESQL_HOST = 114.55.200.59
  3 +POSTGRESQL_PORT = 31543
  4 +POSTGRESQL_USER = postgres
  5 +POSTGRESQL_PASSWORD = eagle1010
  6 +DISABLE_SQL_GENERATE_COMMENT = false
  7 +SERVICE_ENV = test
  8 +HTTP_PORT = 8081
  9 +ENABLE_KAFKA_LOG11 = true
  10 +HTTPS_PORT = 8143
  11 +ALLIED_CREATION_USER_HOST = http://allied-creation-user-dev.fjmaimaimai.com
@@ -18,6 +18,11 @@ import ( @@ -18,6 +18,11 @@ import (
18 _ "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/port/beego" 18 _ "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/port/beego"
19 ) 19 )
20 20
  21 +//func init(){
  22 +// constant.Configurator = utils.BeegoAppConfigurator{}
  23 +// web.LoadAppConfig("ini","config/app.conf")
  24 +//}
  25 +
21 func main() { 26 func main() {
22 defer func() { 27 defer func() {
23 if r := recover(); r != nil { 28 if r := recover(); r != nil {
@@ -2,11 +2,10 @@ package command @@ -2,11 +2,10 @@ package command
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
  6 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/utils"
5 "reflect" 7 "reflect"
6 "strings" 8 "strings"
7 - "time"  
8 -  
9 - "github.com/beego/beego/v2/core/validation"  
10 ) 9 )
11 10
12 type CreateAttendanceCommand struct { 11 type CreateAttendanceCommand struct {
@@ -25,11 +24,11 @@ type CreateAttendanceCommand struct { @@ -25,11 +24,11 @@ type CreateAttendanceCommand struct {
25 // 工段ID 24 // 工段ID
26 SectionId int `cname:"工段ID" json:"sectionId" valid:"Required"` 25 SectionId int `cname:"工段ID" json:"sectionId" valid:"Required"`
27 // 生产日期 26 // 生产日期
28 - ProductDate time.Time `cname:"生产日期" json:"productDate,omitempty" valid:"Required"` 27 + ProductDate string `cname:"生产日期" json:"productDate,omitempty" valid:"Required"`
29 // 签到 28 // 签到
30 - SignIn time.Time `cname:"上岗时间" json:"signIn,omitempty" valid:"Required"` 29 + SignIn string `cname:"上岗时间" json:"signIn,omitempty" valid:"Required"`
31 // 签退 30 // 签退
32 - SignOut time.Time `cname:"下岗时间" json:"signOut,omitempty" valid:"Required"` 31 + SignOut string `cname:"下岗时间" json:"signOut,omitempty" valid:"Required"`
33 // 考勤状态 1.未审核 2:审核 32 // 考勤状态 1.未审核 2:审核
34 AttendanceStatus int `cname:"考勤状态" json:"attendanceStatus,omitempty"` 33 AttendanceStatus int `cname:"考勤状态" json:"attendanceStatus,omitempty"`
35 // 休息时长 34 // 休息时长
@@ -41,7 +40,14 @@ type CreateAttendanceCommand struct { @@ -41,7 +40,14 @@ type CreateAttendanceCommand struct {
41 } 40 }
42 41
43 func (createAttendanceCommand *CreateAttendanceCommand) Valid(validation *validation.Validation) { 42 func (createAttendanceCommand *CreateAttendanceCommand) Valid(validation *validation.Validation) {
44 - //validation.SetError("CustomValid", "未实现的自定义认证") 43 + if err := utils.ValidWorkTime(createAttendanceCommand.SignIn); err != nil {
  44 + validation.Error(err.Error())
  45 + return
  46 + }
  47 + if err := utils.ValidWorkTime(createAttendanceCommand.SignOut); err != nil {
  48 + validation.Error(err.Error())
  49 + return
  50 + }
45 validation.Range(createAttendanceCommand.AttendanceStatus, 1, 2, "attendanceStatus") 51 validation.Range(createAttendanceCommand.AttendanceStatus, 1, 2, "attendanceStatus")
46 } 52 }
47 53
@@ -109,6 +109,18 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain @@ -109,6 +109,18 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain
109 if cmd.WorkTime-cmd.BreakTime > 0 { 109 if cmd.WorkTime-cmd.BreakTime > 0 {
110 workTime = cmd.WorkTime - cmd.BreakTime 110 workTime = cmd.WorkTime - cmd.BreakTime
111 } 111 }
  112 + signIn, err := xtime.ParseInLocation(time.Local, fmt.Sprintf("%v %v:00", cmd.ProductDate, cmd.SignIn))
  113 + if err != nil {
  114 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  115 + }
  116 + signOut, err := xtime.ParseInLocation(time.Local, fmt.Sprintf("%v %v:00", cmd.ProductDate, cmd.SignOut))
  117 + if err != nil {
  118 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  119 + }
  120 + productDate, err := xtime.ParseInLocation(time.Local, cmd.ProductDate)
  121 + if err != nil {
  122 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  123 + }
112 newAttendance := &domain.ProductAttendanceRecord{ 124 newAttendance := &domain.ProductAttendanceRecord{
113 //ProductAttendanceId: cmd.ProductAttendanceId, 125 //ProductAttendanceId: cmd.ProductAttendanceId,
114 CompanyId: operateInfo.CompanyId, 126 CompanyId: operateInfo.CompanyId,
@@ -116,8 +128,8 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain @@ -116,8 +128,8 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain
116 AttendanceType: cmd.AttendanceType, 128 AttendanceType: cmd.AttendanceType,
117 ProductWorker: user, 129 ProductWorker: user,
118 WorkStation: workStation, 130 WorkStation: workStation,
119 - SignIn: cmd.SignIn,  
120 - SignOut: cmd.SignOut, 131 + SignIn: signIn,
  132 + SignOut: signOut,
121 AttendanceStatus: cmd.AttendanceStatus, 133 AttendanceStatus: cmd.AttendanceStatus,
122 WorkTimeBefore: workTime, 134 WorkTimeBefore: workTime,
123 WorkTimeAfter: 0, 135 WorkTimeAfter: 0,
@@ -127,7 +139,7 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain @@ -127,7 +139,7 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain
127 GroupName: productGroup.GroupName, 139 GroupName: productGroup.GroupName,
128 ProductGroupId: productGroup.ProductGroupId, 140 ProductGroupId: productGroup.ProductGroupId,
129 }), 141 }),
130 - ProductDate: xtime.New(cmd.ProductDate).BeginningOfDay(), 142 + ProductDate: productDate,
131 } 143 }
132 144
133 if cmd.AttendanceStatus == domain.AttendanceApproved { 145 if cmd.AttendanceStatus == domain.AttendanceApproved {
@@ -142,12 +154,12 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain @@ -142,12 +154,12 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain
142 attendanceRepository, _, _ = factory.FastPgAttendance(transactionContext, 0) 154 attendanceRepository, _, _ = factory.FastPgAttendance(transactionContext, 0)
143 if !cmd.Prepared { 155 if !cmd.Prepared {
144 // 检查时间段内是否有重复的打卡记录 156 // 检查时间段内是否有重复的打卡记录
145 - count, _, err := attendanceRecordDao.WorkerAttendanceRecordsByProductDate(operateInfo.CompanyId, operateInfo.OrgId, cmd.ProductWorkerId, newAttendance.ProductDate, cmd.SignIn, cmd.SignIn) 157 + count, _, err := attendanceRecordDao.WorkerAttendanceRecordsByProductDate(operateInfo.CompanyId, operateInfo.OrgId, cmd.ProductWorkerId, newAttendance.ProductDate, newAttendance.SignIn, newAttendance.SignIn)
146 if err != nil { 158 if err != nil {
147 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 159 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
148 } 160 }
149 if count > 0 { 161 if count > 0 {
150 - return nil, &application.ServiceError{Code: 10040001, Message: fmt.Sprintf("已存在员工%v的工时记录,是否继续新增", user.UserName)} 162 + return nil, &application.ServiceError{Code: 10050001, Message: fmt.Sprintf("已存在员工%v的工时记录,是否继续新增", user.UserName)}
151 } 163 }
152 } 164 }
153 if attendance, err := attendanceRepository.Save(newAttendance); err != nil { 165 if attendance, err := attendanceRepository.Save(newAttendance); err != nil {
@@ -157,7 +169,7 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain @@ -157,7 +169,7 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain
157 if err := transactionContext.CommitTransaction(); err != nil { 169 if err := transactionContext.CommitTransaction(); err != nil {
158 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 170 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
159 } 171 }
160 - return attendance, nil 172 + return struct{}{}, nil
161 } 173 }
162 } 174 }
163 175
@@ -24,7 +24,7 @@ type CreateProductCalendarCommand struct { @@ -24,7 +24,7 @@ type CreateProductCalendarCommand struct {
24 // 上班班次 1:全天 2:白班 4:中班 8:夜班 24 // 上班班次 1:全天 2:白班 4:中班 8:夜班
25 WorkOn int `cname:"上班班次 1:全天 2:白班 4:中班 8:夜班" json:"workOn" valid:"Required"` 25 WorkOn int `cname:"上班班次 1:全天 2:白班 4:中班 8:夜班" json:"workOn" valid:"Required"`
26 // 日历选择 26 // 日历选择
27 - CalendarSelected []int `cname:"日历选择" json:"calendarSelected" valid:"Required"` 27 + CalendarSelected []int `cname:"日历选择" json:"calendarSelected" ` // valid:"Required"
28 // 上岗时间 28 // 上岗时间
29 InWorkAt string `cname:"上岗时间" json:"inWorkAt" valid:"Required"` 29 InWorkAt string `cname:"上岗时间" json:"inWorkAt" valid:"Required"`
30 // 下岗时间 30 // 下岗时间
@@ -21,8 +21,8 @@ type UpdateProductCalendarCommand struct { @@ -21,8 +21,8 @@ type UpdateProductCalendarCommand struct {
21 SectionId int `cname:"工段ID" json:"sectionId" valid:"Required"` 21 SectionId int `cname:"工段ID" json:"sectionId" valid:"Required"`
22 // 上班班次 1:全天 2:白班 4:中班 8:夜班 22 // 上班班次 1:全天 2:白班 4:中班 8:夜班
23 WorkOn int `cname:"上班班次 1:全天 2:白班 4:中班 8:夜班" json:"workOn" valid:"Required"` 23 WorkOn int `cname:"上班班次 1:全天 2:白班 4:中班 8:夜班" json:"workOn" valid:"Required"`
24 - // 日历选择  
25 - CalendarSelected []int `cname:"日历选择" json:"calendarSelected" valid:"Required"` 24 + // 日历选择 valid:"Required"
  25 + CalendarSelected []int `cname:"日历选择" json:"calendarSelected" `
26 // 上岗时间 26 // 上岗时间
27 InWorkAt string `cname:"上岗时间" json:"inWorkAt" valid:"Required"` 27 InWorkAt string `cname:"上岗时间" json:"inWorkAt" valid:"Required"`
28 // 下岗时间 28 // 下岗时间
  1 +package query
  2 +
  3 +import (
  4 + "fmt"
  5 + "reflect"
  6 + "strings"
  7 +
  8 + "github.com/beego/beego/v2/core/validation"
  9 +)
  10 +
  11 +type GetProductGroupCalendarQuery struct {
  12 + // 生产班组ID
  13 + ProductGroupId int `cname:"工厂日历ID" json:"productGroupId" valid:"Required"`
  14 +}
  15 +
  16 +func (getProductCalendarQuery *GetProductGroupCalendarQuery) Valid(validation *validation.Validation) {
  17 + //validation.SetError("CustomValid", "未实现的自定义认证")
  18 +}
  19 +
  20 +func (getProductCalendarQuery *GetProductGroupCalendarQuery) ValidateQuery() error {
  21 + valid := validation.Validation{}
  22 + b, err := valid.Valid(getProductCalendarQuery)
  23 + if err != nil {
  24 + return err
  25 + }
  26 + if !b {
  27 + elem := reflect.TypeOf(getProductCalendarQuery).Elem()
  28 + for _, validErr := range valid.Errors {
  29 + field, isExist := elem.FieldByName(validErr.Field)
  30 + if isExist {
  31 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  32 + } else {
  33 + return fmt.Errorf(validErr.Message)
  34 + }
  35 + }
  36 + }
  37 + return nil
  38 +}
@@ -372,6 +372,43 @@ func (productCalendarService *ProductCalendarService) SearchProductCalendar(oper @@ -372,6 +372,43 @@ func (productCalendarService *ProductCalendarService) SearchProductCalendar(oper
372 return count, result, nil 372 return count, result, nil
373 } 373 }
374 374
  375 +// 返回生产班组的工厂日历
  376 +func (productCalendarService *ProductCalendarService) GetProductGroupCalendar(getProductCalendarQuery *query.GetProductGroupCalendarQuery) (interface{}, error) {
  377 + if err := getProductCalendarQuery.ValidateQuery(); err != nil {
  378 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  379 + }
  380 + transactionContext, err := factory.CreateTransactionContext(nil)
  381 + if err != nil {
  382 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  383 + }
  384 + if err := transactionContext.StartTransaction(); err != nil {
  385 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  386 + }
  387 + defer func() {
  388 + transactionContext.RollbackTransaction()
  389 + }()
  390 + productCalendarRepository, _, _ := factory.FastPgProductCalendar(transactionContext, 0)
  391 + _, productGroup, err := factory.FastPgProductGroup(transactionContext, getProductCalendarQuery.ProductGroupId)
  392 + if err != nil {
  393 + return nil, nil
  394 + }
  395 + _, productCalendar, err := productCalendarRepository.Find(map[string]interface{}{"workStationId": productGroup.WorkStation.WorkStationId, "workOn": productGroup.WorkOn, "limit": 1})
  396 + if err != nil {
  397 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  398 + }
  399 + if len(productCalendar) == 0 {
  400 + return nil, nil
  401 + }
  402 +
  403 + if err := transactionContext.CommitTransaction(); err != nil {
  404 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  405 + }
  406 +
  407 + result := &dto.ProductCalendarDto{}
  408 + result.LoadDto(productCalendar[0], 0)
  409 + return result, nil
  410 +}
  411 +
375 func NewProductCalendarService(options map[string]interface{}) *ProductCalendarService { 412 func NewProductCalendarService(options map[string]interface{}) *ProductCalendarService {
376 newProductCalendarService := &ProductCalendarService{} 413 newProductCalendarService := &ProductCalendarService{}
377 return newProductCalendarService 414 return newProductCalendarService
@@ -30,6 +30,12 @@ type SearchProductGroupQuery struct { @@ -30,6 +30,12 @@ type SearchProductGroupQuery struct {
30 WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` 30 WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"`
31 // 生产线名称 31 // 生产线名称
32 LineName string `cname:"生产线名称" json:"lineName,omitempty"` 32 LineName string `cname:"生产线名称" json:"lineName,omitempty"`
  33 + // 车间ID
  34 + WorkshopId int `cname:"车间ID" json: workshopId,omitempty"`
  35 + // 生产线ID
  36 + LineId int `cname:"生产线ID" json:"lineId,omitempty"`
  37 + // 工段ID
  38 + SectionId int `json:"sectionId,omitempty"`
33 } 39 }
34 40
35 func (cmd *SearchProductGroupQuery) Valid(validation *validation.Validation) { 41 func (cmd *SearchProductGroupQuery) Valid(validation *validation.Validation) {
@@ -578,9 +578,7 @@ func (productGroupService *ProductGroupService) SelectorProductGroup(operateInfo @@ -578,9 +578,7 @@ func (productGroupService *ProductGroupService) SelectorProductGroup(operateInfo
578 if err := transactionContext.CommitTransaction(); err != nil { 578 if err := transactionContext.CommitTransaction(); err != nil {
579 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 579 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
580 } 580 }
581 - return map[string]interface{}{  
582 - "groups": results,  
583 - }, nil 581 + return results, nil
584 } 582 }
585 583
586 func NewProductGroupService(options map[string]interface{}) *ProductGroupService { 584 func NewProductGroupService(options map[string]interface{}) *ProductGroupService {
@@ -2,10 +2,11 @@ package constant @@ -2,10 +2,11 @@ package constant
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
5 - "os"  
6 - "strconv" 5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/utils"
7 ) 6 )
8 7
  8 +var Configurator utils.Configurator = utils.EnvConfigurator{}
  9 +
9 var SERVICE_NAME = "allied-creation-manufacture" 10 var SERVICE_NAME = "allied-creation-manufacture"
10 var SERVICE_ENV = "dev" 11 var SERVICE_ENV = "dev"
11 var HTTP_PORT int = 8081 12 var HTTP_PORT int = 8081
@@ -35,46 +36,13 @@ const HeaderOrgId = "orgId" @@ -35,46 +36,13 @@ const HeaderOrgId = "orgId"
35 const HeaderOrgIds = "orgIds" 36 const HeaderOrgIds = "orgIds"
36 37
37 func init() { 38 func init() {
38 - if os.Getenv("LOG_LEVEL") != "" {  
39 - LOG_LEVEL = os.Getenv("LOG_LEVEL")  
40 - }  
41 - //if os.Getenv("CUSTOMER_ACCOUNT") != "" {  
42 - // account := os.Getenv("CUSTOMER_ACCOUNT")  
43 - // accounts := strings.Split(account, CUSTOMER_ACCOUNT_DELIMITER)  
44 - // var tmpAccounts []int64  
45 - // for i := range accounts {  
46 - // v, err := strconv.ParseInt(accounts[i], 10, 64)  
47 - // if err != nil {  
48 - // panic(err)  
49 - // }  
50 - // tmpAccounts = append(tmpAccounts, v)  
51 - // }  
52 - // if len(tmpAccounts) > 0 {  
53 - // CUSTOMER_ACCOUNT = tmpAccounts  
54 - // }  
55 - //}  
56 -  
57 - if os.Getenv("ALLIED_CREATION_BASIC_HOST") != "" {  
58 - ALLIED_CREATION_BASIC_HOST = os.Getenv("ALLIED_CREATION_BASIC_HOST")  
59 - }  
60 - if os.Getenv("ALLIED_CREATION_USER_HOST") != "" {  
61 - ALLIED_CREATION_USER_HOST = os.Getenv("ALLIED_CREATION_USER_HOST")  
62 - }  
63 - if os.Getenv("ALLIED_CREATION_COOPERATION_HOST") != "" {  
64 - ALLIED_CREATION_COOPERATION_HOST = os.Getenv("ALLIED_CREATION_COOPERATION_HOST")  
65 - }  
66 - //if os.Getenv("SMS_SERVE_HOST") != "" {  
67 - // SMS_SERVE_HOST = os.Getenv("SMS_SERVE_HOST")  
68 - //}  
69 - if os.Getenv("MMM_BYTE_BANK_HOST") != "" {  
70 - MMM_BYTE_BANK_HOST = os.Getenv("MMM_BYTE_BANK_HOST")  
71 - }  
72 - if os.Getenv("SERVICE_ENV") != "" {  
73 - SERVICE_ENV = os.Getenv("SERVICE_ENV")  
74 - }  
75 - if os.Getenv("HTTP_PORT") != "" {  
76 - HTTP_PORT, _ = strconv.Atoi(os.Getenv("HTTP_PORT"))  
77 - } 39 + LOG_LEVEL = Configurator.DefaultString("LOG_LEVEL", LOG_LEVEL)
  40 + ALLIED_CREATION_BASIC_HOST = Configurator.DefaultString("ALLIED_CREATION_BASIC_HOST", ALLIED_CREATION_BASIC_HOST)
  41 + ALLIED_CREATION_USER_HOST = Configurator.DefaultString("ALLIED_CREATION_USER_HOST", ALLIED_CREATION_USER_HOST)
  42 + ALLIED_CREATION_COOPERATION_HOST = Configurator.DefaultString("ALLIED_CREATION_COOPERATION_HOST", ALLIED_CREATION_COOPERATION_HOST)
  43 + MMM_BYTE_BANK_HOST = Configurator.DefaultString("MMM_BYTE_BANK_HOST", MMM_BYTE_BANK_HOST)
  44 + SERVICE_ENV = Configurator.DefaultString("SERVICE_ENV", SERVICE_ENV)
  45 + HTTP_PORT = Configurator.DefaultInt("HTTP_PORT", HTTP_PORT)
78 SERVICE_NAME = fmt.Sprintf("%v-%v", SERVICE_NAME, SERVICE_ENV) 46 SERVICE_NAME = fmt.Sprintf("%v-%v", SERVICE_NAME, SERVICE_ENV)
79 CACHE_PREFIX = SERVICE_NAME 47 CACHE_PREFIX = SERVICE_NAME
80 } 48 }
1 package constant 1 package constant
2 2
3 -import "os"  
4 -  
5 var ( 3 var (
6 // kafka 地址 4 // kafka 地址
7 KAFKA_HOST = "192.168.0.250:9092,192.168.0.251:9092,192.168.0.252:9092" //"106.75.231.90:9092" 5 KAFKA_HOST = "192.168.0.250:9092,192.168.0.251:9092,192.168.0.252:9092" //"106.75.231.90:9092"
@@ -14,13 +12,6 @@ var ( @@ -14,13 +12,6 @@ var (
14 ) 12 )
15 13
16 func init() { 14 func init() {
17 - if os.Getenv("KAFKA_HOST") != "" {  
18 - KAFKA_HOST = os.Getenv("KAFKA_HOST")  
19 - }  
20 - //if os.Getenv("TOPIC_LOG_STASH") != "" {  
21 - // POSTGRESQL_PORT = os.Getenv("TOPIC_LOG_STASH")  
22 - //}  
23 - if os.Getenv("ENABLE_KAFKA_LOG") != "" {  
24 - ENABLE_KAFKA_LOG = true  
25 - } 15 + KAFKA_HOST = Configurator.DefaultString("KAFKA_HOST", KAFKA_HOST)
  16 + ENABLE_KAFKA_LOG = Configurator.DefaultBool("ENABLE_KAFKA_LOG", ENABLE_KAFKA_LOG)
26 } 17 }
1 package constant 1 package constant
2 2
3 import ( 3 import (
4 - "os"  
5 - "strconv"  
6 "strings" 4 "strings"
7 ) 5 )
8 6
@@ -20,18 +18,10 @@ var ( @@ -20,18 +18,10 @@ var (
20 ) 18 )
21 19
22 func init() { 20 func init() {
23 - if os.Getenv("MANUFACTURE_DEFAULT_COMPANYID") != "" {  
24 - MANUFACTURE_DEFAULT_COMPANYID, _ = strconv.Atoi(os.Getenv("MANUFACTURE_DEFAULT_COMPANYID"))  
25 - }  
26 - if os.Getenv("MANUFACTURE_DEFAULT_ORGID") != "" {  
27 - MANUFACTURE_DEFAULT_ORGID, _ = strconv.Atoi(os.Getenv("MANUFACTURE_DEFAULT_ORGID"))  
28 - }  
29 - if os.Getenv("MANUFACTURE_DEFAULT_WORKSHOPID") != "" {  
30 - MANUFACTURE_DEFAULT_WORKSHOPID, _ = strconv.Atoi(os.Getenv("MANUFACTURE_DEFAULT_WORKSHOPID"))  
31 - }  
32 - if os.Getenv("MANUFACTURE_PRODUCT_TYPE") != "" {  
33 - MANUFACTURE_PRODUCT_TYPE = os.Getenv("MANUFACTURE_PRODUCT_TYPE")  
34 - } 21 + MANUFACTURE_DEFAULT_COMPANYID = Configurator.DefaultInt("MANUFACTURE_DEFAULT_COMPANYID", MANUFACTURE_DEFAULT_COMPANYID)
  22 + MANUFACTURE_DEFAULT_ORGID = Configurator.DefaultInt("MANUFACTURE_DEFAULT_ORGID", MANUFACTURE_DEFAULT_ORGID)
  23 + MANUFACTURE_DEFAULT_WORKSHOPID = Configurator.DefaultInt("MANUFACTURE_DEFAULT_WORKSHOPID", MANUFACTURE_DEFAULT_WORKSHOPID)
  24 + MANUFACTURE_PRODUCT_TYPE = Configurator.DefaultString("MANUFACTURE_PRODUCT_TYPE", MANUFACTURE_PRODUCT_TYPE)
35 productTypes := strings.Split(MANUFACTURE_PRODUCT_TYPE, ",") 25 productTypes := strings.Split(MANUFACTURE_PRODUCT_TYPE, ",")
36 for i, v := range productTypes { 26 for i, v := range productTypes {
37 MapProductType[i+1] = v 27 MapProductType[i+1] = v
1 package constant 1 package constant
2 2
3 -import "os"  
4 -  
5 var MQTT_TOPIC = "/MQTT" 3 var MQTT_TOPIC = "/MQTT"
6 4
7 //设备商提供的测试地址 5 //设备商提供的测试地址
@@ -32,16 +30,8 @@ var MQTT_USER = "admin" @@ -32,16 +30,8 @@ var MQTT_USER = "admin"
32 var MQTT_PASSWORD = "123456" 30 var MQTT_PASSWORD = "123456"
33 31
34 func init() { 32 func init() {
35 - if os.Getenv("MQTT_HOST") != "" {  
36 - MQTT_HOST = os.Getenv("MQTT_HOST")  
37 - }  
38 - if os.Getenv("MQTT_PORT") != "" {  
39 - MQTT_PORT = os.Getenv("MQTT_PORT")  
40 - }  
41 - if os.Getenv("MQTT_USER") != "" {  
42 - MQTT_USER = os.Getenv("MQTT_USER")  
43 - }  
44 - if os.Getenv("MQTT_PASSWORD") != "" {  
45 - MQTT_PASSWORD = os.Getenv("MQTT_PASSWORD")  
46 - } 33 + MQTT_HOST = Configurator.DefaultString("MQTT_HOST", MQTT_HOST)
  34 + MQTT_PORT = Configurator.DefaultString("MQTT_PORT", MQTT_PORT)
  35 + MQTT_USER = Configurator.DefaultString("MQTT_USER", MQTT_USER)
  36 + MQTT_PASSWORD = Configurator.DefaultString("MQTT_PASSWORD", MQTT_PASSWORD)
47 } 37 }
@@ -3,10 +3,6 @@ @@ -3,10 +3,6 @@
3 3
4 package constant 4 package constant
5 5
6 -import (  
7 - "os"  
8 -)  
9 -  
10 var POSTGRESQL_DB_NAME = "terms" 6 var POSTGRESQL_DB_NAME = "terms"
11 var POSTGRESQL_USER = "postgres" 7 var POSTGRESQL_USER = "postgres"
12 var POSTGRESQL_PASSWORD = "123456" 8 var POSTGRESQL_PASSWORD = "123456"
@@ -17,25 +13,12 @@ var DISABLE_SQL_GENERATE_PRINT = false @@ -17,25 +13,12 @@ var DISABLE_SQL_GENERATE_PRINT = false
17 var DISABLE_SQL_GENERATE_COMMENT = true 13 var DISABLE_SQL_GENERATE_COMMENT = true
18 14
19 func init() { 15 func init() {
20 - if os.Getenv("POSTGRESQL_DB_NAME") != "" {  
21 - POSTGRESQL_DB_NAME = os.Getenv("POSTGRESQL_DB_NAME")  
22 - }  
23 - if os.Getenv("POSTGRESQL_USER") != "" {  
24 - POSTGRESQL_USER = os.Getenv("POSTGRESQL_USER")  
25 - }  
26 - if os.Getenv("POSTGRESQL_PASSWORD") != "" {  
27 - POSTGRESQL_PASSWORD = os.Getenv("POSTGRESQL_PASSWORD")  
28 - }  
29 - if os.Getenv("POSTGRESQL_HOST") != "" {  
30 - POSTGRESQL_HOST = os.Getenv("POSTGRESQL_HOST")  
31 - }  
32 - if os.Getenv("POSTGRESQL_PORT") != "" {  
33 - POSTGRESQL_PORT = os.Getenv("POSTGRESQL_PORT")  
34 - }  
35 - if os.Getenv("DISABLE_CREATE_TABLE") != "" {  
36 - DISABLE_CREATE_TABLE = true  
37 - }  
38 - if os.Getenv("DISABLE_SQL_GENERATE_PRINT") != "" {  
39 - DISABLE_SQL_GENERATE_PRINT = true  
40 - } 16 + POSTGRESQL_HOST = Configurator.DefaultString("POSTGRESQL_HOST", POSTGRESQL_HOST)
  17 + POSTGRESQL_PORT = Configurator.DefaultString("POSTGRESQL_PORT", POSTGRESQL_PORT)
  18 + POSTGRESQL_DB_NAME = Configurator.DefaultString("POSTGRESQL_DB_NAME", POSTGRESQL_DB_NAME)
  19 + POSTGRESQL_USER = Configurator.DefaultString("POSTGRESQL_USER", POSTGRESQL_USER)
  20 + POSTGRESQL_PASSWORD = Configurator.DefaultString("POSTGRESQL_PASSWORD", POSTGRESQL_PASSWORD)
  21 +
  22 + DISABLE_CREATE_TABLE = Configurator.DefaultBool("DISABLE_CREATE_TABLE", DISABLE_CREATE_TABLE)
  23 + DISABLE_SQL_GENERATE_PRINT = Configurator.DefaultBool("DISABLE_SQL_GENERATE_PRINT", DISABLE_SQL_GENERATE_PRINT)
41 } 24 }
1 package constant 1 package constant
2 2
3 -import "os"  
4 -  
5 var ( 3 var (
6 REDIS_HOST = "127.0.0.1" 4 REDIS_HOST = "127.0.0.1"
7 REDIS_PORT = "6379" 5 REDIS_PORT = "6379"
8 REDIS_AUTH = "" 6 REDIS_AUTH = ""
  7 + REDIS_ADDRESS = ""
  8 +
9 // 是否关闭仓储层缓存 9 // 是否关闭仓储层缓存
10 - DISABLE_REPOSITORY_CACHE = false 10 + ENABLE_REPOSITORY_CACHE = true
11 // 缓存过期时间 单位秒 11 // 缓存过期时间 单位秒
12 REPOSITORY_CACHE_EXPIRE = 30 * 60 12 REPOSITORY_CACHE_EXPIRE = 30 * 60
13 -  
14 - REDIS_ADDRESS = ""  
15 // redis 考勤机打卡消息队列 13 // redis 考勤机打卡消息队列
16 REDIS_ZKTECO_KEY = "allied-creation-zkteco" 14 REDIS_ZKTECO_KEY = "allied-creation-zkteco"
17 // redis 车间数据消息队列 15 // redis 车间数据消息队列
@@ -19,21 +17,9 @@ var ( @@ -19,21 +17,9 @@ var (
19 ) 17 )
20 18
21 func init() { 19 func init() {
22 - if os.Getenv("REDIS_HOST") != "" {  
23 - REDIS_HOST = os.Getenv("REDIS_HOST")  
24 - REDIS_AUTH = os.Getenv("REDIS_AUTH")  
25 - }  
26 - if os.Getenv("REDIS_PORT") != "" {  
27 - REDIS_PORT = os.Getenv("REDIS_PORT")  
28 - }  
29 - if _, ok := os.LookupEnv("REDIS_AUTH"); ok {  
30 - REDIS_AUTH = os.Getenv("REDIS_AUTH")  
31 - }  
32 - if os.Getenv("ENABLE_REPOSITORY_CACHE") != "" {  
33 - DISABLE_REPOSITORY_CACHE = false  
34 - }  
35 - if os.Getenv("DISABLE_REPOSITORY_CACHE") != "" {  
36 - DISABLE_REPOSITORY_CACHE = true  
37 - } 20 + REDIS_HOST = Configurator.DefaultString("REDIS_HOST", REDIS_HOST)
  21 + REDIS_PORT = Configurator.DefaultString("REDIS_PORT", REDIS_PORT)
  22 + REDIS_AUTH = Configurator.DefaultString("REDIS_AUTH", REDIS_AUTH)
  23 + ENABLE_REPOSITORY_CACHE = Configurator.DefaultBool("ENABLE_REPOSITORY_CACHE", ENABLE_REPOSITORY_CACHE)
38 REDIS_ADDRESS = REDIS_HOST + ":" + REDIS_PORT 24 REDIS_ADDRESS = REDIS_HOST + ":" + REDIS_PORT
39 } 25 }
@@ -130,6 +130,7 @@ func (repository *ProductGroupRepository) FindOne(queryOptions map[string]interf @@ -130,6 +130,7 @@ func (repository *ProductGroupRepository) FindOne(queryOptions map[string]interf
130 query.SetWhereByQueryOption("work_station->>'workStationId'=?", "workStationId") 130 query.SetWhereByQueryOption("work_station->>'workStationId'=?", "workStationId")
131 query.SetWhereByQueryOption("work_station->>'workshopId'='?'", "workshopId") 131 query.SetWhereByQueryOption("work_station->>'workshopId'='?'", "workshopId")
132 query.SetWhereByQueryOption("work_station->>'lineId'='?'", "lineId") 132 query.SetWhereByQueryOption("work_station->>'lineId'='?'", "lineId")
  133 + query.SetWhereByQueryOption("work_station->>'sectionId'='?'", "sectionId")
133 if v, ok := queryOptions["includeDeleted"]; ok && v.(bool) { 134 if v, ok := queryOptions["includeDeleted"]; ok && v.(bool) {
134 query.AllWithDeleted() 135 query.AllWithDeleted()
135 } 136 }
  1 +package utils
  2 +
  3 +import (
  4 + "github.com/beego/beego/v2/server/web"
  5 + "os"
  6 + "strconv"
  7 +)
  8 +
  9 +type Configurator interface {
  10 + DefaultString(key string, defaultVal string) string
  11 + DefaultInt(key string, defaultVal int) int
  12 + DefaultInt64(key string, defaultVal int64) int64
  13 + DefaultBool(key string, defaultVal bool) bool
  14 + DefaultFloat(key string, defaultVal float64) float64
  15 +}
  16 +
  17 +// EnvConfigurator read config from env param with default value
  18 +type EnvConfigurator struct{}
  19 +
  20 +func (c EnvConfigurator) DefaultString(key string, defaultVal string) string {
  21 + if os.Getenv(key) != "" {
  22 + return os.Getenv(key)
  23 + }
  24 + return defaultVal
  25 +}
  26 +func (c EnvConfigurator) DefaultInt(key string, defaultVal int) int {
  27 + if os.Getenv(key) == "" {
  28 + return defaultVal
  29 + }
  30 + v, err := strconv.Atoi(os.Getenv(key))
  31 + if err != nil {
  32 + return defaultVal
  33 + }
  34 + return v
  35 +}
  36 +func (c EnvConfigurator) DefaultInt64(key string, defaultVal int64) int64 {
  37 + if os.Getenv(key) == "" {
  38 + return defaultVal
  39 + }
  40 + v, err := strconv.ParseInt(os.Getenv(key), 10, 64)
  41 + if err != nil {
  42 + return defaultVal
  43 + }
  44 + return v
  45 +}
  46 +func (c EnvConfigurator) DefaultBool(key string, defaultVal bool) bool {
  47 + if os.Getenv(key) == "" {
  48 + return defaultVal
  49 + }
  50 + v, err := strconv.ParseBool(os.Getenv(key))
  51 + if err != nil {
  52 + return defaultVal
  53 + }
  54 + return v
  55 +}
  56 +func (c EnvConfigurator) DefaultFloat(key string, defaultVal float64) float64 {
  57 + if os.Getenv(key) == "" {
  58 + return defaultVal
  59 + }
  60 + v, err := strconv.ParseFloat(os.Getenv(key), 64)
  61 + if err != nil {
  62 + return defaultVal
  63 + }
  64 + return v
  65 +}
  66 +
  67 +// BeegoAppConfigurator read config from beego config file with default value
  68 +type BeegoAppConfigurator struct{}
  69 +
  70 +func (c BeegoAppConfigurator) DefaultString(key string, defaultVal string) string {
  71 + return web.AppConfig.DefaultString(key, defaultVal)
  72 +}
  73 +func (c BeegoAppConfigurator) DefaultInt(key string, defaultVal int) int {
  74 + return web.AppConfig.DefaultInt(key, defaultVal)
  75 +}
  76 +func (c BeegoAppConfigurator) DefaultInt64(key string, defaultVal int64) int64 {
  77 + return web.AppConfig.DefaultInt64(key, defaultVal)
  78 +}
  79 +func (c BeegoAppConfigurator) DefaultBool(key string, defaultVal bool) bool {
  80 + return web.AppConfig.DefaultBool(key, defaultVal)
  81 +}
  82 +func (c BeegoAppConfigurator) DefaultFloat(key string, defaultVal float64) float64 {
  83 + return web.AppConfig.DefaultFloat(key, defaultVal)
  84 +}
  1 +package utils
  2 +
  3 +import (
  4 + "github.com/stretchr/testify/assert"
  5 + "os"
  6 + "testing"
  7 +)
  8 +
  9 +func TestEnvConfigurator(t *testing.T) {
  10 + os.Setenv("bool", "true")
  11 + os.Setenv("hello", "world")
  12 + os.Setenv("number", "10")
  13 +
  14 + var config Configurator = EnvConfigurator{}
  15 + assert.Equal(t, "world", config.DefaultString("hello", "w"))
  16 + assert.Equal(t, "w", config.DefaultString("unknown", "w"))
  17 +
  18 + assert.Equal(t, true, config.DefaultBool("bool", false))
  19 + assert.Equal(t, true, config.DefaultBool("unknown", true))
  20 +
  21 + assert.Equal(t, 10, config.DefaultInt("number", 5))
  22 + assert.Equal(t, 5, config.DefaultInt("unknown", 5))
  23 +
  24 + assert.Equal(t, int64(10), config.DefaultInt64("number", 5))
  25 + assert.Equal(t, int64(5), config.DefaultInt64("unknown", 5))
  26 +
  27 + assert.Equal(t, float64(10), config.DefaultFloat("number", 5))
  28 + assert.Equal(t, float64(5), config.DefaultFloat("unknown", 5))
  29 +}
@@ -78,3 +78,11 @@ func (controller *ProductCalendarController) SearchProductCalendar() { @@ -78,3 +78,11 @@ func (controller *ProductCalendarController) SearchProductCalendar() {
78 total, data, err := productCalendarService.SearchProductCalendar(ParseOperateInfo(controller.BaseController), cmd) 78 total, data, err := productCalendarService.SearchProductCalendar(ParseOperateInfo(controller.BaseController), cmd)
79 ResponseGrid(controller.BaseController, total, data, err) 79 ResponseGrid(controller.BaseController, total, data, err)
80 } 80 }
  81 +
  82 +func (controller *ProductCalendarController) GetProductGroupCalendar() {
  83 + productCalendarService := service.NewProductCalendarService(nil)
  84 + cmd := &query.GetProductGroupCalendarQuery{}
  85 + Must(controller.Unmarshal(cmd))
  86 + data, err := productCalendarService.GetProductGroupCalendar(cmd)
  87 + controller.Response(data, err)
  88 +}
@@ -14,4 +14,5 @@ func init() { @@ -14,4 +14,5 @@ func init() {
14 web.Router("/product-calendars/", &controllers.ProductCalendarController{}, "Get:ListProductCalendar") 14 web.Router("/product-calendars/", &controllers.ProductCalendarController{}, "Get:ListProductCalendar")
15 15
16 web.Router("/product-calendars/search", &controllers.ProductCalendarController{}, "Post:SearchProductCalendar") 16 web.Router("/product-calendars/search", &controllers.ProductCalendarController{}, "Post:SearchProductCalendar")
  17 + web.Router("/product-calendars/product-group-calendar", &controllers.ProductCalendarController{}, "Post:GetProductGroupCalendar")
17 } 18 }