|
|
#include "epm_handler_common.h"
|
|
|
#include <tccore\aom_prop.h>
|
|
|
#include <tccore\aom.h>
|
|
|
#include "dos.h"
|
|
|
#include "sstream"
|
|
|
#include <string>
|
|
|
#include <stddef.h>
|
|
|
#include "time.h"
|
|
|
#include "stdio.h"
|
|
|
#include<iostream>
|
|
|
extern "C" int POM_AM__set_application_bypass(logical bypass);
|
|
|
using namespace std;
|
|
|
|
|
|
#define DOFREE(obj) \
|
|
|
{ \
|
|
|
if(obj) \
|
|
|
{ \
|
|
|
MEM_free(obj); \
|
|
|
obj = NULL; \
|
|
|
} \
|
|
|
}
|
|
|
|
|
|
string intToString(int a){
|
|
|
stringstream ss;
|
|
|
ss << a;
|
|
|
string str = ss.str();
|
|
|
return str;
|
|
|
}
|
|
|
|
|
|
int JL_Add_FinishTime(EPM_action_message_t msg){
|
|
|
int ifail = ITK_ok,count = 0;
|
|
|
tag_t *sub = NULLTAG,rootTask = NULLTAG;
|
|
|
char *name = NULL;
|
|
|
cout << "开始执行" << endl;
|
|
|
//获取任务对象
|
|
|
EPM_ask_root_task(msg.task, &rootTask);
|
|
|
//得到当前时间
|
|
|
|
|
|
struct tm *local;
|
|
|
time_t t;
|
|
|
t=time(NULL);
|
|
|
local=localtime(&t);
|
|
|
cout << local <<endl;
|
|
|
cout << local->tm_year <<endl;
|
|
|
cout << local->tm_mon <<endl;
|
|
|
cout << local->tm_mday <<endl;
|
|
|
cout << local->tm_hour <<endl;
|
|
|
cout << local->tm_min<<endl;
|
|
|
cout << local->tm_sec<<endl;
|
|
|
cout << local->tm_wday<<endl;
|
|
|
char year[SS_MAXPATHLEN] = "",
|
|
|
month[SS_MAXPATHLEN] = "",
|
|
|
day[SS_MAXPATHLEN] = "",
|
|
|
hour[SS_MAXPATHLEN] = "",
|
|
|
min[SS_MAXPATHLEN] = "",
|
|
|
nowTime[4096] = "";
|
|
|
//下午接受,第二天完成
|
|
|
if(local->tm_hour > 12 && local->tm_hour <=23){
|
|
|
if(local->tm_mon == 0 || local->tm_mon == 2 || local->tm_mon == 4 ||
|
|
|
local->tm_mon == 6 || local->tm_mon == 7 || local->tm_mon == 9 ||
|
|
|
local->tm_mon == 11 ){
|
|
|
if(local->tm_wday == 5){
|
|
|
//该天是星期五(+3天)
|
|
|
if(local->tm_mday < 29){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+1);
|
|
|
sprintf(day, "%d", local->tm_mday+3);
|
|
|
}
|
|
|
//29号
|
|
|
else if(local->tm_mday == 29){
|
|
|
//12月
|
|
|
if(local->tm_mon == 11){
|
|
|
sprintf(year, "%d", local->tm_year+1901);
|
|
|
sprintf(month, "%d", 1);
|
|
|
sprintf(day, "%d", 1);
|
|
|
}
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 1);
|
|
|
}
|
|
|
}
|
|
|
//30号
|
|
|
else if(local->tm_mday == 30){
|
|
|
//12月
|
|
|
if(local->tm_mon == 11){
|
|
|
sprintf(year, "%d", local->tm_year+1901);
|
|
|
sprintf(month, "%d", 1);
|
|
|
sprintf(day, "%d", 2);
|
|
|
}
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 2);
|
|
|
}
|
|
|
}
|
|
|
//31号
|
|
|
else{
|
|
|
//12月
|
|
|
if(local->tm_mon == 11){
|
|
|
sprintf(year, "%d", local->tm_year+1901);
|
|
|
sprintf(month, "%d", 1);
|
|
|
sprintf(day, "%d", 3);
|
|
|
}
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 3);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
//不是星期五(+1天)
|
|
|
if(local->tm_mday < 31){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+1);
|
|
|
sprintf(day, "%d", local->tm_mday+1);
|
|
|
}
|
|
|
else{
|
|
|
//12月31号
|
|
|
if(local->tm_mon == 11){
|
|
|
sprintf(year, "%d", local->tm_year+1901);
|
|
|
sprintf(month, "%d", 1);
|
|
|
sprintf(day, "%d", 1);
|
|
|
}
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 1);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else if(local->tm_mon == 3 || local->tm_mon == 5 || local->tm_mon == 8 || local->tm_mon == 10){
|
|
|
if(local->tm_wday == 5){
|
|
|
if(local->tm_mday < 28){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+1);
|
|
|
sprintf(day, "%d", local->tm_mday+3);
|
|
|
}
|
|
|
//28号
|
|
|
else if(local->tm_mday == 28){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 1);
|
|
|
}
|
|
|
//29号
|
|
|
else if(local->tm_mday == 29){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 2);
|
|
|
}
|
|
|
//30号
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 3);
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
if(local->tm_mday < 30){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+1);
|
|
|
sprintf(day, "%d", local->tm_mday+1);
|
|
|
}
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//2月
|
|
|
else{
|
|
|
//判断是否是闰年(有29天)
|
|
|
int leap_year = local->tm_year+1900;
|
|
|
//闰年(有29天)
|
|
|
if((leap_year % 4 == 0 && leap_year % 100 != 0) || (leap_year % 400 == 0)){
|
|
|
if(local->tm_wday == 5){
|
|
|
if(local->tm_mday < 27){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+1);
|
|
|
sprintf(day, "%d", local->tm_mday+3);
|
|
|
}
|
|
|
//27号
|
|
|
else if(local->tm_mday == 27){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 1);
|
|
|
}
|
|
|
//28号
|
|
|
else if(local->tm_mday == 28){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 2);
|
|
|
}
|
|
|
//29号
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 3);
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
if(local->tm_mday < 29){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+1);
|
|
|
sprintf(day, "%d", local->tm_mday+1);
|
|
|
}
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//不是闰年(28天)
|
|
|
else{
|
|
|
if(local->tm_wday == 5){
|
|
|
if(local->tm_mday < 26){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+1);
|
|
|
sprintf(day, "%d", local->tm_mday+3);
|
|
|
}
|
|
|
//26号
|
|
|
else if(local->tm_mday == 26){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 1);
|
|
|
}
|
|
|
//27号
|
|
|
else if(local->tm_mday == 27){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 2);
|
|
|
}
|
|
|
//28号
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 3);
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
if(local->tm_mday < 28){
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+1);
|
|
|
sprintf(day, "%d", local->tm_mday+1);
|
|
|
}
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+2);
|
|
|
sprintf(day, "%d", 1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
sprintf(hour, "%d", 12);
|
|
|
}
|
|
|
//上午接受,下午完成
|
|
|
else{
|
|
|
sprintf(year, "%d", local->tm_year+1900);
|
|
|
sprintf(month, "%d", local->tm_mon+1);
|
|
|
sprintf(day, "%d", local->tm_mday);
|
|
|
sprintf(hour, "%d", 17);
|
|
|
//sprintf(min, "%d", local->tm_min);
|
|
|
}
|
|
|
|
|
|
|
|
|
//string year = intToString(local->tm_year+1900);
|
|
|
//string month = intToString(local->tm_mon+1);
|
|
|
//string day = intToString(local->tm_mday);
|
|
|
//string hour = intToString(local->tm_hour);
|
|
|
//string min = intToString(local->tm_min);
|
|
|
//string nowTime = year + "年"+month+"月"+day+"日" + hour+":"+min;
|
|
|
cout << nowTime <<endl;
|
|
|
EPM_ask_name2(msg.task,&name);
|
|
|
cout <<name <<endl;
|
|
|
|
|
|
strcat(nowTime,year);
|
|
|
strcat(nowTime,"年");
|
|
|
strcat(nowTime,month);
|
|
|
strcat(nowTime,"月");
|
|
|
strcat(nowTime,day);
|
|
|
strcat(nowTime,"日");
|
|
|
strcat(nowTime,hour);
|
|
|
strcat(nowTime,":");
|
|
|
strcat(nowTime,"00——");
|
|
|
strcat(nowTime,name);
|
|
|
strcat(nowTime,"\n");
|
|
|
|
|
|
|
|
|
//date_t date;
|
|
|
//AOM_ask_value_date(msg.task,"fnd0StartDate",&date);
|
|
|
//printf("%s\n",date.year);
|
|
|
//printf("%s\n",date.month);
|
|
|
//printf("%s\n",date.day);
|
|
|
//printf("%s\n",date.hour);
|
|
|
//printf("%s\n",date.minute);
|
|
|
//printf("%s\n",date.second);
|
|
|
local = NULL;
|
|
|
|
|
|
//EPM_ask_sub_tasks(msg.task,&count,&sub);
|
|
|
//cout<< count <<endl;
|
|
|
//for(int i=0;i<count;i++){
|
|
|
// char *name = NULL;
|
|
|
// EPM_ask_name2(sub[i],&name);
|
|
|
// cout<<name<<endl;
|
|
|
// DOFREE(name);
|
|
|
//}
|
|
|
|
|
|
//获取流程作业
|
|
|
tag_t job = NULLTAG;
|
|
|
EPM_ask_job(rootTask,&job);
|
|
|
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
//设置描述属性值
|
|
|
//先lock
|
|
|
AOM_lock(job);
|
|
|
//再set
|
|
|
char *old = NULL;
|
|
|
AOM_ask_value_string(job,"object_desc",&old);
|
|
|
strcat(nowTime,old);
|
|
|
AOM_set_value_string(job,"object_desc",nowTime);
|
|
|
//再save
|
|
|
AOM_save( job ) ;
|
|
|
//最后unlock
|
|
|
AOM_unlock( job ) ;
|
|
|
AOM_refresh( job,FALSE );
|
|
|
POM_AM__set_application_bypass(false);
|
|
|
|
|
|
cout << "执行完成" << endl;
|
|
|
return ifail;
|
|
|
} |