wzy hace 5 meses
padre
commit
6c3f0b02dc

+ 76 - 5
mjava-kaiyue/src/main/java/com/malk/kaiyue/service/impl/KYCDServiceImpl.java

@@ -49,7 +49,12 @@ public class KYCDServiceImpl extends ServiceImpl<AdvancedLeaveMapper, AdvancedLe
     private String opUserId;
 
     //成都凯悦-年假(测试)
-    private static final String LEAVE_CODE = "609a84ed-54d4-4ecd-a44f-4c55b04c37ea";
+//    private static final String LEAVE_CODE = "609a84ed-54d4-4ecd-a44f-4c55b04c37ea";
+
+    //成都凯越-年假
+    private static final String LEAVE_CODE = "f7e0de92-806f-457e-9aa1-c20b245d741e";
+
+
     //体验社-成都年假测试
 //    private static final String LEAVE_CODE = "609a84ed-54d4-4ecd-a44f-4c55b04c37ea";
 
@@ -180,7 +185,7 @@ public class KYCDServiceImpl extends ServiceImpl<AdvancedLeaveMapper, AdvancedLe
                 //年假
                 double yearLeave = 0.0;
                 //预支年假
-                double advanceLeave = 0.0;
+                double advanceLeave = 8.0;
 
 
                 //获取原职级年假基数
@@ -277,25 +282,91 @@ public class KYCDServiceImpl extends ServiceImpl<AdvancedLeaveMapper, AdvancedLe
                     }
                 }
 
+
+                //年假余额
+                BigDecimal annualLeaveNum = new BigDecimal(0.00);
+
+                //查询员工年假余额
+                long currentTime2 = System.currentTimeMillis();
+
+                List<Map> leaveQuotasList = new ArrayList<>();
+                getLeaveNum(LEAVE_CODE,userId,0,50,leaveQuotasList);
+
+                if (Objects.nonNull(leaveQuotasList)){
+                    for (Map leaveQuotas : leaveQuotasList) {
+                        if ((long) leaveQuotas.get("start_time") <= currentTime2 && currentTime2 <= (long) leaveQuotas.get("end_time")){
+                            if (Objects.isNull(leaveQuotas.get("quota_num_per_hour")) && Objects.nonNull(leaveQuotas.get("quota_num_per_day"))){
+                                annualLeaveNum = annualLeaveNum.add(new BigDecimal(String.valueOf(leaveQuotas.get("quota_num_per_day"))).divide(new BigDecimal(100)));
+                            }
+                            if (Objects.nonNull(leaveQuotas.get("used_num_per_day"))){
+                                annualLeaveNum = annualLeaveNum.subtract(new BigDecimal(String.valueOf(leaveQuotas.get("used_num_per_day"))).divide(new BigDecimal(100)));
+                            }
+                        }
+                    }
+                }
+
                 LambdaQueryWrapper<AdvancedLeave> advancedLeaveLambdaQueryWrapper = new LambdaQueryWrapper<>();;
                 advancedLeaveLambdaQueryWrapper.eq(AdvancedLeave::getUserId,userId)
+                        .eq(AdvancedLeave::getYear,year)
+                        .eq(AdvancedLeave::getValidFlag,"1")
+                        .eq(AdvancedLeave::getCity,"cd");
+                AdvancedLeave advancedLeave = advancedLeaveMapper.selectOne(advancedLeaveLambdaQueryWrapper);
+
+                if (Objects.nonNull(advancedLeave)){
+                    advanceLeave = Double.valueOf(advancedLeave.getLeaveNum());
+                }else {
+                    advancedLeave = new AdvancedLeave();
+
+                    //1月1日 则根据年假余额计算当年预支假
+                    if (DateUtil.beginOfYear(new Date()).equals(today)){
+                        //年假余额小于8时
+                        if (annualLeaveNum.compareTo(new BigDecimal(8)) < 0){
+                            advanceLeave = Double.parseDouble(annualLeaveNum.subtract(annualLeaveNum.remainder(new BigDecimal(0.5))).toString());
+                        }
+
+                        advancedLeave.setLeaveNum(advanceLeave + "");
+                        advancedLeave.setUserId(userId);
+                        advancedLeave.setYear(String.valueOf(DateUtil.year(new Date())));
+                        advancedLeave.setCity("hq");
+                        advancedLeaveMapper.insert(advancedLeave);
+                    }else {
+                        //若当天不是1月1日且表中没有预支假记录 则默认预支假为8天
+                        advancedLeave.setLeaveNum(advanceLeave + "");
+                        advancedLeave.setUserId(userId);
+                        advancedLeave.setYear(String.valueOf(DateUtil.year(new Date())));
+                        advancedLeave.setCity("cd");
+                        advancedLeaveMapper.insert(advancedLeave);
+                    }
+                }
+
+                /*LambdaQueryWrapper<AdvancedLeave> advancedLeaveLambdaQueryWrapper = new LambdaQueryWrapper<>();;
+                advancedLeaveLambdaQueryWrapper.eq(AdvancedLeave::getUserId,userId)
+                        .eq(AdvancedLeave::getCity,"cd")
                         .eq(AdvancedLeave::getValidFlag,"1");
                 AdvancedLeave advancedLeave = advancedLeaveMapper.selectOne(advancedLeaveLambdaQueryWrapper);
                 if (Objects.nonNull(advancedLeave)){
                     advanceLeave = Double.valueOf(advancedLeave.getLeaveNum());
                 }else {
                     advanceLeave = NumberUtil.sub(yearLeave - useLeaveNum).doubleValue() >= 8 ? 8 : NumberUtil.sub(yearLeave - useLeaveNum).intValue();
+                    advancedLeave = new AdvancedLeave();
                     advancedLeave.setLeaveNum(advanceLeave + "");
                     advancedLeave.setUserId(userId);
                     advancedLeave.setYear(String.valueOf(DateUtil.year(new Date())));
+                    advancedLeave.setCity("cd");
                     advancedLeaveMapper.insert(advancedLeave);
-                }
+                }*/
+
 
                 //年假总数
                 int realYearLeave =  NumberUtil.sub(yearLeave, useLeaveNum, -advanceLeave).doubleValue() < 0 ? 0 : NumberUtil.sub(yearLeave, useLeaveNum, -advanceLeave).multiply(new BigDecimal(100)).intValue();
 
+
+
                 //获取员工原年假余额 取较大值
-                Map balanceMap = new HashMap();
+                if (annualLeaveNum.multiply(new BigDecimal(100)).intValue() > realYearLeave){
+                    realYearLeave = annualLeaveNum.multiply(new BigDecimal(100)).intValue();
+                }
+                /*Map balanceMap = new HashMap();
                 balanceMap.put("leave_code",LEAVE_CODE);
                 balanceMap.put("op_userid",opUserId);
                 balanceMap.put("userids",userId);
@@ -313,7 +384,7 @@ public class KYCDServiceImpl extends ServiceImpl<AdvancedLeaveMapper, AdvancedLe
                             }
                         }
                     }
-                }
+                }*/
 
 
                 //更新假期余额接口的body