📄 mrpcalc.h
字号:
// MRPCalc.h : Declaration of the CMRPCalc
#ifndef __MRPCALC_H_
#define __MRPCALC_H_
#include "stdafx.h"
#include "resource.h" // main symbols
#include "Order.h"
#include "PrdStruct.h"
/////////////////////////////////////////////////////////////////////////////
struct CalcNode
{
long NodeID;
long MtrlID;
long OrderID;
double PrvdQty; // 发料数量
double RqQty; // 缺料数量
double PchQty; // 安排例外采购/临时代用数量
double Scale; // 构成单位上件的数量
double Loss; // 构成上件的损耗率
double RqDate; // 需求时间
_bstr_t Source; // 供料来源
CalcNode *son;
CalcNode *brother;
};
struct RqSeq
{
CalcNode *itself;
CalcNode *parent;
RqSeq *next;
};
struct RqMtrl
{
long MtrlID;
double Storage; // 库存能力
long counter; // 需求计数
RqSeq *firstRq; // 需求次序
RqMtrl *next;
};
// CMRPCalc
class ATL_NO_VTABLE CMRPCalc :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMRPCalc, &CLSID_MRPCalc>,
public IConnectionPointContainerImpl<CMRPCalc>,
public IDispatchImpl<IMRPCalc, &IID_IMRPCalc, &LIBID_MRPCOMLib>
{
private:
bool m_OprtOK;
COrder *pOrder;
CPrdStruct *pPrd;
CalcNode *pRoot;
RqMtrl *pRqMtrl;
_RecordsetPtr pRstRslt;
_RecordsetPtr pRstMtrlWare;
_RecordsetPtr pRstAllocMx;
public:
CMRPCalc()
{
m_OprtOK=false;
pRoot=NULL;
pRqMtrl=NULL;
}
DECLARE_REGISTRY_RESOURCEID(IDR_MRPCALC)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CMRPCalc)
COM_INTERFACE_ENTRY(IMRPCalc)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
END_COM_MAP()
BEGIN_CONNECTION_POINT_MAP(CMRPCalc)
END_CONNECTION_POINT_MAP()
// IMRPCalc
public:
STDMETHOD(MRP)();
STDMETHOD(ReleaseDB)();
STDMETHOD(ConnectDB)();
STDMETHOD(get_OprtOK)(/*[out, retval]*/ BOOL *pVal);
STDMETHOD(AddOrder)(/*[in]*/long argOrderID);
protected:
void AccessTree(CalcNode *pNode);
void DestroyTree(CalcNode *pCurNode);
long RqCalc();
void GenTree();
CalcNode *GenLeftTree(CalcNode *parentNode);
CalcNode * GenRightTree(CalcNode *parentNode,long argNodeID);
};
#endif //__MRPCALC_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -