瀏覽代碼

项目迁移

zhang-kan-kan 2 年之前
父節點
當前提交
3cca6f7dff

+ 7 - 6
src/main/java/com/muzhi/shennongshi/controller/DingOaController.java

@@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
 import java.util.Map;
 
 
@@ -67,18 +68,18 @@ public class DingOaController {
 //    @Scheduled(cron = "0 10 0 * * ?")//每天00:10触发(也就是凌晨0点10分触发)
 //    @Scheduled(cron = "0 0/10 * * * ?")//每10分钟执行一次
 //    @Scheduled(cron = "0 */10 * * * ?")//每隔10分钟执行一次
-    public String getRenyuanleixing(String userid){
+    public Map getRenyuanleixing(String userid){
 
-        String renyuanleixing = dingOaService.getRenyuanleixing(userid);
+        Map renyuanleixing = dingOaService.getRenyuanleixing(userid);
         return renyuanleixing;
     }
 
     //表单提交时校验(加班)
     @ApiOperation(value = "表单提交时校验(加班)")
     @GetMapping("getJBJY")
-    public Map getJBJY(String rylx,String jbbcfs){
+    public Map getJBJY(String ygcj,String sfxjbf,String jbbcfs){
 
-        Map jbjy = dingOaService.getJBJY(rylx,jbbcfs);
+        Map jbjy = dingOaService.getJBJY(ygcj,sfxjbf,jbbcfs);
 
         return jbjy;
     }
@@ -105,9 +106,9 @@ public class DingOaController {
 //    @Scheduled(cron = "0 10 0 * * ?")//每天00:10触发(也就是凌晨0点10分触发)
 //    @Scheduled(cron = "0 0/10 * * * ?")//每10分钟执行一次
 //    @Scheduled(cron = "0 */10 * * * ?")//每隔10分钟执行一次
-    public R revocationProcessInstances(String processInstances,String ygjqlx,String userid){
+    public R revocationProcessInstances(String processInstances, String userid){//,String ygjqlx,String userid
 
-        R revocationProcessInstances = dingOaService.revocationProcessInstances(processInstances,ygjqlx,userid);
+        R revocationProcessInstances = dingOaService.revocationProcessInstances(processInstances, userid);//,ygjqlx,userid
         return revocationProcessInstances;
     }
 

+ 4 - 3
src/main/java/com/muzhi/shennongshi/service/DingOaService.java

@@ -2,6 +2,7 @@ package com.muzhi.shennongshi.service;
 
 import com.muzhi.shennongshi.common.R;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -28,10 +29,10 @@ public interface DingOaService {
     /**
      * 表单打开时加载(人员类型)
      */
-    String getRenyuanleixing(String userid);
+    Map getRenyuanleixing(String userid);
 
     //表单提交时校验(加班)
-    Map getJBJY(String rylx,String jbbcfs);
+    Map getJBJY(String ygcj,String sfxjbf,String jbbcfs);
 
     /**
      * 表单打开时加载(员工假期类型)
@@ -41,7 +42,7 @@ public interface DingOaService {
     /**
      * 请假审批表单提交后反校验是否提交单据内容是否符合规则,不符合执行撤销审批实例
      */
-    R revocationProcessInstances(String processInstances,String ygjqlx,String userid);
+    R revocationProcessInstances(String processInstances, String userid);//,String ygjqlx,String userid
 
     //表单提交时校验(部门)
 //    Map getBMJY(String bmid);

+ 77 - 27
src/main/java/com/muzhi/shennongshi/service/impl/DingOaServiceImpl.java

@@ -106,17 +106,25 @@ public class DingOaServiceImpl implements DingOaService {
      */
     @Override
     public String dateToMySQL(String userid,String htgsid,String sxrq) throws Exception{
-        log.info("获取当前表单传参待更新人员userid:" + userid);
+        log.info("获取当前表单传参人员userid:" + userid);//批量选择人员,OA审批传参是个数组
         log.info("获取当前表单传参待更新人员合同公司id:" + htgsid);
         log.info("获取当前表单传参待更新生效日期:" + sxrq);
 
         Date date = new SimpleDateFormat("yyyy-MM-dd").parse(sxrq);
 
         DateShennongshi dateShennongshi = new DateShennongshi();
-        dateShennongshi.setUserid(userid);
-        dateShennongshi.setHtgsid(htgsid);
-        dateShennongshi.setDate(date);
-        dateShennongshiMapper.insert(dateShennongshi);
+
+        JSONArray jsonArray = JSON.parseArray(userid);
+        for (int i = 0; i < jsonArray.size(); i++) {
+            String useridString = jsonArray.getString(i);
+            System.out.println("循环获取批量人员id:" + useridString);
+
+            dateShennongshi.setUserid(useridString);
+            dateShennongshi.setHtgsid(htgsid);
+            dateShennongshi.setDate(date);
+            dateShennongshiMapper.insert(dateShennongshi);
+        }
+
 
         return "生效日期同步数据库结束!";
     }
@@ -234,12 +242,17 @@ public class DingOaServiceImpl implements DingOaService {
      * 表单打开时加载(人员类型)
      */
     @Override
-    public String getRenyuanleixing(String userid){
+    public Map getRenyuanleixing(String userid){
+//        userid = "011033176057775267";
         log.info("获取当前表单传参人员userid:" + userid);
 
         //智能人事获取员工花名册信息,抓取【人员类型】字段信息
         String body = null;
-        String label = null;
+
+        String sfxjbf = null;
+        String ygcj = null;
+
+        Map map = new HashMap();
         try {
             DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/list");
             OapiSmartworkHrmEmployeeV2ListRequest req = new OapiSmartworkHrmEmployeeV2ListRequest();
@@ -255,44 +268,62 @@ public class DingOaServiceImpl implements DingOaService {
             JSONArray field_data_list = result.getJSONObject(0).getJSONArray("field_data_list");
 
             for (int i = 0; i < field_data_list.size(); i++) {
+
                 //字段code
                 String field_code = field_data_list.getJSONObject(i).getString("field_code");
 //                log.info("当前花名册字段field_code:" + field_code);
+                JSONArray field_value_list = field_data_list.getJSONObject(i).getJSONArray("field_value_list");
                 switch (field_code) {
-                    //人员类型
+                    //是否享加班费
                     case "691436b8-b2ed-4f7d-b4dd-d8cd7a6fc98b":
-                        JSONArray field_value_list = field_data_list.getJSONObject(i).getJSONArray("field_value_list");
-                        //人员类型
-                        label = field_value_list.getJSONObject(0).getString("label");
+                        //是否享加班费
+                        sfxjbf = field_value_list.getJSONObject(0).getString("label");
+                        log.info("是否享加班费:" + sfxjbf);
+
                         //当前字段下标
-                        int old_index = i;
-                        log.info("当前字段下标:" + old_index);
+//                        int old_index = i;
+//                        log.info("当前字段下标:" + old_index);
+                        break;
+
+                    //员工层级
+                    case "5df5b7a7-80ba-487a-8f68-26649b408f69":
+                        //员工层级
+                        ygcj = field_value_list.getJSONObject(0).getString("label");
+                        log.info("员工层级:" + ygcj);
+
+                        //当前字段下标
+//                        int old_index = i;
+//                        log.info("当前字段下标:" + old_index);
                         break;
                 }
             }
         } catch (ApiException e) {
             e.printStackTrace();
         }
-        log.info("人员类型:" + label);
 
-        return label;
+        map.put("sfxjbf",sfxjbf);
+        map.put("ygcj",ygcj);
+
+        return map;
     }
 
     /**
      * 表单提交时校验(加班)
-     * @param rylx(连接器传参人员类型)
+     * @param ygcj(连接器传参员工层级)
+     * @param sfxjbf(连接器传参是否享加班费)
      * @param jbbcfs(连接器传参加班补偿方式)
      * @return
      */
 
     @Override
-    public Map getJBJY(String rylx,String jbbcfs){
-        System.out.println("连接器传参人员类型:" + rylx);
+    public Map getJBJY(String ygcj,String sfxjbf,String jbbcfs){
+        System.out.println("连接器传参员工层级:" + ygcj);
+        System.out.println("连接器传参是否享加班费:" + sfxjbf);
         System.out.println("连接器传参加班补偿方式:" + jbbcfs);
 
         Boolean zhi = null;
 
-        if (rylx.equals("领导")){
+        if (ygcj.equals("项目点管理层") && !sfxjbf.equals("是")){
             if (jbbcfs.equals("转调休")){
                 zhi = true;
             }else {
@@ -306,7 +337,7 @@ public class DingOaServiceImpl implements DingOaService {
 
         Map map = new HashMap();
         map.put("jiaoyanjieguo", zhi);
-        map.put("jiaoyanxinxi","【领导】人员,不允许选择加班费,请重新选择!");
+        map.put("jiaoyanxinxi","该【项目管理层】人员只允许选择转调休,不允许选择转加班费,请重新选择!");
 
         return map;
     }
@@ -381,10 +412,10 @@ public class DingOaServiceImpl implements DingOaService {
      */
     @Async
     @Override
-    public R revocationProcessInstances(String processInstances,String ygjqlx,String userid){
+    public R revocationProcessInstances(String processInstances,String userid){//,String ygjqlx,String userid
         log.info("获取当前表单传参审批实例id:" + processInstances);
-        log.info("获取当前员工假期类型:" + ygjqlx);
-        log.info("获取当前员工userid:" + userid);
+//        log.info("获取当前员工假期类型:" + ygjqlx);
+        log.info("获取当前操作员工userid:" + userid);
 
         //查询请假审批单实例详情,获取请假类型
         JSONObject jsonObject = null;
@@ -395,7 +426,7 @@ public class DingOaServiceImpl implements DingOaService {
             getProcessInstanceHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
             com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceRequest getProcessInstanceRequest = new com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceRequest()
                     //审批实例id
-                    .setProcessInstanceId(processInstances);
+                    .setProcessInstanceId(processInstances);//Db3mFphWS5Owmhn-9Unm9A03521678342859
 
             GetProcessInstanceResponse processInstanceWithOptions = client.getProcessInstanceWithOptions(getProcessInstanceRequest, getProcessInstanceHeaders, new RuntimeOptions());
             System.out.println(JSON.toJSONString(processInstanceWithOptions.getBody()));
@@ -428,6 +459,25 @@ public class DingOaServiceImpl implements DingOaService {
         }
         log.info("当前请假套件选择的请假类型:" + qjlx);
 
+//        JSONArray operationRecords = result.getJSONArray("operationRecords");
+//        //流程发起人:实际请假人
+//        String shijiqingjiarenID = null;
+//        for (int x = 0; x < operationRecords.size(); x++) {
+//            //流程发起人:实际请假人
+//            String type = operationRecords.getJSONObject(x).getString("type");
+//            switch (type) {
+//                //流程发起人:实际请假人
+//                case "START_PROCESS_INSTANCE":
+//                    shijiqingjiarenID = operationRecords.getJSONObject(x).getString("userId");
+//                    break;
+//            }
+//        }
+        String shijiqingjiarenID = result.getString("originatorUserId");
+        log.info("流程发起人:实际请假人:" + shijiqingjiarenID);
+
+        //调用员工假期类型方法
+        String ygjqlx = getJiaqileixing(shijiqingjiarenID);
+
         //世界标准时间
         Date Date = new Date();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
@@ -438,7 +488,7 @@ public class DingOaServiceImpl implements DingOaService {
         System.out.println("世界标准时间:" + format);
 
         //判断当前员工类型属于【退休返聘】,则不能提交【年假】的请假类型
-        if (ygjqlx.equals("退休返聘") && qjlx.equals("年假")){
+        if (ygjqlx.equals("退休返聘") && !qjlx.equals("事假") || ygjqlx.equals("兼职") || ygjqlx.equals("劳务外包-退休返聘") && !qjlx.equals("事假") || ygjqlx.equals("劳务外包-兼职")){
             //一、发起自由任务的通知
             try {
                 com.aliyun.dingtalkproject_1_0.Client client = createClient1();
@@ -497,7 +547,7 @@ public class DingOaServiceImpl implements DingOaService {
                         //审批实例id
                         .setProcessInstanceId(processInstances)
                         //终止说明
-                        .setRemark("当前人员属于【退休返聘】,不能提交年假,系统自动发起撤销!");
+                        .setRemark("当前人员属于【" + ygjqlx + "】,不能提交【" + qjlx + "】,系统自动发起撤销!");
 
                 client.terminateProcessInstanceWithOptions(terminateProcessInstanceRequest, terminateProcessInstanceHeaders, new com.aliyun.teautil.models.RuntimeOptions());
             } catch (TeaException err) {
@@ -511,7 +561,7 @@ public class DingOaServiceImpl implements DingOaService {
                 }
             }
             return R.error().message("当前人员属于【退休返聘】,不能提交年假,将发起审批撤回!");
-        }else {//else if TODO【继续写其他条件判断】
+        }else {
             return R.ok().message("正常通过提交...");
         }