فهرست منبع

考勤异常元数据提交

Heyuan 1 ماه پیش
والد
کامیت
4411b2d94c

+ 15 - 0
src/com/kingdee/eas/custom/attendanceexception/app/AttendanceExceptionLogControllerBean.java

@@ -1,8 +1,23 @@
 package com.kingdee.eas.custom.attendanceexception.app;
 
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.dao.IObjectPK;
+import com.kingdee.bos.dao.IObjectValue;
+import com.kingdee.eas.common.EASBizException;
+import com.kingdee.eas.custom.attendanceexception.AttendanceExceptionLogInfo;
 import org.apache.log4j.Logger;
 
+import java.util.Date;
+
 public class AttendanceExceptionLogControllerBean extends AbstractAttendanceExceptionLogControllerBean {
     private static Logger logger = Logger.getLogger(AttendanceExceptionLogControllerBean.class);
 
+
+    @Override
+    protected IObjectPK _addnew(Context ctx, IObjectValue model) throws BOSException, EASBizException {
+        AttendanceExceptionLogInfo info = (AttendanceExceptionLogInfo) model;
+        info.setBizDate(new Date());
+        return super._addnew(ctx, model);
+    }
 }

+ 10 - 10
src/com/kingdee/eas/custom/attendanceexception/app/CenterLeaderRelationControllerBean.java

@@ -104,7 +104,7 @@ public class CenterLeaderRelationControllerBean extends AbstractCenterLeaderRela
         //获取组织负责人
         Map<String, Set<String>> orgLeadersMap = getOrgLeaders(ctx);
         //中心负责人关系表
