package assessment
import (
"strconv"
"time"
"github.com/flipped-aurora/gin-vue-admin/server/commonus"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/assessmentmodel"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
)
func ( d * DutyHandle ) SetEvaluationObjectives ( c * gin . Context ) {
var requestData SetEvaluationObjectives
err := c . ShouldBindJSON ( & requestData )
if err != nil {
response . Result ( 101 , err , "数据获取失败!" , c )
return
}
if requestData . Year == 0 {
response . Result ( 102 , err , "请填写年度" , c )
return
}
if requestData . Group == 0 {
response . Result ( 103 , err , "请选择归属集团" , c )
return
}
if requestData . DepartMent == 0 {
response . Result ( 104 , err , "请选择归属部门" , c )
return
}
if requestData . Dimension == "" {
response . Result ( 105 , err , "请选择归属维度" , c )
return
}
if requestData . Target == "" {
response . Result ( 106 , err , "请选择归属指标" , c )
return
}
switch requestData . Cycle {
case 1 :
if len ( requestData . CycleAdded ) != 1 {
response . Result ( 107 , err , "年度只可填写一条!" , c )
return
}
case 2 :
if len ( requestData . CycleAdded ) > 4 {
response . Result ( 108 , err , "季度最多只可填写四条!" , c )
return
}
if len ( requestData . CycleAdded ) < 1 {
response . Result ( 109 , err , "季度至少填写一条!" , c )
return
}
case 3 :
if len ( requestData . CycleAdded ) > 12 {
response . Result ( 110 , err , "月度最多只可填写十二条!" , c )
return
}
if len ( requestData . CycleAdded ) < 1 {
response . Result ( 111 , err , "月度至少填写一条!" , c )
return
}
default :
response . Result ( 112 , err , "请选择周期" , c )
return
}
var timecopy [ ] int64
// gromDb := global.GVA_DB_Performanceappraisal.Model(&assessmentmodel.QuantitativeConfig{}).Select("Timecopy").Where("`group` = ? AND `departmentid` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `type` = ?", requestData.Group, requestData.DepartMent, requestData.Dimension, requestData.Target, requestData.Year, requestData.Cycle)
gromDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QuantitativeConfig { } ) . Select ( "Timecopy" ) . Where ( "`group` = ? AND `departmentid` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? " , requestData . Group , requestData . DepartMent , requestData . Dimension , requestData . Target , requestData . Year )
if requestData . TargetDetails != "" {
gromDb = gromDb . Where ( "`targetconfig` = ?" , requestData . TargetDetails )
}
judgeErr := gromDb . Find ( & timecopy ) . Error
if judgeErr == nil {
if len ( timecopy ) > 0 {
response . Result ( 121 , judgeErr , "已经存在!不要重复添加!" , c )
return
}
}
var saveData [ ] assessmentmodel . QuantitativeConfig
var eiteAddData [ ] int64
for _ , v := range requestData . CycleAdded {
if judgeErr != nil {
var saveDataCont assessmentmodel . QuantitativeConfig
saveDataCont . DepartmentId = requestData . DepartMent
saveDataCont . Group = requestData . Group
dimensionId , dimensionIdErr := strconv . ParseInt ( requestData . Dimension , 10 , 64 )
if dimensionIdErr == nil {
saveDataCont . Dimension = dimensionId
}
targetId , targetIdErr := strconv . ParseInt ( requestData . Target , 10 , 64 )
if targetIdErr == nil {
saveDataCont . Target = targetId
}
targetDetailsId , targetDetailsIdErr := strconv . ParseInt ( requestData . TargetDetails , 10 , 64 )
if targetDetailsIdErr == nil {
saveDataCont . TargetConfig = targetDetailsId
}
saveDataCont . Type = int64 ( requestData . Cycle )
saveDataCont . Year = requestData . Year
saveDataCont . Timecopy = v . Id
if v . Zeroprize < 0 {
saveDataCont . Zeroprize = 0
} else {
if v . Zeroprize > 100 {
saveDataCont . Zeroprize = 10000
} else {
saveDataCont . Zeroprize = v . Zeroprize * 100
}
}
if v . Allprize < 0 {
saveDataCont . Allprize = 0
} else {
if v . Allprize > 100 {
saveDataCont . Allprize = 10000
} else {
saveDataCont . Allprize = v . Allprize * 100
}
}
if v . Capping > 0 {
saveDataCont . Capping = 1
saveDataCont . CappingVal = v . Capping * 100
} else {
saveDataCont . Capping = 2
saveDataCont . CappingVal = 0
}
saveDataCont . Time = time . Now ( ) . Unix ( )
saveDataCont . State = 1
saveData = append ( saveData , saveDataCont )
} else {
if len ( timecopy ) <= 0 {
var saveDataCont assessmentmodel . QuantitativeConfig
saveDataCont . DepartmentId = requestData . DepartMent
saveDataCont . Group = requestData . Group
dimensionId , dimensionIdErr := strconv . ParseInt ( requestData . Dimension , 10 , 64 )
if dimensionIdErr == nil {
saveDataCont . Dimension = dimensionId
}
targetId , targetIdErr := strconv . ParseInt ( requestData . Target , 10 , 64 )
if targetIdErr == nil {
saveDataCont . Target = targetId
}
targetDetailsId , targetDetailsIdErr := strconv . ParseInt ( requestData . TargetDetails , 10 , 64 )
if targetDetailsIdErr == nil {
saveDataCont . TargetConfig = targetDetailsId
}
saveDataCont . Type = int64 ( requestData . Cycle )
saveDataCont . Year = requestData . Year
saveDataCont . Timecopy = v . Id
if v . Zeroprize < 0 {
saveDataCont . Zeroprize = 0
} else {
if v . Zeroprize > 100 {
saveDataCont . Zeroprize = 10000
} else {
saveDataCont . Zeroprize = v . Zeroprize * 100
}
}
if v . Allprize < 0 {
saveDataCont . Allprize = 0
} else {
if v . Allprize > 100 {
saveDataCont . Allprize = 10000
} else {
saveDataCont . Allprize = v . Allprize * 100
}
}
if v . Capping > 0 {
saveDataCont . Capping = 1
saveDataCont . CappingVal = v . Capping * 100
} else {
saveDataCont . Capping = 2
saveDataCont . CappingVal = 0
}
saveDataCont . Time = time . Now ( ) . Unix ( )
saveDataCont . State = 1
saveData = append ( saveData , saveDataCont )
} else {
for _ , s_v := range timecopy {
if s_v != v . Id {
var saveDataCont assessmentmodel . QuantitativeConfig
saveDataCont . DepartmentId = requestData . DepartMent
saveDataCont . Group = requestData . Group
dimensionId , dimensionIdErr := strconv . ParseInt ( requestData . Dimension , 10 , 64 )
if dimensionIdErr == nil {
saveDataCont . Dimension = dimensionId
}
targetId , targetIdErr := strconv . ParseInt ( requestData . Target , 10 , 64 )
if targetIdErr == nil {
saveDataCont . Target = targetId
}
targetDetailsId , targetDetailsIdErr := strconv . ParseInt ( requestData . TargetDetails , 10 , 64 )
if targetDetailsIdErr == nil {
saveDataCont . TargetConfig = targetDetailsId
}
saveDataCont . Type = int64 ( requestData . Cycle )
saveDataCont . Year = requestData . Year
saveDataCont . Timecopy = v . Id
if v . Zeroprize < 0 {
saveDataCont . Zeroprize = 0
} else {
if v . Zeroprize > 100 {
saveDataCont . Zeroprize = 10000
} else {
saveDataCont . Zeroprize = v . Zeroprize * 100
}
}
if v . Allprize < 0 {
saveDataCont . Allprize = 0
} else {
if v . Allprize > 100 {
saveDataCont . Allprize = 10000
} else {
saveDataCont . Allprize = v . Allprize * 100
}
}
if v . Capping > 0 {
saveDataCont . Capping = 1
saveDataCont . CappingVal = v . Capping * 100
} else {
saveDataCont . Capping = 2
saveDataCont . CappingVal = 0
}
saveDataCont . Time = time . Now ( ) . Unix ( )
saveDataCont . State = 1
saveData = append ( saveData , saveDataCont )
} else {
eiteDataMap := commonus . MapOut ( )
eiteDataMap [ "type" ] = requestData . Cycle
eiteDataMap [ "timecopy" ] = v . Id
if v . Zeroprize < 0 {
eiteDataMap [ "zeroprize" ] = 0
} else {
if v . Zeroprize > 100 {
eiteDataMap [ "zeroprize" ] = 10000
} else {
eiteDataMap [ "zeroprize" ] = v . Zeroprize * 100
}
}
if v . Allprize < 0 {
eiteDataMap [ "allprize" ] = 0
} else {
if v . Allprize > 100 {
eiteDataMap [ "allprize" ] = 10000
} else {
eiteDataMap [ "allprize" ] = v . Allprize * 100
}
}
if v . Capping > 0 {
eiteDataMap [ "capping" ] = 1
eiteDataMap [ "capping_val" ] = v . Capping * 100
} else {
eiteDataMap [ "capping" ] = 2
eiteDataMap [ "capping_val" ] = 0
}
eiteDataMap [ "time" ] = time . Now ( ) . Unix ( )
gromDb := global . GVA_DB_Performanceappraisal . Model ( & assessmentmodel . QuantitativeConfig { } ) . Select ( "Timecopy" ) . Where ( "`group` = ? AND `departmentid` = ? AND `dimension` = ? AND `target` = ? AND `year` = ? AND `type` = ?" , requestData . Group , requestData . DepartMent , requestData . Dimension , requestData . Target , requestData . Year , requestData . Cycle )
if requestData . TargetDetails != "" {
gromDb = gromDb . Where ( "`targetconfig` = ?" , requestData . TargetDetails )
}
gromDb . Updates ( eiteDataMap )
eiteAddData = append ( eiteAddData , 1 )
}
}
}
}
}
if len ( saveData ) <= 0 && len ( eiteAddData ) <= 0 {
response . Result ( 113 , err , "没有要添加的数据!" , c )
return
}
if len ( saveData ) > 0 {
saveErr := global . GVA_DB_Performanceappraisal . Create ( & saveData ) . Error
if saveErr != nil {
response . Result ( 114 , err , "数据添加失败!" , c )
return
}
}
response . Result ( 0 , err , "数据处理完成!" , c )
}