#include <vector>
#include <map>
#include <string>
//针对发布状态的名称
#define SCRAPE_STATUS_NAME	"失效"										//废弃的状态的名称
//针对物料属性
#define MATERIAL_jk8SpecModel "jk8SpecModel"							//规格型号
#define MATERIAL_jk8Remarks "jk8Remarks"							//t特殊说明2019.06.13
#define MATERIAL_jk8ProductIdentifyNO "jk8ProductIdentifyNO"							//产品识别号2019.06.13
#define MATERIAL_jk8StockBigTypeNo "jk8StockBigTypeNo"					//存货大类编码
#define MATERIAL_jk8TechModel "jk8TechModel"							//产品识别号

#define MATERIAL_jk8UnitWeight "jk8UnitWeight"						//单位重量   (2017.8.28新加18条表单属性)
#define MATERIAL_jk8UnitVolume "jk8UnitVolume"						//单位体积
#define MATERIAL_jk8IsDomesticMarket "jk8IsDomesticMarket"				//是否内销
#define MATERIAL_jk8Isconsumables "jk8Isconsumables"					//是否耗用
#define MATERIAL_jk8IsBuy "jk8IsBuy"									//是否采购
#define MATERIAL_jk8IsMake "jk8IsMake"									//是否自制
#define MATERIAL_jk8IsOutsource "jk8IsOutsource"						//是否委外
#define MATERIAL_jk8AccountSet "jk8AccountSet"							//默认账套
#define MATERIAL_jk8BusinessType "jk8BusinessType"						//业务类型
#define MATERIAL_jk8Buyer "jk8Buyer"									//采购员
#define MATERIAL_jk8PurLeadTime "jk8PurLeadTime"						//固定提前期
#define MATERIAL_jk8SafeStock "jk8SafeStock"							//安全库存
#define MATERIAL_jk8SupplyType1 "jk8SupplyType1"						//供应类型
#define MATERIAL_jk8Warehouse1 "jk8Warehouse1"							//默认仓库
#define MATERIAL_jk8InnTransCoe "jk8InnTransCoe"						//内部交易价格系数
#define MATERIAL_jk8WarehouseKeeper "jk8WarehouseKeeper"				//库管员
#define MATERIAL_jk8IsInnTrans "jk8IsInnTrans"							//是否内部交易
#define MATERIAL_jk8PlanMethod "jk8PlanMethod"							//计划方式
//#define MATERIAL_jk8ProductIdentifyNO "jk8ProductIdentifyNO"							//选配功能之产品识别号
#define MATERIAL_jk8DisabledDate "jk8DisabledDate"							//停用日期
#define MATERIAL_jk8EnableDate "jk8EnableDate"							//启用日期


//针对BOM属性
#define BOM_Jk8SupplyType "jk8SupplyType1"		//2017/11/2改						//供货类型 JK8SupplyType
#define BOM_Jk8Warehouse  "jk8Warehouse1"		//2017/11/2改						//仓库    JK8Warehouse
#define BOM_Jk8RemarkDesc "JK8Remark"									//备注
#define BOM_JK_BOM_CWR    "jk8SubCompLossRate"							//子件损耗率
//针对BOM中的母件损耗率
#define BOM_jk8_mjshl "jk8ParentCompLossRate"							//母件利用率
//数据库链接信息
#define JK_DB_USER_NAME  "infodba"										//用户名
#define JK_DB_USER_PWD  "infodba"										//密码
#define JK_DB_URL "//10.200.2.43/jktc"									//正式机链接URL

/*#define JK_DB_USER_NAME  "infodba"										//测试用户名
#define JK_DB_USER_PWD  "infodba"										//测试密码
#define JK_DB_URL "//10.201.5.202/jktc"									//测试链接URL*/


/*#define JK_DB_URL "//10.201.5.203/tc11"									//测试链接URL
#define JK_DB_URL "//localhost/tc"									//测试链接URL
#define JK_DB_URL "//10.201.5.202/JKTC"									//测试链接URL*/

