You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
278 lines
10 KiB
278 lines
10 KiB
package departmentpc
|
|
|
|
import (
|
|
"fmt"
|
|
"key_performance_indicators/models/modelshr"
|
|
"key_performance_indicators/models/modelskpi"
|
|
"key_performance_indicators/overall"
|
|
"key_performance_indicators/overall/publicmethod"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// 定性指标细则与部门矩阵
|
|
func (a *ApiMethod) DepartmentRulesMatrix(c *gin.Context) {
|
|
var receivedValue rulesMatrixParameter
|
|
err := c.ShouldBindJSON(&receivedValue)
|
|
if err != nil {
|
|
publicmethod.Result(100, receivedValue, c)
|
|
return
|
|
}
|
|
if receivedValue.Company == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
if receivedValue.Target == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
var zbz []matrixZhuBiaoZhoo
|
|
//获取公司下的最小主责部门
|
|
organizationList := publicmethod.GetMinMainDutyDeparment(receivedValue.Company)
|
|
var departmentList []int64
|
|
for _, dv := range organizationList {
|
|
if publicmethod.IsInTrue[int64](dv.Id, departmentList) == false {
|
|
var zbzCont matrixZhuBiaoZhoo
|
|
var ordCont modelshr.AdministrativeOrganization
|
|
ordCont.GetCont(map[string]interface{}{"`id`": dv.Id}, "`name`")
|
|
zbzCont.Id = strconv.FormatInt(dv.Id, 10)
|
|
zbzCont.Name = ordCont.Name
|
|
zbz = append(zbz, zbzCont)
|
|
departmentList = append(departmentList, dv.Id)
|
|
}
|
|
}
|
|
//获取该指标下的所有细则
|
|
var targetList []modelskpi.DetailedTarget
|
|
overall.CONSTANT_DB_KPI.Where("`dt_state` = 1 AND `dt_parentid` = ?", receivedValue.Target).Order("dt_parentid ASC").Order("dt_parentid_sun ASC").Find(&targetList)
|
|
if len(targetList) < 1 {
|
|
publicmethod.Result(105, receivedValue, c)
|
|
return
|
|
}
|
|
var sendDataList []rulesMatrixParaList
|
|
for _, v := range targetList {
|
|
var sendDataCont rulesMatrixParaList
|
|
|
|
sendDataCont.Id = v.Id
|
|
sendDataCont.Title = v.Title //指标细则"`
|
|
sendDataCont.Content = v.Content //指标说明"`
|
|
sendDataCont.ParentId = v.ParentId //归属指标栏目"`
|
|
sendDataCont.ParentIdSun = v.ParentIdSun //归属指标子栏目"`
|
|
sendDataCont.State = v.State //状态(1:启用;2:禁用;3:删除)"`
|
|
sendDataCont.AddTime = v.AddTime //制定时间"`
|
|
sendDataCont.MinScore = v.MinScore //最小分*100保存"`
|
|
sendDataCont.MaxScore = v.MaxScore //100保存"`
|
|
sendDataCont.Company = v.Company //单位"`
|
|
sendDataCont.AddReduce = v.AddReduce //1:减少;2:增加;3:无属性,现场确认加或减"`
|
|
sendDataCont.CensorType = v.CensorType //检查方式"`
|
|
sendDataCont.CensorCont = v.CensorCont //检查依据"`
|
|
sendDataCont.CensorRate = v.CensorRate //检查频次"`
|
|
sendDataCont.Cycles = v.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年"`
|
|
sendDataCont.CycleAttres = v.CycleAttres //辅助计数"`
|
|
sendDataCont.Paretment = v.Paretment //接受考核的部门"`
|
|
sendDataCont.Reportary = v.Reportary //提报人"`
|
|
|
|
standardStr := ""
|
|
if v.MinScore != 0 {
|
|
standardStr = fmt.Sprintf("%v-%v", publicmethod.DecimalEs(float64(v.MinScore)/100, 2), publicmethod.DecimalEs(float64(v.MaxScore)/100, 2))
|
|
} else {
|
|
standardStr = fmt.Sprintf("%v", publicmethod.DecimalEs(float64(v.MaxScore)/100, 2))
|
|
}
|
|
sendDataCont.Standard = standardStr
|
|
//子栏目信息
|
|
var sonTargetInfo modelskpi.QualitativeTarget
|
|
sonTargetInfo.GetCont(map[string]interface{}{"`q_id`": v.ParentIdSun}, "q_title")
|
|
sendDataCont.SonTargetName = sonTargetInfo.Title
|
|
sendDataCont.CensorTypeList = strings.Split(v.CensorType, ",")
|
|
|
|
relationOrg := GetRulesDepartment(v.ParentId, v.ParentIdSun, v.Id, 1)
|
|
for i := 0; i < len(departmentList); i++ {
|
|
// var matrDepart matrixDepartment
|
|
// matrDepart.Id = strconv.FormatInt(departmentList[i], 10)
|
|
// var ordCont modelshr.AdministrativeOrganization
|
|
// ordCont.GetCont(map[string]interface{}{"`id`": departmentList[i]}, "`name`")
|
|
// matrDepart.Name = ordCont.Name
|
|
if publicmethod.IsInTrue[int64](departmentList[i], relationOrg) == true {
|
|
// fmt.Printf("relationOrg--------True------>%v------>%v\n", v.Id, departmentList[i])
|
|
sendDataCont.IsTrue = append(sendDataCont.IsTrue, 1)
|
|
// matrDepart.IsTrue = 1
|
|
} else {
|
|
// fmt.Printf("relationOrg--------False------>%v------>%v\n", v.Id, departmentList[i])
|
|
sendDataCont.IsTrue = append(sendDataCont.IsTrue, 0)
|
|
// matrDepart.IsTrue = 0
|
|
}
|
|
// sendDataCont.DepartmentIsTrue = append(sendDataCont.DepartmentIsTrue, matrDepart)
|
|
}
|
|
sendDataList = append(sendDataList, sendDataCont)
|
|
|
|
}
|
|
sendMap := publicmethod.MapOut[string]()
|
|
// orgJson, _ := json.Marshal(organizationList)
|
|
// fmt.Printf("orgJson-------------->%v\n", string(orgJson))
|
|
sendMap["list"] = sendDataList
|
|
sendMap["department"] = zbz
|
|
publicmethod.Result(0, sendMap, c)
|
|
}
|
|
|
|
/*
|
|
获取指标细则关联部门
|
|
@target 指标
|
|
@sonTarget 子栏目
|
|
@bylaws 细则
|
|
@level 级别(1:部门级;2:岗位级)"`
|
|
*/
|
|
func GetRulesDepartment(target, sonTarget, bylaws int64, level int) (orgId []int64) {
|
|
// var targetDepartmentList []modelskpi.TargetDetailedRelationDepartment
|
|
// var
|
|
overall.CONSTANT_DB_KPI.Model(&modelskpi.TargetDetailedRelationDepartment{}).Distinct("`tddepartment`").Where("`dt_state` = 1 AND `dt_parentid` = ? AND `dt_parentid_sun` = ? AND `dt_id` = ? AND `level` = ?", target, sonTarget, bylaws, level).Find(&orgId)
|
|
// var snedId []int64
|
|
// for _, v := range orgId {
|
|
// snedId = append(snedId, publicmethod.GetGroupOrDepartPower(v, 1))
|
|
|
|
// }
|
|
// fmt.Printf("orgId----------->%v----------->%v\n", orgId, snedId)
|
|
return
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-02-13 15:17:31
|
|
@ 功能: 获取指定指标下的细则列表
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (a *ApiMethod) GetTargetDetailsList(c *gin.Context) {
|
|
var receivedValue GetTarDetails
|
|
c.ShouldBindJSON(&receivedValue)
|
|
if receivedValue.TargetId == 0 {
|
|
publicmethod.Result(1, receivedValue, c, "未获取到指标ID!")
|
|
return
|
|
}
|
|
var idList []int64
|
|
var detCont modelskpi.DetailedTarget
|
|
gormDb := overall.CONSTANT_DB_KPI.Table(fmt.Sprintf("%s dt", detCont.TableName())).Distinct("dt.dt_id").Where("dt.dt_state BETWEEN 1 AND 2 AND dt.dt_parentid = ?", receivedValue.TargetId)
|
|
if receivedValue.Cycle != 0 {
|
|
gormDb = gormDb.Where("dt.`dt_cycle` = ?", receivedValue.Cycle)
|
|
}
|
|
if len(receivedValue.TestMethod) > 0 {
|
|
var sqlOrStr string
|
|
for ti, tv := range receivedValue.TestMethod {
|
|
if ti == 0 {
|
|
// gormDb = gormDb.Where("FIND_IN_SET(?,`dt_censor_type`)", tv)
|
|
sqlOrStr = fmt.Sprintf("FIND_IN_SET(%v,`dt_censor_type`)", tv)
|
|
} else {
|
|
// gormDb = gormDb.Or("FIND_IN_SET(?,`dt_censor_type`)", tv)
|
|
sqlOrStr = fmt.Sprintf("%v OR FIND_IN_SET(%v,`dt_censor_type`)", sqlOrStr, tv)
|
|
}
|
|
}
|
|
gormDb = gormDb.Where(sqlOrStr)
|
|
}
|
|
if len(receivedValue.OrgList) > 0 {
|
|
gormDb = gormDb.Joins("LEFT JOIN `target_department` `td` on td.target_id = dt.dt_parentid AND td.target_sun_id = dt.dt_parentid_sun AND td.target_bylaws = dt.dt_id").Where("td.`type` = 3 AND td.`state` BETWEEN 1 AND 2 AND td.`level` = 1 AND td.department_id IN ?", receivedValue.OrgList)
|
|
}
|
|
err := gormDb.Find(&idList).Error
|
|
if err != nil || len(idList) < 1 {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
// return
|
|
var listCont []modelskpi.DetailedTarget
|
|
err = overall.CONSTANT_DB_KPI.Where("`dt_id` IN ?", idList).Order("dt_parentid desc, dt_parentid_sun").Find(&listCont).Error
|
|
if err != nil || len(listCont) < 1 {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
var sendListCont []outputTargetDetails
|
|
jishuqi := 1
|
|
var lastSunTable int64
|
|
for _, v := range listCont {
|
|
var sendCont outputTargetDetails
|
|
sendCont.Id = v.Id
|
|
sendCont.Title = v.Title //指标细则"`
|
|
sendCont.Content = v.Content //指标说明"`
|
|
sendCont.ParentId = v.ParentId //归属指标栏目"`
|
|
if lastSunTable != v.ParentIdSun {
|
|
lastSunTable = v.ParentIdSun
|
|
jishuqi = 1
|
|
} else {
|
|
jishuqi = jishuqi + 1
|
|
}
|
|
sendCont.JiBuQi = jishuqi
|
|
sendCont.ParentIdSun = v.ParentIdSun //归属指标子栏目"`
|
|
sendCont.State = v.State //状态(1:启用;2:禁用;3:删除)"`
|
|
sendCont.AddTime = v.AddTime //制定时间"`
|
|
sendCont.MinScore = v.MinScore //最小分*100保存"`
|
|
sendCont.MaxScore = v.MaxScore //最大分*100保存"`
|
|
sendCont.Company = v.Company //单位"`
|
|
sendCont.AddReduce = v.AddReduce //1:减少;2:增加;3:无属性,现场确认加或减"`
|
|
sendCont.CensorType = v.CensorType //检查方式"`
|
|
sendCont.CensorCont = v.CensorCont //检查依据"`
|
|
sendCont.CensorRate = v.CensorRate //检查频次"`
|
|
sendCont.Cycles = v.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年"`
|
|
sendCont.CycleAttres = v.CycleAttres //辅助计数"`
|
|
sendCont.Paretment = v.Paretment //接受考核的部门"`
|
|
sendCont.Reportary = v.Reportary //提报人"`
|
|
var sonTargetCont modelskpi.QualitativeTarget
|
|
sonTargetCont.GetCont(map[string]interface{}{"q_id": v.ParentIdSun}, "q_title")
|
|
sendCont.ColumnName = sonTargetCont.Title
|
|
if v.MinScore != 0 && v.MaxScore != 0 {
|
|
minScoreFloat64 := publicmethod.DecimalEs(float64(v.MinScore)/100, 2)
|
|
maxScoreFloat64 := publicmethod.DecimalEs(float64(v.MaxScore)/100, 2)
|
|
sendCont.Standard = fmt.Sprintf("%v-%v", minScoreFloat64, maxScoreFloat64)
|
|
} else if v.MinScore == 0 && v.MaxScore != 0 {
|
|
maxScoreFloat64 := publicmethod.DecimalEs(float64(v.MaxScore)/100, 2)
|
|
sendCont.Standard = fmt.Sprintf("%v", maxScoreFloat64)
|
|
} else if v.MinScore != 0 && v.MaxScore == 0 {
|
|
minScoreFloat64 := publicmethod.DecimalEs(float64(v.MinScore)/100, 2)
|
|
sendCont.Standard = fmt.Sprintf("%v", minScoreFloat64)
|
|
} else {
|
|
sendCont.Standard = "0"
|
|
}
|
|
sendListCont = append(sendListCont, sendCont)
|
|
}
|
|
publicmethod.Result(0, sendListCont, c)
|
|
}
|
|
|
|
/*
|
|
*
|
|
@ 作者: 秦东
|
|
@ 时间: 2023-02-15 11:38:24
|
|
@ 功能:
|
|
@ 参数
|
|
|
|
#
|
|
|
|
@ 返回值
|
|
|
|
#
|
|
|
|
@ 方法原型
|
|
|
|
#
|
|
*/
|
|
func (a *ApiMethod) GetTargetColumnList(c *gin.Context) {
|
|
var receivedValue publicmethod.PublicId
|
|
err := c.ShouldBindJSON(&receivedValue)
|
|
if err != nil || receivedValue.Id == "" {
|
|
publicmethod.Result(100, receivedValue, c)
|
|
return
|
|
}
|
|
var columnContList []modelskpi.QualitativeTarget
|
|
err = overall.CONSTANT_DB_KPI.Where("`q_state` = 1 AND `q_parent_id` = ?", receivedValue.Id).Find(&columnContList).Error
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
publicmethod.Result(0, columnContList, c)
|
|
}
|
|
|