CProduct.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. #pragma once
  2. #include "CppSQLite3.h"
  3. #include "dt.h"
  4. #include <string>
  5. #include <windows.h>
  6. #include <mutex>
  7. #include <vector>
  8. #include <map>
  9. #include "CDataBaseOperate.h"
  10. #ifdef PRODUCT_DLL
  11. #define DLL_PRODUCT_API __declspec(dllexport)
  12. #else
  13. #define DLL_PRODUCT_API
  14. #endif
  15. #define PRODUCT_DATABASE_NAME "\\Product.db"
  16. #define PROGRAM_BOND_MATRIX_TABLE_NAME "Program_BondMatrix"
  17. #define PROGRAM_PONIT_MATRIX_TABLE_NAME "Program_PointMatrix"
  18. #define PROGRAM_DIE_MATRIX_TABLE_NAME "Program_DieMatrix"
  19. #define PROGRAM_WAFER_MATRIX_TABLE_NAME "Program_WaferMatrix"
  20. #define PROGRAM_WAFFLE_MATRIX_TABLE_NAME "Program_WaffleMatrix"
  21. #define PROGRAM_PARAM_TABLE_NAME "Program_Param"
  22. #define PROGRAM_BOND_INFO_TABLE_NAME "Program_BondInfo"
  23. #define PROGRAM_HEAD_TABLE_TABLE_NAME "Program_HeadTableMatrix"
  24. #define ONE_DIM_MATRIX_TABLE_NAME "OneDimMatrix"
  25. #define STEP_LIST_DETAIL_TABLE_NAME "StepListDetail"
  26. #define STEP_PUBLIC_DATA_TABLE_NAME "StepPublicData"
  27. #define ALN_STRATEGY_TABLE_NAME "PR_Strategy"
  28. #define PR_TEMPLATE_TABLE_NAME "PR_Template"
  29. #define NO_GRAB_TEMPLATE_ID 0
  30. namespace ns_db
  31. {
  32. using namespace std;
  33. //一维矩阵ID
  34. enum OneDimMatrixID
  35. {
  36. NozzleMatrix = 0,
  37. };
  38. //模板类型枚举
  39. enum MCM_TEMPLATE_TYPE {
  40. COMMON_MIN = 1, COMMON_MAX = 50000,
  41. BONDINSP_MIN = 50001, BONDINSP_MAX = 60000,
  42. EXPOXY_MIN = 60001, EXPOXY_MAX = 70000,
  43. ALN_MIN = 70001, ALN_MAX = 80000
  44. };
  45. enum PICKBOND_PARAM_TYPE {
  46. WAFFLE_PICK = 1, //华夫盒取晶
  47. WAFFLE_BOND, //华夫盒固晶
  48. WAFFER_PICK, //晶片台取晶
  49. WAFFER_BOND, //晶片台固晶
  50. BONDHEAD_PICK, //贴片头取晶
  51. BONDHEAD_BOND //贴片头固晶
  52. };
  53. struct OneDimMatrixInfo
  54. {
  55. int nMatrixId = 0; //矩阵ID
  56. std::string sMatrixName = ""; //名字
  57. int nMatrixRow = 0; //矩阵行数
  58. int nMatrixCol = 0; //矩阵列数
  59. XY_DOUBLE_STRUCT LeftTopPoint{ 0,0 }; //矩阵左上角点位置(相对位置)
  60. XY_DOUBLE_STRUCT RightTopPoint{ 0,0 }; //矩阵右上角点位置(相对位置)
  61. XY_DOUBLE_STRUCT RightBottomPoint{ 0,0 }; //矩阵右下角点位置(相对位置)
  62. vector<XY_LONG_STRUCT> vetNoUsedPt; //不使用的点
  63. };
  64. //取(固)晶参数
  65. typedef struct _PICKBOND_PARAM_STRUCT : TABLE_INFO_BASE
  66. {
  67. UINT iId; //参数ID
  68. PICKBOND_PARAM_TYPE eParamType; //参数类型
  69. bool bCheckBlock; //阻塞检测
  70. bool bCheckLose; //漏晶检测
  71. bool bFindForce; //是否寻压
  72. double dPreLev; //预备高度
  73. double dForce; //取(固)压力
  74. double dWorkLev; //取(固)高度(寻压则无高度)
  75. UINT iGrabDelay; //拍图延时
  76. UINT iPickOrBondDelay; //取(固)延时
  77. UINT iBlockOrLoseDelay; //阻塞(漏晶)检测延时
  78. UINT iVacuumDelay; //真空延时
  79. UINT iBlowDelay; //吹气延时(0为不吹气)
  80. }PICKBOND_PARAM_STRUCT;
  81. //校准台校准类型枚举 NO_CALIB:不校准 UPLOOK_CALIB:下视校准 TABLE_CALIB:校准台校准
  82. enum CALIB_DIE_TYPE {
  83. NO_CALIB = 0x0, //不校准
  84. UPLOOK_CALIB = 0x1, //LookUp校准
  85. TABLE_CALIB = 0x2, //中转台校准
  86. UPLOOK_TABLE_CALIB = UPLOOK_CALIB | TABLE_CALIB //中转台和LookUp均校准
  87. };
  88. enum DIE_SOURCE { BY_NUL = 0 /*未指定*/, BY_WAFFLE = 1 /*华夫盒*/, BY_WAFER = 2/*晶片台*/ };
  89. //固晶信息
  90. typedef struct BOND_INFO_STRUCT : TABLE_INFO_BASE
  91. {
  92. UINT iInfoId; //固晶信息Id
  93. //UINT iModuleId; //模组Id
  94. DIE_SOURCE eDieSource; //晶片来源
  95. UINT iDieMatrixId; //使用的晶片台号或华夫盒矩阵号
  96. UINT iPickParamId; //取晶参数Id
  97. UINT iPickPRStrategyId; //取晶PR策略Id
  98. UINT iCalibBondParamId; //校准台固晶参数Id
  99. UINT iPickHeadId; //取晶吸嘴Id号
  100. UINT iBondHeadId; //固晶吸嘴Id号
  101. UINT iCalibPickParamId; //校准台取晶参数Id
  102. UINT iBondPRStrategyId; //固晶PR策略Id
  103. UINT iBondParamId; //固晶参数Id
  104. CALIB_DIE_TYPE eCalibType; //校准方式
  105. UINT iCalibPRStrategyId; //校准台PR策略Id
  106. UINT iLookUpPRStrategyId; //下视PR策略Id
  107. UINT iBondFrontPRStrategyId; //固前检测模板ID号 0为不检测
  108. UINT iBondBackPRStrategyId; //固后检测模板ID号 0为不检测
  109. X_Y_ANGLE_STRUCT stOffset; //固晶点补偿(从编程的固晶点位置偏移)
  110. }BOND_INFO_STRUCT;
  111. typedef struct _PROGRAM_DIE_MATRIX_STRUCT : TABLE_INFO_BASE
  112. {
  113. UINT iModuleId = 1; //模组Id
  114. string strModuleName = "WaffleHead"; //模组名称
  115. UINT MatrixId = 0; //矩阵ID
  116. INT MatrixRow = 1; //矩阵行数
  117. INT MatrixCol = 1; //矩阵列数
  118. XY_DOUBLE_STRUCT LeftTopPoint = { 0,0 }; //矩阵左上角点位置(相对位置)
  119. XY_DOUBLE_STRUCT RightTopPoint = { 0,0 }; //矩阵右上角点位置(相对位置)
  120. XY_DOUBLE_STRUCT RightBottomPoint = { 0,0 }; //矩阵右下角点位置(相对位置)
  121. vector<XY_LONG_STRUCT> VecNoBondPt; //矩阵上不固晶的Pt列表 (1,2)表示第一行第二列不固晶
  122. }PROGRAM_DIE_MATRIX_STRUCT; //晶片矩阵包括华夫盒和晶圆台
  123. typedef struct _PROGRAM_WAFER_MATRIX_STRUCT : TABLE_INFO_BASE
  124. {
  125. UINT MatrixId; //矩阵ID
  126. UINT iDieMatrixId; //包含的Pt矩阵Id
  127. INT MatrixRow; //矩阵行数
  128. INT MatrixCol; //矩阵列数
  129. XY_DOUBLE_STRUCT LeftTopPoint; //矩阵左上角点位置(相对位置)
  130. XY_DOUBLE_STRUCT RightTopPoint; //矩阵右上角点位置(相对位置)
  131. XY_DOUBLE_STRUCT RightBottomPoint; //矩阵右下角点位置(相对位置)
  132. vector<XY_LONG_STRUCT> VecNoBondPt; //矩阵上不固晶的Pt列表 (1,2)表示第一行第二列不固晶
  133. }PROGRAM_WAFER_MATRIX_STRUCT; //晶圆台矩阵
  134. typedef struct _PROGRAM_WAFFLE_MATRIX_STRUCT : TABLE_INFO_BASE
  135. {
  136. UINT MatrixId; //矩阵ID
  137. INT PackRow = 1; //华夫盒行数
  138. INT PackCol = 1; //华夫盒列数
  139. XY_DOUBLE_STRUCT LeftTopPoint = { 0,0 }; //矩阵左上角点位置(绝对位置)
  140. XY_DOUBLE_STRUCT RightTopPoint = { 0,0 }; //矩阵右上角点位置(绝对位置)
  141. XY_DOUBLE_STRUCT RightBottomPoint = { 0,0 }; //矩阵右下角点位置(绝对位置)
  142. vector<INT> VecDieMatrixId; //包含的Pt矩阵Id
  143. vector<XY_LONG_STRUCT> VecNoBondDie; //矩阵上不固晶的Pcb列表 (1,2)表示第一行第二列不固晶
  144. }PROGRAM_WAFFLE_MATRIX_STRUCT; //华夫盒矩阵
  145. typedef struct _PROGRAM_POINT_MATRIX_STRUCT : TABLE_INFO_BASE
  146. {
  147. UINT MatrixId; //矩阵ID
  148. UINT iModuleId; //模组Id
  149. string strModuleName; //模组名称
  150. INT MatrixRow; //矩阵行数
  151. INT MatrixCol; //矩阵列数
  152. XY_DOUBLE_STRUCT LeftTopPoint; //矩阵左上角点位置
  153. XY_DOUBLE_STRUCT RightTopPoint; //矩阵右上角点位置
  154. XY_DOUBLE_STRUCT RightBottomPoint; //矩阵右下角点位置
  155. vector<XY_LONG_STRUCT> VecNoBondPt; //矩阵上不固晶的Pt列表 (1,2)表示第一行第二列不固晶
  156. }PROGRAM_POINT_MATRIX_STRUCT; //程序PT参数
  157. typedef struct _PROGRAM_BOND_MATRIX_STRUCT : TABLE_INFO_BASE
  158. {
  159. UINT BondMatrixId; //矩阵ID
  160. UINT iModuleId; //模组Id
  161. string strModuleName; //模组名称
  162. INT BondMatrixRow; //Pcb行数
  163. INT BondMatrixCol; //Pcb列数
  164. XY_DOUBLE_STRUCT LeftTopPoint; //矩阵左上角点位置
  165. XY_DOUBLE_STRUCT RightTopPoint; //矩阵右上角点位置
  166. XY_DOUBLE_STRUCT RightBottomPoint; //矩阵右下角点位置
  167. vector<INT> VecPointMatrixId; //包含的Pt矩阵Id
  168. vector<XY_LONG_STRUCT> VecNoBondPt; //矩阵上不固晶的列表 (1,2)表示第一行第二列不固晶
  169. INT BondInfoId; //固晶参数Id
  170. }PROGRAM_BOND_MATRIX_STRUCT; //固晶
  171. typedef struct _PROGRAM_HEAD_TABLE_MATRIX_STRUCT : TABLE_INFO_BASE
  172. {
  173. UINT MatrixId; //矩阵ID
  174. INT MatrixRow; //矩阵行数
  175. INT MatrixCol; //矩阵列数
  176. XY_DOUBLE_STRUCT LeftTopPoint; //矩阵左上角点位置
  177. XY_DOUBLE_STRUCT RightTopPoint; //矩阵右上角点位置
  178. XY_DOUBLE_STRUCT RightBottomPoint; //矩阵右下角点位置
  179. vector<XY_LONG_STRUCT> VecNoBondPt; //矩阵上不固晶的Pt列表 (1,2)表示第一行第二列不固晶
  180. }PROGRAM_HEAD_TABLE_MATRIX_STRUCT; //程序PT参数
  181. typedef struct _STEP_DETAIL : TABLE_INFO_BASE
  182. {
  183. UINT iIndex; //在组中的执行顺序
  184. UINT iFunctionId; //功能Id
  185. UINT iGroupId; //组Id
  186. UINT iStepId; //执行的StepId
  187. string strParam; //执行Step时的参数(经过序列化后的参数)
  188. } STEP_DETAIL;
  189. typedef struct _STEP_PUBLIC_DATA : TABLE_INFO_BASE
  190. {
  191. UINT Id; //参数Id
  192. string Key; //参数Key
  193. string Value; //值
  194. } STEP_PUBLIC_DATA;
  195. //enum TEMPLATE_TYPE {
  196. // ALN_MIN = 0, ALN_MAX = 50000, //对点策略
  197. // BONDINSP_MIN = 50001, BONDINSP_MAX = 60000, //固后检测模板
  198. // EXPOXY_MIN = 60001, EXPOXY_MAX = 70000, //胶量检测模板
  199. //};
  200. //模板图像类型枚举
  201. //enum TEMP_TYPE { FIND_PM = 0, FIND_GM = 1, FIND_LINE = 2, FIND_CIRCLE = 3, FIND_EPOXYINSP = 4 };
  202. //对点输出枚举
  203. enum SEARCH_OUT {
  204. OUT_NULL = 0X0, //定位
  205. OUT_X = 0X1,
  206. OUT_Y = 0X2,
  207. OUT_Ax = 0X4/*相对于X轴角度*/,
  208. OUT_Ay = 0x8/*相对于Y轴角度*/,
  209. OUT_All = OUT_X | OUT_Y | OUT_Ax
  210. };
  211. typedef struct _PR_TEMPLATE : TABLE_INFO_BASE
  212. {
  213. UINT iTemplateId; //模板Id
  214. UINT iModuleType; //模组类型
  215. UINT iPrMethod; //Pr模板方法
  216. UINT iCameraId; //相机ID
  217. SEARCH_OUT eResultSelect; //选取结果
  218. X_Y_Z_R_STRUCT stGrabPos; //拍照位置
  219. UINT iRedLight; //灯光参数1
  220. UINT iGreenLight; //灯光参数2
  221. UINT iBlueLight; //灯光参数3
  222. UINT iPointLight; //灯光参数4
  223. double dExposureTime; //相机曝光时间
  224. double dGain; //相机对比度
  225. string Date; //模板创建时间
  226. } PR_TEMPLATE;
  227. typedef struct _PR_STRATEGY : TABLE_INFO_BASE
  228. {
  229. UINT iStrategyId; //PR策略ID
  230. vector<UINT> vecTemplateId; //模板ID
  231. X_Y_ANGLE_STRUCT stRef; //基准位置
  232. string Date; //模板创建时间
  233. }PR_STRATEGY;
  234. typedef struct _TEMPERATURE_LIST_STRUCT
  235. {
  236. double dTemperature; //共晶温度
  237. double dForce; //共晶压力(为0时抬起吸嘴)
  238. LONG lDelay; //共晶延时
  239. double dLimitUp; //允许温度误差上限
  240. double dLimitDown; //允许温度误差下限
  241. double dMoveRangeX; //共晶台在共晶时移动范围X
  242. double dMoveRangeY; //共晶台在共晶时移动范围Y
  243. BOOL bVacuumOff; //关真空
  244. }TEMPERATURE_LIST_STRUCT;
  245. class DLL_PRODUCT_API CProduct : public CDataBaseOperate
  246. {
  247. public:
  248. CProduct(string strDbPath);
  249. private:
  250. LONG SaveDB() override;
  251. LONG LoadDB() override;
  252. #pragma region Program_DieMatrix 用于wafer 和 waffle
  253. private:
  254. std::vector<PROGRAM_DIE_MATRIX_STRUCT> m_VecDieMatrix;
  255. //加载用户编程数据表
  256. LONG LoadDieMatrix();
  257. LONG SaveDieMatrix();
  258. public:
  259. LONG GetDieMatrix(UINT nModuleId, std::vector<PROGRAM_DIE_MATRIX_STRUCT>& vecDieMatrix);
  260. LONG GetDieMatrix(UINT iMatrixId, PROGRAM_DIE_MATRIX_STRUCT& stDieMatrix);
  261. LONG GetAllDieMatrix(std::vector<PROGRAM_DIE_MATRIX_STRUCT>& vecDieMatrix);
  262. LONG SetDieMatrix(std::vector<PROGRAM_DIE_MATRIX_STRUCT> stDieMatrix, bool bAppend = false);
  263. LONG SetAllDieMatrix(std::vector<PROGRAM_DIE_MATRIX_STRUCT> vecDieMatrix);
  264. LONG SetAllWaffleDieMatrix(std::vector<PROGRAM_DIE_MATRIX_STRUCT> vecDieMatrix, bool isCallBack = true);
  265. LONG SetAllWaferDieMatrix(std::vector<PROGRAM_DIE_MATRIX_STRUCT> vecDieMatrix, bool isCallBack = true);
  266. LONG DeleteDieMatrix(int matrixId);
  267. #pragma endregion
  268. #pragma region Program_WaferMatrix 表
  269. private:
  270. std::vector<PROGRAM_WAFER_MATRIX_STRUCT> m_VecWaferMatrix;
  271. //加载用户编程数据表
  272. LONG LoadWaferMatrix();
  273. LONG SaveWaferMatrix();
  274. public:
  275. std::vector<PROGRAM_WAFER_MATRIX_STRUCT> GetWaferMatrix() { return m_VecWaferMatrix; };
  276. LONG SetWaferMatrix(UINT id, PROGRAM_WAFER_MATRIX_STRUCT matrix);
  277. LONG SetAllWaferMatrix(std::vector<PROGRAM_WAFER_MATRIX_STRUCT> vecWaferMatrix, bool isCallBack = true);
  278. LONG AddWaferMatrix(PROGRAM_WAFER_MATRIX_STRUCT newMatrix, int& newId);
  279. LONG DeleteWaferMatrix(int matrixID);
  280. #pragma endregion
  281. #pragma region Program_WaffleMatrix 表
  282. private:
  283. std::vector<PROGRAM_WAFFLE_MATRIX_STRUCT> m_VecWaffleMatrix;
  284. //加载用户编程数据表
  285. LONG LoadWaffleMatrix();
  286. LONG SaveWaffleMatrix();
  287. public:
  288. std::vector<PROGRAM_WAFFLE_MATRIX_STRUCT> GetWaffleMatrix() { return m_VecWaffleMatrix; };
  289. LONG SetWaffleMatrix(int id, PROGRAM_WAFFLE_MATRIX_STRUCT matrix);
  290. LONG SetAllWaffleMatrix(std::vector<PROGRAM_WAFFLE_MATRIX_STRUCT> vecWaffleMatrix);
  291. LONG AddWaffleMatrix(PROGRAM_WAFFLE_MATRIX_STRUCT newMatrix, int& newId);
  292. LONG DeleteWaffleMatrix(int matrixID);
  293. #pragma endregion
  294. #pragma region Program_BondMatrix 表
  295. private:
  296. std::vector<PROGRAM_BOND_MATRIX_STRUCT> m_VecBondMatrix;
  297. //加载用户编程数据表
  298. LONG LoadBondMatrix();
  299. LONG SaveBondMatrix();
  300. public:
  301. std::vector<PROGRAM_BOND_MATRIX_STRUCT> GetBondMatrix() { return m_VecBondMatrix; };
  302. void SetBondMatrix(int matrixID, PROGRAM_BOND_MATRIX_STRUCT matrix);
  303. LONG SetAllBondMatrix(std::vector<PROGRAM_BOND_MATRIX_STRUCT> vecBondMatrix, bool isCallBack = true);
  304. LONG AddBondMatrix(PROGRAM_BOND_MATRIX_STRUCT matrix, int& newId);
  305. void DeleteBondMatrix(int matrixID);
  306. #pragma endregion
  307. #pragma region Program_PointMatrix 表 用于Bond
  308. private:
  309. std::vector<PROGRAM_POINT_MATRIX_STRUCT> m_VecPointMatrix;
  310. //加载用户编程数据表
  311. LONG LoadPointMatrix();
  312. LONG SavePointMatrix();
  313. public:
  314. LONG GetPointMatrix(UINT iMatrixId, PROGRAM_POINT_MATRIX_STRUCT& stPointMatrix);
  315. LONG GetAllPointMatrix(std::vector<PROGRAM_POINT_MATRIX_STRUCT>& vecPointMatrix);
  316. LONG AddPointMatrix(int bondMatrixID, PROGRAM_POINT_MATRIX_STRUCT subMatrix,int& newId);
  317. LONG SetPointMatrix(int matrixID, PROGRAM_POINT_MATRIX_STRUCT dieMatrix);
  318. LONG SetAllPointMatrix(std::vector<PROGRAM_POINT_MATRIX_STRUCT> vecPointMatrix, bool isCallBack = true);
  319. LONG DeletePointMatrix(int bondMatrixId, int subMatrixID);
  320. #pragma endregion
  321. #pragma region Program_BondInfo 表
  322. private:
  323. std::vector<BOND_INFO_STRUCT> m_VecBondInfoData;
  324. //加载用户编程数据表
  325. LONG LoadBondInfoData();
  326. LONG SaveBondInfoData();
  327. public:
  328. std::vector<BOND_INFO_STRUCT> GetAllBondInfoData() { return m_VecBondInfoData; };
  329. LONG GetBondInfoData(UINT iInfoId, BOND_INFO_STRUCT& stBondInfoData);
  330. LONG SetBondInfoData(int infoId, BOND_INFO_STRUCT stBondInfoData);
  331. LONG AddBondInfoData(BOND_INFO_STRUCT stBondInfoData,int& newInfoId);//需要指定矩阵ID
  332. LONG DeleteBondInfoData(int infoId);
  333. #pragma endregion
  334. #pragma region Program_Param 表
  335. private:
  336. std::vector<PICKBOND_PARAM_STRUCT> m_VecBondParam;
  337. //加载用户编程数据表
  338. LONG LoadBondParam();
  339. LONG SaveBondParam();
  340. public:
  341. LONG GetBondParam(UINT iParamId, PICKBOND_PARAM_STRUCT& stBondParam);
  342. LONG SetBondParam(int paramId, PICKBOND_PARAM_STRUCT stBondParam);
  343. LONG AddBondParam(PICKBOND_PARAM_STRUCT stBondParam,int& newId);//需要指定bondInfo 的id,将数据进行
  344. LONG DeleteBondParam(int paramId);
  345. #pragma endregion
  346. #pragma region Program_HeadTableMatrix 表
  347. private:
  348. PROGRAM_HEAD_TABLE_MATRIX_STRUCT m_VecHeadTableMatrix;
  349. //加载用户编程数据表
  350. LONG LoadHeadTable();
  351. public:
  352. PROGRAM_HEAD_TABLE_MATRIX_STRUCT GetHeadTableMatrix() { return m_VecHeadTableMatrix; };
  353. #pragma endregion
  354. #pragma region
  355. private:
  356. std::vector<OneDimMatrixInfo> m_vetOneDimMatrix;
  357. LONG LoadOneMatrixInfo();
  358. public:
  359. LONG GetOneDimMatrixInfo(int matrixID, OneDimMatrixInfo& matrix);
  360. #pragma endregion
  361. #pragma region StepListDetail 表
  362. private:
  363. std::vector<STEP_DETAIL> m_vecStepDetail;
  364. //获取Step动作及参数表
  365. LONG LoadStepListDetail();
  366. public:
  367. std::vector<STEP_DETAIL> GetStepListDetail(UINT iFunctionId);
  368. std::vector<STEP_DETAIL> GetStepListDetail() { return m_vecStepDetail; };
  369. #pragma endregion
  370. #pragma region StepPublicData 表
  371. private:
  372. vector<STEP_PUBLIC_DATA> m_mapStepPublicData;
  373. LONG LoadStepPublicData();
  374. LONG SaveStepPublicData();
  375. public:
  376. vector<STEP_PUBLIC_DATA> GetStepPublicData() { return m_mapStepPublicData; };
  377. LONG SetStepPublicData(vector<STEP_PUBLIC_DATA> vecStepPublicData, bool bAppend = false);
  378. #pragma endregion
  379. #pragma region PR_Strategy 表
  380. private:
  381. std::vector<PR_STRATEGY> m_vecPrStrategy;
  382. LONG LoadPrStrategy();
  383. LONG SavePrStrategy();
  384. public:
  385. std::vector<PR_STRATEGY> GetPrStrategy() { return m_vecPrStrategy; };
  386. LONG AddPrStrategy(vector<UINT> vecTemplateId);
  387. #pragma endregion
  388. #pragma region PR_Template 表
  389. private:
  390. std::vector<PR_TEMPLATE> m_vecPrTemplate;
  391. LONG LoadPrTemplate();
  392. LONG SavePrTemplate();
  393. public:
  394. std::vector<PR_TEMPLATE> GetPrTemplate() { return m_vecPrTemplate; };
  395. LONG AddPrTemplate(PR_TEMPLATE stTemplate);
  396. #pragma endregion
  397. };
  398. }