zhang-kan-kan před 2 roky
rodič
revize
5bc35fd929

+ 2 - 2
src/main/java/com/muzhi/meidiai/controller/DingOaController.java

@@ -82,9 +82,9 @@ public class DingOaController {
     // 如有,则审批不通过,并弹窗提示:当前项目你已提交过加班!
     @ApiOperation(value = "表单提交时校验")
     @GetMapping("getXiangMuIsNullJY")
-    public Map getXiangMuIsNullJY(String userid,String xmbh){
+    public Map getXiangMuIsNullJY(String userid,String xmbh,String startTime,String endTime){
 
-        Map xiangMuJY = dingOaService.getXiangMuIsNullJY(userid,xmbh);
+        Map xiangMuJY = dingOaService.getXiangMuIsNullJY(userid,xmbh,startTime,endTime);
 
         return xiangMuJY;
     }

+ 1 - 1
src/main/java/com/muzhi/meidiai/service/DingOaService.java

@@ -34,7 +34,7 @@ public interface DingOaService {
 
     //OA【加班】审批表单提交校验:判断当前审批发起人提交【加班】中关联的项目(编号)是否提交过审批(包含已提交、撤销、拒绝),
     // 如有,则审批不通过,并弹窗提示:当前项目你已提交过加班!
-    Map getXiangMuIsNullJY(String userid,String xmbh);
+    Map getXiangMuIsNullJY(String userid,String xmbh,String startTime,String endTime);
 
     /*
      * 抓取钉钉出差外勤打卡信息更新至宜搭【出差明细中间表】

+ 230 - 134
src/main/java/com/muzhi/meidiai/service/impl/DingOaServiceImpl.java

@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
 import java.net.URL;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -54,63 +55,67 @@ public class DingOaServiceImpl implements DingOaService {
 
         JSONObject jsonObject = null;
 
-        try {
-            com.aliyun.dingtalkyida_1_0.Client client = createClient();
-            com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders searchFormDatasHeaders = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders();
-            searchFormDatasHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
-            com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest searchFormDatasRequest = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest()
-                    //宜搭应用秘钥
-                    .setSystemToken("ETA66681XCH5NWT9CNL9V88ZGIB12I8RTWBALZZE")
-                    //每页查询数量
-                    .setPageSize(100)
-                    //当前分页
-                    .setCurrentPage(1)
-                    //宜搭表单ID
-                    .setFormUuid("FORM-CP766081DPN573HYBQCWJADYI6SB232G0RKALL")
-                    //TODO 系统管理员id
-                    .setUserId("yida_pub_account")
-                    //宜搭应用编码
-                    .setAppType("APP_UTWSE5WCXGWTUOEJ9E1D");
+        int size = 100;
+        int page = 1;
 
-            SearchFormDatasResponse searchFormDatasResponse = client.searchFormDatasWithOptions(searchFormDatasRequest, searchFormDatasHeaders, new RuntimeOptions());
-            System.out.println(JSON.toJSONString(searchFormDatasResponse.getBody()));
-            String s = JSON.toJSONString(searchFormDatasResponse.getBody());
-            jsonObject = JSON.parseObject(s);
-            System.out.println("审批详情接口object对象:" + jsonObject);
-        } catch (TeaException err) {
-            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
-                // err 中含有 code 和 message 属性,可帮助开发定位问题
-            }
+        do {
+            try {
+                com.aliyun.dingtalkyida_1_0.Client client = createClient();
+                com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders searchFormDatasHeaders = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders();
+                searchFormDatasHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
+                com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest searchFormDatasRequest = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest()
+                        //宜搭应用秘钥
+                        .setSystemToken("ETA66681XCH5NWT9CNL9V88ZGIB12I8RTWBALZZE")
+                        //每页查询数量
+                        .setPageSize(size)
+                        //当前分页
+                        .setCurrentPage(page)
+                        //宜搭表单ID
+                        .setFormUuid("FORM-CP766081DPN573HYBQCWJADYI6SB232G0RKALL")
+                        //TODO 系统管理员id
+                        .setUserId("yida_pub_account")
+                        //宜搭应用编码
+                        .setAppType("APP_UTWSE5WCXGWTUOEJ9E1D");
+
+                SearchFormDatasResponse searchFormDatasResponse = client.searchFormDatasWithOptions(searchFormDatasRequest, searchFormDatasHeaders, new RuntimeOptions());
+                System.out.println(JSON.toJSONString(searchFormDatasResponse.getBody()));
+                String s = JSON.toJSONString(searchFormDatasResponse.getBody());
+                jsonObject = JSON.parseObject(s);
+                System.out.println("审批详情接口object对象:" + jsonObject);
+            } catch (TeaException err) {
+                if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                    // err 中含有 code 和 message 属性,可帮助开发定位问题
+                }
 
-        } catch (Exception _err) {
-            TeaException err = new TeaException(_err.getMessage(), _err);
-            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
-                // err 中含有 code 和 message 属性,可帮助开发定位问题
-            }
+            } catch (Exception _err) {
+                TeaException err = new TeaException(_err.getMessage(), _err);
+                if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                    // err 中含有 code 和 message 属性,可帮助开发定位问题
+                }
 
-        }
+            }
 
-        JSONArray data = jsonObject.getJSONArray("data");
-        for (int i = 0; data.size()>i; i++){
+            JSONArray data = jsonObject.getJSONArray("data");
+            for (int i = 0; data.size()>i; i++){
 
-            Map map = new HashMap();
+                Map map = new HashMap();
 
-            JSONObject formData = data.getJSONObject(i).getJSONObject("formData");
+                JSONObject formData = data.getJSONObject(i).getJSONObject("formData");
 
-            String xmbh = formData.getString("textField_lakr1jwy");
-            System.out.println("项目编号:" + xmbh);
+                String xmbh = formData.getString("textField_lakr1jwy");
+                System.out.println("项目编号:" + xmbh);
 
-            String xmmc = formData.getString("textField_lajb96s9");
-            System.out.println("项目名称:" + xmmc);
+                String xmmc = formData.getString("textField_lajb96s9");
+                System.out.println("项目名称:" + xmmc);
 
-            String xmfzrid = formData.getString("textField_lbf3y926");
-            System.out.println("项目负责人id:" + xmfzrid);
+                String xmfzrid = formData.getString("textField_lbf3y926");
+                System.out.println("项目负责人id:" + xmfzrid);
 
-            String xmfzrmc = formData.getString("textField_lbf3y925");
-            System.out.println("项目负责人名称:" + xmfzrmc);
+                String xmfzrmc = formData.getString("textField_lbf3y925");
+                System.out.println("项目负责人名称:" + xmfzrmc);
 //
-            String jsdzt = formData.getString("selectField_lbf3y920");
-            System.out.println("结算单状态:" + jsdzt);
+                String jsdzt = formData.getString("selectField_lbf3y920");
+                System.out.println("结算单状态:" + jsdzt);
 
 //            if (jsdzt.equals("已结算")){
 //                System.out.println("项目已结算,不加载!");
@@ -134,7 +139,17 @@ public class DingOaServiceImpl implements DingOaService {
 //                System.out.println("根据表单发起人id创建的map集合:" + map);
 //                list.add(map);
 //            }
-        }
+            }
+
+            if (data.size() == 100){
+                page = page + 1;
+            }
+
+//            float aa = jsonObject.getFloat("totalCount") / 100;
+//            int bb = jsonObject.getInteger("currentPage");
+//            log.info("aa" + aa + "---bb" + bb);
+        }while (jsonObject.getFloat("totalCount") / 100 > jsonObject.getInteger("currentPage"));
+
 
         System.out.println("list集合:" + list);
 
@@ -151,73 +166,89 @@ public class DingOaServiceImpl implements DingOaService {
 
         JSONObject jsonObject = null;
 
-        try {
-            com.aliyun.dingtalkyida_1_0.Client client = createClient();
-            com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders searchFormDatasHeaders = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders();
-            searchFormDatasHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
-            com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest searchFormDatasRequest = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest()
-                    //宜搭应用秘钥
-                    .setSystemToken("ETA66681XCH5NWT9CNL9V88ZGIB12I8RTWBALZZE")
-                    //每页查询数量
-                    .setPageSize(100)
-                    //当前分页
-                    .setCurrentPage(1)
-                    //宜搭表单ID
-                    .setFormUuid("FORM-CP766081DPN573HYBQCWJADYI6SB232G0RKALL")
-                    //TODO 系统管理员id
-                    .setUserId("yida_pub_account")
-                    //宜搭应用编码
-                    .setAppType("APP_UTWSE5WCXGWTUOEJ9E1D");
+        int size = 100;
+        int page = 1;
 
-            SearchFormDatasResponse searchFormDatasResponse = client.searchFormDatasWithOptions(searchFormDatasRequest, searchFormDatasHeaders, new RuntimeOptions());
-            System.out.println(JSON.toJSONString(searchFormDatasResponse.getBody()));
-            String s = JSON.toJSONString(searchFormDatasResponse.getBody());
-            jsonObject = JSON.parseObject(s);
-            System.out.println("审批详情接口object对象:" + jsonObject);
-        } catch (TeaException err) {
-            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
-                // err 中含有 code 和 message 属性,可帮助开发定位问题
-            }
+        do {
+            try {
+                com.aliyun.dingtalkyida_1_0.Client client = createClient();
+                com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders searchFormDatasHeaders = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders();
+                searchFormDatasHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
+                com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest searchFormDatasRequest = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest()
+                        //宜搭应用秘钥
+                        .setSystemToken("ETA66681XCH5NWT9CNL9V88ZGIB12I8RTWBALZZE")
+                        //每页查询数量
+                        .setPageSize(size)
+                        //当前分页
+                        .setCurrentPage(page)
+                        //宜搭表单ID
+                        .setFormUuid("FORM-CP766081DPN573HYBQCWJADYI6SB232G0RKALL")
+                        //TODO 系统管理员id
+                        .setUserId("yida_pub_account")
+                        //宜搭应用编码
+                        .setAppType("APP_UTWSE5WCXGWTUOEJ9E1D");
+
+                SearchFormDatasResponse searchFormDatasResponse = client.searchFormDatasWithOptions(searchFormDatasRequest, searchFormDatasHeaders, new RuntimeOptions());
+                System.out.println(JSON.toJSONString(searchFormDatasResponse.getBody()));
+                String s = JSON.toJSONString(searchFormDatasResponse.getBody());
+                jsonObject = JSON.parseObject(s);
+                System.out.println("审批详情接口object对象:" + jsonObject);
+            } catch (TeaException err) {
+                if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                    // err 中含有 code 和 message 属性,可帮助开发定位问题
+                }
+
+            } catch (Exception _err) {
+                TeaException err = new TeaException(_err.getMessage(), _err);
+                if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
+                    // err 中含有 code 和 message 属性,可帮助开发定位问题
+                }
 
-        } catch (Exception _err) {
-            TeaException err = new TeaException(_err.getMessage(), _err);
-            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
-                // err 中含有 code 和 message 属性,可帮助开发定位问题
             }
 
-        }
+            JSONArray data = jsonObject.getJSONArray("data");
+            for (int i = 0; data.size()>i; i++){
 
-        JSONArray data = jsonObject.getJSONArray("data");
-        for (int i = 0; data.size()>i; i++){
+                Map map = new HashMap();
 
-            Map map = new HashMap();
+                JSONObject formData = data.getJSONObject(i).getJSONObject("formData");
 
-            JSONObject formData = data.getJSONObject(i).getJSONObject("formData");
+                String xmbh = formData.getString("textField_lakr1jwy");
+                System.out.println("项目编号:" + xmbh);
 
-            String xmbh = formData.getString("textField_lakr1jwy");
-            System.out.println("项目编号:" + xmbh);
+                String xmmc = formData.getString("textField_lajb96s9");
+                System.out.println("项目名称:" + xmmc);
 
-            String xmmc = formData.getString("textField_lajb96s9");
-            System.out.println("项目名称:" + xmmc);
+                String xmfzrid = formData.getString("textField_lbf3y926");
+                System.out.println("项目负责人id:" + xmfzrid);
 
-            String xmfzrid = formData.getString("textField_lbf3y926");
-            System.out.println("项目负责人id:" + xmfzrid);
-
-            String xmfzrmc = formData.getString("textField_lbf3y925");
-            System.out.println("项目负责人名称:" + xmfzrmc);
+                String xmfzrmc = formData.getString("textField_lbf3y925");
+                System.out.println("项目负责人名称:" + xmfzrmc);
 //
 //            String jsdzt = formData.getString("selectField_lbf3y920");
 //            System.out.println("结算单状态:" + jsdzt);
 
-            if (xmbh.equals(xmid)){
-                map.put("xmbh", xmbh);
-                map.put("xmmc", xmmc);
-                map.put("xmfzrid", xmfzrid);
-                map.put("xmfzrmc", xmfzrmc);
-                System.out.println("根据表单选择项目列表的项目id创建的map集合:" + map);
-                list.add(map);
+                if (xmbh.equals(xmid)){
+                    map.put("xmbh", xmbh);
+                    map.put("xmmc", xmmc);
+                    map.put("xmfzrid", xmfzrid);
+                    map.put("xmfzrmc", xmfzrmc);
+                    //延时类型
+                    if (xmmc.equals("公司延时")){
+                        map.put("yslx","公司延时");
+                    }else {
+                        map.put("yslx","项目延时");
+                    }
+                    System.out.println("根据表单选择项目列表的项目id创建的map集合:" + map);
+                    list.add(map);
+                }
             }
-        }
+
+            if (data.size() == 100){
+                page = page + 1;
+            }
+        }while (jsonObject.getFloat("totalCount") / 100 > jsonObject.getInteger("currentPage"));
+
         String s = JSON.toJSONString(list);
         System.out.println("list集合(转字符型):" + s);
 
@@ -336,13 +367,53 @@ public class DingOaServiceImpl implements DingOaService {
         System.out.println("连接器传传参过来的开始时间:" + startTime);
         System.out.println("连接器传传参过来的结束时间:" + endTime);
 
+        //计算加班开始日期后一天的早上7点的时间
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        Date date = null;
+        try {
+            date = dateFormat.parse(startTime);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        //加班结束时间后一天早上七点钟
+        calendar.add(Calendar.DAY_OF_MONTH,1);
+        calendar.set(Calendar.HOUR_OF_DAY,7);
+        calendar.set(Calendar.MINUTE,0);
+        calendar.set(Calendar.SECOND,0);
+        calendar.set(Calendar.MILLISECOND,0);
+        String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(calendar.getTime());
+        System.out.println("前一天零点:" + time);
+        Date dateJiaoyan = null;
+        try {
+            dateJiaoyan = dateFormat.parse(time);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+        //实际选择加班结束时间
+        Date dateEnd = null;
+        try {
+            dateEnd = dateFormat.parse(endTime);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
         Boolean zhi = null;
 
-        DateTime startTimeParse = DateUtil.parse(startTime);
-        DateTime endTimeParse = DateUtil.parse(endTime);
-        boolean sameDay = DateUtil.isSameDay(startTimeParse, endTimeParse);
+        //判断两个时间是否为同一天
+//        DateTime startTimeParse = DateUtil.parse(startTime);
+//        DateTime endTimeParse = DateUtil.parse(endTime);
+//        boolean sameDay = DateUtil.isSameDay(startTimeParse, endTimeParse);
 
-        if (sameDay == true){
+//        if (sameDay == true){
+//            zhi = true;
+//        }else {
+//            zhi = false;
+//        }
+
+        if (dateEnd.before(dateJiaoyan) == true){
             zhi = true;
         }else {
             zhi = false;
@@ -464,9 +535,12 @@ public class DingOaServiceImpl implements DingOaService {
     }
 
     @Override
-    public Map getXiangMuIsNullJY(String userid,String xmbh){
+    public Map getXiangMuIsNullJY(String userid,String xmbh,String startTime,String endTime){
         System.out.println("连接器传传参过来的人员id:" + userid);
         System.out.println("连接器传传参过来的项目(编号):" + xmbh);
+        System.out.println("连接器传传参过来的加班(开始)时间:" + startTime);
+        System.out.println("连接器传传参过来的加班(开始)时间:" + endTime);
+
 
         //牧之011033176057927940
         //燕江09535801661638954621
@@ -476,44 +550,66 @@ public class DingOaServiceImpl implements DingOaService {
         //记录当前人员当日提交的加班审批中选择的项目(编号)是否已经提交过审批单【计数】
         int a = 0;
 
-        Date date = new Date();
-        System.out.println("date:" + date);
-
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(date);
-        calendar.set(Calendar.HOUR_OF_DAY,0);
-        calendar.set(Calendar.MINUTE,0);
-        calendar.set(Calendar.SECOND,0);
-        calendar.set(Calendar.MILLISECOND,0);
-        String FORMtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
-        System.out.println("当天零点(时间型):" + FORMtime);
-
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        Date dateFORM = null;
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        Date dateStart = null;
         try {
-            dateFORM = simpleDateFormat.parse(FORMtime);
+            dateStart = dateFormat.parse(startTime);
         }catch (Exception e){
             e.printStackTrace();
         }
-        long timeStart = dateFORM.getTime();
-        System.out.println("当天零点(毫秒级时间戳):" + timeStart);
+        System.out.println("dateStart:" + dateStart);
+        long timeStart = dateStart.getTime();
+        System.out.println("加班开始时间(毫秒级时间戳):" + timeStart);
 
-        calendar.setTime(date);
-        calendar.set(Calendar.HOUR_OF_DAY,23);
-        calendar.set(Calendar.MINUTE,59);
-        calendar.set(Calendar.SECOND,59);
-        calendar.set(Calendar.MILLISECOND,0);
-        String TOtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
-        System.out.println("当天24点:" + TOtime);
-
-        Date dateTO = null;
+        Date dateEnd = null;
         try {
-            dateTO = simpleDateFormat.parse(TOtime);
+            dateEnd = dateFormat.parse(endTime);
         }catch (Exception e){
             e.printStackTrace();
         }
-        long timeEnd = dateTO.getTime();
-        System.out.println("当天零点(毫秒级时间戳):" + timeEnd);
+        System.out.println("dateEnd:" + dateEnd);
+        long timeEnd = dateStart.getTime();
+        System.out.println("加班结束时间(毫秒级时间戳):" + timeEnd);
+
+
+
+//        Date date = new Date();
+
+//        Calendar calendar = Calendar.getInstance();
+//        calendar.setTime(date);
+//        calendar.set(Calendar.HOUR_OF_DAY,0);
+//        calendar.set(Calendar.MINUTE,0);
+//        calendar.set(Calendar.SECOND,0);
+//        calendar.set(Calendar.MILLISECOND,0);
+//        String FORMtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
+//        System.out.println("当天零点(时间型):" + FORMtime);
+//
+//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//        Date dateFORM = null;
+//        try {
+//            dateFORM = simpleDateFormat.parse(FORMtime);
+//        }catch (Exception e){
+//            e.printStackTrace();
+//        }
+//        long timeStart = dateFORM.getTime();
+//        System.out.println("当天零点(毫秒级时间戳):" + timeStart);
+
+//        calendar.setTime(date);
+//        calendar.set(Calendar.HOUR_OF_DAY,23);
+//        calendar.set(Calendar.MINUTE,59);
+//        calendar.set(Calendar.SECOND,59);
+//        calendar.set(Calendar.MILLISECOND,0);
+//        String TOtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
+//        System.out.println("当天24点:" + TOtime);
+//
+//        Date dateTO = null;
+//        try {
+//            dateTO = simpleDateFormat.parse(TOtime);
+//        }catch (Exception e){
+//            e.printStackTrace();
+//        }
+//        long timeEnd = dateTO.getTime();
+//        System.out.println("当天24点(毫秒级时间戳):" + timeEnd);
 
         JSONObject jsonObject = null;
         try {
@@ -601,7 +697,7 @@ public class DingOaServiceImpl implements DingOaService {
 
         Map map = new HashMap();
         map.put("jiaoyanjieguo", zhi);
-        map.put("jiaoyanxinxi","当前项目你已提交过加班!");
+        map.put("jiaoyanxinxi","当前加班日期该项目你已提交过加班!");
 
         return map;
     }

+ 2 - 2
src/test/java/com/muzhi/meidiai/APITest/Test1.java

@@ -46,8 +46,8 @@ public class Test1 {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(Date);
         //前一天
-        calendar.add(Calendar.DAY_OF_MONTH,-1);
-        calendar.set(Calendar.HOUR_OF_DAY,0);
+        calendar.add(Calendar.DAY_OF_MONTH,1);
+        calendar.set(Calendar.HOUR_OF_DAY,7);
         calendar.set(Calendar.MINUTE,0);
         calendar.set(Calendar.SECOND,0);
         calendar.set(Calendar.MILLISECOND,0);