@ -1,6 +1,7 @@
package assessment
import (
"encoding/json"
"strconv"
"time"
@ -27,6 +28,21 @@ func (a *Assessment) MyAssEssMentList(c *gin.Context) {
// response.Result(101, err, "参数错误!请重新提交!", c)
// return
}
dayTime := time . Now ( )
monthData := commonus . TimeStampToDate ( dayTime . Unix ( ) , 10 ) //当月
switch requestData . DayState {
case 1 :
monthData = commonus . TimeStampToDate ( dayTime . Unix ( ) , 10 ) //当月
case 2 :
lastOneMonthStart , _ := commonus . AppointTimeFrontMonth ( dayTime , 1 )
monthData = commonus . TimeStampToDate ( lastOneMonthStart , 10 ) //上一个月
case 3 :
lastOneMonthStart , _ := commonus . AppointTimeFrontMonth ( dayTime , 2 )
monthData = commonus . TimeStampToDate ( lastOneMonthStart , 10 ) //上两个月
default :
monthData = commonus . TimeStampToDate ( dayTime . Unix ( ) , 10 ) //当月
}
if requestData . PageSize == 0 {
requestData . PageSize = 20
}
@ -73,7 +89,7 @@ func (a *Assessment) MyAssEssMentList(c *gin.Context) {
assessOutCont . AssessTitle = assessClassCont . Title
}
assIsTrue , assDepartList := GetAssDepart ( val . Id )
assIsTrue , assDepartList := GetAssDepart ( val . Id , monthData )
// fmt.Printf("------------->%v-------->%v\n", assIsTrue, assDepartList)
if assIsTrue == true {
assessOutCont . AssessDepart = assDepartList
@ -87,7 +103,7 @@ func (a *Assessment) MyAssEssMentList(c *gin.Context) {
}
//获得项目考核部门
func GetAssDepart ( dutyid int64 ) ( isTrue bool , assessDepartstr [ ] assessDepart ) {
func GetAssDepart ( dutyid int64 , dataStr string ) ( isTrue bool , assessDepartstr [ ] assessDepart ) {
isTrue = false
var departDuty [ ] assessmentmodel . DepartDuty
assDepartErr := global . GVA_DB_Performanceappraisal . Where ( "`de_duty` = ? AND `de_satte` = 1" , dutyid ) . Find ( & departDuty ) . Error
@ -108,6 +124,7 @@ func GetAssDepart(dutyid int64) (isTrue bool, assessDepartstr []assessDepart) {
assInfo . DutyId = val . DutyId
assInfo . Rescore = val . Rescore
assInfo . Group = val . Group
assInfo . IsTrue = JudgeResAssEssExam ( val . DutyId , val . PartId , dataStr )
assessDepartstr = append ( assessDepartstr , assInfo )
}
@ -116,6 +133,24 @@ func GetAssDepart(dutyid int64) (isTrue bool, assessDepartstr []assessDepart) {
return
}
//判断部门指定月份是否已经考核完毕
func JudgeResAssEssExam ( dutyId , departId int64 , monthTimeStr string ) ( isTrue bool ) {
isTrue = false
// var departscores assessmentmodel.Departscores
monthTimeStr = monthTimeStr + "-01 12:00:00"
fileTime , fileTimeErr := commonus . DateToTimeStampEs ( monthTimeStr )
if fileTimeErr != true {
return
}
outMap := commonus . MapOut ( )
err := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . Departscores { } ) . Select ( "s_id" ) . Where ( "`s_duty` = ? AND `s_depart_id` = ? AND `s_file_time` = ?" , dutyId , departId , fileTime ) . First ( & outMap ) . Error
if err == nil {
isTrue = true
}
return
}
//根据具体考核项获取被考核部门
func ( a * Assessment ) GetDutyDepartList ( c * gin . Context ) {
var requestData assessDepartRequest
@ -133,7 +168,9 @@ func (a *Assessment) GetDutyDepartList(c *gin.Context) {
response . Result ( 103 , err , "参数错误!请重新提交!" , c )
return
}
isTrue , departList := GetAssDepart ( id )
dayTime := time . Now ( )
monthData := commonus . TimeStampToDate ( dayTime . Unix ( ) , 10 ) //当月
isTrue , departList := GetAssDepart ( id , monthData )
if isTrue != true {
response . Result ( 104 , departList , "获取失败!" , c )
return
@ -555,3 +592,305 @@ func GetDutyInfoCont(id int64) (isTrue bool, outAssDutyInfo outAessDuty) {
isTrue = true
return
}
//以部门为维度获取考核项目
func ( a * Assessment ) DepartmentAssess ( c * gin . Context ) {
var requestData departAssessType
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "参数错误!请重新提交!" , c )
return
}
if requestData . DepartmentId == 0 {
response . Result ( 102 , err , "参数错误!请重新提交!" , c )
return
}
isTrue , userCont := commonus . ClientIdentity ( )
if isTrue != true {
response . Result ( 103 , err , "您的身份令牌已经失效!请重新登录获取身份令牌!" , c )
return
}
if requestData . GroupId == 0 {
groupId , groupErr := strconv . Atoi ( userCont . Group )
if groupErr == nil {
requestData . GroupId = groupId
} else {
response . Result ( 104 , err , "参数错误!请重新提交!" , c )
return
}
}
dayTime := time . Now ( )
monthData := commonus . TimeStampToDate ( dayTime . Unix ( ) , 10 ) //当月
switch requestData . DayState {
case 1 :
monthData = commonus . TimeStampToDate ( dayTime . Unix ( ) , 10 ) //当月
case 2 :
lastOneMonthStart , _ := commonus . AppointTimeFrontMonth ( dayTime , 1 )
monthData = commonus . TimeStampToDate ( lastOneMonthStart , 10 ) //上一个月
case 3 :
lastOneMonthStart , _ := commonus . AppointTimeFrontMonth ( dayTime , 2 )
monthData = commonus . TimeStampToDate ( lastOneMonthStart , 10 ) //上两个月
default :
monthData = commonus . TimeStampToDate ( dayTime . Unix ( ) , 10 ) //当月
}
var ContInfo [ ] departAssessOutType
departErr := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . DepartDuty { } ) . Select ( "departduty.*" , "dutycontent.dc_title" , "dutycontent.dc_state" , "dutycontent.dc_user_dump" , "dutycontent.dc_dump" , "dutycontent.dc_user_type" , "dutycontent.dc_parent" ) . Joins ( "left join dutycontent on departduty.de_duty = dutycontent.dc_id" ) . Where ( "(`de_partid` = ? AND `de_group` = ? AND `de_satte` = 1) AND ((`dc_user_dump` = ? OR `dc_dump` = ?) AND `dc_state` = 1)" , requestData . DepartmentId , requestData . GroupId , userCont . Key , userCont . DepartmentId ) . Find ( & ContInfo ) . Error
if departErr != nil {
response . Result ( 105 , err , "没有要考核的项目!" , c )
return
}
var outCont departAssessOutType
var outContMap [ ] departAssessOutType
// outMapList := []commonus.MapOut()
for _ , val := range ContInfo {
outCont . Id = val . Id
outCont . Titles = val . Titles
outCont . Rescore = val . Rescore
outCont . IsTrue = JudgeResAssEssExam ( val . Id , int64 ( requestData . DepartmentId ) , monthData )
outContMap = append ( outContMap , outCont )
}
// JudgeResAssEssExam(val.DutyId, val.PartId, dataStr) .Where("(`dc_user_dump` = ? OR `dc_dump` = ?) AND `dc_state` = 1", userCont.Key, userCont.DepartmentId)
response . Result ( 0 , outContMap , "查询成功!" , c )
}
//以部门为基准填写考核数据
func ( a * Assessment ) DepartmentAssessData ( c * gin . Context ) {
var requestData DepartDutyData
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "参数错误!请重新提交!" , c )
return
}
var orderId int64
var departId int
var executorUser int64
var executorDepart int
orderId = 0
departId = 0
executorUser = 0
executorDepart = 0
if requestData . OrderId == "" {
response . Result ( 102 , err , "未知订单号!请重新提交!" , c )
return
} else {
orderIdVal , orderIdErr := strconv . ParseInt ( requestData . OrderId , 10 , 64 )
if orderIdErr == nil {
orderId = orderIdVal
} else {
response . Result ( 103 , err , "未知订单号!请重新提交!" , c )
return
}
}
var assessLogCont assessmentmodel . AssessmentLog //考核记录
orderContErr := global . GVA_DB_Performanceappraisal . Select ( "al_id" ) . Where ( "`al_order_id` = ?" , orderId ) . First ( & assessLogCont ) . Error
if orderContErr == nil {
response . Result ( 121 , orderId , "该订单已经提交审批!请不要重复提交审批!" , c )
return
}
if requestData . Title == "" {
response . Result ( 104 , err , "未知考核标题!请重新提交!" , c )
return
}
if requestData . DepartId == "" {
response . Result ( 105 , err , "未知被考核的部门!请重新提交!" , c )
return
} else {
departIdVal , departIdErr := strconv . Atoi ( requestData . DepartId )
if departIdErr == nil {
departId = departIdVal
} else {
response . Result ( 106 , err , "未知被考核的部门!请重新提交!" , c )
return
}
}
if requestData . ExecutorUser == "" {
response . Result ( 107 , err , "未知考核执行人!请重新提交!" , c )
return
} else {
executorUserVal , executorUserErr := strconv . ParseInt ( requestData . ExecutorUser , 10 , 64 )
if executorUserErr == nil {
executorUser = executorUserVal
} else {
response . Result ( 108 , err , "未知考核执行人!请重新提交!" , c )
return
}
}
if requestData . ExecutorDepart == "" {
response . Result ( 109 , err , "未知考核执行部门!请重新提交!" , c )
return
} else {
executorDepartVal , executorDepartErr := strconv . Atoi ( requestData . ExecutorDepart )
if executorDepartErr == nil {
executorDepart = executorDepartVal
} else {
response . Result ( 110 , err , "未知考核执行部门!请重新提交!" , c )
return
}
}
if requestData . DateTime == "" {
response . Result ( 111 , err , "未知考核时间!请重新提交!" , c )
return
}
monthTimeStr := requestData . DateTime + "-01 12:00:00"
fileTime , fileTimeErr := commonus . DateToTimeStampEs ( monthTimeStr )
if fileTimeErr != true {
response . Result ( 112 , err , "考核时间格式错误!请重新提交!" , c )
return
}
if len ( requestData . DutyList ) <= 0 {
}
for reIndex , reData := range requestData . DutyList {
if reData . DutyId == "" {
response . Result ( 113 , reIndex , "未知考核项目!请重新提交!" , c )
return
}
if reData . DeductPoints > reData . ReferenceScore {
response . Result ( 114 , reIndex , "考核项目扣分大于参考分!请重新提交!" , c )
return
}
if reData . ExtraPoints > reData . ReferenceScore {
response . Result ( 115 , reIndex , "考核项目加分大于参考分!请重新提交!" , c )
return
}
}
var assessLog assessmentmodel . AssessmentLog //考核记录
// assessLog.Id = commonus.GetFileNumberEs()
assessLog . Title = requestData . Title
assessLog . Assdepart = departId
assessLog . ExecutorUser = executorUser
assessLog . ExecutorDepart = executorDepart
assessLog . ExecutorTime = fileTime
assessLog . OrderId = orderId
assessLog . States = 1
assessLog . AddTime = time . Now ( ) . Unix ( )
assessLog . EiteTime = time . Now ( ) . Unix ( )
var dutyListMap [ ] assessmentmodel . Departscores
for _ , dutyCont := range requestData . DutyList {
var dutyListCont assessmentmodel . Departscores
dutyId , orderIdErr := strconv . ParseInt ( dutyCont . DutyId , 10 , 64 )
if orderIdErr != nil {
response . Result ( 116 , dutyCont . DutyId , "指定考核项目ID不正确!" , c )
return
}
assIsTrue , assInfo := assessment . GetDutyInfoContAll ( dutyId )
if assIsTrue != true {
response . Result ( 117 , dutyCont . DutyId , "指定考核项目已禁止使用!" , c )
return
}
classId := assInfo . ClassId
assessId := assInfo . AssessId
actualScore := dutyCont . ReferenceScore - dutyCont . DeductPoints + dutyCont . ExtraPoints
if actualScore < 0 {
actualScore = 0
}
dutyListCont . Id = commonus . GetFileNumberEs ( )
dutyListCont . ClassId = classId
dutyListCont . AssessId = assessId
dutyListCont . DutyId = dutyId
dutyListCont . DeductPoints = int64 ( dutyCont . DeductPoints )
dutyListCont . ExtraPoints = int64 ( dutyCont . ExtraPoints )
// dutyListCont.Score = requestData.Score
dutyListCont . Score = int64 ( actualScore )
dutyListCont . FileTime = fileTime
dutyListCont . DepartId = int64 ( departId )
dutyListCont . CommentUser = executorUser
dutyListCont . AddTime = time . Now ( ) . Unix ( )
dutyListCont . EiteTime = time . Now ( ) . Unix ( )
dutyListCont . State = 1
dutyListMap = append ( dutyListMap , dutyListCont )
}
dutyList , dutyListErr := json . Marshal ( dutyListMap )
if dutyListErr == nil {
assessLog . DutyList = string ( dutyList )
}
outContMap := commonus . MapOut ( )
outContMap [ "assessLog" ] = assessLog
outContMap [ "dutyListMap" ] = dutyListMap
outContMap [ "lookid" ] = requestData . OrderId
//写入数据
affairDb := global . GVA_DB_Performanceappraisal . Begin ( )
assessLogErr := affairDb . Create ( & assessLog ) . Error
dutyListMapErr := affairDb . Create ( & dutyListMap ) . Error
if assessLogErr == nil && dutyListMapErr == nil {
affairDbErr := affairDb . Commit ( ) . Error
if affairDbErr == nil {
response . Result ( 0 , outContMap , "数据写入成功!" , c )
} else {
response . Result ( 118 , outContMap , "数据写入失败!" , c )
}
} else {
affairDbErr := affairDb . Rollback ( ) . Error
if affairDbErr == nil {
response . Result ( 119 , outContMap , "数据写入失败!" , c )
} else {
response . Result ( 120 , outContMap , "数据写入失败!" , c )
}
}
}
//查看审批详细内容
func ( a * Assessment ) LookDepartmentAssessInfo ( c * gin . Context ) {
var requestData LookDutyCont
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "参数错误!请重新提交!" , c )
return
}
if requestData . Id == "" {
response . Result ( 102 , err , "参数错误!不可产看!" , c )
return
}
orderId , orderIdErr := strconv . ParseInt ( requestData . Id , 10 , 64 )
if orderIdErr != nil {
response . Result ( 103 , err , "参数错误!不可产看!" , c )
return
}
var assessLogCont assessmentmodel . AssessmentLog //考核记录
orderContErr := global . GVA_DB_Performanceappraisal . Where ( "`al_order_id` = ?" , orderId ) . First ( & assessLogCont ) . Error
if orderContErr != nil {
response . Result ( 104 , orderId , "该审批单不存在!请检查是否查看错误!" , c )
return
}
var dutyListMap [ ] assessmentmodel . Departscores
jsonErr := json . Unmarshal ( [ ] byte ( assessLogCont . DutyList ) , & dutyListMap )
if jsonErr != nil {
response . Result ( 105 , jsonErr , "审批详情异常,不可查看!请联系系统管理员排查故障!" , c )
return
}
outList := commonus . MapOutint ( )
for index , val := range dutyListMap {
outInfo := commonus . MapOut ( )
outInfo [ "id" ] = strconv . FormatInt ( val . Id , 10 )
outInfo [ "classID" ] = strconv . FormatInt ( val . ClassId , 10 )
outInfo [ "assessId" ] = strconv . FormatInt ( val . AssessId , 10 )
outInfo [ "dutyId" ] = strconv . FormatInt ( val . DutyId , 10 )
outInfo [ "deductPoints" ] = strconv . FormatInt ( val . DeductPoints , 10 )
outInfo [ "extraPoints" ] = strconv . FormatInt ( val . ExtraPoints , 10 )
outInfo [ "score" ] = strconv . FormatInt ( val . Score , 10 )
outInfo [ "departId" ] = strconv . FormatInt ( val . DepartId , 10 )
outInfo [ "commentUser" ] = strconv . FormatInt ( val . CommentUser , 10 )
dtyContErr , dtyCont := GetDutyInfoCont ( val . DutyId )
if dtyContErr == true {
outInfo [ "classTitle" ] = dtyCont . ClassTitle
outInfo [ "assessTitle" ] = dtyCont . AssessTitle
outInfo [ "dutyTitle" ] = dtyCont . DutyTitle
} else {
outInfo [ "classTitle" ] = ""
outInfo [ "assessTitle" ] = ""
outInfo [ "dutyTitle" ] = ""
}
outList [ index ] = outInfo
}
outContMap := commonus . MapOut ( )
outContMap [ "assessLog" ] = assessLogCont
outContMap [ "dutyListMap" ] = outList
response . Result ( 0 , outContMap , "数据写入成功!" , c )
}