/********************************************************************* * * 文 件: ShiftMag.h 声明班管理接口 * * 版权所有: Shanghai Baosight Software Co., Ltd. * * 概述: * : * : * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * *********************************************************************/ #ifndef SHIFTMAG_H_ #define SHIFTMAG_H_ #include #include #include #include #include #include using namespace std; #define SHIFT_PARAMNAME "SHIFT_STARTDATE" #define SHIFT_PARAMTYPE "LST" namespace baosight{ /********************************************************************* * 类 名: ShiftMag * 版权所有: Shanghai Baosight Software Co., Ltd. * 类 职 责:获取当前班的信息 * :统计班数据 * :换班处理 * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * *********************************************************************/ class ShiftMag{ public: /********************************************************************** * 概述: 换班对外接口 * 函数名: ChangeShift * 返回值: short * 参数列表: 参数类型 取值范围 描述 * changeTime: time_t 换班时间 * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ short ChangeShift(time_t changeTime = 0); //换班对外接口 /********************************************************************** * 概述: 获取当前班信息 * 函数名: GetCurrentShiftInfo * 返回值: short * 参数列表: 参数类型 取值范围 描述 * info: S_SHIFTINFO & * changeTime: time_t * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ short GetCurrentShiftInfo(S_SHIFTINFO& info,time_t changeTime = 0); //获取当前班的信息 /********************************************************************** * 概述: 获取上一班信息 * 函数名: GetPreShiftInfo * 返回值: short * 参数列表: 参数类型 取值范围 描述 * info: S_SHIFTINFO & * changeTime: time_t * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ short GetPreShiftInfo(S_SHIFTINFO& info,time_t changeTime = 0); //获取上一班的信息 /********************************************************************** * 概述: 获取下一班信息 * 函数名: GetNextShiftInfo * 返回值: short * 参数列表: 参数类型 取值范围 描述 * info: S_SHIFTINFO & * changeTime: time_t * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ short GetNextShiftInfo(S_SHIFTINFO& info,time_t changeTime = 0); //获取下一班的信息 /********************************************************************** * 概述: //班组启动时需要进行初始化工作 * 函数名: InitShift * 返回值: short * 参数列表: 参数类型 取值范围 描述 * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ short InitShift(); /********************************************************************** * 概述: 获取任意时间对应的班号 * 函数名: GetShift * 返回值: std::string * 参数列表: 参数类型 取值范围 描述 * curTime: time_t * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ string GetShift(time_t curTime = 0); //获取班号 /********************************************************************** * 概述: 获取任意时间对应的组别 * 函数名: GetTurn * 返回值: std::string * 参数列表: 参数类型 取值范围 描述 * curTime: time_t * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ string GetTurn(time_t curTime = 0); //获取组号 /********************************************************************** * 概述: 打印班信息 * 函数名: Show * 返回值: void * 参数列表: 参数类型 取值范围 描述 * info: const S_SHIFTINFO & * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ void Show(const S_SHIFTINFO& info); // /********************************************************************** * 概述: 统计班信息 * 函数名: StatShiftData * 返回值: short * 参数列表: 参数类型 取值范围 描述 * proInfo: S_PRODUCTINFO & * linInfo: S_LINEDOWNINFO & * changeTime: time_t * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * 1.1 2010-10-27 liliang 修改参数changeTime为shiftInfo,使用某班的信息进行统计 * **********************************************************************/ short StatShiftData(S_PRODUCTINFO& proInfo,S_LINEDOWNINFO& linInfo,const S_SHIFTINFO& shiftInfo); short CrewLogin( const string& crew); public: ShiftMag( ShiftDAO& pShiftDao); ~ShiftMag(); private: /********************************************************************** * 概述: 换班内部逻辑 * 函数名: ChangeShift * 返回值: short * 参数列表: 参数类型 取值范围 描述 * LastTime: string * endTime: string * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ short ChangeShift(string LastTime,string endTime); // /********************************************************************** * 概述: 获取某一时间相对与1970-1-1-0-0-0的日期偏移量(8天轮回) * 函数名: ChangeShift * 返回值: short * 参数列表: 参数类型 取值范围 描述 * LastTime: string * endTime: string * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ short GetDayNo(TCMTime curTime); /********************************************************************** * 概述: 获取班的信息 * 函数名: GetShiftInfo * 返回值: short * 参数列表: 参数类型 取值范围 描述 * info: S_SHIFTINFO & * curTime: TCMTime * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ short GetShiftInfo(S_SHIFTINFO& info,TCMTime curTime); // /********************************************************************** * 概述: 根据时间偏移,查找班次 * 函数名: FindShift * 返回值: short * 参数列表: 参数类型 取值范围 描述 * timeOffset: int * s_Shift: S_LOVSHIFT & * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ short FindShift(int timeOffset,S_LOVSHIFT &s_Shift); // /********************************************************************** * 概述: 根据时间偏移查找组 * 函数名: FindTurn * 返回值: std::string * 参数列表: 参数类型 取值范围 描述 * dayNo: short * shiftNo: string * * 版本历史 * 1.0 2010-09-02 echo_li 增加注释 * **********************************************************************/ string FindTurn(short dayNo,string shiftNo); // private: V_LOVSHIFT m_lovShiftList; //班常量数据列表 M_LOVTURNLIST m_turnList; //班组配置列表 S_LOVSHIFT ms_lovShift; //班常量信息 S_SHIFTINFO ms_CurrentShift; //当前班的信息 bool m_isInit; //班组常量数据是否被初始化 int m_maxOffset; //班最大偏移量 int m_minOffset; //班最小偏移量 int m_dayoffset; //换天偏移量 char csdate[20]; //数据库参数,班组计算的起始日期 YYYYMMDD time_t isdate; //数据库参数,班组计算的起始日期 YYYYMMDD private: static const int DAY_SECONDS = 86400; //一天中的秒数 static const int CYCLE_DAYS = 8; //换班循环天数 private: ShiftDAO* mp_ShiftDao; //处理数据库相关 }; } #endif