正在显示
5 个修改的文件
包含
36 行增加
和
19 行删除
| @@ -31,6 +31,10 @@ type AttendanceRecordDto struct { | @@ -31,6 +31,10 @@ type AttendanceRecordDto struct { | ||
| 31 | SignOut string `json:"signOut"` | 31 | SignOut string `json:"signOut"` |
| 32 | // 考勤状态 1.未审核 2:已审核 3.自动审核 | 32 | // 考勤状态 1.未审核 2:已审核 3.自动审核 |
| 33 | AttendanceStatus int `json:"attendanceStatus"` | 33 | AttendanceStatus int `json:"attendanceStatus"` |
| 34 | + // 打卡工时 | ||
| 35 | + WorkTime float64 `json:"workTime"` | ||
| 36 | + // 休息工时 | ||
| 37 | + BreakTime float64 `json:"breakTime"` | ||
| 34 | // 工时(审核前) | 38 | // 工时(审核前) |
| 35 | WorkTimeBefore float64 `json:"workTimeBefore"` | 39 | WorkTimeBefore float64 `json:"workTimeBefore"` |
| 36 | // 工时(审核后) | 40 | // 工时(审核后) |
| @@ -50,7 +54,7 @@ func (d *AttendanceRecordDto) LoadDto(m *domain.ProductAttendanceRecord, orgId i | @@ -50,7 +54,7 @@ func (d *AttendanceRecordDto) LoadDto(m *domain.ProductAttendanceRecord, orgId i | ||
| 50 | d.WorkStation = m.WorkStation | 54 | d.WorkStation = m.WorkStation |
| 51 | if !m.SignIn.IsZero() { | 55 | if !m.SignIn.IsZero() { |
| 52 | d.SignIn = m.SignIn.Local().Format("15:04:05") | 56 | d.SignIn = m.SignIn.Local().Format("15:04:05") |
| 53 | - d.SignDate = m.ProductTime().Format("2006-01-02") | 57 | + d.SignDate = m.ProductTime().Local().Format("2006-01-02") |
| 54 | } | 58 | } |
| 55 | if !m.SignOut.IsZero() { | 59 | if !m.SignOut.IsZero() { |
| 56 | d.SignOut = m.SignOut.Local().Format("15:04:05") | 60 | d.SignOut = m.SignOut.Local().Format("15:04:05") |
| @@ -67,6 +71,8 @@ func (d *AttendanceRecordDto) LoadDto(m *domain.ProductAttendanceRecord, orgId i | @@ -67,6 +71,8 @@ func (d *AttendanceRecordDto) LoadDto(m *domain.ProductAttendanceRecord, orgId i | ||
| 67 | t := time.Unix(m.Ext.AttendanceExt.ApproveAt, 0) | 71 | t := time.Unix(m.Ext.AttendanceExt.ApproveAt, 0) |
| 68 | d.ApproveAt = t.Local().Format("2006-01-02 15:04:05") | 72 | d.ApproveAt = t.Local().Format("2006-01-02 15:04:05") |
| 69 | } | 73 | } |
| 74 | + d.WorkTime = m.WorkTimeBefore + m.Ext.AttendanceExt.BreakTime | ||
| 75 | + d.BreakTime = m.Ext.AttendanceExt.BreakTime | ||
| 70 | } | 76 | } |
| 71 | return d | 77 | return d |
| 72 | } | 78 | } |
| @@ -105,10 +105,10 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain | @@ -105,10 +105,10 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain | ||
| 105 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 105 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 106 | } | 106 | } |
| 107 | 107 | ||
| 108 | - var workTime float64 = 0 | ||
| 109 | - if cmd.WorkTime-cmd.BreakTime > 0 { | ||
| 110 | - workTime = cmd.WorkTime - cmd.BreakTime | ||
| 111 | - } | 108 | + //var workTime float64 = 0 |
| 109 | + //if cmd.WorkTime-cmd.BreakTime > 0 { | ||
| 110 | + // workTime = cmd.WorkTime - cmd.BreakTime | ||
| 111 | + //} | ||
| 112 | signIn, err := xtime.ParseInLocation(time.Local, fmt.Sprintf("%v %v:00", cmd.ProductDate, cmd.SignIn)) | 112 | signIn, err := xtime.ParseInLocation(time.Local, fmt.Sprintf("%v %v:00", cmd.ProductDate, cmd.SignIn)) |
| 113 | if err != nil { | 113 | if err != nil { |
| 114 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 114 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| @@ -121,6 +121,9 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain | @@ -121,6 +121,9 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain | ||
| 121 | if err != nil { | 121 | if err != nil { |
| 122 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 122 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 123 | } | 123 | } |
| 124 | + if !xtime.BeforeEqual(productDate, time.Now()) { | ||
| 125 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("日期需要小于等于%v", time.Now().Format("2006-01-02"))) | ||
| 126 | + } | ||
| 124 | newAttendance := &domain.ProductAttendanceRecord{ | 127 | newAttendance := &domain.ProductAttendanceRecord{ |
| 125 | //ProductAttendanceId: cmd.ProductAttendanceId, | 128 | //ProductAttendanceId: cmd.ProductAttendanceId, |
| 126 | CompanyId: operateInfo.CompanyId, | 129 | CompanyId: operateInfo.CompanyId, |
| @@ -131,20 +134,21 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain | @@ -131,20 +134,21 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain | ||
| 131 | SignIn: signIn, | 134 | SignIn: signIn, |
| 132 | SignOut: signOut, | 135 | SignOut: signOut, |
| 133 | AttendanceStatus: cmd.AttendanceStatus, | 136 | AttendanceStatus: cmd.AttendanceStatus, |
| 134 | - WorkTimeBefore: workTime, | 137 | + WorkTimeBefore: cmd.WorkTime, |
| 135 | WorkTimeAfter: 0, | 138 | WorkTimeAfter: 0, |
| 136 | CreatedAt: time.Now(), | 139 | CreatedAt: time.Now(), |
| 137 | UpdatedAt: time.Now(), | 140 | UpdatedAt: time.Now(), |
| 138 | Ext: domain.NewExt(org.OrgName).WithAttendanceExt(&domain.ProductAttendanceRecordExt{ | 141 | Ext: domain.NewExt(org.OrgName).WithAttendanceExt(&domain.ProductAttendanceRecordExt{ |
| 139 | GroupName: productGroup.GroupName, | 142 | GroupName: productGroup.GroupName, |
| 140 | ProductGroupId: productGroup.ProductGroupId, | 143 | ProductGroupId: productGroup.ProductGroupId, |
| 144 | + BreakTime: cmd.BreakTime, | ||
| 141 | }), | 145 | }), |
| 142 | ProductDate: productDate, | 146 | ProductDate: productDate, |
| 143 | } | 147 | } |
| 144 | 148 | ||
| 145 | if cmd.AttendanceStatus == domain.AttendanceApproved { | 149 | if cmd.AttendanceStatus == domain.AttendanceApproved { |
| 146 | newAttendance.WorkTimeAfter = domain.AttendanceApproved | 150 | newAttendance.WorkTimeAfter = domain.AttendanceApproved |
| 147 | - newAttendance.WorkTimeAfter = workTime | 151 | + newAttendance.WorkTimeAfter = cmd.WorkTime |
| 148 | } | 152 | } |
| 149 | var ( | 153 | var ( |
| 150 | attendanceRepository domain.ProductAttendanceRecordRepository | 154 | attendanceRepository domain.ProductAttendanceRecordRepository |
| @@ -159,7 +163,10 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain | @@ -159,7 +163,10 @@ func (attendanceService *AttendanceService) CreateAttendance(operateInfo *domain | ||
| 159 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 163 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 160 | } | 164 | } |
| 161 | if count > 0 { | 165 | if count > 0 { |
| 162 | - return nil, &application.ServiceError{Code: 10050001, Message: fmt.Sprintf("已存在员工%v的工时记录,是否继续新增", user.UserName)} | 166 | + return map[string]interface{}{ |
| 167 | + "message": fmt.Sprintf("已存在员工%v的工时记录,是否继续新增", user.UserName), | ||
| 168 | + "needConfirm": true, | ||
| 169 | + }, nil | ||
| 163 | } | 170 | } |
| 164 | } | 171 | } |
| 165 | if attendance, err := attendanceRepository.Save(newAttendance); err != nil { | 172 | if attendance, err := attendanceRepository.Save(newAttendance); err != nil { |
| @@ -132,20 +132,20 @@ func (productAttendanceRecord *ProductAttendanceRecord) ProductTime() time.Time | @@ -132,20 +132,20 @@ func (productAttendanceRecord *ProductAttendanceRecord) ProductTime() time.Time | ||
| 132 | } | 132 | } |
| 133 | 133 | ||
| 134 | func (productAttendanceRecord *ProductAttendanceRecord) GroupName() string { | 134 | func (productAttendanceRecord *ProductAttendanceRecord) GroupName() string { |
| 135 | - if productAttendanceRecord.Ext != nil { | 135 | + if productAttendanceRecord.Ext == nil { |
| 136 | return "" | 136 | return "" |
| 137 | } | 137 | } |
| 138 | - if productAttendanceRecord.Ext.AttendanceExt != nil { | 138 | + if productAttendanceRecord.Ext.AttendanceExt == nil { |
| 139 | return "" | 139 | return "" |
| 140 | } | 140 | } |
| 141 | return productAttendanceRecord.Ext.AttendanceExt.GroupName | 141 | return productAttendanceRecord.Ext.AttendanceExt.GroupName |
| 142 | } | 142 | } |
| 143 | 143 | ||
| 144 | func (productAttendanceRecord *ProductAttendanceRecord) ApproveUser() *User { | 144 | func (productAttendanceRecord *ProductAttendanceRecord) ApproveUser() *User { |
| 145 | - if productAttendanceRecord.Ext != nil { | 145 | + if productAttendanceRecord.Ext == nil { |
| 146 | return nil | 146 | return nil |
| 147 | } | 147 | } |
| 148 | - if productAttendanceRecord.Ext.AttendanceExt != nil { | 148 | + if productAttendanceRecord.Ext.AttendanceExt == nil { |
| 149 | return nil | 149 | return nil |
| 150 | } | 150 | } |
| 151 | if productAttendanceRecord.Ext.AttendanceExt.ApproveUserId == 0 { | 151 | if productAttendanceRecord.Ext.AttendanceExt.ApproveUserId == 0 { |
| @@ -185,5 +185,6 @@ func (productAttendanceRecord *ProductAttendanceRecord) AttendanceBreakTime(prod | @@ -185,5 +185,6 @@ func (productAttendanceRecord *ProductAttendanceRecord) AttendanceBreakTime(prod | ||
| 185 | bt += v.BreakTime | 185 | bt += v.BreakTime |
| 186 | } | 186 | } |
| 187 | } | 187 | } |
| 188 | + productAttendanceRecord.Ext.AttendanceExt.BreakTime = bt | ||
| 188 | return bt | 189 | return bt |
| 189 | } | 190 | } |
| @@ -14,4 +14,6 @@ type ProductAttendanceRecordExt struct { | @@ -14,4 +14,6 @@ type ProductAttendanceRecordExt struct { | ||
| 14 | ApproveUserName string `json:"approveUserName,omitempty"` | 14 | ApproveUserName string `json:"approveUserName,omitempty"` |
| 15 | // 审核时间 | 15 | // 审核时间 |
| 16 | ApproveAt int64 `json:"approveAt,omitempty"` | 16 | ApproveAt int64 `json:"approveAt,omitempty"` |
| 17 | + // 休息时间 | ||
| 18 | + BreakTime float64 `json:"breakTime"` | ||
| 17 | } | 19 | } |
| @@ -30,13 +30,14 @@ func OnReceiveData(client pahomqtt.Client, message pahomqtt.Message) { | @@ -30,13 +30,14 @@ func OnReceiveData(client pahomqtt.Client, message pahomqtt.Message) { | ||
| 30 | } | 30 | } |
| 31 | if workShop, ok := payload["WorkShop"]; ok { | 31 | if workShop, ok := payload["WorkShop"]; ok { |
| 32 | 32 | ||
| 33 | - if t, ok := payload["UpTime"]; ok { | ||
| 34 | - collectionTime, _ = time.ParseInLocation("2006-01-02 - 15:04:05", t.(string), time.Local) | ||
| 35 | - } | ||
| 36 | - if collectionTime.IsZero() { | ||
| 37 | - log.Logger.Error(fmt.Sprintf("采集时间有误:%v ", collectionTime), map[string]interface{}{"data": message}) | ||
| 38 | - return | ||
| 39 | - } | 33 | + //if t, ok := payload["UpTime"]; ok { |
| 34 | + // collectionTime, _ = time.ParseInLocation("2006-01-02 - 15:04:05", t.(string), time.Local) | ||
| 35 | + //} | ||
| 36 | + //if collectionTime.IsZero() { | ||
| 37 | + // log.Logger.Error(fmt.Sprintf("采集时间有误:%v ", collectionTime), map[string]interface{}{"data": message}) | ||
| 38 | + // return | ||
| 39 | + //} | ||
| 40 | + collectionTime = time.Now() | ||
| 40 | var mBytes []byte | 41 | var mBytes []byte |
| 41 | for key, item := range payload { | 42 | for key, item := range payload { |
| 42 | if key == "WorkShop" || key == "UpTime" { | 43 | if key == "WorkShop" || key == "UpTime" { |
-
请 注册 或 登录 后发表评论