hxx 8 ay önce
ebeveyn
işleme
19b88641f0

+ 4 - 0
src/conf/shr-ssoClient.properties

@@ -0,0 +1,4 @@
+server.url=http://shr.risechina.com/shr
+server.path=/OTP2sso.jsp
+auth.pattern=OTP
+userNameBuilder=ssoShrLogin.ShrLogin

+ 45 - 0
src/main/java/ruisi/com/ruisiehr/Utils/MianDengUtils.java

@@ -0,0 +1,45 @@
+package ruisi.com.ruisiehr.Utils;
+
+import java.net.URLEncoder;
+import com.kingdee.eas.cp.eip.sso.ltpa.LtpaTokenManager;
+
+/**
+ * 单点登录工具类,拼接单点登录地址
+ * 请根据实际情况,修改变量,或抽取到配置文件中
+ * @author 郭旭
+ *
+ */
+public class MianDengUtils {
+    /**s-HR系统地址:IP/PORT**/
+    public static final String URL = "http://shr.risechina.com/shr";
+    /**(请根据实际情况修改)配置文件路径**/
+//    不确定是哪个
+    public static final String PATH = "/home/server/ruisi_ehr/conf/LtpaToken.properties";
+    //public static final String PATH = "D:/Items/ruiSiEhr/src/conf/shr-ssoClient.properties";
+    /**(不可修改)单点登录跳转路径**/
+     public  static  final  String SSO="/index.jsp?";
+   // public static final String SSO = "/portal/index2sso.jsp?";
+ //public static final String SSO = "/eassso/login?";
+    //index.jsp
+    /**
+     * 根据用户名,拼接单点登录链接地址
+     * 需要跳转到门户时,redirectTo=/
+     * 如需跳转s-HR系统首页:redirectTo=/shr
+     * @param user 用户名
+     * @return 单点登录链接
+     *
+     */
+    public static String getUrl(String user) throws Exception {
+
+        StringBuffer url = new StringBuffer();
+        url.append(URL).append(SSO);
+        String password = LtpaTokenManager.generate(user, PATH).toString(); //生成一次性密钥
+        url.append("username=").append(URLEncoder.encode(user, "UTF-8"));
+        url.append("&password=").append(URLEncoder.encode(password, "UTF-8"));
+        url.append("&redirectTo=/");
+        return url.toString();
+    }
+
+
+
+}

+ 45 - 0
src/main/java/ruisi/com/ruisiehr/controller/HRPersonInfoController.java

@@ -0,0 +1,45 @@
+package ruisi.com.ruisiehr.controller;
+
+import cn.hutool.json.JSONObject;
+import com.malk.server.common.McR;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import ruisi.com.ruisiehr.service.IHRPerson;
+
+import java.util.Map;
+
+/**
+ * 功能:
+ * 作者:hanxue
+ * 日期:2024/9/3 15:18
+ */
+
+@RestController
+@RequestMapping("/person")
+public class HRPersonInfoController {
+    @Autowired
+    private IHRPerson IhrPerson;
+
+
+
+    //    获取当前申请人的直线上级
+    @PostMapping("/getDirectSuperior")
+    public Map getDirectSuperior(@RequestBody Map params) {
+        Map data = IhrPerson.getDirectSuperior(params);
+
+        return data;
+    }
+
+
+//    根据校区获取教务岗位人员
+@PostMapping("/getEduPostPerson")
+public Map getEduPostPerson(@RequestBody Map params) {
+        params.put("positionKeyword","教务");
+    Map data = IhrPerson.getEduPostPerson(params);
+
+    return data;
+}
+}

+ 10 - 1
src/main/java/ruisi/com/ruisiehr/controller/HRVacationInfoController.java

@@ -3,6 +3,7 @@ package ruisi.com.ruisiehr.controller;
 import com.malk.server.common.McR;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import ruisi.com.ruisiehr.Utils.MianDengUtils;
 import ruisi.com.ruisiehr.service.IHRVacationInfoServer;
 
 import java.net.URISyntaxException;
@@ -32,6 +33,14 @@ public class HRVacationInfoController {
 
     }
 
+    @PostMapping("/miandeng")
+    public  McR miandeng(String EHRID) throws Exception {
+    MianDengUtils md=new MianDengUtils();
+    String url= md.getUrl(EHRID);
+    return McR.success(url);
+}
+
+
 // 计算请假的时长并进行校验
 
     @PostMapping(value= "/calculateLeaveDays",consumes = "application/json")
@@ -49,7 +58,7 @@ public class HRVacationInfoController {
 
     @PostMapping(value= "/holidayType",consumes = "application/json")
     public McR empHire(@RequestBody Map params) throws Exception {
-        return McR.success(iHRVacationInfoServer.getHolidayType(params));
+        return iHRVacationInfoServer.getHolidayType(params);
     }
 
 

+ 2 - 0
src/main/java/ruisi/com/ruisiehr/controller/PortalPreempController.java

@@ -27,4 +27,6 @@ public class PortalPreempController {
 
 
 
+
+
 }

+ 8 - 0
src/main/java/ruisi/com/ruisiehr/mapper/ScheduleTaskMapper.java

@@ -24,5 +24,13 @@ public interface ScheduleTaskMapper {
 
     List<Map<String, String>> getHolidayTypeByUserId(Map  param);
 
+   int getHolidayTypeCountByUserId(Map  param);
+
     List<Map<String, String>> getOrg();
+
+    //    获取申请人的直线上级
+    List<String>getDirectSuperior(Map  param);
+
+
+    List<String> getEduPostPerson(Map param);
 }

+ 6 - 3
src/main/java/ruisi/com/ruisiehr/schedule/ScheduleTask.java

@@ -62,9 +62,10 @@ public class ScheduleTask {
         }
     }
     /**
-     * 每天凌晨同步 ----  岗位信息
+     * 每三个小时同步一次 ----  岗位信息
      */
