逻辑:查询历史提交的考勤流程如加班流程,然后当前提交的流程与历史提交的流程是否存在有交集时间段。如果流程过多,可以限制近两三个月的数据对比。我当前的流程是对比全部历史数据,有交集的时间段不让提交
package com.customcode.action;
import com.customcode.util.XmActionLog;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
/**
* @author Yuyb
* @version 1.0
* 类说明:加班
* @date 2020/6/10 17:58
*/
public class HR02_RedifferenTime implements Action {
public String execute(RequestInfo request) {
XmActionLog alog = new XmActionLog();
String actionName="HR02_RedifferenTime";//日志文件夹名称
alog.info(actionName,"====================================START=========================================");
BaseBean baseBean = new BaseBean();
RecordSet rs = new RecordSet();
RecordSet rs_00 = new RecordSet();
RecordSet rs_hr = new RecordSet();
String requestId = request.getRequestid(); //获取请求requestId
String maintable = request.getRequestManager().getBillTableName();
String wfid =request.getWorkflowid();
alog.info(actionName,"wfid=="+wfid);
alog.info(actionName,"requestId=="+requestId);
alog.info(actionName,"maintablestar=="+maintable);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String sql="select jbrq,jbsj,jsrq,jssj,Create_By from "+maintable+" where requestid="+requestId;
rs.execute(sql);
alog.info(actionName,"sql=="+sql);
while(rs.next()){
String jbrq=rs.getString("jbrq");
String jbsj=rs.getString("jbsj");
String jsrq=rs.getString("jsrq");
String jssj=rs.getString("jssj");
String Create_By=rs.getString("Create_By");
String tjksrq = jbrq+" "+jbsj;
String tjjsrq = jsrq+" "+jssj;
alog.info(actionName,"tjksrq=="+tjksrq+",tjjsrq=="+tjjsrq);
try {
Long tjksrq_hm=sdf.parse(tjksrq).getTime();//转为毫秒
Long tjjsrq_hm=sdf.parse(tjjsrq).getTime();//转为毫秒
String sql_00="select jbrq,jbsj,jsrq,jssj,Create_By from "+maintable+" " +
"where Create_By="+Create_By+" and Flow_No is not null and requestid <>"+requestId;
rs_00.execute(sql_00);
alog.info(actionName,"sql_00=="+sql_00);
while(rs_00.next()){
String jbrq_old=rs_00.getString("jbrq");
String jbsj_old=rs_00.getString("jbsj");
String jbjsrq_old=rs_00.getString("jsrq");
String jssj_old=rs_00.getString("jssj");
String ksrq_old=jbrq_old+" "+jbsj_old;
String jsrq_old=jbjsrq_old+" "+jssj_old;
Long ksrq_old_hm=sdf.parse(ksrq_old).getTime();//转为毫秒
Long jsrq_old_hm=sdf.parse(jsrq_old).getTime();//转为毫秒
alog.info(actionName,"ksrq_old=="+ksrq_old+",jsrq_old=="+jsrq_old);
if(tjksrq_hm>=jsrq_old_hm || tjjsrq_hm <= ksrq_old_hm){
alog.info(actionName, "true==>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end" );
//return "1";
}else{
// String sql_hr="select lastname from hrmresource where id="+Create_By;
// rs_hr.execute(sql_hr);
// String name="";
// while (rs_hr.next()){
// name=rs_hr.getString("lastname");
// }
request.getRequestManager().setMessagecontent("该时间段流程已经提交过,请勿重复提交!");
request.getRequestManager().setMessageid("1");
alog.info(actionName, "false==>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end" );
return "0";
}
}
} catch (ParseException e) {
e.printStackTrace();
alog.info(actionName, "ParseException==" + e.getMessage());
request.getRequestManager().setMessagecontent("有加班单存在异常,请联系OA管理员!");
request.getRequestManager().setMessageid("1");
return "0";
}
}
alog.info(actionName,"====================================END=========================================");
return "1";
}
}