package departmentpc import ( "encoding/json" "fmt" "key_performance_indicators/models/modelskpi" "key_performance_indicators/overall" "key_performance_indicators/overall/publicmethod" "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 } //获取公司下的最小主责部门 organizationList := publicmethod.GetMinMainDutyDeparment(receivedValue.Company) var departmentList []int64 for _, dv := range organizationList { if publicmethod.IsInTrue[int64](dv.Id, departmentList) == false { 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 } for _, v := range targetList { relationOrg := GetRulesDepartment(v.ParentId, v.ParentIdSun, v.Id, 1) for i := 0; i < len(departmentList); i++ { if publicmethod.IsInTrue[int64](departmentList[i], relationOrg) == true { fmt.Printf("relationOrg--------True------>%v------>%v\n", v.Id, departmentList[i]) } else { fmt.Printf("relationOrg--------False------>%v------>%v\n", v.Id, departmentList[i]) } } } orgJson, _ := json.Marshal(organizationList) fmt.Printf("orgJson-------------->%v\n", string(orgJson)) } /* 获取指标细则关联部门 @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 }