Browse Source

钉钉考勤一周数据同步功能

fancy 5 years ago
parent
commit
109629a6c1

+ 57 - 56
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/DingdingAttendanceQueue.java

@@ -32,73 +32,74 @@ public class DingdingAttendanceQueue extends AbstractQueue<DingdingQywxSyncRecor
         logger.info("开始执行钉钉打卡数据同步," + record.getWay());
         if (DingdingQywxSyncRecord.syncType_dingding.equals(record.getType())) {
             dingdingSync(record);
-        }else {
+        } else {
             logger.info("其它类型:");
         }
     }
 
     private void dingdingSync(DingdingQywxSyncRecord record) throws Exception {
-            Application app = ThisApplication.context().applications().randomWithWeight(x_organization_assemble_control.class.getName());
-            //开始分页查询人员
-            boolean hasNextPerson = true;
-            int personPageSize = 50;
-            String uri = "person/list/(0)/next/50";
-            String dingdingUrl = "https://oapi.dingtalk.com/attendance/list?access_token="+ Config.dingding().corpAccessToken();
-
-            while (hasNextPerson) {
-                logger.info("查询人员 uri:" + uri);
-                List<Person> list = ThisApplication.context().applications().getQuery(false, app, uri).getDataAsList(Person.class);
-                if (list != null && list.size() > 0) {
-                    //钉钉用户id
-                    List<String> ddUsers = list.stream().map(Person::getDingdingId).collect(Collectors.toList());
-                    //week
-                    Date today = new Date();
-                    today = DateTools.floorDate(today, null);
-                    Date sevenDayBefore = DateTools.addDay(today, -7);
-                    //分页查询
-                    int page = 0;
-                    boolean hasMoreResult = true;
-                    while (hasMoreResult) {
-                        DingdingAttendancePost post = new DingdingAttendancePost();
-                        //post传入 时间(时间间隔不能超过7天) 人员(人员数量不能超过50个)
-                        post.setLimit(50L);
-                        post.setOffset(page * 50L);//从0开始翻页
-                        post.setWorkDateFrom(DateTools.format(sevenDayBefore, DateTools.format_yyyyMMddHHmmss));
-                        post.setWorkDateTo(DateTools.format(today, DateTools.format_yyyyMMddHHmmss));
-                        post.setUserIdList(ddUsers);
-                        String body = post.toString();
-                        logger.info("查询钉钉打卡结果:"+body);
-                        DingdingAttendanceResult result = HttpConnection.postAsObject(dingdingUrl, null, post.toString(), DingdingAttendanceResult.class);
-                        if (result.errcode != null && result.errcode == 0) {
-                            saveDingdingRecord(result.getRecordresult());
-                            if (result.hasMore) {
-                                page++;
-                            } else {
-                                logger.info("同步钉钉考勤结束。。。。。。。。。。。。。。。。");
-                                hasMoreResult = false;
-                            }
+        logger.debug(record.toString());
+        Application app = ThisApplication.context().applications().randomWithWeight(x_organization_assemble_control.class.getName());
+        //开始分页查询人员
+        boolean hasNextPerson = true;
+        int personPageSize = 50;
+        String uri = "person/list/(0)/next/50";
+        String dingdingUrl = "https://oapi.dingtalk.com/attendance/list?access_token=" + Config.dingding().corpAccessToken();
+        logger.debug("dingding url :"+dingdingUrl);
+        while (hasNextPerson) {
+            logger.info("查询人员 uri:" + uri);
+            List<Person> list = ThisApplication.context().applications().getQuery(false, app, uri).getDataAsList(Person.class);
+            if (list != null && list.size() > 0) {
+                //钉钉用户id
+                List<String> ddUsers = list.stream().map(Person::getDingdingId).collect(Collectors.toList());
+                //week
+                Date today = new Date();
+                today = DateTools.floorDate(today, null);
+                Date sevenDayBefore = DateTools.addDay(today, -7);
+                //分页查询
+                int page = 0;
+                boolean hasMoreResult = true;
+                while (hasMoreResult) {
+                    DingdingAttendancePost post = new DingdingAttendancePost();
+                    //post传入 时间(时间间隔不能超过7天) 人员(人员数量不能超过50个)
+                    post.setLimit(50L);
+                    post.setOffset(page * 50L);//从0开始翻页
+                    post.setWorkDateFrom(DateTools.format(sevenDayBefore, DateTools.format_yyyyMMddHHmmss));
+                    post.setWorkDateTo(DateTools.format(today, DateTools.format_yyyyMMddHHmmss));
+                    post.setUserIdList(ddUsers);
+                    String body = post.toString();
+                    logger.info("查询钉钉打卡结果:" + body);
+                    DingdingAttendanceResult result = HttpConnection.postAsObject(dingdingUrl, null, post.toString(), DingdingAttendanceResult.class);
+                    if (result.errcode != null && result.errcode == 0) {
+                        saveDingdingRecord(result.getRecordresult());
+                        if (result.hasMore) {
+                            page++;
                         } else {
-                            //请求结果异常 结束
-                            logger.error(new DingDingRequestException(result.errmsg));
+                            logger.info("同步钉钉考勤结束。。。。。。。。。。。。。。。。");
                             hasMoreResult = false;
                         }
+                    } else {
+                        //请求结果异常 结束
+                        logger.error(new DingDingRequestException(result.errmsg));
+                        hasMoreResult = false;
                     }
-                    //是否还有更多用户
-                    if (list.size() < personPageSize) {
-                        logger.info("同步钉钉考勤 没有更多用户了,结束。。。。。。。。。。。。。。。");
-                        hasNextPerson = false;
-                        updateSyncRecord(record, null);
-                    }else {
-                        //还有更多用户继续查询
-                        uri = "person/list/"+list.get(list.size()-1).getDistinguishedName()+"/next/50";
-                    }
-                }else {
-                    //没有用户查询到结束
-                    logger.info("同步钉钉考勤 查询不到用户了,结束。。。。。。。。。。。。。。。");
+                }
+                //是否还有更多用户
+                if (list.size() < personPageSize) {
+                    logger.info("同步钉钉考勤 没有更多用户了,结束。。。。。。。。。。。。。。。");
                     hasNextPerson = false;
                     updateSyncRecord(record, null);
+                } else {
+                    //还有更多用户继续查询
+                    uri = "person/list/" + list.get(list.size() - 1).getDistinguishedName() + "/next/50";
                 }
+            } else {
+                //没有用户查询到结束
+                logger.info("同步钉钉考勤 查询不到用户了,结束。。。。。。。。。。。。。。。");
+                hasNextPerson = false;
+                updateSyncRecord(record, null);
             }
+        }
 
     }
 
@@ -124,7 +125,7 @@ public class DingdingAttendanceQueue extends AbstractQueue<DingdingQywxSyncRecor
             if (errMsg == null || errMsg.isEmpty()) {
                 record.setExceptionMessage(errMsg);
                 record.setStatus(DingdingQywxSyncRecord.status_error);
-            }else {
+            } else {
                 record.setStatus(DingdingQywxSyncRecord.status_end);
             }
             emc.commit();
@@ -133,7 +134,7 @@ public class DingdingAttendanceQueue extends AbstractQueue<DingdingQywxSyncRecor
 
 
     public static class DingdingAttendancePost extends GsonPropertyObject {
-//        {
+        //        {
 //            "workDateFrom": "yyyy-MM-dd HH:mm:ss",
 //                "workDateTo": "yyyy-MM-dd HH:mm:ss",
 //                "userIdList":["员工UserId列表"],    // 必填,与offset和limit配合使用

+ 2 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/ActionApplication.java

@@ -18,6 +18,7 @@ import com.x.attendance.assemble.control.jaxrs.attendancestatistic.AttendanceSta
 import com.x.attendance.assemble.control.jaxrs.attendancestatisticalcycle.AttendanceStatisticalCycleAction;
 import com.x.attendance.assemble.control.jaxrs.attendancestatisticrequirelog.AttendanceStatisticRequireLogAction;
 import com.x.attendance.assemble.control.jaxrs.attendanceworkdayconfig.AttendanceWorkDayConfigAction;
+import com.x.attendance.assemble.control.jaxrs.dingding.DingdingAttendanceAction;
 import com.x.attendance.assemble.control.jaxrs.fileimport.AttendanceDetailFileImportAction;
 import com.x.attendance.assemble.control.jaxrs.selfholiday.AttendanceSelfHolidayAction;
 import com.x.attendance.assemble.control.jaxrs.selfholiday.AttendanceSelfHolidaySimpleAction;
@@ -48,6 +49,7 @@ public class ActionApplication extends AbstractActionApplication {
 		this.classes.add(AttendanceStatisticalCycleAction.class);
 		this.classes.add(AttendanceEmployeeConfigAction.class);
 		this.classes.add(AttendanceStatisticRequireLogAction.class);
+		this.classes.add(DingdingAttendanceAction.class);
 		return this.classes;
 	}
 

+ 5 - 14
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/dingding/ActionSyncData.java

@@ -1,13 +1,9 @@
 package com.x.attendance.assemble.control.jaxrs.dingding;
 
-import com.google.gson.JsonElement;
 import com.x.attendance.assemble.control.ThisApplication;
 import com.x.attendance.entity.DingdingQywxSyncRecord;
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WrapBoolean;
@@ -21,30 +17,25 @@ public class ActionSyncData extends BaseAction {
 
     private static final Logger logger = LoggerFactory.getLogger(ActionSyncData.class);
 
-    public ActionResult<WrapBoolean> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
+    public ActionResult<WrapBoolean> execute(EffectivePerson effectivePerson, String way) throws Exception {
         ActionResult<WrapBoolean> result = new ActionResult<>();
         try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-            Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
-            if (null == wi.getWay() ||
-                    (!DingdingQywxSyncRecord.syncWay_week.equals(wi.getWay()) && !DingdingQywxSyncRecord.syncWay_year.equals(wi.getWay()))) {
+            if (null == way ||
+                    (!DingdingQywxSyncRecord.syncWay_week.equals(way) && !DingdingQywxSyncRecord.syncWay_year.equals(way))) {
                 throw new SyncWayException();
             }
             DingdingQywxSyncRecord record = new DingdingQywxSyncRecord();
-            record.setWay(wi.getWay());
+            record.setWay(way);
             record.setStartTime(new Date());
             record.setType(DingdingQywxSyncRecord.syncType_dingding);
             record.setStatus(DingdingQywxSyncRecord.status_loading);
             emc.beginTransaction(DingdingQywxSyncRecord.class);
             emc.persist(record);
             emc.commit();
-            ThisApplication.dingdingQueue.executing(record);
+            ThisApplication.dingdingQueue.send(record);
             result.setData(new WrapBoolean(true));
         }
         return result;
     }
 
-    public static class Wi extends DingdingQywxSyncRecord {
-        public static WrapCopier<Wi, DingdingQywxSyncRecord> copier = WrapCopierFactory.wi(Wi.class,
-                DingdingQywxSyncRecord.class, null, JpaObject.FieldsUnmodify);
-    }
 }

+ 5 - 4
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/dingding/DingdingAttendanceAction.java

@@ -3,6 +3,7 @@ package com.x.attendance.assemble.control.jaxrs.dingding;
 import com.google.gson.JsonElement;
 import com.x.base.core.project.annotation.JaxrsDescribe;
 import com.x.base.core.project.annotation.JaxrsMethodDescribe;
+import com.x.base.core.project.annotation.JaxrsParameterDescribe;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.http.HttpMediaType;
@@ -52,16 +53,16 @@ public class DingdingAttendanceAction extends StandardJaxrsAction {
 
     //获取7天数据   可以做定时每天晚上更新
     @JaxrsMethodDescribe(value = "同步钉钉考勤结果", action = ActionSyncData.class)
-    @POST
-    @Path("sync")
+    @GET
+    @Path("sync/{way}/start")
     @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
     @Consumes(MediaType.APPLICATION_JSON)
     public void syncData(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-                         JsonElement jsonElement) {
+                         @JaxrsParameterDescribe("同步方式") @PathParam("way") String way) {
         ActionResult<WrapBoolean> result = new ActionResult<>();
         EffectivePerson effectivePerson = this.effectivePerson(request);
         try {
-            result = new ActionSyncData().execute(effectivePerson, jsonElement);
+            result = new ActionSyncData().execute(effectivePerson, way);
         }catch (Exception e) {
             logger.error(e, effectivePerson, request, null);
             result.error(e);

+ 93 - 18
o2server/x_attendance_assemble_control/src/main/webapp/describe/sources/com/x/attendance/assemble/control/DingdingAttendanceQueue.java

@@ -22,36 +22,111 @@ public class DingdingAttendanceQueue extends AbstractQueue<DingdingQywxSyncRecor
     @Override
     protected void execute(DingdingQywxSyncRecord record) throws Exception {
         logger.info("开始执行钉钉打卡数据同步," + record.getWay());
-
+        if (DingdingQywxSyncRecord.syncType_dingding.equals(record.getType())) {
+            dingdingSync(record);
+        } else {
+            logger.info("其它类型:");
+        }
     }
 
-    private void dingdingSync() throws Exception {
-        try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-            Business business = new Business(emc);
-            Application app = ThisApplication.context().applications().randomWithWeight(x_organization_assemble_control.class.getName());
-            //开始分页查询人员
-            boolean hasNextPerson = true;
-            String uri = "person/list/(0)/next/50";
-            String dingdingUrl = "https://oapi.dingtalk.com/attendance/list?access_token="+ Config.dingding().corpAccessToken();
-
-            while (hasNextPerson) {
-                List<Person> list = ThisApplication.context().applications().getQuery(false, app, uri).getDataAsList(Person.class);
-                if (list != null && list.size() > 0) {
+    private void dingdingSync(DingdingQywxSyncRecord record) throws Exception {
+        logger.debug(record.toString());
+        Application app = ThisApplication.context().applications().randomWithWeight(x_organization_assemble_control.class.getName());
+        //开始分页查询人员
+        boolean hasNextPerson = true;
+        int personPageSize = 50;
+        String uri = "person/list/(0)/next/50";
+        String dingdingUrl = "https://oapi.dingtalk.com/attendance/list?access_token=" + Config.dingding().corpAccessToken();
+        logger.debug("dingding url :"+dingdingUrl);
+        while (hasNextPerson) {
+            logger.info("查询人员 uri:" + uri);
+            List<Person> list = ThisApplication.context().applications().getQuery(false, app, uri).getDataAsList(Person.class);
+            if (list != null && list.size() > 0) {
+                //钉钉用户id
+                List<String> ddUsers = list.stream().map(Person::getDingdingId).collect(Collectors.toList());
+                //week
+                Date today = new Date();
+                today = DateTools.floorDate(today, null);
+                Date sevenDayBefore = DateTools.addDay(today, -7);
+                //分页查询
+                int page = 0;
+                boolean hasMoreResult = true;
+                while (hasMoreResult) {
                     DingdingAttendancePost post = new DingdingAttendancePost();
-
-                }else {
-                    //没有用户查询到结束
-                    logger.info("查询不到用户了,结束。。。。。。。。。。。。。。。");
+                    //post传入 时间(时间间隔不能超过7天) 人员(人员数量不能超过50个)
+                    post.setLimit(50L);
+                    post.setOffset(page * 50L);//从0开始翻页
+                    post.setWorkDateFrom(DateTools.format(sevenDayBefore, DateTools.format_yyyyMMddHHmmss));
+                    post.setWorkDateTo(DateTools.format(today, DateTools.format_yyyyMMddHHmmss));
+                    post.setUserIdList(ddUsers);
+                    String body = post.toString();
+                    logger.info("查询钉钉打卡结果:" + body);
+                    DingdingAttendanceResult result = HttpConnection.postAsObject(dingdingUrl, null, post.toString(), DingdingAttendanceResult.class);
+                    if (result.errcode != null && result.errcode == 0) {
+                        saveDingdingRecord(result.getRecordresult());
+                        if (result.hasMore) {
+                            page++;
+                        } else {
+                            logger.info("同步钉钉考勤结束。。。。。。。。。。。。。。。。");
+                            hasMoreResult = false;
+                        }
+                    } else {
+                        //请求结果异常 结束
+                        logger.error(new DingDingRequestException(result.errmsg));
+                        hasMoreResult = false;
+                    }
+                }
+                //是否还有更多用户
+                if (list.size() < personPageSize) {
+                    logger.info("同步钉钉考勤 没有更多用户了,结束。。。。。。。。。。。。。。。");
                     hasNextPerson = false;
+                    updateSyncRecord(record, null);
+                } else {
+                    //还有更多用户继续查询
+                    uri = "person/list/" + list.get(list.size() - 1).getDistinguishedName() + "/next/50";
                 }
+            } else {
+                //没有用户查询到结束
+                logger.info("同步钉钉考勤 查询不到用户了,结束。。。。。。。。。。。。。。。");
+                hasNextPerson = false;
+                updateSyncRecord(record, null);
             }
+        }
+
+    }
 
+    private void saveDingdingRecord(List<DingdingAttendanceResultItem> list) throws Exception {
+        if (list != null && !list.isEmpty()) {
+            try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+                emc.beginTransaction(AttendanceDingtalkDetail.class);
+                for (int i = 0; i < list.size(); i++) {
+                    DingdingAttendanceResultItem item = list.get(i);
+                    AttendanceDingtalkDetail detail = DingdingAttendanceResultItem.copier.copy(item);
+                    detail.setDdId(item.getId());
+                    emc.persist(detail);
+                }
+                emc.commit();
+            }
+        }
+    }
+
+    private void updateSyncRecord(DingdingQywxSyncRecord record, String errMsg) throws Exception {
+        try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+            emc.beginTransaction(DingdingQywxSyncRecord.class);
+            record.setEndTime(new Date());
+            if (errMsg == null || errMsg.isEmpty()) {
+                record.setExceptionMessage(errMsg);
+                record.setStatus(DingdingQywxSyncRecord.status_error);
+            } else {
+                record.setStatus(DingdingQywxSyncRecord.status_end);
+            }
+            emc.commit();
         }
     }
 
 
     public static class DingdingAttendancePost extends GsonPropertyObject {
-//        {
+        //        {
 //            "workDateFrom": "yyyy-MM-dd HH:mm:ss",
 //                "workDateTo": "yyyy-MM-dd HH:mm:ss",
 //                "userIdList":["员工UserId列表"],    // 必填,与offset和limit配合使用

+ 2 - 0
o2server/x_attendance_assemble_control/src/main/webapp/describe/sources/com/x/attendance/assemble/control/jaxrs/ActionApplication.java

@@ -18,6 +18,7 @@ import com.x.attendance.assemble.control.jaxrs.attendancestatistic.AttendanceSta
 import com.x.attendance.assemble.control.jaxrs.attendancestatisticalcycle.AttendanceStatisticalCycleAction;
 import com.x.attendance.assemble.control.jaxrs.attendancestatisticrequirelog.AttendanceStatisticRequireLogAction;
 import com.x.attendance.assemble.control.jaxrs.attendanceworkdayconfig.AttendanceWorkDayConfigAction;
+import com.x.attendance.assemble.control.jaxrs.dingding.DingdingAttendanceAction;
 import com.x.attendance.assemble.control.jaxrs.fileimport.AttendanceDetailFileImportAction;
 import com.x.attendance.assemble.control.jaxrs.selfholiday.AttendanceSelfHolidayAction;
 import com.x.attendance.assemble.control.jaxrs.selfholiday.AttendanceSelfHolidaySimpleAction;
@@ -48,6 +49,7 @@ public class ActionApplication extends AbstractActionApplication {
 		this.classes.add(AttendanceStatisticalCycleAction.class);
 		this.classes.add(AttendanceEmployeeConfigAction.class);
 		this.classes.add(AttendanceStatisticRequireLogAction.class);
+		this.classes.add(DingdingAttendanceAction.class);
 		return this.classes;
 	}
 

+ 5 - 14
o2server/x_attendance_assemble_control/src/main/webapp/describe/sources/com/x/attendance/assemble/control/jaxrs/dingding/ActionSyncData.java

@@ -1,13 +1,9 @@
 package com.x.attendance.assemble.control.jaxrs.dingding;
 
-import com.google.gson.JsonElement;
 import com.x.attendance.assemble.control.ThisApplication;
 import com.x.attendance.entity.DingdingQywxSyncRecord;
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.JpaObject;
-import com.x.base.core.project.bean.WrapCopier;
-import com.x.base.core.project.bean.WrapCopierFactory;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WrapBoolean;
@@ -21,30 +17,25 @@ public class ActionSyncData extends BaseAction {
 
     private static final Logger logger = LoggerFactory.getLogger(ActionSyncData.class);
 
-    public ActionResult<WrapBoolean> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
+    public ActionResult<WrapBoolean> execute(EffectivePerson effectivePerson, String way) throws Exception {
         ActionResult<WrapBoolean> result = new ActionResult<>();
         try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-            Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
-            if (null == wi.getWay() ||
-                    (!DingdingQywxSyncRecord.syncWay_week.equals(wi.getWay()) && !DingdingQywxSyncRecord.syncWay_year.equals(wi.getWay()))) {
+            if (null == way ||
+                    (!DingdingQywxSyncRecord.syncWay_week.equals(way) && !DingdingQywxSyncRecord.syncWay_year.equals(way))) {
                 throw new SyncWayException();
             }
             DingdingQywxSyncRecord record = new DingdingQywxSyncRecord();
-            record.setWay(wi.getWay());
+            record.setWay(way);
             record.setStartTime(new Date());
             record.setType(DingdingQywxSyncRecord.syncType_dingding);
             record.setStatus(DingdingQywxSyncRecord.status_loading);
             emc.beginTransaction(DingdingQywxSyncRecord.class);
             emc.persist(record);
             emc.commit();
-            ThisApplication.dingdingQueue.executing(record);
+            ThisApplication.dingdingQueue.send(record);
             result.setData(new WrapBoolean(true));
         }
         return result;
     }
 
-    public static class Wi extends DingdingQywxSyncRecord {
-        public static WrapCopier<Wi, DingdingQywxSyncRecord> copier = WrapCopierFactory.wi(Wi.class,
-                DingdingQywxSyncRecord.class, null, JpaObject.FieldsUnmodify);
-    }
 }

+ 5 - 4
o2server/x_attendance_assemble_control/src/main/webapp/describe/sources/com/x/attendance/assemble/control/jaxrs/dingding/DingdingAttendanceAction.java

@@ -3,6 +3,7 @@ package com.x.attendance.assemble.control.jaxrs.dingding;
 import com.google.gson.JsonElement;
 import com.x.base.core.project.annotation.JaxrsDescribe;
 import com.x.base.core.project.annotation.JaxrsMethodDescribe;
+import com.x.base.core.project.annotation.JaxrsParameterDescribe;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.http.HttpMediaType;
@@ -51,16 +52,16 @@ public class DingdingAttendanceAction extends StandardJaxrsAction {
 
     //获取7天数据   可以做定时每天晚上更新
     @JaxrsMethodDescribe(value = "同步钉钉考勤结果", action = ActionSyncData.class)
-    @POST
-    @Path("sync")
+    @GET
+    @Path("sync/{way}/start")
     @Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
     @Consumes(MediaType.APPLICATION_JSON)
     public void syncData(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
-                         JsonElement jsonElement) {
+                         @JaxrsParameterDescribe("同步方式") @PathParam("way") String way) {
         ActionResult<WrapBoolean> result = new ActionResult<>();
         EffectivePerson effectivePerson = this.effectivePerson(request);
         try {
-            result = new ActionSyncData().execute(effectivePerson, jsonElement);
+            result = new ActionSyncData().execute(effectivePerson, way);
         }catch (Exception e) {
             logger.error(e, effectivePerson, request, null);
             result.error(e);

+ 1 - 1
o2server/x_jpush_assemble_control/pom.xml

@@ -121,7 +121,7 @@
 							<goal>copy-resources</goal>
 						</goals>
 						<configuration>
-							<outputDirectory>../../o2server/custom</outputDirectory>
+							<outputDirectory>../store</outputDirectory>
 							<resources>
 								<resource>
 									<directory>target</directory>

+ 1 - 1
o2server/x_jpush_core_entity/pom.xml

@@ -83,7 +83,7 @@
 							<goal>copy-resources</goal>
 						</goals>
 						<configuration>
-							<outputDirectory>../../o2server/custom/jars</outputDirectory>
+							<outputDirectory>../store/jars</outputDirectory>
 							<resources>
 								<resource>
 									<directory>target</directory>