//中间表名称
#define JK_MATERIAL_TABLE  "JK_MATERIAL_TABLE"							//物料中间表
#define JK_BOM_PARENT_LINE_TABLE "JK_BOM_PARENT_LINE_TABLE"				//BOM表头中间表
#define JK_BOM_CHILD_LINE_TABLE "JK_BOM_CHILD_LINE_TABLE"				//BOM结构中间表
#define JK_BOM_SUBSTITUTE_PART_TABLE "JK_BOM_SUBSTITUTE_PART_TABLE"		//BOMLINE替换件中间表
#define JK_RECORD_SUBSTIT_TABLE "JK_RECORD_SUBSTIT_T"                   //物料全局替代件表  2018.5.4加
//替代件
#define JK_SUBSTITUTE_EffectiveDate "jk8EffectiveDate"					//生效日期 
#define JK_SUBSTITUTE_Order  "jk8SubstitOrder"							//替代次序
#define JK_SUBSTITUTE_Ratio	 "jk8SubstitRatio"							//替代比

#define JK_SUBSTITUTE_EffectiveDate1 "JK8EffectiveDate"					//生效日期1
#define JK_SUBSTITUTE_Order1  "JK8SubstitOrder"							//替代次序1
#define JK_SUBSTITUTE_Ratio1	 "JK8SubstitRatio"							//替代比1

using namespace std;




/**********************************************************
*
*    金卡  物料中间表字段
*
***********************************************************/
char jk_material_fields[45][45] = {
	"JK_ITEM_ID",			//	物料编码
	"JK_ITEM_NAME",			//	物料名称
	"JK_ITEM_SPEC_MODEL",	//	规格型号
	"JK_CLASS_CODE",		//	存货大类编码
	"JK_PROD_CODE",			//	产品识别号			//5
	"JK_UOM",				//	主计量单位
	"JK_CREATION_DATE",		//	申请日期
	"JK_SCRAP_DATE",		//	停用日期
	"JK_DESIGN_CODE",		//	图号信息
	"JK_IS_SCRAP",			//	是否失效			//10
	"JK_FROM",				//	发起人
	"JK_TRANS_TIME",		//	传递时间
	"JK_STATUS",			//	接收状态
	"JK_ERROR_MSG",			//	错误信息
	"JK_OPERATE_TIME",		//	接收时间			//15
	"JK_PUID",				//	唯一编号
	"JK_FROM_SYS",			//	传递方
	"JK_ATTR_1",			//	扩展字段2
	"JK_MATERIAL_STATUS",			//	2018.12.7物料状态
	"JK_REMARKS",			//	扩展字段3			//20
	"JK_PRODUCT_IDNO",			//	扩展字段4
	"JK_ITEM_REV",			//	扩展字段5 2019.11.19版本信息
	"JK_ATTR_6",			//	扩展字段6
	"JK_ATTR_7",			//	扩展字段7
	"JK_ATTR_8",			//	扩展字段8			//25
	"JK_CPSBH",			//	扩展字段9			2019.04.11产品识别号
	"JK_ATTR_10",			//	扩展字段10			//27	
	"JK_UNIT_WEIGHT",		//  "jk8UnitWeight单位重量"		 (2017.8.28中间表新加18个字段)
	"JK_UNIT_VOLUME",		//  "jk8UnitVolume单位体积"		
	"JK_DOMSC_MARKET",		//   jk8IsDomesticMarket是否内销 //30		
	"JK_CONSUM",			//  "jk8Isconsumables是否耗用"		
	"JK_IS_BUY",			//  "jk8IsBuy是否采购"		
	"JK_IS_MAKE",			//  "jk8IsMake是否自制"		
	"JK_OUT_SOURCE",		//	"jk8IsOutsource是否委外"		
	"JK_ACCOUNT_SET",		//	"jk8AccountSet默认账套"		//35
	"JK_BUSINESS_TYPE",		//	"jk8BusinessType业务类型"		
	"JK_BUYER",				//  "jk8Buyer采购员"		
	"JK_PURLEAD_TIME",		//	"jk8PurLeadTime固定提前期"		
	"JK_SAFE_STOCK",		//	"jk8SafeStock安全库存"		
	"JK_SUPPLY_TYPE1",		//	"jk8SupplyType1供应类型"	//40	
	"JK_WARE_HOUSE1",		//	"jk8Warehouse1默认仓库"		  
	"JK_INNTRANS_COE",		//	"jk8InnTransCoe内部交易价格系数"		
	"JK_HOUSE_KEEPER",		//	"jk8WarehouseKeeper库管员"		 
	"JK_IS_INNTRANS",		//	"jk8IsInnTrans是否内部交易"		 
	"JK_PLAN_METHOD"		//	"jk8PlanMethod计划方式"		//45 "LR"
	
	 
};


