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.
hrm-attendance/test/sy/testBatchAskForLeave.java

130 lines
8.2 KiB
Java

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.

package sy;
import ComprehensiveWorkingHourServiceImpl.beforlog;
import com.engine.jucailinkq.attendance.enums.AccountingUnitEnum;
import com.engine.jucailinkq.common.util.CommonUtil;
import com.engine.jucailinkq.common.util.DbTools;
import com.engine.jucailinkq.common.util.Utils;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.junit.Test;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author: sy
* @Description:
* @Date: 2024/7/5
**/
public class testBatchAskForLeave extends beforlog {
@Test
public void test() {
List<Map<String, String>> detailTableData = new ArrayList<>();
Map<String, String> detailDataItem = new HashMap<>();
detailDataItem.put("qjlx", "128");detailDataItem.put("jqye", null);detailDataItem.put("ksrq", "2024-07-05");detailDataItem.put("qjr", "22");detailDataItem.put("qjsc", "8.0");detailDataItem.put("id", "5");
detailTableData.add(detailDataItem);detailDataItem = new HashMap<>();
detailDataItem.put("qjlx", "128");detailDataItem.put("jqye", null);detailDataItem.put("ksrq", "2024-07-05");detailDataItem.put("qjr", "31");detailDataItem.put("qjsc", "8.0");detailDataItem.put("id", "6");
detailTableData.add(detailDataItem);detailDataItem = new HashMap<>();
detailDataItem.put("qjlx", "132");detailDataItem.put("jqye", null);detailDataItem.put("ksrq", "2024-07-09");detailDataItem.put("qjr", "22");detailDataItem.put("qjsc", "8.0");detailDataItem.put("id", "7");
detailTableData.add(detailDataItem);detailDataItem = new HashMap<>();
detailDataItem.put("qjlx", "132");detailDataItem.put("jqye", null);detailDataItem.put("ksrq", "2024-07-09");detailDataItem.put("qjr", "31");detailDataItem.put("qjsc", "8.0");detailDataItem.put("id", "8");
detailTableData.add(detailDataItem);detailDataItem = new HashMap<>();
detailDataItem.put("qjlx", "145");detailDataItem.put("jqye", "626_8.0");detailDataItem.put("ksrq", "2024-07-10");detailDataItem.put("qjr", "22");detailDataItem.put("qjsc", "8.0");detailDataItem.put("id", "9");
detailTableData.add(detailDataItem);detailDataItem = new HashMap<>();
detailDataItem.put("qjlx", "145");detailDataItem.put("jqye", "628_3.0");detailDataItem.put("ksrq", "2024-07-10");detailDataItem.put("qjr", "31");detailDataItem.put("qjsc", "3.0");detailDataItem.put("id", "10");
detailTableData.add(detailDataItem);detailDataItem = new HashMap<>();
detailDataItem.put("qjlx", "127");detailDataItem.put("jqye", null);detailDataItem.put("ksrq", "2024-07-10");detailDataItem.put("qjr", "31");detailDataItem.put("qjsc", "5.0");detailDataItem.put("id", "11");
detailTableData.add(detailDataItem);detailDataItem = new HashMap<>();
detailDataItem.put("qjlx", "145");detailDataItem.put("jqye", "626_2.0");detailDataItem.put("ksrq", "2024-07-11");detailDataItem.put("qjr", "22");detailDataItem.put("qjsc", "2.0");detailDataItem.put("id", "12");
detailTableData.add(detailDataItem);detailDataItem = new HashMap<>();
detailDataItem.put("qjlx", "127");detailDataItem.put("jqye", null);detailDataItem.put("ksrq", "2024-07-11");detailDataItem.put("qjr", "22");detailDataItem.put("qjsc", "6.0");detailDataItem.put("id", "13");
detailTableData.add(detailDataItem);detailDataItem = new HashMap<>();
detailDataItem.put("qjlx", "127");detailDataItem.put("jqye", null);detailDataItem.put("ksrq", "2024-07-11");detailDataItem.put("qjr", "31");detailDataItem.put("qjsc", "8.0");detailDataItem.put("id", "14");
detailTableData.add(detailDataItem);
//////////////////////
String requestid = "435435";
String detail2TableName = "formtable_main_228_dt2";
//第一笔开始时间
String firstStartDate = detailTableData.get(0).get("ksrq");
List<Map<String, Object>> detailTable2 = Lists.newArrayList();
Map<String, Object> holidayBalanceMap = new HashMap<>();
//需要校验假期额度的假期类型
List<String> checkAmountJqIdList = CommonUtil.getJqInfoWithAmount();
//根据明细表1根据请假类型分组对于需要校验余额的遍历生成明细表2
Map<String, List<Map<String, String>>> detail1TabDataGroupByJqlx = detailTableData.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("qjlx"))));
for(Map.Entry<String,List<Map<String,String>>> entry : detail1TabDataGroupByJqlx.entrySet()) {
if (checkAmountJqIdList.contains(entry.getKey())) {
String sql = "select id,jqid,sxrq,ktsc,yxsc,wxsc,yqsxrq,ztsc from uf_jcl_kq_jqye where jqid=? and sxrq<=? and yqsxrq>=? order by sxrq";
List<Map<String, Object>> holidayBalanceList = DbTools.getSqlToList(sql, entry.getKey(), firstStartDate, firstStartDate);
if (holidayBalanceList.size() > 0) {
holidayBalanceMap.putAll(holidayBalanceList.stream().collect(Collectors.toMap(e -> e.get("id").toString(), e -> e)));
}
sql = "select id,mc,hsdw,hsl,jcbyxsyqjb,yxsydjb,qzsyyxjb from uf_jcl_kq_kqxm where id=?";
Map<String, Object> holidayItem = DbTools.getSqlToMap(sql, entry.getKey());
//假期核算单位
String hsdw = Util.null2String(holidayItem.get("hsdw"));
//遍历生成明细表2
for (Map<String, String> detailData : entry.getValue()) {
String jqyeInfoStr = Util.null2String(detailData.get("jqye"));
List<String> jqyeInfoList = Arrays.asList(jqyeInfoStr.split(","));
for (String jqyeInfo : jqyeInfoList) {
Map<String, Object> detail2Map = Maps.newHashMap();
detail2Map.put("glmxid", detailData.get("id"));
detail2Map.put("jqye", jqyeInfo.split("_")[0]);
detail2Map.put("mainid", "999");
detail2Map.put("glrq", detailData.get("ksrq"));
if (hsdw.equals(AccountingUnitEnum.DAY.getKey())) {
detail2Map.put("sysc", Utils.divide(Double.parseDouble(jqyeInfo.split("_")[1]), 8));
} else {
detail2Map.put("sysc", jqyeInfo.split("_")[1]);
}
detailTable2.add(detail2Map);
}
}
}
}
//明细表2有数据时更新明细表2入库并且更新假期余额表
//更新流程明细表2
// String delteSql = "delete from " + detail2TableName + " where mainid=?";
// DbTools.update(delteSql, requestid);
// if (detailTable2.size() > 0 && !CommonUtil.insertBatch(detailTable2, detail2TableName)) {
// //更新流程明细表2失败
// String message = "更新流程明细表2失败";
// }
//更新假期余额在途时长
Map<String, Object> balanceMap = Maps.newHashMap();
for (Map<String, Object> data : detailTable2) {
String jqye = Util.null2String(data.get("jqye"));
double sysc = Double.valueOf(data.get("sysc").toString());
double havedSysc = balanceMap.get(jqye) == null ? 0 : Double.valueOf(balanceMap.get(jqye).toString());
sysc = Utils.add(sysc, havedSysc);
balanceMap.put(jqye, sysc);
}
for (Map.Entry<String, Object> entry : balanceMap.entrySet()) {
String id = entry.getKey();
double ztsc = Double.valueOf(entry.getValue().toString());
Map<String, Object> map = (Map<String, Object>) holidayBalanceMap.get(id);
double havedztsc = Util.null2String(map.get("ztsc")).equals("") ? 0 : Double.valueOf(map.get("ztsc").toString());
double havedwxsc = Util.null2String(map.get("wxsc")).equals("") ? 0 : Double.valueOf(map.get("wxsc").toString());
double updatedztsc = Utils.add(havedztsc, ztsc);
String updateSql = "update uf_jcl_kq_jqye set wxsc=?,ztsc=? where id=?";
// if (!DbTools.update(updateSql, havedwxsc, updatedztsc, id)) {
// //更新假期余额失败
// String message = "更新假期余额失败";
// }
}
}
}