eis/inc/glob/ShiftMag.h

249 lines
8.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*********************************************************************
*
* 文 件: ShiftMag.h 声明班管理接口
*
* 版权所有: Shanghai Baosight Software Co., Ltd.
*
* 概述:
* :
* :
*
* 版本历史
* 1.0 2010-09-02 echo_li 增加注释
*
*********************************************************************/
#ifndef SHIFTMAG_H_
#define SHIFTMAG_H_
#include <map>
#include <vector>
#include <string>
#include <dao/ShiftDAO.h>
#include <base/TCMTime.h>
#include <dao/ParamMag.h>
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