/**********************************************************
*
*    金卡  物料存储最小单位
*
***********************************************************/
typedef struct{
	string JK_ITEM_ID;			//	物料编码					//item_id
	string JK_ITEM_NAME;		//	物料名称					//object_name
	string JK_ITEM_SPEC_MODEL;	//	规格型号					//jk8SpecModel(rev)
	string JK_CLASS_CODE;		//	存货大类编码				//jk8StockBigTypeNo(rev)
	string JK_PROD_CODE;		//	产品识别号			//5		//jk8TechModel(rev)
	string JK_UOM;				//	主计量单位					//uom_tag(item)
	string JK_CREATION_DATE;	//	申请日期					//now_date(system)
	string JK_SCRAP_DATE;		//	停用日期					//
	string JK_DESIGN_CODE;		//	图号信息					//
	string JK_IS_SCRAP;			//	是否失效			//10	//
	string JK_FROM;				//	发起人						//current_user_name
	string JK_TRANS_TIME;		//	传递时间					//now_date(system)
	string JK_STATUS;			//	接收状态					//0-新建,1-正常接收,2-异常未接收,3-失败已重传,4-未接收重传
	string JK_ERROR_MSG;		//	错误信息					//erp
	string JK_OPERATE_TIME;		//	接收时间			//15	//erp
	string JK_PUID;				//	唯一编号					//puid
	string JK_FROM_SYS;			//	传递方						//默认"TC"
	string JK_ATTR_1;			//	扩展字段2
	string JK_MATERIAL_STATUS;			//	物料状态（2018.12.7）
	string JK_REMARKS;			//	扩展字段3			//20
	string JK_PRODUCT_IDNO;			//	扩展字段4
	string JK_ITEM_REV;			//	扩展字段5 2019.11.19版本信息
	string JK_ATTR_6;			//	扩展字段6
	string JK_ATTR_7;			//	扩展字段7
	string JK_ATTR_8;			//	扩展字段8			//25
	string JK_CPSBH;			//	扩展字段9    2019.04.11存储产品识别号
	string JK_ATTR_10;			//	扩展字段10			//27
	string 	JK_UNIT_WEIGHT;   	//单位重量   (2017.8.28新加18条表单属性)
	string 	JK_UNIT_VOLUME;   	//单位体积
	string 	JK_DOMSC_MARKET;   	//是否内销
	string 	JK_CONSUM	;   	//是否耗用
	string 	JK_IS_BUY	;   	//是否采购
	string 	JK_IS_MAKE	;   	//是否自制
	string 	JK_OUT_SOURCE;   	//是否委外
	string 	JK_ACCOUNT_SET;   	//默认账套
	string 	JK_BUSINESS_TYPE;   //业务类型
	string 	JK_BUYER	;   	//采购员
	string 	JK_PURLEAD_TIME;   	//固定提前期
	string 	JK_SAFE_STOCK;   	//安全库存
	string 	JK_SUPPLY_TYPE1;   	//供应类型
	string 	JK_WARE_HOUSE1;   	//默认仓库
	string 	JK_INNTRANS_COE;   	//内部交易价格系数
	string 	JK_HOUSE_KEEPER;   	//库管员
	string 	JK_IS_INNTRANS;   	//是否内部交易
	string 	JK_PLAN_METHOD;   	//计划方式
	
}JK_MATERIAL_STRUCT;



