package departmentpc
import (
"encoding/json"
"fmt"
"key_performance_indicators/models/modelshr"
"key_performance_indicators/models/modelskpi"
"key_performance_indicators/overall"
"key_performance_indicators/overall/publicmethod"
"sort"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
)
//部门级考核方案
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 12 - 14 13 : 58 : 18
@ 功能 : 部门考核方案列表
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) DepartmentProgramme ( c * gin . Context ) {
var receivedValue DepartPrograList
c . ShouldBindJSON ( & receivedValue )
gormDb := overall . CONSTANT_DB_KPI . Where ( "`state` BETWEEN ? AND ?" , 1 , 2 )
if receivedValue . OrgId != "" {
orgIdInt , _ := strconv . ParseInt ( receivedValue . OrgId , 10 , 64 )
orgAllSunId := publicmethod . GetDepartmentSun ( orgIdInt , [ ] int64 { } )
orgAllSunId = append ( orgAllSunId , orgIdInt )
if len ( orgAllSunId ) > 0 {
gormDb = gormDb . Where ( "`department` IN ?" , orgAllSunId )
}
}
if receivedValue . Year != "" {
gormDb = gormDb . Where ( "`yeares` = ?" , receivedValue . Year )
}
if receivedValue . Version != "" {
gormDb = gormDb . Where ( "`key` LIKE ?" , "%" + receivedValue . Version + "%" )
}
var planVersionList [ ] modelskpi . PlanVersio
err := gormDb . Order ( "`group` ASC" ) . Order ( "`department` ASC" ) . Order ( "`state` ASC" ) . Order ( "`addtime` DESC" ) . Find ( & planVersionList ) . Error
if err != nil {
publicmethod . Result ( 105 , err , c )
return
}
var sendList [ ] SendDepartPrograList
for _ , v := range planVersionList {
var sendCont SendDepartPrograList
sendCont . Id = v . Id //
sendCont . Group = v . Group //集团ID"`
sendCont . Department = v . Department //部门ID"`
sendCont . Year = v . Year //年度"`
sendCont . Versio = v . Versio //版本号"`
sendCont . Key = v . Key //编码"`
sendCont . State = v . State //状态(1:启用;2:禁用;3:删除)"`
if v . State == 1 {
sendCont . States = true
} else {
sendCont . States = false
}
sendCont . AddTime = v . AddTime //创建时间"`
sendCont . EiteTime = v . EiteTime //l修改时间"`
// sendCont.Content = v.Content //版本内容"`
json . Unmarshal ( [ ] byte ( v . Content ) , & sendCont . VersionCont )
var companyCont modelshr . AdministrativeOrganization
companyCont . GetCont ( map [ string ] interface { } { "`id`" : v . Group } , "`name`" )
sendCont . GroupName = companyCont . Name
var dempartCont modelshr . AdministrativeOrganization
dempartCont . GetCont ( map [ string ] interface { } { "`id`" : v . Department } , "`name`" )
sendCont . DeaprtName = dempartCont . Name
sendCont . Time = publicmethod . UnixTimeToDay ( v . AddTime , 11 )
sendList = append ( sendList , sendCont )
}
publicmethod . Result ( 0 , sendList , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 12 - 14 16 : 38 : 02
@ 功能 : 编辑部门方案状态
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) EditDepartPrograState ( c * gin . Context ) {
var receivedValue publicmethod . PublicState
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if receivedValue . Id == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if receivedValue . State == 0 {
receivedValue . State = 2
}
if receivedValue . IsTrue == 0 {
receivedValue . IsTrue = 2
}
//判断该方案是否存在
var planVersionCont modelskpi . PlanVersio
err = planVersionCont . GetCont ( map [ string ] interface { } { "`key`" : receivedValue . Id } )
if err != nil {
publicmethod . Result ( 107 , receivedValue , c )
return
}
//判断是否可执行操作
if editDepartStateIsTrue ( planVersionCont , receivedValue . State ) {
msg := "要操作的方案还有未走完的审批流程!请不要进行此操作!"
if receivedValue . State == 1 {
msg = "当前激活的方案中还有未走完的审批流程!请不要进行此操作!"
}
publicmethod . Result ( 1 , receivedValue , c , msg )
return
}
//根据操作不同执行相应函数
editState := publicmethod . MapOut [ string ] ( )
editState [ "`state`" ] = 2
editState [ "`eitetime`" ] = time . Now ( ) . Unix ( )
switch receivedValue . State {
case 1 :
//执行启用操作
//1、获取已经启用的方案西信息
var planIsRun modelskpi . PlanVersio
err = planIsRun . GetCont ( map [ string ] interface { } { "`group`" : planVersionCont . Group , "`department`" : planVersionCont . Department , "`state`" : 1 } , "`id`" , "`key`" )
if err == nil {
planIsRun . EiteCont ( map [ string ] interface { } { "`id`" : planIsRun . Id } , editState )
var qualEval modelskpi . QualitativeEvaluation
qualEval . EiteCont ( map [ string ] interface { } { "`qe_qual_eval_id`" : planIsRun . Key } , map [ string ] interface { } { "`qe_state`" : 2 , "`qe_eitetime`" : time . Now ( ) . Unix ( ) } )
}
err = planVersionCont . EiteCont ( map [ string ] interface { } { "`id`" : planVersionCont . Id } , map [ string ] interface { } { "`state`" : 1 , "`eitetime`" : time . Now ( ) . Unix ( ) } )
var qualEvalMain modelskpi . QualitativeEvaluation
qualEvalMain . EiteCont ( map [ string ] interface { } { "`qe_qual_eval_id`" : planVersionCont . Key } , map [ string ] interface { } { "`qe_state`" : 1 , "`qe_eitetime`" : time . Now ( ) . Unix ( ) } )
case 3 :
if receivedValue . IsTrue == 1 {
var qualEval modelskpi . QualitativeEvaluation
qualEval . DelCont ( map [ string ] interface { } { "`qe_qual_eval_id`" : planVersionCont . Key } )
err = planVersionCont . DelCont ( map [ string ] interface { } { "`id`" : planVersionCont . Id } )
} else {
var qualEval modelskpi . QualitativeEvaluation
qualEval . EiteCont ( map [ string ] interface { } { "`qe_qual_eval_id`" : planVersionCont . Key } , map [ string ] interface { } { "`qe_state`" : 3 , "`qe_eitetime`" : time . Now ( ) . Unix ( ) } )
err = planVersionCont . EiteCont ( map [ string ] interface { } { "`id`" : planVersionCont . Id } , map [ string ] interface { } { "`state`" : 3 , "`eitetime`" : time . Now ( ) . Unix ( ) } )
}
default :
var qualEval modelskpi . QualitativeEvaluation
qualEval . EiteCont ( map [ string ] interface { } { "`qe_qual_eval_id`" : planVersionCont . Key } , map [ string ] interface { } { "`qe_state`" : 2 , "`qe_eitetime`" : time . Now ( ) . Unix ( ) } )
err = planVersionCont . EiteCont ( map [ string ] interface { } { "`id`" : planVersionCont . Id } , editState )
}
if err != nil {
publicmethod . Result ( 106 , err , c )
return
}
publicmethod . Result ( 0 , err , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 12 - 14 16 : 48 : 55
@ 功能 : 判断是否可执行部门方案状态更改操作
@ 参数
# planVersionCont 要操作的方案主体
# state 状态1 : 启用 ; 2 : 禁用 ; 3 : 删除
@ 返回值
#
@ 方法原型
#
* /
func editDepartStateIsTrue ( planVersionCont modelskpi . PlanVersio , state int ) ( isTrue bool ) {
isTrue = false
//判断是否启用
if state == 1 {
//1、判断同部门是否有已经启用的方案
var planRuning modelskpi . PlanVersio
err := planRuning . GetCont ( map [ string ] interface { } { "`group`" : planVersionCont . Group , "`department`" : planVersionCont . Department , "`state`" : 1 } , "`id`" , "`key`" )
if err != nil {
return
}
isTrue = SearchPlanVersion ( planRuning . Key )
} else {
//执行非启用状态,判断该方案主体是否有政治执行的操作
isTrue = SearchPlanVersion ( planVersionCont . Key )
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 12 - 14 16 : 54 : 44
@ 功能 : 查询方案正在执行的操作
@ 参数
#
@ 返回值
# isTrue true : 存在正在执行的操作 ; false : 不存在正在执行的操作
@ 方法原型
#
* /
func SearchPlanVersion ( key string ) ( isTrue bool ) {
isTrue = false
//获取本方案中的所有内容
var planContList [ ] modelskpi . QualitativeEvaluation
err := overall . CONSTANT_DB_KPI . Model ( & modelskpi . QualitativeEvaluation { } ) . Select ( "qe_id,qe_type" ) . Where ( "`qe_state` = 1 AND `qe_qual_eval_id` = ?" , key ) . Find ( & planContList ) . Error
if err != nil {
return
}
//分别获取定性和定量的项目Id列表
var dingXing [ ] int64
var dingLiang [ ] int64
for _ , v := range planContList {
if v . Type == 1 {
if publicmethod . IsInTrue [ int64 ] ( v . Id , dingXing ) == false {
dingXing = append ( dingXing , v . Id )
}
} else {
if publicmethod . IsInTrue [ int64 ] ( v . Id , dingLiang ) == false {
dingLiang = append ( dingLiang , v . Id )
}
}
}
var syncListCont judgePlanTask
SyncSeting . Add ( 1 )
go syncListCont . SearchDingXingPlan ( dingXing )
SyncSeting . Add ( 1 )
go syncListCont . SearchDingLiangPlan ( dingLiang )
SyncSeting . Wait ( )
readDingXingMap , readDingLiangMap := syncListCont . readPlanTaskData ( )
if len ( readDingXingMap ) > 0 || len ( readDingLiangMap ) > 0 {
isTrue = true
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 12 - 14 17 : 24 : 37
@ 功能 : 判断方案中是否有正在执行的定性考核项
@ 参数
# id 方案中定性考核项
@ 返回值
#
@ 方法原型
# ( j * judgePlanTask ) SearchDingXingPlan ( id [ ] int64 )
* /
func ( j * judgePlanTask ) SearchDingXingPlan ( id [ ] int64 ) {
j . mutext . Lock ( )
defer j . mutext . Unlock ( )
if len ( id ) > 0 {
//获取该方案在执行中的数据
var dingXingTask [ ] bingFaOut
err := overall . CONSTANT_DB_KPI . Model ( & modelskpi . ScoreFlow { } ) . Select ( "sf_id,sf_key,sf_evaluation_plan,ep_order_key,ep_state" ) . Joins ( "left join evaluation_process on ep_order_key = sf_key" ) . Where ( "`sf_evaluation_plan` IN ? AND ep_state IN (1,2)" , id ) . Find ( & dingXingTask ) . Error
if err == nil {
for _ , v := range dingXingTask {
isIn := publicmethod . MapOut [ string ] ( )
isIn [ "id" ] = v . Id
isIn [ "key" ] = v . Key
isIn [ "state" ] = v . State
j . dingXingTask = append ( j . dingXingTask , isIn )
}
}
}
SyncSeting . Done ( )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 12 - 15 0 8 : 34 : 42
@ 功能 : 判断方案中是否有正在执行的定量考核项
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( j * judgePlanTask ) SearchDingLiangPlan ( id [ ] int64 ) {
j . mutext . Lock ( )
defer j . mutext . Unlock ( )
if len ( id ) > 0 {
//获取该方案在执行中的数据
var stateIsTrue [ ] bingFaOutDingLiang
err := overall . CONSTANT_DB_KPI . Model ( & modelskpi . FlowLog { } ) . Select ( "fl_id,fl_key,fl_evaluation_id,fl_reply,ep_order_key,ep_state" ) . Where ( "`fl_key` IN ? AND ep_state IN (1,2)" , id ) . Joins ( "left join evaluation_process on ep_order_key = fl_key" ) . Find ( & stateIsTrue ) . Error
if err == nil {
for _ , v := range stateIsTrue {
isIn := publicmethod . MapOut [ string ] ( )
isIn [ "id" ] = v . Id
isIn [ "key" ] = v . Key
isIn [ "state" ] = v . State
j . dingLiangTask = append ( j . dingLiangTask , isIn )
}
}
}
SyncSeting . Done ( )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 12 - 15 10 : 49 : 36
@ 功能 : 添加方案
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) CreateSchemeForDeparment ( c * gin . Context ) {
var receivedValue AddDutyNewContGroup
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
// if receivedValue.Group == "" {
// publicmethod.Result(101, receivedValue, c)
// return
// }
if receivedValue . DepartmentId == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if receivedValue . Year == "" {
publicmethod . Result ( 1 , receivedValue , c , "请选择年份" )
return
}
if len ( receivedValue . Child ) < 1 {
publicmethod . Result ( 1 , receivedValue , c , "没有要添加的数据" )
return
}
departId , _ := strconv . ParseInt ( receivedValue . DepartmentId , 10 , 64 ) //部门ID
yearInt , _ := strconv . ParseInt ( receivedValue . Year , 10 , 64 ) //年
//获取编号首字母
_ , groupId , _ , _ , _ := publicmethod . GetOrgStructurees ( departId )
// groupId, groupErr := strconv.ParseInt(receivedValue.Group, 10, 64) //集团ID
// if groupErr != nil {
// groupId = 0
// }
var groupCont modelshr . AdministrativeOrganization
groupCont . GetCont ( map [ string ] interface { } { "`id`" : groupId } , "`id`" , "`name`" , "`abbreviation`" )
nameCont := groupCont . Abbreviation
if nameCont == "" {
nameCont = groupCont . Name
}
companyFirstWord := publicmethod . ChineseFirstWordCapitalize ( nameCont ) //公司首字母
//判断当前部门是否已经有正启用得方案
judgeState := 1
var judgePlanState modelskpi . PlanVersio
err = judgePlanState . GetCont ( map [ string ] interface { } { "`state`" : 1 , "`group`" : groupId , "`department`" : departId } , "`id`" )
if err == nil {
judgeState = 2
}
//判断年度是否存在版本
var versioNum string //版本号
var sumVerson float64 //已经存在得方案数量
err = overall . CONSTANT_DB_KPI . Model ( & modelskpi . PlanVersio { } ) . Select ( "`id`" ) . Where ( "`group` = ? AND `yeares` = ?" , groupId , yearInt ) . Pluck ( "COALESCE(COUNT(id), 0) as countid" , & sumVerson ) . Error
if err != nil {
versioNum = "0001"
} else {
if sumVerson == 0 {
versioNum = "0001"
} else {
versioNum = fmt . Sprintf ( "%04v" , sumVerson )
}
}
//统一编辑时间
todyTime := time . Now ( ) . Unix ( )
//方案编号
keyStr := fmt . Sprintf ( "%v%v%v" , companyFirstWord , publicmethod . UnixTimeToDay ( todyTime , 20 ) , versioNum )
//合成方案主数据
var savePlanVersionCont modelskpi . PlanVersio
savePlanVersionCont . Group = groupId
savePlanVersionCont . Department = departId
savePlanVersionCont . Year = yearInt
savePlanVersionCont . Versio = versioNum
savePlanVersionCont . Key = keyStr
savePlanVersionCont . State = judgeState
savePlanVersionCont . AddTime = todyTime
savePlanVersionCont . EiteTime = todyTime
//组装方案结构体,转换json数据
if len ( receivedValue . Child ) > 0 {
var planListCont [ ] AddDutyNewCont
for _ , v := range receivedValue . Child {
var planCont AddDutyNewCont
//第一层;纬度操作
planCont . Id = v . Id
planCont . Name = v . Name
planCont . ZhiFraction = v . ZhiFraction
for _ , cv := range v . Child {
//第二层;指标操作
var targetCont EvaluPross
targetCont . Id = cv . Id //指标ID
targetCont . Name = cv . Name //指标名称
targetCont . Content = cv . Content //指标说明
targetCont . Unit = cv . Unit //单位"`
targetCont . ReferenceScore = cv . ReferenceScore //标准分值"`
targetCont . State = cv . State // `json:"state"`
targetCont . Status = cv . Status // 1:使用;2:禁用;3:观察
targetCont . Score = cv . Score // `json:"state"`
targetCont . QualEvalId = cv . QualEvalId // `json:"state"`
//获取指标统计属性
var getTarCont modelskpi . EvaluationTarget
err = getTarCont . GetCont ( map [ string ] interface { } { "et_id" : cv . Id } , "et_cycle,et_cycleattr" )
if err == nil {
targetCont . Cycles = getTarCont . Cycles //1:班;2:天;3:周;4:月;5:季度;6:年"`
targetCont . CycleAttres = getTarCont . CycleAttres //辅助计数"`
}
planCont . Child = append ( planCont . Child , targetCont )
}
planListCont = append ( planListCont , planCont )
}
planJsonCont , planJsonErr := json . Marshal ( planListCont )
if planJsonErr == nil {
savePlanVersionCont . Content = string ( planJsonCont )
}
}
//往考核方案中写入考核数据
var qualEvalList [ ] modelskpi . QualitativeEvaluation
//解析方案结构体
for _ , v := range receivedValue . Child {
// dimensionIdInt, _ := strconv.ParseInt(v.Id, 10, 64)
//维度操作
AddWeight ( receivedValue . Group , v . Id , receivedValue . DepartmentId , "" , int64 ( v . ZhiFraction ) , 1 ) //添加维度权重
for _ , cv := range v . Child {
//指标操作
if cv . Status != 2 { //操作非禁用得指标
//获取指标定义
var targetInfo modelskpi . EvaluationTarget
err := targetInfo . GetCont ( map [ string ] interface { } { "`et_id`" : cv . Id } )
if err == nil { //判断指标是否存在
//判断指标是定性还是定量
if targetInfo . Type == 2 {
//定量指标
AddWeight ( receivedValue . Group , v . Id , receivedValue . DepartmentId , cv . Id , cv . ReferenceScore , 2 )
var qualEvalContXing modelskpi . QualitativeEvaluation
qualEvalContXing . Dimension , _ = strconv . ParseInt ( v . Id , 10 , 64 )
qualEvalContXing . Target , _ = strconv . ParseInt ( cv . Id , 10 , 64 ) //指标
qualEvalContXing . Type = targetInfo . Type //类型
qualEvalContXing . Unit = targetInfo . Uniteing //单位
qualEvalContXing . ReferenceScore = cv . ReferenceScore //分值
qualEvalContXing . State = judgeState //状态
qualEvalContXing . Addtime = time . Now ( ) . Unix ( )
qualEvalContXing . Eitetime = time . Now ( ) . Unix ( )
qualEvalContXing . Group = groupId //集团
qualEvalContXing . Cycles = targetInfo . Cycles //单位
qualEvalContXing . CycleAttres = targetInfo . CycleAttres //辅助计数
qualEvalContXing . AcceptEvaluation = departId //接受考核部门
qualEvalContXing . Content = cv . Content //描述
qualEvalContXing . Operator = targetInfo . Report //执行考核人
qualEvalContXing . QualEvalId = keyStr
qualEvalContXing . Observer = cv . Status
var departAry [ ] string
userKeyAry := strings . Split ( targetInfo . Report , "," )
if len ( userKeyAry ) > 0 {
for _ , u_v := range userKeyAry {
var userCont modelshr . PersonArchives
err = userCont . GetCont ( map [ string ] interface { } { "`key`" : u_v } , "`maindeparment`" )
mainDepartStr := strconv . FormatInt ( userCont . MainDeparment , 10 )
if publicmethod . IsInTrue [ string ] ( mainDepartStr , departAry ) == false {
departAry = append ( departAry , mainDepartStr )
}
}
}
qualEvalContXing . DepartmentId = strings . Join ( departAry , "," ) //处理关联部门
qualEvalList = append ( qualEvalList , qualEvalContXing )
} else {
//定性指标
AddWeight ( receivedValue . Group , v . Id , receivedValue . DepartmentId , cv . Id , cv . ReferenceScore , 1 )
//获取关联的细则Id
tarIdIntSet , _ := strconv . ParseInt ( cv . Id , 10 , 64 )
targetIdAry , err := GetTargetDetailsInfoList ( tarIdIntSet , 0 , 0 , departId , 0 , 3 , 1 )
var targetDetailsList [ ] modelskpi . DetailedTarget
err = overall . CONSTANT_DB_KPI . Model ( & modelskpi . DetailedTarget { } ) . Where ( "`dt_state` = 1 AND `dt_id` IN ? " , targetIdAry ) . Find ( & targetDetailsList ) . Error
var detailedList [ ] DutyAssEssTarget
//写入指标细则
if err == nil {
for _ , tv := range targetDetailsList { //指标细则
//写入新的定性考核细则
var saveData modelskpi . QualitativeEvaluation
saveData . Dimension = targetInfo . Dimension //纬度
saveData . Target = targetInfo . Id //指标
saveData . Type = 1 //类型
saveData . TargetSun = tv . ParentIdSun //子栏目
saveData . DetailedTarget = tv . Id //指标细则
if tv . Company != "" {
saveData . Unit = tv . Company
} else {
saveData . Unit = targetInfo . Uniteing
}
saveData . ReferenceScore = 0 //分值
saveData . MinScore = tv . MinScore //最低分
saveData . MaxScore = tv . MaxScore //最高分
saveData . CensorType = tv . CensorType //检查方式
saveData . CensorCont = tv . CensorCont //检查依据
saveData . CensorRate = tv . CensorRate //检查频次
saveData . State = judgeState //状态
saveData . Addtime = time . Now ( ) . Unix ( )
saveData . Eitetime = time . Now ( ) . Unix ( )
saveData . Group = groupId //集团
if tv . Cycles > 0 {
saveData . Cycles = tv . Cycles //1:班;2:天;3:周;4:月;5:季度;6:年
saveData . CycleAttres = tv . CycleAttres //辅助计数
} else {
saveData . Cycles = targetInfo . Cycles //1:班;2:天;3:周;4:月;5:季度;6:年
saveData . CycleAttres = targetInfo . CycleAttres //辅助计数
}
saveData . AcceptEvaluation = departId //接受考核部门
saveData . Content = tv . Content //描述
reportStr := tv . Reportary
if tv . Reportary != "" {
saveData . Operator = tv . Reportary //执行考核人
} else {
if len ( detailedList ) > 0 {
for _ , dev := range detailedList {
if dev . Id == tv . Id {
saveData . Operator = strings . Join ( dev . Operator , "," ) //执行考核人 //执行考核人
reportStr = strings . Join ( dev . Operator , "," )
saveData . DepartmentId = strings . Join ( dev . Department , "," )
}
}
}
}
var departAry [ ] string
userKeyAry := strings . Split ( reportStr , "," )
if len ( userKeyAry ) > 0 {
for _ , u_v := range userKeyAry {
var userCont modelshr . PersonArchives
err = userCont . GetCont ( map [ string ] interface { } { "`key`" : u_v } , "`maindeparment`" )
mainDepartStr := strconv . FormatInt ( userCont . MainDeparment , 10 )
if publicmethod . IsInTrue [ string ] ( mainDepartStr , departAry ) == false {
departAry = append ( departAry , mainDepartStr )
}
}
}
saveData . DepartmentId = strings . Join ( departAry , "," ) //处理关联部门
saveData . QualEvalId = keyStr
saveData . Observer = cv . Status
qualEvalList = append ( qualEvalList , saveData )
}
}
//获取定性指标得关联关系
// var assessList []modelskpi.Assesstarget
// err = overall.CONSTANT_DB_KPI.Model(&modelskpi.Assesstarget{}).Where("`state` = 1 AND `group` = ? AND `dimension` = ? AND `targetid` = ? AND FIND_IN_SET(?,`departmentmap`)", groupId, v.Id, cv.Id, departId).Find(&assessList).Error
// if err == nil {
// var sunTarget []int64
// for _, sv := range assessList { //遍历与此部门相关得子栏目
// if publicmethod.IsInTrue[int64](sv.Id, sunTarget) == false { //次子栏目未操作过
// //拆解指标详情
// var detailedList []DutyAssEssTarget
// json.Unmarshal([]byte(sv.Content), &detailedList)
// sunTarget = append(sunTarget, sv.Id)
// //获取指标细则列表
// var targetDetailsList []modelskpi.DetailedTarget
// err = overall.CONSTANT_DB_KPI.Model(&modelskpi.DetailedTarget{}).Where("`dt_state` = 1 AND `dt_parentid` = ? AND `dt_parentid_sun` = ? AND (FIND_IN_SET(?,`dt_paretment`) OR `dt_paretment` = '')", cv.Id, sv.SunTargetId, departId).Find(&targetDetailsList).Error
// fmt.Printf("获取指标细则列表-------->%v-------->%v-------->%v-------->%v\n", cv.Id, sv.Id, departId, len(targetDetailsList))
// if err == nil {
// for _, tv := range targetDetailsList { //指标细则
// //写入新的定性考核细则
// var saveData modelskpi.QualitativeEvaluation
// saveData.Dimension = sv.Dimension //纬度
// saveData.Target = targetInfo.Id //指标
// saveData.Type = 1 //类型
// saveData.TargetSun = sv.SunTargetId //子栏目
// saveData.DetailedTarget = tv.Id //指标细则
// if tv.Company != "" {
// saveData.Unit = tv.Company
// } else {
// saveData.Unit = targetInfo.Uniteing
// }
// saveData.ReferenceScore = 0 //分值
// saveData.MinScore = tv.MinScore //最低分
// saveData.MaxScore = tv.MaxScore //最高分
// saveData.CensorType = tv.CensorType //检查方式
// saveData.CensorCont = tv.CensorCont //检查依据
// saveData.CensorRate = tv.CensorRate //检查频次
// saveData.State = judgeState //状态
// saveData.Addtime = time.Now().Unix()
// saveData.Eitetime = time.Now().Unix()
// saveData.Group = groupId //集团
// if tv.Cycles > 0 {
// saveData.Cycles = tv.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年
// saveData.CycleAttres = tv.CycleAttres //辅助计数
// } else {
// saveData.Cycles = targetInfo.Cycles //1:班;2:天;3:周;4:月;5:季度;6:年
// saveData.CycleAttres = targetInfo.CycleAttres //辅助计数
// }
// saveData.AcceptEvaluation = departId //接受考核部门
// saveData.Content = tv.Content //描述
// reportStr := tv.Reportary
// if tv.Reportary != "" {
// saveData.Operator = tv.Reportary //执行考核人
// } else {
// if len(detailedList) > 0 {
// for _, dev := range detailedList {
// if dev.Id == tv.Id {
// saveData.Operator = strings.Join(dev.Operator, ",") //执行考核人 //执行考核人
// reportStr = strings.Join(dev.Operator, ",")
// saveData.DepartmentId = strings.Join(dev.Department, ",")
// }
// }
// }
// }
// var departAry []string
// userKeyAry := strings.Split(reportStr, ",")
// if len(userKeyAry) > 0 {
// for _, u_v := range userKeyAry {
// var userCont modelshr.PersonArchives
// err = userCont.GetCont(map[string]interface{}{"`key`": u_v}, "`maindeparment`")
// mainDepartStr := strconv.FormatInt(userCont.MainDeparment, 10)
// if publicmethod.IsInTrue[string](mainDepartStr, departAry) == false {
// departAry = append(departAry, mainDepartStr)
// }
// }
// }
// saveData.DepartmentId = strings.Join(departAry, ",") //处理关联部门
// saveData.QualEvalId = keyStr
// saveData.Observer = cv.Status
// qualEvalList = append(qualEvalList, saveData)
// }
// }
// }
// }
// }
}
}
}
}
}
//判断是否有要写入得内容
if len ( qualEvalList ) > 0 {
affairDb := overall . CONSTANT_DB_KPI . Begin ( )
addSysAdminContErr := affairDb . Create ( & savePlanVersionCont ) . Error
addSysAdminAttrContErr := affairDb . Create ( & qualEvalList ) . Error
if addSysAdminContErr == nil && addSysAdminAttrContErr == nil {
affairDbErr := affairDb . Commit ( ) . Error
if affairDbErr == nil {
publicmethod . Result ( 0 , affairDbErr , c , "数据写入成功!" )
return
} else {
publicmethod . Result ( 108 , affairDbErr , c , "数据写入失败!" )
return
}
} else {
affairDbErr := affairDb . Rollback ( ) . Error
publicmethod . Result ( 109 , affairDbErr , c , "数据写入失败!" )
return
}
}
publicmethod . Result ( 1 , qualEvalList , c , "数据写入失败!" )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 12 - 15 13 : 42 : 54
@ 功能 : 写入权重操作
@ 参数
# group 集团
# dimension 维度
# derpatment 部门
# target 指标
# class 1 : 定性考核 ; 2 : 定量考核
@ 返回值
# isTrue
@ 方法原型
#
* /
func AddWeight ( group , dimension , derpatment , target string , score , class int64 ) ( isTrue bool ) {
isTrue = false
//判断指标是否为空
if target != "" {
var departSionWeightCont modelskpi . DepartmentDimensionWeight
err := departSionWeightCont . GetCont ( map [ string ] interface { } { "`ddw_hierarchy`" : 2 , "`ddw_group`" : group , "`ddw_derpatment`" : derpatment , "`ddw_dimension`" : dimension , "`ddw_target`" : target , "`ddw_type`" : class } , "`ddw_id`" )
if err == nil {
//存在,进行更新
editCont := publicmethod . MapOut [ string ] ( )
editCont [ "ddw_time" ] = time . Now ( ) . Unix ( )
editCont [ "ddw_weight" ] = score
err = departSionWeightCont . EiteCont ( map [ string ] interface { } { "`ddw_id`" : departSionWeightCont . Id } , editCont )
if err == nil {
isTrue = true
}
} else {
//不存在,进行新增
var addCont modelskpi . DepartmentDimensionWeight
groupId , _ := strconv . ParseInt ( group , 10 , 64 )
addCont . Group = groupId
derpatmentId , _ := strconv . ParseInt ( derpatment , 10 , 64 )
addCont . DepartmentId = derpatmentId
dimensionId , _ := strconv . ParseInt ( dimension , 10 , 64 )
addCont . Dimension = dimensionId
targetId , _ := strconv . ParseInt ( target , 10 , 64 )
addCont . Target = targetId
addCont . Weight = score
addCont . Addtime = time . Now ( ) . Unix ( )
addCont . Type = class
addCont . Hierarchy = 2
err = overall . CONSTANT_DB_KPI . Create ( & addCont ) . Error
if err == nil {
isTrue = true
}
}
} else {
//写入纬度操作
var departSionWeightCont modelskpi . DepartmentDimensionWeight
err := departSionWeightCont . GetCont ( map [ string ] interface { } { "`ddw_hierarchy`" : 1 , "`ddw_group`" : group , "`ddw_derpatment`" : derpatment , "`ddw_dimension`" : dimension } , "`ddw_id`" )
if err == nil {
//存在,进行更新
editCont := publicmethod . MapOut [ string ] ( )
editCont [ "ddw_time" ] = time . Now ( ) . Unix ( )
editCont [ "ddw_weight" ] = score
err = departSionWeightCont . EiteCont ( map [ string ] interface { } { "`ddw_id`" : departSionWeightCont . Id } , editCont )
if err == nil {
isTrue = true
}
} else {
//不存在,进行新增
var addCont modelskpi . DepartmentDimensionWeight
groupId , _ := strconv . ParseInt ( group , 10 , 64 )
addCont . Group = groupId
derpatmentId , _ := strconv . ParseInt ( derpatment , 10 , 64 )
addCont . DepartmentId = derpatmentId
dimensionId , _ := strconv . ParseInt ( dimension , 10 , 64 )
addCont . Dimension = dimensionId
addCont . Target = 0
addCont . Weight = score
addCont . Addtime = time . Now ( ) . Unix ( )
addCont . Type = 1
addCont . Hierarchy = 1
err = overall . CONSTANT_DB_KPI . Create ( & addCont ) . Error
if err == nil {
isTrue = true
}
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 14 16 : 01 : 02
@ 功能 : 查看部门考核方案详情
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) LookSchemeForDeparment ( c * gin . Context ) {
var receivedValue publicmethod . PublicId
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if receivedValue . Id == "" {
publicmethod . Result ( 1 , err , c , "未知方案编号!不可操作" )
return
}
var schemeCont modelskpi . PlanVersio
err = schemeCont . GetCont ( map [ string ] interface { } { "`key`" : receivedValue . Id } )
if err != nil {
publicmethod . Result ( 1 , err , c , "未知方案编号!不可操作" )
return
}
var planVersioInfo [ ] AddDutyNewCont
jsonErr := json . Unmarshal ( [ ] byte ( schemeCont . Content ) , & planVersioInfo )
if jsonErr != nil {
publicmethod . Result ( 1 , err , c , "未知方案!不可操作" )
return
}
var sendContList [ ] SchemeCont
for _ , dv := range planVersioInfo {
for _ , v := range dv . Child {
if v . Status == 1 || v . Status == 3 {
var sendCont SchemeCont
sendCont . DimensionId = dv . Id //维度Id
sendCont . DimensionName = dv . Name //维度名称
sendCont . DimensionStandard = float64 ( dv . ZhiFraction ) //维度标准
sendCont . TargetId = v . Id //指标Id
sendCont . TargetName = v . Name //指标名称
sendCont . TargetStandard = float64 ( v . ReferenceScore ) //指标标准
sendCont . Content = v . Content //指标说明
sendCont . Unit = v . Unit //单位
var targetCont modelskpi . EvaluationTarget
targetCont . GetCont ( map [ string ] interface { } { "et_id" : v . Id } , "et_type" )
sendCont . Attribute = targetCont . Type //指标性质 1:定量;2:定性
sendCont . State = v . Status //状态 1:使用;2:禁用;3:观察
sendCont . Cycle = v . Cycles //1:班;2:天;3:周;4:月;5:季度;6:年;7:半年
sendCont . Frequency = v . CycleAttres //频率
sendCont . PlantVersion = schemeCont . Key
sendCont . OrgId = strconv . FormatInt ( schemeCont . Department , 10 )
sendContList = append ( sendContList , sendCont )
}
}
}
publicmethod . Result ( 0 , sendContList , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 17 10 : 46 : 18
@ 功能 : 获取部门考核指标关联得细则
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) LookSchemeBylaws ( c * gin . Context ) {
var receivedValue LookTargetToBylaws
c . ShouldBindJSON ( & receivedValue )
if receivedValue . Id == "" {
publicmethod . Result ( 1 , receivedValue , c , "未知指标!不可操作" )
return
}
if receivedValue . OrgId == "" {
publicmethod . Result ( 1 , receivedValue , c , "未知行政组织!不可操作" )
return
}
if receivedValue . Type == 0 {
receivedValue . Type = 1
}
if receivedValue . Level == 2 {
if receivedValue . PosId == "" {
publicmethod . Result ( 1 , receivedValue , c , "未知岗位!不可操作" )
return
}
} else {
receivedValue . Level = 1
}
var detailedList [ ] modelskpi . TargetDetailedRelationDepartment
gormDb := overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetDetailedRelationDepartment { } ) . Where ( "dt_state = 1 AND dt_parentid = ? AND tddepartment = ? AND tdtype = ? AND `level` = ?" , receivedValue . Id , receivedValue . OrgId , receivedValue . Type , receivedValue . Level )
if receivedValue . Level == 2 && receivedValue . PosId != "" {
gormDb = gormDb . Where ( "postid = ?" , receivedValue . PosId )
}
err := gormDb . Find ( & detailedList ) . Error
if err != nil || len ( detailedList ) < 1 {
publicmethod . Result ( 105 , err , c )
return
}
var sendList [ ] SendTargetToBylaws
for _ , v := range detailedList {
var sendCont SendTargetToBylaws
sendCont . TableId = v . ParentIdSun //
var tableCont modelskpi . QualitativeTarget
tableCont . GetCont ( map [ string ] interface { } { "q_id" : v . ParentIdSun } , "q_title" )
sendCont . TableName = tableCont . Title //
sendCont . TargetId = strconv . FormatInt ( v . Id , 10 ) //
sendCont . TargetName = v . Title //
maxVal := publicmethod . DecimalEs ( float64 ( v . MaxScore ) / 100 , 2 ) //最大分
minVal := publicmethod . DecimalEs ( float64 ( v . MinScore ) / 100 , 2 ) //最小分
if minVal != 0 && maxVal != 0 {
sendCont . Criterion = fmt . Sprintf ( "%v-%v" , minVal , maxVal )
} else if minVal != 0 && maxVal == 0 {
sendCont . Criterion = fmt . Sprintf ( "%v" , minVal )
} else if minVal == 0 && maxVal != 0 {
sendCont . Criterion = fmt . Sprintf ( "%v" , maxVal )
} else {
sendCont . Criterion = ""
}
sendCont . MaxScore = maxVal
sendCont . MinScore = minVal //最小分
sendCont . Unit = v . Company //单位
sendCont . Content = v . Content //指标说明
sendList = append ( sendList , sendCont )
}
//根据维度序号排序
sort . Slice ( sendList , func ( i , j int ) bool {
return sendList [ i ] . TableId < sendList [ j ] . TableId
} )
publicmethod . Result ( 0 , sendList , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 17 11 : 0 9 : 23
@ 功能 : 查看执行人
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GetRunManScheme ( c * gin . Context ) {
var receivedValue LookTargetToBylaws
c . ShouldBindJSON ( & receivedValue )
if receivedValue . Id == "" {
publicmethod . Result ( 1 , receivedValue , c , "未知指标!不可操作" )
return
}
if receivedValue . OrgId == "" {
publicmethod . Result ( 1 , receivedValue , c , "未知行政组织!不可操作" )
return
}
if receivedValue . Type == 0 {
receivedValue . Type = 1
}
if receivedValue . Level == 2 {
if receivedValue . PosId == "" {
publicmethod . Result ( 1 , receivedValue , c , "未知岗位!不可操作" )
return
}
} else {
receivedValue . Level = 1
}
var userKey [ ] int64
gormDb := overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetReport { } ) . Distinct ( "man_key" ) . Where ( "`state` = 1 AND `target_id` = ? AND `department_id` = ? AND `type` = ?" , receivedValue . Id , receivedValue . OrgId , receivedValue . Type )
if receivedValue . Level == 2 && receivedValue . PosId != "" {
gormDb = gormDb . Where ( "`post_id` = ?" , receivedValue . PosId )
}
err := gormDb . Find ( & userKey ) . Error
if err != nil || len ( userKey ) < 1 {
publicmethod . Result ( 105 , err , c )
return
}
var userListCont [ ] modelshr . PersonArchives
err = overall . CONSTANT_DB_HR . Model ( & modelshr . PersonArchives { } ) . Select ( "`key`,`name`,`number`,`company`,`maindeparment`,`icon`,`icon_photo`" ) . Where ( "`emp_type` BETWEEN 1 AND 10 AND `key` IN ?" , userKey ) . Find ( & userListCont ) . Error
if err != nil || len ( userListCont ) < 1 {
publicmethod . Result ( 105 , err , c )
return
}
var userListInfo [ ] RunManCont
for _ , v := range userListCont {
var userInfo RunManCont
userInfo . Id = strconv . FormatInt ( v . Key , 10 )
userInfo . Name = v . Name
userInfo . Number = v . Number
var comCont modelshr . AdministrativeOrganization
comCont . GetCont ( map [ string ] interface { } { "`id`" : v . Company } , "`name`" )
userInfo . Company = comCont . Name
var demperCont modelshr . AdministrativeOrganization
demperCont . GetCont ( map [ string ] interface { } { "`id`" : v . MainDeparment } , "`name`" )
userInfo . Department = demperCont . Name
userInfo . Icon = v . Icon
userInfo . IconBase64 = v . IconPhoto
userListInfo = append ( userListInfo , userInfo )
}
publicmethod . Result ( 0 , userListInfo , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 17 16 : 03 : 16
@ 功能 : 编辑方案指标内容
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) EditSchemeTargetCont ( c * gin . Context ) {
var receivedValue EditSchemeContTarget
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if receivedValue . PlanVersionKey == "" {
publicmethod . Result ( 1 , err , c , "请输入版本号!" )
return
}
if receivedValue . TargetId == "" {
publicmethod . Result ( 1 , err , c , "请输入指标号!" )
return
}
if receivedValue . OrgId == "" {
publicmethod . Result ( 1 , err , c , "请输入行政组织!" )
return
}
eiteData := publicmethod . MapOut [ string ] ( )
eiteData [ "qe_eitetime" ] = time . Now ( ) . Unix ( )
eiteData [ "qe_content" ] = receivedValue . Content
if receivedValue . State > 0 {
// eiteData["qe_state"] = requestData.State
eiteData [ "observer" ] = receivedValue . State
} else {
eiteData [ "qe_state" ] = 2
eiteData [ "observer" ] = 2
}
if len ( receivedValue . Operator ) > 0 {
eiteData [ "qe_operator" ] = strings . Join ( receivedValue . Operator , "," )
}
err = overall . CONSTANT_DB_KPI . Model ( & modelskpi . QualitativeEvaluation { } ) . Where ( "`qe_state` = 1 AND `qe_qual_eval_id` = ? AND `qe_accept_evaluation` = ? AND `qe_target` = ?" , receivedValue . PlanVersionKey , receivedValue . OrgId , receivedValue . TargetId ) . Updates ( eiteData ) . Error
if err != nil {
publicmethod . Result ( 1 , err , c , "数据处理失败!" )
return
} else {
if receivedValue . State != 0 {
eitePlanVersion ( receivedValue . PlanVersionKey , receivedValue . TargetId , receivedValue . State , receivedValue . Content )
}
if len ( receivedValue . Operator ) > 0 {
eiteOperatorPlanVersion ( receivedValue . OrgId , receivedValue . TargetId , receivedValue . Operator )
}
publicmethod . Result ( 0 , err , c )
}
}
// 处理关联人
func eiteOperatorPlanVersion ( orgId , targetId string , operator [ ] string ) {
overTime := time . Now ( ) . Unix ( )
delWher := publicmethod . MapOut [ string ] ( )
delWher [ "target_id" ] = targetId
delWher [ "department_id" ] = orgId
delWher [ "type" ] = 1
var targetReportCont modelskpi . TargetReport
err := targetReportCont . DelCont ( delWher )
if err == nil {
var tarReportContList [ ] modelskpi . TargetReport
var targetDeparcContList [ ] modelskpi . TargetDepartment
err = overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetDepartment { } ) . Where ( "`level` = 1 AND `target_id` = ? AND `department_id` = ?" ) . Find ( & targetDeparcContList ) . Error
if err == nil {
for _ , v := range targetDeparcContList {
dimensId := v . Dimension
if dimensId == 0 && v . TargetId != 0 {
var targetCont modelskpi . EvaluationTarget
targetCont . GetCont ( map [ string ] interface { } { "et_id" : v . TargetId } , "et_dimension" )
dimensId = targetCont . Dimension
}
for _ , opev := range operator {
var tarReportCont modelskpi . TargetReport
tarReportCont . Dimension = dimensId //维度"`
tarReportCont . TargetId = v . TargetId //指标ID"`
tarReportCont . TargetSunId = v . TargetSunId //子目标"`
tarReportCont . TargetBylaws = v . TargetBylaws //指标细则"`
tarReportCont . DepartmentId = v . DepartmentId //部门ID"`
tarReportCont . PostId = v . PostId //岗位ID"`
tarReportCont . Type = v . Level //类型(1:公司级;2:部门级)"`
tarReportCont . State = 1 //状态(1:启用;2:禁用;3:删除)"`
opevInt , _ := strconv . ParseInt ( opev , 10 , 64 )
tarReportCont . ReportPerson = opevInt //上报人"`
if opev != "" {
var userCont modelshr . PersonArchives
userCont . GetCont ( map [ string ] interface { } { "`key`" : opev } , "maindeparment" )
tarReportCont . ManDepartment = userCont . MainDeparment //提报人所在部门"`
}
tarReportCont . Time = overTime //写入时间"`
tarReportCont . Class = v . Class //1:定性考核;2:定量考核"`
tarReportCont . Level = v . Type //类型(1:指标;2:子目标;3:细则)"`
tarReportContList = append ( tarReportContList , tarReportCont )
}
}
}
if len ( tarReportContList ) > 0 {
overall . CONSTANT_DB_KPI . Create ( & tarReportContList )
}
}
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 17 16 : 42 : 39
@ 功能 : 处理方案主体
@ 参数
# key 方案编号
# tarId 指标
# state 状态
# contStr 指标说明
@ 返回值
#
@ 方法原型
#
* /
func eitePlanVersion ( key string , tarId string , state int , contStr string ) {
var planVersioCont modelskpi . PlanVersio
err := planVersioCont . GetCont ( map [ string ] interface { } { "`key`" : key } )
var planContSave [ ] AddDutyNewCont
// fmt.Printf("Plan--------1----------->%v\n", planErr)
if err == nil {
if planVersioCont . Content != "" {
// fmt.Printf("Plan--------2----------->%v\n", planVersioCont)
var planCont [ ] AddDutyNewCont
jsonErrPlan := json . Unmarshal ( [ ] byte ( planVersioCont . Content ) , & planCont )
// fmt.Printf("Plan--------3----------->%v\n", jsonErrPlan)
if jsonErrPlan == nil {
for _ , v := range planCont {
var saveCont AddDutyNewCont
saveCont . Id = v . Id
saveCont . Name = v . Name
saveCont . ZhiFraction = v . ZhiFraction
for _ , cv := range v . Child {
var chidCont EvaluPross
if cv . Id == tarId {
chidCont . Id = cv . Id
chidCont . Name = cv . Name // `json:"name"`
chidCont . Content = contStr // `json:"content"` //指标说明
chidCont . Unit = cv . Unit // `json:"unit"` //单位"`
chidCont . ReferenceScore = cv . ReferenceScore // `json:"referencescore"` //标准分值"`
chidCont . Cycles = cv . Cycles // `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"`
chidCont . CycleAttres = cv . CycleAttres // `json:"cycleattr"` //辅助计数"`
chidCont . State = state // `json:"state"`
chidCont . Score = cv . Score // `json:"score"` //分数
chidCont . QualEvalId = cv . QualEvalId // `json:"qeid"`
chidCont . Status = state // `json:"status"`
} else {
chidCont . Id = cv . Id
chidCont . Name = cv . Name // `json:"name"`
chidCont . Content = cv . Content // `json:"content"` //指标说明
chidCont . Unit = cv . Unit // `json:"unit"` //单位"`
chidCont . ReferenceScore = cv . ReferenceScore // `json:"referencescore"` //标准分值"`
chidCont . Cycles = cv . Cycles // `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"`
chidCont . CycleAttres = cv . CycleAttres // `json:"cycleattr"` //辅助计数"`
chidCont . State = cv . State // `json:"state"`
chidCont . Score = cv . Score // `json:"score"` //分数
chidCont . QualEvalId = cv . QualEvalId // `json:"qeid"`
chidCont . Status = cv . Status // `json:"status"`
}
saveCont . Child = append ( saveCont . Child , chidCont )
}
planContSave = append ( planContSave , saveCont )
}
}
}
}
// fmt.Printf("Plan--------4----------->%v\n", len(planContSave))
if len ( planContSave ) > 0 {
planContInfo , planJsonErr := json . Marshal ( planContSave )
if planJsonErr == nil {
eitaData := publicmethod . MapOut [ string ] ( )
eitaData [ "content" ] = string ( planContInfo )
eitaData [ "eitetime" ] = time . Now ( ) . Unix ( )
overall . CONSTANT_DB_KPI . Model ( & modelskpi . PlanVersio { } ) . Where ( "`key` = ?" , key ) . Updates ( eitaData )
}
}
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 19 0 9 : 18 : 39
@ 功能 : 删除考核方案指标
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) DelSchemeTargetCont ( c * gin . Context ) {
var receivedValue DelSchemeContTarget
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if receivedValue . PlanVersionKey == "" {
publicmethod . Result ( 1 , err , c , "请输入版本号!" )
return
}
if receivedValue . TargetId == "" {
publicmethod . Result ( 1 , err , c , "请输入指标号!" )
return
}
if receivedValue . OrgId == "" {
publicmethod . Result ( 1 , err , c , "请输入行政组织!" )
return
}
eiteData := publicmethod . MapOut [ string ] ( )
eiteData [ "qe_eitetime" ] = time . Now ( ) . Unix ( )
eiteData [ "qe_state" ] = 3
err = overall . CONSTANT_DB_KPI . Model ( & modelskpi . QualitativeEvaluation { } ) . Where ( "`qe_state` = 1 AND `qe_qual_eval_id` = ? AND `qe_accept_evaluation` = ? AND `qe_target` = ?" , receivedValue . PlanVersionKey , receivedValue . OrgId , receivedValue . TargetId ) . Updates ( eiteData ) . Error
if err != nil {
publicmethod . Result ( 1 , err , c , "数据处理失败!" )
return
} else {
delPlanVersion ( receivedValue . PlanVersionKey , receivedValue . TargetId )
delOperatorPlanVersion ( receivedValue . OrgId , receivedValue . TargetId )
}
}
/ * *
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 19 0 9 : 27 : 02
@ 功能 : 软删除关联人
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
// 处理关联人
func delOperatorPlanVersion ( orgId , targetId string ) {
delWher := publicmethod . MapOut [ string ] ( )
delWher [ "target_id" ] = targetId
delWher [ "department_id" ] = orgId
delWher [ "type" ] = 1
var targetReportCont modelskpi . TargetReport
targetReportCont . DelCont ( delWher )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 19 0 9 : 24 : 21
@ 功能 : 删除方案指标
@ 参数
# key 方案编号
# tarId 指标
@ 返回值
#
@ 方法原型
#
* /
func delPlanVersion ( key string , tarId string ) {
var planVersioCont modelskpi . PlanVersio
err := planVersioCont . GetCont ( map [ string ] interface { } { "`key`" : key } )
var planContSave [ ] AddDutyNewCont
// fmt.Printf("Plan--------1----------->%v\n", planErr)
if err == nil {
if planVersioCont . Content != "" {
// fmt.Printf("Plan--------2----------->%v\n", planVersioCont)
var planCont [ ] AddDutyNewCont
jsonErrPlan := json . Unmarshal ( [ ] byte ( planVersioCont . Content ) , & planCont )
// fmt.Printf("Plan--------3----------->%v\n", jsonErrPlan)
if jsonErrPlan == nil {
for _ , v := range planCont {
var saveCont AddDutyNewCont
saveCont . Id = v . Id
saveCont . Name = v . Name
saveCont . ZhiFraction = v . ZhiFraction
for _ , cv := range v . Child {
var chidCont EvaluPross
if cv . Id != tarId {
chidCont . Id = cv . Id
chidCont . Name = cv . Name // `json:"name"`
chidCont . Content = cv . Content // `json:"content"` //指标说明
chidCont . Unit = cv . Unit // `json:"unit"` //单位"`
chidCont . ReferenceScore = cv . ReferenceScore // `json:"referencescore"` //标准分值"`
chidCont . Cycles = cv . Cycles // `json:"cycle"` //1:班;2:天;3:周;4:月;5:季度;6:年"`
chidCont . CycleAttres = cv . CycleAttres // `json:"cycleattr"` //辅助计数"`
chidCont . State = cv . State // `json:"state"`
chidCont . Score = cv . Score // `json:"score"` //分数
chidCont . QualEvalId = cv . QualEvalId // `json:"qeid"`
chidCont . Status = cv . Status // `json:"status"`
}
saveCont . Child = append ( saveCont . Child , chidCont )
}
planContSave = append ( planContSave , saveCont )
}
}
}
}
// fmt.Printf("Plan--------4----------->%v\n", len(planContSave))
if len ( planContSave ) > 0 {
planContInfo , planJsonErr := json . Marshal ( planContSave )
if planJsonErr == nil {
eitaData := publicmethod . MapOut [ string ] ( )
eitaData [ "content" ] = string ( planContInfo )
eitaData [ "eitetime" ] = time . Now ( ) . Unix ( )
overall . CONSTANT_DB_KPI . Model ( & modelskpi . PlanVersio { } ) . Where ( "`key` = ?" , key ) . Updates ( eitaData )
}
}
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 19 10 : 15 : 39
@ 功能 : 获取复制方案详情
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GetCopySchemeCont ( c * gin . Context ) {
var receivedValue publicmethod . PublicId
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if receivedValue . Id == "" {
publicmethod . Result ( 1 , err , c , "未知版本号!" )
return
}
var oldSchemeCont modelskpi . PlanVersio
err = oldSchemeCont . GetCont ( map [ string ] interface { } { "`key`" : receivedValue . Id } )
if err != nil {
publicmethod . Result ( 105 , err , c )
return
}
var copyCont CopySchemeCont
copyCont . OrgId = strconv . FormatInt ( oldSchemeCont . Department , 10 )
copyCont . Year = fmt . Sprintf ( "%v" , oldSchemeCont . Year )
if oldSchemeCont . Content != "" {
var planCont [ ] AddDutyNewCont
jsonErrPlan := json . Unmarshal ( [ ] byte ( oldSchemeCont . Content ) , & planCont )
if jsonErrPlan == nil {
var copyInfoAry [ ] CopyDutyNewCont
for _ , v := range planCont {
var copyInfoXonr CopyDutyNewCont
copyInfoXonr . Id = v . Id //维度ID
copyInfoXonr . Name = v . Name
copyInfoXonr . ZhiFraction = v . ZhiFraction
var displayTargetId [ ] string
for _ , cv := range v . Child {
var copyEvalCont CopyEvaluPross
copyEvalCont . Id = cv . Id //`json:"id"` //指标ID
if publicmethod . IsInTrue [ string ] ( cv . Id , displayTargetId ) == false {
displayTargetId = append ( displayTargetId , cv . Id )
}
var tarGetContent modelskpi . EvaluationTarget
tarGetContentErr := tarGetContent . GetCont ( map [ string ] interface { } { "et_id" : cv . Id } , "et_title" )
if tarGetContentErr == nil {
copyEvalCont . Name = tarGetContent . Title
} else {
copyEvalCont . Name = cv . Name //`json:"name"`
}
copyEvalCont . Content = cv . Content //`json:"content"` //指标说明
copyEvalCont . Unit = cv . Unit //`json:"unit"` //单位"`
copyEvalCont . ReferenceScore = cv . ReferenceScore //`json:"referencescore"` //标准分值"`
if cv . Status == 0 {
copyEvalCont . State = 2
} else {
copyEvalCont . State = cv . Status //`json:"state"`
}
copyEvalCont . Istrue = 2 //`json:"istrue"` //是否允许修改
copyInfoXonr . Child = append ( copyInfoXonr . Child , copyEvalCont )
}
byTargetList , _ := HaveDepartBaseTarget ( displayTargetId , oldSchemeCont . Department , 1 )
if len ( byTargetList ) > 0 {
for _ , cecfv := range byTargetList {
var copyEvalCont CopyEvaluPross
copyEvalCont . Id = cecfv . Id
copyEvalCont . Name = cecfv . Name
copyEvalCont . Content = cecfv . Content
copyEvalCont . Unit = cecfv . Unit
copyEvalCont . ReferenceScore = 0
copyEvalCont . State = cecfv . State
copyEvalCont . Istrue = cecfv . IsTrue
copyInfoXonr . Child = append ( copyInfoXonr . Child , copyEvalCont )
}
}
copyInfoAry = append ( copyInfoAry , copyInfoXonr )
}
copyCont . Child = copyInfoAry
}
}
publicmethod . Result ( 0 , copyCont , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 19 13 : 23 : 59
@ 功能 : 获取部门管理的指标
@ 参数
# targetId 指标ID
# orgId 行政组织
# attribute 类型 ( 1 : 指标 ; 2 : 子目标 ; 3 : 细则 )
# level 级别 ( 1 : 部门级 ; 2 : 岗位级 )
@ 返回值
#
@ 方法原型
#
* /
func HaveDepartBaseTarget ( targetId [ ] string , orgId int64 , level int ) ( contAry [ ] DepartTargetList , err error ) {
var targetIdList [ ] int64
gormDb := overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetDepartment { } ) . Distinct ( "`target_id`" ) . Where ( "`state` = 1 AND `level` = ? AND `department_id` = ?" , level , orgId )
if len ( targetId ) > 0 {
gormDb = gormDb . Not ( map [ string ] interface { } { "target_id" : targetId } )
}
err = gormDb . Find ( & targetIdList ) . Error
if err != nil || len ( targetIdList ) < 1 {
return
}
var targetListCont [ ] modelskpi . EvaluationTarget
err = overall . CONSTANT_DB_KPI . Where ( "`et_state` = 1 AND `et_id` IN ?" , targetIdList ) . Find ( & targetListCont ) . Error
if err != nil || len ( targetListCont ) < 1 {
return
}
for _ , e_v := range targetListCont {
var cont DepartTargetList
cont . Id = strconv . FormatInt ( e_v . Id , 10 )
cont . Name = e_v . Title
cont . Content = ""
cont . Unit = e_v . Uniteing
cont . State = e_v . State
cont . ReferenceScore = 0
cont . IsTrue = 2
contAry = append ( contAry , cont )
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 04 - 19 15 : 12 : 26
@ 功能 : 获取新增方案内容方案详情
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GetAddSchemeCont ( c * gin . Context ) {
var receivedValue publicmethod . PublicId
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if receivedValue . Id == "" {
publicmethod . Result ( 1 , err , c , "未知行政组织!" )
return
}
var targetIdList [ ] int64
gormDb := overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetDepartment { } ) . Distinct ( "`target_id`" ) . Where ( "`state` = 1 AND `level` = 1 AND `department_id` = ?" , receivedValue . Id )
err = gormDb . Find ( & targetIdList ) . Error
if err != nil || len ( targetIdList ) < 1 {
return
}
var targetListCont [ ] modelskpi . EvaluationTarget
err = overall . CONSTANT_DB_KPI . Where ( "`et_state` = 1 AND `et_id` IN ?" , targetIdList ) . Find ( & targetListCont ) . Error
if err != nil || len ( targetListCont ) < 1 {
return
}
var dimensionId [ ] int64
var dimListInfo [ ] dimListCont
var tagetList [ ] targetListInfo
for _ , e_v := range targetListCont {
if ! publicmethod . IsInTrue [ int64 ] ( e_v . Dimension , dimensionId ) {
dimensionId = append ( dimensionId , e_v . Dimension )
var dimInfo modelskpi . DutyClass
dimInfo . GetCont ( map [ string ] interface { } { "`id`" : e_v . Dimension } , "`title`" )
var dimCont dimListCont
dimCont . Id = strconv . FormatInt ( e_v . Dimension , 10 )
dimCont . Name = dimInfo . Title
dimListInfo = append ( dimListInfo , dimCont )
}
var tarCont targetListInfo
tarCont . Id = strconv . FormatInt ( e_v . Id , 10 )
tarCont . Name = e_v . Title
tarCont . Dimension = strconv . FormatInt ( e_v . Dimension , 10 )
tagetList = append ( tagetList , tarCont )
}
if len ( dimListInfo ) < 1 {
publicmethod . Result ( 105 , err , c )
return
}
var schemeInfo [ ] outNewScheme
for _ , v := range dimListInfo {
var schemeCont outNewScheme
schemeCont . Id = v . Id
schemeCont . Name = v . Name
if len ( tagetList ) > 0 {
var sunCont [ ] outNewSchemeTar
for _ , sv := range tagetList {
if sv . Dimension == v . Id {
var sunInfo outNewSchemeTar
sunInfo . Id = sv . Id
sunInfo . Name = sv . Name
sunCont = append ( sunCont , sunInfo )
}
}
if len ( sunCont ) > 0 {
schemeCont . Child = sunCont
}
}
schemeInfo = append ( schemeInfo , schemeCont )
}
publicmethod . Result ( 0 , schemeInfo , c )
}