package postpc
import (
"fmt"
"key_performance_indicators/api/version1/departmentseting/departmentpc"
"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"
)
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 20 0 8 : 46 : 24
@ 功能 : 根据指标获取细则列表
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GetDetailsList ( c * gin . Context ) {
var receivedValue GetPostDetails
c . ShouldBindJSON ( & receivedValue )
if receivedValue . TargetId == "" {
publicmethod . Result ( 1 , receivedValue , c , "未知指标!请指定!" )
return
}
var idList [ ] int64
var detCont modelskpi . PostTargetDetails
gormDb := overall . CONSTANT_DB_KPI . Table ( fmt . Sprintf ( "%s dt" , detCont . TableName ( ) ) ) . Distinct ( "dt.id" ) . Where ( "dt.state BETWEEN 1 AND 2 AND dt.parentid = ?" , receivedValue . TargetId )
if receivedValue . Cycle != 0 {
gormDb = gormDb . Where ( "dt.`cycle` = ?" , receivedValue . Cycle )
}
if len ( receivedValue . Inspect ) > 0 {
var sqlOrStr string
for ti , tv := range receivedValue . Inspect {
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 . PostList ) > 0 {
gormDb = gormDb . Joins ( "LEFT JOIN `target_department` `td` on td.target_id = dt.parentid AND td.target_sun_id = dt.parentid_sun AND td.target_bylaws = dt.id" ) . Where ( "td.`type` = 3 AND td.`state` BETWEEN 1 AND 2 AND td.`level` = 2 AND td.post_id IN ?" , receivedValue . PostList )
}
err := gormDb . Find ( & idList ) . Error
if err != nil || len ( idList ) < 1 {
publicmethod . Result ( 107 , err , c )
return
}
var listCont [ ] modelskpi . PostTargetDetails
err = overall . CONSTANT_DB_KPI . Where ( "`id` IN ?" , idList ) . Order ( "parentid desc, parentid_sun" ) . Find ( & listCont ) . Error
if err != nil || len ( listCont ) < 1 {
publicmethod . Result ( 107 , err , c )
return
}
var sendContList [ ] OutPostDetailsCont
var lastSunTable int64
jishuqi := 1
for _ , v := range listCont {
var sendCont OutPostDetailsCont
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 . ParetmentPost = v . ParetmentPost //接受考核的部门岗位"`
sendCont . Reportary = v . Reportary //提报人"`
sendCont . Punishmode = v . Punishmode //(处罚方式 1:扣分;2:现金处罚;3:扣分加现金"`
sendCont . Maxmoney = v . Maxmoney //最高罚款"`
sendCont . Minmoney = v . Minmoney //最低罚款"`
if v . MinScore != 0 && v . MaxScore != 0 {
sendCont . Standard = fmt . Sprintf ( "%v-%v" , float64 ( v . MinScore ) / 100 , float64 ( v . MaxScore ) / 100 )
} else if v . MinScore == 0 && v . MaxScore != 0 {
sendCont . Standard = fmt . Sprintf ( "%v" , float64 ( v . MaxScore ) / 100 )
} else if v . MinScore != 0 && v . MaxScore == 0 {
sendCont . Standard = fmt . Sprintf ( "%v" , float64 ( v . MinScore ) / 100 )
} else {
sendCont . Standard = ""
}
if v . Minmoney != 0 && v . Maxmoney != 0 {
sendCont . Forfeit = fmt . Sprintf ( "%v-%v元" , float64 ( v . Minmoney ) / 100 , float64 ( v . Maxmoney ) / 100 )
} else if v . Minmoney == 0 && v . Maxmoney != 0 {
sendCont . Forfeit = fmt . Sprintf ( "%v元" , float64 ( v . Maxmoney ) / 100 )
} else if v . Minmoney != 0 && v . Maxmoney == 0 {
sendCont . Forfeit = fmt . Sprintf ( "%v元" , float64 ( v . Minmoney ) / 100 )
} else {
sendCont . Forfeit = ""
}
var sonTargetCont modelskpi . PostSonTarget
sonTargetCont . GetCont ( map [ string ] interface { } { "id" : v . ParentIdSun } , "title" )
sendCont . ColumnName = sonTargetCont . Title
sendContList = append ( sendContList , sendCont )
}
publicmethod . Result ( 0 , sendContList , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 20 14 : 37 : 30
@ 功能 : 获取岗位指标关联部门相关岗位及提报人 ( 新版 )
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GetNewTargetAboutDepartToPostMan ( 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 ( 101 , receivedValue , c )
return
}
var postTargetCont modelskpi . PostTarget
err = postTargetCont . GetCont ( map [ string ] interface { } { "`id`" : receivedValue . Id } )
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
//获取指标关联的岗位
// var postId []int64
// err = overall.CONSTANT_DB_KPI.Model(&modelskpi.TargetDepartment{}).Distinct("`post_id`").Where("`state` = 1 AND `type` = 1 AND `level` = 2 AND `target_id` = ? AND `target_sun_id` = 0 AND `target_bylaws` = 0", postTargetCont.Id).Find(&postId).Error
// if err != nil && len(postId) < 1 {
// publicmethod.Result(107, err, c)
// return
// }
// var orgId []int64
// err = overall.CONSTANT_DB_KPI.Model(&modelskpi.TargetDepartment{}).Distinct("`department_id`").Where("`state` = 1 AND `type` = 1 AND `level` = 2 AND `target_id` = ? AND `target_sun_id` = 0 AND `target_bylaws` = 0", postTargetCont.Id).Find(&orgId).Error
// if err != nil && len(orgId) < 1 {
// publicmethod.Result(107, err, c)
// return
// }
var sendCont OutTargetDepatPostMan
var tarDepatContList [ ] modelskpi . TargetDepartment
err = overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetDepartment { } ) . Select ( "`department_id`,`post_id`" ) . Where ( "`state` = 1 AND `type` = 1 AND `level` = 2 AND `target_id` = ? AND `target_sun_id` = 0 AND `target_bylaws` = 0" , postTargetCont . Id ) . Find ( & tarDepatContList ) . Error
if err != nil && len ( tarDepatContList ) < 1 {
publicmethod . Result ( 107 , err , c )
return
}
for _ , v := range tarDepatContList {
orgIdstr := strconv . FormatInt ( v . DepartmentId , 10 )
if publicmethod . IsInTrue [ string ] ( orgIdstr , sendCont . OrgId ) == false {
sendCont . OrgId = append ( sendCont . OrgId , orgIdstr )
}
postIdstr := strconv . FormatInt ( v . PostId , 10 )
if publicmethod . IsInTrue [ string ] ( postIdstr , sendCont . PostId ) == false {
sendCont . PostId = append ( sendCont . PostId , postIdstr )
}
var orgPostInfo OrgPostCont
orgPostInfo . Id = postIdstr
orgPostInfo . OrgId = orgIdstr
var postInfo modelshr . Position
postInfo . GetCont ( map [ string ] interface { } { "`id`" : v . PostId } , "`name`" )
_ , _ , departmentId , sunDepartId , workShopId := publicmethod . GetOrgStructure ( v . DepartmentId )
fmt . Printf ( "%v------->%v------->%v\n" , departmentId , sunDepartId , workShopId )
if departmentId != 0 && sunDepartId != 0 && workShopId != 0 {
if departmentId != workShopId && sunDepartId != workShopId && departmentId != sunDepartId {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v/%v/%v" , getOrgCont ( departmentId ) , getOrgCont ( sunDepartId ) , getOrgCont ( workShopId ) , postInfo . Name )
} else if departmentId != workShopId && sunDepartId != workShopId && departmentId == sunDepartId {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v/%v" , getOrgCont ( departmentId ) , getOrgCont ( sunDepartId ) , postInfo . Name )
} else {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v" , getOrgCont ( departmentId ) , postInfo . Name )
}
} else if departmentId != 0 && sunDepartId != 0 && workShopId == 0 {
if departmentId != sunDepartId {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v/%v" , getOrgCont ( departmentId ) , getOrgCont ( sunDepartId ) , postInfo . Name )
} else {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v" , getOrgCont ( departmentId ) , postInfo . Name )
}
} else {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v" , getOrgCont ( departmentId ) , postInfo . Name )
}
orgPostInfo . KeyList , orgPostInfo . Child = GetReportAndAllDepartMan ( postTargetCont . Id , 0 , 0 , 0 , v . PostId , departmentId , 2 , 1 )
sendCont . OrgAndPostList = append ( sendCont . OrgAndPostList , orgPostInfo )
}
publicmethod . Result ( 0 , sendCont , c )
}
//获取提报人及本部门所有人
/ *
# targetId 指标
# tableId 栏目
# detailsId 细则
# departId 行政组织
# postId 岗位
# mainDepart 主部门
# types 类型 ( 1 : 公司级 ; 2 : 部门级 )
# levels 1 : 指标 ; 2 : 子目标 ; 3 : 细则
* /
func GetReportAndAllDepartMan ( targetId , tableId , detailsId , departId , postId , mainDepart int64 , types , levels int ) ( repostKey [ ] string , departMan * [ ] OrgPostCont ) {
gormDb := overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetReport { } ) . Distinct ( "`man_key`" ) . Where ( "`state` = 1 AND `target_id` = ? AND `target_sun_id` = ? AND `target_bylaws` = ?" , targetId , tableId , detailsId )
if departId != 0 {
gormDb = gormDb . Where ( "department_id = ?" , departId )
}
if postId != 0 {
gormDb = gormDb . Where ( "post_id = ?" , postId )
}
err := gormDb . Find ( & repostKey ) . Error
if err != nil {
}
var allOrgId [ ] int64
allOrgId = publicmethod . GetDepartmentSun ( mainDepart , allOrgId )
if publicmethod . IsInTrue [ int64 ] ( mainDepart , allOrgId ) == false {
allOrgId = append ( allOrgId , mainDepart )
}
var manContList [ ] modelshr . PersonArchives
err = overall . CONSTANT_DB_HR . Model ( & modelshr . PersonArchives { } ) . Select ( "`id`,`number`,`name`,`key`" ) . Where ( "`emp_type` BETWEEN 1 AND 10 AND `admin_org` IN ?" , allOrgId ) . Find ( & manContList ) . Error
if err == nil {
var allPeople [ ] OrgPostCont
for _ , v := range manContList {
var manCont OrgPostCont
manCont . Id = strconv . FormatInt ( v . Key , 10 )
manCont . Number = v . Number
manCont . Name = v . Name
allPeople = append ( allPeople , manCont )
}
departMan = & allPeople
}
// fmt.Printf("allOrgId------------------->%v\n", manContList)
return
}
// 获取行政组织信息
func getOrgCont ( id int64 ) ( orgCont string ) {
var orgInfo modelshr . AdministrativeOrganization
orgInfo . GetCont ( map [ string ] interface { } { "`id`" : id } )
orgCont = orgInfo . Name
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 20 16 : 29 : 27
@ 功能 : 根据指标获取岗位指标栏目
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) TableBasePostTarget ( 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 ( 101 , receivedValue , c )
return
}
var postTargetCont modelskpi . PostTarget
err = postTargetCont . GetCont ( map [ string ] interface { } { "`id`" : receivedValue . Id } , "`id`" , "`title`" )
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
// var tableId []int64
// var detCont modelskpi.PostSonTarget
// err = overall.CONSTANT_DB_KPI..Table(fmt.Sprintf("%s dt", detCont.TableName())).Distinct("dt.`id`")
var postTableContList [ ] modelskpi . PostSonTarget
err = overall . CONSTANT_DB_KPI . Where ( "`state` = 1 AND `parent_id` = ?" , receivedValue . Id ) . Find ( & postTableContList ) . Error
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
publicmethod . Result ( 0 , postTableContList , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 21 13 : 36 : 36
@ 功能 : 根据指标添加细则列表
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) AddDetailsList ( c * gin . Context ) {
var receivedValue AddPostDetails
c . ShouldBindJSON ( & receivedValue )
if receivedValue . TargetId == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if receivedValue . TableName == "" {
publicmethod . Result ( 1 , receivedValue , c , "未知栏目!请选择或输入栏目!" )
return
}
iswrite := true
if len ( receivedValue . DetailsList ) < 1 {
publicmethod . Result ( 1 , receivedValue , c , "至少要有一条细则!" )
return
} else {
for _ , v := range receivedValue . DetailsList {
if v . Title == "" {
iswrite = false
break
}
switch v . PunishType {
case 2 :
if v . CashStandard == "" {
iswrite = false
break
} else {
testInt := strings . Split ( v . CashStandard , "-" )
testLen := len ( testInt )
_ , oenErr := strconv . ParseFloat ( testInt [ 0 ] , 10 )
if oenErr != nil {
iswrite = false
break
} else {
if testLen > 1 {
_ , twoErr := strconv . ParseFloat ( testInt [ testLen - 1 ] , 10 )
if twoErr != nil {
iswrite = false
break
}
}
}
}
case 3 :
if v . CashStandard == "" || v . Standard == "" {
iswrite = false
break
} else {
testInt := strings . Split ( v . CashStandard , "-" )
testLen := len ( testInt )
_ , oenErr := strconv . ParseFloat ( testInt [ 0 ] , 10 )
if oenErr != nil {
iswrite = false
break
} else {
if testLen > 1 {
_ , twoErr := strconv . ParseFloat ( testInt [ testLen - 1 ] , 10 )
if twoErr != nil {
iswrite = false
break
}
}
}
testIntTwo := strings . Split ( v . Standard , "-" )
testLenTwo := len ( testIntTwo )
_ , oenErrTwo := strconv . ParseFloat ( testIntTwo [ 0 ] , 10 )
if oenErrTwo != nil {
iswrite = false
break
} else {
if testLenTwo > 1 {
_ , twoErr := strconv . ParseFloat ( testIntTwo [ testLenTwo - 1 ] , 10 )
if twoErr != nil {
iswrite = false
break
}
}
}
}
default :
if v . Standard == "" {
iswrite = false
break
} else {
testInt := strings . Split ( v . Standard , "-" )
testLen := len ( testInt )
_ , oenErr := strconv . ParseFloat ( testInt [ 0 ] , 10 )
if oenErr != nil {
iswrite = false
break
} else {
if testLen > 1 {
_ , twoErr := strconv . ParseFloat ( testInt [ testLen - 1 ] , 10 )
if twoErr != nil {
iswrite = false
break
}
}
}
}
}
if len ( v . Inspemethod ) < 1 {
iswrite = false
break
}
}
}
if ! iswrite {
publicmethod . Result ( 1 , receivedValue , c , "至少有一条细则内容填写不规范!请检查!" )
return
}
var targetCont modelskpi . PostTarget
err := targetCont . GetCont ( map [ string ] interface { } { "`id`" : receivedValue . TargetId } )
if err != nil {
publicmethod . Result ( 1 , receivedValue , c , "指标不存在!不允许添加细则内容!" )
return
}
orgList , postList , manList , orgPost , orgPostMan := GetTargetBaseDepartMan ( targetCont . Id )
tableId , err := EditPostTableCont ( targetCont . Id , receivedValue . TableName )
if err != nil {
publicmethod . Result ( 1 , receivedValue , c , "没有栏目信息!栏目添加失败!请重新提交!" )
return
}
var tableDepartList [ ] string
var tablePostList [ ] string
var tableDepartPost [ ] OrgAndPostCont
var tableDepartPostMan [ ] OrgAndPostManCont
//处理岗位细则内容
for _ , v := range receivedValue . DetailsList {
var targetDetailsInfo modelskpi . PostTargetDetails
targetDetailsInfo . Title = v . Title //指标细则"`
targetDetailsInfo . Content = v . Remarks //指标说明"`
targetDetailsInfo . ParentId = targetCont . Id //归属指标栏目"`
targetDetailsInfo . ParentIdSun = tableId //归属指标子栏目"`
targetDetailsInfo . State = 1 //状态(1:启用;2:禁用;3:删除)"`
targetDetailsInfo . AddTime = time . Now ( ) . Unix ( ) //制定时间"`
targetDetailsInfo . MinScore , targetDetailsInfo . MaxScore = departmentpc . SplitCriteria ( v . Standard ) //最小分*100保存"` && 最大分*100保存"`
targetDetailsInfo . Company = v . Unit //单位"`
targetDetailsInfo . AddReduce = v . Types //1:减少;2:增加;3:无属性,现场确认加或减"`
targetDetailsInfo . CensorType = strings . Join ( v . Inspemethod , "," ) //检查方式"`
targetDetailsInfo . CensorCont = v . Evidence //检查依据"`
targetDetailsInfo . CensorRate = v . Frequency //检查频次"`
targetDetailsInfo . Cycles = v . Cycle //1:班;2:天;3:周;4:月;5:季度;6:年"`
targetDetailsInfo . CycleAttres = 1 //辅助计数"`
if len ( v . PostandExport ) > 0 {
orgList , postList , manList , orgPost , orgPostMan = HandleOrgOfPostReportRelation ( v . PostandExport )
// orgListJson, _ := json.Marshal(orgList)
// postListJson, _ := json.Marshal(postList)
// manListJson, _ := json.Marshal(manList)
// orgPostJson, _ := json.Marshal(orgPost)
// orgPostManJson, _ := json.Marshal(orgPostMan)
// fmt.Printf("明细表关联关系--->%v--->%v--->%v--->%v--->%v\n", string(orgListJson), string(postListJson), string(manListJson), string(orgPostJson), string(orgPostManJson))
}
targetDetailsInfo . Paretment = strings . Join ( orgList , "," ) //接受考核的部门"`
targetDetailsInfo . ParetmentPost = strings . Join ( postList , "," ) //接受考核的部门岗位"`
targetDetailsInfo . Reportary = strings . Join ( manList , "," ) //提报人"`
targetDetailsInfo . Punishmode = v . PunishType //处罚方式 1:扣分;2:现金处罚;3:扣分加现金"`
targetDetailsInfo . Minmoney , targetDetailsInfo . Maxmoney = departmentpc . SplitCriteria ( v . CashStandard ) //最高罚款"`&& 最低罚款"`
addErr := overall . CONSTANT_DB_KPI . Create ( & targetDetailsInfo ) . Error //添加指标
if addErr == nil {
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPost ( targetCont . Dimension , targetCont . Id , tableId , targetDetailsInfo . Id , targetCont . Type , 3 , 2 , orgPost )
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPostMan ( targetCont . Dimension , targetCont . Id , tableId , targetDetailsInfo . Id , targetCont . Type , 3 , 2 , orgPostMan )
}
//处理指标关联数据
for _ , ov := range orgList {
if publicmethod . IsInTrue [ string ] ( ov , tableDepartList ) == false {
tableDepartList = append ( tableDepartList , ov )
}
}
for _ , pv := range postList {
if publicmethod . IsInTrue [ string ] ( pv , tablePostList ) == false {
tablePostList = append ( tablePostList , pv )
}
}
for _ , opv := range orgPost {
if JudgeDeparPost ( opv , tableDepartPost ) == false {
tableDepartPost = append ( tableDepartPost , opv )
}
}
for _ , opvm := range orgPostMan {
if JudgeDeparPostMan ( opvm , tableDepartPostMan ) == false {
tableDepartPostMan = append ( tableDepartPostMan , opvm )
}
}
}
// one, _ := json.Marshal(tableDepartList)
// two, _ := json.Marshal(tablePostList)
// three, _ := json.Marshal(tableDepartPost)
// four, _ := json.Marshal(tableDepartPostMan)
// fmt.Printf("栏目明细表关联关系--->%v--->%v--->%v--->%v\n", string(one), string(two), string(three), string(four))
editTabelInfo := publicmethod . MapOut [ string ] ( )
tableDepartStr := strings . Join ( tableDepartList , "," )
editTabelInfo [ "`depart`" ] = tableDepartStr
tablePostStr := strings . Join ( tablePostList , "," )
editTabelInfo [ "`depart_post`" ] = tablePostStr
editTabelInfo [ "`time`" ] = time . Now ( ) . Unix ( )
var editTableCont modelskpi . PostSonTarget
editTableCont . EiteCont ( map [ string ] interface { } { "`id`" : tableId } , editTabelInfo )
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPost ( targetCont . Dimension , targetCont . Id , tableId , 0 , targetCont . Type , 2 , 2 , tableDepartPost )
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPostMan ( targetCont . Dimension , targetCont . Id , tableId , 0 , targetCont . Type , 2 , 2 , tableDepartPostMan )
syncSeting . Wait ( )
publicmethod . Result ( 0 , receivedValue , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 22 0 9 : 41 : 43
@ 功能 : 岗位指标细则关联行政组织及岗位提报人
@ 参数
#
@ 返回值
# dimensionId 维度
# targetId 指标
# tableId 栏目
# bylawsId 细则
# types 类型 ( 1 : 指标 ; 2 : 子目标 ; 3 : 细则 )
# class 属性1 : 定性考核 ; 2 : 定量考核
# level 级别 ( 1 : 部门级 ; 2 : 岗位级 )
# orgPostManList 行政组织与岗位 、 提报人组合
@ 方法原型
#
* /
func PostDetailsBaseOrgPostMan ( dimensionId , targetId , tableId , bylawsId int64 , class , types , level int , orgPostManList [ ] OrgAndPostManCont ) {
defer syncSeting . Done ( )
if types == 0 {
types = 3
}
if class == 0 {
class = 1
}
if level == 0 {
level = 2
}
var orgManList [ ] ReportAry
for _ , opmv := range orgPostManList {
if len ( orgManList ) < 1 {
var orgMAnCont ReportAry
orgMAnCont . OrgId = opmv . OrgId
orgMAnCont . PostId = opmv . PostId
orgMAnCont . ManKey = append ( orgMAnCont . ManKey , opmv . ManKey )
orgManList = append ( orgManList , orgMAnCont )
} else {
isCunz := true
for i , omlv := range orgManList {
if omlv . OrgId == opmv . OrgId && omlv . PostId == opmv . PostId {
if publicmethod . IsInTrue [ int64 ] ( opmv . ManKey , orgManList [ i ] . ManKey ) == false {
orgManList [ i ] . ManKey = append ( orgManList [ i ] . ManKey , opmv . ManKey )
}
isCunz = false
}
}
if isCunz {
var orgMAnCont ReportAry
orgMAnCont . OrgId = opmv . OrgId
orgMAnCont . PostId = opmv . PostId
orgMAnCont . ManKey = append ( orgMAnCont . ManKey , opmv . ManKey )
orgManList = append ( orgManList , orgMAnCont )
}
}
}
// orgManListJson, _ := json.Marshal(orgManList)
// fmt.Printf("岗位指标细则关联行政组织及岗位提报人------>%v\n", string(orgManListJson))
//将不属于该指标细则的部门岗位提报人至禁用
otherSaveData := publicmethod . MapOut [ string ] ( )
otherSaveData [ "`state`" ] = 2
otherSaveData [ "`time`" ] = time . Now ( ) . Unix ( )
for _ , val := range orgManList {
overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetReport { } ) . Where ( "`type_level` = ? AND `target_id` = ? AND `target_sun_id` = ? AND `target_bylaws` = ? AND `type` = ? AND `department_id` = ? AND `post_id` = ?" , types , targetId , tableId , bylawsId , level , val . OrgId , val . PostId ) . Not ( map [ string ] interface { } { "man_key" : val . ManKey } ) . Updates ( & otherSaveData )
}
//处理指标细则提报人问题
for _ , v := range orgPostManList {
//获取评价人部门
var manCont modelshr . PersonArchives
manCont . GetCont ( map [ string ] interface { } { "`key`" : v . ManKey } , "`maindeparment`" )
var tarDepartCont modelskpi . TargetReport
saveErr := tarDepartCont . GetCont ( map [ string ] interface { } { "`type_level`" : types , "`type`" : level , "`target_id`" : targetId , "`target_sun_id`" : tableId , "`target_bylaws`" : bylawsId , "`department_id`" : v . OrgId , "`post_id`" : v . PostId , "`man_key`" : v . ManKey } , "`id`" , "`state`" )
if saveErr == nil {
if tarDepartCont . State != 1 {
tarDepartCont . EiteCont ( map [ string ] interface { } { "`id`" : tarDepartCont . Id } , map [ string ] interface { } { "`state`" : 1 , "`man_department`" : manCont . MainDeparment , "`time`" : time . Now ( ) . Unix ( ) } )
}
} else {
var tarReportContAdd modelskpi . TargetReport
tarReportContAdd . Dimension = dimensionId //维度
tarReportContAdd . TargetId = targetId //指标ID"`
tarReportContAdd . TargetSunId = tableId //子目标"`
tarReportContAdd . TargetBylaws = bylawsId //指标细则"`
tarReportContAdd . DepartmentId = v . OrgId //部门ID"`
tarReportContAdd . PostId = v . PostId //岗位ID"`
tarReportContAdd . Type = level //类型(1:公司级;2:部门级)"`
tarReportContAdd . State = 1 //状态(1:启用;2:禁用;3:删除)"`
tarReportContAdd . ReportPerson = v . ManKey //上报人"`
tarReportContAdd . ManDepartment = manCont . MainDeparment //提报人所在部门"`
tarReportContAdd . Time = time . Now ( ) . Unix ( ) //写入时间"`
tarReportContAdd . Class = class //1:定性考核;2:定量考核"`
tarReportContAdd . Level = types //1:指标;2:子目标;3:细则
overall . CONSTANT_DB_KPI . Create ( & tarReportContAdd )
}
}
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 22 0 8 : 51 : 56
@ 功能 : 岗位指标细则关联行政组织及岗位
@ 参数
# dimensionId 维度
# targetId 指标
# tableId 栏目
# bylawsId 细则
# types 类型 ( 1 : 指标 ; 2 : 子目标 ; 3 : 细则 )
# class 属性1 : 定性考核 ; 2 : 定量考核
# level 级别 ( 1 : 部门级 ; 2 : 岗位级 )
# orgPostList 行政组织与岗位组合
@ 返回值
#
@ 方法原型
#
* /
func PostDetailsBaseOrgPost ( dimensionId , targetId , tableId , bylawsId int64 , class , types , level int , orgPostList [ ] OrgAndPostCont ) {
defer syncSeting . Done ( )
if types == 0 {
types = 3
}
if class == 0 {
class = 1
}
if level == 0 {
level = 2
}
orgPostMap := map [ int64 ] [ ] int64 { }
for _ , ov := range orgPostList {
orgPostMap [ ov . OrgId ] = append ( orgPostMap [ ov . OrgId ] , ov . PostId )
}
//将不属于该指标细则的部门至禁用
otherSaveData := publicmethod . MapOut [ string ] ( )
otherSaveData [ "`state`" ] = 2
otherSaveData [ "`time`" ] = time . Now ( ) . Unix ( )
for key , val := range orgPostMap {
overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetDepartment { } ) . Where ( "`level` = ? AND `target_id` = ? AND `target_sun_id` = ? AND `target_bylaws` = ? AND `type` = ? AND `department_id` = ?" , level , targetId , targetId , bylawsId , types , key ) . Not ( map [ string ] interface { } { "post_id" : val } ) . Updates ( & otherSaveData )
}
//处理新的关联数据
for _ , v := range orgPostList {
var tarDepartCont modelskpi . TargetDepartment
saveErr := tarDepartCont . GetCont ( map [ string ] interface { } { "`level`" : level , "`type`" : types , "`target_id`" : targetId , "`target_sun_id`" : tableId , "`target_bylaws`" : bylawsId , "`department_id`" : v . OrgId , "`post_id`" : v . PostId } , "`id`" , "`state`" )
if saveErr == nil {
if tarDepartCont . State != 1 {
tarDepartCont . EiteCont ( map [ string ] interface { } { "`id`" : tarDepartCont . Id } , map [ string ] interface { } { "`state`" : 1 , "`time`" : time . Now ( ) . Unix ( ) } )
}
} else {
var addTarDepartCont modelskpi . TargetDepartment
addTarDepartCont . Dimension = dimensionId
addTarDepartCont . TargetId = targetId //指标ID"`
addTarDepartCont . TargetSunId = tableId //子目标"`
addTarDepartCont . TargetBylaws = bylawsId //指标细则"`
addTarDepartCont . Type = types //类型(1:指标;2:子目标;3:细则)"`
addTarDepartCont . DepartmentId = v . OrgId //部门ID"`
addTarDepartCont . PostId = v . PostId //岗位ID"`
addTarDepartCont . State = 1 //状态(1:启用;2:禁用;3:删除)"`
addTarDepartCont . Time = time . Now ( ) . Unix ( ) //写入时间"`
addTarDepartCont . Class = class //1:定性考核;2:定量考核"`
addTarDepartCont . Level = level //级别(1:部门级;2:岗位级)"`
overall . CONSTANT_DB_KPI . Create ( & addTarDepartCont )
}
}
}
// 判断岗位是否已经存在
func JudgeDeparPostMan ( orgPostMan OrgAndPostManCont , tableDepartPost [ ] OrgAndPostManCont ) ( isTrue bool ) {
isTrue = false
for _ , v := range tableDepartPost {
if orgPostMan . OrgId == v . OrgId && orgPostMan . PostId == v . PostId && orgPostMan . ManKey == v . ManKey {
isTrue = true
return
}
}
return
}
func JudgeDeparPost ( orgPost OrgAndPostCont , tableDepartPost [ ] OrgAndPostCont ) ( isTrue bool ) {
isTrue = false
for _ , v := range tableDepartPost {
if orgPost . OrgId == v . OrgId && orgPost . PostId == v . PostId {
isTrue = true
return
}
}
return
}
// 获取岗位指标关联得岗位及提报人
/ *
# targetId 指标
* /
func GetTargetBaseDepartMan ( targetId int64 ) ( orgList , postList , manList [ ] string , orgPost [ ] OrgAndPostCont , orgPostMan [ ] OrgAndPostManCont ) {
//获取指标关联行政组织及岗位
var targetDepartList [ ] modelskpi . TargetDepartment
err := overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetDepartment { } ) . Select ( "`department_id`,`post_id`" ) . Where ( "`state` = 1 AND `type` = 1 AND `level` = 2 AND `target_sun_id` = 0 AND `target_bylaws` = 0 AND `target_id` = ?" , targetId ) . Find ( & targetDepartList ) . Error
if err != nil {
for _ , v := range targetDepartList {
var orgPostCont OrgAndPostCont
orgPostCont . OrgId = v . DepartmentId
orgPostCont . PostId = v . PostId
orgPost = append ( orgPost , orgPostCont )
orgStr := strconv . FormatInt ( v . DepartmentId , 10 )
if publicmethod . IsInTrue [ string ] ( orgStr , orgList ) == false {
orgList = append ( orgList , orgStr )
}
postStr := strconv . FormatInt ( v . PostId , 10 )
if publicmethod . IsInTrue [ string ] ( postStr , postList ) == false {
postList = append ( postList , postStr )
}
}
}
//获取指标关联岗位提报人
var targetReportList [ ] modelskpi . TargetReport
err = overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetReport { } ) . Select ( "`department_id`,`post_id`,`man_key`" ) . Where ( "`state` = 1 AND `type_level` = 1 AND `type` = 2 AND `target_sun_id` = 0 AND `target_bylaws` = 0 AND `target_id` = ?" , targetId ) . Find ( & targetReportList ) . Error
if err != nil {
for _ , v := range targetReportList {
var orgPostManCont OrgAndPostManCont
orgPostManCont . OrgId = v . DepartmentId
orgPostManCont . PostId = v . PostId
orgPostManCont . ManKey = v . ReportPerson
orgPostMan = append ( orgPostMan , orgPostManCont )
manStr := strconv . FormatInt ( v . ReportPerson , 10 )
if publicmethod . IsInTrue [ string ] ( manStr , manList ) == false {
manList = append ( manList , manStr )
}
}
}
return
}
// 处理指标细则行政组织与岗位及提报人关系
func HandleOrgOfPostReportRelation ( orgPostManList [ ] OrgPostCont ) ( orgList , postList , manList [ ] string , orgPost [ ] OrgAndPostCont , orgPostMan [ ] OrgAndPostManCont ) {
if len ( orgPostManList ) < 1 {
return
}
for _ , v := range orgPostManList {
if publicmethod . IsInTrue [ string ] ( v . Id , postList ) == false {
var orgPostCont OrgAndPostCont //该细则关联得岗位关系
postList = append ( postList , v . Id )
var postCont modelshr . Position
postCont . GetCont ( map [ string ] interface { } { "`id`" : v . Id } , "`id`" , "administrative_organization" )
orgPostCont . PostId = postCont . Id
orgPostCont . OrgId = postCont . AdministrativeOrganization
orgStr := strconv . FormatInt ( postCont . AdministrativeOrganization , 10 )
if publicmethod . IsInTrue [ string ] ( orgStr , orgList ) == false {
orgList = append ( orgList , orgStr )
}
if len ( v . KeyList ) > 0 {
for _ , kv := range v . KeyList {
if publicmethod . IsInTrue [ string ] ( kv , manList ) == false {
manList = append ( manList , kv )
}
var orgPostManCont OrgAndPostManCont
orgPostManCont . PostId = postCont . Id
orgPostManCont . OrgId = postCont . AdministrativeOrganization
kvInt , _ := strconv . ParseInt ( kv , 10 , 64 )
orgPostManCont . ManKey = kvInt
orgPostMan = append ( orgPostMan , orgPostManCont )
}
}
orgPost = append ( orgPost , orgPostCont )
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 21 15 : 12 : 46
@ 功能 : 处理岗位指标数据
@ 参数
# targetId 指标ID
# title 栏目名称
@ 返回值
# tableId 栏目Id
# err 处理状态
@ 方法原型
#
* /
func EditPostTableCont ( targetId int64 , title string ) ( tableId int64 , err error ) {
var tableCont modelskpi . PostSonTarget
err = tableCont . GetCont ( map [ string ] interface { } { "`title`" : title , "`parent_id`" : targetId } )
if err != nil {
var sunTargetCont modelskpi . PostSonTarget
sunTargetCont . Title = title //标题"`
sunTargetCont . ParentId = targetId //归属指标"`
sunTargetCont . Time = time . Now ( ) . Unix ( ) //创建时间"`
sunTargetCont . State = 1 //状态(1:启用;2:禁用;3:删除)"`
err = overall . CONSTANT_DB_KPI . Create ( & sunTargetCont ) . Error
tableId = sunTargetCont . Id
} else {
tableId = tableCont . Id
editCont := publicmethod . MapOut [ string ] ( )
if tableCont . State != 1 {
editCont [ "state" ] = 1
}
if len ( editCont ) > 0 {
editCont [ "time" ] = time . Now ( ) . Unix ( )
var editInfo modelskpi . PostSonTarget
err = editInfo . EiteCont ( map [ string ] interface { } { "`id`" : tableCont . Id } , editCont )
}
}
return
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 23 0 8 : 15 : 29
@ 功能 : 修改岗位指标细则 ( 新版 )
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) EditPostDetailsCont ( c * gin . Context ) {
var receivedValue EditDetailsCont
c . ShouldBindJSON ( & receivedValue )
if receivedValue . Id == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if receivedValue . Title == "" {
publicmethod . Result ( 1 , receivedValue , c , "请输入考核内容!" )
return
}
if receivedValue . PunishType == 0 {
receivedValue . PunishType = 3
}
switch receivedValue . PunishType {
case 2 :
if receivedValue . CashStandard == "" {
publicmethod . Result ( 1 , receivedValue , c , "请输入现金考核标准!" )
return
}
case 3 :
if receivedValue . Standard == "" {
publicmethod . Result ( 1 , receivedValue , c , "请输入考核标准!" )
return
}
if receivedValue . Unit == "" {
publicmethod . Result ( 1 , receivedValue , c , "请输入计量单位!" )
return
}
if receivedValue . CashStandard == "" {
publicmethod . Result ( 1 , receivedValue , c , "请输入现金考核标准!" )
return
}
default :
if receivedValue . Standard == "" {
publicmethod . Result ( 1 , receivedValue , c , "请输入考核标准!" )
return
}
if receivedValue . Unit == "" {
publicmethod . Result ( 1 , receivedValue , c , "请输入计量单位!" )
return
}
}
if receivedValue . Types == 0 {
receivedValue . Types = 2
}
if len ( receivedValue . Inspemethod ) < 1 {
publicmethod . Result ( 1 , receivedValue , c , "请选择检查方式!" )
return
}
if receivedValue . Cycle == 0 {
receivedValue . Cycle = 4
}
if receivedValue . Frequency == 0 {
receivedValue . Frequency = 1
}
var orgPost [ ] OrgAndPostCont
var orgPostMan [ ] OrgAndPostManCont
var orgList [ ] string
var postList [ ] string
var manList [ ] string
if len ( receivedValue . PostandExport ) < 1 {
publicmethod . Result ( 1 , receivedValue , c , "请设定岗位及提报人!" )
return
} else {
for _ , v := range receivedValue . PostandExport {
var orgPostCont OrgAndPostCont
orgIdInt , _ := strconv . ParseInt ( v . OrgId , 10 , 64 )
orgPostCont . OrgId = orgIdInt
postIdInt , _ := strconv . ParseInt ( v . Id , 10 , 64 )
orgPostCont . PostId = postIdInt
orgPost = append ( orgPost , orgPostCont )
if publicmethod . IsInTrue [ string ] ( v . OrgId , orgList ) == false {
orgList = append ( orgList , v . OrgId )
}
if publicmethod . IsInTrue [ string ] ( v . Id , postList ) == false {
postList = append ( postList , v . Id )
}
if len ( v . Operator ) < 1 {
publicmethod . Result ( 1 , receivedValue , c , "有未设定的岗位提报人!请检查!" )
return
} else {
for _ , mv := range v . Operator {
var orgPostManCont OrgAndPostManCont
orgPostManCont . OrgId = orgIdInt
orgPostManCont . PostId = postIdInt
mvIdInt , _ := strconv . ParseInt ( mv , 10 , 64 )
orgPostManCont . ManKey = mvIdInt
orgPostMan = append ( orgPostMan , orgPostManCont )
if publicmethod . IsInTrue [ string ] ( mv , manList ) == false {
manList = append ( manList , mv )
}
}
}
}
}
wher := publicmethod . MapOut [ string ] ( )
wher [ "`id`" ] = receivedValue . Id
var oldDetailsCont modelskpi . PostTargetDetails
err := oldDetailsCont . GetCont ( wher )
if err != nil {
publicmethod . Result ( 1 , receivedValue , c , "细则不存在!请检查!" )
return
}
editCont := publicmethod . MapOut [ string ] ( )
if receivedValue . Title != oldDetailsCont . Title {
editCont [ "`title`" ] = receivedValue . Title
}
if receivedValue . PunishType != oldDetailsCont . Punishmode {
editCont [ "`punishmode`" ] = receivedValue . PunishType
}
if receivedValue . Standard != "" {
minSecor , MaxSecor := departmentpc . SplitCriteria ( receivedValue . Standard )
if minSecor != oldDetailsCont . MinScore {
editCont [ "`min_score`" ] = minSecor
}
if MaxSecor != oldDetailsCont . MaxScore {
editCont [ "`max_score`" ] = MaxSecor
}
}
if receivedValue . Unit != oldDetailsCont . Company {
editCont [ "`company`" ] = receivedValue . Unit
}
if receivedValue . CashStandard != "" {
minMoneys , MaxMoneys := departmentpc . SplitCriteria ( receivedValue . CashStandard )
if minMoneys != oldDetailsCont . Minmoney {
editCont [ "`minmoney`" ] = minMoneys
}
if MaxMoneys != oldDetailsCont . Maxmoney {
editCont [ "`maxmoney`" ] = MaxMoneys
}
}
if receivedValue . Types != oldDetailsCont . AddReduce {
editCont [ "`add_reduce`" ] = receivedValue . Types
}
if len ( receivedValue . Inspemethod ) > 0 {
insStr := strings . Join ( receivedValue . Inspemethod , "," )
if insStr != oldDetailsCont . CensorType {
editCont [ "`censor_type`" ] = insStr
}
}
if receivedValue . Cycle != oldDetailsCont . Cycles {
editCont [ "`cycle`" ] = receivedValue . Cycle
}
if receivedValue . Frequency != oldDetailsCont . CensorRate {
editCont [ "`censor_rate`" ] = receivedValue . Frequency
}
if receivedValue . Evidence != oldDetailsCont . CensorCont {
editCont [ "`censor_cont`" ] = receivedValue . Evidence
}
if receivedValue . Remarks != oldDetailsCont . Content {
editCont [ "`content`" ] = receivedValue . Remarks
}
editCont [ "`paretment`" ] = strings . Join ( orgList , "," )
editCont [ "`paretment_post`" ] = strings . Join ( postList , "," )
editCont [ "`reportary`" ] = strings . Join ( manList , "," )
if len ( editCont ) > 0 {
editCont [ "`time`" ] = time . Now ( ) . Unix ( )
var editInfoCont modelskpi . PostTargetDetails
err = editInfoCont . EiteCont ( wher , editCont )
if err != nil {
publicmethod . Result ( 106 , err , c )
return
}
}
var targetCont modelskpi . PostTarget
targetCont . GetCont ( map [ string ] interface { } { "`id`" : oldDetailsCont . ParentId } )
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPost ( targetCont . Dimension , targetCont . Id , oldDetailsCont . ParentIdSun , oldDetailsCont . Id , targetCont . Type , 3 , 2 , orgPost )
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPostMan ( targetCont . Dimension , targetCont . Id , oldDetailsCont . ParentIdSun , oldDetailsCont . Id , targetCont . Type , 3 , 2 , orgPostMan )
syncSeting . Wait ( )
publicmethod . Result ( 0 , err , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 23 13 : 49 : 06
@ 功能 : 根据栏目添加细则列表
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) AddTableDetailsList ( c * gin . Context ) {
var receivedValue AddTablePostDetails
c . ShouldBindJSON ( & receivedValue )
if receivedValue . TargetId == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if receivedValue . TableId == "" {
publicmethod . Result ( 1 , receivedValue , c , "未知栏目!请选择或输入栏目!" )
return
}
iswrite := true
if len ( receivedValue . DetailsList ) < 1 {
publicmethod . Result ( 1 , receivedValue , c , "至少要有一条细则!" )
return
} else {
for _ , v := range receivedValue . DetailsList {
if v . Title == "" {
iswrite = false
break
}
switch v . PunishType {
case 2 :
if v . CashStandard == "" {
iswrite = false
break
} else {
testInt := strings . Split ( v . CashStandard , "-" )
testLen := len ( testInt )
_ , oenErr := strconv . ParseFloat ( testInt [ 0 ] , 10 )
if oenErr != nil {
iswrite = false
break
} else {
if testLen > 1 {
_ , twoErr := strconv . ParseFloat ( testInt [ testLen - 1 ] , 10 )
if twoErr != nil {
iswrite = false
break
}
}
}
}
case 3 :
if v . CashStandard == "" || v . Standard == "" {
iswrite = false
break
} else {
testInt := strings . Split ( v . CashStandard , "-" )
testLen := len ( testInt )
_ , oenErr := strconv . ParseFloat ( testInt [ 0 ] , 10 )
if oenErr != nil {
iswrite = false
break
} else {
if testLen > 1 {
_ , twoErr := strconv . ParseFloat ( testInt [ testLen - 1 ] , 10 )
if twoErr != nil {
iswrite = false
break
}
}
}
testIntTwo := strings . Split ( v . Standard , "-" )
testLenTwo := len ( testIntTwo )
_ , oenErrTwo := strconv . ParseFloat ( testIntTwo [ 0 ] , 10 )
if oenErrTwo != nil {
iswrite = false
break
} else {
if testLenTwo > 1 {
_ , twoErr := strconv . ParseFloat ( testIntTwo [ testLenTwo - 1 ] , 10 )
if twoErr != nil {
iswrite = false
break
}
}
}
}
default :
if v . Standard == "" {
iswrite = false
break
} else {
testInt := strings . Split ( v . Standard , "-" )
testLen := len ( testInt )
_ , oenErr := strconv . ParseFloat ( testInt [ 0 ] , 10 )
if oenErr != nil {
iswrite = false
break
} else {
if testLen > 1 {
_ , twoErr := strconv . ParseFloat ( testInt [ testLen - 1 ] , 10 )
if twoErr != nil {
iswrite = false
break
}
}
}
}
}
if len ( v . Inspemethod ) < 1 {
iswrite = false
break
}
}
}
if ! iswrite {
publicmethod . Result ( 1 , receivedValue , c , "至少有一条细则内容填写不规范!请检查!" )
return
}
var targetCont modelskpi . PostTarget
err := targetCont . GetCont ( map [ string ] interface { } { "`id`" : receivedValue . TargetId } )
if err != nil {
publicmethod . Result ( 1 , receivedValue , c , "指标不存在!不允许添加细则内容!" )
return
}
orgList , postList , manList , orgPost , orgPostMan := GetTargetBaseDepartMan ( targetCont . Id )
// tableId, err := EditPostTableCont(targetCont.Id, receivedValue.TableName)
// if err != nil {
// publicmethod.Result(1, receivedValue, c, "没有栏目信息!栏目添加失败!请重新提交!")
// return
// }
tableId , _ := strconv . ParseInt ( receivedValue . TableId , 10 , 64 )
var tableDepartList [ ] string
var tablePostList [ ] string
var tableDepartPost [ ] OrgAndPostCont
var tableDepartPostMan [ ] OrgAndPostManCont
//处理岗位细则内容
for _ , v := range receivedValue . DetailsList {
var targetDetailsInfo modelskpi . PostTargetDetails
targetDetailsInfo . Title = v . Title //指标细则"`
targetDetailsInfo . Content = v . Remarks //指标说明"`
targetDetailsInfo . ParentId = targetCont . Id //归属指标栏目"`
targetDetailsInfo . ParentIdSun = tableId //归属指标子栏目"`
targetDetailsInfo . State = 1 //状态(1:启用;2:禁用;3:删除)"`
targetDetailsInfo . AddTime = time . Now ( ) . Unix ( ) //制定时间"`
targetDetailsInfo . MinScore , targetDetailsInfo . MaxScore = departmentpc . SplitCriteria ( v . Standard ) //最小分*100保存"` && 最大分*100保存"`
targetDetailsInfo . Company = v . Unit //单位"`
targetDetailsInfo . AddReduce = v . Types //1:减少;2:增加;3:无属性,现场确认加或减"`
targetDetailsInfo . CensorType = strings . Join ( v . Inspemethod , "," ) //检查方式"`
targetDetailsInfo . CensorCont = v . Evidence //检查依据"`
targetDetailsInfo . CensorRate = v . Frequency //检查频次"`
targetDetailsInfo . Cycles = v . Cycle //1:班;2:天;3:周;4:月;5:季度;6:年"`
targetDetailsInfo . CycleAttres = 1 //辅助计数"`
if len ( v . PostandExport ) > 0 {
orgList , postList , manList , orgPost , orgPostMan = HandleOrgOfPostReportRelation ( v . PostandExport )
// orgListJson, _ := json.Marshal(orgList)
// postListJson, _ := json.Marshal(postList)
// manListJson, _ := json.Marshal(manList)
// orgPostJson, _ := json.Marshal(orgPost)
// orgPostManJson, _ := json.Marshal(orgPostMan)
// fmt.Printf("明细表关联关系--->%v--->%v--->%v--->%v--->%v\n", string(orgListJson), string(postListJson), string(manListJson), string(orgPostJson), string(orgPostManJson))
}
targetDetailsInfo . Paretment = strings . Join ( orgList , "," ) //接受考核的部门"`
targetDetailsInfo . ParetmentPost = strings . Join ( postList , "," ) //接受考核的部门岗位"`
targetDetailsInfo . Reportary = strings . Join ( manList , "," ) //提报人"`
targetDetailsInfo . Punishmode = v . PunishType //处罚方式 1:扣分;2:现金处罚;3:扣分加现金"`
targetDetailsInfo . Minmoney , targetDetailsInfo . Maxmoney = departmentpc . SplitCriteria ( v . CashStandard ) //最高罚款"`&& 最低罚款"`
addErr := overall . CONSTANT_DB_KPI . Create ( & targetDetailsInfo ) . Error //添加指标
if addErr == nil {
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPost ( targetCont . Dimension , targetCont . Id , tableId , targetDetailsInfo . Id , targetCont . Type , 3 , 2 , orgPost )
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPostMan ( targetCont . Dimension , targetCont . Id , tableId , targetDetailsInfo . Id , targetCont . Type , 3 , 2 , orgPostMan )
}
//处理指标关联数据
for _ , ov := range orgList {
if publicmethod . IsInTrue [ string ] ( ov , tableDepartList ) == false {
tableDepartList = append ( tableDepartList , ov )
}
}
for _ , pv := range postList {
if publicmethod . IsInTrue [ string ] ( pv , tablePostList ) == false {
tablePostList = append ( tablePostList , pv )
}
}
for _ , opv := range orgPost {
if JudgeDeparPost ( opv , tableDepartPost ) == false {
tableDepartPost = append ( tableDepartPost , opv )
}
}
for _ , opvm := range orgPostMan {
if JudgeDeparPostMan ( opvm , tableDepartPostMan ) == false {
tableDepartPostMan = append ( tableDepartPostMan , opvm )
}
}
}
// one, _ := json.Marshal(tableDepartList)
// two, _ := json.Marshal(tablePostList)
// three, _ := json.Marshal(tableDepartPost)
// four, _ := json.Marshal(tableDepartPostMan)
// fmt.Printf("栏目明细表关联关系--->%v--->%v--->%v--->%v\n", string(one), string(two), string(three), string(four))
editTabelInfo := publicmethod . MapOut [ string ] ( )
tableDepartStr := strings . Join ( tableDepartList , "," )
editTabelInfo [ "`depart`" ] = tableDepartStr
tablePostStr := strings . Join ( tablePostList , "," )
editTabelInfo [ "`depart_post`" ] = tablePostStr
editTabelInfo [ "`time`" ] = time . Now ( ) . Unix ( )
var editTableCont modelskpi . PostSonTarget
editTableCont . EiteCont ( map [ string ] interface { } { "`id`" : tableId } , editTabelInfo )
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPost ( targetCont . Dimension , targetCont . Id , tableId , 0 , targetCont . Type , 2 , 2 , tableDepartPost )
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPostMan ( targetCont . Dimension , targetCont . Id , tableId , 0 , targetCont . Type , 2 , 2 , tableDepartPostMan )
syncSeting . Wait ( )
publicmethod . Result ( 0 , receivedValue , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 23 14 : 58 : 36
@ 功能 : 获取岗位栏目关联部门相关岗位及提报人 ( 新版 )
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GetNewTableDepartToPostMan ( 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 ( 101 , receivedValue , c )
return
}
var postTargetCont modelskpi . PostSonTarget
err = postTargetCont . GetCont ( map [ string ] interface { } { "`id`" : receivedValue . Id } )
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
var sendCont OutTableDepatPostMan
sendCont . Name = postTargetCont . Title
var tarDepatContList [ ] modelskpi . TargetDepartment
err = overall . CONSTANT_DB_KPI . Model ( & modelskpi . TargetDepartment { } ) . Select ( "`department_id`,`post_id`" ) . Where ( "`state` = 1 AND `type` = 2 AND `level` = 2 AND `target_id` = ? AND `target_sun_id` = ? AND `target_bylaws` = 0" , postTargetCont . ParentId , postTargetCont . Id ) . Find ( & tarDepatContList ) . Error
if err != nil && len ( tarDepatContList ) < 1 {
publicmethod . Result ( 107 , err , c )
return
}
for _ , v := range tarDepatContList {
orgIdstr := strconv . FormatInt ( v . DepartmentId , 10 )
if publicmethod . IsInTrue [ string ] ( orgIdstr , sendCont . OrgId ) == false {
sendCont . OrgId = append ( sendCont . OrgId , orgIdstr )
}
postIdstr := strconv . FormatInt ( v . PostId , 10 )
if publicmethod . IsInTrue [ string ] ( postIdstr , sendCont . PostId ) == false {
sendCont . PostId = append ( sendCont . PostId , postIdstr )
}
var orgPostInfo OrgPostCont
orgPostInfo . Id = postIdstr
orgPostInfo . OrgId = orgIdstr
var postInfo modelshr . Position
postInfo . GetCont ( map [ string ] interface { } { "`id`" : v . PostId } , "`name`" )
_ , _ , departmentId , sunDepartId , workShopId := publicmethod . GetOrgStructure ( v . DepartmentId )
fmt . Printf ( "%v------->%v------->%v\n" , departmentId , sunDepartId , workShopId )
if departmentId != 0 && sunDepartId != 0 && workShopId != 0 {
if departmentId != workShopId && sunDepartId != workShopId && departmentId != sunDepartId {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v/%v/%v" , getOrgCont ( departmentId ) , getOrgCont ( sunDepartId ) , getOrgCont ( workShopId ) , postInfo . Name )
} else if departmentId != workShopId && sunDepartId != workShopId && departmentId == sunDepartId {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v/%v" , getOrgCont ( departmentId ) , getOrgCont ( sunDepartId ) , postInfo . Name )
} else {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v" , getOrgCont ( departmentId ) , postInfo . Name )
}
} else if departmentId != 0 && sunDepartId != 0 && workShopId == 0 {
if departmentId != sunDepartId {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v/%v" , getOrgCont ( departmentId ) , getOrgCont ( sunDepartId ) , postInfo . Name )
} else {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v" , getOrgCont ( departmentId ) , postInfo . Name )
}
} else {
orgPostInfo . Name = fmt . Sprintf ( "%v/%v" , getOrgCont ( departmentId ) , postInfo . Name )
}
orgPostInfo . KeyList , orgPostInfo . Child = GetReportAndAllDepartMan ( postTargetCont . ParentId , postTargetCont . Id , 0 , 0 , v . PostId , departmentId , 2 , 2 )
sendCont . OrgAndPostList = append ( sendCont . OrgAndPostList , orgPostInfo )
}
publicmethod . Result ( 0 , sendCont , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 02 - 23 15 : 29 : 30
@ 功能 : 编辑岗位子栏目内容 ( 新版 )
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) EditSonTargetContNew ( c * gin . Context ) {
var receivedValue EditTableCont
c . ShouldBindJSON ( & receivedValue )
if receivedValue . Id == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if receivedValue . Title == "" {
publicmethod . Result ( 1 , receivedValue , c , "请输入考核内容!" )
return
}
var orgPost [ ] OrgAndPostCont
var orgPostMan [ ] OrgAndPostManCont
var orgList [ ] string
var postList [ ] string
var manList [ ] string
if len ( receivedValue . PostandExport ) < 1 {
publicmethod . Result ( 1 , receivedValue , c , "请设定岗位及提报人!" )
return
} else {
for _ , v := range receivedValue . PostandExport {
var orgPostCont OrgAndPostCont
orgIdInt , _ := strconv . ParseInt ( v . OrgId , 10 , 64 )
orgPostCont . OrgId = orgIdInt
postIdInt , _ := strconv . ParseInt ( v . Id , 10 , 64 )
orgPostCont . PostId = postIdInt
orgPost = append ( orgPost , orgPostCont )
if publicmethod . IsInTrue [ string ] ( v . OrgId , orgList ) == false {
orgList = append ( orgList , v . OrgId )
}
if publicmethod . IsInTrue [ string ] ( v . Id , postList ) == false {
postList = append ( postList , v . Id )
}
if len ( v . KeyList ) < 1 {
publicmethod . Result ( 1 , receivedValue , c , "有未设定的岗位提报人!请检查!" )
return
} else {
for _ , mv := range v . KeyList {
var orgPostManCont OrgAndPostManCont
orgPostManCont . OrgId = orgIdInt
orgPostManCont . PostId = postIdInt
mvIdInt , _ := strconv . ParseInt ( mv , 10 , 64 )
orgPostManCont . ManKey = mvIdInt
orgPostMan = append ( orgPostMan , orgPostManCont )
if publicmethod . IsInTrue [ string ] ( mv , manList ) == false {
manList = append ( manList , mv )
}
}
}
}
}
wher := publicmethod . MapOut [ string ] ( )
wher [ "`id`" ] = receivedValue . Id
var oldDetailsCont modelskpi . PostSonTarget
err := oldDetailsCont . GetCont ( wher )
if err != nil {
publicmethod . Result ( 1 , receivedValue , c , "细则不存在!请检查!" )
return
}
editCont := publicmethod . MapOut [ string ] ( )
if receivedValue . Title != oldDetailsCont . Title {
editCont [ "`title`" ] = receivedValue . Title
}
orgString := strings . Join ( orgList , "," )
if orgString != oldDetailsCont . Depart {
editCont [ "`depart`" ] = orgString
}
postString := strings . Join ( postList , "," )
if postString != oldDetailsCont . DepartPost {
editCont [ "`depart_post`" ] = postList
}
if oldDetailsCont . State != 1 {
editCont [ "`state`" ] = 1
}
if len ( editCont ) > 0 {
editCont [ "`time`" ] = time . Now ( ) . Unix ( )
var editTabInfo modelskpi . PostSonTarget
err = editTabInfo . EiteCont ( wher , editCont )
}
// sendData := publicmethod.MapOut[string]()
// sendData["orgPost"] = orgPost
// sendData["orgPostMan"] = orgPostMan
// sendData["orgList"] = orgList
// sendData["postList"] = postList
// sendData["manList"] = manList
// sendData["oldDetailsCont"] = oldDetailsCont
var targetCont modelskpi . PostTarget
targetCont . GetCont ( map [ string ] interface { } { "`id`" : oldDetailsCont . ParentId } )
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPost ( targetCont . Dimension , targetCont . Id , oldDetailsCont . Id , 0 , targetCont . Type , 2 , 2 , orgPost )
syncSeting . Add ( 1 )
go PostDetailsBaseOrgPostMan ( targetCont . Dimension , targetCont . Id , oldDetailsCont . Id , 0 , targetCont . Type , 2 , 2 , orgPostMan )
syncSeting . Wait ( )
publicmethod . Result ( 0 , err , c )
}