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> detailTableData = new ArrayList<>(); Map 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> detailTable2 = Lists.newArrayList(); Map holidayBalanceMap = new HashMap<>(); //需要校验假期额度的假期类型 List checkAmountJqIdList = CommonUtil.getJqInfoWithAmount(); //根据明细表1,根据请假类型分组,对于需要校验余额的遍历生成明细表2 Map>> detail1TabDataGroupByJqlx = detailTableData.stream().collect(Collectors.groupingBy(e -> Util.null2String(e.get("qjlx")))); for(Map.Entry>> 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> 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 holidayItem = DbTools.getSqlToMap(sql, entry.getKey()); //假期核算单位 String hsdw = Util.null2String(holidayItem.get("hsdw")); //遍历生成明细表2 for (Map detailData : entry.getValue()) { String jqyeInfoStr = Util.null2String(detailData.get("jqye")); List jqyeInfoList = Arrays.asList(jqyeInfoStr.split(",")); for (String jqyeInfo : jqyeInfoList) { Map 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 balanceMap = Maps.newHashMap(); for (Map 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 entry : balanceMap.entrySet()) { String id = entry.getKey(); double ztsc = Double.valueOf(entry.getValue().toString()); Map map = (Map) 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 = "更新假期余额失败"; // } } } }