作者 yangfu

fix:计划实际产能包含二级品

@@ -119,9 +119,9 @@ spec: @@ -119,9 +119,9 @@ spec:
119 - name: MANUFACTURE_DEFAULT_ORGID 119 - name: MANUFACTURE_DEFAULT_ORGID
120 value: "487" 120 value: "487"
121 - name: MANUFACTURE_DEFAULT_WORKSHOPID 121 - name: MANUFACTURE_DEFAULT_WORKSHOPID
122 - value: "2" 122 + value: "28"
123 - name: MANUFACTURE_PRODUCT_TYPE 123 - name: MANUFACTURE_PRODUCT_TYPE
124 - value: "0502010004ST,0502010004ST" 124 + value: "SG,SG"
125 - name: MQTT_HOST 125 - name: MQTT_HOST
126 value: "47.97.5.102" 126 value: "47.97.5.102"
127 - name: MQTT_PORT 127 - name: MQTT_PORT
@@ -37,7 +37,7 @@ func AutoWorkshopPlanCompletionRecord(ctx context.Context) error { @@ -37,7 +37,7 @@ func AutoWorkshopPlanCompletionRecord(ctx context.Context) error {
37 begin := utils.GetZeroTime(end.Add(-time.Second)) 37 begin := utils.GetZeroTime(end.Add(-time.Second))
38 approveAttendanceRecordsService, _ := domainService.NewPGWorkshopPlanCompletionRecordService(transactionContext.(*pgTransaction.TransactionContext)) 38 approveAttendanceRecordsService, _ := domainService.NewPGWorkshopPlanCompletionRecordService(transactionContext.(*pgTransaction.TransactionContext))
39 39
40 - if err = approveAttendanceRecordsService.WorkshopPlanCompletion(begin, end); err != nil { 40 + if err = approveAttendanceRecordsService.WorkshopPlanCompletion(begin, end, "yesterday"); err != nil {
41 log.Logger.Error(err.Error(), map[string]interface{}{"task": "定时刷新车间计划完成纪录"}) 41 log.Logger.Error(err.Error(), map[string]interface{}{"task": "定时刷新车间计划完成纪录"})
42 return err 42 return err
43 } 43 }
@@ -74,7 +74,7 @@ func AutoTodayWorkshopPlanCompletionRecord(ctx context.Context) error { @@ -74,7 +74,7 @@ func AutoTodayWorkshopPlanCompletionRecord(ctx context.Context) error {
74 end := time.Now() 74 end := time.Now()
75 approveAttendanceRecordsService, _ := domainService.NewPGWorkshopPlanCompletionRecordService(transactionContext.(*pgTransaction.TransactionContext)) 75 approveAttendanceRecordsService, _ := domainService.NewPGWorkshopPlanCompletionRecordService(transactionContext.(*pgTransaction.TransactionContext))
76 76
77 - if err = approveAttendanceRecordsService.WorkshopPlanCompletion(begin, end); err != nil { 77 + if err = approveAttendanceRecordsService.WorkshopPlanCompletion(begin, end, "today"); err != nil {
78 log.Logger.Error(err.Error(), map[string]interface{}{"task": "定时刷新当天车间计划完成纪录"}) 78 log.Logger.Error(err.Error(), map[string]interface{}{"task": "定时刷新当天车间计划完成纪录"})
79 return err 79 return err
80 } 80 }
@@ -13,6 +13,7 @@ import ( @@ -13,6 +13,7 @@ import (
13 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/redis" 13 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/redis"
14 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/utils" 14 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/utils"
15 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/log" 15 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/log"
  16 + "math/rand"
16 "strconv" 17 "strconv"
17 "sync" 18 "sync"
18 "time" 19 "time"
@@ -143,9 +144,9 @@ func (deviceCollectionService *DeviceCollectionService) DeviceCollection(createD @@ -143,9 +144,9 @@ func (deviceCollectionService *DeviceCollectionService) DeviceCollection(createD
143 } 144 }
144 } 145 }
145 // TODO:测试假数据,后期注释掉 146 // TODO:测试假数据,后期注释掉
146 - //if createDeviceCollectionCommand.DeviceType == domain.DeviceTypeChuanChuanJi {  
147 - // newDeviceCollection.Values["Count"] = rand.Intn(300)  
148 - //} 147 + if createDeviceCollectionCommand.DeviceType == domain.DeviceTypeChuanChuanJi {
  148 + newDeviceCollection.Values["Count"] = rand.Intn(300)
  149 + }
149 deviceCollection, err := deviceCollectionRepository.Save(newDeviceCollection) 150 deviceCollection, err := deviceCollectionRepository.Save(newDeviceCollection)
150 if err != nil { 151 if err != nil {
151 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 152 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -22,6 +22,8 @@ var ALLIED_CREATION_USER_HOST = "http://localhost:8081" //"http://allied-creatio @@ -22,6 +22,8 @@ var ALLIED_CREATION_USER_HOST = "http://localhost:8081" //"http://allied-creatio
22 //天联共创业务模块 22 //天联共创业务模块
23 var ALLIED_CREATION_COOPERATION_HOST = "http://localhost:8082" // "http://allied-creation-cooperation-dev.fjmaimaimai.com" 23 var ALLIED_CREATION_COOPERATION_HOST = "http://localhost:8082" // "http://allied-creation-cooperation-dev.fjmaimaimai.com"
24 24
  25 +var MMM_BYTE_BANK_HOST = "http://220.250.41.79:8301"
  26 +
25 var CUSTOMER_ACCOUNT = []int64{3129687560814592, 3129687690100739, 3492238958608384} 27 var CUSTOMER_ACCOUNT = []int64{3129687560814592, 3129687690100739, 3492238958608384}
26 28
27 const CUSTOMER_ACCOUNT_DELIMITER = "," 29 const CUSTOMER_ACCOUNT_DELIMITER = ","
@@ -64,7 +66,9 @@ func init() { @@ -64,7 +66,9 @@ func init() {
64 //if os.Getenv("SMS_SERVE_HOST") != "" { 66 //if os.Getenv("SMS_SERVE_HOST") != "" {
65 // SMS_SERVE_HOST = os.Getenv("SMS_SERVE_HOST") 67 // SMS_SERVE_HOST = os.Getenv("SMS_SERVE_HOST")
66 //} 68 //}
67 - 69 + if os.Getenv("MMM_BYTE_BANK_HOST") != "" {
  70 + MMM_BYTE_BANK_HOST = os.Getenv("MMM_BYTE_BANK_HOST")
  71 + }
68 if os.Getenv("SERVICE_ENV") != "" { 72 if os.Getenv("SERVICE_ENV") != "" {
69 SERVICE_ENV = os.Getenv("SERVICE_ENV") 73 SERVICE_ENV = os.Getenv("SERVICE_ENV")
70 } 74 }
@@ -137,8 +137,8 @@ func (d *DeviceRunningRecordInfo) AddDeviceRunningData(t time.Time, data *Device @@ -137,8 +137,8 @@ func (d *DeviceRunningRecordInfo) AddDeviceRunningData(t time.Time, data *Device
137 d.Temp2 = data.Temp2 137 d.Temp2 = data.Temp2
138 d.AddTimeLineDeviceStatus(t, data) 138 d.AddTimeLineDeviceStatus(t, data)
139 139
140 - //d.OEE  
141 - d.TimeUtilization = utils.Round(d.UpTime*100/(time.Now().Sub(utils.GetZeroTime(time.Now())).Minutes()), 2) 140 + //d.OEE (time.Now().Sub(utils.GetZeroTime(time.Now())).Minutes())
  141 + d.TimeUtilization = utils.Round((d.UpTime*100)/(24*60), 2)
142 //d.PerformanceUtilization 142 //d.PerformanceUtilization
143 //d.QualificationUtilization 143 //d.QualificationUtilization
144 } 144 }
@@ -175,7 +175,7 @@ func (d *DeviceRunningRecordInfo) ResetUpTime() float64 { @@ -175,7 +175,7 @@ func (d *DeviceRunningRecordInfo) ResetUpTime() float64 {
175 func (d *DeviceRunningRecordInfo) ResetOEE(pu, qu float64) float64 { 175 func (d *DeviceRunningRecordInfo) ResetOEE(pu, qu float64) float64 {
176 d.PerformanceUtilization = pu 176 d.PerformanceUtilization = pu
177 d.QualificationUtilization = qu 177 d.QualificationUtilization = qu
178 - d.OEE = utils.Round((d.TimeUtilization+d.PerformanceUtilization+d.QualificationUtilization)/3, 1) 178 + d.OEE = utils.Round((d.TimeUtilization*d.PerformanceUtilization*d.QualificationUtilization)/10000, 1)
179 return d.OEE 179 return d.OEE
180 } 180 }
181 181
  1 +package byte_bank
  2 +
  3 +import (
  4 + "encoding/json"
  5 + "fmt"
  6 + gatewayLib "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/allied-lib/gateway"
  7 + translator2 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/allied-lib/gateway/byte_bank/translator"
  8 + "strconv"
  9 + "strings"
  10 + "time"
  11 +)
  12 +
  13 +type HttpLibByteBankServiceGateway struct {
  14 + gatewayLib.BaseServiceGateway
  15 + baseURL string
  16 +}
  17 +
  18 +// ListFormulas 列出所有公式
  19 +func (serviceGateway *HttpLibByteBankServiceGateway) ListFormulas(pageSize int64, pageNumber int64) (*translator2.Formula, error) {
  20 + url := strings.Join([]string{serviceGateway.baseURL, "formulas"}, "/")
  21 + request := serviceGateway.CreateRequest(url, "get")
  22 + request.Param("pageSize", strconv.FormatInt(pageSize, 10))
  23 + request.Param("pageNumber", strconv.FormatInt(pageNumber, 10))
  24 + byteResult, err := request.Bytes()
  25 + if err != nil {
  26 + return nil, fmt.Errorf("获取列表列表失败:%w", err)
  27 + }
  28 + var result gatewayLib.Response
  29 + err = json.Unmarshal(byteResult, &result)
  30 + if err != nil {
  31 + return nil, fmt.Errorf("解析公式列表失败:%w", err)
  32 + }
  33 + var data translator2.Formula
  34 + err = serviceGateway.GetResponseData(result, &data)
  35 + return &data, err
  36 +}
  37 +
  38 +func (serviceGateway *HttpLibByteBankServiceGateway) GetFormula(formulaId string) (*translator2.FormulaDetail, error) {
  39 + url := strings.Join([]string{serviceGateway.baseURL, "/formulas/" + formulaId}, "/")
  40 + request := serviceGateway.CreateRequest(url, "get")
  41 + byteResult, err := request.Bytes()
  42 + if err != nil {
  43 + return nil, fmt.Errorf("获取列表列表失败:%w", err)
  44 + }
  45 + var result gatewayLib.Response
  46 + err = json.Unmarshal(byteResult, &result)
  47 + if err != nil {
  48 + return nil, fmt.Errorf("解析公式列表失败:%w", err)
  49 + }
  50 + var data translator2.FormulaDetail
  51 + err = serviceGateway.GetResponseData(result, &data)
  52 + return &data, err
  53 +}
  54 +
  55 +// AnalysisFormula 方案解析
  56 +func (serviceGateway *HttpLibByteBankServiceGateway) AnalysisFormula(formulaId int64) (*translator2.AnalysisFormulaDetail, error) {
  57 + url := strings.Join([]string{serviceGateway.baseURL, "sql/ad-hoc/for-formula"}, "/")
  58 + request := serviceGateway.CreateRequest(url, "post")
  59 + options := make(map[string]interface{})
  60 + options["formulaId"] = strconv.FormatInt(formulaId, 10)
  61 + _, err := request.JSONBody(options)
  62 + if err != nil {
  63 + return nil, err
  64 + }
  65 + byteResult, err := request.Bytes()
  66 + if err != nil {
  67 + return nil, fmt.Errorf("方案解析失败失败:%w", err)
  68 + }
  69 + var result gatewayLib.Response
  70 + err = json.Unmarshal(byteResult, &result)
  71 + if err != nil {
  72 + return nil, fmt.Errorf("解析方案解析结果失败:%w", err)
  73 + }
  74 + var data translator2.AnalysisFormulaDetail
  75 + err = serviceGateway.GetResponseData(result, &data)
  76 + return &data, err
  77 +}
  78 +
  79 +// AnalysisFormula 方案解析
  80 +func (serviceGateway *HttpLibByteBankServiceGateway) AnalysisFormulaByte(formulaId string) ([]byte, error) {
  81 + url := strings.Join([]string{serviceGateway.baseURL, "sql/ad-hoc/for-formula"}, "/")
  82 + request := serviceGateway.CreateRequest(url, "post")
  83 + options := make(map[string]interface{})
  84 + options["formulaId"] = formulaId
  85 + _, err := request.JSONBody(options)
  86 + if err != nil {
  87 + return nil, err
  88 + }
  89 + byteResult, err := request.Bytes()
  90 + if err != nil {
  91 + return byteResult, fmt.Errorf("方案解析失败失败:%w", err)
  92 + }
  93 + return byteResult, err
  94 +}
  95 +
  96 +// ListDataApplications 列出所有数据应用
  97 +func (serviceGateway *HttpLibByteBankServiceGateway) ListDataApplications(pageSize int64, pageNumber int64) (*translator2.DataApplication, error) {
  98 + url := strings.Join([]string{serviceGateway.baseURL, "data-applications"}, "/")
  99 + request := serviceGateway.CreateRequest(url, "get")
  100 + request.Param("pageSize", strconv.FormatInt(pageSize, 10))
  101 + request.Param("pageNumber", strconv.FormatInt(pageNumber, 10))
  102 + byteResult, err := request.Bytes()
  103 + if err != nil {
  104 + return nil, fmt.Errorf("获取应用列表失败:%w", err)
  105 + }
  106 + var result gatewayLib.Response
  107 + err = json.Unmarshal(byteResult, &result)
  108 + if err != nil {
  109 + return nil, fmt.Errorf("解析应用列表失败:%w", err)
  110 + }
  111 + var data translator2.DataApplication
  112 + err = serviceGateway.GetResponseData(result, &data)
  113 + return &data, err
  114 +}
  115 +
  116 +// StartDataApplication 启动数据应用
  117 +func (serviceGateway *HttpLibByteBankServiceGateway) StartDataApplication(dataApplicationId int64) (map[string]interface{}, error) {
  118 + dataApplicationIdString := strconv.FormatInt(dataApplicationId, 10)
  119 + url := strings.Join([]string{serviceGateway.baseURL, "data-applications/" + dataApplicationIdString + "/data-job/launch"}, "/")
  120 + request := serviceGateway.CreateRequest(url, "post")
  121 + response := make(map[string]interface{})
  122 + err := request.ToJSON(&response)
  123 + if err != nil {
  124 + //log.Logger.Error("Service Gateway Fail")
  125 + return nil, err
  126 + }
  127 + data, err := serviceGateway.responseHandle(response)
  128 + return data, err
  129 +}
  130 +
  131 +func (serviceGateway *HttpLibByteBankServiceGateway) responseHandle(response map[string]interface{}) (map[string]interface{}, error) {
  132 + data := make(map[string]interface{})
  133 + var err error
  134 + if code, ok := response["code"]; ok {
  135 + code := code.(float64)
  136 + if code == 0 {
  137 + data = response["data"].(map[string]interface{})
  138 + } else {
  139 + msg := response["msg"].(string)
  140 + err = fmt.Errorf(strings.Join([]string{strconv.FormatFloat(code, 'f', -1, 64), msg}, " "))
  141 + }
  142 + } else {
  143 + jsonBytes, marshalErr := json.Marshal(response)
  144 + if marshalErr != nil {
  145 + err = marshalErr
  146 + }
  147 + err = fmt.Errorf("无法解析的网关服务数据返回格式:%s", string(jsonBytes))
  148 + }
  149 + return data, err
  150 +}
  151 +
  152 +func NewHttpLibByteBankServiceGateway(host string) *HttpLibByteBankServiceGateway {
  153 + gt := gatewayLib.NewBaseServiceGateway(host)
  154 + gt.ConnectTimeout = 10 * time.Second
  155 + gt.ReadWriteTimeout = 10 * time.Second
  156 + return &HttpLibByteBankServiceGateway{
  157 + BaseServiceGateway: gt,
  158 + }
  159 +}
  1 +package translator
  2 +
  3 +type AnalysisFormulaTranslator struct {
  4 +}
  5 +
  6 +type QueryResult struct {
  7 + Date string `json:"date"`
  8 + Uid string `json:"uid"`
  9 + Value string `json:"value"`
  10 +}
  11 +
  12 +type AnalysisFormulaDetail struct {
  13 + QueryColumnMap struct {
  14 + Date struct {
  15 + Description string `json:"description"`
  16 + Sort int `json:"sort"`
  17 + } `json:"date"`
  18 + Uid struct {
  19 + Description string `json:"description"`
  20 + Sort int `json:"sort"`
  21 + } `json:"uid"`
  22 + Value struct {
  23 + Description string `json:"description"`
  24 + Sort int `json:"sort"`
  25 + } `json:"value"`
  26 + } `json:"queryColumnMap"`
  27 + QueryResult []*QueryResult `json:"queryResult"`
  28 + SqlExpressionError string `json:"sqlExpressionError"`
  29 +}
  30 +
  31 +func NewAnalysisFormulaTranslator() (*AnalysisFormulaTranslator, error) {
  32 + return &AnalysisFormulaTranslator{}, nil
  33 +}
  1 +package translator
  2 +
  3 +import "time"
  4 +
  5 +type DataApplicationTranslator struct {
  6 +}
  7 +
  8 +type DataApplicationDetail struct {
  9 + DataApplicationId string `json:"dataApplicationId"`
  10 + DataApplicationMark string `json:"dataApplicationMark"`
  11 + DataApplicationTitle string `json:"dataApplicationTitle"`
  12 + DataApplicationLaunchType int32 `json:"dataApplicationLaunchType"`
  13 + DataApplicationTags []interface{} `json:"dataApplicationTags"`
  14 + Description string `json:"description"`
  15 + CreateTime time.Time `json:"createTime"`
  16 +}
  17 +
  18 +type DataApplication struct {
  19 + Count int64 `json:"count"`
  20 + DataApplications []*DataApplicationDetail `json:"dataApplications"`
  21 +}
  22 +
  23 +func NewDataApplicationTranslator() (*DataApplicationTranslator, error) {
  24 + return &DataApplicationTranslator{}, nil
  25 +}
  1 +package translator
  2 +
  3 +import "time"
  4 +
  5 +type FormulaTranslator struct {
  6 +}
  7 +
  8 +type Formula struct {
  9 + Count int64 `json:"count"`
  10 + Formulas []FormulaDetail `json:"formulas"`
  11 +}
  12 +
  13 +type FormulaDetail struct {
  14 + CreateTime time.Time `json:"createTime"`
  15 + DataApplicationMark string `json:"dataApplicationMark"`
  16 + FormulaCalculateType int `json:"formulaCalculateType"`
  17 + FormulaConditions []struct {
  18 + FormulaCondition struct {
  19 + FormulaConditionExpression string `json:"formulaConditionExpression"`
  20 + FormulaConditionLeftField struct {
  21 + FormulaFieldDescription string `json:"formulaFieldDescription"`
  22 + FormulaFieldName string `json:"formulaFieldName"`
  23 + FormulaFieldType string `json:"formulaFieldType"`
  24 + FromDataBaseName string `json:"fromDataBaseName"`
  25 + FromDataSetName string `json:"fromDataSetName"`
  26 + } `json:"formulaConditionLeftField"`
  27 + FormulaConditionOperator string `json:"formulaConditionOperator"`
  28 + FormulaConditionRightField struct {
  29 + FormulaFieldDescription string `json:"formulaFieldDescription"`
  30 + FormulaFieldName string `json:"formulaFieldName"`
  31 + FormulaFieldType string `json:"formulaFieldType"`
  32 + FromDataBaseName string `json:"fromDataBaseName"`
  33 + FromDataSetName string `json:"fromDataSetName"`
  34 + } `json:"formulaConditionRightField"`
  35 + FormulaConditionRightValue string `json:"formulaConditionRightValue"`
  36 + FormulaConditionType int `json:"formulaConditionType"`
  37 + } `json:"formulaCondition"`
  38 + OrConditions []interface{} `json:"orConditions"`
  39 + } `json:"formulaConditions"`
  40 + FormulaDescription string `json:"formulaDescription"`
  41 + FormulaGenSqlExpression string `json:"formulaGenSqlExpression"`
  42 + FormulaGroup struct {
  43 + CreateTime time.Time `json:"createTime"`
  44 + FormulaGroupId string `json:"formulaGroupId"`
  45 + FormulaGroupName string `json:"formulaGroupName"`
  46 + FormulaGroupParentId string `json:"formulaGroupParentId"`
  47 + SortNumber int `json:"sortNumber"`
  48 + } `json:"formulaGroup"`
  49 + FormulaId string `json:"formulaId"`
  50 + FormulaName string `json:"formulaName"`
  51 + FormulaSelectFields []struct {
  52 + FormulaField struct {
  53 + FormulaFieldDescription string `json:"formulaFieldDescription"`
  54 + FormulaFieldName string `json:"formulaFieldName"`
  55 + FormulaFieldType string `json:"formulaFieldType"`
  56 + FromDataBaseName string `json:"fromDataBaseName"`
  57 + FromDataSetName string `json:"fromDataSetName"`
  58 + } `json:"formulaField"`
  59 + FormulaSelectFieldExpression string `json:"formulaSelectFieldExpression"`
  60 + FormulaSelectFieldIsGroup bool `json:"formulaSelectFieldIsGroup"`
  61 + FormulaSelectFieldType int `json:"formulaSelectFieldType"`
  62 + SortNumber int `json:"sortNumber"`
  63 + } `json:"formulaSelectFields"`
  64 + FormulaSqlExpression string `json:"formulaSqlExpression"`
  65 +}
  66 +
  67 +func NewFormulaTranslator() (*FormulaTranslator, error) {
  68 + return &FormulaTranslator{}, nil
  69 +}
@@ -26,7 +26,8 @@ from manufacture.product_records @@ -26,7 +26,8 @@ from manufacture.product_records
26 where company_id = ? 26 where company_id = ?
27 and org_id =? 27 and org_id =?
28 and work_station->>'workshopId'='?' 28 and work_station->>'workshopId'='?'
29 -and product_record_type in (1,2) 29 +and work_station->>'sectionName'='包装'
  30 +and product_record_type in (1,2,8)
30 and created_at>=? 31 and created_at>=?
31 and created_at<? 32 and created_at<?
32 ), product_record_sum as( 33 ), product_record_sum as(
@@ -37,13 +38,14 @@ select @@ -37,13 +38,14 @@ select
37 plan_devoted->>'weight' plan_weight -- 计划重量 38 plan_devoted->>'weight' plan_weight -- 计划重量
38 , coalesce(b.weight,0) real_weight --批次实际产能 39 , coalesce(b.weight,0) real_weight --批次实际产能
39 ,a.product_plan_id 40 ,a.product_plan_id
  41 +,a.product_date
40 from manufacture.product_plan a left join product_record_sum b on a.product_plan_id = b.plan_id 42 from manufacture.product_plan a left join product_record_sum b on a.product_plan_id = b.plan_id
41 where company_id = ? 43 where company_id = ?
42 and org_id =? 44 and org_id =?
43 and workshop->>'workshopId'='?' 45 and workshop->>'workshopId'='?'
44 -and created_at >=?  
45 -and created_at<?  
46 -order by created_at desc`) 46 +and product_date >=?
  47 +--and created_at<?
  48 +--order by created_at desc`)
47 if _, err := tx.Query(records, sql, 49 if _, err := tx.Query(records, sql,
48 companyId, orgId, workshopId, begin, end, 50 companyId, orgId, workshopId, begin, end,
49 companyId, orgId, workshopId, begin, end); err != nil { 51 companyId, orgId, workshopId, begin, end); err != nil {
  1 +package domainService
  2 +
  3 +import (
  4 + "github.com/linmadan/egglib-go/core/application"
  5 + "github.com/tidwall/gjson"
  6 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/constant"
  7 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/allied-lib/gateway/byte_bank"
  8 +)
  9 +
  10 +type ByteBankService struct {
  11 + internalService *byte_bank.HttpLibByteBankServiceGateway
  12 +}
  13 +
  14 +func NewByteBankService() *ByteBankService {
  15 + return &ByteBankService{
  16 + internalService: byte_bank.NewHttpLibByteBankServiceGateway(constant.MMM_BYTE_BANK_HOST),
  17 + }
  18 +}
  19 +
  20 +//GetFormulasId 获取公式id
  21 +func (svr *ByteBankService) GetFormulasId(formulaName string) string {
  22 + //获取公式id
  23 + formulaId := ""
  24 +listLoop:
  25 + for i := 0; ; i++ {
  26 + data, err := svr.internalService.ListFormulas(1000, int64(i))
  27 + if err != nil {
  28 + return ""
  29 + }
  30 + if len(data.Formulas) == 0 {
  31 + break listLoop
  32 + }
  33 + for _, item := range data.Formulas {
  34 +
  35 + if item.FormulaDescription == formulaName {
  36 + formulaId = item.FormulaId
  37 + break listLoop
  38 + }
  39 + }
  40 + }
  41 + return formulaId
  42 +}
  43 +
  44 +// SectionProductive 时段产能
  45 +func (svr *ByteBankService) SectionProductive() (interface{}, error) {
  46 + //获取公式id时段产能
  47 + formulaId := svr.GetFormulasId("type_salesman_id")
  48 + //获取解析数据
  49 + byteResult, err := svr.internalService.AnalysisFormulaByte(formulaId)
  50 + if err != nil {
  51 + return struct{}{}, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  52 + }
  53 + code := gjson.GetBytes(byteResult, "code").String()
  54 + if code != "0" {
  55 + msg := gjson.GetBytes(byteResult, "msg").String()
  56 + return struct{}{}, application.ThrowError(application.INTERNAL_SERVER_ERROR, msg)
  57 + }
  58 + //待解析的
  59 + queryResult := gjson.GetBytes(byteResult, "data.queryResult").Array()
  60 + for _, item := range queryResult {
  61 + if item.Get("type_salesman_id").String() != "" {
  62 + continue
  63 + }
  64 + }
  65 + return nil, nil
  66 +}
  1 +package domainService
  2 +
  3 +import "testing"
  4 +
  5 +func TestSectionProductive(t *testing.T) {
  6 + svr := NewByteBankService()
  7 + svr.SectionProductive()
  8 +}
@@ -289,7 +289,6 @@ func (ptr *PGCommonStatisticsService) DeviceRunningStatistics(queryOptions map[s @@ -289,7 +289,6 @@ func (ptr *PGCommonStatisticsService) DeviceRunningStatistics(queryOptions map[s
289 if err != nil { 289 if err != nil {
290 return nil, err 290 return nil, err
291 } 291 }
292 -  
293 var response = make([]interface{}, 0) 292 var response = make([]interface{}, 0)
294 _, dailyRecords, err := deviceRunningRecordRepository.Find(map[string]interface{}{"companyId": request.CompanyId, "orgId": request.OrgId, "productDate": t}) 293 _, dailyRecords, err := deviceRunningRecordRepository.Find(map[string]interface{}{"companyId": request.CompanyId, "orgId": request.OrgId, "productDate": t})
295 for i := 0; i < len(devices); i++ { 294 for i := 0; i < len(devices); i++ {
@@ -28,11 +28,12 @@ func NewPGWorkshopPlanCompletionRecordService(transactionContext *pgTransaction. @@ -28,11 +28,12 @@ func NewPGWorkshopPlanCompletionRecordService(transactionContext *pgTransaction.
28 } 28 }
29 29
30 // 车间完成统计 30 // 车间完成统计
31 -func (ptr *PGWorkshopPlanCompletionRecordService) WorkshopPlanCompletion(begin time.Time, end time.Time) error { 31 +func (ptr *PGWorkshopPlanCompletionRecordService) WorkshopPlanCompletion(begin time.Time, end time.Time, planIn string) error {
32 type record struct { 32 type record struct {
33 - PlanWeight float64 `json:"plan_weight"`  
34 - RealWeight float64 `json:"real_weight"`  
35 - ProductPlanId float64 `json:"product_plan_id"` 33 + PlanWeight float64 `json:"plan_weight"`
  34 + RealWeight float64 `json:"real_weight"`
  35 + ProductPlanId float64 `json:"product_plan_id"`
  36 + ProductDate time.Time `json:"product_date"`
36 } 37 }
37 cid := constant.MANUFACTURE_DEFAULT_COMPANYID 38 cid := constant.MANUFACTURE_DEFAULT_COMPANYID
38 oid := constant.MANUFACTURE_DEFAULT_ORGID 39 oid := constant.MANUFACTURE_DEFAULT_ORGID
@@ -54,6 +55,11 @@ func (ptr *PGWorkshopPlanCompletionRecordService) WorkshopPlanCompletion(begin t @@ -54,6 +55,11 @@ func (ptr *PGWorkshopPlanCompletionRecordService) WorkshopPlanCompletion(begin t
54 var totalPlan float64 = 0 55 var totalPlan float64 = 0
55 var totalReal float64 = 0 56 var totalReal float64 = 0
56 for _, v := range result { 57 for _, v := range result {
  58 + if planIn == "yesterday" {
  59 + if !(utils.TimeBeforeEqual(begin, v.ProductDate) && utils.TimeAfterEqual(end, v.ProductDate)) {
  60 + continue
  61 + }
  62 + }
57 totalPlan += v.PlanWeight 63 totalPlan += v.PlanWeight
58 totalReal += v.RealWeight 64 totalReal += v.RealWeight
59 } 65 }
@@ -68,7 +74,7 @@ func (ptr *PGWorkshopPlanCompletionRecordService) WorkshopPlanCompletion(begin t @@ -68,7 +74,7 @@ func (ptr *PGWorkshopPlanCompletionRecordService) WorkshopPlanCompletion(begin t
68 } else { 74 } else {
69 completionRate = 0 75 completionRate = 0
70 } 76 }
71 - 77 + totalReal = utils.Round(totalReal, 1)
72 var record *models.WorkshopPlanCompletionRecord 78 var record *models.WorkshopPlanCompletionRecord
73 if record, err = workshopProductRecordDao.FindOne(cid, oid, workshops[i].WorkshopId, begin); err == domain.ErrorNotFound && record == nil { 79 if record, err = workshopProductRecordDao.FindOne(cid, oid, workshops[i].WorkshopId, begin); err == domain.ErrorNotFound && record == nil {
74 record = &models.WorkshopPlanCompletionRecord{ 80 record = &models.WorkshopPlanCompletionRecord{
@@ -6,6 +6,8 @@ import ( @@ -6,6 +6,8 @@ import (
6 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/redis" 6 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/redis"
7 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/port/beego/controllers" 7 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/port/beego/controllers"
8 "net/http" 8 "net/http"
  9 + "strconv"
  10 + "strings"
9 ) 11 )
10 12
11 func init() { 13 func init() {
@@ -30,4 +32,12 @@ func init() { @@ -30,4 +32,12 @@ func init() {
30 ctx.Output.Body([]byte(value)) 32 ctx.Output.Body([]byte(value))
31 } 33 }
32 }) 34 })
  35 + web.Get("/test/cache/d/:key", func(ctx *context.Context) {
  36 + key := ctx.Input.Query(":key")
  37 + if len(key) != 0 && !strings.Contains(key, "*") {
  38 + value, _ := redis.GetRedis().Del(key).Result()
  39 + ctx.Output.SetStatus(http.StatusOK)
  40 + ctx.Output.Body([]byte(strconv.Itoa(int(value))))
  41 + }
  42 + })
33 } 43 }