正在显示
9 个修改的文件
包含
435 行增加
和
107 行删除
| 1 | package command | 1 | package command |
| 2 | 2 | ||
| 3 | -type SaveEmployeeProductRecordCmd struct { | 3 | +type SaveProductRecordCmd struct { |
| 4 | + //id | ||
| 5 | + ProductRecordId int `json:"productRecordId"` | ||
| 4 | // 车间ID | 6 | // 车间ID |
| 5 | WorkshopId int `cname:"车间ID" json:"workshopId" valid:"Required"` | 7 | WorkshopId int `cname:"车间ID" json:"workshopId" valid:"Required"` |
| 6 | // 生产线ID | 8 | // 生产线ID |
| @@ -15,7 +15,7 @@ import ( | @@ -15,7 +15,7 @@ import ( | ||
| 15 | //产能管理 | 15 | //产能管理 |
| 16 | 16 | ||
| 17 | // 产能管理 页面上手动创建员工生产记录 | 17 | // 产能管理 页面上手动创建员工生产记录 |
| 18 | -func (productRecordService *ProductRecordService) CreateProductCapacities(operateInfo *domain.OperateInfo, param *command.SaveEmployeeProductRecordCmd) (map[string]interface{}, error) { | 18 | +func (productRecordService *ProductRecordService) SaveProductCapacities(operateInfo *domain.OperateInfo, param *command.SaveProductRecordCmd) (map[string]interface{}, error) { |
| 19 | transactionContext, err := factory.CreateTransactionContext(nil) | 19 | transactionContext, err := factory.CreateTransactionContext(nil) |
| 20 | if err != nil { | 20 | if err != nil { |
| 21 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 21 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| @@ -81,14 +81,27 @@ func (productRecordService *ProductRecordService) CreateProductCapacities(operat | @@ -81,14 +81,27 @@ func (productRecordService *ProductRecordService) CreateProductCapacities(operat | ||
| 81 | productRecordRepo, _ := factory.CreateProductRecordRepository(map[string]interface{}{ | 81 | productRecordRepo, _ := factory.CreateProductRecordRepository(map[string]interface{}{ |
| 82 | "transactionContext": transactionContext, | 82 | "transactionContext": transactionContext, |
| 83 | }) | 83 | }) |
| 84 | + | ||
| 84 | nowTime := time.Now() | 85 | nowTime := time.Now() |
| 86 | + if param.ProductRecordId > 0 { | ||
| 87 | + productRecord, err := productRecordRepo.FindOne(map[string]interface{}{ | ||
| 88 | + "productRecordId": param.ProductRecordId, | ||
| 89 | + }) | ||
| 90 | + if err != nil { | ||
| 91 | + return nil, application.ThrowError(application.ARG_ERROR, "获取生产记录数据失败"+err.Error()) | ||
| 92 | + } | ||
| 93 | + if productRecord.ProductRecordInfo.ApproveStatus != domain.ProductRecordNotApprove { | ||
| 94 | + return nil, application.ThrowError(application.ARG_ERROR, "生产记录不可再被编辑") | ||
| 95 | + } | ||
| 96 | + } | ||
| 85 | epRecord := &domain.ProductRecord{ | 97 | epRecord := &domain.ProductRecord{ |
| 86 | - UpdatedAt: nowTime, | ||
| 87 | - OrgId: operateInfo.OrgId, | ||
| 88 | - CompanyId: operateInfo.CompanyId, | ||
| 89 | - WorkStation: workstation, | ||
| 90 | - ProductWorker: worker, | ||
| 91 | - CreatedAt: recordDate, | 98 | + ProductRecordId: param.ProductRecordId, |
| 99 | + UpdatedAt: nowTime, | ||
| 100 | + OrgId: operateInfo.OrgId, | ||
| 101 | + CompanyId: operateInfo.CompanyId, | ||
| 102 | + WorkStation: workstation, | ||
| 103 | + ProductWorker: worker, | ||
| 104 | + CreatedAt: recordDate, | ||
| 92 | Ext: &domain.Ext{ | 105 | Ext: &domain.Ext{ |
| 93 | Operator: user, | 106 | Operator: user, |
| 94 | OrgName: org.OrgName, | 107 | OrgName: org.OrgName, |
| @@ -112,7 +125,6 @@ func (productRecordService *ProductRecordService) CreateProductCapacities(operat | @@ -112,7 +125,6 @@ func (productRecordService *ProductRecordService) CreateProductCapacities(operat | ||
| 112 | epRecord.ProductRecordInfo.ApproveStatus = domain.ProductRecordApproved | 125 | epRecord.ProductRecordInfo.ApproveStatus = domain.ProductRecordApproved |
| 113 | epRecord.ProductRecordInfo.ApproveUser = user | 126 | epRecord.ProductRecordInfo.ApproveUser = user |
| 114 | } | 127 | } |
| 115 | - // epRecord.ParticipateType = param.ParticipateType //参与类型 | ||
| 116 | _, err = productRecordRepo.Save(epRecord) | 128 | _, err = productRecordRepo.Save(epRecord) |
| 117 | if err != nil { | 129 | if err != nil { |
| 118 | return nil, application.ThrowError(application.ARG_ERROR, "保存员工生产记录失败"+err.Error()) | 130 | return nil, application.ThrowError(application.ARG_ERROR, "保存员工生产记录失败"+err.Error()) |
| @@ -161,7 +173,7 @@ func (productRecordService *ProductRecordService) ListProductCapacities(operateI | @@ -161,7 +173,7 @@ func (productRecordService *ProductRecordService) ListProductCapacities(operateI | ||
| 161 | condition["limit"] = limit | 173 | condition["limit"] = limit |
| 162 | } | 174 | } |
| 163 | if offset >= 0 { | 175 | if offset >= 0 { |
| 164 | - condition["offset"] = limit | 176 | + condition["offset"] = offset |
| 165 | } | 177 | } |
| 166 | count, productRecords, err := productRecordRepo.Find(condition) | 178 | count, productRecords, err := productRecordRepo.Find(condition) |
| 167 | if err != nil { | 179 | if err != nil { |
| @@ -159,13 +159,33 @@ func (m *RewardStandard) ShowTargeFault() string { | @@ -159,13 +159,33 @@ func (m *RewardStandard) ShowTargeFault() string { | ||
| 159 | } | 159 | } |
| 160 | 160 | ||
| 161 | // 判定功过, 指标类别 1:产效 | 161 | // 判定功过, 指标类别 1:产效 |
| 162 | -func (m *RewardStandard) VerdictTargetType1(val1 int, val float64) int { | ||
| 163 | - return 0 | 162 | +// param1 产效值 |
| 163 | +// 功过结果 0 无,1 功 ,-1 过; | ||
| 164 | +func (m *RewardStandard) VerdictTargetType1(param1 float64) int { | ||
| 165 | + val1, _ := strconv.ParseFloat(m.TargeVal1, 64) | ||
| 166 | + val2, _ := strconv.ParseFloat(m.TargeVal2, 64) | ||
| 167 | + result := 0 | ||
| 168 | + if param1 > val1 { | ||
| 169 | + result = 1 | ||
| 170 | + } else if param1 < val2 { | ||
| 171 | + result = -1 | ||
| 172 | + } | ||
| 173 | + return result | ||
| 164 | } | 174 | } |
| 165 | 175 | ||
| 166 | // 判定功过, 指标类别 2:合格率 | 176 | // 判定功过, 指标类别 2:合格率 |
| 167 | -func (m *RewardStandard) VerdictTargetType2(val1 int, val float64) int { | ||
| 168 | - return 0 | 177 | +// param1 合格率 |
| 178 | +// 功过结果 0 无,1 功 ,-1 过; | ||
| 179 | +func (m *RewardStandard) VerdictTargetType2(param1 float64) int { | ||
| 180 | + val1, _ := strconv.ParseFloat(m.TargeVal1, 64) | ||
| 181 | + val2, _ := strconv.ParseFloat(m.TargeVal2, 64) | ||
| 182 | + result := 0 | ||
| 183 | + if param1 > val1 { | ||
| 184 | + result = 1 | ||
| 185 | + } else if param1 < val2 { | ||
| 186 | + result = -1 | ||
| 187 | + } | ||
| 188 | + return result | ||
| 169 | } | 189 | } |
| 170 | 190 | ||
| 171 | // 判定功过, 指标类别 3:安全事故; | 191 | // 判定功过, 指标类别 3:安全事故; |
| @@ -24,9 +24,8 @@ type RewardSummary struct { | @@ -24,9 +24,8 @@ type RewardSummary struct { | ||
| 24 | AccidentAmount2 float64 `json:"accidentAmount2"` //安全事故 损失金额 | 24 | AccidentAmount2 float64 `json:"accidentAmount2"` //安全事故 损失金额 |
| 25 | AccidentResult2 int `json:"accidentResult2"` //安全事故 功过评定结果 1`功` -1 `过` 0 `不奖不惩` | 25 | AccidentResult2 int `json:"accidentResult2"` //安全事故 功过评定结果 1`功` -1 `过` 0 `不奖不惩` |
| 26 | AccidentNum3 int `json:"accidentNum3"` //异物金属事故 次数 | 26 | AccidentNum3 int `json:"accidentNum3"` //异物金属事故 次数 |
| 27 | - AccidentResult3 int `json:"accidentResult3"` //异物金属事故 功过评定结果 1`功` -1 `过` 0 `不奖不惩` | ||
| 28 | - AccidentNum4 int `json:"accidentNum4"` //异物非金属事故 次数 | ||
| 29 | - AccidentResult4 int `json:"accidentResult4"` //异物非金属事故 功过评定结果 1`功` -1 `过` 0 `不奖不惩` | 27 | + AccidentResult3 int `json:"accidentResult3"` //异物事故 功过评定结果 1`功` -1 `过` 0 `不奖不惩` |
| 28 | + AccidentNum4 int `json:"accidentNum4"` //异物非金属事故次数 | ||
| 30 | SummaryResult float64 `json:"summaryResult"` //奖惩金额计算结果(元) | 29 | SummaryResult float64 `json:"summaryResult"` //奖惩金额计算结果(元) |
| 31 | CreatedAt time.Time `json:"createdAt"` // | 30 | CreatedAt time.Time `json:"createdAt"` // |
| 32 | UpdatedAt time.Time `json:"UpdatedAt"` // | 31 | UpdatedAt time.Time `json:"UpdatedAt"` // |
| @@ -72,9 +71,7 @@ func (c *RewardSummary) SummaryAccident(trouble *ProductTrouble, rewardStandard | @@ -72,9 +71,7 @@ func (c *RewardSummary) SummaryAccident(trouble *ProductTrouble, rewardStandard | ||
| 72 | 71 | ||
| 73 | case TroubleType4: | 72 | case TroubleType4: |
| 74 | c.AccidentNum4 = +1 | 73 | c.AccidentNum4 = +1 |
| 75 | - if rewardStandard == nil { | ||
| 76 | - c.AccidentResult4 = 0 | ||
| 77 | - } else { | 74 | + if rewardStandard != nil { |
| 78 | r := rewardStandard.VerdictTargetType5(0, c.AccidentNum4) | 75 | r := rewardStandard.VerdictTargetType5(0, c.AccidentNum4) |
| 79 | c.AccidentResult2 = r | 76 | c.AccidentResult2 = r |
| 80 | } | 77 | } |
| @@ -99,11 +96,6 @@ func (c *RewardSummary) ApplySummaryResult(rule *RewardRule) { | @@ -99,11 +96,6 @@ func (c *RewardSummary) ApplySummaryResult(rule *RewardRule) { | ||
| 99 | } else if c.AccidentResult3 > 0 { | 96 | } else if c.AccidentResult3 > 0 { |
| 100 | rewardNum = +1 | 97 | rewardNum = +1 |
| 101 | } | 98 | } |
| 102 | - if c.AccidentResult4 < 0 { | ||
| 103 | - faultNum = +1 | ||
| 104 | - } else if c.AccidentResult4 > 0 { | ||
| 105 | - rewardNum = +1 | ||
| 106 | - } | ||
| 107 | if c.YieldResult < 0 { | 99 | if c.YieldResult < 0 { |
| 108 | faultNum = +1 | 100 | faultNum = +1 |
| 109 | } else if c.YieldResult > 0 { | 101 | } else if c.YieldResult > 0 { |
| @@ -118,3 +110,25 @@ func (c *RewardSummary) ApplySummaryResult(rule *RewardRule) { | @@ -118,3 +110,25 @@ func (c *RewardSummary) ApplySummaryResult(rule *RewardRule) { | ||
| 118 | c.SummaryResult = rule.SumRewardAmount(rewardNum, faultNum) | 110 | c.SummaryResult = rule.SumRewardAmount(rewardNum, faultNum) |
| 119 | 111 | ||
| 120 | } | 112 | } |
| 113 | + | ||
| 114 | +// SummaryYield 汇总产效数据 | ||
| 115 | +func (c *RewardSummary) SummaryYield(yield float64, rewardStandard *RewardStandard) { | ||
| 116 | + c.Yield = yield | ||
| 117 | + if rewardStandard == nil { | ||
| 118 | + c.YieldResult = 0 | ||
| 119 | + } else { | ||
| 120 | + r := rewardStandard.VerdictTargetType1(c.Yield) | ||
| 121 | + c.YieldResult = r | ||
| 122 | + } | ||
| 123 | +} | ||
| 124 | + | ||
| 125 | +// SummaryUpToStandard 汇总合格率数据 | ||
| 126 | +func (c *RewardSummary) SummaryUpToStandard(param float64, rewardStandard *RewardStandard) { | ||
| 127 | + c.UpToStandard = param | ||
| 128 | + if rewardStandard == nil { | ||
| 129 | + c.UpToStandard = 0 | ||
| 130 | + } else { | ||
| 131 | + r := rewardStandard.VerdictTargetType2(c.Yield) | ||
| 132 | + c.UpToStandardResult = r | ||
| 133 | + } | ||
| 134 | +} |
| @@ -53,6 +53,49 @@ func (d *RewardSumaryDao) SeachRewardSummaryDay(companyId int, orgId int, record | @@ -53,6 +53,49 @@ func (d *RewardSumaryDao) SeachRewardSummaryDay(companyId int, orgId int, record | ||
| 53 | tx := d.transactionContext.PgTx | 53 | tx := d.transactionContext.PgTx |
| 54 | var result []RewardSummaryDay | 54 | var result []RewardSummaryDay |
| 55 | _, err := tx.Query(&result, sqlStr, companyId, orgId, recordDate) | 55 | _, err := tx.Query(&result, sqlStr, companyId, orgId, recordDate) |
| 56 | + | ||
| 57 | + for i := range result { | ||
| 58 | + switch result[i].AccidentResult1 { | ||
| 59 | + case "1": | ||
| 60 | + result[i].AccidentResult1 = "功" | ||
| 61 | + case "0": | ||
| 62 | + result[i].AccidentResult1 = "不奖不惩" | ||
| 63 | + case "-1": | ||
| 64 | + result[i].AccidentResult1 = "过" | ||
| 65 | + } | ||
| 66 | + switch result[i].AccidentResult2 { | ||
| 67 | + case "1": | ||
| 68 | + result[i].AccidentResult2 = "功" | ||
| 69 | + case "0": | ||
| 70 | + result[i].AccidentResult2 = "不奖不惩" | ||
| 71 | + case "-1": | ||
| 72 | + result[i].AccidentResult2 = "过" | ||
| 73 | + } | ||
| 74 | + switch result[i].AccidentResult3 { | ||
| 75 | + case "1": | ||
| 76 | + result[i].AccidentResult3 = "功" | ||
| 77 | + case "0": | ||
| 78 | + result[i].AccidentResult3 = "不奖不惩" | ||
| 79 | + case "-1": | ||
| 80 | + result[i].AccidentResult3 = "过" | ||
| 81 | + } | ||
| 82 | + switch result[i].UpToStandardResult { | ||
| 83 | + case "1": | ||
| 84 | + result[i].UpToStandardResult = "功" | ||
| 85 | + case "0": | ||
| 86 | + result[i].UpToStandardResult = "不奖不惩" | ||
| 87 | + case "-1": | ||
| 88 | + result[i].UpToStandardResult = "过" | ||
| 89 | + } | ||
| 90 | + switch result[i].YieldResult { | ||
| 91 | + case "1": | ||
| 92 | + result[i].YieldResult = "功" | ||
| 93 | + case "0": | ||
| 94 | + result[i].YieldResult = "不奖不惩" | ||
| 95 | + case "-1": | ||
| 96 | + result[i].YieldResult = "过" | ||
| 97 | + } | ||
| 98 | + } | ||
| 56 | return result, err | 99 | return result, err |
| 57 | } | 100 | } |
| 58 | 101 | ||
| @@ -68,20 +111,61 @@ type RewardSummaryYield struct { | @@ -68,20 +111,61 @@ type RewardSummaryYield struct { | ||
| 68 | 111 | ||
| 69 | // 功过看板-产效 | 112 | // 功过看板-产效 |
| 70 | func (d *RewardSumaryDao) SeachRewardSummaryYield(companyId int, orgId int, recordDate string) ([]RewardSummaryYield, error) { | 113 | func (d *RewardSumaryDao) SeachRewardSummaryYield(companyId int, orgId int, recordDate string) ([]RewardSummaryYield, error) { |
| 71 | - sqlStr := `SELECT | ||
| 72 | - record_date_str, | ||
| 73 | - work_station->>'sectionName' as section_name, | ||
| 74 | - worker->>'userName' as worker_name, | ||
| 75 | - yield_result, | ||
| 76 | - yield, | ||
| 77 | - '24' as yield_max | 114 | + // sqlStr := `SELECT |
| 115 | + // record_date_str, | ||
| 116 | + // work_station->>'sectionName' as section_name, | ||
| 117 | + // worker->>'userName' as worker_name, | ||
| 118 | + // yield_result, | ||
| 119 | + // yield, | ||
| 120 | + // '24' as yield_max | ||
| 121 | + // FROM manufacture."reward_summary" | ||
| 122 | + // WHERE company_id=? | ||
| 123 | + // and org_id=? | ||
| 124 | + // and record_date_str=?` | ||
| 125 | + | ||
| 126 | + sqlStr := `with | ||
| 127 | + t1 as( SELECT | ||
| 128 | + max(yield) as yield_max, | ||
| 129 | + work_station->>'sectionId' AS section_id, | ||
| 130 | + worker->>'userId' as worker_id | ||
| 78 | FROM manufacture."reward_summary" | 131 | FROM manufacture."reward_summary" |
| 79 | - WHERE company_id=? | ||
| 80 | - and org_id=? | ||
| 81 | - and record_date_str=?` | 132 | + WHERE company_id=? and org_id=? |
| 133 | + GROUP BY section_id,worker_id | ||
| 134 | + ), | ||
| 135 | + t2 as (SELECT | ||
| 136 | + record_date_str, | ||
| 137 | + work_station->>'sectionId' AS section_id, | ||
| 138 | + worker->>'userId' as worker_id, | ||
| 139 | + work_station->>'sectionName' as section_name, | ||
| 140 | + worker->>'userName' as worker_name, | ||
| 141 | + yield_result, | ||
| 142 | + yield | ||
| 143 | + FROM manufacture."reward_summary" | ||
| 144 | + WHERE company_id=? and org_id=? | ||
| 145 | + and record_date_str=? | ||
| 146 | + ) | ||
| 147 | + SELECT t2.record_date_str,t2.section_name,t2.worker_name, | ||
| 148 | + t2.yield_result,t2.yield,t1.yield_max | ||
| 149 | + FROM t2 | ||
| 150 | + JOIN t1 on t2.section_id=t1.section_id AND t2.worker_id=t2.worker_id` | ||
| 151 | + | ||
| 82 | tx := d.transactionContext.PgTx | 152 | tx := d.transactionContext.PgTx |
| 83 | var result []RewardSummaryYield | 153 | var result []RewardSummaryYield |
| 84 | - _, err := tx.Query(&result, sqlStr, companyId, orgId, recordDate) | 154 | + params := []interface{}{ |
| 155 | + companyId, orgId, | ||
| 156 | + companyId, orgId, recordDate, | ||
| 157 | + } | ||
| 158 | + _, err := tx.Query(&result, sqlStr, params...) | ||
| 159 | + for i := range result { | ||
| 160 | + switch result[i].YieldResult { | ||
| 161 | + case "1": | ||
| 162 | + result[i].YieldResult = "功" | ||
| 163 | + case "0": | ||
| 164 | + result[i].YieldResult = "不奖不惩" | ||
| 165 | + case "-1": | ||
| 166 | + result[i].YieldResult = "过" | ||
| 167 | + } | ||
| 168 | + } | ||
| 85 | return result, err | 169 | return result, err |
| 86 | 170 | ||
| 87 | } | 171 | } |
| @@ -98,35 +182,77 @@ type RewardSummaryUpToStandard struct { | @@ -98,35 +182,77 @@ type RewardSummaryUpToStandard struct { | ||
| 98 | 182 | ||
| 99 | // 功过看板-合格率 | 183 | // 功过看板-合格率 |
| 100 | func (d *RewardSumaryDao) SeachRewardUpToStandard(companyId int, orgId int, recordDate string) ([]RewardSummaryUpToStandard, error) { | 184 | func (d *RewardSumaryDao) SeachRewardUpToStandard(companyId int, orgId int, recordDate string) ([]RewardSummaryUpToStandard, error) { |
| 101 | - sqlStr := `SELECT | ||
| 102 | - record_date_str, | ||
| 103 | - work_station->>'sectionName' as section_name, | ||
| 104 | - worker->>'userName' as worker_name, | ||
| 105 | - up_to_standard_result, | ||
| 106 | - up_to_standard, | ||
| 107 | - '90' as up_to_standard_max | 185 | + // sqlStr := `SELECT |
| 186 | + // record_date_str, | ||
| 187 | + // work_station->>'sectionName' as section_name, | ||
| 188 | + // worker->>'userName' as worker_name, | ||
| 189 | + // up_to_standard_result, | ||
| 190 | + // up_to_standard, | ||
| 191 | + // '90' as up_to_standard_max | ||
| 192 | + // FROM manufacture."reward_summary" | ||
| 193 | + // WHERE company_id=23 | ||
| 194 | + // and org_id=487 | ||
| 195 | + // and record_date_str='2022-10-29'` | ||
| 196 | + sqlStr := `with | ||
| 197 | + t1 as( SELECT | ||
| 198 | + max(up_to_standard) as up_to_standard_max, | ||
| 199 | + work_station->>'sectionId' AS section_id, | ||
| 200 | + worker->>'userId' as worker_id | ||
| 108 | FROM manufacture."reward_summary" | 201 | FROM manufacture."reward_summary" |
| 109 | - WHERE company_id=23 | ||
| 110 | - and org_id=487 | ||
| 111 | - and record_date_str='2022-10-29'` | 202 | + WHERE company_id=? and org_id=? |
| 203 | + GROUP BY section_id,worker_id | ||
| 204 | + ), | ||
| 205 | + t2 as (SELECT | ||
| 206 | + record_date_str, | ||
| 207 | + work_station->>'sectionId' AS section_id, | ||
| 208 | + worker->>'userId' as worker_id, | ||
| 209 | + work_station->>'sectionName' as section_name, | ||
| 210 | + worker->>'userName' as worker_name, | ||
| 211 | + up_to_standard_result, | ||
| 212 | + up_to_standard | ||
| 213 | + FROM manufacture."reward_summary" | ||
| 214 | + WHERE company_id=? and org_id=? | ||
| 215 | + and record_date_str=? | ||
| 216 | + ) | ||
| 217 | + SELECT t2.record_date_str,t2.section_name,t2.worker_name, | ||
| 218 | + t2.up_to_standard_result,t2.up_to_standard,t1.up_to_standard_max | ||
| 219 | + FROM t2 | ||
| 220 | + JOIN t1 on t2.section_id=t1.section_id AND t2.worker_id=t2.worker_id` | ||
| 112 | tx := d.transactionContext.PgTx | 221 | tx := d.transactionContext.PgTx |
| 113 | var result []RewardSummaryUpToStandard | 222 | var result []RewardSummaryUpToStandard |
| 114 | - _, err := tx.Query(&result, sqlStr, companyId, orgId, recordDate) | 223 | + params := []interface{}{ |
| 224 | + companyId, orgId, | ||
| 225 | + companyId, orgId, recordDate, | ||
| 226 | + } | ||
| 227 | + _, err := tx.Query(&result, sqlStr, params...) | ||
| 228 | + for i := range result { | ||
| 229 | + switch result[i].UpToStandardResult { | ||
| 230 | + case "1": | ||
| 231 | + result[i].UpToStandardResult = "功" | ||
| 232 | + case "0": | ||
| 233 | + result[i].UpToStandardResult = "不奖不惩" | ||
| 234 | + case "-1": | ||
| 235 | + result[i].UpToStandardResult = "过" | ||
| 236 | + } | ||
| 237 | + } | ||
| 115 | return result, err | 238 | return result, err |
| 116 | } | 239 | } |
| 117 | 240 | ||
| 118 | // 功过看板-异常 | 241 | // 功过看板-异常 |
| 119 | type RewardAccident struct { | 242 | type RewardAccident struct { |
| 120 | - Id string `json:"id"` | ||
| 121 | - RecordDateStr string `json:"record_date_str"` | ||
| 122 | - SectionName string `json:"sectionName"` //工段名称 | ||
| 123 | - WorkerName string `json:"workerName"` //员工名称 | ||
| 124 | - SummaryResult string `json:"summaryResult"` //奖惩结果 | ||
| 125 | - YieldResult string `json:"yieldResult"` //产效功过结果 | ||
| 126 | - UpToStandardResult string `json:"upToStandardResult"` //合格率功过结果 | ||
| 127 | - AccidentResult1 string `json:"accidentResult1"` //质量事故功过结果 | ||
| 128 | - AccidentResult2 string `json:"accidentResul2"` //安全事故功过结果 | ||
| 129 | - AccidentResult3 string `json:"accidentResul3"` //异物 功过结果 | 243 | + Id string `json:"id"` |
| 244 | + RecordDateStr string `json:"record_date_str"` | ||
| 245 | + SectionName string `json:"sectionName"` //工段名称 | ||
| 246 | + WorkerName string `json:"workerName"` //员工名称 | ||
| 247 | + AccidentAmount1 string `json:"accidentAmount1"` //质量事故损失金额 | ||
| 248 | + AccidentNum1 string `json:"accidentNum1"` //质量事故次数 | ||
| 249 | + AccidentResult1 string `json:"accidentResult1"` //质量事故功过结果 | ||
| 250 | + AccidentAmount2 string `json:"accidentAmount2"` //安全事故 损失金额 | ||
| 251 | + AccidentResult2 string `json:"accidentResul2"` //安全事故功过结果 | ||
| 252 | + AccidentNum2 string `json:"accidentNum2"` //安全事故 次数 | ||
| 253 | + AccidentNum3 string `json:"accidentNum3"` //金属异物 次数 | ||
| 254 | + AccidentNum4 string `json:"accidentNum4"` //非属异物事故次数 | ||
| 255 | + AccidentResult3 string `json:"accidentResul3"` //异物 功过结果 | ||
| 130 | } | 256 | } |
| 131 | 257 | ||
| 132 | // 功过看板-异常 | 258 | // 功过看板-异常 |
| @@ -135,9 +261,9 @@ func (d *RewardSumaryDao) SeachRewardAccident(companyId int, orgId int, recordDa | @@ -135,9 +261,9 @@ func (d *RewardSumaryDao) SeachRewardAccident(companyId int, orgId int, recordDa | ||
| 135 | "id",record_date_str, | 261 | "id",record_date_str, |
| 136 | work_station->>'sectionName' as section_name, | 262 | work_station->>'sectionName' as section_name, |
| 137 | worker->>'userName' as worker_name, | 263 | worker->>'userName' as worker_name, |
| 138 | - up_to_standard_result, | ||
| 139 | - up_to_standard, | ||
| 140 | - '90' as up_to_standard_max | 264 | + accident_num1,accident_amount1,accident_result1, |
| 265 | + accident_num2,accident_amount2,accident_result2, | ||
| 266 | + accident_num3,accident_num4,accident_result3 | ||
| 141 | FROM manufacture."reward_summary" | 267 | FROM manufacture."reward_summary" |
| 142 | WHERE company_id=? | 268 | WHERE company_id=? |
| 143 | and org_id=? | 269 | and org_id=? |
| @@ -145,10 +271,37 @@ func (d *RewardSumaryDao) SeachRewardAccident(companyId int, orgId int, recordDa | @@ -145,10 +271,37 @@ func (d *RewardSumaryDao) SeachRewardAccident(companyId int, orgId int, recordDa | ||
| 145 | tx := d.transactionContext.PgTx | 271 | tx := d.transactionContext.PgTx |
| 146 | var result []RewardAccident | 272 | var result []RewardAccident |
| 147 | _, err := tx.Query(&result, sqlStr, companyId, orgId, recordDate) | 273 | _, err := tx.Query(&result, sqlStr, companyId, orgId, recordDate) |
| 274 | + | ||
| 275 | + for i := range result { | ||
| 276 | + switch result[i].AccidentResult1 { | ||
| 277 | + case "1": | ||
| 278 | + result[i].AccidentResult1 = "功" | ||
| 279 | + case "0": | ||
| 280 | + result[i].AccidentResult1 = "不奖不惩" | ||
| 281 | + case "-1": | ||
| 282 | + result[i].AccidentResult1 = "过" | ||
| 283 | + } | ||
| 284 | + switch result[i].AccidentResult2 { | ||
| 285 | + case "1": | ||
| 286 | + result[i].AccidentResult2 = "功" | ||
| 287 | + case "0": | ||
| 288 | + result[i].AccidentResult2 = "不奖不惩" | ||
| 289 | + case "-1": | ||
| 290 | + result[i].AccidentResult2 = "过" | ||
| 291 | + } | ||
| 292 | + switch result[i].AccidentResult3 { | ||
| 293 | + case "1": | ||
| 294 | + result[i].AccidentResult3 = "功" | ||
| 295 | + case "0": | ||
| 296 | + result[i].AccidentResult3 = "不奖不惩" | ||
| 297 | + case "-1": | ||
| 298 | + result[i].AccidentResult3 = "过" | ||
| 299 | + } | ||
| 300 | + } | ||
| 148 | return result, err | 301 | return result, err |
| 149 | } | 302 | } |
| 150 | 303 | ||
| 151 | -// 功过看板-异常 | 304 | +// 功过看板-月榜 |
| 152 | type RewardSummaryMonth struct { | 305 | type RewardSummaryMonth struct { |
| 153 | SectionId string `json:"sectionId"` //工段名称 | 306 | SectionId string `json:"sectionId"` //工段名称 |
| 154 | SectionName string `json:"sectionName"` //工段名称 | 307 | SectionName string `json:"sectionName"` //工段名称 |
| @@ -170,32 +323,35 @@ type RewardSummaryMonth struct { | @@ -170,32 +323,35 @@ type RewardSummaryMonth struct { | ||
| 170 | 323 | ||
| 171 | // 功过看板-月榜 | 324 | // 功过看板-月榜 |
| 172 | func (d *RewardSumaryDao) SeachRewardSummaryMonth(companyId int, orgId int, recordMonth string) ([]RewardSummaryMonth, error) { | 325 | func (d *RewardSumaryDao) SeachRewardSummaryMonth(companyId int, orgId int, recordMonth string) ([]RewardSummaryMonth, error) { |
| 173 | - sqlStr := `SELECT | ||
| 174 | -work_station->>'sectionId' AS section_id, | ||
| 175 | -work_station->>'sectionName' as section_name, | ||
| 176 | -worker->>'userId' as worker_id, | ||
| 177 | -worker->>'userName' as worker_name, | ||
| 178 | -count(accident_num1) as accident_num1, | ||
| 179 | -count(accident_num2) as accident_num2, | ||
| 180 | -count(accident_num3) as accident_num3, | ||
| 181 | -count(accident_num4) as accident_num4, | ||
| 182 | -count(accident_amount1) as accident_amount1, | ||
| 183 | -count(accident_amount2) as accident_amount2, | ||
| 184 | -'12' as yield_avg, | ||
| 185 | -'13' as yield_max, | ||
| 186 | -'-39' as amount_fine, | ||
| 187 | -'25' as amount_reward, | ||
| 188 | -'-14' as amount_final, | ||
| 189 | -'12' as up_to_standard, | ||
| 190 | - FROM manufacture.reward_summary | ||
| 191 | - WHERE company_id=? | ||
| 192 | - and org_id=? | ||
| 193 | - and record_month_str=? | ||
| 194 | -GROUP BY | ||
| 195 | -worker->>'userId' , | ||
| 196 | -worker->>'userName' , | ||
| 197 | -work_station->>'sectionId', | ||
| 198 | -work_station->>'sectionName' ` | 326 | + sqlStr := ` |
| 327 | + SELECT | ||
| 328 | + work_station->>'sectionId' AS section_id, | ||
| 329 | + work_station->>'sectionName' as section_name, | ||
| 330 | + worker->>'userId' as worker_id, | ||
| 331 | + worker->>'userName' as worker_name, | ||
| 332 | + sum(accident_num1) as accident_num1, | ||
| 333 | + sum(accident_num2) as accident_num2, | ||
| 334 | + sum(accident_num3) as accident_num3, | ||
| 335 | + sum(accident_num4) as accident_num4, | ||
| 336 | + sum(accident_amount1) as accident_amount1, | ||
| 337 | + sum(accident_amount2) as accident_amount2, | ||
| 338 | + CAST(sum(summary_result) as decimal(10,2)) as amount_final, | ||
| 339 | + CAST( | ||
| 340 | + sum(CASE WHEN summary_result<0 THEN summary_result ELSE 0 END) as decimal(10,2) | ||
| 341 | + ) as amount_fine, | ||
| 342 | + CAST( | ||
| 343 | + sum(CASE WHEN summary_result>0 THEN summary_result ELSE 0 END) as decimal(10,2) | ||
| 344 | + ) as amount_reward, | ||
| 345 | + max(yield) as yield_max, | ||
| 346 | + CAST(avg(yield) as decimal(10,2)) as yield_avg, | ||
| 347 | + CAST(avg(up_to_standard) as decimal(10,2) ) as up_to_standard | ||
| 348 | + FROM manufacture.reward_summary | ||
| 349 | + WHERE company_id=? | ||
| 350 | + and org_id=? | ||
| 351 | + and record_month_str=? | ||
| 352 | + GROUP BY section_id,worker_id,worker_name,section_name | ||
| 353 | + ; | ||
| 354 | + ` | ||
| 199 | tx := d.transactionContext.PgTx | 355 | tx := d.transactionContext.PgTx |
| 200 | var result []RewardSummaryMonth | 356 | var result []RewardSummaryMonth |
| 201 | _, err := tx.Query(&result, sqlStr, companyId, orgId, recordMonth) | 357 | _, err := tx.Query(&result, sqlStr, companyId, orgId, recordMonth) |
| @@ -112,10 +112,121 @@ func (c *PGRewardSummaryStaticService) CreateRewardSummaryByProductTrouble(param | @@ -112,10 +112,121 @@ func (c *PGRewardSummaryStaticService) CreateRewardSummaryByProductTrouble(param | ||
| 112 | if err != nil { | 112 | if err != nil { |
| 113 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取奖惩规则"+err.Error()) | 113 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取奖惩规则"+err.Error()) |
| 114 | } | 114 | } |
| 115 | - if len(rewardRuleList) == 0 { | ||
| 116 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, "未设置奖惩规则") | 115 | + if len(rewardRuleList) >= 0 { |
| 116 | + summaryData.ApplySummaryResult(rewardRuleList[0]) | ||
| 117 | + } | ||
| 118 | + summaryData.UpdatedAt = nowTime | ||
| 119 | + _, err = rewardSummaryRepo.Save(summaryData) | ||
| 120 | + if err != nil { | ||
| 121 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 122 | + } | ||
| 123 | + return nil | ||
| 124 | +} | ||
| 125 | + | ||
| 126 | +// CreateRewardSummaryByEmployeeProductRecord 通过员工生产记录 汇总奖惩结果 | ||
| 127 | +func (c *PGRewardSummaryStaticService) CreateRewardSummaryByEmployeeProductRecord(param *domain.EmployeeProductRecord) error { | ||
| 128 | + rewardSummaryRepo, _ := repository.NewRewardSummaryRepository(c.transactionContext) | ||
| 129 | + //查询是否已经有汇总数据 | ||
| 130 | + condtion := map[string]interface{}{ | ||
| 131 | + "orgId": param.OrgId, | ||
| 132 | + "companyId": param.CompanyId, | ||
| 133 | + "lineId": param.WorkStation.LineId, | ||
| 134 | + "sectionId": param.WorkStation.SectionId, | ||
| 135 | + "workshopId": param.WorkStation.WorkshopId, | ||
| 136 | + "workerId": param.ProductWorker.UserId, | ||
| 137 | + "recordDateStr": param.CreatedAt.Format("200-01-02"), | ||
| 138 | + } | ||
| 139 | + | ||
| 140 | + _, summaryList, err := rewardSummaryRepo.Find(condtion) | ||
| 141 | + if err != nil { | ||
| 142 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + var summaryData *domain.RewardSummary | ||
| 146 | + nowTime := time.Now() | ||
| 147 | + if len(summaryList) > 0 { | ||
| 148 | + summaryData = summaryList[0] | ||
| 149 | + } else { | ||
| 150 | + summaryData = &domain.RewardSummary{ | ||
| 151 | + Id: 0, | ||
| 152 | + CompanyId: param.CompanyId, | ||
| 153 | + OrgId: param.OrgId, | ||
| 154 | + // WorkStation: *param.WorkStation, | ||
| 155 | + // Worker: *param.ProductWorker, | ||
| 156 | + RecordDate: param.CreatedAt, | ||
| 157 | + RecordDateStr: param.CreatedAt.Format("2006-01-02"), | ||
| 158 | + UpToStandard: 0.0, | ||
| 159 | + Yield: 0.0, | ||
| 160 | + AccidentNum1: 0, | ||
| 161 | + AccidentAmount1: 0.0, | ||
| 162 | + AccidentNum2: 0, | ||
| 163 | + AccidentAmount2: 0.0, | ||
| 164 | + AccidentNum3: 0, | ||
| 165 | + AccidentNum4: 0, | ||
| 166 | + SummaryResult: 0.0, | ||
| 167 | + CreatedAt: nowTime, | ||
| 168 | + UpdatedAt: nowTime, | ||
| 169 | + } | ||
| 170 | + if param.WorkStation != nil { | ||
| 171 | + summaryData.WorkStation = *param.WorkStation | ||
| 172 | + } | ||
| 173 | + if param.ProductWorker != nil { | ||
| 174 | + summaryData.Worker = *param.ProductWorker | ||
| 175 | + } | ||
| 176 | + } | ||
| 177 | + //获取奖惩标准 按 车间 线别 工段 类型 ;合格率类型 | ||
| 178 | + rewardStandardRepo, _ := repository.NewRewardStandardRepository(c.transactionContext) | ||
| 179 | + _, rewardStandardList, err := rewardStandardRepo.Find(map[string]interface{}{ | ||
| 180 | + "companyId": param.CompanyId, | ||
| 181 | + "orgId": param.OrgId, | ||
| 182 | + "workshopId": param.WorkStation.WorkshopId, | ||
| 183 | + "lineId": param.WorkStation.LineId, | ||
| 184 | + "sectionId": param.WorkStation.SectionId, | ||
| 185 | + "targetType": domain.TargetType2, | ||
| 186 | + "limit": 1, | ||
| 187 | + }) | ||
| 188 | + if err != nil { | ||
| 189 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 190 | + } | ||
| 191 | + if len(rewardStandardList) > 0 { | ||
| 192 | + //汇总合格率 | ||
| 193 | + summaryData.SummaryUpToStandard(param.ProductRecordInfo.QualificationRate, rewardStandardList[0]) | ||
| 194 | + } else { | ||
| 195 | + summaryData.SummaryUpToStandard(param.ProductRecordInfo.QualificationRate, nil) | ||
| 196 | + } | ||
| 197 | + | ||
| 198 | + //获取奖惩标准 按 车间 线别 工段 类型 ;产能类型 | ||
| 199 | + _, rewardStandardList, err = rewardStandardRepo.Find(map[string]interface{}{ | ||
| 200 | + "companyId": param.CompanyId, | ||
| 201 | + "orgId": param.OrgId, | ||
| 202 | + "workshopId": param.WorkStation.WorkshopId, | ||
| 203 | + "lineId": param.WorkStation.LineId, | ||
| 204 | + "sectionId": param.WorkStation.SectionId, | ||
| 205 | + "targetType": domain.TargetType1, | ||
| 206 | + "limit": 1, | ||
| 207 | + }) | ||
| 208 | + if err != nil { | ||
| 209 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 210 | + } | ||
| 211 | + if len(rewardStandardList) > 0 { | ||
| 212 | + //汇总合格率 | ||
| 213 | + summaryData.SummaryYield(param.ProductRecordInfo.OutputWeight, rewardStandardList[0]) | ||
| 214 | + } else { | ||
| 215 | + summaryData.SummaryYield(param.ProductRecordInfo.OutputWeight, nil) | ||
| 216 | + } | ||
| 217 | + //根据规则算 奖惩金额 | ||
| 218 | + //获取奖惩规则 | ||
| 219 | + rewardRuleRepo, _ := repository.NewRewardRuleRepository(c.transactionContext) | ||
| 220 | + _, rewardRuleList, err := rewardRuleRepo.Find(map[string]interface{}{ | ||
| 221 | + "companyId": param.CompanyId, | ||
| 222 | + "orgId": param.OrgId, | ||
| 223 | + }) | ||
| 224 | + if err != nil { | ||
| 225 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取奖惩规则"+err.Error()) | ||
| 226 | + } | ||
| 227 | + if len(rewardRuleList) >= 0 { | ||
| 228 | + summaryData.ApplySummaryResult(rewardRuleList[0]) | ||
| 117 | } | 229 | } |
| 118 | - summaryData.ApplySummaryResult(rewardRuleList[0]) | ||
| 119 | summaryData.UpdatedAt = nowTime | 230 | summaryData.UpdatedAt = nowTime |
| 120 | _, err = rewardSummaryRepo.Save(summaryData) | 231 | _, err = rewardSummaryRepo.Save(summaryData) |
| 121 | if err != nil { | 232 | if err != nil { |
| @@ -17,21 +17,20 @@ type RewardSummary struct { | @@ -17,21 +17,20 @@ type RewardSummary struct { | ||
| 17 | RecordMonthStr string //月份 :200601 | 17 | RecordMonthStr string //月份 :200601 |
| 18 | WorkStation domain.WorkStation // 工作位置 | 18 | WorkStation domain.WorkStation // 工作位置 |
| 19 | Worker domain.User //员工 | 19 | Worker domain.User //员工 |
| 20 | - UpToStandard float64 //合格率 | ||
| 21 | - UpToStandardResult int //合格率 功过评定结果 1`功` -1 `过` 0 `不奖不惩` | ||
| 22 | - Yield float64 //产能 | ||
| 23 | - YieldResult int //产能 功过评定结果 1`功` -1 `过` 0 `不奖不惩` | ||
| 24 | - AccidentNum1 int //质量事故 次数 | ||
| 25 | - AccidentAmount1 float64 //质量事故 损失金额 | ||
| 26 | - AccidentResult1 int //质量事故 功过评定结果 1`功` -1 `过` 0 `不奖不惩` | ||
| 27 | - AccidentNum2 int //安全事故 次数 | ||
| 28 | - AccidentAmount2 float64 //安全事故 损失金额 | ||
| 29 | - AccidentResult2 int //安全事故 功过评定结果 1`功` -1 `过` 0 `不奖不惩` | ||
| 30 | - AccidentNum3 int //异物金属事故 次数 | ||
| 31 | - AccidentResult3 int //异物金属事故 功过评定结果 1`功` -1 `过` 0 `不奖不惩` | ||
| 32 | - AccidentNum4 int //异物非金属事故 次数 | ||
| 33 | - AccidentResult4 int //异物非金属事故 功过评定结果 1`功` -1 `过` 0 `不奖不惩` | ||
| 34 | - SummaryResult float64 //奖惩金额计算结果(元) | 20 | + UpToStandard float64 `comment:"合格率"` //合格率 |
| 21 | + UpToStandardResult int `comment:"合格率功过评定结果 1:功 -1:过 0:不奖不惩"` //合格率功过评定结果1:功 -1:过 0:不奖不惩 | ||
| 22 | + Yield float64 `comment:"产能"` //产能 | ||
| 23 | + YieldResult int `comment:"产能功过评定结果,1:功 -1:过 0:不奖不惩"` //产能功过评定结果,1:功 -1:过 0:不奖不惩 | ||
| 24 | + AccidentNum1 int `comment:"质量事故 次数"` //质量事故 次数 | ||
| 25 | + AccidentAmount1 float64 `comment:"质量事故 损失金额"` //质量事故 损失金额 | ||
| 26 | + AccidentResult1 int `comment:"质量事故 功过评定结果1:功 -1:过 0:不奖不惩"` //质量事故 功过评定结果1:功 -1:过 0:不奖不惩 | ||
| 27 | + AccidentNum2 int `comment:"安全事故 次数"` //安全事故 次数 | ||
| 28 | + AccidentAmount2 float64 `comment:"安全事故 损失金额"` //安全事故 损失金额 | ||
| 29 | + AccidentResult2 int `comment:"安全事故 功过评定结果 1:功 -1:过 0:不奖不惩"` //安全事故 功过评定结果 1:功 -1:过 0:不奖不惩 | ||
| 30 | + AccidentNum3 int `comment:"异物金属事故 次数"` //异物金属事故 次数 | ||
| 31 | + AccidentResult3 int `comment:"异物事故 功过评定结果 1:功 -1:过 0:不奖不惩"` //异物事故 功过评定结果 1:功 -1:过 0:不奖不惩 | ||
| 32 | + AccidentNum4 int `comment:"异物非金属事故 次数"` //异物非金属事故 次数 | ||
| 33 | + SummaryResult float64 `comment:"奖惩金额计算结果(元)"` //奖惩金额计算结果(元) | ||
| 35 | CreatedAt time.Time // | 34 | CreatedAt time.Time // |
| 36 | UpdatedAt time.Time // | 35 | UpdatedAt time.Time // |
| 37 | 36 |
| @@ -132,10 +132,22 @@ func (controller *ProductRecordController) SearchWorkshopProductRecord() { | @@ -132,10 +132,22 @@ func (controller *ProductRecordController) SearchWorkshopProductRecord() { | ||
| 132 | // 产能管理 添加产能 | 132 | // 产能管理 添加产能 |
| 133 | func (controller *ProductRecordController) CreateProductCapacities() { | 133 | func (controller *ProductRecordController) CreateProductCapacities() { |
| 134 | productRecordService := service.NewProductRecordService(nil) | 134 | productRecordService := service.NewProductRecordService(nil) |
| 135 | - saveCommand := &command.SaveEmployeeProductRecordCmd{} | 135 | + saveCommand := &command.SaveProductRecordCmd{} |
| 136 | controller.Unmarshal(saveCommand) | 136 | controller.Unmarshal(saveCommand) |
| 137 | operateInfo := ParseOperateInfo(controller.BaseController) | 137 | operateInfo := ParseOperateInfo(controller.BaseController) |
| 138 | - data, err := productRecordService.CreateProductCapacities(operateInfo, saveCommand) | 138 | + data, err := productRecordService.SaveProductCapacities(operateInfo, saveCommand) |
| 139 | + controller.Response(data, err) | ||
| 140 | +} | ||
| 141 | + | ||
| 142 | +// 产能管理 编辑产能 | ||
| 143 | +func (controller *ProductRecordController) UpdateProductCapacities() { | ||
| 144 | + productRecordService := service.NewProductRecordService(nil) | ||
| 145 | + saveCommand := &command.SaveProductRecordCmd{} | ||
| 146 | + controller.Unmarshal(saveCommand) | ||
| 147 | + productRecordId, _ := controller.GetInt(":productRecordId") | ||
| 148 | + saveCommand.ProductRecordId = productRecordId | ||
| 149 | + operateInfo := ParseOperateInfo(controller.BaseController) | ||
| 150 | + data, err := productRecordService.SaveProductCapacities(operateInfo, saveCommand) | ||
| 139 | controller.Response(data, err) | 151 | controller.Response(data, err) |
| 140 | } | 152 | } |
| 141 | 153 |
| @@ -23,6 +23,8 @@ func init() { | @@ -23,6 +23,8 @@ func init() { | ||
| 23 | web.Router("/product-records/product-capacities/search", &controllers.ProductRecordController{}, "Post:ListProductCapacities") | 23 | web.Router("/product-records/product-capacities/search", &controllers.ProductRecordController{}, "Post:ListProductCapacities") |
| 24 | //产能管理 添加产能 | 24 | //产能管理 添加产能 |
| 25 | web.Router("/product-records/product-capacities", &controllers.ProductRecordController{}, "Post:CreateProductCapacities") | 25 | web.Router("/product-records/product-capacities", &controllers.ProductRecordController{}, "Post:CreateProductCapacities") |
| 26 | + //产能管理 编辑产能 | ||
| 27 | + web.Router("/product-records/product-capacities/:productRecordId", &controllers.ProductRecordController{}, "Put:UpdateProductCapacities") | ||
| 26 | //产能管理 列表-产能详情 | 28 | //产能管理 列表-产能详情 |
| 27 | web.Router("/product-records/product-capacities/:productRecordId", &controllers.ProductRecordController{}, "Get:GetProductCapacities") | 29 | web.Router("/product-records/product-capacities/:productRecordId", &controllers.ProductRecordController{}, "Get:GetProductCapacities") |
| 28 | //产能管理 列表 -删除产能 | 30 | //产能管理 列表 -删除产能 |
-
请 注册 或 登录 后发表评论