|
|
|
|
package statistics
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"fmt"
|
|
|
|
|
"strconv"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"gin_server_admin/api/statistics/quantification"
|
|
|
|
|
"gin_server_admin/commonus"
|
|
|
|
|
"gin_server_admin/global"
|
|
|
|
|
"gin_server_admin/model/assessmentmodel"
|
|
|
|
|
"gin_server_admin/model/common/response"
|
|
|
|
|
"gin_server_admin/model/hrsystem"
|
|
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// 计算成绩表
|
|
|
|
|
func (a *ApiGroup) Queryresults(c *gin.Context) {
|
|
|
|
|
isTrue, userCont := commonus.ClientIdentity()
|
|
|
|
|
if isTrue != true {
|
|
|
|
|
response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
var requestData TranscriptTable
|
|
|
|
|
c.ShouldBindJSON(&requestData)
|
|
|
|
|
//获取当前访问人的公司组织架构
|
|
|
|
|
var orgList []hrsystem.AdministrativeOrganization
|
|
|
|
|
gromDb := global.GVA_DB_HrDataBase.Model(&hrsystem.AdministrativeOrganization{}).Where("ispower = 1 AND state = 1 AND organization_type > 2")
|
|
|
|
|
if requestData.Group != "" {
|
|
|
|
|
gromDb = gromDb.Where("superior = ?", requestData.Group)
|
|
|
|
|
} else {
|
|
|
|
|
gromDb = gromDb.Where("superior = ?", userCont.Company)
|
|
|
|
|
}
|
|
|
|
|
if requestData.Department != "" {
|
|
|
|
|
gromDb = gromDb.Where("`id` = ?", requestData.Department)
|
|
|
|
|
}
|
|
|
|
|
err := gromDb.Find(&orgList).Error
|
|
|
|
|
if err != nil {
|
|
|
|
|
response.Result(102, err, "没有查询到数据", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if len(orgList) <= 0 {
|
|
|
|
|
response.Result(103, err, "没有查询到数据", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
var orgAry []hrsystem.AdministrativeOrganization
|
|
|
|
|
for _, ov := range orgList {
|
|
|
|
|
sunOrgList, orgSunErr := getSunOrgList(ov.Id)
|
|
|
|
|
if orgSunErr == nil && len(sunOrgList) > 0 {
|
|
|
|
|
for _, sv := range sunOrgList {
|
|
|
|
|
orgAry = append(orgAry, sv)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
orgAry = append(orgAry, ov)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//计算要查询的年份
|
|
|
|
|
currentYear := commonus.ComputingTime(time.Now().Unix(), 1)
|
|
|
|
|
todayYear := currentYear
|
|
|
|
|
if requestData.Year != "" {
|
|
|
|
|
yearInt64, _ := strconv.ParseInt(requestData.Year, 10, 64)
|
|
|
|
|
currentYear = yearInt64
|
|
|
|
|
}
|
|
|
|
|
//计算月
|
|
|
|
|
var monthTody []int64
|
|
|
|
|
if len(requestData.Month) < 1 {
|
|
|
|
|
if currentYear == todayYear {
|
|
|
|
|
monthTodyIng := commonus.ComputingTime(time.Now().Unix(), 3)
|
|
|
|
|
var montInt64 int64
|
|
|
|
|
for montInt64 = 1; montInt64 <= monthTodyIng; montInt64++ {
|
|
|
|
|
monthTody = append(monthTody, montInt64)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
var montInt64All int64
|
|
|
|
|
for montInt64All = 1; montInt64All <= 12; montInt64All++ {
|
|
|
|
|
monthTody = append(monthTody, montInt64All)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
for _, mmv := range requestData.Month {
|
|
|
|
|
monthTody = append(monthTody, int64(mmv))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//保证月份不为负数
|
|
|
|
|
if len(monthTody) < 1 {
|
|
|
|
|
monthTody = append(monthTody, 1)
|
|
|
|
|
}
|
|
|
|
|
fmt.Printf("orgAry---------------------->%v\n", orgAry)
|
|
|
|
|
/*
|
|
|
|
|
设定协程
|
|
|
|
|
遍历行政组织,并发计算
|
|
|
|
|
*/
|
|
|
|
|
var deaprtmenTranscript TranscriptTableData
|
|
|
|
|
for _, v := range orgAry {
|
|
|
|
|
syncProcess.Add(1)
|
|
|
|
|
go deaprtmenTranscript.StaticticsDepartmentResult(userCont.Company, v, currentYear, monthTody)
|
|
|
|
|
}
|
|
|
|
|
syncProcess.Wait() //等待所有协程完毕
|
|
|
|
|
readStatisticsData := deaprtmenTranscript.readTranscriptData() //读取通道数据
|
|
|
|
|
// fmt.Printf("readStatisticsData----------->%v\n", readStatisticsData)
|
|
|
|
|
|
|
|
|
|
var AScore float64 = 0
|
|
|
|
|
var BScore float64 = 0
|
|
|
|
|
var CScore float64 = 0
|
|
|
|
|
var DScore float64 = 0
|
|
|
|
|
var EScore float64 = 0
|
|
|
|
|
var FScore float64 = 0
|
|
|
|
|
var GScore float64 = 0
|
|
|
|
|
var HScore float64 = 0
|
|
|
|
|
var IScore float64 = 0
|
|
|
|
|
var JScore float64 = 0
|
|
|
|
|
var KScore float64 = 0
|
|
|
|
|
var LScore float64 = 0
|
|
|
|
|
jiBuQi := 0
|
|
|
|
|
var echarsList TranscriptTableDateListChars
|
|
|
|
|
|
|
|
|
|
var echarsListOrg TranscriptTableDateListChars
|
|
|
|
|
|
|
|
|
|
if len(requestData.Month) > 0 {
|
|
|
|
|
var monthAry []int
|
|
|
|
|
for i := 1; i <= 12; i++ {
|
|
|
|
|
if commonus.IsInTrue[int](i, requestData.Month) == true && commonus.IsInTrue[string](fmt.Sprintf("%v月", i), echarsList.XLine) == false {
|
|
|
|
|
echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", i))
|
|
|
|
|
monthAry = append(monthAry, i)
|
|
|
|
|
echarsListOrg.Cylindrical = append(echarsListOrg.Cylindrical, fmt.Sprintf("%v月", i))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
echarsList.XLine = append(echarsList.XLine, "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月")
|
|
|
|
|
}
|
|
|
|
|
var orgFen orgShierTongji
|
|
|
|
|
// var dfgfd []YlineData
|
|
|
|
|
for _, readv := range readStatisticsData {
|
|
|
|
|
AScore = AScore + readv.A
|
|
|
|
|
BScore = BScore + readv.B
|
|
|
|
|
CScore = CScore + readv.C
|
|
|
|
|
DScore = DScore + readv.D
|
|
|
|
|
EScore = EScore + readv.E
|
|
|
|
|
FScore = FScore + readv.F
|
|
|
|
|
GScore = GScore + readv.G
|
|
|
|
|
HScore = HScore + readv.H
|
|
|
|
|
IScore = IScore + readv.I
|
|
|
|
|
JScore = JScore + readv.J
|
|
|
|
|
KScore = KScore + readv.K
|
|
|
|
|
LScore = LScore + readv.L
|
|
|
|
|
jiBuQi++
|
|
|
|
|
echarsList.Cylindrical = append(echarsList.Cylindrical, readv.Department)
|
|
|
|
|
echarsListOrg.XLine = append(echarsListOrg.XLine, readv.Department)
|
|
|
|
|
|
|
|
|
|
var cyLineAry_1 YlineData
|
|
|
|
|
cyLineAry_1.Name = readv.Department
|
|
|
|
|
|
|
|
|
|
// var yZhoue YlineData
|
|
|
|
|
|
|
|
|
|
if readv.A == -10000 {
|
|
|
|
|
readv.A = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.B == -10000 {
|
|
|
|
|
readv.B = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.C == -10000 {
|
|
|
|
|
readv.C = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.D == -10000 {
|
|
|
|
|
readv.D = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.E == -10000 {
|
|
|
|
|
readv.E = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.F == -10000 {
|
|
|
|
|
readv.F = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.G == -10000 {
|
|
|
|
|
readv.G = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.H == -10000 {
|
|
|
|
|
readv.H = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.I == -10000 {
|
|
|
|
|
readv.I = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.J == -10000 {
|
|
|
|
|
readv.J = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.K == -10000 {
|
|
|
|
|
readv.K = 0
|
|
|
|
|
}
|
|
|
|
|
if readv.L == -10000 {
|
|
|
|
|
readv.L = 0
|
|
|
|
|
}
|
|
|
|
|
if len(requestData.Month) > 0 {
|
|
|
|
|
if commonus.IsInTrue[int](1, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 1))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.A)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](2, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 2))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.B)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](3, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 3))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.C)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](4, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 4))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.D)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](5, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 5))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.E)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](6, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 6))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.F)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](7, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 7))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.G)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](8, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 8))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.H)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](9, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 9))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.I)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](10, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 10))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.J)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](11, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 11))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.K)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if commonus.IsInTrue[int](12, requestData.Month) == true {
|
|
|
|
|
// echarsList.XLine = append(echarsList.XLine, fmt.Sprintf("%v月", 12))
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.L)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
cyLineAry_1.Data = append(cyLineAry_1.Data, readv.A, readv.B, readv.C, readv.D, readv.E, readv.F, readv.G, readv.H, readv.I, readv.J, readv.K, readv.L)
|
|
|
|
|
// cyLineAry_2.Data = append(cyLineAry_1.Data, readv.A, readv.B, readv.C, readv.D, readv.E, readv.F, readv.G, readv.H, readv.I, readv.J, readv.K, readv.L)
|
|
|
|
|
}
|
|
|
|
|
orgFen.A = append(orgFen.A, readv.A)
|
|
|
|
|
orgFen.B = append(orgFen.B, readv.B)
|
|
|
|
|
orgFen.C = append(orgFen.C, readv.C)
|
|
|
|
|
orgFen.D = append(orgFen.D, readv.D)
|
|
|
|
|
orgFen.E = append(orgFen.E, readv.E)
|
|
|
|
|
orgFen.F = append(orgFen.F, readv.F)
|
|
|
|
|
orgFen.G = append(orgFen.G, readv.G)
|
|
|
|
|
orgFen.H = append(orgFen.H, readv.H)
|
|
|
|
|
orgFen.I = append(orgFen.I, readv.I)
|
|
|
|
|
orgFen.J = append(orgFen.J, readv.J)
|
|
|
|
|
orgFen.K = append(orgFen.K, readv.K)
|
|
|
|
|
orgFen.L = append(orgFen.L, readv.L)
|
|
|
|
|
// jsonStr, _ := json.Marshal(orgFen.A)
|
|
|
|
|
// fmt.Printf("orgFen------1---->%v\n", string(jsonStr))
|
|
|
|
|
echarsList.YLine = append(echarsList.YLine, cyLineAry_1)
|
|
|
|
|
// echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// jsonStrwww, _ := json.Marshal(orgFen)
|
|
|
|
|
// fmt.Printf("orgFen---------->%v\n", string(jsonStrwww))
|
|
|
|
|
if jiBuQi > 0 {
|
|
|
|
|
var pingJunFen TranscriptTableDateList
|
|
|
|
|
pingJunFen.DepartmentId = "0"
|
|
|
|
|
pingJunFen.Department = "平均分"
|
|
|
|
|
pingJunFen.A = commonus.Decimal(AScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.B = commonus.Decimal(BScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.C = commonus.Decimal(CScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.D = commonus.Decimal(DScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.E = commonus.Decimal(EScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.F = commonus.Decimal(FScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.G = commonus.Decimal(GScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.H = commonus.Decimal(HScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.I = commonus.Decimal(IScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.J = commonus.Decimal(JScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.K = commonus.Decimal(KScore / float64(jiBuQi))
|
|
|
|
|
pingJunFen.L = commonus.Decimal(LScore / float64(jiBuQi))
|
|
|
|
|
|
|
|
|
|
readStatisticsData = append(readStatisticsData, pingJunFen)
|
|
|
|
|
}
|
|
|
|
|
var monthInt []int
|
|
|
|
|
if len(requestData.Month) <= 0 {
|
|
|
|
|
for dkj := 1; dkj <= 12; dkj++ {
|
|
|
|
|
monthInt = append(monthInt, dkj)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
monthInt = requestData.Month
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("monthInt---------->%v\n", monthInt)
|
|
|
|
|
|
|
|
|
|
for _, mvv := range monthInt {
|
|
|
|
|
switch mvv {
|
|
|
|
|
case 1:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "1月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.A
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 2:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "2月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.B
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 3:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "3月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.C
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 4:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "4月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.D
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 5:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "5月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.E
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 6:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "6月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.F
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 7:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "7月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.G
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 8:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "8月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.H
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 9:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "9月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.I
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 10:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "10月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.J
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 11:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "11月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.K
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
case 12:
|
|
|
|
|
var cyLineAry_2 YlineData
|
|
|
|
|
cyLineAry_2.Name = "12月"
|
|
|
|
|
cyLineAry_2.Data = orgFen.L
|
|
|
|
|
echarsListOrg.YLine = append(echarsListOrg.YLine, cyLineAry_2)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
outData := commonus.MapOut()
|
|
|
|
|
outData["readStatisticsData"] = readStatisticsData
|
|
|
|
|
outData["echarsList"] = echarsList
|
|
|
|
|
outData["echarsListOrg"] = echarsListOrg
|
|
|
|
|
|
|
|
|
|
response.Result(0, outData, "查询完成", c)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取下级行政组织是否有主行政部门
|
|
|
|
|
func getSunOrgList(orgId int64) (orgList []hrsystem.AdministrativeOrganization, ovErr error) {
|
|
|
|
|
ovErr = global.GVA_DB_HrDataBase.Where("state = 1").Where("ispower = 1 AND superior = ?", orgId).Find(&orgList).Error
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
统计部门月度成绩
|
|
|
|
|
@group 集团
|
|
|
|
|
@orgCont 行政组织相关信息
|
|
|
|
|
@year 查询的年份
|
|
|
|
|
@month 查询月份边界
|
|
|
|
|
*/
|
|
|
|
|
func (t *TranscriptTableData) StaticticsDepartmentResult(group string, orgCont hrsystem.AdministrativeOrganization, year int64, month []int64) {
|
|
|
|
|
/*
|
|
|
|
|
锁操作
|
|
|
|
|
*/
|
|
|
|
|
t.mutext.Lock()
|
|
|
|
|
defer t.mutext.Unlock()
|
|
|
|
|
|
|
|
|
|
groupId, _ := strconv.ParseInt(group, 10, 64)
|
|
|
|
|
|
|
|
|
|
//获取要计算部门当前执行的考核方案表
|
|
|
|
|
var planVersionInfo assessmentmodel.PlanVersio
|
|
|
|
|
err := global.GVA_DB_Performanceappraisal.Where("state = 1 AND department = ?", orgCont.Id).First(&planVersionInfo).Error
|
|
|
|
|
if err == nil {
|
|
|
|
|
//将考核方案解析
|
|
|
|
|
var planVersioInfo []AddDutyNewCont
|
|
|
|
|
jsonErr := json.Unmarshal([]byte(planVersionInfo.Content), &planVersioInfo)
|
|
|
|
|
if jsonErr == nil {
|
|
|
|
|
var pingJunFen TranscriptTableDateList
|
|
|
|
|
pingJunFen.DepartmentId = strconv.FormatInt(orgCont.Id, 10)
|
|
|
|
|
pingJunFen.Department = orgCont.Name
|
|
|
|
|
// var i int64
|
|
|
|
|
var everyMonthScore countEveryDepartmentMonthScore
|
|
|
|
|
// for i = 1; i <= month; i++ {
|
|
|
|
|
// syncProcessDepartTarget.Add(1)
|
|
|
|
|
// //按月份计算
|
|
|
|
|
// go everyMonthScore.everyMonthCalculate(groupId, orgCont.Id, year, i, planVersioInfo)
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
for _, v := range month {
|
|
|
|
|
syncProcessDepartTarget.Add(1)
|
|
|
|
|
//按月份计算
|
|
|
|
|
go everyMonthScore.everyMonthCalculate(groupId, orgCont.Id, year, v, planVersioInfo)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
syncProcessDepartTarget.Wait()
|
|
|
|
|
everyMonthScoreList := everyMonthScore.readMyDayData()
|
|
|
|
|
for _, emslv := range everyMonthScoreList {
|
|
|
|
|
// fmt.Printf("emslv---->%v\n", emslv)
|
|
|
|
|
switch emslv.MonthVal {
|
|
|
|
|
case 1:
|
|
|
|
|
pingJunFen.A = emslv.Score
|
|
|
|
|
case 2:
|
|
|
|
|
pingJunFen.B = emslv.Score
|
|
|
|
|
case 3:
|
|
|
|
|
pingJunFen.C = emslv.Score
|
|
|
|
|
case 4:
|
|
|
|
|
pingJunFen.D = emslv.Score
|
|
|
|
|
case 5:
|
|
|
|
|
pingJunFen.E = emslv.Score
|
|
|
|
|
case 6:
|
|
|
|
|
pingJunFen.F = emslv.Score
|
|
|
|
|
case 7:
|
|
|
|
|
pingJunFen.G = emslv.Score
|
|
|
|
|
case 8:
|
|
|
|
|
pingJunFen.H = emslv.Score
|
|
|
|
|
case 9:
|
|
|
|
|
pingJunFen.I = emslv.Score
|
|
|
|
|
case 10:
|
|
|
|
|
pingJunFen.J = emslv.Score
|
|
|
|
|
case 11:
|
|
|
|
|
pingJunFen.K = emslv.Score
|
|
|
|
|
case 12:
|
|
|
|
|
pingJunFen.L = emslv.Score
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var monthIsFalse int64
|
|
|
|
|
for monthIsFalse = 1; monthIsFalse <= 12; monthIsFalse++ {
|
|
|
|
|
if commonus.IsInTrue[int64](monthIsFalse, month) == false {
|
|
|
|
|
switch monthIsFalse {
|
|
|
|
|
case 1:
|
|
|
|
|
pingJunFen.A = -10000
|
|
|
|
|
case 2:
|
|
|
|
|
pingJunFen.B = -10000
|
|
|
|
|
case 3:
|
|
|
|
|
pingJunFen.C = -10000
|
|
|
|
|
case 4:
|
|
|
|
|
pingJunFen.D = -10000
|
|
|
|
|
case 5:
|
|
|
|
|
pingJunFen.E = -10000
|
|
|
|
|
case 6:
|
|
|
|
|
pingJunFen.F = -10000
|
|
|
|
|
case 7:
|
|
|
|
|
pingJunFen.G = -10000
|
|
|
|
|
case 8:
|
|
|
|
|
pingJunFen.H = -10000
|
|
|
|
|
case 9:
|
|
|
|
|
pingJunFen.I = -10000
|
|
|
|
|
case 10:
|
|
|
|
|
pingJunFen.J = -10000
|
|
|
|
|
case 11:
|
|
|
|
|
pingJunFen.K = -10000
|
|
|
|
|
case 12:
|
|
|
|
|
pingJunFen.L = -10000
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// if month < 12 {
|
|
|
|
|
// beginLostMonth := month + 1
|
|
|
|
|
// for ; beginLostMonth <= 12; beginLostMonth++ {
|
|
|
|
|
// switch beginLostMonth {
|
|
|
|
|
// case 1:
|
|
|
|
|
// pingJunFen.A = -10000
|
|
|
|
|
// case 2:
|
|
|
|
|
// pingJunFen.B = -10000
|
|
|
|
|
// case 3:
|
|
|
|
|
// pingJunFen.C = -10000
|
|
|
|
|
// case 4:
|
|
|
|
|
// pingJunFen.D = -10000
|
|
|
|
|
// case 5:
|
|
|
|
|
// pingJunFen.E = -10000
|
|
|
|
|
// case 6:
|
|
|
|
|
// pingJunFen.F = -10000
|
|
|
|
|
// case 7:
|
|
|
|
|
// pingJunFen.G = -10000
|
|
|
|
|
// case 8:
|
|
|
|
|
// pingJunFen.H = -10000
|
|
|
|
|
// case 9:
|
|
|
|
|
// pingJunFen.I = -10000
|
|
|
|
|
// case 10:
|
|
|
|
|
// pingJunFen.J = -10000
|
|
|
|
|
// case 11:
|
|
|
|
|
// pingJunFen.K = -10000
|
|
|
|
|
// case 12:
|
|
|
|
|
// pingJunFen.L = -10000
|
|
|
|
|
// default:
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// fmt.Printf("month---->%v\n", pingJunFen)
|
|
|
|
|
t.ScoreStatistics = append(t.ScoreStatistics, pingJunFen)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
syncProcess.Done() //结束本协程
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
按月份统计部门总成绩
|
|
|
|
|
@groupId 集团ID
|
|
|
|
|
@orgId 行政组织ID
|
|
|
|
|
@year 年
|
|
|
|
|
@month 月
|
|
|
|
|
@planVersion 部门当前执行的考核版本
|
|
|
|
|
*/
|
|
|
|
|
func (c *countEveryDepartmentMonthScore) everyMonthCalculate(groupId, orgId, year, month int64, planVersion []AddDutyNewCont) {
|
|
|
|
|
/*
|
|
|
|
|
锁操作
|
|
|
|
|
*/
|
|
|
|
|
c.mutext.Lock()
|
|
|
|
|
defer c.mutext.Unlock()
|
|
|
|
|
var weiDuScore float64 = 0 //维度分值
|
|
|
|
|
var zhiBiaoScore float64 = 0 //指标标准分值
|
|
|
|
|
var sumScore float64 = 0 //计算得分
|
|
|
|
|
|
|
|
|
|
for _, v := range planVersion { //维度
|
|
|
|
|
weiDuScore = weiDuScore + float64(v.ZhiFraction)
|
|
|
|
|
for _, sv := range v.Child { //指标
|
|
|
|
|
zhiBiaoScore = zhiBiaoScore + float64(sv.ReferenceScore)
|
|
|
|
|
if sv.Status == 3 {
|
|
|
|
|
// fmt.Printf("sv.Id-------->%v------------》sv.Name----%v------------ReferenceScore---------->%v\n", sv.Id, sv.Name, sv.ReferenceScore)
|
|
|
|
|
sumScore = sumScore + float64(sv.ReferenceScore)
|
|
|
|
|
} else {
|
|
|
|
|
if sv.Status == 1 && sv.Status != 3 { //判断指标是否启用并且不是观察指标
|
|
|
|
|
var targetInfo assessmentmodel.EvaluationTarget
|
|
|
|
|
targetInfo.GetCont(map[string]interface{}{"et_id": sv.Id}, "et_type,et_cycle")
|
|
|
|
|
if sv.Cycles == 0 { //判断统计方式
|
|
|
|
|
sv.Cycles = targetInfo.Cycles
|
|
|
|
|
}
|
|
|
|
|
if targetInfo.Type == 1 { //定性考核
|
|
|
|
|
countScore, _ := quantification.DingXingMonthSum(groupId, orgId, sv.ReferenceScore, year, month, sv.Id, sv.Cycles, sv.Status)
|
|
|
|
|
sumScore = sumScore + countScore
|
|
|
|
|
// fmt.Printf("sv.Id-------->%v------------》sv.Name----%v--------------countScore-------->%v\n", sv.Id, sv.Name, countScore)
|
|
|
|
|
|
|
|
|
|
} else { //定量考核
|
|
|
|
|
countScores, _ := quantification.DingLiangMonthSum(groupId, orgId, sv.ReferenceScore, year, month, sv.Id, sv.Cycles, sv.Status)
|
|
|
|
|
sumScore = sumScore + countScores
|
|
|
|
|
// fmt.Printf("sv.Id-------->%v------------》sv.Name----%v------------countScores---------->%v\n", sv.Id, sv.Name, countScores)
|
|
|
|
|
}
|
|
|
|
|
// switch sv.Cycles {
|
|
|
|
|
// case 5: //季度统计
|
|
|
|
|
// case 6: //年统计
|
|
|
|
|
// case 7: //半年统计
|
|
|
|
|
// default: //月度统计
|
|
|
|
|
// if targetInfo.Type == 1 { //定性考核
|
|
|
|
|
// countScore, _ := quantification.DingXingMonthSum(groupId, orgId, sv.ReferenceScore, year, month, sv.Id, sv.Cycles, sv.Status)
|
|
|
|
|
// sumScore = sumScore + countScore
|
|
|
|
|
|
|
|
|
|
// } else { //定量考核
|
|
|
|
|
// countScores, _ := quantification.DingLiangMonthSum(groupId, orgId, sv.ReferenceScore, year, month, sv.Id, sv.Cycles, sv.Status)
|
|
|
|
|
// sumScore = sumScore + countScores
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var everyMonthScoreInfo everyDepartmentScore
|
|
|
|
|
everyMonthScoreInfo.MonthVal = month
|
|
|
|
|
everyMonthScoreInfo.Score = commonus.Decimal(sumScore)
|
|
|
|
|
c.outData = append(c.outData, everyMonthScoreInfo)
|
|
|
|
|
syncProcessDepartTarget.Done() //结束本协程
|
|
|
|
|
}
|