-        CenterLeaderRelationCollection relationCol = getCenterLeaderRelationCollection(ctx);
+        CenterLeaderRelationCollection relationCol = getCenterLeaderRelationCollection(ctx, "select id,department.number,personNumbers,notifyOrgLeader");
         for (int i = 0; i < relationCol.size(); i++) {
             CenterLeaderRelationInfo info = relationCol.get(i);
             //中心
@@ -116,12 +116,12 @@ public class CenterLeaderRelationControllerBean extends AbstractCenterLeaderRela
             //是否通知组织负责人
             boolean notifyOrgLeader = info.isNotifyOrgLeader();
             if (department != null && StringUtils.isNotBlank(personNumbers)) {
-                String orgId = department.getId().toString();
+                String orgNumber = department.getNumber();
                 Set<String> set = AtsUtil.toSet(personNumbers);
-                if (orgLeadersMap.containsKey(orgId) && notifyOrgLeader) {
-                    orgLeadersMap.get(orgId).addAll(set);
+                if (orgLeadersMap.containsKey(orgNumber) && notifyOrgLeader) {
+                    orgLeadersMap.get(orgNumber).addAll(set);
                 } else {
-                    orgLeadersMap.put(orgId, set);
+                    orgLeadersMap.put(orgNumber, set);
                 }
             } else {
                 String id = info.getId().toString();
@@ -162,21 +162,21 @@ public class CenterLeaderRelationControllerBean extends AbstractCenterLeaderRela
         filterItems.add(new FilterItemInfo("endDateTime", curentShortStringDate, CompareType.GREATER_EQUALS));
         SelectorItemCollection sic = new SelectorItemCollection();
         sic.add("person.number");
-        sic.add("personDep.id");
+        sic.add("personDep.number");
         EntityViewInfo viewInfo = EntityViewInfo.getInstance(filterInfo, sic, null);
         PersonPositionCollection personPositionCollection = iPersonPosition.getPersonPositionCollection(viewInfo);
         for (int i = 0; i < personPositionCollection.size(); i++) {
             PersonPositionInfo personPositionInfo = personPositionCollection.get(i);
             AdminOrgUnitInfo personDep = personPositionInfo.getPersonDep();
-            String orgId = personDep.getId().toString();
+            String orgNumber = personDep.getNumber();
             PersonInfo person = personPositionInfo.getPerson();
             String personNumber = person.getNumber();
-            if (orgLeadersMap.containsKey(orgId)) {
-                orgLeadersMap.get(orgId).add(personNumber);
+            if (orgLeadersMap.containsKey(orgNumber)) {
+                orgLeadersMap.get(orgNumber).add(personNumber);
             } else {
                 Set<String> set = new HashSet<String>();
                 set.add(personNumber);
-                orgLeadersMap.put(orgId, set);
+                orgLeadersMap.put(orgNumber, set);
             }
         }
         if (logger.isInfoEnabled()) {

+ 47 - 32
src/com/kingdee/eas/custom/attendanceexception/task/AttendanceExceptionFacadeControllerBean.java

@@ -118,7 +118,14 @@ public class AttendanceExceptionFacadeControllerBean extends AbstractAttendanceE
                 });
                 pushAttendanceExceptionData(syncAttendanceDataBeans, logInfo);
             } catch (Exception e) {
-                logger.error("员工个人异常提醒报错", e);
+                String message = e.getMessage();
+                logInfo.setPushStatus(CallStatusEnum.failure);
+                logInfo.setPushResult(message);
+                logger.error("员工个人异常提醒报错 " + message, e);
+                if (message.contains("connect timed out")) {
+                    iAttendanceExceptionLog.save(logInfo);
+                    break;
+                }
             }
             //保存消息记录
             iAttendanceExceptionLog.save(logInfo);
@@ -195,7 +202,14 @@ public class AttendanceExceptionFacadeControllerBean extends AbstractAttendanceE
                 //写入提醒记录
                 addRemindRecord(ctx, yearMonth, personNumber);
             } catch (Exception e) {
-                logger.error("提醒员工累计异常报错: " + e.getMessage(), e);
+                String message = e.getMessage();
+                logInfo.setPushStatus(CallStatusEnum.failure);
+                logInfo.setPushResult(message);
+                logger.error("提醒员工累计异常报错: " + message, e);
+                if (message.contains("connect timed out")) {
+                    iAttendanceExceptionLog.save(logInfo);
+                    break;
+                }
             }
             //保存消息记录
             iAttendanceExceptionLog.save(logInfo);
@@ -235,15 +249,15 @@ public class AttendanceExceptionFacadeControllerBean extends AbstractAttendanceE
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd E HH:mm:ss");
         //获取考勤异常数据,本周周一至周五中心考勤异常数据
         Calendar calendar = Calendar.getInstance();
-        Date endDate = calendar.getTime();
+        //Date endDate = calendar.getTime();
         int intWeek = calendar.get(7);
         calendar.add(Calendar.DAY_OF_WEEK, 2 - intWeek);
         Date monday = calendar.getTime();
         logger.error("_alertLeaderExceptionTotal startDate: " + sdf.format(monday));
-        if (intWeek > 6) {
-            calendar.add(Calendar.DAY_OF_WEEK, 4);
-            endDate = calendar.getTime();
-        }
+        //if (intWeek > 6) {
+        calendar.add(Calendar.DAY_OF_WEEK, 4);
+        Date endDate = calendar.getTime();
+        //}
         logger.error("_alertLeaderExceptionTotal endDate: " + sdf.format(endDate));
         //1.查询异常数据
         Map<String, Map<String, Integer>> exceptionCountMap = new HashMap<>();
@@ -276,17 +290,6 @@ public class AttendanceExceptionFacadeControllerBean extends AbstractAttendanceE
                 //Integer personalRecheckCountEmployees = orgExceptionTimes.getOrDefault("personalRecheckCountEmployees", 0);
                 //异常人数
                 Integer exceptionEmployees = orgExceptionTimes.getOrDefault("exceptionEmployees", 0);
-                //消息内容
-//                String content = MessageFormat.format(NOTIFYALERTLEADEREXCEPTIONMSGTEMPLATE,
-//                        mondayFormat,
-//                        endDateFormat,
-//                        orgName,
-//                        attendanceCount,
-//                        exceptionEmployees,
-//                        lateEmployees,
-//                        earlyLeaveEmployees,
-//                        absentEmployees
-//                );
                 //发送异常消息
                 JSONObject dingMsgBean = new JSONObject();
                 dingMsgBean.put("msgTempCode", "work_notice_01");
@@ -317,7 +320,14 @@ public class AttendanceExceptionFacadeControllerBean extends AbstractAttendanceE
                 });
                 pushAttendanceExceptionData(syncAttendanceDataBeans, logInfo);
             } catch (Exception e) {
-                logger.error("提醒中心负责人累计异常报错", e);
+                String message = e.getMessage();
+                logInfo.setPushStatus(CallStatusEnum.failure);
+                logInfo.setPushResult(message);
+                logger.error("提醒中心负责人累计异常报错 " + message, e);
+                if (message.contains("connect timed out")) {
+                    iAttendanceExceptionLog.save(logInfo);
+                    break;
+                }
             }
             //保存消息记录
             iAttendanceExceptionLog.save(logInfo);
