You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

336 lines
8.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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;
}