package commonus
//公共函数类
import (
"bytes"
"crypto/rand"
"encoding/json"
"fmt"
"math"
"math/big"
"regexp"
"strconv"
"strings"
"time"
"gin_server_admin/global"
"gin_server_admin/model/assessmentmodel"
"gin_server_admin/model/hrsystem"
"gin_server_admin/model/location"
"gin_server_admin/model/systemuser"
"gin_server_admin/model/testpage"
"gin_server_admin/model/wechat"
"gin_server_admin/utils/redishandel"
"github.com/mitchellh/mapstructure"
"github.com/mozillazg/go-pinyin"
"gorm.io/gorm"
)
// 遍历所有父类
type ErgodicStruct struct {
ParentId int64
Date [ ] int64
}
// 遍历组织架构
func ( e * ErgodicStruct ) ErgodicParentClassGroup ( id int64 , groupStruct [ ] wechat . GroupForm ) {
for _ , v := range groupStruct {
if e . ParentId == 1 {
if v . Id == id {
e . Date = append ( e . Date , v . Parentid )
e . ErgodicParentClassGroup ( v . Parentid , groupStruct )
}
} else {
if v . Id == id {
if v . Parentid != 1 {
e . Date = append ( e . Date , v . Parentid )
}
e . ErgodicParentClassGroup ( v . Parentid , groupStruct )
}
}
}
}
// 冒泡排序法
func BubbleSort ( slice [ ] int64 ) [ ] int64 {
for n := 0 ; n <= len ( slice ) ; n ++ {
for i := 1 ; i < len ( slice ) - n ; i ++ {
if slice [ i ] < slice [ i - 1 ] {
slice [ i ] , slice [ i - 1 ] = slice [ i - 1 ] , slice [ i ]
}
}
}
return slice
}
func BubbleSortInt ( slice [ ] int ) [ ] int {
for n := 0 ; n <= len ( slice ) ; n ++ {
for i := 1 ; i < len ( slice ) - n ; i ++ {
if slice [ i ] < slice [ i - 1 ] {
slice [ i ] , slice [ i - 1 ] = slice [ i - 1 ] , slice [ i ]
}
}
}
return slice
}
// 编号,纯数字
func TableNumber ( class ... string ) ( number int64 ) {
result , _ := rand . Int ( rand . Reader , big . NewInt ( 8999 ) )
numberTeam := result . Int64 ( ) + 1000
numberStr := fmt . Sprintf ( "%v%v" , time . Now ( ) . Unix ( ) , numberTeam )
if len ( class ) > 0 {
resultLong , _ := rand . Int ( rand . Reader , big . NewInt ( 8999999 ) )
numberTeamLong := resultLong . Int64 ( ) + 1000000
numberStr = fmt . Sprintf ( "%v%v" , time . Now ( ) . Unix ( ) , numberTeamLong )
}
number , _ = strconv . ParseInt ( numberStr , 10 , 64 )
return
}
// 获取公司,分厂,工段
func GetGroupInfo ( id int64 ) ( isTrue bool , groupStruct wechat . GroupForm ) {
isTrue = false
redisClient := redishandel . RunRedis ( )
isTrues , tokenInfo := redisClient . Get ( "organStructure:group_" + global . GVA_CONFIG . RedisPrefix . Alias + "_" + strconv . FormatInt ( id , 10 ) )
if isTrues == true {
jsonUserList := json . Unmarshal ( [ ] byte ( tokenInfo ) , & groupStruct )
if jsonUserList != nil {
return
}
isTrue = true
} else {
var groupStructs wechat . GroupForm //集团表结构
err := global . GVA_DB_WatchDate . Where ( "g_id = ?" , id ) . First ( & groupStruct ) . Error //获取集团信息
if err != nil {
groupStruct , isTrue = AddWechatGroup ( id , groupStructs )
return
}
jsonUserList , jsonErr := json . Marshal ( groupStruct )
if jsonErr != nil {
return
}
redisClient . SetRedisTime ( 604800 )
redisClient . Set ( "organStructure:group_" + global . GVA_CONFIG . RedisPrefix . Alias + "_" + strconv . FormatInt ( id , 10 ) , string ( jsonUserList ) )
isTrue = true
}
// groupInfo["name"] = groupStruct.Name
return
}
// 获主数据库员工信息(微信版本)
func GetMainDataBaseUserInfo ( weChatId string ) ( isTrue bool , myInfo testpage . WorkMan ) {
isTrue = false
err := global . GVA_DB_Master . Where ( "qywx_key = ? or wx_key = ?" , weChatId , weChatId ) . First ( & myInfo ) . Error //获取集团信息
if err != nil {
userWechat := GetWechatUserInfo ( weChatId )
isTrues , myDepartment := GetGroupInfo ( int64 ( userWechat . MainDepartment ) )
if isTrues == false {
return
}
myInfo . WorkWechatId = userWechat . UserId
var arrAy [ ] int64
errdd := json . Unmarshal ( [ ] byte ( myDepartment . Group ) , & arrAy )
if errdd == nil {
if len ( arrAy ) >= 2 {
if arrAy [ 0 ] == 1 {
myInfo . Group = arrAy [ 1 ]
} else {
myInfo . Group = arrAy [ 1 ]
}
}
}
var weChatInfo wechat . WechatUsers
weChatInfo . Uid = GetFileNumber ( )
weChatInfo . Userid = userWechat . UserId
weChatInfo . Name = userWechat . Name
jsonStr , jsonErr := json . Marshal ( userWechat . Department )
if jsonErr == nil {
weChatInfo . Department = string ( jsonStr )
} else {
weChatInfo . Department = "[]"
}
weChatInfo . Position = userWechat . Position
weChatInfo . Mobile = userWechat . Mobile
GenderInt , gendererr := strconv . Atoi ( userWechat . Gender )
if gendererr == nil {
weChatInfo . Gender = GenderInt
} else {
weChatInfo . Gender = 1
}
weChatInfo . Email = userWechat . Email
weChatInfo . Avatar = userWechat . Avatar
weChatInfo . Status = userWechat . Status
extattrStr , extattrErr := json . Marshal ( userWechat . Extattr )
if extattrErr == nil {
weChatInfo . Extattr = string ( extattrStr )
} else {
weChatInfo . Extattr = "{\"attrs\":[]}"
}
weChatInfo . MainDepartment = int64 ( userWechat . MainDepartment )
weChatInfo . QrCode = userWechat . QrCode
isLeaderInDeptStr , isLeaderInDeptrErr := json . Marshal ( userWechat . IsLeaderInDept )
if isLeaderInDeptrErr == nil {
weChatInfo . IsLeaderInDept = string ( isLeaderInDeptStr )
} else {
weChatInfo . IsLeaderInDept = "[0]"
}
weChatInfo . ThumbAvatar = userWechat . ThumbAvatar
weChatInfo . Time = time . Now ( ) . Unix ( )
addErr := global . GVA_DB_WatchDate . Create ( & weChatInfo ) . Error
if addErr == nil {
isTrue = true
}
return
}
isTrue = true
return
}
// 获取成员信息
func GetWechatUserInfo ( weChatId string ) ( us UserListStruct ) {
if weChatId == "" {
return
}
redisClient := redishandel . RunRedis ( )
isTrue , tokenInfo := redisClient . HashGet ( "deUserAry:wechat_" + global . GVA_CONFIG . RedisPrefix . Alias , "userinfo_" + "_" + weChatId )
if isTrue != true {
userInfo , _ , _ := GetOneAddressBookMember ( weChatId )
// var callBackData WechatUserInfo
// json.Unmarshal(userInfo, &callBackData)
// var us UserListStruct
json . Unmarshal ( userInfo , & us )
userMap := MapOut ( )
json . Unmarshal ( userInfo , & userMap )
jsonUser , _ := json . Marshal ( us )
redisClient . SetRedisTime ( 2678400 )
redisClient . HashSet ( "deUserAry:wechat_" + global . GVA_CONFIG . RedisPrefix . Alias , "userinfo_" + "_" + weChatId , string ( jsonUser ) )
// fmt.Printf("未经过redis=====>%v\n", weChatId)
} else {
// var us UserListStruct
json . Unmarshal ( [ ] byte ( tokenInfo ) , & us )
// fmt.Printf("经过redis=====>%v\n", weChatId)
}
return
}
// 添加企业微信组织
func AddWechatGroup ( id int64 , groupStruct wechat . GroupForm ) ( groupInfo wechat . GroupForm , isTrue bool ) {
isTrue = false
groupFrameWork , isTrueErr := GetWechatFramework ( id )
if isTrueErr == false {
return
}
var callBackData dePartMent
err := json . Unmarshal ( groupFrameWork , & callBackData )
if err != nil {
return
}
var sunGroup [ ] int64
sunGroup = append ( sunGroup , id )
if callBackData . Errcode == 0 {
redisClient := redishandel . RunRedis ( )
redisClient . SetRedisTime ( 604800 )
for _ , val := range callBackData . DePartMent {
// fmt.Printf("Key ==> %v ------ Val ==> %v\n", key, val)
writeRedisData := map [ string ] interface { } {
"id" : val . Id ,
"name" : val . Name ,
"name_en" : val . NameEN ,
"parentid" : val . Parentid ,
"order" : val . Order ,
}
departId := strconv . FormatInt ( val . Id , 10 )
if id == val . Id {
groupInfo . Id = val . Id
groupInfo . Name = val . Name
groupInfo . Parentid = val . Parentid
groupInfo . Orderes = val . Order
groupInfo . Time = time . Now ( ) . Unix ( )
groupInfo . Sate = 1
jsonStr , jsonErr := json . Marshal ( sunGroup )
if jsonErr == nil {
groupInfo . GroupSun = string ( jsonStr )
}
var group [ ] wechat . GroupForm
listErr := global . GVA_DB_WatchDate . Find ( & group ) . Error
if listErr == nil {
var parentGroup ErgodicStruct
parentGroup . ParentId = val . Parentid
parentGroup . ErgodicParentClassGroup ( val . Parentid , group )
parentGroup . Date = append ( parentGroup . Date , val . Parentid )
parentGroup . Date = append ( parentGroup . Date , val . Id )
parentGroup . Date = BubbleSort ( parentGroup . Date )
jsonStrFather , jsonErrFather := json . Marshal ( parentGroup . Date )
if jsonErrFather == nil {
groupInfo . Group = string ( jsonStrFather )
}
}
addErr := global . GVA_DB_WatchDate . Create ( & groupInfo ) . Error
if addErr == nil {
isTrue = true
}
} else {
sunGroup = append ( sunGroup , val . Id )
}
redisClient . HashMsetAdd ( "dePartMentAry:ment_" + global . GVA_CONFIG . RedisPrefix . Alias + "_" + departId , writeRedisData )
}
dePartMentJson , _ := json . Marshal ( callBackData . DePartMent )
dePartMentIdStr := strconv . FormatInt ( id , 10 )
redisClient . Set ( "dePartMentList:list_" + global . GVA_CONFIG . RedisPrefix . Alias + "_" + dePartMentIdStr , string ( dePartMentJson ) )
}
//
return
}
// 获取成员信息列表(企业威信数据库)
func GetMemberList ( ) ( userStruct [ ] wechat . WechatUsers , isTrue bool ) {
isTrue = false
var userAry [ ] wechat . WechatUsers
redisClient := redishandel . RunRedis ( )
isTrues , tokenInfo := redisClient . Get ( "deUserAry:wechatUser_" + global . GVA_CONFIG . RedisPrefix . Alias + "_all" )
if isTrues != true {
userErr := global . GVA_DB_WatchDate . Where ( "status = 1" ) . Find ( & userAry ) . Error
if userErr != nil {
wechatAllList , _ , isYes := GetDepartmentUserList ( 1 )
if isYes != true {
var callBackData WechatUserInfoDepartment
json . Unmarshal ( wechatAllList , & callBackData )
if callBackData . Errcode != 0 {
return
}
for _ , jsonVal := range callBackData . UserList {
var userInfo wechat . WechatUsers
userInfo . Userid = jsonVal . UserId
userInfo . Name = jsonVal . Name
jsonStr , jsonErr := json . Marshal ( jsonVal . Department )
if jsonErr == nil {
userInfo . Department = string ( jsonStr )
} else {
userInfo . Department = "[]"
}
userInfo . Position = jsonVal . Position
userInfo . Mobile = jsonVal . Mobile
GenderInt , genderErr := strconv . Atoi ( jsonVal . Gender )
if genderErr == nil {
userInfo . Gender = GenderInt
} else {
userInfo . Gender = 1
}
userInfo . Email = jsonVal . Email
userInfo . Avatar = jsonVal . Avatar
userInfo . Status = jsonVal . Status
extattrJson , extattrErr := json . Marshal ( jsonVal . Extattr )
if extattrErr == nil {
userInfo . Extattr = string ( extattrJson )
} else {
userInfo . Extattr = "{\"attrs\":[]}"
}
userInfo . MainDepartment = int64 ( jsonVal . MainDepartment )
userInfo . QrCode = jsonVal . QrCode
isLeaderInDeptJson , isLeaderInDeptErr := json . Marshal ( jsonVal . IsLeaderInDept )
if isLeaderInDeptErr == nil {
userInfo . IsLeaderInDept = string ( isLeaderInDeptJson )
} else {
userInfo . IsLeaderInDept = "[0]"
}
userInfo . ThumbAvatar = jsonVal . ThumbAvatar
userInfo . UserNumber = ""
userInfo . SysBf = 0
userInfo . SysWs = 0
userInfo . SysPs = 0
userInfo . WmTema = 0
userInfo . IsAdmin = 1
userInfo . IsRole = 0
userInfo . Pwd = ""
userInfo . Time = time . Now ( ) . Unix ( )
userStruct = append ( userStruct , userInfo )
}
isTrue = true
jsonUserList , jsonErr := json . Marshal ( userStruct )
if jsonErr != nil {
return
}
redisClient . SetRedisTime ( 259200 )
redisClient . Set ( "deUserAry:wechatUser_" + global . GVA_CONFIG . RedisPrefix . Alias + "_all" , string ( jsonUserList ) )
return
}
return
}
for _ , userCont := range userAry {
var userInfo wechat . WechatUsers
userInfo . Uid = userCont . Uid
userInfo . Userid = userCont . Userid
userInfo . Name = userCont . Name
userInfo . Department = userCont . Department
userInfo . Position = userCont . Position
userInfo . Mobile = userCont . Mobile
userInfo . Gender = userCont . Gender
userInfo . Email = userCont . Email
userInfo . Avatar = userCont . Avatar
userInfo . Status = userCont . Status
userInfo . Extattr = userCont . Extattr
userInfo . MainDepartment = userCont . MainDepartment
userInfo . QrCode = userCont . QrCode
userInfo . IsLeaderInDept = userCont . IsLeaderInDept
userInfo . ThumbAvatar = userCont . ThumbAvatar
userInfo . UserNumber = userCont . UserNumber
userInfo . SysBf = userCont . SysBf
userInfo . SysWs = userCont . SysWs
userInfo . SysPs = userCont . SysPs
userInfo . WmTema = userCont . WmTema
userInfo . IsAdmin = userCont . IsAdmin
userInfo . IsRole = userCont . IsRole
userInfo . Pwd = userCont . Pwd
userInfo . Time = userCont . Time
userStruct = append ( userStruct , userInfo )
}
isTrue = true
jsonUserList , jsonErr := json . Marshal ( userAry )
if jsonErr != nil {
return
}
redisClient . SetRedisTime ( 259200 )
redisClient . Set ( "deUserAry:wechatUser_" + global . GVA_CONFIG . RedisPrefix . Alias + "_all" , string ( jsonUserList ) )
} else {
jsonUserList := json . Unmarshal ( [ ] byte ( tokenInfo ) , & userAry )
if jsonUserList != nil {
return
}
for _ , userCont := range userAry {
var userInfo wechat . WechatUsers
userInfo . Uid = userCont . Uid
userInfo . Userid = userCont . Userid
userInfo . Name = userCont . Name
userInfo . Department = userCont . Department
userInfo . Position = userCont . Position
userInfo . Mobile = userCont . Mobile
userInfo . Gender = userCont . Gender
userInfo . Email = userCont . Email
userInfo . Avatar = userCont . Avatar
userInfo . Status = userCont . Status
userInfo . Extattr = userCont . Extattr
userInfo . MainDepartment = userCont . MainDepartment
userInfo . QrCode = userCont . QrCode
userInfo . IsLeaderInDept = userCont . IsLeaderInDept
userInfo . ThumbAvatar = userCont . ThumbAvatar
userInfo . UserNumber = userCont . UserNumber
userInfo . SysBf = userCont . SysBf
userInfo . SysWs = userCont . SysWs
userInfo . SysPs = userCont . SysPs
userInfo . WmTema = userCont . WmTema
userInfo . IsAdmin = userCont . IsAdmin
userInfo . IsRole = userCont . IsRole
userInfo . Pwd = userCont . Pwd
userInfo . Time = userCont . Time
userStruct = append ( userStruct , userInfo )
}
isTrue = true
}
return
}
// 获取全国风险地区列表(企鹅接口 https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5)
func NationalRiskArea ( ) [ ] byte {
nationalUrl := "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
userInfo := CurlGet ( nationalUrl )
return userInfo
}
// 获取全国风险地区列表数据处理
func GetNationalRiskArea ( ) ( riskAreaCityList [ ] RegionalRiskLevel , isTrue bool ) {
isTrue = false
redisClient := redishandel . RunRedis ( )
redisClient . SetRedisTime ( 7200 )
isTrueStr , riskAreaRedis := redisClient . Get ( "nationalRiskArea:cityList_" + global . GVA_CONFIG . RedisPrefix . Alias )
if isTrueStr != true {
nationalRiskArea := NationalRiskArea ( ) //获取鹅厂数据
var tencentJsonData TencentJsonData
jsonErr := json . Unmarshal ( nationalRiskArea , & tencentJsonData ) //反json化鹅厂数据
if jsonErr != nil {
return
}
var DataJSonTencent DataJSonTencent
tencentJsonDataSerialize := json . RawMessage ( tencentJsonData . Data )
jsonSerializeErr := json . Unmarshal ( tencentJsonDataSerialize , & DataJSonTencent ) //地区反序列化
if jsonSerializeErr != nil {
return
}
// var regionalRiskAry []RegionalRiskLevel //风险等级模型数组切片
for _ , chinaAry := range DataJSonTencent . AreaTree { //国家级
for _ , provinceAry := range chinaAry . Children { //省级
for _ , cityAry := range provinceAry . Children { //市级
isYes := 0
var regionalRisk RegionalRiskLevel //风险等级模型
regionalRisk . ProvinceName = provinceAry . Name
regionalRisk . CityName = cityAry . Name
regionalRisk . RiskText = cityAry . Total . Grade
regionalRisk . RiskLevel = 0
//切分数据结果,判断风险等级
countSplit := strings . Split ( cityAry . Total . Grade , "中高" )
regionalRisk . Province = int64 ( len ( countSplit ) )
//0:无;1:低风险;2:中低风险;3:中风险;4:中高风险;5:高风险
if len ( countSplit ) >= 2 {
regionalRisk . RiskLevel = 4
isYes = 1
} else {
countSplits := strings . Split ( cityAry . Total . Grade , "中低" )
regionalRisk . City = int64 ( len ( countSplits ) )
if len ( countSplits ) >= 2 {
regionalRisk . RiskLevel = 2
isYes = 1
} else {
countSplitcont := strings . Split ( cityAry . Total . Grade , "中" )
regionalRisk . County = int64 ( len ( countSplitcont ) )
if len ( countSplitcont ) >= 2 {
regionalRisk . RiskLevel = 3
isYes = 1
} else {
countSpliHigh := strings . Split ( cityAry . Total . Grade , "高" )
regionalRisk . County = int64 ( len ( countSpliHigh ) )
if len ( countSpliHigh ) >= 2 {
regionalRisk . RiskLevel = 5
isYes = 1
}
countSpliLown := strings . Split ( cityAry . Total . Grade , "低" )
regionalRisk . County = int64 ( len ( countSpliLown ) )
if len ( countSpliLown ) >= 2 {
regionalRisk . RiskLevel = 1
isYes = 1
}
}
}
}
if isYes == 1 {
riskAreaCityList = append ( riskAreaCityList , regionalRisk )
}
}
}
}
regionalRiskJson , regionalRiskjsonErr := json . Marshal ( riskAreaCityList )
if regionalRiskjsonErr == nil {
redisClient . Set ( "nationalRiskArea:cityList_" + global . GVA_CONFIG . RedisPrefix . Alias , string ( regionalRiskJson ) )
}
} else {
jsonUserList := json . Unmarshal ( [ ] byte ( riskAreaRedis ) , & riskAreaCityList )
if jsonUserList == nil {
isTrue = true
}
}
return
}
// 写入异常人员列表
func WriteInMan ( wechat , calCulTime string , groupId int64 ) {
if wechat == "" {
return
}
timeVal := time . Now ( ) . Unix ( ) - 86400
if calCulTime != "" {
timeVals , errTime := DateToTimeStampEs ( calCulTime )
if errTime == true {
timeVal = timeVals
}
}
var abn location . AbnormalPeople
abnErr := global . GVA_DB_HealthReport . Where ( "abn_wechat_id = ?" , wechat ) . First ( & abn ) . Error
if abnErr != nil {
abn . WechatId = wechat
abn . GroupId = groupId
abn . Time = timeVal
global . GVA_DB_HealthReport . Create ( & abn )
// fmt.Printf("Add -----> %v ------>%v\n", abnErr, abn)
} else {
abn . GroupId = groupId
abn . Time = timeVal
global . GVA_DB_HealthReport . Save ( & abn )
// fmt.Printf("Eite -----> %v ------>%v\n", abnErr, abn)
}
}
// 通用查询结果到map结构
type GormTopMap struct {
Db * gorm . DB
TableName string
WhereMap map [ string ] interface { }
}
// 输出Map查询数据库结果(多行)
func ( g * GormTopMap ) PublicOrmToMap ( ) ( returnData [ ] map [ string ] interface { } ) {
if len ( g . WhereMap ) > 0 {
g . Db . Table ( g . TableName ) . Where ( g . WhereMap ) . Find ( & returnData )
} else {
g . Db . Table ( g . TableName ) . Find ( & returnData )
}
return
}
// 输出Map查询数据库结果(单行)
func ( g * GormTopMap ) PublicOrmToMapOne ( ) ( returnData map [ string ] interface { } ) {
var selectData [ ] map [ string ] interface { }
if len ( g . WhereMap ) > 0 {
g . Db . Table ( g . TableName ) . Where ( g . WhereMap ) . Take ( & selectData )
} else {
g . Db . Table ( g . TableName ) . Take ( & selectData )
}
if len ( selectData ) < 1 && len ( selectData ) > 0 {
returnData = selectData [ 0 ]
}
return
}
// 判断地址中是否还有http或https
func JudgeHttpOrHttps ( urlStr string ) ( isTrue bool ) {
isTrue = false
re := regexp . MustCompile ( ` (http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])? ` )
result := re . FindAllStringSubmatch ( urlStr , - 1 )
// fmt.Printf("urlStr ======>%v\n", result)
// for _,regVal := range result{
// if regVal
// }
if result == nil {
isTrue = true
}
return
}
// 获取工段信息
func GetWorkShopSection ( id int64 ) ( isTrue bool , workShopesStruct testpage . WorkShopsection ) { //工段表结构
isTrue = false
err := global . GVA_DB_Master . Where ( "ws_id = ?" , id ) . First ( & workShopesStruct ) . Error //获取工段信息
if err != nil {
return
}
isTrue = true
return
}
// 用户端身份解析
func ClientIdentity ( ) ( isTrue bool , redisUserInfo testpage . RedisUserInfo ) {
// keyStr := strconv.FormatInt(global.GVA_INDEX_USERKEY, 10)
// redisClient := redishandel.RunRedis()
// tokenInfo, isTrue := redisClient.HashGetAll("system:userContent_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + keyStr)
// if isTrue != true {
// return
// }
// identityErr := mapstructure.Decode(tokenInfo, &redisUserInfo)
// if identityErr != nil {
// isTrue = false
// return
// }
redisClient := redishandel . RunRedis ( )
redisClient . SetRedisDb ( 5 )
tokenInfo , isTrue := redisClient . HashGetAll ( "ScanCode:UserInfo:LoginUser_" + global . GVA_CONFIG . RedisPrefix . Alias + "_" + global . GVA_SCANCODE_USERNUMBER )
if isTrue == true {
identityErr := mapstructure . Decode ( tokenInfo , & redisUserInfo )
if identityErr == nil {
isTrue = true
return
} else {
redisUserInfo , isTrue = getPeopleInfo ( )
return
}
} else {
redisUserInfo , isTrue = getPeopleInfo ( )
return
}
isTrue = false
return
}
// 获取用户信息
func getPeopleInfo ( ) ( redisUserInfo testpage . RedisUserInfo , isTrue bool ) {
isTrue = false
var ueInfo hrsystem . PersonArchives
err := global . GVA_DB_HrDataBase . Where ( "`number` = ?" , global . GVA_SCANCODE_USERNUMBER ) . First ( & ueInfo ) . Error
if err != nil {
return
}
wechatStr := ueInfo . Wechat
if ueInfo . WorkWechat != "" {
wechatStr = ueInfo . WorkWechat
}
redisUserInfo . Id = strconv . FormatInt ( ueInfo . Id , 10 ) // `json:"id"`
redisUserInfo . Key = strconv . FormatInt ( ueInfo . Key , 10 ) // `json:"key"`
redisUserInfo . Number = ueInfo . Number // `json:"number"`
redisUserInfo . Name = ueInfo . Name // `json:"name"`
redisUserInfo . Positionleveles = strconv . FormatInt ( ueInfo . JobLeve , 10 ) // `json:"positionleveles"`
redisUserInfo . Position = strconv . FormatInt ( ueInfo . Position , 10 ) // `json:"position"`
redisUserInfo . Adminorg = strconv . FormatInt ( ueInfo . AdminOrg , 10 ) // `json:"adminorg"`
redisUserInfo . Company = strconv . FormatInt ( ueInfo . Company , 10 ) // `json:"company"`
redisUserInfo . Emptype = fmt . Sprintf ( "%v" , ueInfo . EmpType ) // `json:"emptype"`
redisUserInfo . MainDeparment = strconv . FormatInt ( ueInfo . MainDeparment , 10 ) // `json:"company"`
redisUserInfo . Deparment = ueInfo . Deparment // `json:"deparment"`
redisUserInfo . Jobclass = strconv . FormatInt ( ueInfo . JobClass , 10 ) // `json:"jobclass"`
redisUserInfo . Positiongrade = strconv . FormatInt ( ueInfo . JobLeve , 10 ) // `json:"positiongrade"`
redisUserInfo . Role = ueInfo . Role // `json:"role"`
redisUserInfo . Icon = ueInfo . Icon // `json:"icon"`
redisUserInfo . Wechat = wechatStr // `json:"wechat"`
menuStr , buttonStr := getRoleInt ( ueInfo . Role )
redisUserInfo . Jurisdiction = buttonStr // `json:"jurisdiction"`
redisUserInfo . Menuoper = menuStr // `json:"menuoper"`
oldGroup , _ := getOrgCont ( strconv . FormatInt ( ueInfo . Company , 10 ) )
olddepart , _ := getOrgCont ( ueInfo . Deparment )
redisUserInfo . Oldgroup = oldGroup // `json:"oldgroup"`
redisUserInfo . Olddepartment = olddepart // `json:"olddepartment"`
oldpostis , _ := getPositionCont ( ueInfo . Position )
redisUserInfo . Oldposition = oldpostis // `json:"oldposition"`
isTrue = true
redisUserInfo . IsAdmin = fmt . Sprintf ( "%v" , ueInfo . IsAdmin )
redisClient := redishandel . RunRedis ( )
redisClient . SetRedisDb ( 5 )
redisFileKey := fmt . Sprintf ( "ScanCode:UserInfo:LoginUser_%v_%v" , global . GVA_CONFIG . RedisPrefix . Alias , global . GVA_SCANCODE_USERNUMBER )
redisClient . SetRedisTime ( 604800 )
writeRedisData := map [ string ] interface { } {
"id" : strconv . FormatInt ( ueInfo . Id , 10 ) ,
"key" : strconv . FormatInt ( ueInfo . Key , 10 ) ,
"number" : ueInfo . Number ,
"name" : ueInfo . Name ,
"positionleveles" : strconv . FormatInt ( ueInfo . JobLeve , 10 ) ,
"position" : strconv . FormatInt ( ueInfo . Position , 10 ) ,
"adminorg" : strconv . FormatInt ( ueInfo . AdminOrg , 10 ) ,
"company" : strconv . FormatInt ( ueInfo . Company , 10 ) ,
"emptype" : fmt . Sprintf ( "%v" , ueInfo . EmpType ) ,
"maindeparment" : ueInfo . MainDeparment ,
"deparment" : ueInfo . Deparment ,
"jobclass" : strconv . FormatInt ( ueInfo . JobClass , 10 ) ,
"positiongrade" : strconv . FormatInt ( ueInfo . JobLeve , 10 ) ,
"role" : ueInfo . Role ,
"icon" : ueInfo . Icon ,
"wechat" : wechatStr ,
"jurisdiction" : buttonStr ,
"menuoper" : menuStr ,
"oldgroup" : oldGroup ,
"olddepartment" : olddepart ,
"oldposition" : oldpostis ,
"isadmin" : fmt . Sprintf ( "%v" , ueInfo . IsAdmin ) ,
}
redisClient . HashMsetAdd ( redisFileKey , writeRedisData )
return
}
// 获取权限点位
func getRoleInt ( roleId string ) ( menuStr , buttonStr string ) {
var roleInfo systemuser . SystemRole
err := global . GVA_DB_Master . Where ( "`r_id` = ?" , roleId ) . First ( & roleInfo ) . Error
if err != nil {
return
}
menuStr = roleInfo . MenuOper
buttonStr = roleInfo . Jurisdiction
return
}
// 获取员工公司组织
func getOrgCont ( id string ) ( oldId , orgName string ) {
var orgInfo hrsystem . AdministrativeOrganization
err := global . GVA_DB_HrDataBase . Where ( "`id` = ?" , id ) . First ( & orgInfo ) . Error
if err != nil {
return
}
oldId = strconv . FormatInt ( orgInfo . Schoole , 10 )
orgName = orgInfo . Name
return
}
// 获取新行政组织内容
func GetNewOrgCont ( where interface { } , field ... string ) ( orgCont hrsystem . AdministrativeOrganization , err error ) {
gormDb := global . GVA_DB_HrDataBase . Model ( & hrsystem . AdministrativeOrganization { } )
if len ( field ) > 0 {
fieldStr := strings . Join ( field , "," )
gormDb = gormDb . Select ( fieldStr )
}
gormDb = gormDb . Where ( where )
err = gormDb . First ( & orgCont ) . Error
return
}
// 获取员工公司职务
func getPositionCont ( id int64 ) ( oldId , orgName string ) {
var orgInfo hrsystem . Position
err := global . GVA_DB_HrDataBase . Where ( "`id` = ?" , id ) . First ( & orgInfo ) . Error
if err != nil {
return
}
oldId = strconv . FormatInt ( orgInfo . School , 10 )
orgName = orgInfo . Name
return
}
// 自定义管理端身份解析
func AdminClientIdentity ( ) ( isTrue bool , redisAdminInfo systemuser . RedisAdminInfo ) {
// keyStr := strconv.FormatInt(global.GVA_ADMIN_USERKEY, 10)
// redisClient := redishandel.RunRedis()
// tokenInfo, isTrue := redisClient.HashGetAll("system:SystemAdminInfo_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + keyStr)
// if isTrue != true {
// return
// }
// identityErr := mapstructure.Decode(tokenInfo, &redisAdminInfo)
// if identityErr != nil {
// isTrue = false
// return
// }
isTrue = false
return
}
// 更具微信ID获取员工信息
func GetUesrContForWechatID ( wechatId string ) ( isTrue bool , myCont PublicUserCont ) {
redisClient := redishandel . RunRedis ( )
isTrue = false
redisPrefix := "userInfo_" + global . GVA_CONFIG . RedisPrefix . PreFix + ":" + wechatId //redis KEY
redisCont , redisErr := redisClient . HashGetAll ( redisPrefix )
if redisErr == true {
myCont . Number = redisCont [ "number" ]
departmentid , departmentidErr := strconv . ParseInt ( redisCont [ "departmentid" ] , 10 , 64 )
if departmentidErr == nil {
myCont . DepartmentId = departmentid
}
workshop , workshopErr := strconv . ParseInt ( redisCont [ "workshopid" ] , 10 , 64 )
if workshopErr == nil {
myCont . WorkshopId = workshop
}
postid , postidErr := strconv . ParseInt ( redisCont [ "postid" ] , 10 , 64 )
if postidErr == nil {
myCont . PostId = postid
}
tema , temaErr := strconv . ParseInt ( redisCont [ "tema" ] , 10 , 64 )
if temaErr == nil {
myCont . Tema = tema
}
temakey , temakeyErr := strconv . ParseInt ( redisCont [ "key" ] , 10 , 64 )
if temakeyErr == nil {
myCont . Key = temakey
}
stateval , statevalErr := strconv . Atoi ( redisCont [ "key" ] )
if statevalErr == nil {
myCont . State = stateval
}
hireset , hiresetErr := strconv . Atoi ( redisCont [ "hireset" ] )
if hiresetErr == nil {
myCont . HireSet = hireset
}
groupset , groupsetErr := strconv . ParseInt ( redisCont [ "group" ] , 10 , 64 )
if groupsetErr == nil {
myCont . Group = groupset
}
myCont . WechatId = wechatId
myCont . Name = redisCont [ "name" ]
gender , genderErr := strconv . Atoi ( redisCont [ "gender" ] )
if genderErr == nil {
myCont . Gender = gender
}
age , ageErr := strconv . Atoi ( redisCont [ "age" ] )
if ageErr == nil {
myCont . Age = age
}
myCont . Tel = redisCont [ "tel" ]
category , categoryErr := strconv . Atoi ( redisCont [ "category" ] )
if categoryErr == nil {
myCont . Category = category
}
certificatestype , certificatestypeErr := strconv . Atoi ( redisCont [ "certificatestype" ] )
if certificatestypeErr == nil {
myCont . CertificatesType = certificatestype
}
myCont . CertificatesNum = redisCont [ "certificatesnum" ]
myCont . Birthday = redisCont [ "birthday" ]
myCont . EntryTime = redisCont [ "entrytime" ]
myCont . QuitTimeAttr = redisCont [ "quittimeattr" ]
myCont . Addrest = redisCont [ "addrest" ]
myCont . Icon = redisCont [ "icon" ]
myCont . NickName = redisCont [ "nickname" ]
myCont . DepartmentName = redisCont [ "departmentname" ]
myCont . WorkshopName = redisCont [ "workshopname" ]
myCont . PostName = redisCont [ "postname" ]
myCont . TemaName = redisCont [ "teamname" ]
isTrue = true
// fmt.Printf("1===============>%v\n", myCont)
} else {
var userCont hrsystem . ManCont
// global.GVA_DB_HrDataBase
userErr := global . GVA_DB_HrDataBase . Where ( "`wechat` = ? OR `work_wechat` = ?" , wechatId , wechatId ) . Find ( & userCont ) . Error
userInfo := MapOut ( )
if userErr == nil {
userIconUrl := ""
if userCont . Icon == "" {
wechatInfo , wechatInfoErr := GetWorkWechatDuiZhao ( wechatId )
if wechatInfoErr == true {
if wechatInfo . ThumbAvatar != "" {
userIconUrl = wechatInfo . ThumbAvatar
} else {
userIconUrl = wechatInfo . Avatar
}
}
} else {
userIconUrl = userCont . Icon
}
userInfo [ "number" ] = userCont . Number
userInfo [ "departmentid" ] = userCont . MainDeparment
userInfo [ "workshopid" ] = userCont . AdminOrg
userInfo [ "postid" ] = userCont . Position
userInfo [ "tema" ] = userCont . TeamId
userInfo [ "key" ] = userCont . Key
userInfo [ "state" ] = userCont . State
userInfo [ "hireset" ] = userCont . EmpType
userInfo [ "group" ] = userCont . Company
userInfo [ "wechatid" ] = wechatId
userInfo [ "name" ] = userCont . Name
userInfo [ "gender" ] = userCont . Gender
userInfo [ "age" ] = CalculateAge ( userCont . Birthday )
userInfo [ "tel" ] = userCont . Mobilephone
userInfo [ "category" ] = userCont . EmpType
userInfo [ "certificatestype" ] = 1
userInfo [ "certificatesnum" ] = userCont . Idcardno
userInfo [ "birthday" ] = TimeStampToDate ( userCont . Birthday , 6 )
userInfo [ "entrytime" ] = TimeStampToDate ( userCont . Entrydate , 6 )
userInfo [ "quittimeattr" ] = "至今"
userInfo [ "addrest" ] = userCont . Currentresidence
userInfo [ "icon" ] = userIconUrl
userInfo [ "nickname" ] = userCont . Name
isTrue = true
myCont . Number = userCont . Number
myCont . DepartmentId = userCont . MainDeparment
bfIsTrue , bfInfo := GetBranchFactory ( userCont . MainDeparment )
if bfIsTrue == true {
myCont . DepartmentName = bfInfo . Name
userInfo [ "departmentname" ] = bfInfo . Name
} else {
userInfo [ "departmentname" ] = ""
}
myCont . WorkshopId = userCont . AdminOrg
wsIsTrue , wsInfo := GetBranchFactory ( userCont . AdminOrg )
if wsIsTrue == true {
myCont . WorkshopName = wsInfo . Name
userInfo [ "workshopname" ] = wsInfo . Name
} else {
userInfo [ "workshopname" ] = ""
}
myCont . PostId = userCont . Position
posErr , posCont := GetPosition ( userCont . Position )
if posErr == true {
myCont . PostName = posCont . Name
userInfo [ "postname" ] = posCont . Name
} else {
userInfo [ "postname" ] = ""
}
myCont . Tema = userCont . TeamId
temErr , temCont := GetTeaming ( userCont . TeamId )
if temErr == true {
myCont . TemaName = temCont . Name
userInfo [ "teamname" ] = temCont . Name
} else {
userInfo [ "teamname" ] = ""
}
myCont . Key = userCont . Key
myCont . State = userCont . State
myCont . HireSet = userCont . EmpType
myCont . Group = userCont . Company
myCont . WechatId = wechatId
myCont . Name = userCont . Name
myCont . Gender = userCont . Gender
myCont . Age = CalculateAge ( userCont . Birthday )
myCont . Tel = userCont . Mobilephone
myCont . Category = userCont . EmpType
myCont . CertificatesType = 1
myCont . CertificatesNum = userCont . Idcardno
myCont . Birthday = TimeStampToDate ( userCont . Birthday , 6 )
myCont . EntryTime = TimeStampToDate ( userCont . Entrydate , 6 )
myCont . QuitTimeAttr = "至今"
myCont . Addrest = userCont . Currentresidence
myCont . Icon = userIconUrl
myCont . NickName = userCont . Name
redisClient . SetRedisTime ( 604800 )
redisClient . HashMsetAdd ( redisPrefix , userInfo )
// fmt.Printf("2===============>\n")
} else {
var userInfoStruct wechat . WechatUsers
myErr := global . GVA_DB_WatchDate . Where ( "userid = ?" , wechatId ) . First ( & userInfoStruct ) . Error
if myErr != nil {
return
}
groupContErr , groupCont := GetGroupInfo ( userInfoStruct . MainDepartment )
groupID := 1
if groupContErr == true {
var groupMap [ ] int
jsonErr := json . Unmarshal ( [ ] byte ( groupCont . Group ) , & groupMap )
if jsonErr == nil {
if len ( groupMap ) > 0 {
for g_index , g_val := range groupMap {
if g_index == 0 {
groupID = g_val
}
}
}
}
}
isTrue = true
tadyTime := time . Now ( ) . Unix ( )
userInfo [ "number" ] = userInfoStruct . UserNumber
userInfo [ "departmentid" ] = userInfoStruct . MainDepartment
userInfo [ "workshopid" ] = 0
userInfo [ "postid" ] = 0
userInfo [ "tema" ] = 0
userInfo [ "key" ] = 0
userInfo [ "state" ] = userInfoStruct . Status
userInfo [ "hireset" ] = 1
userInfo [ "group" ] = groupID
userInfo [ "wechatid" ] = wechatId
userInfo [ "name" ] = userInfoStruct . Name
userInfo [ "gender" ] = userInfoStruct . Gender
userInfo [ "age" ] = 0
userInfo [ "tel" ] = userInfoStruct . Mobile
userInfo [ "category" ] = 1
userInfo [ "certificatestype" ] = 1
userInfo [ "certificatesnum" ] = ""
userInfo [ "birthday" ] = TimeStampToDate ( 0 , 6 )
userInfo [ "entrytime" ] = TimeStampToDate ( tadyTime , 6 )
userInfo [ "quittimeattr" ] = TimeStampToDate ( 0 , 6 )
userInfo [ "addrest" ] = 0
userInfo [ "icon" ] = userInfoStruct . Avatar
userInfo [ "nickname" ] = userInfoStruct . Name
userInfo [ "departmentname" ] = ""
userInfo [ "workshopname" ] = ""
userInfo [ "postname" ] = ""
userInfo [ "teamname" ] = ""
myCont . Number = userInfoStruct . UserNumber
myCont . DepartmentId = userInfoStruct . MainDepartment
myCont . WorkshopId = 0
myCont . PostId = 0
myCont . Tema = 0
myCont . Key = 0
myCont . State = userInfoStruct . Status
myCont . HireSet = 1
myCont . Group = 1
myCont . WechatId = wechatId
myCont . Name = userInfoStruct . Name
myCont . Gender = userInfoStruct . Gender
myCont . Age = 1
myCont . Tel = userInfoStruct . Mobile
myCont . Category = 1
myCont . CertificatesType = 1
myCont . CertificatesNum = ""
myCont . Birthday = TimeStampToDate ( 0 , 6 )
myCont . EntryTime = TimeStampToDate ( tadyTime , 6 )
myCont . QuitTimeAttr = TimeStampToDate ( 0 , 6 )
myCont . Addrest = ""
myCont . Icon = userInfoStruct . Avatar
myCont . NickName = userInfoStruct . Name
redisClient . SetRedisTime ( 604800 )
redisClient . HashMsetAdd ( redisPrefix , userInfo )
// fmt.Printf("3===============>\n")
}
}
return
}
// 计算年龄
func CalculateAge ( birthday int64 ) ( shengRi int ) {
dangQianShijian := time . Now ( ) . Unix ( )
ageFloat := float64 ( dangQianShijian ) - float64 ( birthday )
bData := math . Ceil ( ageFloat / 31536000 )
jsonStr , _ := json . Marshal ( bData )
json . Unmarshal ( jsonStr , shengRi )
return
}
func GetUesrContForWechatIDOld ( wechatId string ) ( isTrue bool , myCont PublicUserCont ) {
redisClient := redishandel . RunRedis ( )
isTrue = false
redisPrefix := "userInfo_" + global . GVA_CONFIG . RedisPrefix . PreFix + ":" + wechatId //redis KEY
redisCont , redisErr := redisClient . HashGetAll ( redisPrefix )
if redisErr == true {
myCont . Number = redisCont [ "number" ]
departmentid , departmentidErr := strconv . ParseInt ( redisCont [ "departmentid" ] , 10 , 64 )
if departmentidErr == nil {
myCont . DepartmentId = departmentid
}
workshop , workshopErr := strconv . ParseInt ( redisCont [ "workshopid" ] , 10 , 64 )
if workshopErr == nil {
myCont . WorkshopId = workshop
}
postid , postidErr := strconv . ParseInt ( redisCont [ "postid" ] , 10 , 64 )
if postidErr == nil {
myCont . PostId = postid
}
tema , temaErr := strconv . ParseInt ( redisCont [ "tema" ] , 10 , 64 )
if temaErr == nil {
myCont . Tema = tema
}
temakey , temakeyErr := strconv . ParseInt ( redisCont [ "key" ] , 10 , 64 )
if temakeyErr == nil {
myCont . Key = temakey
}
stateval , statevalErr := strconv . Atoi ( redisCont [ "key" ] )
if statevalErr == nil {
myCont . State = stateval
}
hireset , hiresetErr := strconv . Atoi ( redisCont [ "hireset" ] )
if hiresetErr == nil {
myCont . HireSet = hireset
}
groupset , groupsetErr := strconv . ParseInt ( redisCont [ "group" ] , 10 , 64 )
if groupsetErr == nil {
myCont . Group = groupset
}
myCont . WechatId = wechatId
myCont . Name = redisCont [ "name" ]
gender , genderErr := strconv . Atoi ( redisCont [ "gender" ] )
if genderErr == nil {
myCont . Gender = gender
}
age , ageErr := strconv . Atoi ( redisCont [ "age" ] )
if ageErr == nil {
myCont . Age = age
}
myCont . Tel = redisCont [ "tel" ]
category , categoryErr := strconv . Atoi ( redisCont [ "category" ] )
if categoryErr == nil {
myCont . Category = category
}
certificatestype , certificatestypeErr := strconv . Atoi ( redisCont [ "certificatestype" ] )
if certificatestypeErr == nil {
myCont . CertificatesType = certificatestype
}
myCont . CertificatesNum = redisCont [ "certificatesnum" ]
myCont . Birthday = redisCont [ "birthday" ]
myCont . EntryTime = redisCont [ "entrytime" ]
myCont . QuitTimeAttr = redisCont [ "quittimeattr" ]
myCont . Addrest = redisCont [ "addrest" ]
myCont . Icon = redisCont [ "icon" ]
myCont . NickName = redisCont [ "nickname" ]
myCont . DepartmentName = redisCont [ "departmentname" ]
myCont . WorkshopName = redisCont [ "workshopname" ]
myCont . PostName = redisCont [ "postname" ]
myCont . TemaName = redisCont [ "teamname" ]
isTrue = true
// fmt.Printf("1===============>%v\n", myCont)
} else {
var userCont testpage . PersonalDetails
userErr := global . GVA_DB_Master . Model ( & testpage . WorkMan { } ) . Select ( "worker_man.*" , "worker_man_data.*" ) . Joins ( "left join worker_man_data on worker_man_data.wmd_key = worker_man.wm_key" ) . Where ( "`qywx_key` = ? OR `wx_key` = ?" , wechatId , wechatId ) . Find ( & userCont ) . Error
userInfo := MapOut ( )
if userErr == nil {
userIconUrl := ""
if userCont . Icon == "" {
wechatInfo , wechatInfoErr := GetWorkWechatDuiZhao ( wechatId )
if wechatInfoErr == true {
if wechatInfo . ThumbAvatar != "" {
userIconUrl = wechatInfo . ThumbAvatar
} else {
userIconUrl = wechatInfo . Avatar
}
}
} else {
userIconUrl = userCont . Icon
}
userInfo [ "number" ] = userCont . Number
userInfo [ "departmentid" ] = userCont . DepartmentId
userInfo [ "workshopid" ] = userCont . WorkshopId
userInfo [ "postid" ] = userCont . PostId
userInfo [ "tema" ] = userCont . Tema
userInfo [ "key" ] = userCont . Key
userInfo [ "state" ] = userCont . State
userInfo [ "hireset" ] = userCont . HireSet
userInfo [ "group" ] = userCont . Group
userInfo [ "wechatid" ] = wechatId
userInfo [ "name" ] = userCont . Name
userInfo [ "gender" ] = userCont . Gender
userInfo [ "age" ] = userCont . Age
userInfo [ "tel" ] = userCont . Tel
userInfo [ "category" ] = userCont . Category
userInfo [ "certificatestype" ] = userCont . CertificatesType
userInfo [ "certificatesnum" ] = userCont . CertificatesNum
userInfo [ "birthday" ] = TimeStampToDate ( userCont . Birthday , 6 )
userInfo [ "entrytime" ] = TimeStampToDate ( userCont . EntryTime , 6 )
userInfo [ "quittimeattr" ] = TimeStampToDate ( userCont . QuitTimeAttr , 6 )
userInfo [ "addrest" ] = userCont . Addrest
userInfo [ "icon" ] = userIconUrl
userInfo [ "nickname" ] = userCont . NickName
isTrue = true
myCont . Number = userCont . Number
myCont . DepartmentId = userCont . DepartmentId
bfIsTrue , bfInfo := GetBranchFactory ( userCont . DepartmentId )
if bfIsTrue == true {
myCont . DepartmentName = bfInfo . Name
userInfo [ "departmentname" ] = bfInfo . Name
} else {
userInfo [ "departmentname" ] = ""
}
myCont . WorkshopId = userCont . WorkshopId
wsIsTrue , wsInfo := GetWorkShopSection ( userCont . WorkshopId )
if wsIsTrue == true {
myCont . WorkshopName = wsInfo . Name
userInfo [ "workshopname" ] = wsInfo . Name
} else {
userInfo [ "workshopname" ] = ""
}
myCont . PostId = userCont . PostId
posErr , posCont := GetPosition ( userCont . PostId )
if posErr == true {
myCont . PostName = posCont . Name
userInfo [ "postname" ] = posCont . Name
} else {
userInfo [ "postname" ] = ""
}
myCont . Tema = userCont . Tema
temErr , temCont := GetTeaming ( userCont . Tema )
if temErr == true {
myCont . TemaName = temCont . Name
userInfo [ "teamname" ] = temCont . Name
} else {
userInfo [ "teamname" ] = ""
}
myCont . Key = userCont . Key
myCont . State = userCont . State
myCont . HireSet = userCont . HireSet
myCont . Group = userCont . Group
myCont . WechatId = wechatId
myCont . Name = userCont . Name
myCont . Gender = userCont . Gender
myCont . Age = userCont . Age
myCont . Tel = userCont . Tel
myCont . Category = userCont . Category
myCont . CertificatesType = userCont . CertificatesType
myCont . CertificatesNum = userCont . CertificatesNum
myCont . Birthday = TimeStampToDate ( userCont . Birthday , 6 )
myCont . EntryTime = TimeStampToDate ( userCont . EntryTime , 6 )
myCont . QuitTimeAttr = TimeStampToDate ( userCont . QuitTimeAttr , 6 )
myCont . Addrest = userCont . Addrest
myCont . Icon = userIconUrl
myCont . NickName = userCont . NickName
redisClient . SetRedisTime ( 604800 )
redisClient . HashMsetAdd ( redisPrefix , userInfo )
// fmt.Printf("2===============>\n")
} else {
var userInfoStruct wechat . WechatUsers
myErr := global . GVA_DB_WatchDate . Where ( "userid = ?" , wechatId ) . First ( & userInfoStruct ) . Error
if myErr != nil {
return
}
groupContErr , groupCont := GetGroupInfo ( userInfoStruct . MainDepartment )
groupID := 1
if groupContErr == true {
var groupMap [ ] int
jsonErr := json . Unmarshal ( [ ] byte ( groupCont . Group ) , & groupMap )
if jsonErr == nil {
if len ( groupMap ) > 0 {
for g_index , g_val := range groupMap {
if g_index == 0 {
groupID = g_val
}
}
}
}
}
isTrue = true
tadyTime := time . Now ( ) . Unix ( )
userInfo [ "number" ] = userInfoStruct . UserNumber
userInfo [ "departmentid" ] = userInfoStruct . MainDepartment
userInfo [ "workshopid" ] = 0
userInfo [ "postid" ] = 0
userInfo [ "tema" ] = 0
userInfo [ "key" ] = 0
userInfo [ "state" ] = userInfoStruct . Status
userInfo [ "hireset" ] = 1
userInfo [ "group" ] = groupID
userInfo [ "wechatid" ] = wechatId
userInfo [ "name" ] = userInfoStruct . Name
userInfo [ "gender" ] = userInfoStruct . Gender
userInfo [ "age" ] = 0
userInfo [ "tel" ] = userInfoStruct . Mobile
userInfo [ "category" ] = 1
userInfo [ "certificatestype" ] = 1
userInfo [ "certificatesnum" ] = ""
userInfo [ "birthday" ] = TimeStampToDate ( 0 , 6 )
userInfo [ "entrytime" ] = TimeStampToDate ( tadyTime , 6 )
userInfo [ "quittimeattr" ] = TimeStampToDate ( 0 , 6 )
userInfo [ "addrest" ] = 0
userInfo [ "icon" ] = userInfoStruct . Avatar
userInfo [ "nickname" ] = userInfoStruct . Name
userInfo [ "departmentname" ] = ""
userInfo [ "workshopname" ] = ""
userInfo [ "postname" ] = ""
userInfo [ "teamname" ] = ""
myCont . Number = userInfoStruct . UserNumber
myCont . DepartmentId = userInfoStruct . MainDepartment
myCont . WorkshopId = 0
myCont . PostId = 0
myCont . Tema = 0
myCont . Key = 0
myCont . State = userInfoStruct . Status
myCont . HireSet = 1
myCont . Group = 1
myCont . WechatId = wechatId
myCont . Name = userInfoStruct . Name
myCont . Gender = userInfoStruct . Gender
myCont . Age = 1
myCont . Tel = userInfoStruct . Mobile
myCont . Category = 1
myCont . CertificatesType = 1
myCont . CertificatesNum = ""
myCont . Birthday = TimeStampToDate ( 0 , 6 )
myCont . EntryTime = TimeStampToDate ( tadyTime , 6 )
myCont . QuitTimeAttr = TimeStampToDate ( 0 , 6 )
myCont . Addrest = ""
myCont . Icon = userInfoStruct . Avatar
myCont . NickName = userInfoStruct . Name
redisClient . SetRedisTime ( 604800 )
redisClient . HashMsetAdd ( redisPrefix , userInfo )
// fmt.Printf("3===============>\n")
}
}
return
}
// 获得分厂名称
func GetBranchFactory ( id int64 ) ( isTrue bool , ContInfo hrsystem . AdministrativeOrganization ) {
isTrue = false
err := global . GVA_DB_HrDataBase . Where ( "`Id` = ?" , id ) . First ( & ContInfo ) . Error
if err == nil {
isTrue = true
}
return
}
func GetBranchFactoryOld ( id int64 ) ( isTrue bool , ContInfo testpage . BranchFactory ) {
isTrue = false
err := global . GVA_DB_Master . Where ( "bf_id = ?" , id ) . First ( & ContInfo ) . Error
if err == nil {
isTrue = true
}
return
}
// 获取职务信息
func GetPosition ( id int64 ) ( isTrue bool , content hrsystem . Position ) {
isTrue = false
err := global . GVA_DB_HrDataBase . Where ( "`id` = ?" , id ) . First ( & content ) . Error
if err == nil {
isTrue = true
}
return
}
func GetPositionOld ( id int64 ) ( isTrue bool , content testpage . Position ) {
isTrue = false
err := global . GVA_DB_Master . Where ( "ps_id = ?" , id ) . First ( & content ) . Error
if err == nil {
isTrue = true
}
return
}
// 获取班组信息
func GetTeaming ( id int64 ) ( isTrue bool , content hrsystem . TeamGroup ) {
isTrue = false
err := global . GVA_DB_HrDataBase . Where ( "`id` = ?" , id ) . First ( & content ) . Error
if err == nil {
isTrue = true
}
return
}
// 获取职务最大权重ID
func GetPositionMaxWeight ( departmentID int64 ) ( isTrue bool , content testpage . Position ) {
isTrue = false
selectData := MapOut ( )
err := global . GVA_DB_Master . Model ( & testpage . Position { } ) . Select ( "MAX(ps_weight) AS weight" ) . Where ( "ps_bf_id = ?" , departmentID ) . First ( & selectData ) . Error
if err != nil {
return
}
conErr := global . GVA_DB_Master . Where ( "ps_bf_id = ? AND ps_weight = ?" , departmentID , selectData [ "weight" ] ) . First ( & content ) . Error
if conErr == nil {
isTrue = true
}
return
}
// 获取职责内容
func GetDutyContDepart ( id int64 ) ( isTrue bool , dutyAssClass DutyAssClass ) {
isTrue = false
var dutyCont assessmentmodel . DepartDuty
err := global . GVA_DB_Performanceappraisal . Where ( "de_id = ?" , id ) . First ( & dutyCont ) . Error
if err != nil {
return
}
if dutyCont . State != 1 {
return
}
var dutyConts assessmentmodel . DutyContent
errCont := global . GVA_DB_Performanceappraisal . Where ( "dc_id = ?" , dutyCont . DutyId ) . First ( & dutyConts ) . Error
if errCont != nil {
return
}
if dutyConts . State != 1 {
return
}
dutyAssClass . Title = dutyConts . Title
dutyAssClass . ClassId = dutyCont . ClassId
dutyAssClass . AssessId = dutyCont . AssessId
var dutyClass assessmentmodel . DutyClass
errClass := global . GVA_DB_Performanceappraisal . Where ( "id = ?" , dutyCont . ClassId ) . First ( & dutyClass ) . Error
if errClass == nil {
dutyAssClass . ClassTitle = dutyClass . Title
}
var dutyassess assessmentmodel . AssessMentitems
errAss := global . GVA_DB_Performanceappraisal . Where ( "ai_id = ?" , dutyCont . AssessId ) . First ( & dutyassess ) . Error
if errAss == nil {
dutyAssClass . AssTitle = dutyassess . Title
}
isTrue = true
return
}
// 获取集团信息
func GetGroupCont ( id int64 ) ( isTrue bool , ContInfo wechat . GroupForm ) {
isTrue = false
err := global . GVA_DB_WatchDate . Where ( "g_id = ?" , id ) . First ( & ContInfo ) . Error
if err == nil {
isTrue = true
}
return
}
// 获取考核细则相关内容
func GetDutyCont ( field , whereData interface { } ) ( isTrue bool , outData map [ string ] interface { } ) {
isTrue = false
errAss := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DutyContent { } ) . Select ( field ) . Where ( whereData ) . First ( & outData ) . Error
if errAss != nil {
return
}
isTrue = true
return
}
// 获取人员信息
func GetUserInfoPublic ( field interface { } , whereMap map [ string ] interface { } ) ( userCont hrsystem . ManCont , isTrue bool ) {
isTrue = false
// var userInfo testpage.WorkMan
userErr := global . GVA_DB_HrDataBase . Model ( & userCont ) . Select ( field ) . Where ( whereMap ) . Find ( & userCont ) . Error
if userErr == nil {
isTrue = true
}
return
}
func GetUserInfoPublicOld ( field interface { } , whereMap map [ string ] interface { } ) ( userCont testpage . PersonalDetails , isTrue bool ) {
isTrue = false
var userInfo testpage . WorkMan
userErr := global . GVA_DB_Master . Model ( & userInfo ) . Select ( field ) . Joins ( "left join worker_man_data on worker_man_data.wmd_key = worker_man.wm_key" ) . Where ( whereMap ) . Find ( & userCont ) . Error
if userErr == nil {
isTrue = true
}
return
}
// 获取考核指标信息
func GetTargetInfo ( id int64 ) ( content assessmentmodel . EvaluationTarget , isTrue bool ) {
isTrue = false
err := global . GVA_DB_Performanceappraisal . Where ( "et_id = ?" , id ) . First ( & content ) . Error
if err == nil {
isTrue = true
}
return
}
// 获取考核指标信息
func GetQualitativeTargetInfo ( id int64 ) ( content assessmentmodel . QualitativeTarget , isTrue bool ) {
isTrue = false
err := global . GVA_DB_Performanceappraisal . Where ( "q_id = ?" , id ) . First ( & content ) . Error
if err == nil {
isTrue = true
}
return
}
// 获取考核指标细则
func GetDetailedTargetInfo ( id int64 ) ( content assessmentmodel . DetailedTarget , isTrue bool ) {
isTrue = false
if id == 0 {
return
}
err := global . GVA_DB_Performanceappraisal . Where ( "dt_id = ?" , id ) . First ( & content ) . Error
if err == nil {
isTrue = true
}
return
}
// 获取考核指标细则
func GetDetailedTargetInfoWher ( wher interface { } , filed ... string ) ( content assessmentmodel . DetailedTarget , isTrue bool ) {
isTrue = false
goromDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DetailedTarget { } )
if len ( filed ) > 0 {
fieldStr := strings . Join ( filed , "," )
goromDb = goromDb . Select ( fieldStr )
}
err := goromDb . Where ( wher ) . First ( & content ) . Error
if err == nil {
isTrue = true
}
return
}
// 获取考核指标细则
func GetDetailedTargetInfoTitle ( id int64 , title string ) ( content assessmentmodel . DetailedTarget , isTrue bool ) {
isTrue = false
gormDb := global . GVA_DB_Performanceappraisal
if title != "" {
gormDb = gormDb . Where ( "dt_title LIKE ?" , title )
}
err := gormDb . Where ( "dt_id = ?" , id ) . First ( & content ) . Error
if err == nil {
isTrue = true
}
return
}
// 获取考核类别
func GetDutyClassInfo ( id int64 ) ( content assessmentmodel . DutyClass , isTrue bool ) {
isTrue = false
err := global . GVA_DB_Performanceappraisal . Where ( "id = ?" , id ) . First ( & content ) . Error
if err == nil {
isTrue = true
}
return
}
// 添加维度指标或维度权重
func AddDimenTargetWeight ( setType , group , departmentID , dimensionId , targetId int64 ) {
var weightSum int64 = 0
// fmt.Printf("1-----@---2------->%v\n", targetId)
if targetId != 0 {
weghtErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Where ( "`qe_state` = 1 AND `qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ? AND `qe_target` = ?" , group , departmentID , dimensionId , targetId ) . Pluck ( "COALESCE(SUM(qe_reference_score), 0) as qe_reference_score" , & weightSum ) . Error
// msg = fmt.Sprintf("1-----@---1------->%v\n", weightSum)
if weghtErr == nil {
var ddwCont assessmentmodel . DepartmentDimensionWeight
judgeTrue := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimensionWeight { } ) . Select ( "ddw_id" ) . Where ( "`ddw_hierarchy` = 2 AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ? AND `ddw_target` = ?" , group , departmentID , dimensionId , targetId ) . First ( & ddwCont ) . Error
if judgeTrue == nil {
targetWeightMap := MapOut ( )
targetWeightMap [ "ddw_hierarchy" ] = 2
targetWeightMap [ "ddw_type" ] = setType
targetWeightMap [ "ddw_weight" ] = weightSum
targetWeightMap [ "ddw_time" ] = time . Now ( ) . Unix ( )
// global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("`ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ? AND `ddw_target` = ?", group, departmentID, dimensionId, targetId).Updates(&targetWeightMap)
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimensionWeight { } ) . Where ( "`ddw_id` = ?" , ddwCont . Id ) . Updates ( & targetWeightMap )
// msg = fmt.Sprintf("1--------1------->%v\n", weightSum)
} else {
var saveData assessmentmodel . DepartmentDimensionWeight
saveData . Group = group
saveData . DepartmentId = departmentID
saveData . Dimension = dimensionId
saveData . Target = targetId
saveData . Weight = weightSum
saveData . Addtime = time . Now ( ) . Unix ( )
saveData . Type = int64 ( setType )
saveData . Hierarchy = 2
global . GVA_DB_Performanceappraisal . Create ( & saveData )
// msg = fmt.Sprintf("2--------1------->%v\n", weightSum)
}
} else {
var saveData assessmentmodel . DepartmentDimensionWeight
saveData . Group = group
saveData . DepartmentId = departmentID
saveData . Dimension = dimensionId
saveData . Target = targetId
saveData . Weight = weightSum
saveData . Addtime = time . Now ( ) . Unix ( )
saveData . Type = int64 ( setType )
saveData . Hierarchy = 2
global . GVA_DB_Performanceappraisal . Create ( & saveData )
// msg = fmt.Sprintf("3--------1------->%v\n", weightSum)
}
AddDimensionWeight ( setType , group , departmentID , dimensionId )
}
// return
}
func AddDimensionWeight ( setType , group , departmentID , dimensionId int64 ) {
var weightSum int64 = 0
fmt . Printf ( "1-------@-------->%v\n" , departmentID )
if dimensionId != 0 {
weghtErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Where ( "`qe_state` = 1 AND `qe_group` = ? AND `qe_accept_evaluation` = ? AND `qe_dimension` = ?" , group , departmentID , dimensionId ) . Pluck ( "COALESCE(SUM(qe_reference_score), 0) as qe_reference_score" , & weightSum ) . Error
if weghtErr == nil {
var ddwCont assessmentmodel . DepartmentDimensionWeight
judgeTrue := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimensionWeight { } ) . Select ( "ddw_id" ) . Where ( "`ddw_hierarchy` = 1 AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?" , group , departmentID , dimensionId ) . First ( & ddwCont ) . Error
if judgeTrue == nil {
targetWeightMap := MapOut ( )
targetWeightMap [ "ddw_hierarchy" ] = 1
targetWeightMap [ "ddw_type" ] = setType
targetWeightMap [ "ddw_weight" ] = weightSum
targetWeightMap [ "ddw_time" ] = time . Now ( ) . Unix ( )
// global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.DepartmentDimensionWeight{}).Where("`ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ? AND `ddw_target` = ?", group, departmentID, dimensionId, targetId).Updates(&targetWeightMap)
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimensionWeight { } ) . Where ( "`ddw_id` = ?" , ddwCont . Id ) . Updates ( & targetWeightMap )
// fmt.Printf("1--------------->%v\n", weightSum)
} else {
var saveData assessmentmodel . DepartmentDimensionWeight
saveData . Group = group
saveData . DepartmentId = departmentID
saveData . Dimension = dimensionId
saveData . Target = 0
saveData . Weight = weightSum
saveData . Addtime = time . Now ( ) . Unix ( )
saveData . Type = int64 ( setType )
saveData . Hierarchy = 1
global . GVA_DB_Performanceappraisal . Create ( & saveData )
// fmt.Printf("2--------------->%v\n", weightSum)
}
} else {
var saveData assessmentmodel . DepartmentDimensionWeight
saveData . Group = group
saveData . DepartmentId = departmentID
saveData . Dimension = dimensionId
saveData . Target = 0
saveData . Weight = weightSum
saveData . Addtime = time . Now ( ) . Unix ( )
saveData . Type = int64 ( setType )
saveData . Hierarchy = 1
global . GVA_DB_Performanceappraisal . Create ( & saveData )
// fmt.Printf("3--------------->%v\n", weightSum)
}
}
}
// 获取维度或指标权重
func GetDimesionTargetWeight ( setType , group , departmentID , dimensionId , targetId int64 ) ( weight int64 ) {
var ddwCont assessmentmodel . DepartmentDimensionWeight
gormDb := global . GVA_DB_Performanceappraisal
gormDb = gormDb . Select ( "ddw_weight" ) . Where ( "`ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?" , group , departmentID , dimensionId )
if setType == 2 {
gormDb = gormDb . Where ( "`ddw_hierarchy` = 2 AND `ddw_target` = ?" , targetId )
} else {
gormDb = gormDb . Where ( "`ddw_hierarchy` = 1" )
}
judgeTrue := gormDb . First ( & ddwCont ) . Error
if judgeTrue != nil {
weight = 0
} else {
weight = ddwCont . Weight
}
return
}
// 根据部门获取内勤数据
func GetOfficeWork ( id , departmentId int64 ) ( isTrue bool , roleUser [ ] roleGroupBodyAry , roleGroup systemuser . RoleGroup ) {
isTrue = false
departID := strconv . FormatInt ( departmentId , 10 )
// var roleGroup systemuser.RoleGroup
if id == 0 {
return
}
err := global . GVA_DB_Master . Where ( "`srg_id` = ?" , id ) . First ( & roleGroup ) . Error //16118387069540343
if err != nil {
return
}
roleAry := MapOut ( )
errMap := json . Unmarshal ( [ ] byte ( roleGroup . Contentes ) , & roleAry )
if errMap != nil {
return
}
for i , v := range roleAry {
// roleArys := MapOut()
if i == departID {
jsonMAp , _ := json . Marshal ( v )
jsonErrs := json . Unmarshal ( jsonMAp , & roleUser )
if jsonErrs == nil {
isTrue = true
}
// fmt.Printf("%v------->%v------->%v\n", i, roleGroup, roleUser)
}
}
return
}
// 获取企业微信信息接收人
func GetSendMsgUser ( id , departmentId int64 ) ( isTrue bool , userStr string ) {
isTrue = false
// err, departmentCont := GetBranchFactory(departmentId)
// if err != true {
// return
// }
departWhere := MapOut ( )
departWhere [ "id" ] = departmentId
departmentCont , errDepart := GetNewOrgCont ( departWhere , "wechat_organization_id" )
if errDepart != nil {
return
}
err , roleGroup , _ := GetOfficeWork ( id , int64 ( departmentCont . WechatOrganizationId ) )
if err != true {
return
}
var userList [ ] string
for _ , v := range roleGroup {
userList = append ( userList , v . Id )
}
if len ( userList ) > 0 {
userStr = strings . Join ( userList , "|" )
isTrue = true
}
return
}
// 获取企业微信信息接收人数组形态
func GetSendMsgUserAry ( id , departmentId int64 ) ( isTrue bool , userStr [ ] string ) {
isTrue = false
// err, departmentCont := GetBranchFactory(departmentId)
// if err != true {
// return
// }
// err, roleGroup, _ := GetOfficeWork(id, int64(departmentCont.WechatId))
departWhere := MapOut ( )
departWhere [ "id" ] = departmentId
departmentCont , errDepart := GetNewOrgCont ( departWhere , "wechat_organization_id" )
if errDepart != nil {
return
}
err , roleGroup , _ := GetOfficeWork ( id , int64 ( departmentCont . WechatOrganizationId ) )
if err != true {
return
}
var userList [ ] string
for _ , v := range roleGroup {
userList = append ( userList , v . Id )
}
if len ( userList ) > 0 {
// userStr = strings.Join(userList, "|")
userStr = userList
isTrue = true
}
return
}
// 获取加减分订单
func GetScoreFlow ( orderId string ) ( content assessmentmodel . ScoreFlow , isTrue bool ) {
isTrue = false
judgeErr := global . GVA_DB_Performanceappraisal . Where ( "`sf_key` = ?" , orderId ) . First ( & content ) . Error
if judgeErr == nil {
isTrue = true
}
return
}
// 审批流程
func GetEvaluationProcess ( orderId string ) ( content assessmentmodel . EvaluationProcess , isTrue bool ) {
isTrue = false
judgeErr := global . GVA_DB_Performanceappraisal . Where ( "`ep_order_key` = ?" , orderId ) . First ( & content ) . Error
if judgeErr == nil {
isTrue = true
}
return
}
// 考核方案
func GetQualitativeEvaluation ( orderId string ) ( content assessmentmodel . QualitativeEvaluation , isTrue bool ) {
isTrue = false
judgeErr := global . GVA_DB_Performanceappraisal . Where ( "`qe_id` = ?" , orderId ) . First ( & content ) . Error
if judgeErr == nil {
isTrue = true
}
return
}
//获取考核项目关联项目
/ *
@ orderId 加减分订单Id
returnData
# targettitle 指标名称
# detailedRulesTitle 明细
# detailedRulesInfo 明细说明
* /
func GetDutyAssociatedItems ( orderId string ) ( targettitle , detailedRulesTitle , detailedRulesInfo , unit string , flowContent assessmentmodel . ScoreFlow , qualEvalCont assessmentmodel . QualitativeEvaluation , isTrue bool ) {
flowContent , isTrue = GetScoreFlow ( orderId )
if isTrue != true {
return
}
qualEvalCont , qualEvalErr := GetQualitativeEvaluation ( strconv . FormatInt ( flowContent . EvaluationPlan , 10 ) )
if qualEvalErr != true {
return
}
unit = qualEvalCont . Unit
targetCont , targetErr := GetTargetInfo ( qualEvalCont . Target )
if targetErr == true {
targettitle = targetCont . Title
unit = targetCont . Uniteing
}
detailedTargetCont , detailedTargetErr := GetDetailedTargetInfo ( qualEvalCont . Target )
if detailedTargetErr == true {
detailedRulesTitle = detailedTargetCont . Title
detailedRulesInfo = detailedTargetCont . Content
}
isTrue = true
return
}
// 获取加减分订单
func GetFlowLog ( orderId string ) ( content assessmentmodel . FlowLog , isTrue bool ) {
isTrue = false
judgeErr := global . GVA_DB_Performanceappraisal . Where ( "`fl_key` = ?" , orderId ) . First ( & content ) . Error
if judgeErr == nil {
isTrue = true
}
return
}
/ *
@ orderId 加减分订单Id
returnData
# targettitle 指标名称
# detailedRulesTitle 明细
# detailedRulesInfo 明细说明
* /
func GetDutyRationtedItems ( orderId string ) ( targettitle , detailedRulesTitle , detailedRulesInfo , unit string , flowContent assessmentmodel . FlowLog , isTrue bool ) {
flowContent , isTrue = GetFlowLog ( orderId )
if isTrue != true {
return
}
qualEvalCont , qualEvalErr := GetQualitativeEvaluation ( flowContent . EvaluationPlan )
if qualEvalErr != true {
return
}
unit = qualEvalCont . Unit
targetCont , targetErr := GetTargetInfo ( qualEvalCont . Target )
if targetErr == true {
targettitle = targetCont . Title
unit = targetCont . Uniteing
}
detailedTargetCont , detailedTargetErr := GetDetailedTargetInfo ( qualEvalCont . Target )
if detailedTargetErr == true {
detailedRulesTitle = detailedTargetCont . Title
detailedRulesInfo = detailedTargetCont . Content
}
isTrue = true
return
}
// 获取角色组
func GetRoleGroup ( id int64 ) ( roleGroup systemuser . RoleGroup , isTrue bool ) {
isTrue = false
err := global . GVA_DB_Master . Where ( "`srg_id` = ?" , id ) . First ( & roleGroup ) . Error //16118387069540343
if err != nil {
return
}
isTrue = true
return
}
// 根据userkey 用户获取信息
func GetWorkUser ( key string ) ( userCont hrsystem . PersonArchives , isTrue bool ) {
isTrue = false
userErr := global . GVA_DB_HrDataBase . Model ( & userCont ) . Where ( "`key` = ?" , key ) . First ( & userCont ) . Error
if userErr == nil {
isTrue = true
}
iconUrl := ""
if userCont . Icon == "" {
if userCont . Wechat != "" {
wechatInfo , wechatErr := GetWorkWechatDuiZhao ( userCont . Wechat )
if wechatErr == true {
iconUrl = wechatInfo . Avatar
userCont . Icon = iconUrl
}
}
if userCont . WorkWechat != "" {
if iconUrl == "" {
wechatWorkInfo , wechatWorkErr := GetWorkWechatDuiZhao ( userCont . WorkWechat )
if wechatWorkErr == true {
iconUrl = wechatWorkInfo . Avatar
userCont . Icon = iconUrl
}
}
}
}
return
}
func GetWorkUserOld ( key string ) ( userCont testpage . PersonalDetails , isTrue bool ) {
isTrue = false
var userInfo testpage . WorkMan
userErr := global . GVA_DB_Master . Model ( & userInfo ) . Select ( "worker_man.*,worker_man_data.*" ) . Joins ( "left join worker_man_data on worker_man_data.wmd_key = worker_man.wm_key" ) . Where ( "wm_key = ?" , key ) . First ( & userCont ) . Error
if userErr == nil {
isTrue = true
}
iconUrl := ""
if userCont . Icon == "" {
if userCont . WechatId != "" {
wechatInfo , wechatErr := GetWorkWechatDuiZhao ( userCont . WechatId )
if wechatErr == true {
iconUrl = wechatInfo . Avatar
userCont . Icon = iconUrl
}
}
if userCont . WorkWechatId != "" {
if iconUrl == "" {
wechatWorkInfo , wechatWorkErr := GetWorkWechatDuiZhao ( userCont . WorkWechatId )
if wechatWorkErr == true {
iconUrl = wechatWorkInfo . Avatar
userCont . Icon = iconUrl
}
}
}
}
return
}
type sendMsg struct {
Title string ` json:"title" `
Unit string ` json:"unit" ` //单位"`
Cycles int ` json:"cycle" ` //1:班;2:天;3:周;4:月;5:季度;6:年"`
CycleAttres int ` json:"cycleattr" ` //辅助计数"`
Dimension int64 ` json:"dimension" ` //维度"`
Target int64 ` json:"target" ` //指标"`
DetailedTarget int64 ` json:"detailedtarget" ` //指标细则"`
}
// 查看定量考核数据
func LookRationInfo ( id int64 ) ( cont sendMsg , isTrue bool ) {
isTrue = false
qeInfo , isTrue := GetQualitativeEvaluation ( strconv . FormatInt ( id , 10 ) )
if isTrue == false {
return
}
cont . Cycles = qeInfo . Cycles
cont . CycleAttres = qeInfo . CycleAttres
cont . Target = qeInfo . Target
targetCong , isTrues := GetTargetInfo ( qeInfo . Target )
if isTrues == false {
return
}
cont . Title = targetCong . Title
cont . Unit = targetCong . Uniteing
isTrue = true
if qeInfo . DetailedTarget != 0 {
deTarInfo , isTruees := GetDetailedTargetInfo ( qeInfo . DetailedTarget )
if isTruees == true {
cont . Title = deTarInfo . Title
}
}
cont . Dimension = qeInfo . Dimension
cont . DetailedTarget = qeInfo . DetailedTarget
return
}
// 获取企业微信对照表
func GetWorkWechatDuiZhao ( openid string ) ( userInfoStruct wechat . WechatUsers , isTrue bool ) {
isTrue = false
myErr := global . GVA_DB_WatchDate . Where ( "userid = ?" , openid ) . First ( & userInfoStruct ) . Error
if myErr == nil {
isTrue = true
}
return
}
//步骤内容写入
/ * StepAddData ( flowID , roleGroupId , nextStep , stepName , typeclass , state , stepInt , userKey )
@ flowID 流程ID
@ userKey 操作人key
@ roleGroupId 角色组Id
@ stepName 步骤名称
@ typeclass 1 、 定性 ; 2 、 定量
@ state 状态
@ stepInt 当前是第几部
@ recStrat 是否改正
@ nextStep 下一步
* /
func StepAddData ( flowID , roleGroupId int64 , nextStep , stepName , typeclass , state , stepInt int , userKey string ) {
if state < 1 {
state = 1
}
var evalProCont assessmentmodel . EvaluationProcess
judgeErr := global . GVA_DB_Performanceappraisal . Where ( "`ep_order_key` = ?" , flowID ) . First ( & evalProCont ) . Error
var flowStepAryMap [ ] FlowStep
fmt . Printf ( "evalProCont---------%v----------------->%v\n" , judgeErr , evalProCont )
if judgeErr != nil {
var flowSteping FlowStep
flowSteping . Step = 1
flowSteping . StepName = GetSetpName ( stepName ) //步骤名称
flowSteping . Key = strconv . FormatInt ( flowID , 10 ) //流程ID
flowSteping . State = 2 // (1:为操作;2:已操作;3:驳回)
flowSteping . RoleGroup = roleGroupId //角色组
flowSteping . NextStep = 2 //下一步 1:创建;2:创建人部门负责人审批:3:责任划分;4:责任部门审批;5:主要责任人整改;6:责任部门审批;7:验收
flowSteping . ClickName = userKey //操作人
flowSteping . AddTime = time . Now ( ) . Unix ( ) //添加时间
flowStepAryMap = append ( flowStepAryMap , flowSteping )
evalProCont . OrderKey = flowID
evalProCont . Step = 1
evalProCont . State = state
evalProCont . TypeClass = typeclass
evalProCont . Time = time . Now ( ) . Unix ( )
evalProCont . StartTime = time . Now ( ) . Unix ( )
evalProCont . RoleGroup = roleGroupId
flowStepJson , flowStepErr := json . Marshal ( flowStepAryMap )
if flowStepErr == nil {
evalProCont . Content = string ( flowStepJson )
}
evalProCont . Participants = userKey
evalProCont . NextStep = nextStep
if nextStep != 0 {
var flowAry [ ] FlowAllMap
evalProCont . NextContent , flowAry = IntegrationFlowAll ( flowID , typeclass )
var userKeyMap [ ] string
for _ , fav := range flowAry {
if fav . Step == nextStep {
for _ , facv := range fav . UserList {
if IsItTrueString ( facv . Id , userKeyMap ) == false {
userKeyMap = append ( userKeyMap , facv . Id )
}
}
}
}
if len ( userKeyMap ) > 0 {
evalProCont . NextExecutor = strings . Join ( userKeyMap , "," )
} else {
evalProCont . NextExecutor = ""
}
} else {
evalProCont . NextExecutor = ""
}
global . GVA_DB_Performanceappraisal . Create ( & evalProCont )
} else {
var flowStepAry [ ] FlowStep
var flowStepArys [ ] FlowStep
json . Unmarshal ( [ ] byte ( evalProCont . Content ) , & flowStepAry )
var userKeyMap [ ] string
for _ , f_v := range flowStepAry {
if f_v . Step == evalProCont . Step {
f_v . State = 2
}
flowStepArys = append ( flowStepArys , f_v )
}
var flowStep FlowStep
flowStep . Step = evalProCont . Step + 1
flowStep . StepName = GetSetpName ( stepName ) //步骤名称
// if nextStep <= 0 {
// flowStep.StepName = GetSetpName(6) //步骤名称
// }
flowStep . Key = strconv . FormatInt ( flowID , 10 )
flowStep . State = 2
flowStep . RoleGroup = roleGroupId
flowStep . NextStep = nextStep
flowStep . ClickName = userKey
flowStep . AddTime = time . Now ( ) . Unix ( )
flowStepArys = append ( flowStepArys , flowStep )
saveData := MapOut ( )
saveData [ "ep_time" ] = time . Now ( ) . Unix ( )
saveData [ "ep_role_group" ] = roleGroupId
saveData [ "ep_step" ] = evalProCont . Step + 1
flowStepJson , flowStepErr := json . Marshal ( flowStepArys )
if flowStepErr == nil {
saveData [ "ep_cont" ] = string ( flowStepJson )
}
saveData [ "ep_next_step" ] = nextStep
if nextStep > 0 {
var flowContAry [ ] FlowAllMap
json . Unmarshal ( [ ] byte ( evalProCont . NextContent ) , & flowContAry )
if len ( flowContAry ) > 0 {
for _ , fav := range flowContAry {
if fav . Step == nextStep {
for _ , facv := range fav . UserList {
if IsItTrueString ( facv . Id , userKeyMap ) == false {
userKeyMap = append ( userKeyMap , facv . Id )
}
}
}
// if nextStep <= 0 && fav.Step == 7{
// }
}
}
if len ( userKeyMap ) > 0 {
saveData [ "ep_next_executor" ] = strings . Join ( userKeyMap , "," )
} else {
saveData [ "ep_next_executor" ] = ""
}
} else {
saveData [ "ep_next_executor" ] = ""
}
if evalProCont . Participants == "" {
saveData [ "ep_participants" ] = userKey
} else {
evalProContUserAry := strings . Split ( evalProCont . Participants , "," )
if len ( evalProContUserAry ) > 0 {
if IsItTrueString ( userKey , evalProContUserAry ) == false {
evalProContUserAry = append ( evalProContUserAry , userKey )
}
saveData [ "ep_participants" ] = strings . Join ( evalProContUserAry , "," )
} else {
saveData [ "ep_participants" ] = userKey
}
}
if nextStep == 0 {
saveData [ "ep_state" ] = 3
} else {
saveData [ "ep_state" ] = state
}
saveData [ "ep_next_cont" ] = InsetFlowLog ( state , stepInt , nextStep , userKey , evalProCont . NextContent )
// fmt.Printf("Flow---Map:--->%v\n", saveData)
caozuoMap := MapOut ( )
caozuoMap [ "flowID" ] = flowID
caozuoMap [ "roleGroupId" ] = roleGroupId
caozuoMap [ "nextStep" ] = nextStep
caozuoMap [ "stepName" ] = stepName
caozuoMap [ "typeclass" ] = typeclass
if nextStep == 0 {
caozuoMap [ "state" ] = 3
} else {
caozuoMap [ "state" ] = state
}
caozuoMap [ "stepInt" ] = stepInt
caozuoMap [ "userKey" ] = userKey
caozuoMap [ "NextContent" ] = evalProCont . NextContent
// mapJson, _ := json.Marshal(caozuoMap)
// fmt.Printf("Flow---Map:--Out---->%v\n", string(mapJson))
// flowID, roleGroupId int64, nextStep, stepName, typeclass, state, stepInt int, userKey string
EiteDutiesInfoes ( evalProCont . Id , saveData )
}
}
func StepAddDataEs ( flowID , roleGroupId int64 , nextStep , stepName , typeclass , state , stepInt int , userKey string , encFile [ ] EnclosureFormat ) {
if state < 1 {
state = 1
}
var evalProCont assessmentmodel . EvaluationProcess
judgeErr := global . GVA_DB_Performanceappraisal . Where ( "`ep_order_key` = ?" , flowID ) . First ( & evalProCont ) . Error
var flowStepAryMap [ ] FlowStep
if judgeErr != nil {
var flowSteping FlowStep
flowSteping . Step = 1
flowSteping . StepName = GetSetpName ( stepName ) //步骤名称
flowSteping . Key = strconv . FormatInt ( flowID , 10 ) //流程ID
flowSteping . State = 2 // (1:为操作;2:已操作;3:驳回)
flowSteping . RoleGroup = roleGroupId //角色组
flowSteping . NextStep = 2 //下一步 1:创建;2:创建人部门负责人审批:3:责任划分;4:责任部门审批;5:主要责任人整改;6:责任部门审批;7:验收
flowSteping . ClickName = userKey //操作人
flowSteping . AddTime = time . Now ( ) . Unix ( ) //添加时间
flowStepAryMap = append ( flowStepAryMap , flowSteping )
evalProCont . OrderKey = flowID
evalProCont . Step = 1
evalProCont . State = state
evalProCont . TypeClass = typeclass
evalProCont . Time = time . Now ( ) . Unix ( )
evalProCont . StartTime = time . Now ( ) . Unix ( )
evalProCont . RoleGroup = roleGroupId
flowStepJson , flowStepErr := json . Marshal ( flowStepAryMap )
if flowStepErr == nil {
evalProCont . Content = string ( flowStepJson )
}
evalProCont . Participants = userKey
var flowAry [ ] FlowAllMap
evalProCont . NextContent , flowAry = IntegrationFlowAllEs ( flowID , typeclass , encFile )
evalProCont . NextStep = nextStep
if nextStep > 0 {
var userKeyMap [ ] string
for _ , fav := range flowAry {
if fav . Step == nextStep {
for _ , facv := range fav . UserList {
if IsItTrueString ( facv . Id , userKeyMap ) == false {
userKeyMap = append ( userKeyMap , facv . Id )
}
}
}
}
if len ( userKeyMap ) > 0 {
evalProCont . NextExecutor = strings . Join ( userKeyMap , "," )
} else {
evalProCont . NextExecutor = ""
}
} else {
evalProCont . NextExecutor = ""
}
// evalProCont.AcceptDepartment =
global . GVA_DB_Performanceappraisal . Create ( & evalProCont )
} else {
var flowStepAry [ ] FlowStep
var flowStepArys [ ] FlowStep
json . Unmarshal ( [ ] byte ( evalProCont . Content ) , & flowStepAry )
for _ , f_v := range flowStepAry {
if f_v . Step == evalProCont . Step {
f_v . State = 2
}
flowStepArys = append ( flowStepArys , f_v )
}
var flowStep FlowStep
flowStep . Step = evalProCont . Step + 1
flowStep . StepName = GetSetpName ( stepName ) //步骤名称
if nextStep <= 0 {
flowStep . StepName = GetSetpName ( 6 ) //步骤名称
}
flowStep . Key = strconv . FormatInt ( flowID , 10 )
flowStep . State = 2
flowStep . RoleGroup = roleGroupId
flowStep . NextStep = nextStep
flowStep . ClickName = userKey
flowStep . AddTime = time . Now ( ) . Unix ( )
flowStepArys = append ( flowStepArys , flowStep )
saveData := MapOut ( )
saveData [ "ep_time" ] = time . Now ( ) . Unix ( )
saveData [ "ep_role_group" ] = roleGroupId
saveData [ "ep_step" ] = evalProCont . Step + 1
flowStepJson , flowStepErr := json . Marshal ( flowStepArys )
if flowStepErr == nil {
saveData [ "ep_cont" ] = string ( flowStepJson )
}
saveData [ "ep_next_step" ] = nextStep
if nextStep > 0 {
var userKeyMap [ ] string
var flowContAry [ ] FlowAllMap
json . Unmarshal ( [ ] byte ( evalProCont . NextContent ) , & flowContAry )
if len ( flowContAry ) > 0 {
for _ , fav := range flowContAry {
if fav . Step == nextStep {
for _ , facv := range fav . UserList {
if IsItTrueString ( facv . Id , userKeyMap ) == false {
userKeyMap = append ( userKeyMap , facv . Id )
}
}
}
}
}
if len ( userKeyMap ) > 0 {
saveData [ "ep_next_executor" ] = strings . Join ( userKeyMap , "," )
} else {
saveData [ "ep_next_executor" ] = ""
}
} else {
saveData [ "ep_next_executor" ] = ""
}
if evalProCont . Participants == "" {
saveData [ "ep_participants" ] = userKey
} else {
evalProContUserAry := strings . Split ( evalProCont . Participants , "," )
if len ( evalProContUserAry ) > 0 {
if IsItTrueString ( userKey , evalProContUserAry ) == false {
evalProContUserAry = append ( evalProContUserAry , userKey )
}
saveData [ "ep_participants" ] = strings . Join ( evalProContUserAry , "," )
} else {
saveData [ "ep_participants" ] = userKey
}
}
if nextStep == 0 {
saveData [ "ep_state" ] = 3
} else {
saveData [ "ep_state" ] = state
}
// saveData["ep_participants"] = fmt.Sprintf("%v,%v", evalProCont.Participants, userKey)
// saveData["ep_state"] = state
saveData [ "ep_next_cont" ] = InsetFlowLogEs ( state , stepInt , userKey , evalProCont . NextContent , encFile )
// fmt.Printf("Flow---Map:--->%v\n", saveData)
caozuoMap := MapOut ( )
caozuoMap [ "flowID" ] = flowID
caozuoMap [ "roleGroupId" ] = roleGroupId
caozuoMap [ "nextStep" ] = nextStep
caozuoMap [ "stepName" ] = stepName
caozuoMap [ "typeclass" ] = typeclass
caozuoMap [ "state" ] = state
caozuoMap [ "stepInt" ] = stepInt
caozuoMap [ "userKey" ] = userKey
caozuoMap [ "NextContent" ] = evalProCont . NextContent
// mapJson, _ := json.Marshal(caozuoMap)
// fmt.Printf("Flow---Map:--Out---->%v\n", string(mapJson))
// flowID, roleGroupId int64, nextStep, stepName, typeclass, state, stepInt int, userKey string
EiteDutiesInfoes ( evalProCont . Id , saveData )
}
}
//流程操作解析
/ *
@ state 状态
@ stepInt 当前是第几部
@ recStrat 是否改正
@ userKey 操作人key
@ flowMapStr 流程图字符串
@ nextStep 下一步
* /
func InsetFlowLog ( state , stepInt , nextStep int , userKey , flowMapStr string ) ( flowAllMap string ) {
// fmt.Printf("Flow_log:--Begin-->%v-->%v\n", stepInt, flowMapStr)
var flowMap [ ] FlowAllMap
jsonErr := json . Unmarshal ( [ ] byte ( flowMapStr ) , & flowMap )
// fmt.Printf("Flow_log:--Begin---Err---->%v\n", jsonErr)
if jsonErr != nil {
flowAllMap = flowMapStr
return
}
// fmt.Printf("Flow_log:--Begin-1->%v-->%v", stepInt, flowMapStr)
var eiteFlowMap [ ] FlowAllMap
for _ , v := range flowMap {
var eiteFlowInfo FlowAllMap
eiteFlowInfo . Step = v . Step
eiteFlowInfo . NodeName = v . NodeName
if v . Step < stepInt {
eiteFlowInfo . State = 2
} else if v . Step == stepInt {
eiteFlowInfo . State = state
} else if nextStep <= 0 && v . Step == 7 {
eiteFlowInfo . State = 2
} else {
eiteFlowInfo . State = 1
}
eiteFlowInfo . Class = v . Class
// fmt.Printf("Flow_log:--Step-->%v-->%v\n", v.Step, stepInt)
if v . Step == stepInt {
var userClickAry [ ] UserListFlowAll
for _ , u_v := range v . UserList {
var userClick UserListFlowAll
userClick . Id = u_v . Id
userClick . Name = u_v . Name
userClick . Icon = u_v . Icon
userClick . Wechat = u_v . Wechat
userClick . Group = u_v . Group
userClick . GroupName = u_v . GroupName
userClick . DepartmentId = u_v . DepartmentId
userClick . DepartmentName = u_v . DepartmentName
userClick . WorkshopId = u_v . WorkshopId
userClick . WorkshopName = u_v . WorkshopName
userClick . PostId = u_v . PostId
userClick . PostName = u_v . PostName
userClick . Tema = u_v . Tema
userClick . TemaName = u_v . TemaName
userClick . Wechat = u_v . Wechat
fmt . Printf ( "Flow_log:--UsekKey-->%v-->%v\n" , u_v . Id , userKey )
if u_v . Id == userKey {
var logListMap LogList
logListMap . State = state
logListMap . TimeVal = GetToDayAll ( )
userClick . LogList = append ( userClick . LogList , logListMap )
}
userClickAry = append ( userClickAry , userClick )
}
eiteFlowInfo . UserList = userClickAry
} else {
eiteFlowInfo . UserList = v . UserList
}
eiteFlowMap = append ( eiteFlowMap , eiteFlowInfo )
}
jsonStr , jsonErrSet := json . Marshal ( eiteFlowMap )
// fmt.Printf("Flow_log:--jsonErr-->%v-->%v\n", jsonErrSet, string(jsonStr))
if jsonErrSet == nil {
flowAllMap = string ( jsonStr )
}
return
}
func InsetFlowLogEs ( state , stepInt int , userKey , flowMapStr string , encFile [ ] EnclosureFormat ) ( flowAllMap string ) {
// fmt.Printf("Flow_log:--Begin-->%v-->%v\n", stepInt, flowMapStr)
var flowMap [ ] FlowAllMap
jsonErr := json . Unmarshal ( [ ] byte ( flowMapStr ) , & flowMap )
// fmt.Printf("Flow_log:--Begin---Err---->%v\n", jsonErr)
if jsonErr != nil {
flowAllMap = flowMapStr
return
}
// fmt.Printf("Flow_log:--Begin-1->%v-->%v", stepInt, flowMapStr)
var eiteFlowMap [ ] FlowAllMap
for _ , v := range flowMap {
var eiteFlowInfo FlowAllMap
eiteFlowInfo . Step = v . Step
eiteFlowInfo . NodeName = v . NodeName
if v . Step < stepInt {
eiteFlowInfo . State = 2
} else if v . Step == stepInt {
eiteFlowInfo . State = state
} else {
eiteFlowInfo . State = 1
}
eiteFlowInfo . Class = v . Class
// fmt.Printf("Flow_log:--Step-->%v-->%v\n", v.Step, stepInt)
if v . Step == stepInt {
var userClickAry [ ] UserListFlowAll
for _ , u_v := range v . UserList {
var userClick UserListFlowAll
userClick . Id = u_v . Id
userClick . Name = u_v . Name
userClick . Icon = u_v . Icon
userClick . Wechat = u_v . Wechat
userClick . Group = u_v . Group
userClick . GroupName = u_v . GroupName
userClick . DepartmentId = u_v . DepartmentId
userClick . DepartmentName = u_v . DepartmentName
userClick . WorkshopId = u_v . WorkshopId
userClick . WorkshopName = u_v . WorkshopName
userClick . PostId = u_v . PostId
userClick . PostName = u_v . PostName
userClick . Tema = u_v . Tema
userClick . TemaName = u_v . TemaName
userClick . Wechat = u_v . Wechat
// fmt.Printf("Flow_log:--UsekKey-->%v-->%v\n", u_v.Id, userKey)
if u_v . Id == userKey {
var logListMap LogList
logListMap . State = state
logListMap . TimeVal = GetToDayAll ( )
logListMap . Enclosure = encFile
userClick . LogList = append ( userClick . LogList , logListMap )
}
userClickAry = append ( userClickAry , userClick )
}
eiteFlowInfo . UserList = userClickAry
} else {
eiteFlowInfo . UserList = v . UserList
}
eiteFlowMap = append ( eiteFlowMap , eiteFlowInfo )
}
jsonStr , jsonErrSet := json . Marshal ( eiteFlowMap )
// fmt.Printf("Flow_log:--jsonErr-->%v-->%v\n", jsonErrSet, string(jsonStr))
if jsonErrSet == nil {
flowAllMap = string ( jsonStr )
}
return
}
// 写入责任分配节点人员信息
func WriteFlowMainSet ( orderId int64 , userKey [ ] int64 ) {
fmt . Printf ( "Zeren--1-->%v\n" , userKey )
if len ( userKey ) < 1 {
return
}
var evalProCont assessmentmodel . EvaluationProcess
judgeErr := global . GVA_DB_Performanceappraisal . Where ( "`ep_order_key` = ?" , orderId ) . First ( & evalProCont ) . Error
if judgeErr != nil {
// fmt.Printf("Zeren--1-1->%v\n", userKey)
return
}
flowAllMapOldStr := evalProCont . NextContent
// fmt.Printf("Zeren--2-->%v\n", flowAllMapOldStr)
var flowMap [ ] FlowAllMap
jsonErr := json . Unmarshal ( [ ] byte ( evalProCont . NextContent ) , & flowMap )
if jsonErr != nil {
// fmt.Printf("Zeren--2-1->%v\n", jsonErr)
return
}
// fmt.Printf("Zeren--3-->%v\n", flowMap)
var eiteFlowMap [ ] FlowAllMap
for _ , v := range flowMap {
var eiteFlowInfo FlowAllMap
eiteFlowInfo . Step = v . Step
eiteFlowInfo . NodeName = v . NodeName
eiteFlowInfo . State = v . State
eiteFlowInfo . Class = v . Class
if v . Step == 5 {
var userClickAry [ ] UserListFlowAll
for _ , u_v := range userKey {
userConting , _ := GetWorkUser ( strconv . FormatInt ( u_v , 10 ) )
var wechatIdStr string
if userConting . Wechat != "" {
wechatIdStr = userConting . Wechat
}
if userConting . WorkWechat != "" {
wechatIdStr = userConting . WorkWechat
}
_ , userCont := GetUesrContForWechatID ( wechatIdStr )
var returnUser UserListFlowAll
returnUser . Id = strconv . FormatInt ( userCont . Key , 10 )
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Group
// where := MapOut()
// where["id"] = userCont.Group
// orgCont, _ := GetNewOrgCont(where, "id", "name")
// returnUser.GroupName = orgCont.Name
_ , groupCont := GetGroupCont ( userCont . Group )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . DepartmentId
returnUser . DepartmentName = userCont . DepartmentName
returnUser . WorkshopId = userCont . WorkshopId
returnUser . WorkshopName = userCont . WorkshopName
returnUser . PostId = userCont . PostId
returnUser . PostName = userCont . PostName
returnUser . Tema = userCont . Tema
returnUser . TemaName = userCont . TemaName
returnUser . Wechat = userCont . WechatId
userClickAry = append ( userClickAry , returnUser )
}
eiteFlowInfo . UserList = userClickAry
// fmt.Printf("Zeren--4-->%v\n", userClickAry)
} else {
eiteFlowInfo . UserList = v . UserList
}
eiteFlowMap = append ( eiteFlowMap , eiteFlowInfo )
}
jsonStr , jsonErrSet := json . Marshal ( eiteFlowMap )
if jsonErrSet == nil {
flowAllMapOldStr = string ( jsonStr )
}
saveEiteData := MapOut ( )
saveEiteData [ "ep_time" ] = time . Now ( ) . Unix ( )
saveEiteData [ "ep_next_cont" ] = flowAllMapOldStr
// fmt.Printf("Zeren--5-->%v\n", saveEiteData)
EiteDutiesInfoes ( evalProCont . Id , saveEiteData )
}
//组合流程图全面
/ *
@ class 流程类型
* /
func IntegrationFlowAll ( flowID int64 , class int ) ( flowAllMap string , flowMap [ ] FlowAllMap ) {
// var flowMap []FlowAllMap
//1、创建
var oneFlowInfo FlowAllMap
oneFlowInfo . Step = 1
oneFlowInfo . NodeName = GetSetpName ( 1 )
oneFlowInfo . State = 2
oneFlowInfo . Class = 1
oneFlowInfo . UserList = GetFlowNodeMan ( flowID , class , 1 , 1 )
flowMap = append ( flowMap , oneFlowInfo )
// fmt.Print("Flow_log:-->%v")
if class == 1 {
//定性
var scoreFlowCont assessmentmodel . ScoreFlow
flowLogErr := global . GVA_DB_Performanceappraisal . Where ( "sf_key = ?" , flowID ) . First ( & scoreFlowCont ) . Error
if flowLogErr == nil {
//2、创建人部门负责人审核
var twoFlowInfo FlowAllMap
twoFlowInfo . Step = 2
twoFlowInfo . NodeName = GetSetpName ( 2 )
twoFlowInfo . State = 1
twoFlowInfo . Class = 1
twoFlowInfo . UserList = GetFlowNodeMan ( flowID , class , 3 , 2 )
flowMap = append ( flowMap , twoFlowInfo )
//3、被考核部门内勤进行责任划分
var threeFlowInfo FlowAllMap
threeFlowInfo . Step = 3
threeFlowInfo . NodeName = GetSetpName ( 3 )
threeFlowInfo . State = 1
threeFlowInfo . Class = 1
threeFlowInfo . UserList = GetFlowNodeMan ( flowID , class , 4 , 2 )
flowMap = append ( flowMap , threeFlowInfo )
//4、被考核部门负责人对责任划分确认
var fourFlowInfo FlowAllMap
fourFlowInfo . Step = 4
fourFlowInfo . NodeName = GetSetpName ( 7 )
fourFlowInfo . State = 1
fourFlowInfo . Class = 1
fourFlowInfo . UserList = GetFlowNodeMan ( flowID , class , 5 , 2 )
flowMap = append ( flowMap , fourFlowInfo )
if scoreFlowCont . Rectification == 1 {
//5、整改人节点。由内勤指定
var fiveFlowInfo FlowAllMap
fiveFlowInfo . Step = 5
fiveFlowInfo . NodeName = GetSetpName ( 4 )
fiveFlowInfo . State = 1
fiveFlowInfo . Class = 2
// fiveFlowInfo.UserList = GetFlowNodeMan(flowID, class, 5)
flowMap = append ( flowMap , fiveFlowInfo )
//6、被考核部门负责人对整改措施确认
var sixFlowInfo FlowAllMap
sixFlowInfo . Step = 6
sixFlowInfo . NodeName = GetSetpName ( 7 )
sixFlowInfo . State = 1
sixFlowInfo . Class = 1
sixFlowInfo . UserList = GetFlowNodeMan ( flowID , class , 5 , 2 )
flowMap = append ( flowMap , sixFlowInfo )
//7、发起人验收
var serverFlowInfo FlowAllMap
serverFlowInfo . Step = 7
serverFlowInfo . NodeName = GetSetpName ( 6 )
serverFlowInfo . State = 1
serverFlowInfo . Class = 1
serverFlowInfo . UserList = GetFlowNodeMan ( flowID , class , 1 , 2 )
flowMap = append ( flowMap , serverFlowInfo )
} else {
//5、发起人验收
var serverEsFlowInfo FlowAllMap
serverEsFlowInfo . Step = 5
serverEsFlowInfo . NodeName = GetSetpName ( 5 )
serverEsFlowInfo . State = 1
serverEsFlowInfo . Class = 1
serverEsFlowInfo . UserList = GetFlowNodeMan ( flowID , class , 1 , 2 )
flowMap = append ( flowMap , serverEsFlowInfo )
}
}
} else {
//定量
//1、创建
var twoFlowInfo FlowAllMap
twoFlowInfo . Step = 2
twoFlowInfo . NodeName = GetSetpName ( 7 )
twoFlowInfo . State = 1
twoFlowInfo . Class = 1
twoFlowInfo . UserList = GetFlowNodeMan ( flowID , class , 3 , 2 )
flowMap = append ( flowMap , twoFlowInfo )
/ *
GetFlowNodeMan ( flowID int64 , class , style , writeLog int )
@ flowID 流程ID
@ class 1 、 定性 ; 2 、 定量
@ style 1 、 测评人 ; 2 , 测评人部门内勤 ; 3 、 测评人部门负责人 ; 4 、 被测评部门内勤 ; 5 、 被测评部门负责人
@ writeLog 1 : 写入默认审批记录
* /
}
flowAllMapByte , eer := json . Marshal ( flowMap )
if eer == nil {
flowAllMap = string ( flowAllMapByte )
}
return
}
func IntegrationFlowAllEs ( flowID int64 , class int , encFile [ ] EnclosureFormat ) ( flowAllMap string , flowMap [ ] FlowAllMap ) {
// var flowMap []FlowAllMap
//1、创建
var oneFlowInfo FlowAllMap
oneFlowInfo . Step = 1
oneFlowInfo . NodeName = GetSetpName ( 1 )
oneFlowInfo . State = 2
oneFlowInfo . Class = 1
oneFlowInfo . UserList = GetFlowNodeManEs ( flowID , class , 1 , 1 , encFile )
flowMap = append ( flowMap , oneFlowInfo )
// fmt.Print("Flow_log:-->%v")
if class == 1 {
var scoreFlowCont assessmentmodel . ScoreFlow
flowLogErr := global . GVA_DB_Performanceappraisal . Where ( "sf_key = ?" , flowID ) . First ( & scoreFlowCont ) . Error
if flowLogErr == nil {
if scoreFlowCont . PlusReduceScore != 1 {
//2、创建人部门负责人审核
var twoFlowInfo FlowAllMap
twoFlowInfo . Step = 2
twoFlowInfo . NodeName = GetSetpName ( 2 )
twoFlowInfo . State = 1
twoFlowInfo . Class = 1
twoFlowInfo . UserList = GetFlowNodeManEs ( flowID , class , 3 , 2 , encFile )
flowMap = append ( flowMap , twoFlowInfo )
//3、被考核部门内勤进行责任划分
var threeFlowInfo FlowAllMap
threeFlowInfo . Step = 3
threeFlowInfo . NodeName = GetSetpName ( 3 )
threeFlowInfo . State = 1
threeFlowInfo . Class = 1
threeFlowInfo . UserList = GetFlowNodeManEs ( flowID , class , 4 , 2 , encFile )
flowMap = append ( flowMap , threeFlowInfo )
//4、被考核部门负责人对责任划分确认
var fourFlowInfo FlowAllMap
fourFlowInfo . Step = 4
fourFlowInfo . NodeName = GetSetpName ( 7 )
fourFlowInfo . State = 1
fourFlowInfo . Class = 1
fourFlowInfo . UserList = GetFlowNodeManEs ( flowID , class , 5 , 2 , encFile )
flowMap = append ( flowMap , fourFlowInfo )
if scoreFlowCont . Rectification == 1 {
//5、整改人节点。由内勤指定
var fiveFlowInfo FlowAllMap
fiveFlowInfo . Step = 5
fiveFlowInfo . NodeName = GetSetpName ( 4 )
fiveFlowInfo . State = 1
fiveFlowInfo . Class = 2
// fiveFlowInfo.UserList = GetFlowNodeManEs(flowID, class, 5,encFile)
flowMap = append ( flowMap , fiveFlowInfo )
//6、被考核部门负责人对整改措施确认
var sixFlowInfo FlowAllMap
sixFlowInfo . Step = 6
sixFlowInfo . NodeName = GetSetpName ( 7 )
sixFlowInfo . State = 1
sixFlowInfo . Class = 1
sixFlowInfo . UserList = GetFlowNodeManEs ( flowID , class , 5 , 2 , encFile )
flowMap = append ( flowMap , sixFlowInfo )
//7、发起人验收
var serverFlowInfo FlowAllMap
serverFlowInfo . Step = 7
serverFlowInfo . NodeName = GetSetpName ( 5 )
serverFlowInfo . State = 1
serverFlowInfo . Class = 1
serverFlowInfo . UserList = GetFlowNodeManEs ( flowID , class , 1 , 2 , encFile )
flowMap = append ( flowMap , serverFlowInfo )
} else {
//5、发起人验收
var serverEsFlowInfo FlowAllMap
serverEsFlowInfo . Step = 5
serverEsFlowInfo . NodeName = GetSetpName ( 5 )
serverEsFlowInfo . State = 1
serverEsFlowInfo . Class = 1
serverEsFlowInfo . UserList = GetFlowNodeManEs ( flowID , class , 1 , 2 , encFile )
flowMap = append ( flowMap , serverEsFlowInfo )
}
} else {
//2、创建人部门负责人审核
var twoFlowInfo FlowAllMap
twoFlowInfo . Step = 2
twoFlowInfo . NodeName = GetSetpName ( 2 )
twoFlowInfo . State = 1
twoFlowInfo . Class = 1
twoFlowInfo . UserList = GetFlowNodeManEs ( flowID , class , 3 , 2 , encFile )
flowMap = append ( flowMap , twoFlowInfo )
}
}
} else {
//定量
//1、创建
var twoFlowInfo FlowAllMap
twoFlowInfo . Step = 2
twoFlowInfo . NodeName = GetSetpName ( 7 )
twoFlowInfo . State = 1
twoFlowInfo . Class = 1
twoFlowInfo . UserList = GetFlowNodeManEs ( flowID , class , 5 , 2 , encFile )
flowMap = append ( flowMap , twoFlowInfo )
}
flowAllMapByte , eer := json . Marshal ( flowMap )
if eer == nil {
flowAllMap = string ( flowAllMapByte )
}
return
}
//获取节点操作人
/ *
GetFlowNodeMan ( flowID int64 , class , style , writeLog int )
@ flowID 流程ID
@ class 1 、 定性 ; 2 、 定量
@ style 1 、 测评人 ; 2 , 测评人部门内勤 ; 3 、 测评人部门负责人 ; 4 、 被测评部门内勤 ; 5 、 被测评部门负责人
@ writeLog 1 : 写入默认审批记录
* /
func GetFlowNodeMan ( flowID int64 , class , style , writeLog int ) ( manInfo [ ] UserListFlowAll ) {
var goDu FlowNodePeopleInfo
if class == 1 {
var scoreFlowCont assessmentmodel . ScoreFlow
flowLogErr := global . GVA_DB_Performanceappraisal . Where ( "sf_key = ?" , flowID ) . First ( & scoreFlowCont ) . Error
if flowLogErr == nil {
goDu . EvalCont . Group = scoreFlowCont . EvaluationGroup
goDu . EvalCont . DepartmentId = scoreFlowCont . EvaluationDepartment
goDu . EvalCont . Id = strconv . FormatInt ( scoreFlowCont . EvaluationUser , 10 )
goDu . DutyCont . Group = scoreFlowCont . DutyGroup
goDu . DutyCont . DepartmentId = scoreFlowCont . DutyDepartment
}
} else {
var flowCont assessmentmodel . FlowLog
flowLogErrs := global . GVA_DB_Performanceappraisal . Where ( "fl_key = ?" , flowID ) . First ( & flowCont ) . Error
if flowLogErrs == nil {
goDu . EvalCont . Group = flowCont . EvaluationGroup
goDu . EvalCont . DepartmentId = flowCont . EvaluationDepartment
goDu . EvalCont . Id = strconv . FormatInt ( flowCont . EvaluationUser , 10 )
goDu . DutyCont . Group = flowCont . DutyGroup
goDu . DutyCont . DepartmentId = flowCont . DutyDepartment
}
}
//1、测评人;2,测评人部门内勤;3、测评人部门负责人;4、被测评部门内勤;5、被测评部门负责人
switch style {
case 2 :
sendUserIsTrue , sendUserList := GetSendMsgUserAry ( 16118387069540343 , goDu . EvalCont . DepartmentId )
if sendUserIsTrue == true {
for _ , v := range sendUserList {
_ , userCont := GetUesrContForWechatID ( v )
var returnUser UserListFlowAll
returnUser . Id = strconv . FormatInt ( userCont . Key , 10 )
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Group
// where := MapOut()
// where["id"] = userCont.Group
// orgCont, _ := GetNewOrgCont(where, "id", "name")
// returnUser.GroupName = orgCont.Name
_ , groupCont := GetGroupCont ( userCont . Group )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . DepartmentId
returnUser . DepartmentName = userCont . DepartmentName
returnUser . WorkshopId = userCont . WorkshopId
returnUser . WorkshopName = userCont . WorkshopName
returnUser . PostId = userCont . PostId
returnUser . PostName = userCont . PostName
returnUser . Tema = userCont . Tema
returnUser . TemaName = userCont . TemaName
returnUser . Wechat = userCont . WechatId
manInfo = append ( manInfo , returnUser )
}
}
case 3 :
sendUserIsTrue , sendUserList := GetSendMsgUserAry ( 16182159043990656 , goDu . EvalCont . DepartmentId )
if sendUserIsTrue == true {
for _ , v := range sendUserList {
_ , userCont := GetUesrContForWechatID ( v )
var returnUser UserListFlowAll
returnUser . Id = strconv . FormatInt ( userCont . Key , 10 )
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Group
// where := MapOut()
// where["id"] = userCont.Group
// orgCont, _ := GetNewOrgCont(where, "id", "name")
// returnUser.GroupName = orgCont.Name
_ , groupCont := GetGroupCont ( userCont . Group )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . DepartmentId
returnUser . DepartmentName = userCont . DepartmentName
returnUser . WorkshopId = userCont . WorkshopId
returnUser . WorkshopName = userCont . WorkshopName
returnUser . PostId = userCont . PostId
returnUser . PostName = userCont . PostName
returnUser . Tema = userCont . Tema
returnUser . TemaName = userCont . TemaName
returnUser . Wechat = userCont . WechatId
manInfo = append ( manInfo , returnUser )
}
}
case 4 :
sendUserIsTrue , sendUserList := GetSendMsgUserAry ( 16118387069540343 , goDu . DutyCont . DepartmentId )
if sendUserIsTrue == true {
for _ , v := range sendUserList {
_ , userCont := GetUesrContForWechatID ( v )
var returnUser UserListFlowAll
returnUser . Id = strconv . FormatInt ( userCont . Key , 10 )
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Group
// where := MapOut()
// where["id"] = userCont.Group
// orgCont, _ := GetNewOrgCont(where, "id", "name")
// returnUser.GroupName = orgCont.Name
_ , groupCont := GetGroupCont ( userCont . Group )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . DepartmentId
returnUser . DepartmentName = userCont . DepartmentName
returnUser . WorkshopId = userCont . WorkshopId
returnUser . WorkshopName = userCont . WorkshopName
returnUser . PostId = userCont . PostId
returnUser . PostName = userCont . PostName
returnUser . Tema = userCont . Tema
returnUser . TemaName = userCont . TemaName
returnUser . Wechat = userCont . WechatId
manInfo = append ( manInfo , returnUser )
}
}
case 5 :
sendUserIsTrue , sendUserList := GetSendMsgUserAry ( 16182159043990656 , goDu . DutyCont . DepartmentId )
if sendUserIsTrue == true {
for _ , v := range sendUserList {
_ , userCont := GetUesrContForWechatID ( v )
var returnUser UserListFlowAll
returnUser . Id = strconv . FormatInt ( userCont . Key , 10 )
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Group
// where := MapOut()
// where["id"] = userCont.Group
// orgCont, _ := GetNewOrgCont(where, "id", "name")
// returnUser.GroupName = orgCont.Name
_ , groupCont := GetGroupCont ( userCont . Group )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . DepartmentId
returnUser . DepartmentName = userCont . DepartmentName
returnUser . WorkshopId = userCont . WorkshopId
returnUser . WorkshopName = userCont . WorkshopName
returnUser . PostId = userCont . PostId
returnUser . PostName = userCont . PostName
returnUser . Tema = userCont . Tema
returnUser . TemaName = userCont . TemaName
returnUser . Wechat = userCont . WechatId
manInfo = append ( manInfo , returnUser )
}
}
default :
var returnUser UserListFlowAll
userCont , _ := GetWorkUser ( goDu . EvalCont . Id )
returnUser . Id = goDu . EvalCont . Id
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Company
// where := MapOut()
// where["id"] = userCont.Group
// orgCont, _ := GetNewOrgCont(where, "id", "name")
// returnUser.GroupName = orgCont.Name
_ , groupCont := GetGroupCont ( userCont . Company )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . MainDeparment
whereDepart := MapOut ( )
whereDepart [ "id" ] = userCont . MainDeparment
orgContDepart , _ := GetNewOrgCont ( whereDepart , "id" , "name" )
returnUser . DepartmentName = orgContDepart . Name
// _, bfInfo := GetBranchFactory(userCont.DepartmentId)
// returnUser.DepartmentName = bfInfo.Name
returnUser . WorkshopId = userCont . AdminOrg
_ , wsInfo := GetWorkShopSection ( userCont . AdminOrg )
returnUser . WorkshopName = wsInfo . Name
returnUser . PostId = userCont . Position
_ , posCont := GetPosition ( userCont . Position )
returnUser . PostName = posCont . Name
returnUser . Tema = userCont . TeamId
_ , temCont := GetTeaming ( userCont . TeamId )
returnUser . TemaName = temCont . Name
returnUser . Wechat = userCont . Wechat
if userCont . Wechat == "" {
returnUser . Wechat = userCont . WorkWechat
}
if writeLog == 1 {
// oneFlowInfo?
var logListMap LogList
logListMap . State = 2
logListMap . TimeVal = GetToDayAll ( )
returnUser . LogList = append ( returnUser . LogList , logListMap )
}
manInfo = append ( manInfo , returnUser )
}
return
}
func GetFlowNodeManEs ( flowID int64 , class , style , writeLog int , encFile [ ] EnclosureFormat ) ( manInfo [ ] UserListFlowAll ) {
var goDu FlowNodePeopleInfo
if class == 1 {
var scoreFlowCont assessmentmodel . ScoreFlow
flowLogErr := global . GVA_DB_Performanceappraisal . Where ( "sf_key = ?" , flowID ) . First ( & scoreFlowCont ) . Error
if flowLogErr == nil {
goDu . EvalCont . Group = scoreFlowCont . EvaluationGroup
goDu . EvalCont . DepartmentId = scoreFlowCont . EvaluationDepartment
goDu . EvalCont . Id = strconv . FormatInt ( scoreFlowCont . EvaluationUser , 10 )
goDu . DutyCont . Group = scoreFlowCont . DutyGroup
goDu . DutyCont . DepartmentId = scoreFlowCont . DutyDepartment
}
} else {
var flowCont assessmentmodel . FlowLog
flowLogErrs := global . GVA_DB_Performanceappraisal . Where ( "fl_key = ?" , flowID ) . First ( & flowCont ) . Error
if flowLogErrs == nil {
goDu . EvalCont . Group = flowCont . EvaluationGroup
goDu . EvalCont . DepartmentId = flowCont . EvaluationDepartment
goDu . EvalCont . Id = strconv . FormatInt ( flowCont . EvaluationUser , 10 )
goDu . DutyCont . Group = flowCont . DutyGroup
goDu . DutyCont . DepartmentId = flowCont . DutyDepartment
}
}
//1、测评人;2,测评人部门内勤;3、测评人部门负责人;4、被测评部门内勤;5、被测评部门负责人
switch style {
case 2 :
sendUserIsTrue , sendUserList := GetSendMsgUserAry ( 16118387069540343 , goDu . EvalCont . DepartmentId )
if sendUserIsTrue == true {
for _ , v := range sendUserList {
_ , userCont := GetUesrContForWechatID ( v )
var returnUser UserListFlowAll
returnUser . Id = strconv . FormatInt ( userCont . Key , 10 )
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Group
// where := MapOut()
// where["id"] = userCont.Group
// orgCont, _ := GetNewOrgCont(where, "id", "name")
// returnUser.GroupName = orgCont.Name
_ , groupCont := GetGroupCont ( userCont . Group )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . DepartmentId
returnUser . DepartmentName = userCont . DepartmentName
returnUser . WorkshopId = userCont . WorkshopId
returnUser . WorkshopName = userCont . WorkshopName
returnUser . PostId = userCont . PostId
returnUser . PostName = userCont . PostName
returnUser . Tema = userCont . Tema
returnUser . TemaName = userCont . TemaName
returnUser . Wechat = userCont . WechatId
manInfo = append ( manInfo , returnUser )
}
}
case 3 :
sendUserIsTrue , sendUserList := GetSendMsgUserAry ( 16182159043990656 , goDu . EvalCont . DepartmentId )
if sendUserIsTrue == true {
for _ , v := range sendUserList {
_ , userCont := GetUesrContForWechatID ( v )
var returnUser UserListFlowAll
returnUser . Id = strconv . FormatInt ( userCont . Key , 10 )
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Group
// where := MapOut()
// where["id"] = userCont.Group
// orgCont, _ := GetNewOrgCont(where, "id", "name")
// returnUser.GroupName = orgCont.Name
_ , groupCont := GetGroupCont ( userCont . Group )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . DepartmentId
returnUser . DepartmentName = userCont . DepartmentName
returnUser . WorkshopId = userCont . WorkshopId
returnUser . WorkshopName = userCont . WorkshopName
returnUser . PostId = userCont . PostId
returnUser . PostName = userCont . PostName
returnUser . Tema = userCont . Tema
returnUser . TemaName = userCont . TemaName
returnUser . Wechat = userCont . WechatId
manInfo = append ( manInfo , returnUser )
}
}
case 4 :
sendUserIsTrue , sendUserList := GetSendMsgUserAry ( 16118387069540343 , goDu . DutyCont . DepartmentId )
if sendUserIsTrue == true {
for _ , v := range sendUserList {
_ , userCont := GetUesrContForWechatID ( v )
var returnUser UserListFlowAll
returnUser . Id = strconv . FormatInt ( userCont . Key , 10 )
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Group
// where := MapOut()
// where["id"] = userCont.Group
// orgCont, _ := GetNewOrgCont(where, "id", "name")
// returnUser.GroupName = orgCont.Name
_ , groupCont := GetGroupCont ( userCont . Group )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . DepartmentId
returnUser . DepartmentName = userCont . DepartmentName
returnUser . WorkshopId = userCont . WorkshopId
returnUser . WorkshopName = userCont . WorkshopName
returnUser . PostId = userCont . PostId
returnUser . PostName = userCont . PostName
returnUser . Tema = userCont . Tema
returnUser . TemaName = userCont . TemaName
returnUser . Wechat = userCont . WechatId
manInfo = append ( manInfo , returnUser )
}
}
case 5 :
sendUserIsTrue , sendUserList := GetSendMsgUserAry ( 16182159043990656 , goDu . DutyCont . DepartmentId )
if sendUserIsTrue == true {
for _ , v := range sendUserList {
_ , userCont := GetUesrContForWechatID ( v )
var returnUser UserListFlowAll
returnUser . Id = strconv . FormatInt ( userCont . Key , 10 )
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Group
// where := MapOut()
// where["id"] = userCont.Group
// orgCont, _ := GetNewOrgCont(where, "id", "name")
// returnUser.GroupName = orgCont.Name
_ , groupCont := GetGroupCont ( userCont . Group )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . DepartmentId
returnUser . DepartmentName = userCont . DepartmentName
returnUser . WorkshopId = userCont . WorkshopId
returnUser . WorkshopName = userCont . WorkshopName
returnUser . PostId = userCont . PostId
returnUser . PostName = userCont . PostName
returnUser . Tema = userCont . Tema
returnUser . TemaName = userCont . TemaName
returnUser . Wechat = userCont . WechatId
manInfo = append ( manInfo , returnUser )
}
}
default :
var returnUser UserListFlowAll
userCont , _ := GetWorkUser ( goDu . EvalCont . Id )
returnUser . Id = goDu . EvalCont . Id
returnUser . Name = userCont . Name
returnUser . Icon = userCont . Icon
returnUser . Group = userCont . Company
_ , groupCont := GetGroupCont ( userCont . Company )
returnUser . GroupName = groupCont . Name
returnUser . DepartmentId = userCont . MainDeparment
_ , bfInfo := GetBranchFactory ( userCont . MainDeparment )
returnUser . DepartmentName = bfInfo . Name
returnUser . WorkshopId = userCont . AdminOrg
_ , wsInfo := GetWorkShopSection ( userCont . AdminOrg )
returnUser . WorkshopName = wsInfo . Name
returnUser . PostId = userCont . Position
_ , posCont := GetPosition ( userCont . Position )
returnUser . PostName = posCont . Name
returnUser . Tema = userCont . TeamId
_ , temCont := GetTeaming ( userCont . TeamId )
returnUser . TemaName = temCont . Name
returnUser . Wechat = userCont . Wechat
if userCont . Wechat == "" {
returnUser . Wechat = userCont . WorkWechat
}
if writeLog == 1 {
// oneFlowInfo?
var logListMap LogList
logListMap . State = 2
logListMap . TimeVal = GetToDayAll ( )
logListMap . Enclosure = encFile
returnUser . LogList = append ( returnUser . LogList , logListMap )
}
manInfo = append ( manInfo , returnUser )
}
return
}
// 编辑流程步进器
func EiteDutiesInfoes ( saveId int64 , saveData map [ string ] interface { } ) ( isTrue bool , infoErr error ) {
isTrue = false
infoErr = global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . EvaluationProcess { } ) . Where ( "`ep_id` = ?" , saveId ) . Updates ( saveData ) . Error
if infoErr != nil {
return
}
isTrue = true
return
}
// 步骤名称
func GetSetpName ( setId int ) ( setpName string ) {
switch setId {
case 1 :
setpName = "创建申请"
case 2 :
setpName = "审核确认"
case 3 :
setpName = "责任划分"
case 4 :
setpName = "整改措施"
case 5 :
setpName = "整改验收"
case 6 :
setpName = "抄送"
case 7 :
// setpName = "部门负责人"
setpName = "审核确认"
default :
setpName = "创建申请"
}
return
}
//四舍五入
/ *
@ val 目标值
@ precision 保留几位
* /
func Round ( val float64 , precision int ) float64 {
p := math . Pow10 ( precision )
return math . Floor ( val * p + 0.5 ) / p
}
// 获取班组成员
func GetTeamUserList ( group , department , postId , teamId string ) ( userCont [ ] hrsystem . ManCont , isTrue bool ) {
wheAry := MapOut ( )
wheAry [ "company" ] = group
wheAry [ "maindeparment" ] = department
wheAry [ "position" ] = postId
wheAry [ "teamid" ] = teamId
// userCont, isTrue = GetUserInfoPublic("worker_man.*,worker_man_data.*", wheAry)
isTrue = false
// var userInfo testpage.WorkMan
userErr := global . GVA_DB_HrDataBase . Where ( wheAry ) . Find ( & userCont ) . Error
if userErr == nil {
isTrue = true
}
return
}
func GetTeamUserListOld ( group , department , postId , teamId string ) ( userCont [ ] testpage . PersonalDetails , isTrue bool ) {
wheAry := MapOut ( )
wheAry [ "wm_group" ] = group
wheAry [ "wm_bf_id" ] = department
wheAry [ "wm_ws_id" ] = postId
wheAry [ "wm_tema" ] = teamId
// userCont, isTrue = GetUserInfoPublic("worker_man.*,worker_man_data.*", wheAry)
isTrue = false
var userInfo testpage . WorkMan
userErr := global . GVA_DB_Master . Model ( & userInfo ) . Select ( "worker_man.*,worker_man_data.*" ) . Joins ( "left join worker_man_data on worker_man_data.wmd_key = worker_man.wm_key" ) . Where ( wheAry ) . Find ( & userCont ) . Error
if userErr == nil {
isTrue = true
}
return
}
// 编辑分数流水
func EiteScoreFlow ( saveId int64 , saveData map [ string ] interface { } ) ( isTrue bool , infoErr error ) {
isTrue = false
infoErr = global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . ScoreFlow { } ) . Where ( "`sf_key` = ?" , saveId ) . Updates ( saveData ) . Error
if infoErr != nil {
return
}
isTrue = true
return
}
// 获取通用责任划分
func GetDivisionOfResponsibility ( orderId string , class int ) ( contList [ ] map [ string ] interface { } , err error ) {
var dataContList [ ] assessmentmodel . DivisionResponsibilities
err = global . GVA_DB_Performanceappraisal . Where ( "`df_sf_id` = ?" , orderId ) . Order ( "df_type ASC" ) . Find ( & dataContList ) . Error
if err != nil {
return
}
if class == 1 {
for _ , v := range dataContList {
cont := MapOut ( )
cont [ "type" ] = v . Type
switch v . Type {
case 1 :
cont [ "typename" ] = "主要责任人"
case 2 :
cont [ "typename" ] = "互保责任人"
case 3 :
cont [ "typename" ] = "责任班组"
case 4 :
cont [ "typename" ] = "责任班组长"
case 5 :
cont [ "typename" ] = "主管"
case 6 :
cont [ "typename" ] = "三大员"
case 7 :
cont [ "typename" ] = "主任"
case 8 :
cont [ "typename" ] = "厂长"
default :
cont [ "typename" ] = "主要责任人"
}
cont [ "weight" ] = v . Weight
cont [ "userkey" ] = v . UserKey
//获取人员信息
userCont , userContErr := GetWorkUser ( strconv . FormatInt ( v . UserKey , 10 ) )
cont [ "wechatid" ] = ""
if v . UserName != "" {
cont [ "username" ] = v . UserName
if userContErr == true {
if userCont . Wechat != "" {
cont [ "wechatid" ] = userCont . Wechat
}
if userCont . WorkWechat != "" {
cont [ "wechatid" ] = userCont . WorkWechat
}
}
} else {
if userContErr == true {
cont [ "username" ] = userCont . Name
if userCont . Wechat != "" {
cont [ "wechatid" ] = userCont . Wechat
}
if userCont . WorkWechat != "" {
cont [ "wechatid" ] = userCont . WorkWechat
}
}
}
cont [ "groupid" ] = v . Group
groupErr , groupInfo := GetGroupCont ( v . Group )
if groupErr == true {
cont [ "groupname" ] = groupInfo . Name
} else {
cont [ "groupname" ] = ""
}
cont [ "departmentid" ] = v . Department
departErr , departInfo := GetBranchFactory ( v . Department )
if departErr == true {
cont [ "departmentname" ] = departInfo . Name
} else {
cont [ "departmentname" ] = ""
}
cont [ "temaid" ] = v . Tema
teamErr , teamInfo := GetTeaming ( v . Tema )
if teamErr == true {
cont [ "temaname" ] = teamInfo . Name
} else {
cont [ "temaname" ] = ""
}
cont [ "taskid" ] = v . DistributionUser
contList = append ( contList , cont )
}
} else {
teamAry := MapOut ( )
for _ , v := range dataContList {
if v . Type != 3 {
cont := MapOut ( )
cont [ "type" ] = v . Type
switch v . Type {
case 1 :
cont [ "typename" ] = "主要责任人"
case 2 :
cont [ "typename" ] = "互保责任人"
case 3 :
cont [ "typename" ] = "责任班组"
case 4 :
cont [ "typename" ] = "责任班组长"
case 5 :
cont [ "typename" ] = "主管"
case 6 :
cont [ "typename" ] = "三大员"
case 7 :
cont [ "typename" ] = "主任"
case 8 :
cont [ "typename" ] = "厂长"
default :
cont [ "typename" ] = "主要责任人"
}
cont [ "weight" ] = v . Weight
cont [ "userkey" ] = v . UserKey
//获取人员信息
userCont , userContErr := GetWorkUser ( strconv . FormatInt ( v . UserKey , 10 ) )
cont [ "wechatid" ] = ""
if v . UserName != "" {
cont [ "username" ] = v . UserName
if userContErr == true {
if userCont . Wechat != "" {
cont [ "wechatid" ] = userCont . Wechat
}
if userCont . WorkWechat != "" {
cont [ "wechatid" ] = userCont . WorkWechat
}
}
} else {
if userContErr == true {
cont [ "username" ] = userCont . Name
if userCont . Wechat != "" {
cont [ "wechatid" ] = userCont . Wechat
}
if userCont . WorkWechat != "" {
cont [ "wechatid" ] = userCont . WorkWechat
}
}
}
cont [ "groupid" ] = v . Group
groupErr , groupInfo := GetGroupCont ( v . Group )
if groupErr == true {
cont [ "groupname" ] = groupInfo . Name
} else {
cont [ "groupname" ] = ""
}
cont [ "departmentid" ] = v . Department
departErr , departInfo := GetBranchFactory ( v . Department )
if departErr == true {
cont [ "departmentname" ] = departInfo . Name
} else {
cont [ "departmentname" ] = ""
}
cont [ "temaid" ] = v . Tema
teamErr , teamInfo := GetTeaming ( v . Tema )
if teamErr == true {
cont [ "temaname" ] = teamInfo . Name
} else {
cont [ "temaname" ] = ""
}
cont [ "taskid" ] = v . DistributionUser
contList = append ( contList , cont )
} else {
teamAry [ "type" ] = v . Type
switch v . Type {
case 1 :
teamAry [ "typename" ] = "主要责任人"
case 2 :
teamAry [ "typename" ] = "互保责任人"
case 3 :
teamAry [ "typename" ] = "责任班组"
case 4 :
teamAry [ "typename" ] = "责任班组长"
case 5 :
teamAry [ "typename" ] = "主管"
case 6 :
teamAry [ "typename" ] = "三大员"
case 7 :
teamAry [ "typename" ] = "主任"
case 8 :
teamAry [ "typename" ] = "厂长"
default :
teamAry [ "typename" ] = "主要责任人"
}
teamAry [ "weight" ] = v . Weight
teamAry [ "userkey" ] = v . UserKey
//获取人员信息
userCont , userContErr := GetWorkUser ( strconv . FormatInt ( v . UserKey , 10 ) )
teamAry [ "wechatid" ] = ""
if v . UserName != "" {
teamAry [ "username" ] = v . UserName
if userContErr == true {
if userCont . Wechat != "" {
teamAry [ "wechatid" ] = userCont . Wechat
}
if userCont . WorkWechat != "" {
teamAry [ "wechatid" ] = userCont . WorkWechat
}
}
} else {
if userContErr == true {
teamAry [ "username" ] = userCont . Name
if userCont . Wechat != "" {
teamAry [ "wechatid" ] = userCont . Wechat
}
if userCont . WorkWechat != "" {
teamAry [ "wechatid" ] = userCont . WorkWechat
}
}
}
teamAry [ "groupid" ] = v . Group
groupErr , groupInfo := GetGroupCont ( v . Group )
if groupErr == true {
teamAry [ "groupname" ] = groupInfo . Name
} else {
teamAry [ "groupname" ] = ""
}
teamAry [ "departmentid" ] = v . Department
departErr , departInfo := GetBranchFactory ( v . Department )
if departErr == true {
teamAry [ "departmentname" ] = departInfo . Name
} else {
teamAry [ "departmentname" ] = ""
}
teamAry [ "temaid" ] = v . Tema
teamErr , teamInfo := GetTeaming ( v . Tema )
if teamErr == true {
teamAry [ "temaname" ] = teamInfo . Name
} else {
teamAry [ "temaname" ] = ""
}
teamAry [ "taskid" ] = v . DistributionUser
}
}
if len ( teamAry ) > 0 {
contList = append ( contList , teamAry )
}
}
return
}
// 判断是否存在
func IsItTrue ( id int64 , idAry [ ] int64 ) ( isTrue bool ) {
isTrue = false
for _ , v := range idAry {
if v == id {
return true
}
}
return
}
func IsItTrueInt ( id int , idAry [ ] int ) ( isTrue bool ) {
isTrue = false
for _ , v := range idAry {
if v == id {
return true
}
}
return
}
func IsItTrueString ( id string , idAry [ ] string ) ( isTrue bool ) {
isTrue = false
for _ , v := range idAry {
if v == id {
return true
}
}
return
}
// 判断是否存在泛型
type faxingType interface {
int | int8 | int16 | int32 | int64 | string
}
func IsInTrue [ T faxingType ] ( key T , keyAry [ ] T ) ( isTrue bool ) {
isTrue = false
for _ , v := range keyAry {
if v == key {
return true
}
}
return
}
// 获取多部门归属集团
func GetDuboDepart ( departAry [ ] string ) ( group [ ] string ) {
fmt . Printf ( "DeparAry--------->%v\n" , departAry )
for _ , v := range departAry {
departID , _ := strconv . ParseInt ( v , 10 , 64 )
// isTrue, bfInfo := GetBranchFactory(departID)
// if isTrue == true {
// bfGetID := strconv.FormatInt(bfInfo.Group, 10)
// if IsItTrueString(bfGetID, group) == false {
// group = append(group, bfGetID)
// }
// }
groupId , isTrue := GetNewHrOrg ( departID )
fmt . Printf ( "groupId----->%v\n" , groupId )
if isTrue == true {
bfGetID := strconv . FormatInt ( groupId , 10 )
if IsItTrueString ( bfGetID , group ) == false {
group = append ( group , bfGetID )
}
}
}
return
}
// 获取新HR系统的集团
func GetNewHrOrg ( departID int64 ) ( groupId int64 , isTrue bool ) {
isTrue = false
var govMap OutGovCont
err := global . GVA_DB_HrDataBase . Model ( & hrsystem . AdministrativeOrganization { } ) . Select ( "administrative_organization.*,aot.name as classname,aot.level" ) . Joins ( "left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type" ) . Where ( "administrative_organization.`state` = 1 AND administrative_organization.id = ?" , departID ) . Find ( & govMap ) . Error
if err != nil {
return
}
fmt . Printf ( "ZongJie----1-->%v-->%v-->%v\n" , groupId , govMap . Superior , govMap . Level )
if govMap . Level <= 3 {
isTrue = true
groupId = govMap . Id
fmt . Printf ( "ZongJie---2--->%v-->%v-->%v\n" , groupId , govMap . Superior , govMap . Level )
return
} else {
fmt . Printf ( "ZongJie---5-->%v-->%v-->%v\n" , groupId , govMap . Superior , govMap . Level )
groupId = diGuiOrg ( govMap . Superior )
fmt . Printf ( "ZongJie--3---->%v-->%v-->%v\n" , groupId , govMap . Superior , govMap . Level )
if groupId > 0 {
isTrue = true
}
}
fmt . Printf ( "ZongJie---4--->%v-->%v-->%v\n" , groupId , govMap . Superior , govMap . Level )
return
}
// 递归查找集团
func diGuiOrg ( superior int64 ) ( groupId int64 ) {
// fmt.Printf("DiGui----->%v\n", superior)
// return
// groupId = 0
var govMap OutGovCont
err := global . GVA_DB_HrDataBase . Model ( & hrsystem . AdministrativeOrganization { } ) . Select ( "administrative_organization.*,aot.name as classname,aot.level" ) . Joins ( "left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type" ) . Where ( "administrative_organization.`state` = 1 AND administrative_organization.id = ?" , superior ) . Find ( & govMap ) . Error
if err != nil {
return
}
// fmt.Printf("Id----%v------>%v------------>%v\n", govMap.Name, superior, govMap.Level)
if govMap . Level <= 3 {
// fmt.Printf("out---->%v--->%v\n", govMap, govMap.Id)
groupId = govMap . Id
return
} else {
// fmt.Printf("digui---->%v\n", govMap)
groupId = diGuiOrg ( govMap . Superior )
}
// fmt.Printf("@@@@@@@@@@------>%v\n", govMap.Id)
return
}
// 批量获取相关人员部门id
func GetDepartmentByUserBast ( userKey [ ] string ) ( userDepartmentId [ ] string ) {
if len ( userKey ) < 1 {
return
}
var usDepartId [ ] int64
usDepartErr := global . GVA_DB_Master . Model ( & testpage . WorkMan { } ) . Select ( "wm_bf_id" ) . Where ( "`wm_key` IN ?" , userKey ) . Group ( "wm_bf_id" ) . Find ( & usDepartId ) . Error
if usDepartErr != nil {
return
}
if len ( usDepartId ) < 1 {
return
}
for _ , v := range usDepartId {
userDepartmentId = append ( userDepartmentId , strconv . FormatInt ( v , 10 ) )
}
return
}
//判断该子栏目是否存在
/ *
@ ascription 指标ID
@ columId 子指标ID
@ title 指标名称
@ departMap 关联部门
* /
func JudgeColumn ( ascription , columId , title , departMap string ) ( content assessmentmodel . QualitativeTarget , isTrue bool ) {
isTrue = false
if columId != "" {
judgeIdErr := global . GVA_DB_Performanceappraisal . Where ( "`q_id` = ?" , columId ) . First ( & content ) . Error
if judgeIdErr == nil {
if content . State != 1 {
saveSunTarData := MapOut ( )
saveSunTarData [ "q_state" ] = 1
saveSunTarData [ "q_time" ] = time . Now ( ) . Unix ( )
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeTarget { } ) . Where ( "`q_id` = ?" , columId ) . Updates ( & saveSunTarData )
}
isTrue = true
// fmt.Printf("1\n")
return
}
}
judgeErr := global . GVA_DB_Performanceappraisal . Where ( "`q_parent_id` = ? AND `q_title` = ?" , ascription , title ) . First ( & content ) . Error
if judgeErr == nil {
if content . State != 1 {
saveSunTarData := MapOut ( )
saveSunTarData [ "q_state" ] = 1
saveSunTarData [ "q_time" ] = time . Now ( ) . Unix ( )
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeTarget { } ) . Where ( "`q_parent_id` = ? AND `q_title` = ?" , ascription , title ) . Updates ( & saveSunTarData )
}
isTrue = true
// fmt.Printf("2\n")
return
}
ascriptionId , ascriptionErr := strconv . ParseInt ( ascription , 10 , 64 )
if ascriptionErr != nil {
ascriptionId = 0
}
saveColum := assessmentmodel . QualitativeTarget { Title : title , ParentId : ascriptionId , State : 1 , AddTime : time . Now ( ) . Unix ( ) , Depart : departMap }
addErr := global . GVA_DB_Performanceappraisal . Create ( & saveColum ) . Error
if addErr != nil {
// fmt.Printf("3\n")
return
}
isTrue = true
content = saveColum
// fmt.Printf("4\n")
// panic(content)
return
}
//关联集团部门考核维度
/ *
@ groupID 集团
@ departId 部门
@ dimensionId 维度
@ key 1 : 定性考核 ; 2 : 定量考核
* /
func AddDepartDimension ( groupID , departId , dimensionId string , key int64 ) {
judgeMap := MapOut ( )
judgeErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimension { } ) . Select ( "dd_id" ) . Where ( "`dd_group` = ? AND `dd_department` = ? AND `dd_dimension` = ?" , groupID , departId , dimensionId ) . First ( & judgeMap ) . Error
if judgeErr != nil {
var saveData assessmentmodel . DepartmentDimension
saveData . Key = key
departIdVal , _ := strconv . ParseInt ( departId , 10 , 64 )
saveData . DepartmentId = departIdVal
dimensionIdVal , _ := strconv . ParseInt ( dimensionId , 10 , 64 )
saveData . Dimension = dimensionIdVal
groupIDVal , _ := strconv . ParseInt ( groupID , 10 , 64 )
saveData . Group = groupIDVal
saveData . Addtime = time . Now ( ) . Unix ( )
insetErr := global . GVA_DB_Performanceappraisal . Create ( & saveData ) . Error
if insetErr == nil {
}
}
}
//判断考核细则是否存在
/ *
参数说明
@ ascription 归属指标栏目
@ title 指标细则
@ explain 指标说明 '
@ explainId 指标明细ID
@ sunTargetId 子栏目
* /
func JudgeDetails ( ascription , title , explain , explainId string , sunTargetId int64 ) ( content assessmentmodel . DetailedTarget , isTrue bool ) {
isTrue = false
if explainId != "" {
judgeIdErr := global . GVA_DB_Performanceappraisal . Where ( "`dt_id` = ?" , explainId ) . First ( & content ) . Error
if judgeIdErr == nil {
eiteCont := MapOut ( )
eiteCont [ "dt_title" ] = title
eiteCont [ "dt_content" ] = explain
eiteCont [ "dt_time" ] = time . Now ( ) . Unix ( )
global . GVA_DB_Performanceappraisal . Model ( & content ) . Where ( "`dt_id` = ?" , explainId ) . Updates ( & eiteCont )
// fmt.Printf("echo --------------1---------->%v\n", content)
isTrue = true
return
}
}
judgeErr := global . GVA_DB_Performanceappraisal . Where ( "`dt_parentid` = ? AND `dt_title` = ?" , ascription , title ) . First ( & content ) . Error
if judgeErr == nil {
isTrue = true
eiteCont := MapOut ( )
eiteCont [ "dt_content" ] = explain
eiteCont [ "dt_time" ] = time . Now ( ) . Unix ( )
global . GVA_DB_Performanceappraisal . Model ( & content ) . Where ( "`dt_id` = ?" , content . Id ) . Updates ( & eiteCont )
// fmt.Printf("echo --------------2---------->%v\n", content)
return
}
ascriptionId , ascriptionErr := strconv . ParseInt ( ascription , 10 , 64 )
if ascriptionErr != nil {
ascriptionId = 0
}
saveColum := assessmentmodel . DetailedTarget { Title : title , Content : explain , ParentId : ascriptionId , ParentIdSun : sunTargetId , State : 1 , AddTime : time . Now ( ) . Unix ( ) }
addErr := global . GVA_DB_Performanceappraisal . Create ( & saveColum ) . Error
if addErr != nil {
// fmt.Printf("echo --------------3---------->%v\n", saveColum.Id)
return
}
// fmt.Printf("echo --------------4---------->%v\n", saveColum.Id)
isTrue = true
content = saveColum
return
}
func GetBranchDepartAry ( departIdAry [ ] string ) ( departId [ ] int64 , departAry [ ] DepartmentAryType ) {
for _ , v := range departIdAry {
// bfId, bfIdErr := strconv.ParseInt(v, 10, 64)
// if bfIdErr == nil {
// deparConErr, deparConCont := GetBranchFactory(bfId)
// if deparConErr == true {
// departId = append(departId, deparConCont.Id)
// var departcont DepartmentAryType
// departcont.Parentname = deparConCont.Name
// departcont.Parentid = v
// departAry = append(departAry, departcont)
// }
// }
var orgCont hrsystem . AdministrativeOrganization
orgErr := orgCont . GetCont ( map [ string ] interface { } { "`id`" : v } , "`id`" , "`name`" )
if orgErr == nil {
departId = append ( departId , orgCont . Id )
var departcont DepartmentAryType
departcont . Parentname = orgCont . Name
departcont . Parentid = v
departAry = append ( departAry , departcont )
}
}
return
}
// 获取新组织架构的行政信息
func GetNewOrgList ( departIdAry [ ] string ) ( departId [ ] int64 , departAry [ ] DepartmentAryType ) {
for _ , v := range departIdAry {
where := MapOut ( )
where [ "id" ] = v
orgCont , orgErr := GetNewOrgCont ( where , "id" , "name" )
if orgErr == nil {
departId = append ( departId , orgCont . Id )
var departcont DepartmentAryType
departcont . Parentname = orgCont . Name
departcont . Parentid = v
departAry = append ( departAry , departcont )
}
}
return
}
//判断考核细则是否存在(新规则)
/ *
参数说明
@ ascription 归属指标栏目
@ title 指标细则
@ explain 指标说明 '
@ explainId 指标明细ID
@ ReferenceScore 分数
@ CompanyCont 单位
@ sunTargetId 子栏目
* /
func JudgeDetailsCopy ( ascription , title , explain , explainId , ReferenceScore , CompanyCont string , sunTargetId int64 , addReduce int ) ( content assessmentmodel . DetailedTarget , isTrue bool ) {
if addReduce == 0 {
addReduce = 1
}
var minScoreInt int64
var maxScoreInt int64
scoreAry := strings . Split ( ReferenceScore , "-" )
scoreLen := len ( scoreAry )
fmt . Printf ( "ScoreAry:%v----------->%v------------>%v------------>%v\n" , ReferenceScore , scoreLen , scoreAry [ 0 ] , scoreAry )
if scoreLen > 0 {
if scoreLen == 1 {
maxScore , _ := strconv . ParseFloat ( scoreAry [ 0 ] , 64 )
zhhh := maxScore * 100
zhuanStr := strconv . FormatFloat ( zhhh , 'f' , - 1 , 64 )
maxScoreInt , _ = strconv . ParseInt ( strconv . FormatFloat ( maxScore * 100 , 'f' , - 1 , 64 ) , 10 , 64 )
minScoreInt = 0
fmt . Printf ( "ScoreAry--1-----:%v----------->%v------------>%v------------>%v\n" , maxScore , maxScoreInt , zhuanStr , zhhh )
} else {
minScore , _ := strconv . ParseFloat ( scoreAry [ 0 ] , 64 )
maxScore , _ := strconv . ParseFloat ( scoreAry [ scoreLen - 1 ] , 64 )
minScoreInt , _ = strconv . ParseInt ( strconv . FormatFloat ( minScore * 100 , 'f' , - 1 , 64 ) , 10 , 64 )
maxScoreInt , _ = strconv . ParseInt ( strconv . FormatFloat ( maxScore * 100 , 'f' , - 1 , 64 ) , 10 , 64 )
}
} else {
minScoreInt = 0
maxScoreInt = 0
}
isTrue = false
if explainId != "" {
judgeIdErr := global . GVA_DB_Performanceappraisal . Where ( "`dt_id` = ?" , explainId ) . First ( & content ) . Error
if judgeIdErr == nil {
eiteCont := MapOut ( )
if minScoreInt > maxScoreInt {
eiteCont [ "dt_min_score" ] = maxScoreInt
eiteCont [ "dt_max_score" ] = minScoreInt
} else {
eiteCont [ "dt_min_score" ] = minScoreInt
eiteCont [ "dt_max_score" ] = maxScoreInt
}
eiteCont [ "dt_title" ] = title
eiteCont [ "dt_content" ] = explain
eiteCont [ "dt_company" ] = CompanyCont
eiteCont [ "dt_add_reduce" ] = addReduce
eiteCont [ "dt_time" ] = time . Now ( ) . Unix ( )
global . GVA_DB_Performanceappraisal . Model ( & content ) . Where ( "`dt_id` = ?" , explainId ) . Updates ( & eiteCont )
// fmt.Printf("echo --------------1---------->%v\n", content)
isTrue = true
return
}
}
judgeErr := global . GVA_DB_Performanceappraisal . Where ( "`dt_parentid` = ? AND `dt_title` = ?" , ascription , title ) . First ( & content ) . Error
if judgeErr == nil {
isTrue = true
eiteCont := MapOut ( )
if minScoreInt > maxScoreInt {
eiteCont [ "dt_min_score" ] = maxScoreInt
eiteCont [ "dt_max_score" ] = minScoreInt
} else {
eiteCont [ "dt_min_score" ] = minScoreInt
eiteCont [ "dt_max_score" ] = maxScoreInt
}
eiteCont [ "dt_content" ] = explain
eiteCont [ "dt_company" ] = CompanyCont
eiteCont [ "dt_add_reduce" ] = addReduce
eiteCont [ "dt_time" ] = time . Now ( ) . Unix ( )
global . GVA_DB_Performanceappraisal . Model ( & content ) . Where ( "`dt_id` = ?" , content . Id ) . Updates ( & eiteCont )
// fmt.Printf("echo --------------2---------->%v\n", content)
return
}
ascriptionId , ascriptionErr := strconv . ParseInt ( ascription , 10 , 64 )
if ascriptionErr != nil {
ascriptionId = 0
}
var minScoreIsTrue int64 = 0
var maxScoreIsTrue int64 = 0
if minScoreInt > maxScoreInt {
minScoreIsTrue = maxScoreInt
maxScoreIsTrue = minScoreInt
} else {
minScoreIsTrue = minScoreInt
maxScoreIsTrue = maxScoreInt
}
fmt . Printf ( "ScoreAry---KKKK:%v----------->%v------------>%v------------>%v" , minScoreIsTrue , maxScoreIsTrue , minScoreIsTrue , maxScoreIsTrue )
saveColum := assessmentmodel . DetailedTarget { Title : title , Content : explain , ParentId : ascriptionId , ParentIdSun : sunTargetId , State : 1 , AddTime : time . Now ( ) . Unix ( ) , Company : CompanyCont , MinScore : minScoreIsTrue , MaxScore : maxScoreIsTrue , AddReduce : addReduce }
addErr := global . GVA_DB_Performanceappraisal . Create ( & saveColum ) . Error
if addErr != nil {
// fmt.Printf("echo --------------3---------->%v\n", saveColum.Id)
return
}
// fmt.Printf("echo --------------4---------->%v\n", saveColum.Id)
isTrue = true
content = saveColum
return
}
//判断定性考核项目是否存在使用状态
/ *
@ group 集团
@ dimension 维度
@ target 指标
@ target_sun 子栏目
@ detailed 维度
* /
func JudegDutyIsUse ( group , dimension , target , target_sun , detailed int64 ) ( isTrue bool ) {
isTrue = false
// var qeInfo []assessmentmodel.QualitativeEvaluation
var qeID [ ] int64
gormDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeEvaluation { } ) . Select ( "qe_id" ) . Where ( "`qe_state` = 1" )
if group != 0 {
gormDb = gormDb . Where ( "`qe_group` = ?" , group )
}
if dimension != 0 {
gormDb = gormDb . Where ( "`qe_dimension` = ?" , dimension )
}
if target != 0 {
gormDb = gormDb . Where ( "`qe_target` = ?" , target )
}
if target_sun != 0 {
gormDb = gormDb . Where ( "`qe_target_sun` = ?" , target_sun )
}
if detailed != 0 {
gormDb = gormDb . Where ( "`qe_detailed_target` = ?" , detailed )
}
err := gormDb . Find ( & qeID ) . Error
if err != nil {
isTrue = true
return
}
var sfID [ ] int64
sfErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . ScoreFlow { } ) . Select ( "sf_id" ) . Where ( "`sf_reply` > 0 AND `sf_evaluation_plan` IN ?" , qeID ) . Find ( & sfID ) . Error
if sfErr != nil {
isTrue = true
return
}
if len ( sfID ) < 1 {
isTrue = true
return
}
return
}
//获取权重
/ *
@ group 集团
@ dimension 维度
@ derpatment 部门
@ target 指标
@ class 1 : 定性考核 ; 2 : 定量考核
* /
func GetWeight ( group , dimension , derpatment , target string , class int64 ) ( weightSum int64 ) {
gormDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimensionWeight { } ) . Where ( "`ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?" , group , derpatment , dimension )
if target != "" {
gormDb = gormDb . Where ( "`ddw_target` = ? AND `ddw_hierarchy` = 2" , target )
} else {
gormDb = gormDb . Where ( "`ddw_hierarchy` = 1" )
}
if class != 0 {
gormDb = gormDb . Where ( "`ddw_type` = ?" , class )
}
err := gormDb . Pluck ( "COALESCE(SUM(ddw_weight), 0) as weight" , & weightSum ) . Error
if err != nil {
weightSum = 0
}
return
}
//写入权重
/ *
@ group 集团
@ dimension 维度
@ derpatment 部门
@ target 指标
@ class 1 : 定性考核 ; 2 : 定量考核
* /
func AddWeight ( group , dimension , derpatment , target string , score , class int64 ) ( isTrue bool ) {
isTrue = false
if target != "" {
var id int64
judegErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimensionWeight { } ) . Select ( "ddw_id" ) . Where ( "`ddw_hierarchy` = 2 AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ? AND `ddw_target` = ? AND `ddw_type` = ?" , group , derpatment , dimension , target , class ) . First ( & id ) . Error
if judegErr == nil {
eiteCont := MapOut ( )
eiteCont [ "ddw_time" ] = time . Now ( ) . Unix ( )
eiteCont [ "ddw_weight" ] = score
eiteErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimensionWeight { } ) . Where ( "ddw_id = ?" , id ) . Updates ( & eiteCont ) . Error
if eiteErr == nil {
isTrue = true
}
} else {
var addCont assessmentmodel . 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
addErr := global . GVA_DB_Performanceappraisal . Create ( & addCont ) . Error
if addErr == nil {
isTrue = true
}
}
} else {
//写入维度权重
var id int64
judegErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimensionWeight { } ) . Select ( "ddw_id" ) . Where ( "`ddw_hierarchy` = 1 AND `ddw_group` = ? AND `ddw_derpatment` = ? AND `ddw_dimension` = ?" , group , derpatment , dimension ) . First ( & id ) . Error
if judegErr == nil {
eiteCont := MapOut ( )
eiteCont [ "ddw_time" ] = time . Now ( ) . Unix ( )
eiteCont [ "ddw_weight" ] = score
eiteErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartmentDimensionWeight { } ) . Where ( "ddw_id = ?" , id ) . Updates ( & eiteCont ) . Error
if eiteErr == nil {
isTrue = true
}
} else {
var addCont assessmentmodel . 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
addErr := global . GVA_DB_Performanceappraisal . Create ( & addCont ) . Error
if addErr == nil {
isTrue = true
}
}
}
return
}
// 获取定量考核目标设定
func GetQuantitativeConfig ( whereData interface { } ) ( cont assessmentmodel . QuantitativeConfig ) {
global . GVA_DB_Performanceappraisal . Where ( whereData ) . First ( & cont )
fmt . Printf ( "TargrtCont------1------>%v\n" , cont )
return
}
// 获取定量考核时间内审批通过的考核数据
func GetTimeIntervalDuty ( whereData interface { } , schemeID int64 ) ( actual float64 ) {
jsonStr , _ := json . Marshal ( whereData )
fmt . Printf ( "jsonStr------1------>%v\n" , string ( jsonStr ) )
actual = 0
//相关审批流
var flowLogList [ ] assessmentmodel . FlowLog
err := global . GVA_DB_Performanceappraisal . Where ( "`fl_reply` = 3 AND FIND_IN_SET(?,`fl_evaluation_id`)" , schemeID ) . Where ( whereData ) . Find ( & flowLogList ) . Error
if err != nil {
return
}
for _ , v := range flowLogList {
actual = actual + GetSchemeFlowData ( v . Key , schemeID )
}
return
}
// 获取指定审批流方案数据
func GetSchemeFlowData ( flowKwy , schemeID int64 ) ( weightSum float64 ) {
weightSum = 0
global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . FlowLogData { } ) . Where ( "`fld_evaluation_id` = ? AND `fld_flow_log` = ?" , schemeID , flowKwy ) . Pluck ( "COALESCE(SUM(fld_score), 0) as qe_reference_score" , & weightSum )
return
}
// 获取float字符串转化成Int64
func GetDuyCycle ( scoreStr string , multiple int64 ) ( scoreInt64 int64 ) {
coreFloat64 , _ := strconv . ParseFloat ( scoreStr , 64 ) //将字符串转换成float64
scoreFloat64ToStr := strconv . FormatFloat ( coreFloat64 * float64 ( multiple ) , 'f' , - 1 , 64 ) //将乘以系数后的数值转换成字符串
scoreInt64 , _ = strconv . ParseInt ( scoreFloat64ToStr , 10 , 64 ) //将字符串转换成int64
return
}
// 获取判断定量考核时间内审批中和通过的考核数据
func GetTimeIntervalDutyJudge ( whereData interface { } , schemeID int64 ) ( actual float64 ) {
jsonStr , _ := json . Marshal ( whereData )
fmt . Printf ( "jsonStr------1------>%v\n" , string ( jsonStr ) )
actual = 0
//相关审批流
var flowLogList [ ] assessmentmodel . FlowLog
err := global . GVA_DB_Performanceappraisal . Where ( "`fl_reply` IN (2,3) AND FIND_IN_SET(?,`fl_evaluation_id`)" , schemeID ) . Where ( whereData ) . Find ( & flowLogList ) . Error
if err != nil {
return
}
for _ , v := range flowLogList {
actual = actual + GetSchemeFlowData ( v . Key , schemeID )
}
return
}
// 判断子栏目是否归属此部门
func JudegSunTarToDepart ( sunId , departId int64 ) ( isTrue bool ) {
isTrue = false
var title string
judgeARTErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QualitativeTarget { } ) . Select ( "q_title" ) . Where ( "`q_id` = ? AND FIND_IN_SET(?,`q_depart`)" , sunId , departId ) . First ( & title ) . Error
if judgeARTErr == nil {
isTrue = true
}
return
}
// 中文首字母大写
func ChinaToPinYinFirstWord ( wordStr string ) ( firstWord string ) {
pinYinSub := pinyin . NewArgs ( )
rows := pinyin . Pinyin ( wordStr , pinYinSub )
for i := 0 ; i < len ( rows ) ; i ++ {
if len ( rows [ i ] ) != 0 {
str := rows [ i ] [ 0 ]
pi := str [ 0 : 1 ]
firstWord += string ( bytes . ToUpper ( [ ] byte ( pi ) ) )
}
}
return
}
// 判断文件上传的TYPE
func JudgeUpFileType ( extTage string ) int {
images := [ ] string { ".jpg" , ".jpeg" , ".png" , ".gif" , ".bmp" , ".avif" , ".webp" , ".tif" , ".pcx" , ".tga" , ".exif" , ".fpx" , ".svg" , ".psd" , ".cdr" , ".pcd" , ".dxf" , ".ufo" , ".hdri" , ".eps" , ".flic" , ".ai" , ".ico" , ".emf" , ".raw" , ".WMF" , ".avif" , ".apng" , ".Webp" , ".BMP" , ".PCX" , ".TIF" , ".GIF" , ".JPEG" , ".JPG" , ".TGA" , ".EXIF" , ".FPX" , ".SVG" , ".PSD" , ".CDR" , ".PCD" , ".DXF" , ".UFO" , ".EPS" , ".AI" , ".PNG" , ".HDRI" , ".RAW" , ".WMF" , ".FLIC" , ".EMF" , ".APNG" , ".ICO" }
videoExt := [ ] string { ".mp4" , ".avi" , ".3gp" , ".flv" , ".rm" , ".rmvb" , ".wmv" , ".mpeg" , ".mpeg1" , ".mpeg2" , ".divx" , ".xvid" , ".dv" , ".mkv" , ".asf" , ".asx" , ".mov" , ".m4v" , ".dat" , ".mkv" , ".vob" , ".ogg" , ".mod" , ".MP4" , ".3GP" , ".AVI" , ".RM" , ".RMVB" , ".WMV" , ".MPEG" , ".MPEG1" , ".MPEG2" , ".DivX" , ".XVID" , ".DV" , ".MKV" , ".MOV" , ".OGG" , ".MOD" , ".M4V" , ".DAT" , ".VOB" }
officeExt := [ ] string { ".doc" , ".docx" , ".xml" , ".xls" , ".xlsx" , ".ppt" , ".pptx" , ".pot" , ".PPS" , ".dot" , ".mht" , ".xlt" }
zipExt := [ ] string { ".rar" , ".zip" , ".7z" , ".ar" , ".bz" , ".car" , ".dar" , ".cpgz" , ".f" , ".ha" }
if IsItTrueString ( extTage , images ) == true {
return 1
}
if IsItTrueString ( extTage , videoExt ) == true {
return 2
}
if IsItTrueString ( extTage , officeExt ) == true {
return 3
}
if IsItTrueString ( extTage , zipExt ) == true {
return 4
}
return 5
}
// 字节的单位转换 保留两位小数
func FormatFileSize ( fileSize int64 ) ( size string ) {
if fileSize < 1024 {
//return strconv.FormatInt(fileSize, 10) + "B"
return fmt . Sprintf ( "%.2fB" , float64 ( fileSize ) / float64 ( 1 ) )
} else if fileSize < ( 1024 * 1024 ) {
return fmt . Sprintf ( "%.2fKB" , float64 ( fileSize ) / float64 ( 1024 ) )
} else if fileSize < ( 1024 * 1024 * 1024 ) {
return fmt . Sprintf ( "%.2fMB" , float64 ( fileSize ) / float64 ( 1024 * 1024 ) )
} else if fileSize < ( 1024 * 1024 * 1024 * 1024 ) {
return fmt . Sprintf ( "%.2fGB" , float64 ( fileSize ) / float64 ( 1024 * 1024 * 1024 ) )
} else if fileSize < ( 1024 * 1024 * 1024 * 1024 * 1024 ) {
return fmt . Sprintf ( "%.2fTB" , float64 ( fileSize ) / float64 ( 1024 * 1024 * 1024 * 1024 ) )
} else { //if fileSize < (1024 * 1024 * 1024 * 1024 * 1024 * 1024)
return fmt . Sprintf ( "%.2fEB" , float64 ( fileSize ) / float64 ( 1024 * 1024 * 1024 * 1024 * 1024 ) )
}
}
// 获取最大最小值
func NewUserModel ( ary [ ] int64 ) ( max , min int64 ) {
if len ( ary ) < 0 {
return
}
// var teamMax T
for _ , v := range ary {
if v > max {
max = v
}
if v < min {
min = v
}
}
return
}
// 去重和排序
func UniqueSort ( slice [ ] int64 ) [ ] int64 {
var quChong [ ] int64
if len ( slice ) < 1 {
return quChong
}
//去重
for _ , v := range slice {
if IsItTrue ( v , quChong ) == false {
quChong = append ( quChong , v )
}
}
//排序
return SortForMerge ( quChong , 0 , len ( quChong ) - 1 )
}
// 插入排序
func SortForMerge ( arr [ ] int64 , left , right int ) [ ] int64 {
for i := left ; i <= right ; i ++ {
temp := arr [ i ]
var j int
for j = i ; j > left && arr [ j - 1 ] > temp ; j -- { //定位
arr [ j ] = arr [ j - 1 ]
}
arr [ j ] = temp
}
return arr
}
// 获取用户信息
// func GetNewHrPeopleInfo(where interface{}, filed ...string) (ueInfo hrsystem.Personnel, isTrue bool) {
func GetNewHrPeopleInfo ( where interface { } , filed ... string ) ( ueInfo hrsystem . ManCont , isTrue bool ) {
isTrue = false
// var ueInfo hrsystem.Personnel
gormDb := global . GVA_DB_HrDataBase . Model ( & hrsystem . ManCont { } )
if len ( filed ) > 0 {
fieldStr := strings . Join ( filed , "," )
gormDb = gormDb . Select ( fieldStr )
}
err := gormDb . Where ( where ) . First ( & ueInfo ) . Error
if err != nil {
return
}
isTrue = true
return
}
//浮点数保留两位小数
func Decimal ( value float64 ) float64 {
value , _ = strconv . ParseFloat ( fmt . Sprintf ( "%.2f" , value ) , 64 )
return value
}
func DecimalEs ( value float64 , weishu int ) float64 {
switch weishu {
case 3 :
value , _ = strconv . ParseFloat ( fmt . Sprintf ( "%.3f" , value ) , 64 )
case 4 :
value , _ = strconv . ParseFloat ( fmt . Sprintf ( "%.4f" , value ) , 64 )
case 5 :
value , _ = strconv . ParseFloat ( fmt . Sprintf ( "%.5f" , value ) , 64 )
case 6 :
value , _ = strconv . ParseFloat ( fmt . Sprintf ( "%.6f" , value ) , 64 )
default :
value , _ = strconv . ParseFloat ( fmt . Sprintf ( "%.2f" , value ) , 64 )
}
return value
}
// 判断是否为闰年
func IsLeapYear ( year int64 ) bool { //y == 2000,2004
//判断是否为闰年
if year % 4 == 0 && year % 100 != 0 || year % 400 == 0 {
return true
}
return false
}
/ *
WriteReplyLog ( orderId , acceptDepartment , launchDepartment , launchUser , state , title , content )
@ orderId 审批单key
@ title 节点名称
@ acceptDepartment 接受考核部门
@ launchDepartment 发起考核部门
@ launchUser 考核发起人
@ state 申请单当前审批状态 : 1 - 审批中 ; 2 - 已通过 ; 3 - 已驳回 ; 4 - 已取消
@ content 意见
* /
func WriteReplyLog ( orderId , acceptDepartment , launchDepartment , launchUser , state int64 , title , content string ) {
var assessLogTwo assessmentmodel . AssessmentLogIng
assessLogTwo . OrderId = orderId
assessLogTwo . Title = title
assessLogTwo . Assdepart = acceptDepartment
assessLogTwo . ExecutorDepart = launchDepartment
assessLogTwo . ExecutorUser = launchUser
assessLogTwo . ExecutorTime = time . Now ( ) . Unix ( )
assessLogTwo . States = state
assessLogTwo . AddTime = time . Now ( ) . Unix ( )
assessLogTwo . EiteTime = time . Now ( ) . Unix ( )
assessLogTwo . DutyList = content
global . GVA_DB_Performanceappraisal . Create ( & assessLogTwo )
}
//计算得分
/ *
参数
@ targetScore 指标分值
@ resultval 结算值
@ allPrizes 全奖值
@ zeroPrizes 零奖值
@ CappingVals 封顶值
@ typeClass 1 : 定性 ; 2 : 定量 ; 3 : 观察指标
返回说明
@ scoreVal 计算得分
@ allPrize 全奖值
@ zeroPrize 零奖值
@ CappingVal 封顶值
@ achievement 达成率
* /
func CalculateScore ( targetScore int64 , resultval , allPrizes , zeroPrizes , CappingVals float64 , typeClass int ) ( scoreVal , allPrize , zeroPrize , CappingVal , achievement float64 ) {
allPrize = allPrizes / 100
zeroPrize = zeroPrizes / 100
CappingVal = CappingVals / 100
resultval = resultval / 100
//fmt.Printf("达成率--1-->targetScore:%v-->resultval:%v-->allPrize:%v-->zeroPrize:%v-->CappingVal:%v\n", targetScore, resultval, allPrize, zeroPrize, CappingVal)
//不修正精度的达成率
var achievementAll float64 = 0
if allPrize == 0 && zeroPrize == 0 { //全奖值与零奖值都为0 那么达成率 100 和实际得分是 指标分
achievement = 100
scoreVal = float64 ( targetScore )
if typeClass == 2 {
scoreVal = 0
}
achievementAll = 100
//fmt.Printf("达成率--11-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
} else {
if allPrize > zeroPrize { //如果全奖值大于零奖值 执行一下操作
if resultval <= zeroPrize { //实际结算值小于零奖值 那么达成率和实际得分都是0
achievement = 0
scoreVal = 0
achievementAll = 0
// } else if resultval > allPrize { //实际结算值大于全奖值 执行一下操作
//fmt.Printf("达成率--7-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
} else { //实际结算值在全奖值 与 零奖值之间
chuShu := resultval - float64 ( zeroPrize )
beiChuShu := float64 ( allPrize ) - float64 ( zeroPrize )
if beiChuShu != 0 {
achievement = DecimalEs ( chuShu / beiChuShu , 4 )
achievementAll = chuShu / beiChuShu
if achievement <= 0 {
//如果在全奖值大于零件值的情况下出现达成率为0或负数,则达成率和实际得分都是0
achievement = 0
scoreVal = 0
achievementAll = 0
//fmt.Printf("达成率--8-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
} else {
//fmt.Printf("达成率--9-1->targetScore:%v-->resultval:%v-->scoreVal:%v-->allPrize:%v-->zeroPrize:%v-->CappingVal:%v-->achievement:%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
if achievement * 100 >= CappingVal {
//如果达成率大于等于封顶值
if CappingVal > 0 {
scoreVal = ( CappingVal / 100 ) * float64 ( targetScore )
//fmt.Printf("达成率--9-2->targetScore:%v-->resultval:%v-->scoreVal:%v-->allPrize:%v-->zeroPrize:%v-->CappingVal:%v-->achievement:%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
} else {
//fmt.Printf("达成率--9-3->targetScore:%v-->resultval:%v-->scoreVal:%v-->allPrize:%v-->zeroPrize:%v-->CappingVal:%v-->achievement:%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
scoreVal = float64 ( targetScore )
}
} else {
// scoreVal = achievement * (float64(targetScore))
scoreVal = achievementAll * ( float64 ( targetScore ) )
//fmt.Printf("达成率--9-4->targetScore:%v-->resultval:%v-->scoreVal:%v-->allPrize:%v-->zeroPrize:%v-->CappingVal:%v-->achievement:%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
}
//fmt.Printf("达成率--9-->targetScore:%v-->resultval:%v-->scoreVal:%v-->allPrize:%v-->zeroPrize:%v-->CappingVal:%v-->achievement:%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
}
achievement = DecimalEs ( achievement * 100 , 4 )
} else {
//被除数为0时 那么达成率和实际得分都是0
achievement = 0
scoreVal = 0
achievementAll = 0
//fmt.Printf("达成率--10-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
}
}
} else { //如果全奖值小于零奖值 执行一下操作
if resultval >= zeroPrize { //实际结算值大于零奖值 那么达成率和实际得分都是0
achievement = 0
scoreVal = 0
achievementAll = 0
//fmt.Printf("达成率--1-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
} else {
chuShu := resultval - float64 ( zeroPrize )
beiChuShu := float64 ( allPrize ) - float64 ( zeroPrize )
if beiChuShu != 0 {
achievement = DecimalEs ( chuShu / beiChuShu , 4 )
achievementAll = chuShu / beiChuShu
if achievement <= 0 {
//如果在全奖值大于零件值的情况下出现达成率为0或负数,则达成率和实际得分都是0
achievement = 0
scoreVal = 0
achievementAll = 0
//fmt.Printf("达成率--2-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
} else {
if achievement * 100 >= CappingVal {
//如果达成率大于等于封顶值
scoreVal = CappingVal * float64 ( targetScore ) / 100
//fmt.Printf("达成率--3-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
} else {
// scoreVal = achievement * (float64(targetScore))
scoreVal = achievementAll * ( float64 ( targetScore ) )
//fmt.Printf("达成率--4-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
}
}
achievement = DecimalEs ( achievement * 100 , 4 )
//fmt.Printf("达成率--6-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
} else {
//被除数为0时 那么达成率和实际得分都是0
achievement = 0
scoreVal = 0
achievementAll = 0
//fmt.Printf("达成率--5-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
}
}
}
}
if typeClass == 3 {
scoreVal = float64 ( targetScore )
//fmt.Printf("达成率--11-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
}
scoreVal = Decimal ( scoreVal )
allPrize = Decimal ( allPrize )
zeroPrize = Decimal ( zeroPrize )
CappingVal = Decimal ( CappingVal )
achievement = DecimalEs ( achievement , 4 )
//fmt.Printf("达成率--12-->%v-->%v-->%v-->%v-->%v-->%v-->%v\n", targetScore, resultval, scoreVal, allPrize, zeroPrize, CappingVal, achievement)
return
}
// 递归查找指定部门所有子类
func DiGuiOrgSun ( superior int64 , idary [ ] int64 ) ( groupId [ ] int64 ) {
// fmt.Printf("DiGui----->%v\n", superior)
// return
// groupId = 0
var govMap [ ] OutGovCont
err := global . GVA_DB_HrDataBase . Model ( & hrsystem . AdministrativeOrganization { } ) . Select ( "administrative_organization.id,aot.name as classname,aot.level" ) . Joins ( "left join administrative_organization_type as aot on aot.id = administrative_organization.organization_type" ) . Where ( "administrative_organization.`state` = 1 AND administrative_organization.superior = ?" , superior ) . Find ( & govMap ) . Error
if err != nil {
return
}
for _ , v := range govMap {
if IsInTrue [ int64 ] ( v . Id , groupId ) == false {
groupId = append ( groupId , v . Id )
DiGuiOrgSun ( v . Id , groupId )
} else {
DiGuiOrgSun ( v . Id , groupId )
}
}
return
}