/**********************************************************
*
*   金卡  BOM_P 结构中间表字段
*
***********************************************************/
char jk_p_bom_fields[24][45] = {
	"JK_BOM_ID",				//	母件编码   
	"JK_BOM_REV",				//视图版本
	"JK_OWNING_USER",			//	所有者（用户名称）
	"JK_RATE",					//	母件损耗率
	"JK_CREATION_DATE",			//	生效日期		//5
	"JK_SCRAP_DATE",			//	失效日期
	"JK_IS_SCRAP",				//	是否失效
	"JK_FROM",					//	发起人
	"JK_TRANS_TIME",			//	传递时间
	"JK_STATUS",				//	接收状态		//10
	"JK_ERROR_MSG",				//	错误信息
	"JK_OPERATE_TIME",			//	接收时间
	"JK_PUID",					//	唯一编号
	"JK_FROM_SYS",				//	传递方
	"JK_ATTR_1",				//	扩展字段1		//15
	"JK_ATTR_2",				//	扩展字段2
	"JK_ATTR_3",				//	扩展字段3
	"JK_ATTR_4",				//	扩展字段4
	"JK_ATTR_5",				//	扩展字段5
	"JK_ATTR_6",				//	扩展字段6		//20
	"JK_ATTR_7",				//	扩展字段7
	"JK_ATTR_8",				//	扩展字段8
	"JK_ATTR_9",				//	扩展字段9
	"JK_ATTR_10"				//	扩展字段10		//24
};


/********************************************************
*
*   金卡   BOM_P 结构存储最小单位
*
*********************************************************/
typedef struct{
	string JK_BOM_ID;			//	母件编码   
	string JK_BOM_REV;			//视图版本
	string JK_OWNING_USER;		//	所有者（用户名称）
	string JK_RATE;				//	母件损耗率
	string JK_CREATION_DATE;	//	生效日期		//5
	string JK_SCRAP_DATE;		//	失效日期
	string JK_IS_SCRAP;			//	是否失效
	string JK_FROM;				//	发起人
	string JK_TRANS_TIME;		//	传递时间
	string JK_STATUS;			//	接收状态		//10
	string JK_ERROR_MSG;		//	错误信息
	string JK_OPERATE_TIME;		//	接收时间
	string JK_PUID;				//	唯一编号
	string JK_FROM_SYS;			//	传递方
	string JK_ATTR_1;			//	扩展字段1		//15
	string JK_ATTR_2;			//	扩展字段2
	string JK_ATTR_3;			//	扩展字段3
	string JK_ATTR_4;			//	扩展字段4
	string JK_ATTR_5;			//	扩展字段5
	string JK_ATTR_6;			//	扩展字段6		//20
	string JK_ATTR_7;			//	扩展字段7
	string JK_ATTR_8;			//	扩展字段8
	string JK_ATTR_9;			//	扩展字段9
	string JK_ATTR_10;			//	扩展字段10		//24
}JK_P_BOM_STRUCT;


/**********************************************************
*
*   金卡  BOM_C结构中间表字段
*
***********************************************************/
char jk_c_bom_fields[18][45] = {
	"JK_BOM_ID",				//	母件编码
	"JK_BOM_REV",				//	BOM视图版本
	"JK_BOM_CID",				//	子件编码
	"JK_SUPPLY_TYPE",			//	供应类型
	"JK_WAREHOUSE",				//	仓库				//5
	"JK_QUANTITY",				//	基础用量/用量
	"JK_REMARK",				//	备注说明
	"JK_ATTR_1",				//	扩展字段1			
	"JK_ATTR_2",				//	扩展字段2
	"JK_ATTR_3",				//	扩展字段3			//10
	"JK_ATTR_4",				//	扩展字段4
	"JK_ATTR_5",				//	扩展字段5
	"JK_ATTR_6",				//	扩展字段6			
	"JK_ATTR_7",				//	扩展字段7
	"JK_ATTR_8",				//	扩展字段8			//15
	"JK_ATTR_9",				//	扩展字段9
	"JK_ATTR_10",				//	扩展字段10			//17
	"JK_BOM_CWR"
};


/********************************************************
*
*   金卡   BOM_C结构存储最小单位
*
*********************************************************/
typedef struct{
	string JK_BOM_ID;			//	母件编码
	string JK_BOM_REV;			//	BOM视图版本
	string JK_BOM_CID;			//	子件编码
	string JK_SUPPLY_TYPE;		//	供应类型
	string JK_WAREHOUSE;		//	仓库				//5
	string JK_QUANTITY;			//	基础用量/用量
	string JK_REMARK;			//	备注说明
	string JK_ATTR_1;			//	扩展字段1			
	string JK_ATTR_2;			//	扩展字段2
	string JK_ATTR_3;			//	扩展字段3			//10
	string JK_ATTR_4;			//	扩展字段4
	string JK_ATTR_5;			//	扩展字段5
	string JK_ATTR_6;			//	扩展字段6			
	string JK_ATTR_7;			//	扩展字段7
	string JK_ATTR_8;			//	扩展字段8			//15
	string JK_ATTR_9;			//	扩展字段9
	string JK_ATTR_10;			//	扩展字段10			//17
	string JK_BOM_CWR;
}JK_C_BOM_STRUCT;



