249 lines
8.5 KiB
C++
249 lines
8.5 KiB
C++
/*********************************************************************
|
||
*
|
||
* 文 件: 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
|