From 09fe1d906147cc88bb00cb0a6a1361ddd4112fa4 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期二, 30 四月 2024 09:49:05 +0800 Subject: [PATCH] 修复&优化 --- constvar/const.go | 6 +- service/fineness.go | 37 ++++++++++-------- service/silk_rank.go | 32 +++++++--------- controllers/fineness.go | 5 +- docs/swagger.yaml | 9 +++- docs/docs.go | 11 ++++- docs/swagger.json | 11 ++++- 7 files changed, 66 insertions(+), 45 deletions(-) diff --git a/constvar/const.go b/constvar/const.go index 018497d..9b4b679 100644 --- a/constvar/const.go +++ b/constvar/const.go @@ -38,9 +38,9 @@ type BadFinenessGrade string const ( - BadFinenessGradeA = "badA" - BadFinenessGradeB = "badB" - BadFinenessGradeC = "badC" + BadFinenessGradeA = "閲庣氦" + BadFinenessGradeB = "澶ч噹" + BadFinenessGradeC = "鐗归噹" ) const ( diff --git a/controllers/fineness.go b/controllers/fineness.go index c2c9b1a..9cc41d3 100644 --- a/controllers/fineness.go +++ b/controllers/fineness.go @@ -314,9 +314,10 @@ // @Tags 绾ゅ害妫�楠� // @Summary 绾ゅ害妫�楠屼慨鏀� // @Produce application/json -// @Param object body response.FinenessCheckInfo true "瀛楀吀淇℃伅" +// @Param object body response.FinenessCheckInfo true "鍙傛暟" +// @Param Authorization header string true "token" // @Success 200 {object} util.Response "鎴愬姛" -// @Router /api-jl/v1/fineness/check [post] +// @Router /api-jl/v1/fineness/check [PUT] func (slf FinenessController) CheckEdit(c *gin.Context) { var params response.FinenessCheckInfo if err := c.BindJSON(¶ms); err != nil { diff --git a/docs/docs.go b/docs/docs.go index 513714a..2a40518 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -399,7 +399,7 @@ } } }, - "post": { + "put": { "produces": [ "application/json" ], @@ -409,13 +409,20 @@ "summary": "绾ゅ害妫�楠屼慨鏀�", "parameters": [ { - "description": "瀛楀吀淇℃伅", + "description": "鍙傛暟", "name": "object", "in": "body", "required": true, "schema": { "$ref": "#/definitions/response.FinenessCheckInfo" } + }, + { + "type": "string", + "description": "token", + "name": "Authorization", + "in": "header", + "required": true } ], "responses": { diff --git a/docs/swagger.json b/docs/swagger.json index f6e3aed..60235c7 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -387,7 +387,7 @@ } } }, - "post": { + "put": { "produces": [ "application/json" ], @@ -397,13 +397,20 @@ "summary": "绾ゅ害妫�楠屼慨鏀�", "parameters": [ { - "description": "瀛楀吀淇℃伅", + "description": "鍙傛暟", "name": "object", "in": "body", "required": true, "schema": { "$ref": "#/definitions/response.FinenessCheckInfo" } + }, + { + "type": "string", + "description": "token", + "name": "Authorization", + "in": "header", + "required": true } ], "responses": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 66d18f7..7d4e568 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1706,14 +1706,19 @@ summary: 绾ゅ害妫�楠屽垪琛� tags: - 绾ゅ害妫�楠� - post: + put: parameters: - - description: 瀛楀吀淇℃伅 + - description: 鍙傛暟 in: body name: object required: true schema: $ref: '#/definitions/response.FinenessCheckInfo' + - description: token + in: header + name: Authorization + required: true + type: string produces: - application/json responses: diff --git a/service/fineness.go b/service/fineness.go index 21fe070..d5e3663 100644 --- a/service/fineness.go +++ b/service/fineness.go @@ -18,7 +18,7 @@ var carCheckNumber = 0 //鍗曚釜car宸叉鏌ユ牱鏈暟 var item *models.FinenessCheckItem - var deviation decimal.Decimal + var deviation, totalDeviation decimal.Decimal var finenessGrade string var roundingItemMap = make(map[float32]*models.FinenessRoundingItem, 0) lastCarNo = finenessRegister.FinenessList[0].Position @@ -31,8 +31,9 @@ fineness := decimal.NewFromFloat32(roundedHalfFineness) for i := 0; i < finenessItem.Quantity; i++ { allFinenessList = append(allFinenessList, fineness) + personFinenessList = append(personFinenessList, fineness) } - personFinenessList = append(personFinenessList, fineness) + if roundingItemMap[roundedHalfFineness] == nil { roundingItemMap[roundedHalfFineness] = &models.FinenessRoundingItem{ Fineness: fineness, @@ -47,13 +48,15 @@ carCheckNumber = 0 if endCarMap[finenessItem.Position] { //璧板埌浜嗘煇涓汉鏈�鍚庣殑杞﹀彿,姣忎汉绠椾竴娆″亸宸拰绛夌骇 deviation = utils.Deviation(personFinenessList) - finenessGrade = CalcFinenessGrade(item.Deviation, item.TotalDeviation, item.Cleanliness, item.Purity, item.TwiceChange, standardMap) + totalDeviation = TotalDeviation(personFinenessList, utils.Average(personFinenessList)) + finenessGrade = CalcFinenessGrade(deviation, totalDeviation, decimal.Zero, decimal.Zero, decimal.Zero, standardMap) personFinenessList = personFinenessList[:0] } else { deviation = decimal.Zero + totalDeviation = decimal.Zero finenessGrade = "" } - item = MakeFinenessCheckItem(roundingItemMap, finenessRegister.ID, lastCarNo, deviation, finenessGrade) + item = MakeFinenessCheckItem(roundingItemMap, finenessRegister.ID, lastCarNo, deviation, totalDeviation, finenessGrade) finenessCheckItems = append(finenessCheckItems, item) roundingItemMap = make(map[float32]*models.FinenessRoundingItem, 0) //閲嶇疆 } @@ -103,7 +106,7 @@ return err } -func MakeFinenessCheckItem(roundingItemMap map[float32]*models.FinenessRoundingItem, finenessRegisterID uint, position int, deviation decimal.Decimal, finenessGrade string) *models.FinenessCheckItem { +func MakeFinenessCheckItem(roundingItemMap map[float32]*models.FinenessRoundingItem, finenessRegisterID uint, position int, deviation, totalDeviation decimal.Decimal, finenessGrade string) *models.FinenessCheckItem { roundingItems := make([]*models.FinenessRoundingItem, 0, len(roundingItemMap)) for _, v := range roundingItemMap { roundingItems = append(roundingItems, &models.FinenessRoundingItem{ @@ -116,6 +119,7 @@ Position: position, FinenessRoundingItems: roundingItems, Deviation: deviation, + TotalDeviation: totalDeviation, FinenessGrade: finenessGrade, Remark: "", } @@ -136,7 +140,7 @@ for _, pair := range st.ValueList { switch st.CheckItem { case constvar.CheckItemDeviation: - if st.SortType == SortTypeAsc { + if st.SortType == ValueTypeSmallerBetter { if deviation.LessThanOrEqual(pair.RankValue) { grade = pair.RankName } @@ -146,7 +150,7 @@ } } case constvar.CheckItemMaxDeviation: - if st.SortType == SortTypeAsc { + if st.SortType == ValueTypeSmallerBetter { if totalDeviation.LessThanOrEqual(pair.RankValue) { grade = pair.RankName } @@ -156,7 +160,7 @@ } } case constvar.CheckItemTwiceChange: - if st.SortType == SortTypeAsc { + if st.SortType == ValueTypeSmallerBetter { if twiceChange.LessThanOrEqual(pair.RankValue) { grade = pair.RankName } @@ -166,7 +170,7 @@ } } case constvar.CheckItemCleanliness: - if st.SortType == SortTypeAsc { + if st.SortType == ValueTypeSmallerBetter { if cleanliness.LessThanOrEqual(pair.RankValue) { grade = pair.RankName } @@ -176,7 +180,7 @@ } } case constvar.CheckItemPurity: - if st.SortType == SortTypeAsc { + if st.SortType == ValueTypeSmallerBetter { if purity.LessThanOrEqual(pair.RankValue) { grade = pair.RankName } @@ -190,13 +194,14 @@ break } } - if grade != "" { - checkItemGradeMap[st.CheckItem] = grade - gradeRanks = append(gradeRanks, gradeRank{ - gradeName: grade, - gradeRank: st.GradeRank[grade], - }) + if grade == "" { + grade = constvar.BadFinenessGradeC } + checkItemGradeMap[st.CheckItem] = grade + gradeRanks = append(gradeRanks, gradeRank{ + gradeName: grade, + gradeRank: st.GradeRank[grade], + }) } if len(gradeRanks) == 0 { return "" diff --git a/service/silk_rank.go b/service/silk_rank.go index e78a5a1..6d76999 100644 --- a/service/silk_rank.go +++ b/service/silk_rank.go @@ -14,7 +14,7 @@ EndFineness decimal.Decimal GradeMap map[string]struct{} ValueList []*Pair - SortType SortType + SortType ValueType GradeRank map[string]int } @@ -23,19 +23,19 @@ RankValue decimal.Decimal } -type SortType int +type ValueType int const ( - SortTypeAsc SortType = 0 - SortTypeDesc SortType = 1 + ValueTypeSmallerBetter ValueType = 0 //鍊兼寜鍗囧簭鎺掑悕锛堝�艰秺澶э紝绛夌骇瓒婇珮锛� + ValueTypeGreaterBetter ValueType = 1 //鍊兼寜闄嶅簭鎺掑悕锛堝�艰秺灏忥紝绛夌骇瓒婁綆锛� ) -var sortTypeMap = map[constvar.CheckItem]SortType{ - constvar.CheckItemDeviation: SortTypeAsc, - constvar.CheckItemTwiceChange: SortTypeAsc, - constvar.CheckItemCleanliness: SortTypeDesc, - constvar.CheckItemPurity: SortTypeDesc, - constvar.CheckItemMaxDeviation: SortTypeAsc, +var sortTypeMap = map[constvar.CheckItem]ValueType{ + constvar.CheckItemDeviation: ValueTypeSmallerBetter, + constvar.CheckItemTwiceChange: ValueTypeSmallerBetter, + constvar.CheckItemCleanliness: ValueTypeGreaterBetter, + constvar.CheckItemPurity: ValueTypeGreaterBetter, + constvar.CheckItemMaxDeviation: ValueTypeSmallerBetter, } func GetSilkRankStandard(startFineness, endFineness decimal.Decimal) (map[string]*Standard, error) { @@ -87,28 +87,24 @@ } } //value鎺掑簭 - for k := range standardMap { + for k := range standardMap { //绛夌骇闄嶅簭鎺掑垪 sort.Slice(standardMap[k].ValueList, func(i, j int) bool { sortType := sortTypeMap[standardMap[k].CheckItem] standardMap[k].SortType = sortType - if sortType == SortTypeAsc { + if sortType == ValueTypeSmallerBetter { return standardMap[k].ValueList[i].RankValue.LessThan(standardMap[k].ValueList[j].RankValue) } else { return standardMap[k].ValueList[i].RankValue.GreaterThan(standardMap[k].ValueList[j].RankValue) } }) } - //绛夌骇鎺掑悕 + //绛夌骇鎺掑悕 GradeRank瓒婂ぇ锛岀瓑绾ц秺楂� for lineId, standard := range standardMap { for k, pair := range standard.ValueList { if standardMap[lineId].GradeRank == nil { standardMap[lineId].GradeRank = make(map[string]int, 0) } - if standard.SortType == SortTypeAsc { - standardMap[lineId].GradeRank[pair.RankName] = k + 1 - } else { - standardMap[lineId].GradeRank[pair.RankName] = len(standard.ValueList) - k - } + standardMap[lineId].GradeRank[pair.RankName] = len(standard.ValueList) - k } } return standardMap, nil -- Gitblit v1.8.0