From cdf1e74e60dd3bd214081577f25805ffee921b83 Mon Sep 17 00:00:00 2001
From: yinbentan <yinbentan@live.com>
Date: 星期五, 12 七月 2024 10:15:07 +0800
Subject: [PATCH] 添加代码自动生成,修改获取车辆编号返回结构
---
task/salary_statistics.go | 80 +++++++++++++++++++++++++++------------
1 files changed, 55 insertions(+), 25 deletions(-)
diff --git a/task/salary_statistics.go b/task/salary_statistics.go
index 07e1a1e..348c763 100644
--- a/task/salary_statistics.go
+++ b/task/salary_statistics.go
@@ -1,6 +1,7 @@
package task
import (
+ "errors"
"github.com/shopspring/decimal"
"silkserver/constvar"
"silkserver/models"
@@ -11,6 +12,23 @@
)
func SalaryStatistics() {
+ //鍔犻攣锛屽彧闇�瑕佷竴涓繘绋嬭繍琛屾浠诲姟
+ var (
+ lockName = "SalaryStatistics"
+ serviceID = "silkServer"
+ )
+ err := models.NewLockSearch().AcquireLock(lockName, serviceID)
+ if err != nil {
+ logx.Errorf("MonthStats AcquireLock err:%v", err)
+ return
+ }
+ defer func() {
+ err := models.NewLockSearch().ReleaseLock(lockName, serviceID)
+ if err != nil {
+ logx.Errorf("MonthStats ReleaseLock err:%v", err)
+ }
+ }()
+
lastMonthStart, lastMonthEnd := GetLastMonthPeriod()
month := lastMonthStart.Format("2006-01")
@@ -22,21 +40,29 @@
logx.Error("SalaryStatistics 鏌ヨ鑰冨嫟缁熻 err: " + err.Error())
return
}
+ if len(attendances) == 0 {
+ logx.Warn("SalaryStatistics 鏌ヨ鑰冨嫟缁熻 empty result")
+ return
+ }
var reportForms []*models.SalaryReportForm
+ reportMap := make(map[string]*models.SalaryReportForm)
workTypeIdMap := make(map[uint]uint)
dataMap := make(map[string]utils.SalaryCalculateData)
for _, attendance := range attendances {
- var rf models.SalaryReportForm
+ if _, ok := reportMap[attendance.WorkerId]; !ok {
+ var rf models.SalaryReportForm
+ rf.WorkerId = attendance.WorkerId
+ rf.WorkerName = attendance.WorkerName
+ rf.WorkTypeId = attendance.WorkTypeId
+ rf.Month = month
+ rf.Phone = attendance.PhoneNum
+ reportMap[attendance.WorkerId] = &rf
+ }
var data utils.SalaryCalculateData
if _, ok := dataMap[attendance.WorkerId]; ok {
data = dataMap[attendance.WorkerId]
}
- rf.WorkerId = attendance.WorkerId
- rf.WorkerName = attendance.WorkerName
- rf.WorkTypeId = attendance.WorkTypeId
- rf.Month = month
- rf.Phone = attendance.PhoneNum
if attendance.WorkTypeId > 0 {
workTypeIdMap[attendance.WorkTypeId] = attendance.WorkTypeId
}
@@ -47,7 +73,9 @@
data.TotalAttendanceDays = data.TotalAttendanceDays + 1
}
dataMap[attendance.WorkerId] = data
- reportForms = append(reportForms, &rf)
+ }
+ for _, v := range reportMap {
+ reportForms = append(reportForms, v)
}
workTypeIds := make([]uint, 0)
for _, v := range workTypeIdMap {
@@ -60,8 +88,11 @@
logx.Error("SalaryStatistics 鏌ヨ宸ョ鐨勮柂璧勬柟妗堝拰鏂板绫诲瀷 err: " + err.Error())
return
}
+ if len(workTypeManages) == 0 {
+ return
+ }
for _, form := range reportForms {
- details := make([]models.SalaryDetails, 0)
+ details := make([]*models.SalaryDetails, 0)
issueSalary := decimal.NewFromInt(0)
for _, manage := range workTypeManages {
if form.WorkTypeId == manage.ID {
@@ -76,16 +107,15 @@
data, err = GetDailySilkProduction(startStr, endStr, form.WorkerId, data)
if err != nil {
logx.Error("SalaryStatistics 缁熻钖祫鍑洪敊 err: " + err.Error())
- } else {
- amount, err = utils.CalculateSalary(data, formula)
- if err != nil {
- logx.Error("SalaryStatistics 璁$畻钖祫鍑洪敊 err: " + err.Error())
- }
}
+ }
+ amount, err = utils.CalculateSalary(data, formula)
+ if err != nil {
+ logx.Error("SalaryStatistics 璁$畻钖祫鍑洪敊 err: " + err.Error())
}
detail.Amount = amount
issueSalary = issueSalary.Add(amount)
- details = append(details, detail)
+ details = append(details, &detail)
}
}
}
@@ -105,8 +135,8 @@
var cars []models.WorkerPosition
err := models.NewWorkerPositionSearch().Orm.Table("silk_worker_position").Where("worker_id = ? and start_date >= ? and "+
"end_date <= ?", workerId, start, end).Find(&cars).Error
- if err != nil {
- return data, err
+ if err != nil || len(cars) == 0 {
+ return data, errors.New("鏌ヨ鏈哄彴绠$悊鍑洪敊")
}
endCarMap := make(map[int]int)
groupMap := make(map[int]int)
@@ -133,8 +163,8 @@
var yield []models.YieldRegister
err = models.NewYieldRegisterSearch().Orm.Table("silk_yield_register").Where("workshop_number in (?) and group_number "+
"in (?) and create_time >= ? and create_time <= ?", workshops, groups, start, end).Find(&yield).Error
- if err != nil {
- return data, err
+ if err != nil || len(yield) == 0 {
+ return data, errors.New("鏌ヨ浜ч噺鐧昏琛ㄥ嚭閿�")
}
yieldRegisterIds := make([]uint, 0)
for _, register := range yield {
@@ -142,8 +172,8 @@
}
yieldMap := make(map[string]decimal.Decimal)
items, err := models.NewYieldRegisterItemSearch().SetYieldRegisterIds(yieldRegisterIds).SetCarNumbers(endCars).FindNotTotal()
- if err != nil {
- return data, err
+ if err != nil || len(items) == 0 {
+ return data, errors.New("鏌ヨ浜ч噺鐧昏璇︽儏琛ㄥ嚭閿�")
}
for _, register := range yield {
for _, item := range items {
@@ -155,10 +185,10 @@
//鏌ヨ绾ゅ害鐧昏琛�
var fineness []models.FinenessRegister
markets := make([]string, 0)
- err = models.NewFinenessRegisterSearch().Orm.Table("silk_fineness_register").Where("workshop in (?) and workshop_group "+
+ err = models.NewFinenessRegisterSearch().Orm.Table("silk_fineness_register").Where("workshop_number in (?) and workshop_group "+
"in (?) and finish_date >= ? and finish_date <= ?", workshops, groups, start, end).Find(&fineness).Error
- if err != nil {
- return data, err
+ if err != nil || len(fineness) == 0 {
+ return data, errors.New("鏌ヨ绾ゅ害鐧昏琛ㄥ嚭閿�")
}
finenessIds := make([]uint, 0)
for _, register := range fineness {
@@ -168,8 +198,8 @@
var checkItems []models.FinenessCheckItem
err = models.NewFinenessCheckItemSearch().Orm.Table("silk_fineness_check_item").Where("fineness_register_id in (?) and "+
"position in (?)", finenessIds, endCars).Find(&checkItems).Error
- if err != nil {
- return data, err
+ if err != nil || len(checkItems) == 0 {
+ return data, errors.New("鏌ヨ绾ゅ害鐧昏璇︽儏琛ㄥ嚭閿�")
}
checkMap := make(map[string]string)
marketMap := make(map[string]string)
--
Gitblit v1.8.0