/**********************************************************
*
*   金卡  BOM_SUB 结构中间表字段
*
***********************************************************/
char jk_sub_bom_fields[17][45] = {
	"JK_BOM_ID",					//	母件编码
	"JK_BOM_REV",					//	BOM视图版本
	"JK_BOM_CID",					//	子件编码
	"JK_SUBSTITUTE_PART_ID",		//	替代件编码
	"JK_SUBSTITUTE_PART_INDEX",		//	替代件次序		//5
	"JK_SUBSTITUTE_PART_RATIO",		//	替代件比例
	"JK_SUBSTITUTE_PART_DATE",		//	替代件生效时间
	"JK_IS_GLOBAL",					//	扩展字段1		
	"JK_ATTR_2",					//	扩展字段2
	"JK_ATTR_3",					//	扩展字段3		//10
	"JK_ATTR_4",					//	扩展字段4
	"JK_ATTR_5",					//	扩展字段5
	"JK_ATTR_6",					//	扩展字段6		
	"JK_ATTR_7",					//	扩展字段7
	"JK_ATTR_8",					//	扩展字段8		//15
	"JK_ATTR_9",					//	扩展字段9
	"JK_ATTR_10"	 			    //扩展字段10		//17
};


/********************************************************
*
*   金卡   BOM_SUB 结构存储最小单位
*
*********************************************************/
typedef struct{
	string JK_BOM_ID;					//	母件编码
	string JK_BOM_REV;					//	BOM视图版本
	string JK_BOM_CID;					//	子件编码
	string JK_SUBSTITUTE_PART_ID;		//	替代件编码
	string JK_SUBSTITUTE_PART_INDEX;	//	替代件次序		//5
	string JK_SUBSTITUTE_PART_RATIO;	//	替代件比例
	string JK_SUBSTITUTE_PART_DATE;		//	替代件生效时间
	string JK_IS_GLOBAL;					//	扩展字段1		
	string JK_ATTR_2;					//	扩展字段2
	string JK_ATTR_3;					//	扩展字段3		//10
	string JK_ATTR_4;					//	扩展字段4
	string JK_ATTR_5;					//	扩展字段5
	string JK_ATTR_6;					//	扩展字段6		
	string JK_ATTR_7;					//	扩展字段7
	string JK_ATTR_8;					//	扩展字段8		//15
	string JK_ATTR_9;					//	扩展字段9
	string JK_ATTR_10;					//	扩展字段10		//17
}JK_SUB_BOM_STRUCT;


int sum(int y,int m,int d)
{
	unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	int i,s=0;
	for(i=1;i<y;i++)
		if(i%4==0 && i%100!=0 || i%400==0)
			s+=366;//闰年
		else
			s+=365;//平年
	if(y%4==0 && y%100!=0 || y%400==0)
		x[2]=29;
	for(i=1;i<m;i++)
		s+=x[i];//整月的天数
	s+=d;//日的天数
	return s;//返回总天数,相对公元1年
}






/**********************************************************
*
*    金卡  物料全局替代件中间表字段
*
***********************************************************/
char JK_RECORD_SUBSTIT_fields[4][45] = {
	"NO",			//	物料编码
	"SUBSTITNO",			//	全局替代件编码
	"STATES" ,	//	状态
	"SUB_TRANS_TIME" //传递时间
};


/**********************************************************
*
*    金卡  物料全局替代件
*
***********************************************************/
typedef struct{
	string NO;			//	物料编码					
	string SUBSTITNO;		//	全局替代件编码					
	string STATES;	//	状态	
	string SUB_TRANS_TIME;//传递时间

}JK_RECORD_SUBSTIT_T;