@@ -372,7 +382,7 @@ public class AttendanceExceptionFacadeControllerBean extends AbstractAttendanceE
                     result.get(personNumber).add(data);
                 }
                 if (PushTypeEnum.EMPLOYEEEXCEPTIONALERT.equals(pushType)) {
-                    String yearMonth = DateTimeUtils.format(startDate, "yyyy年M月");
+                    String yearMonth = DateTimeUtils.format(startDate, "yyyy年MM月");
                     //获取提醒记录
                     Set<String> remindRecord = getRemindRecord(ctx, yearMonth);
                     //员工累计异常提醒
@@ -461,15 +471,20 @@ public class AttendanceExceptionFacadeControllerBean extends AbstractAttendanceE
                 Map<String, Set<String>> orgExceptionData = exceptionData.get(orgNumber);
                 Map<String, Integer> orgExceptionTimes = new HashMap<>();
                 //迟到人数
-                orgExceptionTimes.put("lateEmployees", orgExceptionData.get("lateEmployees").size());
+                Set<String> lateEmployees = orgExceptionData.get("lateEmployees");
+                orgExceptionTimes.put("lateEmployees", lateEmployees != null ? lateEmployees.size() : 0);
                 //早退人数
-                orgExceptionTimes.put("earlyLeaveEmployees", orgExceptionData.get("earlyLeaveEmployees").size());
+                Set<String> earlyLeaveEmployees = orgExceptionData.get("earlyLeaveEmployees");
+                orgExceptionTimes.put("earlyLeaveEmployees", earlyLeaveEmployees != null ? earlyLeaveEmployees.size() : 0);
                 //旷工人数
-                orgExceptionTimes.put("absentEmployees", orgExceptionData.get("absentEmployees").size());
+                Set<String> absentEmployees = orgExceptionData.get("absentEmployees");
+                orgExceptionTimes.put("absentEmployees", absentEmployees != null ? absentEmployees.size() : 0);
                 //个人原因补卡人数
-                orgExceptionTimes.put("personalRecheckCountEmployees", orgExceptionData.get("personalRecheckCountEmployees").size());
+                Set<String> personalRecheckCountEmployees = orgExceptionData.get("personalRecheckCountEmployees");
+                orgExceptionTimes.put("personalRecheckCountEmployees", personalRecheckCountEmployees != null ? personalRecheckCountEmployees.size() : 0);
                 //异常人数
-                orgExceptionTimes.put("exceptionEmployees", orgExceptionData.get("exceptionEmployees").size());
+                Set<String> exceptionEmployees = orgExceptionData.get("exceptionEmployees");
+                orgExceptionTimes.put("exceptionEmployees", exceptionEmployees != null ? exceptionEmployees.size() : 0);
                 exceptionCountMap.put(orgNumber, orgExceptionTimes);
             }
             return result;
@@ -498,7 +513,11 @@ public class AttendanceExceptionFacadeControllerBean extends AbstractAttendanceE
         data.setDepartmentName(iRowSet.getString("adminOrgName"));
         data.setDepartmentManagerCode(iRowSet.getString("adminOrgLongNumber"));
         data.setDepartmentSortCode(iRowSet.getString("sortCode"));
-        data.setDepartmentManagerName(iRowSet.getString("displayName"));
+        String displayName = iRowSet.getString("displayName");
+        if (StringUtils.isNotBlank(displayName)) {
+            displayName = displayName.substring(displayName.indexOf("_") + 1, displayName.length());
+        }
+        data.setDepartmentManagerName(displayName);
         StringBuilder attendanceResult = new StringBuilder();
         int times = 0;
         Map<String, Boolean> attendanceFlags = new LinkedHashMap<>();
@@ -635,9 +654,7 @@ public class AttendanceExceptionFacadeControllerBean extends AbstractAttendanceE
             }
         } catch (Exception e) {
             logger.error(e.getMessage(), e);
-            logInfo.setPushStatus(CallStatusEnum.failure);
-            logInfo.setPushResult("发送考勤异常消息报错: " + e.getMessage());
-            throw new BOSException(e);
+            throw new BOSException("发送考勤异常消息报错: " + e.getMessage());
         }
     }
 
@@ -695,9 +712,7 @@ public class AttendanceExceptionFacadeControllerBean extends AbstractAttendanceE
             }
         } catch (Exception e) {
             logger.error(e.getMessage(), e);
-            logInfo.setPushStatus(CallStatusEnum.failure);
-            logInfo.setPushResult("推送考勤数据报错: " + e.getMessage());
-            throw new BOSException(e);
+            throw new BOSException("推送考勤数据报错: " + e.getMessage());
         }
     }