You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
570 lines
23 KiB
570 lines
23 KiB
package postweb
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"key_performance_indicators/models/modelshr"
|
|
"key_performance_indicators/models/modelskpi"
|
|
"key_performance_indicators/overall"
|
|
"key_performance_indicators/overall/publicmethod"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
//岗位指标相关操作
|
|
|
|
// 获取指定人要考核的项目列表
|
|
func (a *ApiMethod) GetPostTarget(c *gin.Context) {
|
|
var receivedValue getPostManTargetList
|
|
err := c.ShouldBindJSON(&receivedValue)
|
|
if err != nil {
|
|
publicmethod.Result(100, err, c)
|
|
return
|
|
}
|
|
if receivedValue.Id == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
if receivedValue.Class == 0 {
|
|
receivedValue.Class = 1
|
|
}
|
|
//获取被考核人基本西悉尼
|
|
var userCont modelshr.PersonArchives
|
|
err = userCont.GetCont(map[string]interface{}{"`key`": receivedValue.Id}, "`company`", "`maindeparment`", "`admin_org`", "`position`")
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
//获取登录人信息
|
|
context, _ := publicmethod.LoginMyCont(c)
|
|
|
|
var qualitSchemeList []modelskpi.QualitativeEvaluationScheme
|
|
err = overall.CONSTANT_DB_KPI.Raw("SELECT q.* FROM qualitative_evaluation_scheme q Where q.state = 1 AND `attribute` = ? AND q.target_id = some (SELECT target_id FROM target_report tr WHERE tr.type = 2 AND tr.department_id = ? AND tr.post_id = ? AND tr.man_key = ?)", receivedValue.Class, userCont.MainDeparment, userCont.Position, context.Key).Scan(&qualitSchemeList).Error
|
|
if err != nil || len(qualitSchemeList) < 1 {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
var outDataAry []outPostManTargetList
|
|
for _, v := range qualitSchemeList {
|
|
// jsonStr, _ := json.Marshal(v)
|
|
// fmt.Printf("v----------->%v\n", string(jsonStr))
|
|
var outCont outPostManTargetList
|
|
outCont.Id = strconv.FormatInt(v.Id, 10)
|
|
outCont.Class = v.Attribute
|
|
outCont.Title = v.Title
|
|
if v.Attribute == 1 {
|
|
if v.Source == 1 { //岗位
|
|
var postTarDeta modelskpi.PostTargetDetails
|
|
postTarDeta.GetCont(map[string]interface{}{"`id`": v.DetailsId}, "`punishmode`")
|
|
outCont.AddReduce = postTarDeta.Punishmode
|
|
} else { //部门
|
|
var departTarDeta modelskpi.DetailedTarget
|
|
departTarDeta.GetCont(map[string]interface{}{"`dt_id`": v.DetailsId}, "`dt_add_reduce`")
|
|
outCont.AddReduce = departTarDeta.AddReduce
|
|
}
|
|
|
|
}
|
|
outDataAry = append(outDataAry, outCont)
|
|
}
|
|
publicmethod.Result(0, outDataAry, c)
|
|
}
|
|
|
|
// 定性指标列表
|
|
func (a *ApiMethod) GetPostNature(c *gin.Context) {
|
|
var receivedValue publicmethod.PublicId
|
|
err := c.ShouldBindJSON(&receivedValue)
|
|
if err != nil {
|
|
publicmethod.Result(100, err, c)
|
|
return
|
|
}
|
|
if receivedValue.Id == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
//获取被考核人基本信息
|
|
var userCont modelshr.PersonArchives
|
|
err = userCont.GetCont(map[string]interface{}{"`key`": receivedValue.Id}, "`company`", "`maindeparment`", "`admin_org`", "`position`")
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
//获取登录人信息
|
|
context, _ := publicmethod.LoginMyCont(c)
|
|
//获取被考核人本岗位的考核项目
|
|
var itemList []modelskpi.ShemePeople
|
|
|
|
err = overall.CONSTANT_DB_KPI.Where("`state` IN (1,3) AND `type` = 2 AND `attribute` = 1 AND `run_state` <> 2 AND `org_id` = ? AND `post_id` = ? AND `man_key` = ?", userCont.MainDeparment, userCont.Position, context.Key).Find(&itemList).Error
|
|
if err != nil || len(itemList) < 1 {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
var targetId []int64
|
|
//获取指标内容
|
|
var outDataAry []outPostManTargetList
|
|
for _, v := range itemList {
|
|
if publicmethod.IsInTrue[int64](v.TargetId, targetId) == false {
|
|
var outCont outPostManTargetList
|
|
outCont.Id = strconv.FormatInt(v.TargetId, 10)
|
|
outCont.Title = v.Title
|
|
outCont.Class = v.Attribute
|
|
if v.Source == 1 { //岗位
|
|
var postTarDeta modelskpi.PostTargetDetails
|
|
postTarDeta.GetCont(map[string]interface{}{"`id`": v.DetailsId}, "`punishmode`")
|
|
outCont.AddReduce = postTarDeta.Punishmode
|
|
} else { //部门
|
|
var departTarDeta modelskpi.DetailedTarget
|
|
departTarDeta.GetCont(map[string]interface{}{"`dt_id`": v.DetailsId}, "`dt_add_reduce`")
|
|
outCont.AddReduce = departTarDeta.AddReduce
|
|
}
|
|
outCont.UserKey = receivedValue.Id
|
|
outCont.DimensionId = strconv.FormatInt(v.DimensionId, 10)
|
|
outDataAry = append(outDataAry, outCont)
|
|
}
|
|
}
|
|
publicmethod.Result(0, outDataAry, c)
|
|
}
|
|
|
|
// 获取定量指标列表
|
|
func (a *ApiMethod) GetPostRation(c *gin.Context) {
|
|
var receivedValue publicmethod.PublicId
|
|
err := c.ShouldBindJSON(&receivedValue)
|
|
if err != nil {
|
|
publicmethod.Result(100, err, c)
|
|
return
|
|
}
|
|
if receivedValue.Id == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
//获取被考核人基本信息
|
|
var userCont modelshr.PersonArchives
|
|
err = userCont.GetCont(map[string]interface{}{"`key`": receivedValue.Id}, "`company`", "`maindeparment`", "`admin_org`", "`position`")
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
//获取登录人信息
|
|
context, _ := publicmethod.LoginMyCont(c)
|
|
//获取被考核人本岗位的考核项目
|
|
var itemList []modelskpi.ShemePeople
|
|
|
|
err = overall.CONSTANT_DB_KPI.Where("`state` IN (1,3) AND `type` = 2 AND `attribute` = 2 AND `run_state` <> 2 AND `org_id` = ? AND `post_id` = ? AND `man_key` = ?", userCont.MainDeparment, userCont.Position, context.Key).Find(&itemList).Error
|
|
if err != nil || len(itemList) < 1 {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
|
|
var targetId []int64
|
|
//获取指标内容
|
|
var outDataAry []outPostRation
|
|
for _, v := range itemList {
|
|
if publicmethod.IsInTrue[int64](v.TargetId, targetId) == false {
|
|
var outCont outPostRation
|
|
outCont.Id = strconv.FormatInt(v.TargetId, 10)
|
|
outCont.Name = v.Title
|
|
outCont.UserKey = receivedValue.Id
|
|
outCont.DimensionId = strconv.FormatInt(v.DimensionId, 10)
|
|
outDataAry = append(outDataAry, outCont)
|
|
}
|
|
}
|
|
publicmethod.Result(0, outDataAry, c)
|
|
}
|
|
|
|
// 获取岗位定性考核指标细则列表
|
|
func (a *ApiMethod) GetPostDeimensoInfo(c *gin.Context) {
|
|
var receivedValue getNatureDimeList
|
|
err := c.ShouldBindJSON(&receivedValue)
|
|
if err != nil {
|
|
publicmethod.Result(100, err, c)
|
|
return
|
|
}
|
|
if receivedValue.UserKey == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
if receivedValue.DimensionId == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
if receivedValue.TargetId == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
//获取被考核人基本信息
|
|
var userCont modelshr.PersonArchives
|
|
err = userCont.GetCont(map[string]interface{}{"`key`": receivedValue.UserKey}, "`company`", "`maindeparment`", "`admin_org`", "`position`")
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
//获取登录人信息
|
|
context, _ := publicmethod.LoginMyCont(c)
|
|
//获取被考核人本岗位的考核项目
|
|
var itemList []modelskpi.ShemePeople
|
|
|
|
gormDb := overall.CONSTANT_DB_KPI.Where("`state` IN (1,3) AND `type` = 2 AND `attribute` = 1 AND `run_state` <> 2 AND `dimension_id` = ? AND `target_id` = ? AND `org_id` = ? AND `post_id` = ? AND `man_key` = ?", receivedValue.DimensionId, receivedValue.TargetId, userCont.MainDeparment, userCont.Position, context.Key)
|
|
gormDb = publicmethod.PageTurningSettings(gormDb, receivedValue.Page, receivedValue.PageSize)
|
|
errGorm := gormDb.Order("`son_target_id` DESC").Find(&itemList).Error
|
|
var total int64
|
|
totalErr := gormDb.Count(&total).Error
|
|
if totalErr != nil {
|
|
total = 0
|
|
}
|
|
if errGorm != nil || len(itemList) < 1 {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
var outList []outNatureDimeCont
|
|
for _, v := range itemList {
|
|
var outCont outNatureDimeCont
|
|
outCont.Id = v.Id
|
|
outCont.VersionNumber = v.VersionNumber // 版本编号"`
|
|
outCont.CompanyId = v.CompanyId // 归属公司"`
|
|
outCont.DepartmentId = v.DepartmentId // 归属部门"`
|
|
outCont.OrgId = v.OrgId // 归属行政组织"`
|
|
outCont.PostId = v.PostId // 归属岗位"`
|
|
outCont.Title = v.Title //考核项名称"`
|
|
outCont.DimensionId = v.DimensionId //维度"`
|
|
outCont.TargetId = v.TargetId // 指标"`
|
|
outCont.SonTargetId = v.SonTargetId //子栏目"`
|
|
outCont.DetailsId = v.DetailsId //细则"`
|
|
outCont.Attribute = v.Attribute // 属性 1:定性考核;2:定量考核"`
|
|
outCont.MinScore = v.MinScore // 最小分*100保存"`
|
|
outCont.MaxScore = v.MaxScore //最大分*100保存"`
|
|
outCont.ScoringMethod = v.ScoringMethod //计分方式(1:自动;2:手动)"`
|
|
outCont.State = v.State //状态(1:启用;2:禁用;3:删除)"`
|
|
outCont.Addtime = v.Addtime //添加时间"`
|
|
outCont.Eitetime = v.Eitetime // 编辑时间"`
|
|
outCont.CensorType = v.CensorType //检查方式(1:现场检查;2:资料检查;3:事件触发)"`
|
|
outCont.Source = v.Source //来源(1:岗位;2:部门引用)"`
|
|
outCont.RunState = v.RunState //运行状态(1:启用;2:禁用;3:观察)"`
|
|
|
|
outCont.Type = v.Type //类型(1:公司级;2:部门级)"`
|
|
outCont.ReportPerson = v.ReportPerson //上报人"`
|
|
outCont.ManDepartment = v.ManDepartment //提报人所在部门"`
|
|
outCont.Class = v.Class //1:定性考核;2:定量考核"`
|
|
outCont.Level = v.Level //类型(1:指标;2:子目标;3:细则)"`
|
|
outCont.Punishmode = v.Punishmode //处罚方式 1:扣分;2:现金处罚;3:扣分加现金
|
|
outCont.Maxmoney = v.Maxmoney //最高罚款
|
|
outCont.Minmoney = v.Minmoney //最低罚款
|
|
if v.CensorType != "" {
|
|
outCont.CensorTypeAry = strings.Split(v.CensorType, ",")
|
|
}
|
|
if v.DetailsId != 0 {
|
|
//获取指标信息
|
|
if v.Source == 1 { //岗位
|
|
var targetCont modelskpi.PostTargetDetails
|
|
targetCont.GetCont(map[string]interface{}{"`id`": v.DetailsId}, "content", "add_reduce", "censor_cont")
|
|
outCont.Context = targetCont.Content //指标说明"`
|
|
outCont.AddReduce = targetCont.AddReduce //1:减少;2:增加;3:无属性,现场确认加或减"`
|
|
outCont.CensorCont = targetCont.CensorCont //检查依据"`
|
|
} else { //部门
|
|
var departTarDeta modelskpi.DetailedTarget
|
|
departTarDeta.GetCont(map[string]interface{}{"`dt_id`": v.DetailsId}, "`dt_add_reduce`")
|
|
outCont.Context = departTarDeta.Content //指标说明"`
|
|
outCont.AddReduce = departTarDeta.AddReduce //1:减少;2:增加;3:无属性,现场确认加或减"`
|
|
outCont.CensorCont = departTarDeta.CensorCont //检查依据"`
|
|
}
|
|
}
|
|
if v.MinScore != 0 {
|
|
outCont.ScoreStr = fmt.Sprintf("%v-%v", v.MinScore, v.MaxScore)
|
|
} else {
|
|
outCont.ScoreStr = fmt.Sprintf("%v", v.MaxScore)
|
|
}
|
|
if v.Minmoney != 0 {
|
|
outCont.MoneyStr = fmt.Sprintf("%v-%v", v.Minmoney, v.Maxmoney)
|
|
} else {
|
|
outCont.MoneyStr = fmt.Sprintf("%v", v.Maxmoney)
|
|
}
|
|
outCont.UserKey = receivedValue.UserKey
|
|
outList = append(outList, outCont)
|
|
}
|
|
publicmethod.ResultList(0, receivedValue.Page, receivedValue.PageSize, total, int64(len(outList)), outList, c)
|
|
}
|
|
|
|
// 获取被考核人定性指标细则详细内容
|
|
func (a *ApiMethod) GetNaturePostDimerons(c *gin.Context) {
|
|
var receivedValue postNaturcInfo
|
|
err := c.ShouldBindJSON(&receivedValue)
|
|
if err != nil {
|
|
publicmethod.Result(100, err, c)
|
|
return
|
|
}
|
|
if receivedValue.UserKey == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
if receivedValue.Id == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
var shemeCont modelskpi.QualitativeEvaluationScheme
|
|
errSheme := shemeCont.GetCont(map[string]interface{}{"`id`": receivedValue.Id})
|
|
if errSheme != nil {
|
|
publicmethod.Result(107, receivedValue, c)
|
|
return
|
|
}
|
|
var outCont outNatureDimePostCont
|
|
outCont.Id = shemeCont.Id
|
|
outCont.VersionNumber = shemeCont.VersionNumber // 版本编号"`
|
|
outCont.CompanyId = shemeCont.CompanyId // 归属公司"`
|
|
outCont.DepartmentId = shemeCont.DepartmentId // 归属部门"`
|
|
outCont.OrgId = shemeCont.OrgId // 归属行政组织"`
|
|
outCont.PostId = shemeCont.PostId // 归属岗位"`
|
|
outCont.Title = shemeCont.Title //考核项名称"`
|
|
outCont.DimensionId = shemeCont.DimensionId //维度"`
|
|
outCont.TargetId = shemeCont.TargetId // 指标"`
|
|
outCont.SonTargetId = shemeCont.SonTargetId //子栏目"`
|
|
outCont.DetailsId = shemeCont.DetailsId //细则"`
|
|
outCont.Attribute = shemeCont.Attribute // 属性 1:定性考核;2:定量考核"`
|
|
outCont.MinScore = shemeCont.MinScore // 最小分*100保存"`
|
|
outCont.MaxScore = shemeCont.MaxScore //最大分*100保存"`
|
|
outCont.ScoringMethod = shemeCont.ScoringMethod //计分方式(1:自动;2:手动)"`
|
|
outCont.State = shemeCont.State //状态(1:启用;2:禁用;3:删除)"`
|
|
outCont.Addtime = shemeCont.Addtime //添加时间"`
|
|
outCont.Eitetime = shemeCont.Eitetime // 编辑时间"`
|
|
outCont.CensorType = shemeCont.CensorType //检查方式(1:现场检查;2:资料检查;3:事件触发)"`
|
|
outCont.Source = shemeCont.Source //来源(1:岗位;2:部门引用)"`
|
|
outCont.RunState = shemeCont.RunState //运行状态(1:启用;2:禁用;3:观察)"`
|
|
|
|
outCont.Punishmode = shemeCont.Punishmode //处罚方式 1:扣分;2:现金处罚;3:扣分加现金
|
|
outCont.Maxmoney = shemeCont.Maxmoney //最高罚款
|
|
outCont.Minmoney = shemeCont.Minmoney //最低罚款
|
|
if shemeCont.CensorType != "" {
|
|
outCont.CensorTypeAry = strings.Split(shemeCont.CensorType, ",")
|
|
}
|
|
if shemeCont.DetailsId != 0 {
|
|
//获取指标信息
|
|
if shemeCont.Source == 1 { //岗位
|
|
var targetCont modelskpi.PostTargetDetails
|
|
targetCont.GetCont(map[string]interface{}{"`id`": shemeCont.DetailsId}, "content", "add_reduce", "censor_cont")
|
|
outCont.Context = targetCont.Content //指标说明"`
|
|
outCont.AddReduce = targetCont.AddReduce //1:减少;2:增加;3:无属性,现场确认加或减"`
|
|
outCont.CensorCont = targetCont.CensorCont //检查依据"`
|
|
} else { //部门
|
|
var departTarDeta modelskpi.DetailedTarget
|
|
departTarDeta.GetCont(map[string]interface{}{"`dt_id`": shemeCont.DetailsId}, "`dt_add_reduce`")
|
|
outCont.Context = departTarDeta.Content //指标说明"`
|
|
outCont.AddReduce = departTarDeta.AddReduce //1:减少;2:增加;3:无属性,现场确认加或减"`
|
|
outCont.CensorCont = departTarDeta.CensorCont //检查依据"`
|
|
}
|
|
}
|
|
if shemeCont.MinScore != 0 {
|
|
outCont.ScoreStr = fmt.Sprintf("%v-%v", shemeCont.MinScore, shemeCont.MaxScore)
|
|
} else {
|
|
outCont.ScoreStr = fmt.Sprintf("%v", shemeCont.MaxScore)
|
|
}
|
|
if shemeCont.Minmoney != 0 {
|
|
outCont.MoneyStr = fmt.Sprintf("%v-%v", shemeCont.Minmoney, shemeCont.Maxmoney)
|
|
} else {
|
|
outCont.MoneyStr = fmt.Sprintf("%v", shemeCont.Maxmoney)
|
|
}
|
|
outCont.UserKey = receivedValue.UserKey
|
|
publicmethod.Result(0, outCont, c)
|
|
}
|
|
|
|
// 提交个人岗位定性考核数据
|
|
func (a *ApiMethod) SendUsNatureEvaluation(c *gin.Context) {
|
|
var receivedValue sendMyEvaluationData
|
|
err := c.ShouldBindJSON(&receivedValue)
|
|
if err != nil {
|
|
publicmethod.Result(100, err, c)
|
|
return
|
|
}
|
|
if receivedValue.Id == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
var postShemeCont modelskpi.QualitativeEvaluationScheme
|
|
err = postShemeCont.GetCont(map[string]interface{}{"`id`": receivedValue.Id})
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
if receivedValue.UserKey == "" {
|
|
publicmethod.Result(101, receivedValue, c)
|
|
return
|
|
}
|
|
//获取被考核人基本信息
|
|
var userCont modelshr.PersonArchives
|
|
err = userCont.GetCont(map[string]interface{}{"`key`": receivedValue.UserKey}, "`company`", "`maindeparment`", "`admin_org`", "`position`")
|
|
if err != nil {
|
|
publicmethod.Result(107, err, c)
|
|
return
|
|
}
|
|
if receivedValue.AddOrDecrease == 0 {
|
|
receivedValue.AddOrDecrease = 2
|
|
}
|
|
if receivedValue.Punishmode == 0 {
|
|
receivedValue.Punishmode = 1
|
|
}
|
|
var scoreVal int64 = 0
|
|
var moneyVal int64 = 0
|
|
isTrue := false
|
|
var msg string
|
|
switch receivedValue.Punishmode {
|
|
case 1:
|
|
scoreVal, isTrue, msg = judgeScoreOrMoneyIsTrue(receivedValue.ScoreState, receivedValue.Score, postShemeCont.MaxScore, postShemeCont.MinScore)
|
|
if isTrue != true {
|
|
publicmethod.Result(1, isTrue, c, msg)
|
|
return
|
|
}
|
|
case 2:
|
|
moneyVal, isTrue, msg = judgeScoreOrMoneyIsTrue(receivedValue.MoneyState, receivedValue.Money, postShemeCont.Maxmoney, postShemeCont.Minmoney)
|
|
if isTrue != true {
|
|
publicmethod.Result(1, isTrue, c, msg)
|
|
return
|
|
}
|
|
case 3:
|
|
scoreVal, isTrue, msg = judgeScoreOrMoneyIsTrue(receivedValue.ScoreState, receivedValue.Score, postShemeCont.MaxScore, postShemeCont.MinScore)
|
|
if isTrue != true {
|
|
publicmethod.Result(1, isTrue, c, msg)
|
|
return
|
|
}
|
|
moneyVal, isTrue, msg = judgeScoreOrMoneyIsTrue(receivedValue.MoneyState, receivedValue.Money, postShemeCont.Maxmoney, postShemeCont.Minmoney)
|
|
if isTrue != true {
|
|
publicmethod.Result(1, isTrue, c, msg)
|
|
return
|
|
}
|
|
}
|
|
|
|
if receivedValue.Count == 0 {
|
|
receivedValue.Count = 1
|
|
}
|
|
currentTime := time.Now().Unix()
|
|
if receivedValue.HappenTime != "" {
|
|
happTime, timeErr := publicmethod.DateToTimeStamp(receivedValue.HappenTime)
|
|
if timeErr == true {
|
|
currentTime = happTime
|
|
}
|
|
}
|
|
if receivedValue.Rectification == 0 {
|
|
receivedValue.Rectification = 2
|
|
}
|
|
var correctionTime int64 = 0
|
|
if receivedValue.Rectification == 1 {
|
|
if receivedValue.CorrectionPeriod == "" {
|
|
publicmethod.Result(1, isTrue, c, "请选择什么时间前整改完成!")
|
|
return
|
|
}
|
|
var corrTimeErr bool = false
|
|
correctionTime, corrTimeErr = publicmethod.DateToTimeStamp(receivedValue.CorrectionPeriod)
|
|
if corrTimeErr == false {
|
|
publicmethod.Result(1, corrTimeErr, c, "请输入整改期限时间格式不对,谢谢!")
|
|
return
|
|
}
|
|
}
|
|
//获取登录人信息
|
|
context, _ := publicmethod.LoginMyCont(c)
|
|
|
|
uuId := publicmethod.GetUUid(1)
|
|
//流程列表
|
|
var flowCont modelskpi.PostWorkflowOrders
|
|
flowCont.OrderId = uuId //审批单ID"`
|
|
flowCont.Step = 1 //当前执行到第几步"`
|
|
flowCont.NextStep = 2 //下一步执行哪个步骤"`
|
|
flowCont.WorkFlow = "" //工作流(审批json字符串)"`
|
|
flowCont.CompanyId = userCont.Company //公司"`
|
|
flowCont.DepartmentId = userCont.MainDeparment //部门"`
|
|
flowCont.OrgId = userCont.AdminOrg //行政组织"`
|
|
flowCont.PostId = userCont.Position //岗位"`
|
|
flowCont.Class = postShemeCont.Attribute //属性1、定性;2、定量"`
|
|
flowCont.Dimension = postShemeCont.DimensionId //维度"`
|
|
flowCont.Target = postShemeCont.TargetId //指标"`
|
|
flowCont.SonTarget = postShemeCont.SonTargetId //指标子栏目"`
|
|
flowCont.Detailed = postShemeCont.DetailsId //指标细则"`
|
|
flowCont.Executor = context.Key //执行人"`
|
|
flowCont.ExecutorDepartment = context.MainDeparment //执行人部门"`
|
|
flowCont.State = 3 //流程状态 1:草稿;2:驳回;3:审批中;4:归档;5:废弃;6:删除"`
|
|
flowCont.StartTime = time.Now().Unix() //流程开始时间"`
|
|
flowCont.Time = time.Now().Unix() //时间"`
|
|
if len(receivedValue.Enclosure) > 0 {
|
|
jsonFileList, _ := json.Marshal(receivedValue.Enclosure)
|
|
flowCont.EnclosureFormat = string(jsonFileList) //附件"`
|
|
}
|
|
|
|
//定性考核流水
|
|
var postNatureFlowCont modelskpi.PostNatureFlow
|
|
postNatureFlowCont.OrderId = uuId //审批单ID"`
|
|
postNatureFlowCont.AddOrDecrease = receivedValue.AddOrDecrease //增加或减少(1:增加;2:减少)"`
|
|
postNatureFlowCont.Score = scoreVal //分值(*100保存)"`
|
|
postNatureFlowCont.Money = moneyVal //钱(扣款或奖励)*100保存"`
|
|
postNatureFlowCont.Reason = receivedValue.Reason //这样操作的原因"`
|
|
postNatureFlowCont.ShemeId = postShemeCont.Id //方案ID"`
|
|
postNatureFlowCont.ShemeVersion = postShemeCont.VersionNumber //方案版本编号"`
|
|
postNatureFlowCont.Dimension = postShemeCont.DimensionId //维度"`
|
|
postNatureFlowCont.Target = postShemeCont.TargetId //指标"`
|
|
postNatureFlowCont.SonTarget = postShemeCont.SonTargetId //指标子栏目"`
|
|
postNatureFlowCont.Detailed = postShemeCont.DetailsId //指标细则"`
|
|
postNatureFlowCont.Year = publicmethod.ComputingTime(currentTime, 1) //年"`
|
|
postNatureFlowCont.Quarter = publicmethod.ComputingTime(currentTime, 2) //季度"`
|
|
postNatureFlowCont.Month = publicmethod.ComputingTime(currentTime, 3) //月"`
|
|
postNatureFlowCont.Week = publicmethod.ComputingTime(currentTime, 4) //周"`
|
|
postNatureFlowCont.PersonLiable = userCont.Key //责任人"`
|
|
postNatureFlowCont.CompanyId = userCont.Company //公司"`
|
|
postNatureFlowCont.DepartmentId = userCont.MainDeparment //部门"`
|
|
postNatureFlowCont.OrgId = userCont.AdminOrg //行政组织"`
|
|
postNatureFlowCont.PostId = userCont.Position //岗位"`
|
|
postNatureFlowCont.Executor = context.Key //执行人"`
|
|
postNatureFlowCont.ExecutorDepartment = context.MainDeparment //执行人部门"`
|
|
postNatureFlowCont.Rectification = receivedValue.Rectification //是否需要整改 1、需要整改;2:无需整改"`
|
|
postNatureFlowCont.CorrectionTime = correctionTime //整改期限"`
|
|
postNatureFlowCont.HappenTime = currentTime //发生时间"`
|
|
postNatureFlowCont.HappenCount = receivedValue.Count //发生次数"`
|
|
postNatureFlowCont.Time = time.Now().Unix() //时间"`
|
|
|
|
//开启事务提交
|
|
gormDbAffair := overall.CONSTANT_DB_KPI
|
|
|
|
passorErr := gormDbAffair.Create(&flowCont).Error
|
|
flowErr := gormDbAffair.Create(&postNatureFlowCont).Error
|
|
|
|
if passorErr == nil && flowErr == nil {
|
|
addErr := gormDbAffair.Commit().Error
|
|
publicmethod.Result(0, addErr, c)
|
|
} else {
|
|
addErr := gormDbAffair.Rollback().Error
|
|
publicmethod.Result(104, addErr, c)
|
|
}
|
|
|
|
// fmt.Printf("%v---%v---%v---%v---%v\n", currentTime, uuId, flowCont, scoreVal, moneyVal)
|
|
}
|
|
|
|
/*
|
|
判断分数是否符合要求
|
|
@scoreState 1、定分;2、区间分;3、不定性分值
|
|
@score 要操作的数值
|
|
@MaxScore 最大值
|
|
@minScore 最小值
|
|
*/
|
|
func judgeScoreOrMoneyIsTrue(scoreState int, score string, maxScore, minScore int64) (scoreInt64 int64, isTrue bool, msg string) {
|
|
isTrue = false
|
|
switch scoreState {
|
|
case 2, 3:
|
|
if score == "" {
|
|
return
|
|
}
|
|
scoreInt64, _ = strconv.ParseInt(score, 10, 64)
|
|
scoreInt64 = scoreInt64 * 100
|
|
if scoreInt64 > maxScore {
|
|
msg = fmt.Sprintf("您提交的数值超过允许提交的最大值(最大值:%v)!", float64(maxScore)/100)
|
|
return
|
|
}
|
|
if scoreInt64 < minScore {
|
|
msg = fmt.Sprintf("您提交的数值低于允许提交的最小值(最小值:%v)!", float64(minScore)/100)
|
|
return
|
|
}
|
|
isTrue = true
|
|
case 1:
|
|
scoreInt64, _ = strconv.ParseInt(score, 10, 64)
|
|
scoreInt64 = scoreInt64 * 100
|
|
isTrue = true
|
|
default:
|
|
msg = "请您输入要操作的数据,谢谢!"
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|