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"
"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 , 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 {
//维度操作
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 )
//获取定性指标得关联关系
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
}