#include "jk_custom.h" #include "tc_log.h" #include #include "hx_custom.h" typedef struct{ string jk8ProductType;//产品类型 string jk8ProjectNO;// 项目编号 string jk8ProjectName;// 项目名称 string jk8ProductModNO;// 产品型号 string jk8ProductIdentifyNO;// 识别号 string jk8ProductName;//产品名称 string jk8BMManufactor;//基表厂家 string jk8BMMaterial;//基表材质 string jk8ContrlCompType;//控制器组件类型 string jk8Note;//备注 string jk8Applicant;//申请人 string jk8RecordDate;//登记日期 string jk8Status;//状态 string jk8ProductTypePMN;//产品类型 string jk8PipeDSpec;//管径规格 string jk8CommunicateMode;//通信方式 string jk8Structure;//结构 }JK_WATER_SUMMARY_STRUCT; /** * 设置汇总表属性 */ void JK_set_water_summary_form_prop(tag_t form_tag,vector bean_vec){ WriteLog_jk("开始设置汇总表属性\n"); int i = 0,j=0 ; int prop_count = 16; char ** values[16]; if(bean_vec.size() > 0){ for(i = 0 ;i < prop_count;i++){ values[i] =(char**) MEM_alloc(sizeof(char*)*bean_vec.size()); for(j =0;j < bean_vec.size();j++){ values[i][j] = (char *) MEM_alloc(sizeof(char)*256); } } for(i = 0 ;i < bean_vec.size();i++){ JK_WATER_SUMMARY_STRUCT bean = bean_vec[i]; strcpy(values[0][i],bean.jk8ProductTypePMN.c_str());//产品类型 strcpy(values[1][i],bean.jk8ProjectNO.c_str());// 项目编号 strcpy(values[2][i],bean.jk8ProjectName.c_str());// 项目名称 strcpy(values[3][i],bean.jk8ProductModNO.c_str());// 产品型号 strcpy(values[4][i],bean.jk8ProductIdentifyNO.c_str());// 识别号 5 strcpy(values[5][i],bean.jk8ProductName.c_str());// 产品名称 strcpy(values[6][i],bean.jk8BMManufactor.c_str());// 基表厂家 strcpy(values[7][i],bean.jk8BMMaterial.c_str());// 基表材质 strcpy(values[8][i],bean.jk8ContrlCompType.c_str());;// 控制器组件类型 strcpy(values[9][i],bean.jk8Note.c_str());// 备注 10 strcpy(values[10][i],bean.jk8Applicant.c_str());// 申请人 strcpy(values[11][i],bean.jk8RecordDate.c_str());// 登记日期 strcpy(values[12][i],bean.jk8Status.c_str());// 状态 //strcpy(values[13][i],bean.jk8ProductTypePMN.c_str());// 产品类型 strcpy(values[13][i],bean.jk8PipeDSpec.c_str());// 管径规格 strcpy(values[14][i],bean.jk8CommunicateMode.c_str());// 通信方式 strcpy(values[15][i],bean.jk8Structure.c_str());// 结构 } } ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductTypePMN",bean_vec.size(),values[0]));//产品类型 ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectNO",bean_vec.size(),values[1]));// 项目编号 ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectName",bean_vec.size(),values[2]));// 项目名称 ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductModNO",bean_vec.size(),values[3]));// 产品型号 ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductIdentifyNO",bean_vec.size(),values[4]));// 识别号 ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductName",bean_vec.size(),values[5]));// 产品名称 ITKCALL(AOM_set_value_strings(form_tag,"jk8BMManufactor",bean_vec.size(),values[6]));// 基表厂家 ITKCALL(AOM_set_value_strings(form_tag,"jk8BMMaterial",bean_vec.size(),values[7]));// 基表材质 ITKCALL(AOM_set_value_strings(form_tag,"jk8ContrlCompType",bean_vec.size(),values[8]));// 控制器组件类型 ITKCALL(AOM_set_value_strings(form_tag,"jk8Note",bean_vec.size(),values[9]));// 备注 ITKCALL(AOM_set_value_strings(form_tag,"jk8Applicant",bean_vec.size(),values[10]));// 申请人 ITKCALL(AOM_set_value_strings(form_tag,"jk8RecordDate",bean_vec.size(),values[11]));// 登记日期 ITKCALL(AOM_set_value_strings(form_tag,"jk8Status",bean_vec.size(),values[12]));// 状态 //ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductTypePMN",bean_vec.size(),values[13]));// 产品类型 ITKCALL(AOM_set_value_strings(form_tag,"jk8PipeDSpec",bean_vec.size(),values[13]));// 管径规格 ITKCALL(AOM_set_value_strings(form_tag,"jk8CommunicateMode",bean_vec.size(),values[14]));// 通信方式 ITKCALL(AOM_set_value_strings(form_tag,"jk8Structure",bean_vec.size(),values[15]));// 结构 ITKCALL(AOM_save(form_tag)); ITKCALL(AOM_refresh(form_tag,false)); ITKCALL(AOM_unlock(form_tag,0)); WriteLog_jk("传递汇总表结束,保存数据完成\n"); printf("------------传递汇总表0000-----------------"); //释放资源 /*for(i = 0 ;i &bean_vec,int * isOk){ int prop_count = 16; int count[16],sum_count =0; char ** form_value[16]; //POM_AM__set_application_bypass(true); *isOk = 1; printf("获取汇总表单【%d】的属性\n",form_tag); ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductTypePMN",&count[0],&form_value[0]));//产品类型 sum_count = count[0]; ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectNO",&count[1],&form_value[1]));// 项目编号 ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectName",&count[2],&form_value[2]));// 项目名称 ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductModNO",&count[3],&form_value[3]));// 产品型号 ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductIdentifyNO",&count[4],&form_value[4]));// 识别号 ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductName",&count[5],&form_value[5]));// 产品名称 ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMManufactor",&count[6],&form_value[6]));// 基表厂家 ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMMaterial",&count[7],&form_value[7]));// 基表材质 ITKCALL(AOM_ask_value_strings(form_tag,"jk8ContrlCompType",&count[8],&form_value[8]));// 控制器组件类型 ITKCALL(AOM_ask_value_strings(form_tag,"jk8Note",&count[9],&form_value[9]));// 备注 ITKCALL(AOM_ask_value_strings(form_tag,"jk8Applicant",&count[10],&form_value[10]));// 申请人 ITKCALL(AOM_ask_value_strings(form_tag,"jk8RecordDate",&count[11],&form_value[11]));// 登记日期 ITKCALL(AOM_ask_value_strings(form_tag,"jk8Status",&count[12],&form_value[12]));// 状态 //ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductTypePMN",&count[13],&form_value[13]));// 产品类型 ITKCALL(AOM_ask_value_strings(form_tag,"jk8PipeDSpec",&count[13],&form_value[13]));// 管径规格 ITKCALL(AOM_ask_value_strings(form_tag,"jk8CommunicateMode",&count[14],&form_value[14]));// 通信方式 ITKCALL(AOM_ask_value_strings(form_tag,"jk8Structure",&count[15],&form_value[15]));// 结构 for(int i = 0 ;i < (prop_count-1);i++){ if(count[i] !=count[i+1]){ *isOk = 0; printf("属性不正确=>\n"); } } printf("222222222222222222=>\n"); if( *isOk ==1){ printf("3333333333333333=>\n"); for(int i = 0 ;i \n"); for(int i = 0 ;i < prop_count; i++){ for(int j = 0;j < count[i];j++){ if(form_value[i][j]!=NULL){ MEM_free(form_value[i][j]); form_value[i][j] =NULL; } } if(form_value[i]!=NULL){ MEM_free(form_value[i]); form_value[i] = NULL; } } //POM_AM__set_application_bypass(false); printf("555555555555=>\n"); } /** * 获取四张扩展表的属性 * */ void JK_get_water_form_prop(tag_t form_tag,JK_WATER_SUMMARY_STRUCT &bean,char *form_type){ char * form_value[16]; int prop_count = 16; WriteLog_jk("开始获取单张表属性 \n"); tag_t user_tag =NULLTAG; ITKCALL(AOM_ask_value_tag(form_tag,"owning_user",&user_tag)); if(user_tag!=NULLTAG) { ITKCALL(AOM_ask_value_string(user_tag,"user_name",&form_value[10]))//TODO 申请人 }else{ form_value[10] = (char *)MEM_alloc(sizeof(char)*128); } form_value[11] = (char *)MEM_alloc(sizeof(char)*128);//TODO 登记日期 //ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[14]));// 登记日期 time_t now; struct tm *p; time(&now); p = localtime(&now); sprintf(form_value[11], "%d年%d月%d日", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ); cout<<"1-----------"<tm_year,p->tm_mon+1 ,p->tm_mday); //sprintf(endDate,"%04d-%d-%02d 23:59", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday); sprintf(tc_log_file_name, "%s\\jk_water_hzb_log_[%d-%d-%d-%d-%02d].txt",getenv("TEMP"),1900+p->tm_year,p->tm_mon+1 ,p->tm_mday,p->tm_hour,p->tm_min ); printf("tc_log_file_name=%s\n",tc_log_file_name); CreateLogFile_jk(tc_log_file_name); EPM_decision_t decision = EPM_go; int ifail = ITK_ok,arg_cnt = 0,i = 0,att_cnt = 0; tag_t task_tag = NULLTAG ,rootTask_tag = NULLTAG, *attachments =NULL,summary_form_tag = NULLTAG; char *arg = NULL,*argflag = NULL, *argvalue = NULL,type_class[WSO_object_type_size_c+1] ="\0",*form_value = NULL; vector bean_vec; //用来获取汇总表的PUID vector pref_vec; getPrefStrings("JK_WATER_SQB_FORM_PUID",TC_preference_site, pref_vec);//w6UxvPI4YvbLjA if(pref_vec.size() > 0){ ITK__convert_uid_to_tag(pref_vec[0].c_str(),&summary_form_tag); if(summary_form_tag == NULLTAG){ WriteLog_jk("PUID[%s]不能转换成对象\n",pref_vec[0].c_str()); CloseLog_jk(); printf("PUID[%s]不能转换成对象\n",pref_vec[0].c_str()); return EPM_nogo; } printf("找到了汇总表\n"); int isOk = 1; logical is_reserved; POM_AM__set_application_bypass(true); ITKCALL(RES_is_checked_out(summary_form_tag,&is_reserved)); if (is_reserved) { WriteLog_jk("汇总表签出,开始签入\n"); ITKCALL(RES_checkin(summary_form_tag)); } ITKCALL(AOM_lock(summary_form_tag)); ITKCALL(AOM_refresh(summary_form_tag,false)); POM_AM__set_application_bypass(false); JK_get_water_summary_form_prop(summary_form_tag,bean_vec,&isOk); if(isOk == 0){ ITKCALL(AOM_unlock(summary_form_tag)); printf("PUID[%s]表单属性不正确\n",pref_vec[0].c_str()); WriteLog_jk("PUID[%s]表单属性不正确\n",pref_vec[0].c_str()); CloseLog_jk(); return EPM_nogo; } }else{ printf("请配置首选项[JK_WATER_SQB_FORM_PUID]\n"); WriteLog_jk("请配置首选项[JK_WATER_SQB_FORM_PUID]\n"); CloseLog_jk(); return EPM_nogo; } //获取当前触发的任务 task_tag = msg.task; //获取根流程节点 ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); //获取目标引用对象 ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); //循环目标对象 for(i = 0;i < att_cnt ; i++){ //获取对象的类型 /********************************************** * 对象类型:JK8DerPIdenNOAppForm * 对象类型:JK8SpecPINOAppForm * 对象类型:JK8NewPIdenNOAppForm * 对象类型:JK8NPModINOAppForm * 对象类型:JK8ExtPIdenNOAppForm **********************************************/ ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); WriteLog_jk("对象类型:%s \n",type_class); printf("对象类型:%s \n",type_class); if(strcmp(type_class,"JK8DWPIdenNOAppForm") ==0 //衍生产品识别号申请表 ||strcmp(type_class,"JK8WSpecPINOAppForm") ==0 //特殊要求产品识别号申请表 ||strcmp(type_class,"JK8NWPIdenNOAppForm") ==0 //新产品识别号申请表 ||strcmp(type_class,"JK8WaterPModAppForm") ==0//新产品型号与识别号申请表 ) { WriteLog_jk("对象类型符合,开始执行代码 \n"); char *name_fo; ITKCALL(AOM_ask_value_string(attachments[i],"object_name",&name_fo)); WriteLog_jk("对象名称:%s \n",name_fo); char *sbhstr,*cpxhstr; if(strcmp(type_class,"JK8WaterPModAppForm") ==0){ ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductModNO",&cpxhstr));// 产品型号 if(strcmp(cpxhstr,"") ==0){ printf("产品型号为空,无法传递\n"); ITKCALL(AOM_unlock(summary_form_tag)); WriteLog_jk("产品型号为空,无法传递\n"); CloseLog_jk(); return EPM_nogo; } }else{ ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductIdentifyNO",&sbhstr));// 识别号 if(strcmp(sbhstr,"") ==0){ printf("识别号为空,无法传递\n"); ITKCALL(AOM_unlock(summary_form_tag)); WriteLog_jk("识别号为空,无法传递\n"); CloseLog_jk(); return EPM_nogo; } } JK_WATER_SUMMARY_STRUCT bean ; //获取单张表的属性 JK_get_water_form_prop(attachments[i],bean,type_class); cout<<"5-----------"<