作者 yangfu

feat: 生产记录上报

@@ -97,7 +97,7 @@ func (productJobService *ProductJobService) GetProductJob(getProductJobQuery *qu @@ -97,7 +97,7 @@ func (productJobService *ProductJobService) GetProductJob(getProductJobQuery *qu
97 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 97 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
98 } 98 }
99 productJob.WorkStation, _ = workshop.FindWorkStation(productJob.WorkStation.WorkshopId, productJob.WorkStation.LineId, productJob.WorkStation.SectionId) 99 productJob.WorkStation, _ = workshop.FindWorkStation(productJob.WorkStation.WorkshopId, productJob.WorkStation.LineId, productJob.WorkStation.SectionId)
100 - 100 + productJob.WorkStation.Principal = workshop.Principal
101 newJobDto := &dto.ProductJobDto{} 101 newJobDto := &dto.ProductJobDto{}
102 newJobDto.LoadDto(productJob, 0) 102 newJobDto.LoadDto(productJob, 0)
103 103
@@ -25,8 +25,8 @@ type ReceiveMaterialCommand struct { @@ -25,8 +25,8 @@ type ReceiveMaterialCommand struct {
25 ProductGroupId int `cname:"生产小组" json:"productGroupId" valid:"Required"` 25 ProductGroupId int `cname:"生产小组" json:"productGroupId" valid:"Required"`
26 // 员工Id 用户唯一标识 26 // 员工Id 用户唯一标识
27 EmployeeId int `cname:"员工" json:"employeeId" valid:"Required"` 27 EmployeeId int `cname:"员工" json:"employeeId" valid:"Required"`
28 - // 产品ID  
29 - ProductId int `cname:"产品" json:"productId" valid:"Required"` 28 + // 物料ID
  29 + UnitConversionId int `cname:"物料ID" json:"unitConversionId" valid:"Required"`
30 // 重量 30 // 重量
31 Weigh float64 `cname:"重量" json:"weigh" valid:"Required"` 31 Weigh float64 `cname:"重量" json:"weigh" valid:"Required"`
32 } 32 }
@@ -25,8 +25,8 @@ type ReturnMaterialCommand struct { @@ -25,8 +25,8 @@ type ReturnMaterialCommand struct {
25 ProductGroupId int `cname:"生产小组" json:"productGroupId" valid:"Required"` 25 ProductGroupId int `cname:"生产小组" json:"productGroupId" valid:"Required"`
26 // 员工Id 用户唯一标识 26 // 员工Id 用户唯一标识
27 EmployeeId int `cname:"员工" json:"employeeId" valid:"Required"` 27 EmployeeId int `cname:"员工" json:"employeeId" valid:"Required"`
28 - // 产品ID  
29 - ProductId int `cname:"产品" json:"productId" valid:"Required"` 28 + // 物料ID
  29 + UnitConversionId int `cname:"物料ID" json:"unitConversionId" valid:"Required"`
30 // 重量 30 // 重量
31 Weigh float64 `cname:"重量" json:"weigh" valid:"Required"` 31 Weigh float64 `cname:"重量" json:"weigh" valid:"Required"`
32 } 32 }
@@ -9,8 +9,26 @@ import ( @@ -9,8 +9,26 @@ import (
9 ) 9 )
10 10
11 type SubmitProductRecordCommand struct { 11 type SubmitProductRecordCommand struct {
  12 + // 企业id
  13 + CompanyId int `cname:"企业id" json:"companyId" valid:"Required"`
  14 + // 组织ID
  15 + OrgId int `cname:"组织ID" json:"orgId" valid:"Required"`
12 // 生产计划ID 16 // 生产计划ID
13 - ProductPlanId int `cname:"生产计划ID" json:"productPlanId" valid:"Required"` 17 + ProductPlanId int `cname:"生产计划" json:"productPlanId" valid:"Required"`
  18 + // 车间ID
  19 + WorkshopId int `cname:"车间" json:"workshopId" valid:"Required"`
  20 + // 生产线ID
  21 + LineId int `cname:"生产线" json:"lineId" valid:"Required"`
  22 + // 工段ID
  23 + SectionId int `cname:"工段" json:"sectionId" valid:"Required"`
  24 + // 生产小组ID
  25 + ProductGroupId int `cname:"生产小组" json:"productGroupId" valid:"Required"`
  26 + // 员工Id 用户唯一标识
  27 + EmployeeId int `cname:"员工" json:"employeeId" valid:"Required"`
  28 + // 物料ID
  29 + UnitConversionId int `cname:"物料ID" json:"unitConversionId" valid:"Required"`
  30 + // 重量
  31 + Weigh float64 `cname:"重量" json:"weigh" valid:"Required"`
14 } 32 }
15 33
16 func (submitProductRecordCommand *SubmitProductRecordCommand) Valid(validation *validation.Validation) { 34 func (submitProductRecordCommand *SubmitProductRecordCommand) Valid(validation *validation.Validation) {
@@ -3,6 +3,7 @@ package service @@ -3,6 +3,7 @@ package service
3 import ( 3 import (
4 "fmt" 4 "fmt"
5 "github.com/linmadan/egglib-go/core/application" 5 "github.com/linmadan/egglib-go/core/application"
  6 + "github.com/linmadan/egglib-go/transaction/pg"
6 "github.com/linmadan/egglib-go/utils/tool_funs" 7 "github.com/linmadan/egglib-go/utils/tool_funs"
7 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/application/factory" 8 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/application/factory"
8 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/application/productPlan/command" 9 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/application/productPlan/command"
@@ -483,10 +484,17 @@ func (productPlanService *ProductPlanService) ReceiveMaterial(receiveMaterialCom @@ -483,10 +484,17 @@ func (productPlanService *ProductPlanService) ReceiveMaterial(receiveMaterialCom
483 defer func() { 484 defer func() {
484 transactionContext.RollbackTransaction() 485 transactionContext.RollbackTransaction()
485 }() 486 }()
  487 +
  488 + productRecordService, _ := domainService.NewPGProductRecordService(transactionContext.(*pg.TransactionContext))
  489 +
  490 + _, err = productRecordService.SubmitProductRecord(domain.RecordTypeReceiveMaterial, tool_funs.SimpleStructToMap(receiveMaterialCommand))
  491 + if err != nil {
  492 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  493 + }
486 if err := transactionContext.CommitTransaction(); err != nil { 494 if err := transactionContext.CommitTransaction(); err != nil {
487 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 495 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
488 } 496 }
489 - return nil, nil 497 + return struct{}{}, nil
490 } 498 }
491 499
492 // 退料 500 // 退料
@@ -504,10 +512,18 @@ func (productPlanService *ProductPlanService) ReturnMaterial(returnMaterialComma @@ -504,10 +512,18 @@ func (productPlanService *ProductPlanService) ReturnMaterial(returnMaterialComma
504 defer func() { 512 defer func() {
505 transactionContext.RollbackTransaction() 513 transactionContext.RollbackTransaction()
506 }() 514 }()
  515 +
  516 + productRecordService, _ := domainService.NewPGProductRecordService(transactionContext.(*pg.TransactionContext))
  517 +
  518 + _, err = productRecordService.SubmitProductRecord(domain.RecordTypeReturnMaterial, tool_funs.SimpleStructToMap(returnMaterialCommand))
  519 + if err != nil {
  520 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  521 + }
  522 +
507 if err := transactionContext.CommitTransaction(); err != nil { 523 if err := transactionContext.CommitTransaction(); err != nil {
508 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 524 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
509 } 525 }
510 - return nil, nil 526 + return struct{}{}, nil
511 } 527 }
512 528
513 // 提交成品记录 (成品 二级品) 529 // 提交成品记录 (成品 二级品)
@@ -525,10 +541,17 @@ func (productPlanService *ProductPlanService) SubmitProductRecord(submitProductR @@ -525,10 +541,17 @@ func (productPlanService *ProductPlanService) SubmitProductRecord(submitProductR
525 defer func() { 541 defer func() {
526 transactionContext.RollbackTransaction() 542 transactionContext.RollbackTransaction()
527 }() 543 }()
  544 +
  545 + productRecordService, _ := domainService.NewPGProductRecordService(transactionContext.(*pg.TransactionContext))
  546 +
  547 + _, err = productRecordService.SubmitProductRecord(domain.RecordTypeSecondLevelWeigh, tool_funs.SimpleStructToMap(submitProductRecordCommand))
  548 + if err != nil {
  549 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  550 + }
528 if err := transactionContext.CommitTransaction(); err != nil { 551 if err := transactionContext.CommitTransaction(); err != nil {
529 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 552 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
530 } 553 }
531 - return nil, nil 554 + return struct{}{}, nil
532 } 555 }
533 556
534 func NewProductPlanService(options map[string]interface{}) *ProductPlanService { 557 func NewProductPlanService(options map[string]interface{}) *ProductPlanService {
@@ -2,7 +2,11 @@ package domain @@ -2,7 +2,11 @@ package domain
2 2
3 // 生产记录信息 (物料、批次、产能(产能、领料、退料、二级品)) 3 // 生产记录信息 (物料、批次、产能(产能、领料、退料、二级品))
4 type ProductRecordInfo struct { 4 type ProductRecordInfo struct {
5 - // 产能 5 + // 生产日期
  6 + ProductDate string `json:"productDate"`
  7 + // 原始上报数据
  8 + OriginalWeigh float64 `json:"originalWeigh,omitempty"`
  9 + // 换算后的产能
6 Weigh float64 `json:"weigh,omitempty"` 10 Weigh float64 `json:"weigh,omitempty"`
7 // 产能 - 审核前 11 // 产能 - 审核前
8 WeighBefore float64 `json:"weighBefore,omitempty"` 12 WeighBefore float64 `json:"weighBefore,omitempty"`
@@ -13,9 +17,9 @@ type ProductRecordInfo struct { @@ -13,9 +17,9 @@ type ProductRecordInfo struct {
13 // 审核时间 17 // 审核时间
14 ApproveAt int64 `json:"approveAt"` 18 ApproveAt int64 `json:"approveAt"`
15 // 物料信息 19 // 物料信息
16 - Material *UnitConversion `json:"material,omitempty"` 20 + //Material *UnitConversion `json:"material,omitempty"`
17 // 生产计划信息(批次) 21 // 生产计划信息(批次)
18 - ProductPlan *ProductPlan `json:"productPlan,omitempty"` 22 + //ProductPlan *ProductPlan `json:"productPlan,omitempty"`
19 // 单位换算ID 23 // 单位换算ID
20 UnitConversionId int `json:"unitConversionId,omitempty"` 24 UnitConversionId int `json:"unitConversionId,omitempty"`
21 25
@@ -40,7 +40,7 @@ type SubmitOptions struct { @@ -40,7 +40,7 @@ type SubmitOptions struct {
40 // SubmitProductRecord 提交生产记录 40 // SubmitProductRecord 提交生产记录
41 func (ptr *PGProductRecordService) SubmitProductRecord(productRecordType int, queryOptions map[string]interface{}) (interface{}, error) { 41 func (ptr *PGProductRecordService) SubmitProductRecord(productRecordType int, queryOptions map[string]interface{}) (interface{}, error) {
42 var request = &SubmitOptions{} 42 var request = &SubmitOptions{}
43 - if err := utils.LoadQueryObject(queryOptions, &request); err != nil { 43 + if err := utils.LoadQueryObject(queryOptions, request); err != nil {
44 return nil, err 44 return nil, err
45 } 45 }
46 46
@@ -103,6 +103,8 @@ func (ptr *PGProductRecordService) SubmitProductRecord(productRecordType int, qu @@ -103,6 +103,8 @@ func (ptr *PGProductRecordService) SubmitProductRecord(productRecordType int, qu
103 CreatedAt: time.Now(), 103 CreatedAt: time.Now(),
104 UpdatedAt: time.Now(), 104 UpdatedAt: time.Now(),
105 ProductRecordInfo: &domain.ProductRecordInfo{ 105 ProductRecordInfo: &domain.ProductRecordInfo{
  106 + ProductDate: plan.ProductDate.Format("2006-01-02"),
  107 + OriginalWeigh: request.Weigh,
106 Weigh: weight, 108 Weigh: weight,
107 WeighBefore: weight, 109 WeighBefore: weight,
108 UnitConversionId: request.UnitConversionId, 110 UnitConversionId: request.UnitConversionId,
@@ -38,19 +38,13 @@ func (repository *ProductRecordRepository) Save(productRecord *domain.ProductRec @@ -38,19 +38,13 @@ func (repository *ProductRecordRepository) Save(productRecord *domain.ProductRec
38 "product_record_info", 38 "product_record_info",
39 "ext", 39 "ext",
40 } 40 }
41 - insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)  
42 - insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields) 41 + insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlbuilder.RemoveSqlFields(sqlBuildFields, "product_record_id", "deleted_at"))
  42 + insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlbuilder.RemoveSqlFields(sqlBuildFields, "product_record_id", "deleted_at"))
43 returningFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields) 43 returningFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
44 - updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "productRecord_id") 44 + updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "product_record_id", "deleted_at")
45 updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields) 45 updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields)
46 tx := repository.transactionContext.PgTx 46 tx := repository.transactionContext.PgTx
47 if productRecord.Identify() == nil { 47 if productRecord.Identify() == nil {
48 - productRecordId, err := repository.nextIdentify()  
49 - if err != nil {  
50 - return productRecord, err  
51 - } else {  
52 - productRecord.ProductRecordId = int(productRecordId)  
53 - }  
54 if _, err := tx.QueryOne( 48 if _, err := tx.QueryOne(
55 pg.Scan( 49 pg.Scan(
56 &productRecord.ProductRecordId, 50 &productRecord.ProductRecordId,
@@ -65,8 +59,8 @@ func (repository *ProductRecordRepository) Save(productRecord *domain.ProductRec @@ -65,8 +59,8 @@ func (repository *ProductRecordRepository) Save(productRecord *domain.ProductRec
65 &productRecord.ProductRecordInfo, 59 &productRecord.ProductRecordInfo,
66 &productRecord.Ext, 60 &productRecord.Ext,
67 ), 61 ),
68 - fmt.Sprintf("INSERT INTO product_records (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),  
69 - productRecord.ProductRecordId, 62 + fmt.Sprintf("INSERT INTO manufacture.product_records (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),
  63 + //productRecord.ProductRecordId,
70 productRecord.CompanyId, 64 productRecord.CompanyId,
71 productRecord.OrgId, 65 productRecord.OrgId,
72 productRecord.ProductRecordType, 66 productRecord.ProductRecordType,
@@ -74,7 +68,7 @@ func (repository *ProductRecordRepository) Save(productRecord *domain.ProductRec @@ -74,7 +68,7 @@ func (repository *ProductRecordRepository) Save(productRecord *domain.ProductRec
74 productRecord.WorkStation, 68 productRecord.WorkStation,
75 productRecord.CreatedAt, 69 productRecord.CreatedAt,
76 productRecord.UpdatedAt, 70 productRecord.UpdatedAt,
77 - productRecord.DeletedAt, 71 + //productRecord.DeletedAt,
78 productRecord.ProductRecordInfo, 72 productRecord.ProductRecordInfo,
79 productRecord.Ext, 73 productRecord.Ext,
80 ); err != nil { 74 ); err != nil {
@@ -95,8 +89,8 @@ func (repository *ProductRecordRepository) Save(productRecord *domain.ProductRec @@ -95,8 +89,8 @@ func (repository *ProductRecordRepository) Save(productRecord *domain.ProductRec
95 &productRecord.ProductRecordInfo, 89 &productRecord.ProductRecordInfo,
96 &productRecord.Ext, 90 &productRecord.Ext,
97 ), 91 ),
98 - fmt.Sprintf("UPDATE product_records SET %s WHERE product_record_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),  
99 - productRecord.ProductRecordId, 92 + fmt.Sprintf("UPDATE manufacture.product_records SET %s WHERE product_record_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
  93 + //productRecord.ProductRecordId,
100 productRecord.CompanyId, 94 productRecord.CompanyId,
101 productRecord.OrgId, 95 productRecord.OrgId,
102 productRecord.ProductRecordType, 96 productRecord.ProductRecordType,
@@ -104,7 +98,7 @@ func (repository *ProductRecordRepository) Save(productRecord *domain.ProductRec @@ -104,7 +98,7 @@ func (repository *ProductRecordRepository) Save(productRecord *domain.ProductRec
104 productRecord.WorkStation, 98 productRecord.WorkStation,
105 productRecord.CreatedAt, 99 productRecord.CreatedAt,
106 productRecord.UpdatedAt, 100 productRecord.UpdatedAt,
107 - productRecord.DeletedAt, 101 + //productRecord.DeletedAt,
108 productRecord.ProductRecordInfo, 102 productRecord.ProductRecordInfo,
109 productRecord.Ext, 103 productRecord.Ext,
110 productRecord.Identify(), 104 productRecord.Identify(),
@@ -64,17 +64,23 @@ func (controller *ProductPlanController) ListProductPlan() { @@ -64,17 +64,23 @@ func (controller *ProductPlanController) ListProductPlan() {
64 64
65 func (controller *ProductPlanController) ReceiveMaterial() { 65 func (controller *ProductPlanController) ReceiveMaterial() {
66 productPlanService := service.NewProductPlanService(nil) 66 productPlanService := service.NewProductPlanService(nil)
67 - receiveMaterialCommand := &command.ReceiveMaterialCommand{}  
68 - Must(controller.Unmarshal(receiveMaterialCommand))  
69 - data, err := productPlanService.ReceiveMaterial(receiveMaterialCommand) 67 + cmd := &command.ReceiveMaterialCommand{}
  68 + Must(controller.Unmarshal(cmd))
  69 + operateInfo := ParseOperateInfo(controller.BaseController)
  70 + cmd.CompanyId = operateInfo.CompanyId
  71 + cmd.OrgId = operateInfo.OrgId
  72 + data, err := productPlanService.ReceiveMaterial(cmd)
70 controller.Response(data, err) 73 controller.Response(data, err)
71 } 74 }
72 75
73 func (controller *ProductPlanController) ReturnMaterial() { 76 func (controller *ProductPlanController) ReturnMaterial() {
74 productPlanService := service.NewProductPlanService(nil) 77 productPlanService := service.NewProductPlanService(nil)
75 - returnMaterialCommand := &command.ReturnMaterialCommand{}  
76 - Must(controller.Unmarshal(returnMaterialCommand))  
77 - data, err := productPlanService.ReturnMaterial(returnMaterialCommand) 78 + cmd := &command.ReturnMaterialCommand{}
  79 + Must(controller.Unmarshal(cmd))
  80 + operateInfo := ParseOperateInfo(controller.BaseController)
  81 + cmd.CompanyId = operateInfo.CompanyId
  82 + cmd.OrgId = operateInfo.OrgId
  83 + data, err := productPlanService.ReturnMaterial(cmd)
78 controller.Response(data, err) 84 controller.Response(data, err)
79 } 85 }
80 86
@@ -104,9 +110,12 @@ func (controller *ProductPlanController) Switch() { @@ -104,9 +110,12 @@ func (controller *ProductPlanController) Switch() {
104 110
105 func (controller *ProductPlanController) SubmitProductRecord() { 111 func (controller *ProductPlanController) SubmitProductRecord() {
106 productPlanService := service.NewProductPlanService(nil) 112 productPlanService := service.NewProductPlanService(nil)
107 - submitProductRecordCommand := &command.SubmitProductRecordCommand{}  
108 - Must(controller.Unmarshal(submitProductRecordCommand))  
109 - data, err := productPlanService.SubmitProductRecord(submitProductRecordCommand) 113 + cmd := &command.SubmitProductRecordCommand{}
  114 + Must(controller.Unmarshal(cmd))
  115 + operateInfo := ParseOperateInfo(controller.BaseController)
  116 + cmd.CompanyId = operateInfo.CompanyId
  117 + cmd.OrgId = operateInfo.OrgId
  118 + data, err := productPlanService.SubmitProductRecord(cmd)
110 controller.Response(data, err) 119 controller.Response(data, err)
111 } 120 }
112 121