|
|
|
@ -1,8 +1,11 @@
|
|
|
|
|
package com.engine.jucailinkq.attendance.workflow.action.askforleave;
|
|
|
|
|
|
|
|
|
|
import com.engine.common.util.ServiceUtil;
|
|
|
|
|
import com.engine.jucailinkq.attendance.enums.AccountingUnitEnum;
|
|
|
|
|
import com.engine.jucailinkq.attendance.enums.AttendanceItemTypeEnum;
|
|
|
|
|
import com.engine.jucailinkq.attendance.workflow.enums.WorkFlowTypeEnum;
|
|
|
|
|
import com.engine.jucailinkq.attendance.workflow.service.AskForLeaveService;
|
|
|
|
|
import com.engine.jucailinkq.attendance.workflow.service.impl.AskForLeaveServiceImpl;
|
|
|
|
|
import com.engine.jucailinkq.common.util.CommonUtil;
|
|
|
|
|
import com.engine.jucailinkq.common.util.DateUtil;
|
|
|
|
|
import com.engine.jucailinkq.common.util.DbTools;
|
|
|
|
@ -11,6 +14,7 @@ import com.google.common.collect.Lists;
|
|
|
|
|
import com.google.common.collect.Maps;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import weaver.general.Util;
|
|
|
|
|
import weaver.hrm.User;
|
|
|
|
|
import weaver.interfaces.workflow.action.Action;
|
|
|
|
|
import weaver.soa.workflow.request.RequestInfo;
|
|
|
|
|
|
|
|
|
@ -28,11 +32,16 @@ import java.util.stream.Collectors;
|
|
|
|
|
**/
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class BatchAskForLeaveWorkFlowSubmitAction implements Action {
|
|
|
|
|
private AskForLeaveService getAskForLeaveService(User user) {
|
|
|
|
|
return ServiceUtil.getService(AskForLeaveServiceImpl.class,user);
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public String execute(RequestInfo requestInfo) {
|
|
|
|
|
String requestid = requestInfo.getRequestid();
|
|
|
|
|
int billid = requestInfo.getRequestManager().getBillid();
|
|
|
|
|
log.info("billid : [{}]",billid);
|
|
|
|
|
User user = new User(Integer.parseInt("1"));
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// 流程表单主表数据
|
|
|
|
|
HashMap<String, String> mainTableData = CommonUtil.getMainTableInfo(requestInfo, WorkFlowTypeEnum.ASKFORLEAVE);
|
|
|
|
@ -40,11 +49,86 @@ public class BatchAskForLeaveWorkFlowSubmitAction implements Action {
|
|
|
|
|
// 流程表单明细表1数据
|
|
|
|
|
List<Map<String, String>> detailTableData = CommonUtil.getDetailTableInfo(requestInfo, 0,WorkFlowTypeEnum.ASKFORLEAVE);
|
|
|
|
|
log.info("detailTableData : [{}]", detailTableData);
|
|
|
|
|
|
|
|
|
|
String detail1TableName = CommonUtil.getDetailTableInfoTableName(requestInfo.getDetailTableInfo().getDetailTable()[0].getTableDBName(),0,WorkFlowTypeEnum.ASKFORLEAVE);
|
|
|
|
|
log.info("detail1TableName : [{}]", detail1TableName);
|
|
|
|
|
String detail2TableName = CommonUtil.getDetailTableInfoTableName(requestInfo.getDetailTableInfo().getDetailTable()[1].getTableDBName(),1,WorkFlowTypeEnum.ASKFORLEAVE);
|
|
|
|
|
log.info("detail2TableName : [{}]", detail2TableName);
|
|
|
|
|
//流程表单明细表3数据
|
|
|
|
|
List<Map<String, String>> detailTable3Data = CommonUtil.getDetailTableInfo(requestInfo,2, WorkFlowTypeEnum.ASKFORLEAVE);
|
|
|
|
|
log.info("detailTable3Data : [{}]", detailTable3Data);
|
|
|
|
|
//20241127需求变更,明细表1存在数据时,直接走原有校验逻辑;明细表1没有数据时,就根据明细表3重新生成明细表1数据,然后继续原有校验逻辑
|
|
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
|
|
List<Map<String, String>> reCreateDetailList = new ArrayList<>();
|
|
|
|
|
if (detailTableData.size() == 0 && detailTable3Data.size() > 0) {
|
|
|
|
|
List<Map<String, Object>> insertDetail1List = new ArrayList<>();
|
|
|
|
|
Map<String, Object> itemResult = new HashMap<>();
|
|
|
|
|
List<Map<String, Object>> itemDetailList = new ArrayList<>();
|
|
|
|
|
for (Map<String, String> detailTable3Item : detailTable3Data) {
|
|
|
|
|
detailTable3Item.put("jqlx", detailTable3Item.get("qjlx"));
|
|
|
|
|
detailTable3Item.put("cxjqj", detailTable3Item.get("qjfs"));
|
|
|
|
|
|
|
|
|
|
params.put("mainTableData", detailTable3Item);
|
|
|
|
|
params.put("detailTableData", reCreateDetailList);
|
|
|
|
|
itemResult = getAskForLeaveService(user).generateLeaveInfoList(params);
|
|
|
|
|
log.info("itemResult : [{}]", itemResult);
|
|
|
|
|
if ("false".equals(Util.null2String(itemResult.get("status"))) || itemResult.get("errorInfo") != null) {
|
|
|
|
|
String message = "生成请假明细失败:" + Util.null2String(itemResult.get("errorInfo"));
|
|
|
|
|
log.error(message);
|
|
|
|
|
requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222");
|
|
|
|
|
requestInfo.getRequestManager().setMessagecontent(message);
|
|
|
|
|
return Action.FAILURE_AND_CONTINUE;
|
|
|
|
|
} else if (itemResult.get("data") != null) {
|
|
|
|
|
itemDetailList = (List<Map<String, Object>>) itemResult.get("data");
|
|
|
|
|
if (itemDetailList.size() > 0) {
|
|
|
|
|
Map<String, Object> insertItem;
|
|
|
|
|
for (Map<String, Object> item : itemDetailList) {
|
|
|
|
|
insertItem = new HashMap<>();
|
|
|
|
|
insertItem.put("mainid", mainTableData.get("id"));
|
|
|
|
|
insertItem.put("ksrq", item.getOrDefault("ksrq", ""));
|
|
|
|
|
insertItem.put("kssj", item.getOrDefault("kssj", ""));
|
|
|
|
|
insertItem.put("jsrq", item.getOrDefault("jsrq", ""));
|
|
|
|
|
insertItem.put("jssj", item.getOrDefault("jssj", ""));
|
|
|
|
|
insertItem.put("qjsc", item.getOrDefault("qjsc", ""));
|
|
|
|
|
insertItem.put("qtj", item.getOrDefault("qtj", "0"));
|
|
|
|
|
insertItem.put("btj", item.getOrDefault("btj", "0"));
|
|
|
|
|
insertItem.put("cxqj", "0");
|
|
|
|
|
insertItem.put("qjr", item.getOrDefault("qjr", ""));
|
|
|
|
|
insertItem.put("qjlx", item.getOrDefault("qjlx", ""));
|
|
|
|
|
insertItem.put("jqye", item.getOrDefault("jqye", ""));
|
|
|
|
|
insertDetail1List.add(insertItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
log.info("insertDetail1List : [{}]", insertDetail1List);
|
|
|
|
|
if (insertDetail1List.size() > 0 && !CommonUtil.insertBatch(insertDetail1List, detail1TableName)) {
|
|
|
|
|
//更新流程明细表2失败
|
|
|
|
|
String message = "新增流程明细表1失败";
|
|
|
|
|
log.error(message);
|
|
|
|
|
requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222");
|
|
|
|
|
requestInfo.getRequestManager().setMessagecontent(message);
|
|
|
|
|
return Action.FAILURE_AND_CONTINUE;
|
|
|
|
|
}
|
|
|
|
|
String sql = "select * from " + detail1TableName + " where mainid = " + mainTableData.get("id");
|
|
|
|
|
List<Map<String, Object>> data = DbTools.getSqlToList(sql);
|
|
|
|
|
if (data.size() > 0) {
|
|
|
|
|
detailTableData = data.stream()
|
|
|
|
|
.map(map -> map.entrySet()
|
|
|
|
|
.stream()
|
|
|
|
|
.collect(Collectors.toMap(Map.Entry::getKey, e -> Util.null2String(e.getValue()))))
|
|
|
|
|
.collect(Collectors.toList());;
|
|
|
|
|
}
|
|
|
|
|
log.info("detailTableData : [{}]", detailTableData);
|
|
|
|
|
}
|
|
|
|
|
if (detailTableData.size() == 0) {
|
|
|
|
|
String message = "请假流程明细表1为空!";
|
|
|
|
|
log.error(message);
|
|
|
|
|
requestInfo.getRequestManager().setMessageid("11111" + requestid + "22222");
|
|
|
|
|
requestInfo.getRequestManager().setMessagecontent(message);
|
|
|
|
|
return Action.FAILURE_AND_CONTINUE;
|
|
|
|
|
}
|
|
|
|
|
//第一笔开始时间
|
|
|
|
|
String firstStartDate = detailTableData.get(0).get("ksrq");
|
|
|
|
|
List<String> startDateList = detailTableData.stream().map(map -> map.get("ksrq")).collect(Collectors.toList());
|
|
|
|
|
String minStartDate = startDateList.stream().min(Comparator.comparing(e-> DateUtil.getTime(e).toInstant(ZoneOffset.of("+8")).toEpochMilli())).get();
|
|
|
|
|
//请假人员列表
|
|
|
|
|