You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
345 lines
17 KiB
Plaintext
345 lines
17 KiB
Plaintext
1 year ago
|
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
|
||
|
<%@ page import="com.engine.kq.biz.KQGroupMemberComInfo" %>
|
||
|
<%@ page import="com.engine.kq.entity.KQGroupEntity" %>
|
||
|
<%@ page import="cn.hutool.core.date.DateUtil" %>
|
||
|
<%@ page import="weaver.general.Util" %>
|
||
|
<%@ page import="weaver.workflow.workflow.WorkflowComInfo" %>
|
||
|
<%@ page import="com.engine.kq.biz.KQWorkTime" %>
|
||
|
<%@ page import="com.engine.kq.entity.WorkTimeEntity" %>
|
||
|
<%@ page import="com.alibaba.fastjson.JSONObject" %>
|
||
|
<%@ page import="com.engine.kq.entity.TimeScopeEntity" %>
|
||
|
<%@ page import="org.apache.commons.lang.StringUtils" %>
|
||
|
<%@ page import="weaver.workflow.webservices.*" %>
|
||
|
<%@ page import="java.time.format.DateTimeFormatter" %>
|
||
|
<%@ page import="java.time.LocalDate" %>
|
||
|
<%@ page import="weaver.general.BaseBean" %>
|
||
|
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />
|
||
|
<jsp:useBean id="bb" class="weaver.general.BaseBean" />
|
||
|
<%
|
||
|
int sum = 0;
|
||
|
|
||
|
String requestid = "-1";
|
||
|
|
||
|
String resourceId = Util.null2String(request.getParameter("resourceId"));
|
||
|
String startDate = Util.null2String(request.getParameter("startDate"));
|
||
|
String endDate = Util.null2String(request.getParameter("endDate"));
|
||
|
String startTime = Util.null2String(request.getParameter("startTime"));
|
||
|
String endTime = Util.null2String(request.getParameter("endTime"));
|
||
|
|
||
|
List<String> cardDates = new ArrayList<>();
|
||
|
List<String> allDates = getAllDates(startDate, endDate);
|
||
|
|
||
|
bb.writeLog("--allDates: " + allDates );
|
||
|
|
||
|
for (String date : allDates) {
|
||
|
bb.writeLog("--date: " + date );
|
||
|
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo();
|
||
|
//根据考勤组判断是否开启外勤打卡
|
||
|
String outsidesign = ""; //人员所在考勤组是否开启外勤签到转考勤
|
||
|
KQGroupEntity kqGroupEntity = kqGroupMemberComInfo.getUserKQGroupInfo(resourceId, date);
|
||
|
if ( kqGroupEntity != null) {
|
||
|
outsidesign = kqGroupEntity.getOutsidesign();
|
||
|
}
|
||
|
bb.writeLog("--outsidesign: " + outsidesign );
|
||
|
if ( !"1".equals(outsidesign)) {
|
||
|
cardDates.add(date);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
bb.writeLog("--cardDates: " + cardDates );
|
||
|
|
||
|
String today = DateUtil.format(new Date(), "yyyy-MM-dd");
|
||
|
//获取补卡流程workflowid
|
||
|
String cardWorkflowId = Util.null2String(bb.getPropValue("syn_othersys_mfkj","cardWorkflowId"));
|
||
|
bb.writeLog("--cardWorkflowId: " + cardWorkflowId );
|
||
|
|
||
|
//获取申请人信息
|
||
|
String lastName = "";
|
||
|
String workCode = "";
|
||
|
String departmentId = "";
|
||
|
String jobTitle = "";
|
||
|
String acqLastNameSql = "select lastname, workCode, departmentId, jobTitle from hrmresource where id = ? ";
|
||
|
rs.executeQuery(acqLastNameSql, resourceId);
|
||
|
while (rs.next()) {
|
||
|
lastName = Util.null2String(rs.getString("lastname"));
|
||
|
workCode = Util.null2String(rs.getString("workCode"));
|
||
|
departmentId = Util.null2String(rs.getString("departmentId"));
|
||
|
jobTitle = Util.null2String(rs.getString("jobTitle"));
|
||
|
}
|
||
|
|
||
|
WorkflowComInfo workflowComInfo = new WorkflowComInfo();
|
||
|
KQWorkTime kqWorkTime = new KQWorkTime();
|
||
|
//流程基本信息
|
||
|
Map<String, String> workflowInfo = new HashMap<>();
|
||
|
String workflowname = workflowComInfo.getWorkflowname(cardWorkflowId);
|
||
|
String requestName = workflowname + "-" + lastName;
|
||
|
workflowInfo.put("requestName", requestName);
|
||
|
workflowInfo.put("requestLevel", "1");
|
||
|
workflowInfo.put("creatorId", resourceId);
|
||
|
workflowInfo.put("workflowId", cardWorkflowId);
|
||
|
workflowInfo.put("isNextFlow", "1");
|
||
|
|
||
|
bb.writeLog("--workflowInfo: " + workflowInfo );
|
||
|
|
||
|
//流程主表信息
|
||
|
Map<String, Object> mainTableInfo = new HashMap<>();
|
||
|
mainTableInfo.put("sqr", resourceId);
|
||
|
mainTableInfo.put("ygbh", workCode);
|
||
|
mainTableInfo.put("szbm", departmentId);
|
||
|
mainTableInfo.put("szzw", jobTitle);
|
||
|
mainTableInfo.put("sqrq", today);
|
||
|
|
||
|
bb.writeLog("--mainTableInfo: " + mainTableInfo );
|
||
|
|
||
|
try {
|
||
|
List<Map<String, Object>> detailTableInfos = new ArrayList<>();
|
||
|
if ( cardDates != null && cardDates.size() > 0) {
|
||
|
|
||
|
//流程明细表信息
|
||
|
if ( !startDate.equals(endDate)) {
|
||
|
for (String date : cardDates) {
|
||
|
//如果出差是多天的情况,那么只有开始日期的那天的开始卡是开始时间,其他的日期开始卡是取班次的开始时间
|
||
|
//获取当天班次,如果没有班次,按照开始时间处理
|
||
|
WorkTimeEntity workTime = kqWorkTime.getWorkTime(resourceId, date);
|
||
|
bb.writeLog("--workTime:" + JSONObject.toJSONString(workTime));
|
||
|
List<TimeScopeEntity> lsWorkTime = new ArrayList<>();
|
||
|
if (workTime != null) {
|
||
|
lsWorkTime = workTime.getWorkTime();//工作时间
|
||
|
}
|
||
|
if ( date.equals(startDate)) {
|
||
|
if (lsWorkTime != null && lsWorkTime.size() ==1 ) {
|
||
|
TimeScopeEntity workTimeEntity = lsWorkTime.get(0);
|
||
|
String shiftendTime = workTimeEntity.getEndTime();
|
||
|
if (StringUtils.isNotBlank(shiftendTime)) {
|
||
|
Map<String, Object> detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", date);
|
||
|
detailTableInfo.put("bklx", "0");//上班
|
||
|
detailTableInfo.put("bksj1", startTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", date);
|
||
|
detailTableInfo.put("bklx", "1");//下班
|
||
|
detailTableInfo.put("bksj1", shiftendTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
if ( !date.equals(endDate)) {
|
||
|
if (lsWorkTime != null && lsWorkTime.size() ==1 ) {
|
||
|
TimeScopeEntity workTimeEntity = lsWorkTime.get(0);
|
||
|
String shiftendTime = workTimeEntity.getEndTime();
|
||
|
String shiftbeginTime = workTimeEntity.getBeginTime();
|
||
|
if (StringUtils.isNotBlank(shiftendTime) && StringUtils.isNotBlank(shiftbeginTime)) {
|
||
|
Map<String, Object> detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", date);
|
||
|
detailTableInfo.put("bklx", "0");//上班
|
||
|
detailTableInfo.put("bksj1", shiftbeginTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", date);
|
||
|
detailTableInfo.put("bklx", "1");//下班
|
||
|
detailTableInfo.put("bksj1", shiftendTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
if (lsWorkTime != null && lsWorkTime.size() ==1 ) {
|
||
|
TimeScopeEntity workTimeEntity = lsWorkTime.get(0);
|
||
|
String beginTime = workTimeEntity.getBeginTime();
|
||
|
if (StringUtils.isNotBlank(beginTime)) {
|
||
|
Map<String, Object> detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", date);
|
||
|
detailTableInfo.put("bklx", "0");//上班
|
||
|
detailTableInfo.put("bksj1", beginTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", date);
|
||
|
detailTableInfo.put("bklx", "1");//下班
|
||
|
detailTableInfo.put("bksj1", endTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
} else {
|
||
|
Map<String, Object> detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", date);
|
||
|
detailTableInfo.put("bklx", "0");//上班
|
||
|
detailTableInfo.put("bksj1", startTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", date);
|
||
|
detailTableInfo.put("bklx", "1");//下班
|
||
|
detailTableInfo.put("bksj1", endTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
}
|
||
|
} else {
|
||
|
Map<String, Object> detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", date);
|
||
|
detailTableInfo.put("bklx", "0");//上班
|
||
|
detailTableInfo.put("bksj1", startTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", date);
|
||
|
detailTableInfo.put("bklx", "1");//下班
|
||
|
detailTableInfo.put("bksj1", endTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
Map<String, Object> detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", startDate);
|
||
|
detailTableInfo.put("bklx", "0");//上班
|
||
|
detailTableInfo.put("bksj1", startTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
detailTableInfo = new HashMap<>();
|
||
|
detailTableInfo.put("bkrq", startDate);
|
||
|
detailTableInfo.put("bklx", "1");//下班
|
||
|
detailTableInfo.put("bksj1", endTime);
|
||
|
detailTableInfo.put("bkyy", "5");
|
||
|
detailTableInfos.add(detailTableInfo);
|
||
|
}
|
||
|
bb.writeLog("--detailTableInfos:" + detailTableInfos);
|
||
|
|
||
|
requestid = WorkflowCreate(workflowInfo, mainTableInfo, detailTableInfos);
|
||
|
} else {
|
||
|
bb.writeLog("申请人所在考勤组在申请日期中没有关闭外勤打卡的考勤日期,不创建补卡流程");
|
||
|
}
|
||
|
|
||
|
}catch (Exception e) {
|
||
|
bb.writeLog(" -- Exception:" + e);
|
||
|
}
|
||
|
|
||
|
|
||
|
sum++;
|
||
|
|
||
|
%>
|
||
|
|
||
|
<%!
|
||
|
/**
|
||
|
* 创建流程
|
||
|
*/
|
||
|
private String WorkflowCreate(Map<String, String> workflowInfo, Map<String, Object> mainTableInfo, List<Map<String, Object>> detailTableInfos) {
|
||
|
|
||
|
BaseBean bb = new BaseBean();
|
||
|
|
||
|
bb.writeLog("--WorkflowCreate start");
|
||
|
|
||
|
String requestid = "";
|
||
|
//工作流程请求信息
|
||
|
WorkflowRequestInfo workflowRequestInfo = new WorkflowRequestInfo();
|
||
|
//请求标题
|
||
|
workflowRequestInfo.setRequestName(workflowInfo.get("requestName"));
|
||
|
//请求重要级别
|
||
|
workflowRequestInfo.setRequestLevel(workflowInfo.get("requestLevel"));
|
||
|
//显示
|
||
|
workflowRequestInfo.setCanView(true);
|
||
|
//创建者id
|
||
|
workflowRequestInfo.setCreatorId(workflowInfo.get("creatorId"));
|
||
|
//是否流转
|
||
|
workflowRequestInfo.setIsnextflow(workflowInfo.get("isNextFlow"));
|
||
|
//工作流信息
|
||
|
WorkflowBaseInfo workflowBaseInfo = new WorkflowBaseInfo();
|
||
|
workflowBaseInfo.setWorkflowId(workflowInfo.get("workflowId"));
|
||
|
workflowRequestInfo.setWorkflowBaseInfo(workflowBaseInfo);
|
||
|
//主表赋值
|
||
|
WorkflowRequestTableField[] workflowRequestTableField = new WorkflowRequestTableField[mainTableInfo.size()];
|
||
|
int k = 0;
|
||
|
for (String key : mainTableInfo.keySet()) {
|
||
|
String name = key;
|
||
|
String value = Util.null2String(mainTableInfo.get(key));
|
||
|
workflowRequestTableField[k] = createWorkflowRequestTableField(name, value);
|
||
|
k++;
|
||
|
}
|
||
|
// workflowRequestTableField[0] = createWorkflowRequestTableField("sqr", "4");
|
||
|
// workflowRequestTableField[1] = createWorkflowRequestTableField("ygbh", "10086");
|
||
|
WorkflowMainTableInfo workflowMainTableInfo = new WorkflowMainTableInfo();
|
||
|
WorkflowRequestTableRecord[] workflowRequestTableRecord = new WorkflowRequestTableRecord[1];
|
||
|
workflowRequestTableRecord[0] = new WorkflowRequestTableRecord();
|
||
|
workflowRequestTableRecord[0].setWorkflowRequestTableFields(workflowRequestTableField);
|
||
|
workflowMainTableInfo.setRequestRecords(workflowRequestTableRecord);
|
||
|
workflowRequestInfo.setWorkflowMainTableInfo(workflowMainTableInfo);
|
||
|
|
||
|
//明细表赋值
|
||
|
WorkflowDetailTableInfo[] workflowDetailTableInfo = new WorkflowDetailTableInfo[1];
|
||
|
workflowRequestTableRecord = new WorkflowRequestTableRecord[detailTableInfos.size()];
|
||
|
for (int i = 0; i < detailTableInfos.size(); i++) {
|
||
|
Map<String, Object> detailTableInfo = detailTableInfos.get(i);
|
||
|
workflowRequestTableField = new WorkflowRequestTableField[detailTableInfo.size()];
|
||
|
int j = 0;
|
||
|
for (String key : detailTableInfo.keySet()) {
|
||
|
String name = key;
|
||
|
String value = Util.null2String(detailTableInfo.get(key));
|
||
|
workflowRequestTableField[j] = createWorkflowRequestTableField(name, value);
|
||
|
j++;
|
||
|
}
|
||
|
workflowRequestTableRecord[i] = new WorkflowRequestTableRecord();
|
||
|
workflowRequestTableRecord[i].setWorkflowRequestTableFields(workflowRequestTableField);
|
||
|
}
|
||
|
workflowDetailTableInfo[0] = new WorkflowDetailTableInfo();
|
||
|
workflowDetailTableInfo[0].setWorkflowRequestTableRecords(workflowRequestTableRecord);
|
||
|
workflowRequestInfo.setWorkflowDetailTableInfos(workflowDetailTableInfo);
|
||
|
|
||
|
WorkflowService workflow = new WorkflowServiceImpl();
|
||
|
bb.writeLog("--requestid start:");
|
||
|
bb.writeLog("--workflowRequestInfo:" + JSONObject.toJSONString(workflowRequestInfo));
|
||
|
try {
|
||
|
// RequestService
|
||
|
requestid = workflow.doCreateWorkflowRequest(workflowRequestInfo, Util.getIntValue(Util.null2String(workflowInfo.get("creatorId"))));
|
||
|
bb.writeLog("--requestid:" + requestid);
|
||
|
if (Util.getIntValue(requestid) > 0) {
|
||
|
return requestid;
|
||
|
}
|
||
|
bb.writeLog("createOrgAdjustWorkflow failed");
|
||
|
}catch (Exception e ) {
|
||
|
bb.writeLog("createOrgAdjustWorkflow exception: " + e);
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
private WorkflowRequestTableField createWorkflowRequestTableField(String fieldName, String fieldValue) {
|
||
|
WorkflowRequestTableField tableField = new WorkflowRequestTableField();
|
||
|
tableField.setFieldName(fieldName);
|
||
|
tableField.setFieldValue(fieldValue);
|
||
|
tableField.setView(true);
|
||
|
tableField.setEdit(true);
|
||
|
return tableField;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 根据开始日期和结束日期,计算出之间的所有日期
|
||
|
* @params startDate 指定日期
|
||
|
* @params endDate 结束日期
|
||
|
*/
|
||
|
public List<String> getAllDates(String startDate, String endDate) {
|
||
|
List<String> result = new ArrayList<>();
|
||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||
|
|
||
|
LocalDate start = LocalDate.parse(startDate, formatter);
|
||
|
LocalDate end = LocalDate.parse(endDate, formatter);
|
||
|
|
||
|
while (!start.isAfter(end)) {
|
||
|
result.add(start.format(formatter));
|
||
|
start = start.plusDays(1);
|
||
|
}
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
%>
|
||
|
|
||
|
<HEAD>
|
||
|
</HEAD>
|
||
|
<BODY>
|
||
|
<h1>Congratulation!</h1>
|
||
|
<h2> 55555555555555 <%=requestid%> </h2>
|
||
|
</BODY>
|