-    @Scheduled(cron = "0 0 0 * * ?")
+    @Scheduled(cron = "0 0 0/3 * * ? ")
+//    @Scheduled(cron = "0/1 * * * * ?")
     public void syncPositionSource() {
 
         log.info("开始上传岗位信息");
@@ -81,6 +82,7 @@ public class ScheduleTask {
      * 每天凌晨同步 ----  人员档案
      */
     @Scheduled(cron = "0 0 0 * * ?")
+//    @Scheduled(cron = "0 57 17 * * ?")
     public void syncPerson() {
 
         log.info("开始上传人员档案");
@@ -95,6 +97,7 @@ public class ScheduleTask {
     }
 //    hr部门同步
     @Scheduled(cron = "0 0 0 * * ?")
+//@Scheduled(cron = "0/1 * * * * ?")
     public void syncDept() {
 
         log.info("开始上传hr部门");
@@ -125,5 +128,5 @@ public class ScheduleTask {
 //            e.printStackTrace();
 //        }
 //    }
-
+//
 }

+ 12 - 0
src/main/java/ruisi/com/ruisiehr/service/IHRPerson.java

@@ -0,0 +1,12 @@
+package ruisi.com.ruisiehr.service;
+
+import com.malk.server.common.McR;
+
+import java.util.Map;
+
+public interface IHRPerson {
+
+    Map getDirectSuperior(Map params);
+
+    Map getEduPostPerson(Map params);
+}

+ 2 - 0
src/main/java/ruisi/com/ruisiehr/service/IPortalPreempServer.java

@@ -8,4 +8,6 @@ public interface IPortalPreempServer {
 //    String addContractProcess(PortalPreempEntity user);
 
     McR getTableDetailById(String formInstanceId) ;
+
+
 }

+ 49 - 0
src/main/java/ruisi/com/ruisiehr/service/serviceImpl/HRPersonInfoImpl.java

@@ -0,0 +1,49 @@
+package ruisi.com.ruisiehr.service.serviceImpl;
+
+import com.malk.server.common.McR;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import ruisi.com.ruisiehr.mapper.ScheduleTaskMapper;
+import ruisi.com.ruisiehr.service.IHRPerson;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 功能:
+ * 作者:hanxue
+ * 日期:2024/9/3 15:26
+ */
+@Service("HRPersonInfoImpl")
+public class HRPersonInfoImpl implements IHRPerson {
+    @Autowired
+    private ScheduleTaskMapper scheduleTaskMapper;
+
+    @Override
+    public Map getDirectSuperior(Map params) {
+
+      List<String> map =  scheduleTaskMapper.getDirectSuperior(params);
+      Map data = new HashMap<>();
+      data.put("result",map);
+      data.put("sucess",true);
+      data.put("message","sucess");
+
+        return  data;
+    }
+
+    @Override
+    public Map getEduPostPerson(Map params) {
+
+//        params.put("positionKeyword","教务");
+
+       List<String> map =  scheduleTaskMapper.getEduPostPerson(params);
+       System.out.println(map);
+        Map data = new HashMap<>();
+        data.put("result",map);
+        data.put("sucess",true);
+        data.put("message","sucess");
+
+        return  data;
+    }
+}

+ 1 - 1
src/main/java/ruisi/com/ruisiehr/service/serviceImpl/HRQuitServiceImpl.java

@@ -204,7 +204,7 @@ public class HRQuitServiceImpl implements IHRQuitServe {
 				resignBizBillEntryMap.put("CFIPHONEASSETS", params.get("textField_lts8k71v"));
 				resignBizBillEntryMap.put("CFISPHONEASSETS", 0);
 				resignBizBillEntryMap.put("FSUGGEST", params.get("textareaField_lts8k71x"));
-				
+				System.out.println(params.get("selectField_lts8k71t"));
 				hrQuitMapper.insertResignBizBillEntry(resignBizBillEntryMap);
 				
 				//生成离职单,将单据编号写入portal系统

+ 30 - 5
src/main/java/ruisi/com/ruisiehr/service/serviceImpl/HRVacationInfoServiceImpl.java

@@ -1,8 +1,12 @@
 package ruisi.com.ruisiehr.service.serviceImpl;
 
+
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.malk.server.aliwork.YDConf;
 import com.malk.server.aliwork.YDParam;
 import com.malk.server.common.McR;
@@ -15,11 +19,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import org.springframework.stereotype.Service;
 
-import org.springframework.web.bind.annotation.RequestBody;
 import ruisi.com.ruisiehr.Utils.OSFWSClientSSOUtils;
 
 import ruisi.com.ruisiehr.mapper.HRPortalInfoMapper;
-import ruisi.com.ruisiehr.mapper.HRQuitMapper;
 import ruisi.com.ruisiehr.mapper.HRVacationInfoMapper;
 import ruisi.com.ruisiehr.mapper.ScheduleTaskMapper;
 import ruisi.com.ruisiehr.service.IHREmpHireServe;
@@ -33,9 +35,10 @@ import java.sql.Timestamp;
 import java.text.DecimalFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
 import java.util.*;
 
+//import static ruisi.com.ruisiehr.mapper.JsonMapper.mapper;
+
 /**
  * 功能:
  * 作者:hanxue
@@ -234,8 +237,23 @@ public class HRVacationInfoServiceImpl implements IHRVacationInfoServer {
      */
     @Override
     public McR getHolidayType(Map params) {
-        return McR.success(scheduleTaskMapper.getHolidayTypeByUserId(params));
-
+        Integer currentPage = Integer.valueOf(params.get("currentPage").toString());
+        Integer pageSize = Integer.valueOf(params.get("pageSize").toString());
+        // 获取总记录数
+        int totalCount = scheduleTaskMapper.getHolidayTypeCountByUserId(params);
+        System.out.println("totalCount:" + totalCount);
+        // 获取分页后的数据
+        List<Map<String, String>> dataList = scheduleTaskMapper.getHolidayTypeByUserId(params);
+        System.out.println("dataList:" + dataList);
+        // 对结果进行分页
+        List<Map<String, String>> page = getPage(dataList, currentPage, pageSize);
+        // 构建返回的结果
+        Map<String, Object> result = new HashMap<>();
+        result.put("totalCount", totalCount); // 总记录数
+        result.put("data", page); // 分页后的数据
+        result.put("currentPage", currentPage); // 当前页码
+        return  McR.success(result);
+//
     }
 
 
@@ -923,5 +941,12 @@ public class HRVacationInfoServiceImpl implements IHRVacationInfoServer {
         return isLess;
     }
 
+    private static List<Map<String, String>> getPage(List<Map<String, String>> list, int pageNum, int pageSize) {
+        int startIndex = (pageNum - 1) * pageSize;
+        int endIndex = Math.min(startIndex + pageSize, list.size());
+
+        return list.subList(startIndex, endIndex);
+    }
+
 
 }

+ 21 - 14
src/main/java/ruisi/com/ruisiehr/service/serviceImpl/PortalPreempServerImpl.java

@@ -185,11 +185,9 @@ public class PortalPreempServerImpl  implements IPortalPreempServer {
             if (formData.get("employeeField_lu9hg3m7") != null) {
                 user.setCreated_by( formData.get("textField_lzo1pfxa").toString());
                 user.setFapplier_no( formData.get("textField_lzo1pfx9").toString());
-//                user.setCreated_by(((List) formData.get("textField_lzo1pfxa")).get(0).toString());
-//                user.setFapplier_no(((List) formData.get("textField_lzo1pfx9")).get(0).toString());
-
-            }
 //
+            }
+//创建日期
             if (formData.get("dateField_lu9hg3m9") != null) {
                 String str = formData.get("dateField_lu9hg3m9").toString();
                 Long longTime = Long.parseLong(str);
@@ -197,8 +195,12 @@ public class PortalPreempServerImpl  implements IPortalPreempServer {
                 Date parse;
                 try {
                     parse = sdf.parse(format);
+//                    申请日期
                     user.setFapplier_date(parse);
+//                    创建日期
                     user.setCreation_date(parse);
+//                    更新日期
+                    user.setLast_update_date(parse);
                 } catch (ParseException e) {
                     throw new RuntimeException(e);
                 }
@@ -209,20 +211,25 @@ public class PortalPreempServerImpl  implements IPortalPreempServer {
 //        预入职日期
             if (formData.get("dateField_lu9hg3q5") != null) {
 //            创建日期
-                String str = formData.get("dateField_lu9hg3m9").toString();
-                Long longTime = Long.parseLong(str);
-                String format = sdf.format(longTime);
-                Date parse;
+//                String str = formData.get("dateField_lu9hg3m9").toString();
+//                Long longTime = Long.parseLong(str);
+//                String format = sdf.format(longTime);
+                String emp =formData.get("dateField_lu9hg3q5").toString();
+                Long empDate = Long.parseLong(emp);
+                String empdate = sdf.format(empDate);
+
+//                Date parse;
+                Date empParse;
                 try {
-                    parse = sdf.parse(format);
+//                    parse = sdf.parse(format);
+                    empParse = sdf.parse(empdate);
 //            创建日期
-                    user.setCreation_date(parse);
+//                    user.setCreation_date(parse);
 //            预入职日期--data
-                    user.setFpreenter_date(parse);
+                    user.setFpreenter_date(empParse);
 //            预入职日期--String
-                    user.setAttr4(format);
-//                更新日期
-                    user.setLast_update_date(parse);
+                    user.setAttr4(empdate);
+//
                 } catch (ParseException e) {
                     e.printStackTrace();
                 }

+ 165 - 93
src/main/java/ruisi/com/ruisiehr/service/serviceImpl/ScheduleTaskServiceImpl.java

@@ -89,11 +89,11 @@ public class ScheduleTaskServiceImpl implements IScheduleTaskServer {
         List<Map<String, String>> positions = scheduleTaskMapper.getPosition();
         for (Map<String, String> position : positions)
             if (position.get("JOBCODE") != null) {
-                String PS = "textField_lupd5hjh, textField_lupd5hji, textField_lupd5hjj, textField_lupd5hjk, textField_lvyv8631";
+                String PS = "textField_lupd5hjh, textField_lupd5hji, textField_lupd5hjj, textField_lupd5hjk, textField_lvyv8631, textField_m0atql8d, numberField_m0c4ycm4, textField_m0gfsxst, numberField_m0gg7l20";
                 ydClient.operateData(YDParam.builder()
                         .formUuid("FORM-543561E5EF2848CE98311B5DF9AD4AB90DQJ")
                         .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_lvyv8631", position.get("JOBCODE"))))
-                        .formDataJson(JSONObject.toJSONString(UtilMap.map(PS, position.get("POSITIONNAME"), position.get("SIMPLENAME"), position.get("POSITIONCODE"), position.get("JOBNAME"), position.get("JOBCODE"))))
+                        .formDataJson(JSONObject.toJSONString(UtilMap.map(PS, position.get("POSITIONNAME"), position.get("SIMPLENAME"), position.get("POSITIONCODE"), position.get("JOBNAME"), position.get("JOBCODE"), position.get("ORGCODE"), position.get("STATUS"), position.get("ZHIJINAME"), position.get("ZHIJICODE"))))
                         .build(), YDConf.FORM_OPERATION.upsert);
             }
 
@@ -103,103 +103,114 @@ public class ScheduleTaskServiceImpl implements IScheduleTaskServer {
     //人员信息
     @Override
     public void syncPerson() throws ParseException {
-
         List<Map<String, String>> people = scheduleTaskMapper.getPerson();
         for (Map<String, String> person : people) {
-
             try {
-                String mobile = person.get("PHONE");
-                if (mobile != null) {
-                    Map map = ddClient_contacts.getUserInfoByMobile(dClient.getAccessToken(), mobile);
-                    log.info("map:{}", map.get("userid"));
-                    List<Object>   list1=new ArrayList<>();
-                    List<Object>   list2=new ArrayList<>();
-                    List<Object>   list3=new ArrayList<>();
-
-
-//  时间戳格式化
-//                    String hiredate = JSONObject.toJSONStringWithDateFormat(person.get("HIREDATE"), "yyyy-MM-dd ");
-//                    String empDate = JSONObject.toJSONStringWithDateFormat(person.get("EMPDATE"), "yyyy-MM-dd ");
-                    if (true) {
-                        ///一批量的HR数据(所属公司字段,所在分部字段)
-                        //根据公司得出depid; 文本,depid
-                        //根据公司depid+所在分部字段  ===dept_id
-                        //
-
-                        String ssgsid = "";
-                        String ssfbID = "";
-                        String ssfbOID = "";
-                        List<Map> map_bew = ddClient_contacts.listSubDepartmentDetail(dClient.getAccessToken(), 1);
-                        for (Map m : map_bew) {
-//["ssgsid" ]
-//                            if(person.get("COMPANYNAME").toString().equals("瑞思教育")){
-//                                ssgsid = "594629905";
-//                            }
-
-                                if (m.get("name").equals(person.get("COMPANYNAME").toString())) {
-                                ssgsid = String.valueOf(m.get("dept_id"));
-                                if (ssgsid != null) {
-                                    list1.add(ssgsid);
-                                    System.out.println("该用户的公司list1:"+list1);
-                                    List<Map>  map_Dew = ddClient_contacts.listSubDepartmentDetail(dClient.getAccessToken(), Long.parseLong(ssgsid));
-                                    for (Map ms : map_Dew) {
-                                        System.out.println(ms.get("name"));
-                                        System.out.println("从数据库获得的分部:"+person.get("PARENTORGNAME"));
-
-                                        if (ms.get("name").equals(person.get("PARENTORGNAME").toString())) {
-                                            ssfbID = ms.get("dept_id").toString();
-                                            list2.add(ssfbID);
-                                            System.out.println("该用户的分部list2:"+list2);
-
-                                            if (ssfbID != null) {
-                                                List<Map> map_Oew = ddClient_contacts.listSubDepartmentDetail(dClient.getAccessToken(), Long.parseLong(ssfbID));
-                                                for (Map mo : map_Oew) {
-
-                                                    System.out.println(mo.get("name"));
-                                                    System.out.println("从数据库获得的部门:"+person.get("ORGNAME"));
-                                                    if (mo.get("name").equals(person.get("ORGNAME").toString())) {
-                                                        ssfbOID = mo.get("dept_id").toString();
-                                                        list3.add(ssfbOID);
-                                                        System.out.println("该用户的部门list3:"+list3);
-                                                        break;
-                                                    }
-                                                }
-                                            }
-                                        }
-
-                                    }
-
-                                }
-                            }
+                Map map =ddClient_contacts.getUserInfoById(dClient.getAccessToken(), person.get("EHR"));
+                if(map.get("errcode") == "60121"){
+                    log.info("人员信息不存在");
+                    continue;
+
+                }else{
+                        List<String> list1 = new ArrayList<>();
+                        List<String> list2 = new ArrayList<>();
+
+                 Map  deptList = ddClient_contacts.listParentByUser(dClient.getAccessToken(), person.get("EHR"));
+
+            List<Map> list = (List<Map>) deptList.get("parent_list");
+            List<Integer>  deptIdList = (List<Integer>) list.get(0).get("parent_dept_id_list");
+                    for (Integer deptId : deptIdList) {
+                        System.out.println(deptId);
+                        Map deptName = ddClient_contacts.getDepartmentInfo(dClient.getAccessToken(), Long.valueOf(deptId));
+                        if(deptName.get("name").equals(person.get("COMPANYNAME")) ){
+                            list1.add(deptName.get("dept_id")+"");
+                        }else if(deptName.get("name").equals(person.get("ORGNAME"))){
+                            list2.add(deptName.get("dept_id")+"");
                         }
-//                        if (ssgsid != null) {
-//                            List<Map>  map_Dew = ddClient_contacts.listSubDepartmentDetail(dClient.getAccessToken(), Long.parseLong(ssgsid));
-//                            for (Map ms : map_Dew) {
-//                                System.out.println(ms.get("name"));
-//                                if (ms.get("name").equals(person.get("PARENTORGNAME").toString())) {
-//                                    ssfbID = ms.get("dept_id").toString();
-//                                    System.out.println("该用户的分部:"+ssfbID);
-//                                    break;
+//
+                    }
+
+
+
+
+
+//公司id+部门id
+//                    String companyId = "";
+//                    String deptId = "";
+//
+//                    String companyName = person.get("COMPANYNAME").toString();//公司名称
+//                    String orgName = person.get("ORGNAME").toString();//所在部门
+//                    if(companyName.equals("瑞思教育")){
+//                        list1 = new ArrayList<>();
+////                        部门需要处理
+//
+//                    }else{
+//                        list1 = new ArrayList<>();
+//                        List<Map> map_bew = ddClient_contacts.listSubDepartmentDetail(dClient.getAccessToken(), 1);
+//                        String lianluName=person.get("ORGLINENAME");
+//                        for (Map m : map_bew) {
+////                            对分公司的处理
+//                            if(lianluName.contains(m.get("name").toString())){
+//                                companyId = String.valueOf(m.get("dept_id"));
+//                                System.out.println("该用户的公司ID:" + companyId+"公司名:"+person.get("COMPANYNAME"));
+////                                不含校区的部门
+//                                List<Map> orgLists = ddClient_contacts.listSubDepartmentDetail(dClient.getAccessToken(),Long.valueOf(companyId));
+//                                for(Map dept:orgLists){
+//                                    if(orgName.equals(dept.get("name").toString())){
+//                                        deptId=dept.get("dept_id").toString();
+//                                        System.out.println("该用户的部门ID:"+deptId+"部门名:"+person.get("ORGNAME"));
+//                                    }
+//
 //                                }
+//
+////                                包含校区的部门
+//                                if (companyName.contains("校区")){
+//                                    List<Map> parentList = ddClient_contacts.listSubDepartmentDetail(dClient.getAccessToken(),Long.valueOf(companyId));
+//                                    System.out.println("PARENTORGNAME:"+companyName);
+//                                    for(Map maps:parentList){
+//                                        if (companyName.equals(map.get("name").toString())){
+//                                            companyId=maps.get("dept_id").toString();
+//                                            List<Map> orgList = ddClient_contacts.listSubDepartmentDetail(dClient.getAccessToken(),Long.valueOf(companyId));
+//                                            for(Map mapss:orgList){
+//                                                if(orgName.equals(mapss.get("name").toString())){
+//                                                    deptId=mapss.get("dept_id").toString();
+//                                                    System.out.println("该用户的部门ID:"+deptId+"部门名:"+person.get("ORGNAME"));
+//                                                }
+//
+//                                            }
+//                                        }
+//                                    }
+//
+//                                }
+//
 //                            }
 //
 //                        }
+//                        list1.add(companyId);
+//                        list2.add(deptId);
+////
+//                    }
 
+//
 
-
-                        System.out.println(ssgsid + ";" + ssfbID+ ";" + ssfbOID);
-
-                        String SC = "textField_ltz8oj7i, textField_lu143isi, textField_lwahamao";
-                        String PR = "employeeField_ltz8oj7g, textField_ltz8oj7i, textField_lu143isi, textField_lvyzmtte, textField_lu9kqmgo, textField_lu9kqmgt, textField_lveut51i, textField_lveut51j, textField_luv30uq1, numberField_lwokzscl, textField_ltz8oj7m, textField_lveut51k, textField_lwahamao, dateField_lxb6up8p, dateField_lxb6up8q, departmentSelectField_lyqy1pou, departmentSelectField_lyqxfhfp, departmentSelectField_lz6dh5n7";
-                        ydClient.operateData(YDParam.builder()
-                                .formUuid("FORM-2C10C625AF2D456F93852DFEAEBF9C349IQA")
-                                .searchCondition(JSONObject.toJSONString(UtilMap.map(SC, person.get("EHR"), person.get("NAME"), person.get("PHONE"))))
-                                .formDataJson(JSONObject.toJSONString(UtilMap.map(PR, map.get("userid").toString(), person.get("EHR"), person.get("NAME"), person.get("ENAME"), person.get("POSITIONNAME"), person.get("POSITIONCODE"), person.get("ORGNAME"), person.get("ORGNUMBER"), person.get("ZHIJINAME"), person.get("ZHIJICODE"), person.get("COMPANYNAME"), person.get("COMPANYCODE"), person.get("PHONE"), person.get("HIREDATE"), person.get("EMPDATE"),list1 ,list2, list3)))
-                                .build(), YDConf.FORM_OPERATION.upsert);
+                            String SC = "textField_ltz8oj7i, textField_lu143isi, textField_lwahamao";
+                            String PR = "employeeField_ltz8oj7g, textField_ltz8oj7i, textField_lu143isi, textField_lvyzmtte, textField_lu9kqmgo, textField_lu9kqmgt, textField_lveut51i, textField_lveut51j, textField_luv30uq1, numberField_lwokzscl, textField_ltz8oj7m, textField_lveut51k, textField_lwahamao, dateField_lxb6up8p, dateField_lxb6up8q, departmentSelectField_lyqy1pou, departmentSelectField_lyqxfhfp, departmentSelectField_lz6dh5n7";
+//                    DDR_New ddrNew = ydClient.queryData(YDParam.builder()
+//                            .formUuid("FORM-2C10C625AF2D456F93852DFEAEBF9C349IQA")
+//                            .searchCondition(JSONObject.toJSONString(UtilMap.map(SC, person.get("EHR"), person.get("NAME"), person.get("PHONE"))))
+//                            .build(), YDConf.FORM_QUERY.retrieve_list_all);
+
+                    ydClient.operateData(YDParam.builder()
+                                    .formUuid("FORM-2C10C625AF2D456F93852DFEAEBF9C349IQA")
+                                    .searchCondition(JSONObject.toJSONString(UtilMap.map(SC, person.get("EHR"), person.get("NAME"), person.get("PHONE"))))
+                                    .formDataJson(JSONObject.toJSONString(UtilMap.map(PR, person.get("EHR"), person.get("EHR"), person.get("NAME"), person.get("ENAME"), person.get("POSITIONNAME"), person.get("POSITIONCODE"), person.get("ORGNAME"), person.get("ORGNUM"), person.get("ZHIJINAME"), person.get("ZHIJICODE"), person.get("COMPANYNAME"), person.get("COMPANYCODE"), person.get("PHONE"), person.get("HIREDATE"), person.get("FORMDATE"), list1, list1, list2)))
+                                    .build(), YDConf.FORM_OPERATION.upsert);
                     }
-                }
+//                }
             } catch (McException e) {
-                log.info("人员信息同步失败:" + e.getMessage());
+                log.info("人员信息同步失败:" + e.getMessage()+person.get("PHONE"));
+            } catch (NullPointerException e) {
+                log.error("该用户不存在:",  e.getMessage());
             }
         }
     }
@@ -211,13 +222,13 @@ public class ScheduleTaskServiceImpl implements IScheduleTaskServer {
     public void syncDelete() {
 
        DDR_New ddrNew = ydClient.queryData(YDParam.builder()
-                .formUuid("FORM-2C10C625AF2D456F93852DFEAEBF9C349IQA")
+                .formUuid("FORM-52CB950F462C44D8B187EA9169D3CA99506A")
                 .build(),YDConf.FORM_QUERY.retrieve_search_form_id);
 
            System.out.println(ddrNew.getTotalCount());
 
                ydClient.operateData(YDParam.builder()
-                       .formUuid("FORM-2C10C625AF2D456F93852DFEAEBF9C349IQA")
+                       .formUuid("FORM-52CB950F462C44D8B187EA9169D3CA99506A")
                        .asynchronousExecution(true)
                        .formInstanceIdList((List<String>) ddrNew.getData())
                        .build(),YDConf.FORM_OPERATION.delete_batch);
@@ -226,19 +237,80 @@ public class ScheduleTaskServiceImpl implements IScheduleTaskServer {
 
     @Override
     public void syncDept() {
-        List<Map<String, String>> orgs = scheduleTaskMapper.getOrg();
+        List<Map<String, String>> orgs = scheduleTaskMapper.getOrg();//
+        List<Object> list1 = new ArrayList<>();
+        String judge ="";
+
         for (Map<String, String> oragination : orgs)
-            if (oragination.get("ORGCODE") != null) {
-                String PS = "textField_lznzj6k6, textField_lznyrc7r, textField_lznyrc7q, radioField_lznz2nsy";
+         if (oragination.get("ORGCODE") != null) {
+           String PARENTORGNAME=oragination.get("PARENTORGNAME").toString();
+             if (PARENTORGNAME.equals("瑞思教育")) {
+                 judge = "是";
+                 list1 = new ArrayList<>();
+             }else{ //xx校区 huo xx公司
+                 String  parentId = "";
+                 String lianluName=oragination.get("ORGLINENAME");//链路地址
+                 list1 = new ArrayList<>();
+                 if(lianluName.contains("北京分公司")){
+                     System.out.println("lianluName:"+lianluName);
+                     parentId="155096533";
+                 }else if(lianluName.contains("上海分公司")){
+                     System.out.println("lianluName:"+lianluName);
+                     parentId="155145302";
+                 }else if(lianluName.contains("广州分公司")){
+                     System.out.println("lianluName:"+lianluName);
+                     parentId="155050676";
+                 }else if(lianluName.contains("深圳分公司")){
+                     System.out.println("lianluName:"+lianluName);
+                     parentId="155107436";
+                 }else if(lianluName.contains("石家庄分公司")){
+                     System.out.println("lianluName:"+lianluName);
+                     parentId="155222274";
+                 }else if(lianluName.contains("成都分公司")){
+                     System.out.println("lianluName:"+lianluName);
+                     parentId="921093532";
+
+                 }
+
+                 if (PARENTORGNAME.contains("校区")){
+                     List<Map> parentList = ddClient_contacts.listSubDepartmentDetail(dClient.getAccessToken(),Long.valueOf(parentId));
+                     System.out.println("PARENTORGNAME:"+PARENTORGNAME);
+                     for(Map map:parentList){
+                         if (PARENTORGNAME.equals(map.get("name").toString())){
+                             parentId=map.get("dept_id").toString();
+                         }
+                     }
+                 }
+                 judge = "否";
+                 list1.add(parentId);
+
+         }
+                String PS = "textField_lznzj6k6, textField_lznyrc7r, textField_lznyrc7q, radioField_lznz2nsy, selectField_m10i95j7, departmentSelectField_m10i95j6";
                 String SC = "textField_lznzj6k6, textField_lznyrc7r, textField_lznyrc7q";
                 ydClient.operateData(YDParam.builder()
                         .formUuid("FORM-52CB950F462C44D8B187EA9169D3CA99506A")
                         .searchCondition(JSONObject.toJSONString(UtilMap.map(SC,oragination.get("ORGNAME"), oragination.get("ORGCODE"), oragination.get("ORGLINENAME"))))
-                        .formDataJson(JSONObject.toJSONString(UtilMap.map(PS, oragination.get("ORGNAME"), oragination.get("ORGCODE"), oragination.get("ORGLINENAME"), "开启")))
+                        .formDataJson(JSONObject.toJSONString(UtilMap.map(PS, oragination.get("ORGNAME"), oragination.get("ORGCODE"), oragination.get("ORGLINENAME"), "开启", judge, list1)))
                         .build(), YDConf.FORM_OPERATION.upsert);
             }
 
 
     }
+    private List<Long> convertToListOfLong(List<?> list) {
+        List<Long> result = new ArrayList<>();
+        for (Object item : list) {
+            if (item instanceof Integer) {
+                result.add(((Integer) item).longValue());
+            } else if (item instanceof Long) {
+                result.add((Long) item);
+            } else {
+                System.err.println("Unsupported type in list: " + item.getClass().getName());
+            }
+        }
+        return result;
+    }
 }
 
+
+
+

+ 3 - 0
src/main/resources/application.yml

@@ -5,6 +5,9 @@ server:
 
 #yida
 
+logging:
+  level:
+    ruisi.com.ruisiehr.*: debug
 
 # dingtalk
 

+ 5 - 0
src/main/resources/conf/LtpaToken.properties

@@ -13,3 +13,8 @@ openid.domino.secret=erewqre99988
 email.domino.secret=erewqreqr888
 token.expiration=30
 domino.secret=BTfWa8F+HwBNejYEvGrtuJZSJTWOZ/t8\=
+server.url=http://shr.risechina.com/shr
+server.path=/OTP2sso.jsp
+auth.pattern=OTP
+userNameBuilder=ssoShrLogin.ShrLogin
+

+ 11 - 0
src/main/resources/conf/shr-ssoClient.properties

@@ -0,0 +1,11 @@
+server.url=http://shr.risechina.com/shr
+server.path=/OTP2sso.jsp
+auth.pattern=OTP
+userNameBuilder=ssoShrLogin.ShrLogin
+
+otp.domino.secret=erewqreqr876
+cookie.domain=.kingdee.com
+openid.domino.secret=erewqre99988
+email.domino.secret=erewqreqr888
+token.expiration=30
+domino.secret=BTfWa8F+HwBNejYEvGrtuJZSJTWOZ/t8\=

+ 497 - 79
src/main/resources/ruisi/com/ruisiehr/mapper/ScheduleTaskMapper.xml

@@ -2,64 +2,191 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="ruisi.com.ruisiehr.mapper.ScheduleTaskMapper">
 
-    <!-- 查询节假日 -->
-    <select id="getHolidayTypeByUserId" parameterType="java.util.Map" resultType="java.util.Map">
-        SELECT people, holidayName, holidayCode, realLimit, freezeLimit, unit,validYear, peopleCode, telphone,  usedLimit, remainLimit
+
+    <!-- 获取总记录数 -->
+    <select id="getHolidayTypeCountByUserId" parameterType="java.util.Map" resultType="int">
+        SELECT COUNT(*)
         FROM (
-                 SELECT HOLIDAYTYPE.FNAME_L2 holidayName,
-                        ( CASE WHEN HOLIDAYLIMIT.FHolidayUnit = 1 THEN '天' ELSE '小时' END ) unit,
-                        HOLIDAYTYPE.fnumber holidayCode,
-                        PROPOSER.fnumber peopleCode,
-                        PROPOSER.FNAME_L2 people,
-                        PROPOSER.FCELL telphone,
-                        HOLIDAYLIMIT.FCycleBeginDate BeginDate,
-                        HOLIDAYLIMIT.FCycleEndDate EndDate,
-                        HOLIDAYLIMIT.FDelayDate DelayDate,
-                        to_char(HOLIDAYLIMIT.fyear ) validYear,
-                        HOLIDAYLIMIT.FRealLimit realLimit,
-                        HOLIDAYLIMIT.FUsedLimit usedLimit,
-                        HOLIDAYLIMIT.FreezeLimit freezeLimit,
-                        HOLIDAYLIMIT.FRemainLimit remainLimit,
-                        ( CASE WHEN PROPOSER.FGender = 1 AND HOLIDAYTYPE.fnumber IN ( 'RS010', 'RS01401', 'RS01402', 'RS01403', 'RS01404', 'RS016', 'RS018', 'RS019', 'RS020', 'RS028', 'RS052', 'RS053' ) THEN '隐藏'
-                               WHEN PROPOSER.FGender = 2 AND HOLIDAYTYPE.fnumber IN ( 'RS015' ) THEN '隐藏' ELSE '不隐藏' END ) isread
-                 FROM T_HR_ATS_AtsHolidayFile ATSHOLIDAYFILE
-                          LEFT JOIN T_HR_ATS_HolidayLimit HOLIDAYLIMIT ON HOLIDAYLIMIT.FProposerID = ATSHOLIDAYFILE.FProposerID
-                          LEFT JOIN T_HR_ATS_HolidayPolicy HOLIDAYPOLICY ON HOLIDAYLIMIT.FHolidayPolicyID = HOLIDAYPOLICY.FID
-                          LEFT JOIN T_HR_ATS_HolidayType HOLIDAYTYPE ON HOLIDAYPOLICY.FHolidayTypeID = HOLIDAYTYPE.FID
-                          LEFT OUTER JOIN T_BD_Person PROPOSER ON ATSHOLIDAYFILE.FProposerID = PROPOSER.FID WHERE HOLIDAYTYPE.FState = 1 ) tmp
-        WHERE isread = '不隐藏'
-          AND (to_char( DelayDate, 'yyyymmdd' ) >= to_char( SYSDATE, 'yyyymmdd' ) OR DelayDate IS NULL)
+                 -- 这里复制你的原始 SQL 查询,但只需要保留 WHERE 子句之前的 SELECT 和 FROM 部分
+                 SELECT people, holidayName, holidayCode, realLimit, freezeLimit, unit, validYear, peopleCode, telphone, usedLimit, remainLimit
+                 FROM (
+                          -- 原始子查询
+                          SELECT HOLIDAYTYPE.FNAME_L2 holidayName,
+                                 ( CASE WHEN HOLIDAYLIMIT.FHolidayUnit = 1 THEN '天' ELSE '小时' END ) unit,
+                                 HOLIDAYTYPE.fnumber holidayCode,
+                                 PROPOSER.fnumber peopleCode,
+                                 PROPOSER.FNAME_L2 people,
+                                 PROPOSER.FCELL telphone,
+                                 HOLIDAYLIMIT.FCycleBeginDate BeginDate,
+                                 HOLIDAYLIMIT.FCycleEndDate EndDate,
+                                 HOLIDAYLIMIT.FDelayDate DelayDate,
+                                 to_char(HOLIDAYLIMIT.fyear ) validYear,
+                                 HOLIDAYLIMIT.FRealLimit realLimit,
+                                 HOLIDAYLIMIT.FUsedLimit usedLimit,
+                                 HOLIDAYLIMIT.FreezeLimit freezeLimit,
+                                 HOLIDAYLIMIT.FRemainLimit remainLimit,
+                                 ( CASE WHEN PROPOSER.FGender = 1 AND HOLIDAYTYPE.fnumber IN ( 'RS010', 'RS01401', 'RS01402', 'RS01403', 'RS01404', 'RS016', 'RS018', 'RS019', 'RS020', 'RS028', 'RS052', 'RS053' ) THEN '隐藏'
+                                        WHEN PROPOSER.FGender = 2 AND HOLIDAYTYPE.fnumber IN ( 'RS015' ) THEN '隐藏' ELSE '不隐藏' END ) isread
+                          FROM T_HR_ATS_AtsHolidayFile ATSHOLIDAYFILE
+                                   LEFT JOIN T_HR_ATS_HolidayLimit HOLIDAYLIMIT ON HOLIDAYLIMIT.FProposerID = ATSHOLIDAYFILE.FProposerID
+                                   LEFT JOIN T_HR_ATS_HolidayPolicy HOLIDAYPOLICY ON HOLIDAYLIMIT.FHolidayPolicyID = HOLIDAYPOLICY.FID
+                                   LEFT JOIN T_HR_ATS_HolidayType HOLIDAYTYPE ON HOLIDAYPOLICY.FHolidayTypeID = HOLIDAYTYPE.FID
+                                   LEFT OUTER JOIN T_BD_Person PROPOSER ON ATSHOLIDAYFILE.FProposerID = PROPOSER.FID
+                          WHERE HOLIDAYTYPE.FState = 1
+                      ) tmp
+                 WHERE isread = '不隐藏'
+                   AND (to_char( DelayDate, 'yyyymmdd' ) >= to_char( SYSDATE, 'yyyymmdd' ) OR DelayDate IS NULL)
+                   AND peopleCode = #{peopleCode}
+                 UNION ALL
+                 SELECT people, holidayName, holidayCode, realLimit, freezeLimit, unit, validYear, peopleCode, telphone, usedLimit, remainLimit
+                 FROM (
+                          -- 第二个子查询
+                          SELECT HOLIDAYTYPE.FNAME_L2 holidayName,
+                                 ( CASE WHEN HOLIDAYPOLICY.FUnit = 1 THEN '天' ELSE '小时' END ) unit,
+                                 HOLIDAYTYPE.fnumber holidayCode,
+                                 PROPOSER.fnumber peopleCode,
+                                 PROPOSER.FNAME_L2 people,
+                                 PROPOSER.FCELL telphone,
+                                 null BeginDate,
+                                 null EndDate,
+                                 null validYear,
+                                 '' 有效期年度,
+                                 null realLimit,
+                                 null usedLimit,
+                                 null freezeLimit,
+                                 null remainLimit,
+                                 ( CASE WHEN PROPOSER.FGender = 1 AND HOLIDAYTYPE.fnumber IN ( 'RS010', 'RS01401', 'RS01402', 'RS01403', 'RS01404', 'RS016', 'RS018', 'RS019', 'RS020', 'RS028', 'RS052', 'RS053' ) THEN '隐藏'
+                                        WHEN PROPOSER.FGender = 2 AND HOLIDAYTYPE.fnumber IN ( 'RS015' ) THEN '隐藏' ELSE '不隐藏' END ) isread
+                          FROM T_HR_ATS_AtsHolidayFile ATSHOLIDAYFILE
+                                   LEFT JOIN T_HR_ATS_HolidayPolicy HOLIDAYPOLICY ON ATSHOLIDAYFILE.FHolidayPolicySetID = HOLIDAYPOLICY.FHolidayPolicySetID
+                                   LEFT JOIN T_HR_ATS_HolidayType HOLIDAYTYPE ON HOLIDAYPOLICY.FHolidayTypeID = HOLIDAYTYPE.FID
+                                   JOIN T_BD_Person PROPOSER ON ATSHOLIDAYFILE.FProposerID = PROPOSER.FID
+                          WHERE HOLIDAYPOLICY.FIsCtrlLimit=0 AND HOLIDAYTYPE.FState = 1
+                      ) tmp
+                 WHERE isread = '不隐藏'
+                   AND peopleCode = #{peopleCode}
+             )
+    </select>
+    <!-- 获取分页后的数据 -->
+    <select id="getHolidayTypeByUserId" parameterType="java.util.Map" resultType="java.util.Map">-->
+SELECT people, holidayName, holidayCode, realLimit, freezeLimit, unit,validYear, peopleCode, telphone,  usedLimit, remainLimit
+FROM (
+         SELECT HOLIDAYTYPE.FNAME_L2 holidayName,
+                ( CASE WHEN HOLIDAYLIMIT.FHolidayUnit = 1 THEN '天' ELSE '小时' END ) unit,
+                HOLIDAYTYPE.fnumber holidayCode,
+                PROPOSER.fnumber peopleCode,
+                PROPOSER.FNAME_L2 people,
+                PROPOSER.FCELL telphone,
+                HOLIDAYLIMIT.FCycleBeginDate BeginDate,
+                HOLIDAYLIMIT.FCycleEndDate EndDate,
+                HOLIDAYLIMIT.FDelayDate DelayDate,
+                to_char(HOLIDAYLIMIT.fyear ) validYear,
+                HOLIDAYLIMIT.FRealLimit realLimit,
+                HOLIDAYLIMIT.FUsedLimit usedLimit,
+                HOLIDAYLIMIT.FreezeLimit freezeLimit,
+                HOLIDAYLIMIT.FRemainLimit remainLimit,
+                ( CASE WHEN PROPOSER.FGender = 1 AND HOLIDAYTYPE.fnumber IN ( 'RS010', 'RS01401', 'RS01402', 'RS01403', 'RS01404', 'RS016', 'RS018', 'RS019', 'RS020', 'RS028', 'RS052', 'RS053' ) THEN '隐藏'
+                       WHEN PROPOSER.FGender = 2 AND HOLIDAYTYPE.fnumber IN ( 'RS015' ) THEN '隐藏' ELSE '不隐藏' END ) isread
+         FROM T_HR_ATS_AtsHolidayFile ATSHOLIDAYFILE
+                  LEFT JOIN T_HR_ATS_HolidayLimit HOLIDAYLIMIT ON HOLIDAYLIMIT.FProposerID = ATSHOLIDAYFILE.FProposerID
+                  LEFT JOIN T_HR_ATS_HolidayPolicy HOLIDAYPOLICY ON HOLIDAYLIMIT.FHolidayPolicyID = HOLIDAYPOLICY.FID
+                  LEFT JOIN T_HR_ATS_HolidayType HOLIDAYTYPE ON HOLIDAYPOLICY.FHolidayTypeID = HOLIDAYTYPE.FID
+                  LEFT OUTER JOIN T_BD_Person PROPOSER ON ATSHOLIDAYFILE.FProposerID = PROPOSER.FID WHERE HOLIDAYTYPE.FState = 1 ) tmp
+WHERE isread = '不隐藏'
+  AND (to_char( DelayDate, 'yyyymmdd' ) >= to_char( SYSDATE, 'yyyymmdd' ) OR DelayDate IS NULL)
 --           AND (validYear= extract(year from sysdate) OR validYear IS NULL)
-          AND peopleCode = #{peopleCode}
-        union all
-        select people, holidayName, holidayCode, realLimit, freezeLimit, unit,validYear, peopleCode, telphone, usedLimit, remainLimit
-        from
-            (SELECT HOLIDAYTYPE.FNAME_L2 holidayName,
-                    ( CASE WHEN HOLIDAYPOLICY.FUnit = 1 THEN '天' ELSE '小时' END ) unit,
-                    HOLIDAYTYPE.fnumber holidayCode,
-                    PROPOSER.fnumber peopleCode,
-                    PROPOSER.FNAME_L2 people,
-                    PROPOSER.FCELL telphone,
-                    null BeginDate,
-                    null EndDate,
-                    null validYear,
-                    '' 有效期年度,
-                    null realLimit,
-                    null usedLimit,
-                    null freezeLimit,
-                    null remainLimit,
-                    ( CASE WHEN PROPOSER.FGender = 1 AND HOLIDAYTYPE.fnumber IN ( 'RS010', 'RS01401', 'RS01402', 'RS01403', 'RS01404', 'RS016', 'RS018', 'RS019', 'RS020', 'RS028', 'RS052', 'RS053' ) THEN '隐藏'
-                           WHEN PROPOSER.FGender = 2 AND HOLIDAYTYPE.fnumber IN ( 'RS015' ) THEN '隐藏' ELSE '不隐藏' END ) isread
-             FROM T_HR_ATS_AtsHolidayFile ATSHOLIDAYFILE
-                      LEFT JOIN T_HR_ATS_HolidayPolicy HOLIDAYPOLICY ON ATSHOLIDAYFILE.FHolidayPolicySetID = HOLIDAYPOLICY.FHolidayPolicySetID
-                      LEFT JOIN T_HR_ATS_HolidayType HOLIDAYTYPE ON HOLIDAYPOLICY.FHolidayTypeID = HOLIDAYTYPE.FID
-                      JOIN T_BD_Person PROPOSER ON ATSHOLIDAYFILE.FProposerID = PROPOSER.FID
-             WHERE HOLIDAYPOLICY.FIsCtrlLimit=0 AND HOLIDAYTYPE.FState = 1) tmp
-        where
-            isread = '不隐藏'
+  AND peopleCode = #{peopleCode}
+union all
+select people, holidayName, holidayCode, realLimit, freezeLimit, unit,validYear, peopleCode, telphone, usedLimit, remainLimit
+from
+    (SELECT HOLIDAYTYPE.FNAME_L2 holidayName,
+            ( CASE WHEN HOLIDAYPOLICY.FUnit = 1 THEN '天' ELSE '小时' END ) unit,
+            HOLIDAYTYPE.fnumber holidayCode,
+            PROPOSER.fnumber peopleCode,
+            PROPOSER.FNAME_L2 people,
+            PROPOSER.FCELL telphone,
+            null BeginDate,
+            null EndDate,
+            null validYear,
+            '' 有效期年度,
+            null realLimit,
+            null usedLimit,
+            null freezeLimit,
+            null remainLimit,
+            ( CASE WHEN PROPOSER.FGender = 1 AND HOLIDAYTYPE.fnumber IN ( 'RS010', 'RS01401', 'RS01402', 'RS01403', 'RS01404', 'RS016', 'RS018', 'RS019', 'RS020', 'RS028', 'RS052', 'RS053' ) THEN '隐藏'
+                   WHEN PROPOSER.FGender = 2 AND HOLIDAYTYPE.fnumber IN ( 'RS015' ) THEN '隐藏' ELSE '不隐藏' END ) isread
+     FROM T_HR_ATS_AtsHolidayFile ATSHOLIDAYFILE
+              LEFT JOIN T_HR_ATS_HolidayPolicy HOLIDAYPOLICY ON ATSHOLIDAYFILE.FHolidayPolicySetID = HOLIDAYPOLICY.FHolidayPolicySetID
+              LEFT JOIN T_HR_ATS_HolidayType HOLIDAYTYPE ON HOLIDAYPOLICY.FHolidayTypeID = HOLIDAYTYPE.FID
+              JOIN T_BD_Person PROPOSER ON ATSHOLIDAYFILE.FProposerID = PROPOSER.FID
+     WHERE HOLIDAYPOLICY.FIsCtrlLimit=0 AND HOLIDAYTYPE.FState = 1) tmp
+where
+    isread = '不隐藏'
 --           AND (validYear= extract(year from sysdate) OR validYear IS NULL)
-          AND peopleCode = #{peopleCode}
-    </select>
+  AND peopleCode = #{peopleCode}
+ORDER BY holidayCode ASC
+</select>
+
+
+    <!-- 查询节假日 -->
+<!--    <select id="getHolidayTypeByUserId" parameterType="java.util.Map" resultType="java.util.Map">-->
+<!--        SELECT people, holidayName, holidayCode, realLimit, freezeLimit, unit,validYear, peopleCode, telphone,  usedLimit, remainLimit-->
+<!--        FROM (-->
+<!--                 SELECT HOLIDAYTYPE.FNAME_L2 holidayName,-->
+<!--                        ( CASE WHEN HOLIDAYLIMIT.FHolidayUnit = 1 THEN '天' ELSE '小时' END ) unit,-->
+<!--                        HOLIDAYTYPE.fnumber holidayCode,-->
+<!--                        PROPOSER.fnumber peopleCode,-->
+<!--                        PROPOSER.FNAME_L2 people,-->
+<!--                        PROPOSER.FCELL telphone,-->
+<!--                        HOLIDAYLIMIT.FCycleBeginDate BeginDate,-->
+<!--                        HOLIDAYLIMIT.FCycleEndDate EndDate,-->
+<!--                        HOLIDAYLIMIT.FDelayDate DelayDate,-->
+<!--                        to_char(HOLIDAYLIMIT.fyear ) validYear,-->
+<!--                        HOLIDAYLIMIT.FRealLimit realLimit,-->
+<!--                        HOLIDAYLIMIT.FUsedLimit usedLimit,-->
+<!--                        HOLIDAYLIMIT.FreezeLimit freezeLimit,-->
+<!--                        HOLIDAYLIMIT.FRemainLimit remainLimit,-->
+<!--                        ( CASE WHEN PROPOSER.FGender = 1 AND HOLIDAYTYPE.fnumber IN ( 'RS010', 'RS01401', 'RS01402', 'RS01403', 'RS01404', 'RS016', 'RS018', 'RS019', 'RS020', 'RS028', 'RS052', 'RS053' ) THEN '隐藏'-->
+<!--                               WHEN PROPOSER.FGender = 2 AND HOLIDAYTYPE.fnumber IN ( 'RS015' ) THEN '隐藏' ELSE '不隐藏' END ) isread-->
+<!--                 FROM T_HR_ATS_AtsHolidayFile ATSHOLIDAYFILE-->
+<!--                          LEFT JOIN T_HR_ATS_HolidayLimit HOLIDAYLIMIT ON HOLIDAYLIMIT.FProposerID = ATSHOLIDAYFILE.FProposerID-->
+<!--                          LEFT JOIN T_HR_ATS_HolidayPolicy HOLIDAYPOLICY ON HOLIDAYLIMIT.FHolidayPolicyID = HOLIDAYPOLICY.FID-->
+<!--                          LEFT JOIN T_HR_ATS_HolidayType HOLIDAYTYPE ON HOLIDAYPOLICY.FHolidayTypeID = HOLIDAYTYPE.FID-->
+<!--                          LEFT OUTER JOIN T_BD_Person PROPOSER ON ATSHOLIDAYFILE.FProposerID = PROPOSER.FID WHERE HOLIDAYTYPE.FState = 1 ) tmp-->
+<!--        WHERE isread = '不隐藏'-->
+<!--          AND (to_char( DelayDate, 'yyyymmdd' ) >= to_char( SYSDATE, 'yyyymmdd' ) OR DelayDate IS NULL)-->
+<!--&#45;&#45;           AND (validYear= extract(year from sysdate) OR validYear IS NULL)-->
+<!--          AND peopleCode = #{peopleCode}-->
+<!--        union all-->
+<!--        select people, holidayName, holidayCode, realLimit, freezeLimit, unit,validYear, peopleCode, telphone, usedLimit, remainLimit-->
+<!--        from-->
+<!--            (SELECT HOLIDAYTYPE.FNAME_L2 holidayName,-->
+<!--                    ( CASE WHEN HOLIDAYPOLICY.FUnit = 1 THEN '天' ELSE '小时' END ) unit,-->
+<!--                    HOLIDAYTYPE.fnumber holidayCode,-->
+<!--                    PROPOSER.fnumber peopleCode,-->
+<!--                    PROPOSER.FNAME_L2 people,-->
+<!--                    PROPOSER.FCELL telphone,-->
+<!--                    null BeginDate,-->
+<!--                    null EndDate,-->
+<!--                    null validYear,-->
+<!--                    '' 有效期年度,-->
+<!--                    null realLimit,-->
+<!--                    null usedLimit,-->
+<!--                    null freezeLimit,-->
+<!--                    null remainLimit,-->
+<!--                    ( CASE WHEN PROPOSER.FGender = 1 AND HOLIDAYTYPE.fnumber IN ( 'RS010', 'RS01401', 'RS01402', 'RS01403', 'RS01404', 'RS016', 'RS018', 'RS019', 'RS020', 'RS028', 'RS052', 'RS053' ) THEN '隐藏'-->
+<!--                           WHEN PROPOSER.FGender = 2 AND HOLIDAYTYPE.fnumber IN ( 'RS015' ) THEN '隐藏' ELSE '不隐藏' END ) isread-->
+<!--             FROM T_HR_ATS_AtsHolidayFile ATSHOLIDAYFILE-->
+<!--                      LEFT JOIN T_HR_ATS_HolidayPolicy HOLIDAYPOLICY ON ATSHOLIDAYFILE.FHolidayPolicySetID = HOLIDAYPOLICY.FHolidayPolicySetID-->
+<!--                      LEFT JOIN T_HR_ATS_HolidayType HOLIDAYTYPE ON HOLIDAYPOLICY.FHolidayTypeID = HOLIDAYTYPE.FID-->
+<!--                      JOIN T_BD_Person PROPOSER ON ATSHOLIDAYFILE.FProposerID = PROPOSER.FID-->
+<!--             WHERE HOLIDAYPOLICY.FIsCtrlLimit=0 AND HOLIDAYTYPE.FState = 1) tmp-->
+<!--        where-->
+<!--            isread = '不隐藏'-->
+<!--&#45;&#45;           AND (validYear= extract(year from sysdate) OR validYear IS NULL)-->
+<!--          AND peopleCode = #{peopleCode}-->
+<!--        ORDER BY holidayCode ASC-->
+<!--    </select>-->
 
 
 
@@ -127,25 +254,235 @@
     </select>
 <!--    查询岗位信息-->
     <select id="getPosition" resultType="java.util.Map">
-        SELECT PST.FNAME_L2 positionName, PST.FNUMBER positionCode,PST.FSIMPLENAME simpleName,POS.FNAME_L2 jobName,POS.FNUMBER jobCode
+        SELECT PST.FNAME_L2 positionName, PST.FNUMBER positionCode,PST.FSIMPLENAME simpleName,POS.FNAME_L2 jobName,POS.FNUMBER jobCode,ADMIN.FNUMBER orgCode, POS.FDELETEDSTATUS status, ZHIJI.FNAME_L2 zhijiName, ZHIJI.FNUMBER zhijiCode
         FROM
             T_ORG_POSITION POS
-            LEFT JOIN T_HR_RELBETWEENPOSITIONANDLIB RELLIB ON POS.FID = RELLIB.FPOSITIONID
-            LEFT JOIN T_HR_POSITIONSTANDARDLIB PST ON PST.FID = RELLIB.FPOSITIONSTANDARDLIBID
+                LEFT JOIN T_HR_RELBETWEENPOSITIONANDLIB RELLIB ON POS.FID = RELLIB.FPOSITIONID
+                LEFT JOIN T_HR_POSITIONSTANDARDLIB PST ON PST.FID = RELLIB.FPOSITIONSTANDARDLIBID
+                LEFT JOIN T_ORG_ADMIN ADMIN ON ADMIN.FID = POS.FADMINORGUNITID
+
+                LEFT JOIN CT_HR_ZHIJI ZHIJI ON ZHIJI.FID = POS.CFZHIJIID
+
+
     </select>
 <!--    获取人员档案:-->
     <select id="getPerson" resultType="java.util.Map">
-        SELECT PERSON.FCELL phone, PERSON.FNUMBER EHR, PERSON.FNAME_L2 name, PERSON.CFYWM ename,
-               (case when  laborrela.FENTERDATE is null then personpos.FENTERDATE else   laborrela.FENTERDATE end ) HireDate,
-               STANDARLIB.FNAME_L2 positionName, STANDARLIB.FNUMBER positionCode,ADMIN.FNAME_L2 orgName, ADMIN.FNUMBER orgNumber,
-               ZHIJI.FNAME_L2 zhijiName, ZHIJI.FNUMBER zhijiCode,FADMIN.FNAME_L2 companyName,FADMIN.FNUMBER companyCode,EMPHIREBILL.FBIZDATE empDate,
-               PARENTADMIN.FNAME_L2 parentOrgName
+        -- SELECT
+--     PERSON.FCELL AS phone,
+--     PERSON.FNUMBER AS EHR,
+--     PERSON.FNAME_L2 AS name,
+--     PERSON.CFYWM AS ename,
+--     ZHIJI.FNAME_L2 AS zhijiName,
+--     ZHIJI.FNUMBER AS zhijiCode,
+--     (CASE
+--          WHEN laborrela.FENTERDATE IS NULL THEN personpos.FENTERDATE
+--          ELSE laborrela.FENTERDATE
+--      END) AS HireDate,
+--     (CASE
+--          WHEN laborrela.FACTUALFORMALDATE IS NULL THEN laborrela.FPLANFORMALDATE
+--          ELSE laborrela.FACTUALFORMALDATE
+--      END) AS FormDate,
+-- -- 		职位
+--     (CASE
+--          WHEN POSMEMBER.FISPRIMARY = '1' THEN EXPOS.FNAME_L2
+--          ELSE STANDARLIB.FNAME_L2
+--      END) AS positionName,
+--     (CASE
+--          WHEN POSMEMBER.FISPRIMARY = '1' THEN EXPOS.FNUMBER
+--          ELSE STANDARLIB.FNUMBER
+--      END) AS positionCode,
+-- -- 		部门
+--     (CASE
+--          WHEN POSMEMBER.FISPRIMARY = '1' THEN EXDEP.FNAME_L2
+--          ELSE ADMIN.FNAME_L2
+--      END) AS orgName,
+--     (CASE
+--          WHEN POSMEMBER.FISPRIMARY = '1' THEN EXDEP.FNUMBER
+--          ELSE ADMIN.FNUMBER
+--      END) AS orgNum,
+-- -- 			公司
+--  (CASE
+--          WHEN EXDEP.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN EXCOM.FNAME_L2
+--          WHEN EXDEP.FOFFICEID = EXDEP.FID THEN EXCOM.FNAME_L2
+--          WHEN EXDEP.FOFFICEID IS NOT NULL THEN EXCOL.FNAME_L2
+--          ELSE EXCOM.FNAME_L2
+--      END) AS companyName,
+--     -- company code逻辑调整
+--     (CASE
+--          WHEN EXDEP.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN EXCOM.FNUMBER
+--          WHEN EXDEP.FOFFICEID = EXDEP.FID THEN EXCOM.FNUMBER
+--          WHEN EXDEP.FOFFICEID IS NOT NULL THEN EXCOL.FNUMBER
+--          ELSE EXCOM.FNUMBER
+--      END) AS companyCode,
+-- -- 分部
+--
+--    (CASE
+--          WHEN EXDEP.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN EXCOM.FNAME_L2
+--          WHEN EXDEP.FOFFICEID = EXDEP.FID THEN EXCOM.FNAME_L2
+--          WHEN EXDEP.FOFFICEID IS NOT NULL THEN EXCOL.FNAME_L2
+--          ELSE EXCOM.FNAME_L2
+--      END) AS PARENTORGNAME,
+--     -- parent code逻辑调整
+--     (CASE
+--          WHEN EXDEP.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN EXCOM.FNUMBER
+--          WHEN EXDEP.FOFFICEID = EXDEP.FID THEN EXCOM.FNUMBER
+--          WHEN EXDEP.FOFFICEID IS NOT NULL THEN EXCOL.FNUMBER
+--          ELSE EXCOM.FNUMBER
+--      END) AS PARENTORGNUM,
+--     EMPHIREBILL.FBIZDATE AS empDate,
+--     POSMEMBER.FISPRIMARY AS FISPRIMARY
+-- FROM
+--     T_BD_PERSON PERSON
+-- LEFT JOIN T_HR_EmpHireBizBill EMPHIREBILL ON EMPHIREBILL.FAPPLIERID = PERSON.FID
+-- LEFT JOIN T_ORG_POSITIONMEMBER POSMEMBER ON POSMEMBER.FPERSONID = PERSON.FID
+-- LEFT JOIN T_HR_PERSONPOSITION PERPOS ON PERPOS.FPERSONID = PERSON.FID
+-- LEFT JOIN T_ORG_POSITION EXPOS ON PERPOS.FPRIMARYPOSITIONID = EXPOS.FID
+-- LEFT JOIN T_ORG_ADMIN EXDEP ON EXPOS.FADMINORGUNITID = EXDEP.FID
+-- LEFT JOIN T_ORG_ADMIN EXCOL ON EXDEP.FOFFICEID = EXCOL.FID
+-- LEFT JOIN T_ORG_ADMIN EXCOM ON EXDEP.FCOMPANYID = EXCOM.FID
+-- LEFT JOIN T_HR_PERSONCONTACTMETHOD HRPERSON ON HRPERSON.FPERSONID = PERSON.FID
+-- LEFT JOIN T_ORG_POSITION POSITION ON POSMEMBER.FPOSITIONID = POSITION.FID
+-- LEFT JOIN T_ORG_POSITION UPPOSITION ON POSITION.FPARENTID = UPPOSITION.FID
+-- LEFT JOIN T_ORG_POSITIONMEMBER UPPOSMEMBER ON UPPOSMEMBER.FPOSITIONID = UPPOSITION.FID
+-- LEFT JOIN T_BD_PERSON UPPERSON ON UPPOSMEMBER.FPERSONID = UPPERSON.FID
+-- LEFT JOIN T_HR_BDEMPLOYEETYPE EMPLOYEE ON EMPLOYEE.FID = PERSON.FEMPLOYEETYPEID
+-- LEFT JOIN T_HR_PERSONPOSITION PERSONPOS ON PERSON.FID = PERSONPOS.FPERSONID
+-- LEFT JOIN CT_HR_ZHIJI ZHIJI ON ZHIJI.FID = POSITION.CFZHIJIID
+-- LEFT JOIN T_HR_EMPENROLLBIZBILLENTRY ENROLLBIZENTRY ON ENROLLBIZENTRY.FPERSONID = PERSON.FID
+-- LEFT JOIN T_HR_EMPENROLLBIZBILL ENROLLBIZ ON ENROLLBIZ.FID = ENROLLBIZENTRY.FBILLID
+-- LEFT JOIN (
+--     SELECT C.*
+--     FROM (
+--         SELECT FPERSONID, MAX(FBIZDATE) FBIZDATE
+--         FROM T_HR_RESIGNBIZBILLENTRY A
+--         GROUP BY FPERSONID
+--     ) B, T_HR_RESIGNBIZBILLENTRY C
+--     WHERE B.FPERSONID = C.FPERSONID AND B.FBIZDATE = C.FBIZDATE
+-- ) RESIGNENTRY ON RESIGNENTRY.FPERSONID = PERSON.FID
+-- LEFT JOIN T_HR_RESIGNBIZBILL RESIGN ON RESIGN.FID = RESIGNENTRY.FBILLID
+-- LEFT JOIN T_HR_RESIGNBACKBIZBILLENTRY BACKENTRY ON BACKENTRY.FPERSONID = PERSON.FID
+-- LEFT JOIN T_HR_RELBETWEENPOSITIONANDLIB RELLIB ON POSITION.FID = RELLIB.FPOSITIONID
+-- LEFT JOIN T_HR_POSITIONSTANDARDLIB STANDARLIB ON STANDARLIB.FID = RELLIB.FPOSITIONSTANDARDLIBID
+-- LEFT JOIN T_HR_PERSONPOSITION PERSONPOSITION ON PERSONPOSITION.FPERSONID = PERSON.FID
+-- LEFT JOIN T_ORG_ADMIN ADMIN ON PERSONPOSITION.FPERSONDEP = ADMIN.FID
+-- LEFT JOIN T_ORG_ADMIN FADMIN ON PERSONPOSITION.FCOMPANYID = FADMIN.FID
+-- LEFT JOIN T_ORG_ADMIN PARENTADMIN ON ADMIN.FPARENTID = PARENTADMIN.FID
+-- LEFT JOIN T_HR_SHRADMINORGUNITEXTEND EXTEND ON EXTEND.FADMINORGUNITID = ADMIN.FID
+-- LEFT JOIN T_HR_ENTERPRISENATURE NATURE ON EXTEND.FENTERPRISENATUREID = NATURE.FID
+-- LEFT JOIN V_COS_ORG COSORG ON ADMIN.FNUMBER = COSORG.ORGNUMBER
+-- LEFT JOIN T_HR_EmpLaborRelation laborrela ON laborrela.FPERSONID = person.fid
+-- LEFT JOIN t_pm_user pu ON person.fid = pu.fpersonid
+-- WHERE nvl(POSMEMBER.FISPRIMARY, '1') = '1';
+        SELECT
+            PERSON.FCELL AS phone,
+            PERSON.FNUMBER AS EHR,
+            PERSON.FNAME_L2 AS name,
+            PERSON.CFYWM AS ename,
+            ZHIJI.FNAME_L2 AS zhijiName,
+            ZHIJI.FNUMBER AS zhijiCode,
+            (CASE
+                 WHEN laborrela.FENTERDATE IS NULL THEN personpos.FENTERDATE
+                 ELSE laborrela.FENTERDATE
+                END) AS HireDate,
+            (CASE
+                 WHEN laborrela.FACTUALFORMALDATE IS NULL THEN laborrela.FPLANFORMALDATE
+                 ELSE laborrela.FACTUALFORMALDATE
+                END) AS FormDate,
+-- 		职位
+            (CASE
+                 WHEN POSMEMBER.FISPRIMARY = '1' THEN EXPOS.FNAME_L2
+                 ELSE STANDARLIB.FNAME_L2
+                END) AS positionName,
+            (CASE
+                 WHEN POSMEMBER.FISPRIMARY = '1' THEN EXPOS.FNUMBER
+                 ELSE STANDARLIB.FNUMBER
+                END) AS positionCode,
+-- 		部门
+            (CASE
+                 WHEN POSMEMBER.FISPRIMARY = '1' THEN EXDEP.FNAME_L2
+                 ELSE ADMIN.FNAME_L2
+                END) AS orgName,
+            (CASE
+                 WHEN POSMEMBER.FISPRIMARY = '1' THEN EXDEP.FNUMBER
+                 ELSE ADMIN.FNUMBER
+                END) AS orgNum,
+            (CASE
+                 WHEN POSMEMBER.FISPRIMARY = '1' THEN EXDEP.FDISPLAYNAME_L2
+                 ELSE ADMIN.FDISPLAYNAME_L2
+                END) AS orgLineName,
+-- 			公司
+            (CASE
+                 WHEN EXDEP.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN EXCOM.FNAME_L2
+                 ELSE (CASE
+                           WHEN (CASE
+                                     WHEN POSMEMBER.FISPRIMARY = '1' THEN EXPOS.FNAME_L2
+                                     ELSE STANDARLIB.FNAME_L2
+                               END) LIKE '%校长%' THEN EXCOL.FNAME_L2
+                           ELSE (CASE
+                                     WHEN EXDEP.FOFFICEID = EXDEP.FID THEN EXCOM.FNAME_L2
+                                     WHEN EXDEP.FOFFICEID IS NOT NULL THEN EXCOL.FNAME_L2
+                                     ELSE EXCOM.FNAME_L2
+                               END)
+                     END)
+                END) AS companyName,
+            -- company code逻辑调整
+            (CASE
+                 WHEN EXDEP.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN EXCOM.FNUMBER
+                 ELSE (CASE
+                           WHEN (CASE
+                                     WHEN POSMEMBER.FISPRIMARY = '1' THEN EXPOS.FNAME_L2
+                                     ELSE STANDARLIB.FNAME_L2
+                               END) LIKE '%校长%' THEN EXCOL.FNUMBER
+                           ELSE (CASE
+                                     WHEN EXDEP.FOFFICEID = EXDEP.FID THEN EXCOM.FNUMBER
+                                     WHEN EXDEP.FOFFICEID IS NOT NULL THEN EXCOL.FNUMBER
+                                     ELSE EXCOM.FNUMBER
+                               END)
+                     END)
+                END) AS companyCode,
+-- 分部
+            (CASE
+                 WHEN EXDEP.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN EXCOM.FNAME_L2
+                 ELSE (CASE
+                           WHEN (CASE
+                                     WHEN POSMEMBER.FISPRIMARY = '1' THEN EXPOS.FNAME_L2
+                                     ELSE STANDARLIB.FNAME_L2
+                               END) LIKE '%校长%' THEN EXCOL.FNAME_L2
+                           ELSE (CASE
+                                     WHEN EXDEP.FOFFICEID = EXDEP.FID THEN EXCOM.FNAME_L2
+                                     WHEN EXDEP.FOFFICEID IS NOT NULL THEN EXCOL.FNAME_L2
+                                     ELSE EXCOM.FNAME_L2
+                               END)
+                     END)
+                END) AS PARENTORGNAME,
+            -- parent code逻辑调整
+            (CASE
+                 WHEN EXDEP.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN EXCOM.FNUMBER
+                 ELSE (CASE
+                           WHEN (CASE
+                                     WHEN POSMEMBER.FISPRIMARY = '1' THEN EXPOS.FNAME_L2
+                                     ELSE STANDARLIB.FNAME_L2
+                               END) LIKE '%校长%' THEN EXCOL.FNUMBER
+                           ELSE (CASE
+                                     WHEN EXDEP.FOFFICEID = EXDEP.FID THEN EXCOM.FNUMBER
+                                     WHEN EXDEP.FOFFICEID IS NOT NULL THEN EXCOL.FNUMBER
+                                     ELSE EXCOM.FNUMBER
+                               END)
+                     END)
+                END) AS PARENTORGNUM,
+            EMPHIREBILL.FBIZDATE AS empDate,
+            POSMEMBER.FISPRIMARY AS FISPRIMARY
         FROM
             T_BD_PERSON PERSON
-            LEFT JOIN T_HR_EmpHireBizBill EMPHIREBILL ON EMPHIREBILL.FAPPLIERID = PERSON.FID
-            LEFT JOIN T_ORG_POSITIONMEMBER POSMEMBER ON POSMEMBER.FPERSONID = PERSON.FID
-            LEFT JOIN T_HR_PERSONCONTACTMETHOD HRPERSON  ON HRPERSON.FPERSONID = PERSON.FID
-            LEFT JOIN T_ORG_POSITION POSITION ON POSMEMBER.FPOSITIONID = POSITION.FID
+                LEFT JOIN T_HR_EmpHireBizBill EMPHIREBILL ON EMPHIREBILL.FAPPLIERID = PERSON.FID
+                LEFT JOIN T_ORG_POSITIONMEMBER POSMEMBER ON POSMEMBER.FPERSONID = PERSON.FID
+                LEFT JOIN T_HR_PERSONPOSITION PERPOS ON PERPOS.FPERSONID = PERSON.FID
+                LEFT JOIN T_ORG_POSITION EXPOS ON PERPOS.FPRIMARYPOSITIONID = EXPOS.FID
+                LEFT JOIN T_ORG_ADMIN EXDEP ON EXPOS.FADMINORGUNITID = EXDEP.FID
+                LEFT JOIN T_ORG_ADMIN EXCOL ON EXDEP.FOFFICEID = EXCOL.FID
+                LEFT JOIN T_ORG_ADMIN EXCOM ON EXDEP.FCOMPANYID = EXCOM.FID
+                LEFT JOIN T_HR_PERSONCONTACTMETHOD HRPERSON ON HRPERSON.FPERSONID = PERSON.FID
+                LEFT JOIN T_ORG_POSITION POSITION ON POSMEMBER.FPOSITIONID = POSITION.FID
             LEFT JOIN T_ORG_POSITION UPPOSITION ON POSITION.FPARENTID = UPPOSITION.FID
             LEFT JOIN T_ORG_POSITIONMEMBER UPPOSMEMBER ON UPPOSMEMBER.FPOSITIONID = UPPOSITION.FID
             LEFT JOIN T_BD_PERSON UPPERSON ON UPPOSMEMBER.FPERSONID = UPPERSON.FID
@@ -154,12 +491,15 @@
             LEFT JOIN CT_HR_ZHIJI ZHIJI ON ZHIJI.FID = POSITION.CFZHIJIID
             LEFT JOIN T_HR_EMPENROLLBIZBILLENTRY ENROLLBIZENTRY ON ENROLLBIZENTRY.FPERSONID = PERSON.FID
             LEFT JOIN T_HR_EMPENROLLBIZBILL ENROLLBIZ ON ENROLLBIZ.FID = ENROLLBIZENTRY.FBILLID
-            LEFT JOIN (SELECT C.*
-                FROM (SELECT FPERSONID, MAX(FBIZDATE) FBIZDATE
-                    FROM T_HR_RESIGNBIZBILLENTRY A
-                         -- WHERE FPERSONID = 'Dy8AAAABsjCA733t'
-                    GROUP BY FPERSONID) B, T_HR_RESIGNBIZBILLENTRY C WHERE B.FPERSONID = C.FPERSONID
-                    AND B.FBIZDATE = C.FBIZDATE) RESIGNENTRY ON RESIGNENTRY.FPERSONID = PERSON.FID
+            LEFT JOIN (
+            SELECT C.*
+            FROM (
+            SELECT FPERSONID, MAX(FBIZDATE) FBIZDATE
+            FROM T_HR_RESIGNBIZBILLENTRY A
+            GROUP BY FPERSONID
+            ) B, T_HR_RESIGNBIZBILLENTRY C
+            WHERE B.FPERSONID = C.FPERSONID AND B.FBIZDATE = C.FBIZDATE
+            ) RESIGNENTRY ON RESIGNENTRY.FPERSONID = PERSON.FID
             LEFT JOIN T_HR_RESIGNBIZBILL RESIGN ON RESIGN.FID = RESIGNENTRY.FBILLID
             LEFT JOIN T_HR_RESIGNBACKBIZBILLENTRY BACKENTRY ON BACKENTRY.FPERSONID = PERSON.FID
             LEFT JOIN T_HR_RELBETWEENPOSITIONANDLIB RELLIB ON POSITION.FID = RELLIB.FPOSITIONID
@@ -171,17 +511,95 @@
             LEFT JOIN T_HR_SHRADMINORGUNITEXTEND EXTEND ON EXTEND.FADMINORGUNITID = ADMIN.FID
             LEFT JOIN T_HR_ENTERPRISENATURE NATURE ON EXTEND.FENTERPRISENATUREID = NATURE.FID
             LEFT JOIN V_COS_ORG COSORG ON ADMIN.FNUMBER = COSORG.ORGNUMBER
-            LEFT JOIN T_HR_EmpLaborRelation laborrela ON laborrela.FPERSONID  = person.fid   -- 入职日期
-            left join t_pm_user pu on person.fid=pu.fpersonid
-            WHERE nvl(POSMEMBER.FISPRIMARY,'1') = 1
-
-
+            LEFT JOIN T_HR_EmpLaborRelation laborrela ON laborrela.FPERSONID = person.fid
+            LEFT JOIN t_pm_user pu ON person.fid = pu.fpersonid
+        WHERE nvl(POSMEMBER.FISPRIMARY, '1') = '1'
     </select>
 
 <!--    查询部门  T_ORG_ADMIN-->
     <select id="getOrg" parameterType="String" resultType="java.util.Map">
-        SELECT FNAME_L2 orgName, FNUMBER orgCode, FDISPLAYNAME_L2 orgLineName FROM T_ORG_ADMIN
+--         SELECT FNAME_L2 orgName, FNUMBER orgCode, FDISPLAYNAME_L2 orgLineName FROM T_ORG_ADMIN
+SELECT
+    PST.FNAME_L2 positionName,
+    PST.FNUMBER positionCode,
+    PST.FSIMPLENAME simpleName,
+    POS.FNAME_L2 jobName,
+    POS.FNUMBER jobCode,
+    ADMIN.FNUMBER orgCode,
+    ADMIN.FNAME_L2 orgName,
+    ADMIN.FDISPLAYNAME_L2 orgLineName,
+    POS.FDELETEDSTATUS status,
+    ZHIJI.FNAME_L2 zhijiName,
+    ZHIJI.FNUMBER zhijiCode,
+    -- parent name逻辑调整
+    (CASE
+         WHEN PST.FNAME_L2 = '校长' THEN
+             (CASE
+                  WHEN ADMIN.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN COMADMIN.FNAME_L2
+                  WHEN ADMIN.FOFFICEID IS NOT NULL THEN PARADMIN.FNAME_L2
+                  ELSE COMADMIN.FNAME_L2
+                 END)
+         ELSE
+             (CASE
+                  WHEN ADMIN.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN COMADMIN.FNAME_L2
+                  WHEN ADMIN.FOFFICEID = ADMIN.FID THEN COMADMIN.FNAME_L2
+                  WHEN ADMIN.FOFFICEID IS NOT NULL THEN PARADMIN.FNAME_L2
+                  ELSE COMADMIN.FNAME_L2
+                 END)
+        END) AS PARENTORGNAME,
+    -- parent code逻辑调整
+    (CASE
+         WHEN PST.FNAME_L2 = '校长' THEN
+             (CASE
+                  WHEN ADMIN.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN COMADMIN.FNUMBER
+                  WHEN ADMIN.FOFFICEID IS NOT NULL THEN PARADMIN.FNUMBER
+                  ELSE COMADMIN.FNUMBER
+                 END)
+         ELSE
+             (CASE
+                  WHEN ADMIN.FCOMPANYID = '00000000-0000-0000-0000-000000000000CCE7AED4' THEN COMADMIN.FNUMBER
+                  WHEN ADMIN.FOFFICEID = ADMIN.FID THEN COMADMIN.FNUMBER
+                  WHEN ADMIN.FOFFICEID IS NOT NULL THEN PARADMIN.FNUMBER
+                  ELSE COMADMIN.FNUMBER
+                 END)
+        END) AS PARENTORGNUM
+FROM
+    T_ORG_POSITION POS
+        LEFT JOIN T_HR_RELBETWEENPOSITIONANDLIB RELLIB ON POS.FID = RELLIB.FPOSITIONID
+        LEFT JOIN T_HR_POSITIONSTANDARDLIB PST ON PST.FID = RELLIB.FPOSITIONSTANDARDLIBID
+        LEFT JOIN T_ORG_ADMIN ADMIN ON ADMIN.FID = POS.FADMINORGUNITID
+        LEFT JOIN T_ORG_ADMIN PARADMIN ON PARADMIN.FID = ADMIN.FOFFICEID
+        LEFT JOIN T_ORG_ADMIN COMADMIN ON COMADMIN.FID = ADMIN.FCOMPANYID
+        LEFT JOIN CT_HR_ZHIJI ZHIJI ON ZHIJI.FID = POS.CFZHIJIID
     </select>
 
+<!--    根据申请人的ehr编号获取直线领导的信息-->
+    <select id="getDirectSuperior" parameterType="java.util.Map" resultType="String">
+        SELECT UPPERSON.FNUMBER AS upperSonNumber
+        FROM
+            T_BD_PERSON PERSON
+            LEFT JOIN T_ORG_POSITIONMEMBER POSMEMBER ON POSMEMBER.FPERSONID = PERSON.FID
+            LEFT JOIN T_ORG_POSITION POSITION ON POSMEMBER.FPOSITIONID = POSITION.FID
+            LEFT JOIN T_ORG_POSITION UPPOSITION ON POSITION.FPARENTID = UPPOSITION.FID
+            LEFT JOIN T_ORG_POSITIONMEMBER UPPOSMEMBER ON UPPOSMEMBER.FPOSITIONID = UPPOSITION.FID
+            LEFT JOIN T_BD_PERSON UPPERSON ON UPPOSMEMBER.FPERSONID = UPPERSON.FID
+        WHERE
+            PERSON.FNUMBER = #{peopleCode}
+          AND ROWNUM = 1
+
+    </select>
+
+<!--    根据校区名称获取教务岗位的人员编码-->
+    <select id="getEduPostPerson" parameterType="java.util.Map" resultType="String">
+        SELECT DISTINCT PERSON.FNUMBER AS PERSONNUMBER
+        FROM T_BD_PERSON PERSON
+                 LEFT JOIN T_ORG_POSITIONMEMBER POSMEMBER ON POSMEMBER.FPERSONID = PERSON.FID
+                 LEFT JOIN T_ORG_POSITION POSITION ON POSMEMBER.FPOSITIONID = POSITION.FID
+            LEFT JOIN T_ORG_ADMIN ADMIN ON ADMIN.FID = POSITION.FADMINORGUNITID
+            LEFT JOIN T_ORG_ADMIN FADMIN ON FADMIN.FID = ADMIN.FPARENTID
+        WHERE FADMIN.FNAME_L2 = #{campusName}
+          AND POSITION.FNAME_L2 LIKE '%' || #{positionKeyword} || '%'
+
+    </select>
 
 </mapper>

+ 67 - 1
src/test/java/ruisi/com/ruisiehr/RuiSiEhrApplicationTests.java

@@ -1,15 +1,20 @@
 package ruisi.com.ruisiehr;
 
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.dingtalk.DDR_New;
 import com.malk.service.dingtalk.DDClient;
 import com.malk.service.dingtalk.DDClient_Contacts;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import ruisi.com.ruisiehr.Utils.MianDengUtils;
 
 import java.sql.Timestamp;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.Instant;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -29,7 +34,12 @@ class RuiSiEhrApplicationTests {
 
     @Test
 
-    void test() {
+    void test() throws Exception {
+        MianDengUtils  md=new MianDengUtils();
+    String url= md.getUrl("1005700");
+    System.out.println("url:"+url);
+
+
         ///一批量的HR数据(所属公司字段,所在分部字段)
         //根据公司得出depid; 文本,depid
         //根据公司depid+所在分部字段  ===dept_id
@@ -62,6 +72,53 @@ class RuiSiEhrApplicationTests {
        System.out.println(ssgsid+";"+ssfbID);
 
 
+    }
+    private List<Long> convertToListOfLong(List<?> list) {
+        List<Long> result = new ArrayList<>();
+        for (Object item : list) {
+            if (item instanceof Integer) {
+                result.add(((Integer) item).longValue());
+            } else if (item instanceof Long) {
+                result.add((Long) item);
+            } else {
+                System.err.println("Unsupported type in list: " + item.getClass().getName());
+            }
+        }
+        return result;
+    }
+    @Test
+    void test2() throws ParseException {
+        Map map = ddClient_contacts.listParentByUser(dClient.getAccessToken(),"sh1530");
+//        System.out.println(map.get("parent_list"));
+        List<Map> list = (List<Map>) map.get("parent_list");
+        List<Object>  deptIdList = (List<Object>) list.get(0).get("parent_dept_id_list");
+        System.out.println(deptIdList);
+        for (Object o:deptIdList){
+            System.out.println(o);
+        }
+
+
+
+//        if (deptIdList instanceof List) {
+//            List<?> deptList = (List<?>) deptIdList;
+//
+//            // 确定 List 中元素的类型
+//            List<Long> convertedDeptIdList = convertToListOfLong(deptList);
+//
+//            if (convertedDeptIdList != null) {
+//                // 打印 parent_dept_id_list 中的所有部门 ID
+//                for (Long deptId : convertedDeptIdList) {
+//                    System.out.println(deptId);
+//                }
+//            } else {
+//                System.out.println("Failed to convert department IDs.");
+//            }
+//        } else {
+//            System.out.println("parent_dept_id_list is not a List.");
+//        }
+
+
+
     }
 
     @Test
@@ -77,3 +134,12 @@ class RuiSiEhrApplicationTests {
     }
 
 }
+
+
+
+
+
+
+
+
+