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
}