wzy hace 9 meses
padre
commit
36dd5d609c

+ 2 - 2
mjava-kaiyue/src/main/java/com/malk/kaiyue/controller/KYHQController.java

@@ -86,12 +86,12 @@ public class KYHQController extends DDCallbackController {
     }*/
 
     //每天 00:00定时更新员工年假数
-    @Scheduled(cron = "0 0 0 * * ? ")
+    /*@Scheduled(cron = "0 0 0 * * ? ")
     @GetMapping("/cronUpdateEmployeeAnnualLeaveNum")
     McR cronUpdateEmployeeAnnualLeaveNum(){
         System.out.println("定时更新员工年假数开始执行"+new Date());
         return kyhqService.updateEmployeeAnnualLeaveNum();
-    }
+    }*/
 
     //保存十分钟内已处理的回调事件
     private Map<String, Long> eventList = new HashMap<>();

+ 10 - 0
mjava-kaiyue/src/main/java/com/malk/kaiyue/controller/KYYTController.java

@@ -1,5 +1,7 @@
 package com.malk.kaiyue.controller;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.malk.controller.DDCallbackController;
@@ -38,6 +40,14 @@ public class KYYTController extends DDCallbackController {
 
     @PostMapping("test")
     McR test() {
+        DateTime endDate = DateUtil.endOfYear(new Date());
+        //取最后一天的0点
+
+        endDate = DateUtil.beginOfDay(endDate);
+        long time = endDate.getTime();
+        //2025年最后一天
+        DateTime endyear2 = DateUtil.endOfYear(DateUtil.parse("2025-12-31"));
+        long time1 = endyear2.getTime();
 
         log.info("11111");
         return McR.success();

+ 10 - 8
mjava-kaiyue/src/main/java/com/malk/kaiyue/service/impl/KYHQServiceImpl.java

@@ -52,10 +52,12 @@ public class KYHQServiceImpl extends ServiceImpl<AdvancedLeaveMapper, AdvancedLe
     @Value("${dingtalk_hq.operator}")
     private String opUserId;
 
-    //虹桥凯悦-年假测试
-    private static final String LEAVE_CODE = "5c8a4c95-09e1-4f2d-9712-5676e2e5a4fd";
-    //体验社-成都年假测试
-//    private static final String LEAVE_CODE = "609a84ed-54d4-4ecd-a44f-4c55b04c37ea";
+    //虹桥凯悦-年假(测试)
+    private static final String LEAVE_CODE = "9e87c02b-3825-4662-90b5-89968ed73271";
+
+    //虹桥凯悦-年假
+//    private static final String LEAVE_CODE = "126b5424-fce2-4e77-a981-9efa3d240b1a";
+
 
     @Override
     public List<String> getEmployeeUserId() {
@@ -189,7 +191,7 @@ public class KYHQServiceImpl extends ServiceImpl<AdvancedLeaveMapper, AdvancedLe
                     //假期有效开始日期为当年1月1日
                     DateTime beginDate = DateUtil.beginOfYear(new Date());
                     //假期有效截至日期为当年12月31日
-                    DateTime endDate = DateUtil.endOfYear(new Date());
+                    DateTime endDate = DateUtil.beginOfDay(DateUtil.endOfYear(new Date()));
                     //今天
                     DateTime today = DateUtil.date();
                     //当年天数
@@ -314,7 +316,7 @@ public class KYHQServiceImpl extends ServiceImpl<AdvancedLeaveMapper, AdvancedLe
                     long currentTime2 = System.currentTimeMillis();
 
                     List<Map> leaveQuotasList = new ArrayList<>();
-                    getLeaveNum("5c8a4c95-09e1-4f2d-9712-5676e2e5a4fd",userId,0,50,leaveQuotasList);
+                    getLeaveNum(LEAVE_CODE,userId,0,50,leaveQuotasList);
 
                     if (Objects.nonNull(leaveQuotasList)){
                         for (Map leaveQuotas : leaveQuotasList) {
@@ -570,9 +572,9 @@ public class KYHQServiceImpl extends ServiceImpl<AdvancedLeaveMapper, AdvancedLe
         int annualLeave = 0;
         if (positionLevel.equals("LC")){
             annualLeave = 20;
-        }else if (positionLevel.equals("DH") || positionLevel.equals("MGR")){
+        }else if (positionLevel.equals("DH") || positionLevel.equals("Mgr")){
             annualLeave = 12;
-        }else if (positionLevel.equals("TL-AM") || positionLevel.equals("TL")){
+        }else if (positionLevel.equals("AM") || positionLevel.equals("TL")){
             annualLeave = 10;
         }else if (positionLevel.equals("GSS")){
             annualLeave = 8;

+ 28 - 24
mjava-kaiyue/src/main/java/com/malk/kaiyue/service/impl/KYYTServiceImpl.java

@@ -115,7 +115,10 @@ public class KYYTServiceImpl implements KYYTService {
         //查询接口body添加参数
         //field_filter_list:要查询字段(花名册字段信息参考:https://open.dingtalk.com/document/orgapp/roster-custom-field-business-code)
         //agentid:企业内部应用AgentId
-        map.put("field_filter_list","sys00-name,sys01-positionLevel,2a8b3a12-5102-4e60-b5d2-5f3bca0f0b7c,sys00-confirmJoinTime,sys02-joinWorkingTime,sys05-contractRenewCount");
+        map.put("field_filter_list","sys00-name,sys00-confirmJoinTime,sys01-positionLevel," +
+                    "sys01-employeeType,sys02-joinWorkingTime,sys05-contractRenewCount," +
+                    "sys05-nowContractStartTime,2a8b3a12-5102-4e60-b5d2-5f3bca0f0b7c"
+                );
         map.put("agentid",agentId);
 
         List<String> result = new ArrayList<>();
@@ -153,15 +156,15 @@ public class KYYTServiceImpl implements KYYTService {
                     if (Objects.nonNull(fieldValueList.get(0).get("value"))){
                         String value = fieldValueList.get(0).get("value").toString();
                         switch (fieldCode){
-                            case "sys02-joinWorkingTime": joinWorkingTime = value;break;
+                            case "sys00-name": name = value;break;
                             case "sys00-confirmJoinTime": confirmJoinTime = value;break;
                             case "sys01-positionLevel": positionLevel = value;break;
-                            case "2a8b3a12-5102-4e60-b5d2-5f3bca0f0b7c": oldPositionLevel = value;break;
-                            case "sys00-name": name = value;break;
-                            case "sys05-contractRenewCount": contractRenewCount = Integer.valueOf(value);break;
                             case "sys01-employeeType": employeeType = value;break;
-                            case "sys05-nowContractStartTime": contractStartTime = value;break;
                             case "sys01-promotionTime": promotionTime = value;break;
+                            case "sys02-joinWorkingTime": joinWorkingTime = value;break;
+                            case "sys05-contractRenewCount": contractRenewCount = Integer.valueOf(value);break;
+                            case "sys05-nowContractStartTime": contractStartTime = value;break;
+                            case "2a8b3a12-5102-4e60-b5d2-5f3bca0f0b7c": oldPositionLevel = value;break;
                             default:break;
                         }
                     }
@@ -189,7 +192,7 @@ public class KYYTServiceImpl implements KYYTService {
                 //假期有效开始日期为当年1月1日
                 DateTime beginDate = DateUtil.beginOfYear(new Date());
                 //假期有效截至日期为当年12月31日
-                DateTime endDate = DateUtil.endOfYear(new Date());
+                DateTime endDate = DateUtil.beginOfDay(DateUtil.endOfYear(new Date()));
                 //当年天数
                 int yearDays = DateUtil.dayOfYear(endDate);
 
@@ -219,8 +222,12 @@ public class KYYTServiceImpl implements KYYTService {
 
                 int year = DateUtil.year(new Date());
 
-                if (employeeType.equals("退休返聘")){
-                    yearLeave = 5.0;
+                //退休返聘年假基数5天
+                if (employeeType.equals("5")){
+                    double yearLeaveBaseNum = 5.0;
+                    long day1 = DateUtil.betweenDay(beginDate, endDate, true);
+                    yearLeave = (day1 * yearLeaveBaseNum) / yearDays;
+                    log.info("day1:{},yearLeave:{}", day1, yearLeave);
                 }else {
                     int positionLevelBaseNum = getAnnualLeaveBaseNum(positionLevel,workAge,contractRenewCount);
                     int oldPositionLevelBaseNum = getAnnualLeaveBaseNum(oldPositionLevel,workAge,contractRenewCount);
@@ -298,18 +305,18 @@ public class KYYTServiceImpl implements KYYTService {
                     }
                     yearLeave = (double) (day1 * oldYearLeaveBaseNum + day2 * yearLeaveBaseNum) / yearDays;
                     */
+                }
 
-                    double yearLeaveDecimalPart = yearLeave - (int) yearLeave;
+                double yearLeaveDecimalPart = yearLeave - (int) yearLeave;
 
-                    result.add("姓名:"+name+",职级:"+positionLevel+",工龄:"+workAge+"年,合同续签数"+contractRenewCount+",年假数:" + yearLeave + "天"+",截止日期:"+endDate);
+                result.add("姓名:"+name+",职级:"+positionLevel+",工龄:"+workAge+"年,合同续签数"+contractRenewCount+",年假数:" + yearLeave + "天"+",截止日期:"+endDate);
 
-                    if (yearLeaveDecimalPart < 0.25){
-                        yearLeave = (int) yearLeave;
-                    }else if (yearLeaveDecimalPart < 0.75){
-                        yearLeave = (int) yearLeave + 0.5;
-                    }else if (yearLeaveDecimalPart < 1){
-                        yearLeave = (int) yearLeave + 1;
-                    }
+                if (yearLeaveDecimalPart < 0.25){
+                    yearLeave = (int) yearLeave;
+                }else if (yearLeaveDecimalPart < 0.75){
+                    yearLeave = (int) yearLeave + 0.5;
+                }else if (yearLeaveDecimalPart < 1){
+                    yearLeave = (int) yearLeave + 1;
                 }
 
                 //查询出用户消费年假记录 当返回leaveRecords中calType为null或不返回该字段则为请假消耗 将计算出的年假数减去请假消耗的数量
@@ -349,15 +356,14 @@ public class KYYTServiceImpl implements KYYTService {
                     }
                 }*/
 
+                //实际年假数(包含预支假)
+
                 //年假余额
                 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")){
@@ -370,7 +376,6 @@ public class KYYTServiceImpl implements KYYTService {
                         }
                     }
                 }
-
                 LambdaQueryWrapper<AdvancedLeave> advancedLeaveLambdaQueryWrapper = new LambdaQueryWrapper<>();;
                 advancedLeaveLambdaQueryWrapper.eq(AdvancedLeave::getUserId,userId)
                         .eq(AdvancedLeave::getYear,year)
@@ -393,10 +398,9 @@ public class KYYTServiceImpl implements KYYTService {
                     advancedLeave.setCity("yt");
                     advancedLeaveMapper.insert(advancedLeave);
                 }
-
-                //实际年假数
                 double realYearLeave = (yearLeave + advanceLeave) < 0 ? 0 : (yearLeave + advanceLeave);
 
+
                 //更新假期余额接口的body
                 Map<String,Object> updateBody = new HashMap<>();
                 Map<String,Object> leave_quotas = new HashMap<>();

+ 1 - 1
mjava-kaiyue/src/main/resources/application-dev.yml

@@ -1,6 +1,6 @@
 # 环境配置
 server:
-  port: 9021
+  port: 9020
   servlet:
     context-path: /api/kaiyue
 

+ 65 - 5
mjava-kaiyue/src/main/resources/application-prod.yml

@@ -6,8 +6,12 @@ server:
 
 # condition
 spel:
-  scheduling: true        # 定时任务是否执行
-  multiSource: false      # 是否多数据源配置
+  scheduling: false        # 定时任务是否执行w
+  multiSource: false       # 是否多数据源配置
+
+devtools:
+  restart:
+    enabled: false
 
 spring:
   # database
@@ -16,12 +20,59 @@ spring:
       connection-init-sql: SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci           # SqlServer, Oracle 无需设置类型
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
-    password: mu123
-    url: jdbc:mysql://127.0.0.1:3306/mjava?serverTimezone=Asia/Shanghai&useUnicode=yes&characterEncoding=UTF-8&useSSL=true
+    password: cp-root@2022++
+    url: jdbc:mysql://47.97.181.40:3306/dingtalk?serverTimezone=GMT%2B8
+    # 主库
+    primary:
+      username: root
+      password: cp-root@2022++
+      url: jdbc:mysql://47.97.181.40:3306/dingtalk?serverTimezone=GMT%2B8
+    # 从库
+    slave:
+      username: root
+      password: cp-root@2022++
+      url: jdbc:mysql://47.97.181.40:3306/dingtalk?serverTimezone=GMT%2B8
   jpa:
+    hibernate:
+      ddl-auto: none      # JPA对表没有任何操作
+    show-sql: true
     database: MYSQL
     database-platform: org.hibernate.dialect.MySQL57Dialect
 
+mybatis-plus:
+  configuration:
+    #开启驼峰命名自动映射
+    map-underscore-to-camel-case: true
+    #开启日志打印
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  type-aliases-package: com.malk.kaiyue_cd.entity
+  #扫描mapper文件
+  mapper-locations: classpath:mapper/*.xml
+
+# filepath
+file:
+  path:
+    file: /Users/malk/server/_Tool/var/mjava/tmp/file/
+    image: /Users/malk/server/_Tool/var/mjava/tmp/image/
+    tmp: /Users/malk/server/_Tool/var/mjava/tmp/
+  source:
+    fonts: /Users/malk/server/_Tool/fonts/simsun.ttc
+logging:
+  file:
+    path: /Users/malk/server/_Tool/var/mjava/log
+  level:
+    com.malk.*: debug
+
+
+#高级假期
+#agentId: 3078222540
+#appKey: dingtnxmtnun7me39ew0
+#appSecret: 30NLshrf2cbQSqAve5XAqsWmAfWgBghMmdks7g-picxd6Ipi1ZbONDrpK53V4a9p
+#corpId: dingc905d8a60b6a641b24f2f5cc6abecb85
+#aesKey: Uryl5pwvTd3XpAOSAV1z8CmnppzlzijqIqKW5XAJWjR
+#token: XWhjoLDp8ZgHIRiOTvJYk7aR8CEPuJb6J8fUTi7CduGtqaInQTmXxJ85Nmb
+#operator: "344749020127590108"   # OA管理员账号 [0开头需要转一下字符串]
+
 # dingtalk-cd
 dingtalk_cd:
   agentId: 3047759151
@@ -50,5 +101,14 @@ dingtalk_yt:
   corpId: ding43bb7be8e7bdc63224f2f5cc6abecb85
   aesKey: 7txhFmSyWIXIrEvwlNfcuMfOQe19K6hqCdIaXMHLO2K
   token: 24VR2Bnu
-  operator: "02421908021891243060"   # OA管理员账号 [0开头需要转一下字符串]
+  operator: "2534342040-496999405"   # OA管理员账号 [0开头需要转一下字符串]
 
+# dingtalk-hq
+dingtalk_hq:
+  agentId: 3213052281
+  appKey: dingtn8laxhycpzsq0tw
+  appSecret: NzXtpILrzOL6pTqVwQDAlZzdCbacm7rBPO-WCJh-qPxjw9RZfUIp9R9YcqU2hj73
+  corpId: ding0eac343305c5c09935c2f4657eb6378f
+  aesKey: fI8d5nU9EdAFRMv7MJDMJFrhpkPLrFUVYjpmPEhIfPD
+  token: cdclTjeXBL3MGhlxu9cD1VSQUTeCulxFLCYqkJuC4s
+  operator: "344749020127590108"   # OA管理员账号 [0开头需要转一下字符串]

+ 1 - 1
mjava-kaiyue/src/main/resources/application.yml

@@ -1,3 +1,3 @@
 spring:
   profiles:
-    active: dev
+    active: prod