| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- //
- // ICModels.swift
- // O2Platform
- //
- // Created by 刘振兴 on 2016/10/26.
- // Copyright © 2016年 zoneland. All rights reserved.
- //
- import Foundation
- import ObjectMapper
- typealias ICTimeComponent = (year:String,month:String,day:String,hour:String,minute:String,second:String)
- enum AttendanceStatusType:String {
- case LEAVE = "请假"
- case LATE = "迟到"
- case EARLY = "早退"
- case ABSENCE = "缺勤"
- case ABNORMAL = "异常打卡"
- case UNDERTIME = "工时不足"
- case NORMAL = "正常"
- }
- enum AttendanceWorkType:String {
- case HOLIDAY = "节假日"
- case WEEKEND = "周末"
- case WORKDAY = "调休工作日"
- case NORMALWORKDAY = "工作日"
- }
- ///返回时间每个单元的值
- func calcTimeComponetFromDate(date:Date) -> ICTimeComponent {
- let calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)
- let comps = calendar?.components([NSCalendar.Unit.year,NSCalendar.Unit.month,NSCalendar.Unit.day,NSCalendar.Unit.hour,NSCalendar.Unit.minute,NSCalendar.Unit.second], from: date)
- let year:Int = (comps?.year!)!
- let month:Int = (comps?.month!)!
- let monthStr = addPrefixByTimeUnit(timeUnit: month, prefix: "0")
- let day:Int = (comps?.day!)!
- let dayStr = addPrefixByTimeUnit(timeUnit: day, prefix: "0")
- let hour:Int = (comps?.hour!)!
- let hourStr = addPrefixByTimeUnit(timeUnit: hour, prefix: "0")
- let minute:Int = (comps?.minute!)!
- let minuteStr = addPrefixByTimeUnit(timeUnit: minute, prefix: "0")
- let second:Int = (comps?.second!)!
- let secondStr = addPrefixByTimeUnit(timeUnit: second, prefix: "0")
- return ("\(year)","\(monthStr)","\(dayStr)","\(hourStr)","\(minuteStr)","\(secondStr)")
-
- }
- private func addPrefixByTimeUnit(timeUnit:Int,prefix:String) -> String{
- if timeUnit < 10 {
- return "\(prefix)\(timeUnit)"
- }else {
- return "\(timeUnit)"
- }
- }
- ///每个考勤数据类型
- func calcAttendanceStatus(attendance:AttendanceDetailData) -> (statusType:AttendanceStatusType,workType:AttendanceWorkType,isAppeal:Bool) {
- //考勤类型
- var statusType:AttendanceStatusType = .NORMAL
- if attendance.isGetSelfHolidays == true {
- statusType = .LEAVE
- }else if attendance.isLate == true {
- statusType = .LATE
- }else if attendance.isLeaveEarlier == true {
- statusType = .EARLY
- }else if attendance.isAbsent == true {
- statusType = .ABSENCE
- }else if attendance.isAbnormalDuty == true {
- statusType = .ABNORMAL
- }else if attendance.isLackOfTime == true {
- statusType = .UNDERTIME
- }
- //工作时间类型
- var workType:AttendanceWorkType = .NORMALWORKDAY
- if attendance.isHoliday == true {
- workType = .HOLIDAY
- }else if attendance.isWeekend == true {
- workType = .WEEKEND
- }else if attendance.isWorkday == true {
- workType = .WORKDAY
- }
- //是否申诉
- var isAppeal = false
- if attendance.isAbsent == true || attendance.isLate == true || attendance.isLeaveEarlier == true || attendance.isAbnormalDuty == true || attendance.isLackOfTime == true {
- isAppeal = true
- }
-
- return (statusType,workType,isAppeal)
- }
- ///首页统计实体模型
- class AttendanceTotalEntry {
- //数量
- var count:Int = 0
- //标签名
- var label:String?
- //类型
- var type:AttendanceStatusType = .NORMAL
-
- init(label:String,type:AttendanceStatusType) {
- self.label = label
- self.type = type
- }
-
- func incCount() {
- count+=1
- }
-
- }
- ///待审核显示数据模型
- class AttendanceCheckEntry {
- var identityName:String?
- var appealDate:String?
- var appealReson:String?
- var appealDesc:String?
- var appealObj:AttendanceAppealInfoData?
-
- static public func genernateEntry(infoData:AttendanceAppealInfoData) -> AttendanceCheckEntry {
- let entry = AttendanceCheckEntry()
- entry.identityName = "\(infoData.empName!)(\(infoData.departmentName!))"
- entry.appealDate = infoData.appealDateString
- let reson = calcAppealReson(infoData)
- entry.appealReson = reson.appealReson
- entry.appealDesc = reson.appealDesc
- entry.appealObj = infoData
- return entry
- }
-
- static private func calcAppealReson(_ infoData:AttendanceAppealInfoData) -> (appealReson:String,appealDesc:String) {
- var reson = infoData.appealReason!
- if let holidayType = infoData.selfHolidayType {
- if holidayType.isEmpty == false {
- reson.append("(\(holidayType))")
- }
- }
- var desc = infoData.appealDescription!
- var addr = infoData.address!
- if addr.isEmpty == false {
- addr = "地点:\(addr)"
- }
- if desc.isEmpty == false {
- desc = "事由:\(desc)"
- }
- desc = addr.isEmpty == false ? "\(addr),\(desc)" : desc
- return (reson,desc)
- }
- }
- ///详细页显示数据模型
- class AttendanceDetailEntry {
- var aDate:String?
- var aTimeInterval:String?
- var aWorkType:String?
- var aStatusType:String?
- var appealStatus:Int?
- var isAppeal:Bool = false
- var detailObj:AttendanceDetailData?
-
- init() {
-
- }
-
- static public func generateDetailEntry(detailData:AttendanceDetailData) -> AttendanceDetailEntry {
- let entry = AttendanceDetailEntry()
- entry.aDate = detailData.recordDateString //申诉状态:0-未申诉,1-申诉中,-1-申诉未通过,9-申诉通过
- entry.appealStatus = detailData.appealStatus
- entry.aTimeInterval = "\(detailData.onDutyTime!) - \(detailData.offDutyTime!)"
- let t = calcAttendanceStatus(attendance: detailData)
- entry.aWorkType = t.workType.rawValue
- entry.aStatusType = t.statusType.rawValue
- entry.isAppeal = t.isAppeal
- entry.detailObj = detailData
- return entry
- }
-
- }
- class AttendanceAppealInfoEntry:Mappable {
- var appealStatus:Int = 1 //申诉状态:0-未申诉,1-申诉中,-1-申诉未通过,9-申诉通过
- var appealReason:String?//原因 临时请假 出差 因公外出 其他
- var appealDescription:String?//事由
- var selfHolidayType:String?//如果原因是临时请假 这里需要选择一个请假类型 :带薪年休假 带薪病假 带薪福利假 扣薪事假 其他
- var address:String?//外出地址
- var startTime:String?// yyyy-MM-dd HH:mm
- var endTime:String?// yyyy-MM-dd HH:mm
- var processPerson1:String?// 审批人一
-
- init() {
-
- }
-
- required init?(map: Map) {
-
- }
-
- func mapping(map: Map) {
- appealStatus<-map["appealStatus"]
- appealReason<-map["appealReason"]
- appealDescription<-map["appealDescription"]
- selfHolidayType<-map["selfHolidayType"]
- address<-map["address"]
- startTime<-map["startTime"]
- endTime<-map["endTime"]
- processPerson1<-map["processPerson1"]
- }
- }
|