作者 yangfu

refactor:

1.车间更新修改
2.增加打卡统计
@@ -114,3 +114,7 @@ spec: @@ -114,3 +114,7 @@ spec:
114 value: "https://sms.fjmaimaimai.com:9897" 114 value: "https://sms.fjmaimaimai.com:9897"
115 - name: SUPLUS_SALE_APP 115 - name: SUPLUS_SALE_APP
116 value: "http://suplus-sale-app-gateway-test.fjmaimaimai.com" 116 value: "http://suplus-sale-app-gateway-test.fjmaimaimai.com"
  117 + - name: MANUFACTURE_DEFAULT_COMPANYID
  118 + value: "23"
  119 + - name: MANUFACTURE_DEFAULT_ORGID
  120 + value: "487"
@@ -30,7 +30,7 @@ func (attendanceService *AttendanceService) WorkerAttendanceReport(cmd *command. @@ -30,7 +30,7 @@ func (attendanceService *AttendanceService) WorkerAttendanceReport(cmd *command.
30 // return nil, err 30 // return nil, err
31 //} 31 //}
32 attendanceReportService, _ := domainService.NewPGWorkerAttendanceReportService(transactionContext.(*pgTransaction.TransactionContext)) 32 attendanceReportService, _ := domainService.NewPGWorkerAttendanceReportService(transactionContext.(*pgTransaction.TransactionContext))
33 - if _, err := attendanceReportService.Report(constant.MANUFACTURE_WEIGH_DEFAULT_COMPANYID, constant.MANUFACTURE_WEIGH_DEFAULT_COMPANYID, cmd.DeviceZkTeco); err != nil { 33 + if _, err := attendanceReportService.Report(constant.MANUFACTURE_DEFAULT_COMPANYID, constant.MANUFACTURE_DEFAULT_COMPANYID, cmd.DeviceZkTeco); err != nil {
34 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 34 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
35 } 35 }
36 if err := transactionContext.CommitTransaction(); err != nil { 36 if err := transactionContext.CommitTransaction(); err != nil {
@@ -37,7 +37,7 @@ func (crontabService *CrontabService) initTask() { @@ -37,7 +37,7 @@ func (crontabService *CrontabService) initTask() {
37 }) 37 })
38 task.AddTask("PullPrdMoK3cloud", PullPrdMoK3cloud) 38 task.AddTask("PullPrdMoK3cloud", PullPrdMoK3cloud)
39 39
40 - autoApproveAttendanceRecord := task.NewTask("autoApproveAttendanceRecord", "0 */1 * * * *", AutoApproveProductAttendanceRecord) 40 + autoApproveAttendanceRecord := task.NewTask("autoApproveAttendanceRecord", "0 */2 * * * *", AutoApproveProductAttendanceRecord)
41 task.AddTask("autoApproveAttendanceRecord", autoApproveAttendanceRecord) 41 task.AddTask("autoApproveAttendanceRecord", autoApproveAttendanceRecord)
42 42
43 autoApproveRecord := task.NewTask("autoApproveRecord", "0 */2 * * * *", AutoApproveProductRecord) 43 autoApproveRecord := task.NewTask("autoApproveRecord", "0 */2 * * * *", AutoApproveProductRecord)
@@ -335,9 +335,11 @@ func (productJobService *ProductJobService) SearchProductJob(operateInfo *domain @@ -335,9 +335,11 @@ func (productJobService *ProductJobService) SearchProductJob(operateInfo *domain
335 var result = make([]*dto.ProductJobDto, 0) 335 var result = make([]*dto.ProductJobDto, 0)
336 for i := range productJobs { 336 for i := range productJobs {
337 item := productJobs[i] 337 item := productJobs[i]
338 - item.WorkStation = workshops.FindWorkStation(item.WorkStation.WorkshopId, item.WorkStation.LineId, item.WorkStation.SectionId) 338 +
339 newJobDto := &dto.ProductJobDto{} 339 newJobDto := &dto.ProductJobDto{}
340 newJobDto.LoadDto(item, operateInfo.OrgId) 340 newJobDto.LoadDto(item, operateInfo.OrgId)
  341 + newJobDto.WorkStation = workshops.FindWorkStation(item.WorkStation.WorkshopId, item.WorkStation.LineId, item.WorkStation.SectionId)
  342 + newJobDto.WorkStation.Principal = item.WorkStation.Principal
341 result = append(result, newJobDto) 343 result = append(result, newJobDto)
342 } 344 }
343 return count, result, nil 345 return count, result, nil
@@ -17,7 +17,7 @@ type CreateProductPlanCommand struct { @@ -17,7 +17,7 @@ type CreateProductPlanCommand struct {
17 // 车间ID 17 // 车间ID
18 WorkshopId int `cname:"车间ID" json:"workshopId" valid:"Required"` 18 WorkshopId int `cname:"车间ID" json:"workshopId" valid:"Required"`
19 // 批号 19 // 批号
20 - BatchNumber string `cname:"批号" json:"batchNumber" valid:"Required"` 20 + BatchNumber string `cname:"批号" json:"batchNumber"`
21 // 生产日期 21 // 生产日期
22 ProductDate string `cname:"生产日期" json:"productDate" valid:"Required"` 22 ProductDate string `cname:"生产日期" json:"productDate" valid:"Required"`
23 // 上班班次 1:全天 2:白班 4:中班 8:夜班 23 // 上班班次 1:全天 2:白班 4:中班 8:夜班
@@ -19,7 +19,7 @@ type UpdateProductPlanCommand struct { @@ -19,7 +19,7 @@ type UpdateProductPlanCommand struct {
19 // 车间ID 19 // 车间ID
20 WorkshopId int `cname:"车间ID" json:"workshopId" valid:"Required"` 20 WorkshopId int `cname:"车间ID" json:"workshopId" valid:"Required"`
21 // 批号 21 // 批号
22 - BatchNumber string `cname:"批号" json:"batchNumber" valid:"Required"` 22 + BatchNumber string `cname:"批号" json:"batchNumber"`
23 // 生产日期 23 // 生产日期
24 ProductDate string `cname:"生产日期" json:"productDate" valid:"Required"` 24 ProductDate string `cname:"生产日期" json:"productDate" valid:"Required"`
25 // 上班班次 1:全天 2:白班 4:中班 8:夜班 25 // 上班班次 1:全天 2:白班 4:中班 8:夜班
@@ -30,6 +30,8 @@ type UpdateProductPlanCommand struct { @@ -30,6 +30,8 @@ type UpdateProductPlanCommand struct {
30 PlanProductName string `cname:"计划的产品名称" json:"planProductName"` 30 PlanProductName string `cname:"计划的产品名称" json:"planProductName"`
31 // 产品ID 31 // 产品ID
32 ProductId int `cname:"产品ID" json:"productId" valid:"Required"` 32 ProductId int `cname:"产品ID" json:"productId" valid:"Required"`
  33 + // 投入量规格 默认份
  34 + DevotedUnit string `cname:"投入量规格" json:"devotedUnit" `
33 // 数量(保留两位小数) 35 // 数量(保留两位小数)
34 Quantity float64 `cname:"数量(保留两位小数)" json:"quantity" valid:"Required"` 36 Quantity float64 `cname:"数量(保留两位小数)" json:"quantity" valid:"Required"`
35 // 单位 37 // 单位
@@ -39,7 +41,7 @@ type UpdateProductPlanCommand struct { @@ -39,7 +41,7 @@ type UpdateProductPlanCommand struct {
39 // 重量 41 // 重量
40 Weight float64 `cname:"重量" json:"weight"` 42 Weight float64 `cname:"重量" json:"weight"`
41 // 备注 43 // 备注
42 - Remark string `cname:"备注" json:"remark" valid:"Required"` 44 + Remark string `cname:"备注" json:"remark"`
43 // 生产日期 45 // 生产日期
44 ProductDateTime time.Time `cname:"生产日期" json:"productDateTime" ` 46 ProductDateTime time.Time `cname:"生产日期" json:"productDateTime" `
45 } 47 }
@@ -24,6 +24,8 @@ type ProductPlanDto struct { @@ -24,6 +24,8 @@ type ProductPlanDto struct {
24 WorkOnDescription string `json:"workOnDescription"` 24 WorkOnDescription string `json:"workOnDescription"`
25 // 机台 (A、B、C、D 区分机器大小) 25 // 机台 (A、B、C、D 区分机器大小)
26 Machine string `json:"machine"` 26 Machine string `json:"machine"`
  27 + // 产品ID
  28 + ProductId int `json:"productId,omitempty"`
27 // 计划的产品名称 29 // 计划的产品名称
28 PlanProductName string `json:"planProductName,omitempty"` 30 PlanProductName string `json:"planProductName,omitempty"`
29 // 投入量规格 默认份 31 // 投入量规格 默认份
@@ -51,12 +53,14 @@ func (d *ProductPlanDto) LoadDto(m *domain.ProductPlan, orgId int) *ProductPlanD @@ -51,12 +53,14 @@ func (d *ProductPlanDto) LoadDto(m *domain.ProductPlan, orgId int) *ProductPlanD
51 d.WorkshopId = m.Workshop.WorkshopId 53 d.WorkshopId = m.Workshop.WorkshopId
52 d.WorkshopName = m.Workshop.WorkshopName 54 d.WorkshopName = m.Workshop.WorkshopName
53 d.WorkOn = m.WorkOn 55 d.WorkOn = m.WorkOn
  56 +
54 d.Machine = m.Machine 57 d.Machine = m.Machine
55 d.PlanProductName = m.PlanProductName 58 d.PlanProductName = m.PlanProductName
56 d.UnitQuantity = m.PlanDevoted 59 d.UnitQuantity = m.PlanDevoted
57 d.DevotedUnit = "份" 60 d.DevotedUnit = "份"
58 if m.Ext.ProductPlanExt != nil { 61 if m.Ext.ProductPlanExt != nil {
59 d.DevotedUnit = m.Ext.ProductPlanExt.DevotedUnit 62 d.DevotedUnit = m.Ext.ProductPlanExt.DevotedUnit
  63 + d.ProductId = m.Ext.ProductPlanExt.ProductId
60 } 64 }
61 d.PlanStatus = m.PlanStatus 65 d.PlanStatus = m.PlanStatus
62 d.TotalProduct = 0 66 d.TotalProduct = 0
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/application/productPlan/query" 11 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/application/productPlan/query"
12 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/domain" 12 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/domain"
13 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/domainService" 13 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/domainService"
  14 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/redis"
14 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/utils" 15 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/utils"
15 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/log" 16 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/log"
16 "time" 17 "time"
@@ -61,6 +62,16 @@ func (productPlanService *ProductPlanService) CreateProductPlan(cmd *command.Cre @@ -61,6 +62,16 @@ func (productPlanService *ProductPlanService) CreateProductPlan(cmd *command.Cre
61 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 62 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
62 } 63 }
63 64
  65 + if len(cmd.BatchNumber) == 0 {
  66 + generator := redis.NewPlanBatchCodeCache(cmd.CompanyId)
  67 + code, err := redis.GenCode(generator)
  68 + if err != nil {
  69 + log.Logger.Error(err.Error())
  70 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "服务器异常")
  71 + }
  72 + cmd.BatchNumber = code
  73 + }
  74 +
64 newProductPlan := &domain.ProductPlan{ 75 newProductPlan := &domain.ProductPlan{
65 CompanyId: cmd.CompanyId, 76 CompanyId: cmd.CompanyId,
66 OrgId: cmd.OrgId, 77 OrgId: cmd.OrgId,
@@ -89,6 +100,7 @@ func (productPlanService *ProductPlanService) CreateProductPlan(cmd *command.Cre @@ -89,6 +100,7 @@ func (productPlanService *ProductPlanService) CreateProductPlan(cmd *command.Cre
89 DevotedUnit: cmd.DevotedUnit, 100 DevotedUnit: cmd.DevotedUnit,
90 }), 101 }),
91 } 102 }
  103 +
92 if cmd.Weight > 0 { 104 if cmd.Weight > 0 {
93 newProductPlan.PlanDevoted.Weight = cmd.Weight 105 newProductPlan.PlanDevoted.Weight = cmd.Weight
94 } 106 }
@@ -262,7 +274,7 @@ func (productPlanService *ProductPlanService) UpdateProductPlan(cmd *command.Upd @@ -262,7 +274,7 @@ func (productPlanService *ProductPlanService) UpdateProductPlan(cmd *command.Upd
262 ProductId: product.ProductId, 274 ProductId: product.ProductId,
263 ProductCode: product.ProductCode, 275 ProductCode: product.ProductCode,
264 ProductName: product.ProductName, 276 ProductName: product.ProductName,
265 - //ProductSpec: product.ProductSpec, 277 + DevotedUnit: cmd.DevotedUnit,
266 }) 278 })
267 productPlan.PlanDevoted.UnitWeight = product.ProductSpec.UnitWeight 279 productPlan.PlanDevoted.UnitWeight = product.ProductSpec.UnitWeight
268 cmd.PlanProductName = product.ProductName 280 cmd.PlanProductName = product.ProductName
1 package syncdata 1 package syncdata
2 2
3 import ( 3 import (
  4 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/constant"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/domainService"
4 "strconv" 6 "strconv"
5 "strings" 7 "strings"
6 "time" 8 "time"
@@ -181,8 +183,15 @@ func (srv *PullDataK3CloudService) PullMaterial(timeFilter time.Time) error { @@ -181,8 +183,15 @@ func (srv *PullDataK3CloudService) PullMaterial(timeFilter time.Time) error {
181 if err != nil { 183 if err != nil {
182 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 184 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
183 } 185 }
  186 +
  187 + var userService = domainService.NewUserService()
  188 + org, err := userService.Organization(constant.MANUFACTURE_DEFAULT_ORGID)
  189 + if err != nil {
  190 + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  191 + }
  192 +
184 //MaterialK3cloud表数据到Proudct表 193 //MaterialK3cloud表数据到Proudct表
185 - err = materialDao.SyncDataProudct(nowTime.Unix()) 194 + err = materialDao.SyncDataProudct(nowTime.Unix(), org.OrgName)
186 if err != nil { 195 if err != nil {
187 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 196 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
188 } 197 }
@@ -175,7 +175,7 @@ func (workshopService *WorkshopService) RemoveWorkshop(removeWorkshopCommand *co @@ -175,7 +175,7 @@ func (workshopService *WorkshopService) RemoveWorkshop(removeWorkshopCommand *co
175 return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removeWorkshopCommand.WorkshopId))) 175 return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removeWorkshopCommand.WorkshopId)))
176 } 176 }
177 if !workshop.CanRemove() { 177 if !workshop.CanRemove() {
178 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "当车间下存在线别") 178 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "当前车间下存在线别,不可删除")
179 } 179 }
180 if workshop, err := workshopRepository.Remove(workshop); err != nil { 180 if workshop, err := workshopRepository.Remove(workshop); err != nil {
181 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 181 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -7,16 +7,16 @@ import ( @@ -7,16 +7,16 @@ import (
7 7
8 var ( 8 var (
9 // 生产制造 - 称重系统 - 默认公司 9 // 生产制造 - 称重系统 - 默认公司
10 - MANUFACTURE_WEIGH_DEFAULT_COMPANYID = 1 10 + MANUFACTURE_DEFAULT_COMPANYID = 1
11 // 生产制造 - 称重系统 - 默认组织 11 // 生产制造 - 称重系统 - 默认组织
12 - MANUFACTURE_WEIGH_DEFAULT_ORGID = 1 12 + MANUFACTURE_DEFAULT_ORGID = 1
13 ) 13 )
14 14
15 func init() { 15 func init() {
16 - if os.Getenv("MANUFACTURE_WEIGH_DEFAULT_COMPANY_ID") != "" {  
17 - MANUFACTURE_WEIGH_DEFAULT_COMPANYID, _ = strconv.Atoi(os.Getenv("MANUFACTURE_WEIGH_DEFAULT_COMPANYID")) 16 + if os.Getenv("MANUFACTURE_DEFAULT_COMPANYID") != "" {
  17 + MANUFACTURE_DEFAULT_COMPANYID, _ = strconv.Atoi(os.Getenv("MANUFACTURE_DEFAULT_COMPANYID"))
18 } 18 }
19 - if os.Getenv("MANUFACTURE_WEIGH_DEFAULT_ORGID") != "" {  
20 - MANUFACTURE_WEIGH_DEFAULT_ORGID, _ = strconv.Atoi(os.Getenv("MANUFACTURE_WEIGH_DEFAULT_ORGID")) 19 + if os.Getenv("MANUFACTURE_DEFAULT_ORGID") != "" {
  20 + MANUFACTURE_DEFAULT_ORGID, _ = strconv.Atoi(os.Getenv("MANUFACTURE_DEFAULT_ORGID"))
21 } 21 }
22 } 22 }
@@ -104,6 +104,14 @@ func (workshop *Workshop) UpdateLine(lineId int, lineName string) error { @@ -104,6 +104,14 @@ func (workshop *Workshop) UpdateLine(lineId int, lineName string) error {
104 if line.Removed == Deleted { 104 if line.Removed == Deleted {
105 return fmt.Errorf("生产线:%v已删除", line.LineName) 105 return fmt.Errorf("生产线:%v已删除", line.LineName)
106 } 106 }
  107 + for _, v := range workshop.ProductLines {
  108 + if v.Removed == Deleted {
  109 + continue
  110 + }
  111 + if v.LineName == lineName && v.LineId != lineId {
  112 + return fmt.Errorf("生产线:%v已存在", lineName)
  113 + }
  114 + }
107 line.LineName = lineName 115 line.LineName = lineName
108 return nil 116 return nil
109 } 117 }
@@ -174,6 +182,21 @@ func (workshop *Workshop) UpdateSection(lineId, sectionId int, sectionName strin @@ -174,6 +182,21 @@ func (workshop *Workshop) UpdateSection(lineId, sectionId int, sectionName strin
174 if section.Removed == Deleted { 182 if section.Removed == Deleted {
175 return fmt.Errorf("工段:%v已删除", section.SectionName) 183 return fmt.Errorf("工段:%v已删除", section.SectionName)
176 } 184 }
  185 +
  186 + // 当前线下面工段不能重复
  187 + line, err := workshop.FindLine(lineId)
  188 + if err != nil {
  189 + return err
  190 + }
  191 + for _, v := range line.ProductSections {
  192 + if v.Removed == Deleted {
  193 + continue
  194 + }
  195 + if v.SectionName == sectionName && v.SectionId != sectionId {
  196 + return fmt.Errorf("工段:%v已存在", sectionName)
  197 + }
  198 + }
  199 +
177 section.SectionName = sectionName 200 section.SectionName = sectionName
178 return nil 201 return nil
179 } 202 }
@@ -2,6 +2,7 @@ package dao @@ -2,6 +2,7 @@ package dao
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/constant"
5 "strconv" 6 "strconv"
6 "strings" 7 "strings"
7 8
@@ -106,15 +107,15 @@ func (d *MaterialK3cloudDao) SyncDataMaterialK3cloud(data []models.MaterialK3clo @@ -106,15 +107,15 @@ func (d *MaterialK3cloudDao) SyncDataMaterialK3cloud(data []models.MaterialK3clo
106 } 107 }
107 108
108 //SyncDataProudct 同步MaterialK3cloud表数据到Proudct表 109 //SyncDataProudct 同步MaterialK3cloud表数据到Proudct表
109 -func (d *MaterialK3cloudDao) SyncDataProudct(version int64) error { 110 +func (d *MaterialK3cloudDao) SyncDataProudct(version int64, orgName string) error {
110 // -- 插入或者更新 111 // -- 插入或者更新
111 - sql := `INSERT INTO "manufacture"."product"( 112 + sql := fmt.Sprintf(`INSERT INTO "manufacture"."product"(
112 "company_id", "org_id", "product_id", "product_code", "product_name", 113 "company_id", "org_id", "product_id", "product_code", "product_name",
113 - "product_category", "product_spec", "created_at", "updated_at" 114 + "product_category", "product_spec", "created_at", "updated_at","ext"
114 ) 115 )
115 - SELECT 0,use_org_id,"join_product_id","number","name","material_group_name",  
116 - json_build_object('unit',specification),now(),now()  
117 - FROM "manufacture"."material_k3cloud" WHERE "data_version"=? AND "material_group_number" LIKE '05%' 116 + SELECT %v,%v,"join_product_id","number","name","material_group_name",
  117 + json_build_object('unit',specification),now(),now(),json_build_object('orgName','%v')
  118 + FROM "manufacture"."material_k3cloud" WHERE "data_version"=? AND "material_group_number" LIKE '05%%'
118 ON conflict ( product_id ) DO 119 ON conflict ( product_id ) DO
119 UPDATE 120 UPDATE
120 SET ( 121 SET (
@@ -122,7 +123,7 @@ func (d *MaterialK3cloudDao) SyncDataProudct(version int64) error { @@ -122,7 +123,7 @@ func (d *MaterialK3cloudDao) SyncDataProudct(version int64) error {
122 "product_category", "product_spec", "updated_at")=( 123 "product_category", "product_spec", "updated_at")=(
123 EXCLUDED."company_id", EXCLUDED."org_id",EXCLUDED."product_id", 124 EXCLUDED."company_id", EXCLUDED."org_id",EXCLUDED."product_id",
124 EXCLUDED."product_code",EXCLUDED."product_name",EXCLUDED."product_category", 125 EXCLUDED."product_code",EXCLUDED."product_name",EXCLUDED."product_category",
125 - EXCLUDED."product_spec", EXCLUDED."updated_at") ` 126 + EXCLUDED."product_spec", EXCLUDED."updated_at") `, constant.MANUFACTURE_DEFAULT_COMPANYID, constant.MANUFACTURE_DEFAULT_ORGID, orgName)
126 _, err := d.transactionContext.PgTx.Exec(sql, version) 127 _, err := d.transactionContext.PgTx.Exec(sql, version)
127 return err 128 return err
128 } 129 }
@@ -61,3 +61,28 @@ func NewProductCodeCache(id int) ProductCodeCache { @@ -61,3 +61,28 @@ func NewProductCodeCache(id int) ProductCodeCache {
61 Time: time.Now(), 61 Time: time.Now(),
62 } 62 }
63 } 63 }
  64 +
  65 +type PlanBatchCodeCache struct {
  66 + CompanyId int
  67 + Time time.Time
  68 +}
  69 +
  70 +func (ca PlanBatchCodeCache) CacheKey() string {
  71 + str := fmt.Sprintf("%v:plan-batch-code:%v:%v", constant.CACHE_PREFIX, ca.CompanyId, ca.Time.Format("20060102"))
  72 + return str
  73 +}
  74 +func (ca PlanBatchCodeCache) Format(index int) string {
  75 + if index <= 999 {
  76 + return fmt.Sprintf("%v%03d", ca.Time.Format("20060102"), index)
  77 + }
  78 + return fmt.Sprintf("%v%d", ca.Time.Format("20060102"), index)
  79 +}
  80 +func (ca PlanBatchCodeCache) Expire() time.Duration {
  81 + return time.Hour * 24
  82 +}
  83 +func NewPlanBatchCodeCache(id int) PlanBatchCodeCache {
  84 + return PlanBatchCodeCache{
  85 + CompanyId: id,
  86 + Time: time.Now(),
  87 + }
  88 +}
@@ -174,7 +174,6 @@ func (repository *ProductPlanRepository) Find(queryOptions map[string]interface{ @@ -174,7 +174,6 @@ func (repository *ProductPlanRepository) Find(queryOptions map[string]interface{
174 query := sqlbuilder.BuildQuery(tx.Model(&productPlanModels), queryOptions) 174 query := sqlbuilder.BuildQuery(tx.Model(&productPlanModels), queryOptions)
175 query.SetWhereByQueryOption("company_id = ?", "companyId") 175 query.SetWhereByQueryOption("company_id = ?", "companyId")
176 query.SetWhereByQueryOption("org_id = ?", "orgId") 176 query.SetWhereByQueryOption("org_id = ?", "orgId")
177 - query.SetWhereByQueryOption("batch_number=?", "batchNumber")  
178 177
179 if v, ok := queryOptions["batchNumber"]; ok && len(v.(string)) > 0 { 178 if v, ok := queryOptions["batchNumber"]; ok && len(v.(string)) > 0 {
180 query.Where(fmt.Sprintf(`batch_number like '%%%v%%'`, v)) 179 query.Where(fmt.Sprintf(`batch_number like '%%%v%%'`, v))
@@ -14,7 +14,7 @@ import ( @@ -14,7 +14,7 @@ import (
14 func WorkshopWorkTimeRecordStatics(c context.Context, t *asynq.Task) error { 14 func WorkshopWorkTimeRecordStatics(c context.Context, t *asynq.Task) error {
15 svr := service.NewAttendanceService(nil) 15 svr := service.NewAttendanceService(nil)
16 cmd := &command.WorkshopWorkTimeRecordStaticsCommand{} 16 cmd := &command.WorkshopWorkTimeRecordStaticsCommand{}
17 - if err := json.Unmarshal(t.Payload(), cmd); err != nil { 17 + if err := json.Unmarshal(t.Payload(), cmd); err != nil || cmd == nil {
18 return err 18 return err
19 } 19 }
20 log.Logger.Debug(fmt.Sprintf("【考勤记录统计】 消费 记录ID:%v 时间:%v", cmd.ProductAttendanceId, cmd.WorkTimeBefore)) 20 log.Logger.Debug(fmt.Sprintf("【考勤记录统计】 消费 记录ID:%v 时间:%v", cmd.ProductAttendanceId, cmd.WorkTimeBefore))