heyuan 1 неделя назад
Родитель
Сommit
90a211d326

+ 1 - 1
qy.war/WEB-INF/web.xml

@@ -58,7 +58,7 @@
 
 	<filter-mapping>
 		<filter-name>ContentCachingFilter</filter-name>
-		<url-pattern>/qy/*</url-pattern>
+		<url-pattern>/*</url-pattern>
 	</filter-mapping>
 
 

+ 17 - 29
src/com/kingdee/eas/custom/integration/apimgt/app/OpenPlatformAuthBillControllerBean.java

@@ -1,37 +1,25 @@
 package com.kingdee.eas.custom.integration.apimgt.app;
 
-import org.apache.log4j.Logger;
-import javax.ejb.*;
-import java.rmi.RemoteException;
-import com.kingdee.bos.*;
-import com.kingdee.bos.util.BOSObjectType;
-import com.kingdee.bos.metadata.IMetaDataPK;
-import com.kingdee.bos.metadata.rule.RuleExecutor;
-import com.kingdee.bos.metadata.MetaDataPK;
-//import com.kingdee.bos.metadata.entity.EntityViewInfo;
-import com.kingdee.bos.framework.ejb.AbstractEntityControllerBean;
-import com.kingdee.bos.framework.ejb.AbstractBizControllerBean;
-//import com.kingdee.bos.dao.IObjectPK;
-import com.kingdee.bos.dao.IObjectValue;
-import com.kingdee.bos.dao.IObjectCollection;
-import com.kingdee.bos.service.ServiceContext;
-import com.kingdee.bos.service.IServiceContext;
-
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
 import com.kingdee.bos.dao.IObjectPK;
-import com.kingdee.bos.metadata.entity.SelectorItemCollection;
 import com.kingdee.eas.common.EASBizException;
 import com.kingdee.eas.custom.integration.apimgt.OpenPlatformAuthBillInfo;
-import com.kingdee.eas.framework.CoreBaseCollection;
-import com.kingdee.eas.framework.CoreBaseInfo;
-import com.kingdee.bos.metadata.entity.EntityViewInfo;
-import java.lang.String;
-import com.kingdee.eas.framework.app.DataBaseControllerBean;
-import com.kingdee.eas.custom.integration.apimgt.OpenPlatformAuthBillCollection;
-import com.kingdee.eas.framework.DataBaseCollection;
-import com.kingdee.eas.framework.ObjectBaseCollection;
+import com.kingdee.shr.base.syssetting.BaseItemStateEnum;
+import org.apache.log4j.Logger;
 
-public class OpenPlatformAuthBillControllerBean extends AbstractOpenPlatformAuthBillControllerBean
-{
+public class OpenPlatformAuthBillControllerBean extends AbstractOpenPlatformAuthBillControllerBean {
     private static Logger logger =
-        Logger.getLogger("com.kingdee.eas.custom.integration.apimgt.app.OpenPlatformAuthBillControllerBean");
+            Logger.getLogger("com.kingdee.eas.custom.integration.apimgt.app.OpenPlatformAuthBillControllerBean");
+
+
+    @Override
+    protected void _delete(Context ctx, IObjectPK pk) throws BOSException, EASBizException {
+        OpenPlatformAuthBillInfo openPlatformAuthBillInfo = getOpenPlatformAuthBillInfo(ctx, pk);
+        BaseItemStateEnum state = openPlatformAuthBillInfo.getState();
+        if (BaseItemStateEnum.ENABLE.equals(state)) {
+            throw new BOSException("ÆôÓõÄÊý¾Ý²»ÄÜɾ³ý");
+        }
+        super._delete(ctx, pk);
+    }
 }

+ 2 - 1
src/com/kingdee/eas/custom/integration/apimgt/auth/service/SecretAuthService.java

@@ -4,6 +4,7 @@ import com.kingdee.eas.custom.integration.apimgt.ApiRegistryBillInfo;
 import com.kingdee.eas.custom.integration.apimgt.OpenPlatformAuthBillInfo;
 import com.kingdee.eas.custom.integration.apimgt.auth.model.AuthErrorCode;
 import com.kingdee.eas.custom.integration.apimgt.auth.model.AuthResult;
+import com.kingdee.eas.hr.ats.lightapp.util.DateTimeUtils;
 import com.kingdee.shr.base.syssetting.BaseItemStateEnum;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -55,7 +56,7 @@ public class SecretAuthService {
          * 检查密钥是否过期
          */
         Date expireDate = platform.getExpireDate();
-        if (expireDate != null && expireDate.before(new Date())) {
+        if (expireDate != null && expireDate.before(DateTimeUtils.truncateDate(new Date()))) {
             logger.warn("密钥已过期: platform={}, expireDate={}", platform.getPlatform(), expireDate);
             return AuthResult.failure(AuthErrorCode.SECRET_EXPIRED);
         }

+ 20 - 11
src/com/kingdee/eas/custom/integration/beisen/controller/BeisenAttendanceController.java

@@ -1,6 +1,8 @@
 package com.kingdee.eas.custom.integration.beisen.controller;
 
 import com.kingdee.eas.custom.integration.base.annotation.ApiDoc;
+import com.kingdee.eas.custom.integration.base.annotation.SkipAuth;
+import com.kingdee.eas.custom.integration.base.annotation.SkipCallLog;
 import com.kingdee.eas.custom.integration.base.controller.AbstractIntegrationController;
 import com.kingdee.eas.custom.integration.base.dto.ApiResult;
 import com.kingdee.eas.custom.integration.beisen.dto.AttendanceResponse;
@@ -16,9 +18,9 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
- * 北森考勤数据同步接口
+ * 北森考勤数据同步接口
  * 访问路径: /beisen/attendance/*
- * 无需登录认证(供北森系统回调)
+ * 无需登录认证(供北森系统回调)
  */
 @RestController
 @RequestMapping("/beisen/attendance")
@@ -28,11 +30,12 @@ public class BeisenAttendanceController extends AbstractIntegrationController {
     private AttendanceService attendanceService;
 
     /**
-     * 健康检查接口
-     * GET /beisen/attendance/health
+     * 健康检查接口。
      */
+    @SkipAuth
+    @SkipCallLog
     @RequestMapping("/health")
-    @ApiDoc(name = "健康检查接口", desc = "测试接口")
+    @ApiDoc(name = "健康检查接口", desc = "服务探活接口")
     public Map<String, Object> health() {
         Map<String, Object> result = new LinkedHashMap<>();
         result.put("status", "UP");
@@ -42,13 +45,15 @@ public class BeisenAttendanceController extends AbstractIntegrationController {
     }
 
     /**
-     * 考勤日报批量写入接口
-     * POST /beisen/attendance/daily
+     * 考勤日报批量写入接口
+     * 单次上限 200 条,超出抛 IntegrationException。
      */
     @PostMapping("/daily")
-    @ApiDoc(name = "考勤日报批量写入接口", desc = "批量写入考勤日报数据")
+    @ApiDoc(name = "考勤日报批量写入", desc = "接收北森系统推送的考勤日报数据,支持批量写入")
     public ApiResult<AttendanceResponse> writeDaily(@RequestBody BatchAttendanceRequest request) {
         requireNotEmpty(request.getRecords(), "records");
+        requireTrue(request.getRecords().size() <= 200,
+                "单次写入记录数不能超过200条,当前: " + request.getRecords().size());
 
         log.info("收到考勤日报批量写入请求 - 记录数: {}", request.getRecords().size());
 
@@ -57,12 +62,16 @@ public class BeisenAttendanceController extends AbstractIntegrationController {
     }
 
     /**
-     * 考勤月报批量写入接口
-     * POST /beisen/attendance/monthly
+     * 考勤月报批量写入接口
+     * 单次上限 200 条,超出抛 IntegrationException。
      */
     @PostMapping("/monthly")
-    @ApiDoc(name = "考勤月报批量写入接口", desc = "批量写入考勤月报数据")
+    @ApiDoc(name = "考勤月报批量写入", desc = "接收北森系统推送的考勤月报数据,支持批量写入")
     public ApiResult<AttendanceResponse> writeMonthly(@RequestBody BatchAttendanceRequest request) {
+        requireNotEmpty(request.getRecords(), "records");
+        requireTrue(request.getRecords().size() <= 200,
+                "单次写入记录数不能超过200条,当前: " + request.getRecords().size());
+
         log.info("收到考勤月报批量写入请求 - 记录数: {}",
                 request.getRecords() != null ? request.getRecords().size() : 0);
 

+ 4 - 3
src/com/kingdee/eas/custom/integration/beisen/service/impl/AttendanceServiceImpl.java

@@ -280,6 +280,7 @@ public class AttendanceServiceImpl implements AttendanceService {
                     filterItems.add(new FilterItemInfo("proposer", personR.data.getId()));
                     filterItems.add(new FilterItemInfo("attendancePeriod", periodR.data.getId()));
                     filterItems.add(new FilterItemInfo("adminOrgUnit", orgR.data.getId()));
+                    filterItems.add(new FilterItemInfo("position", posR.data.getId()));
                     EntityViewInfo viewInfo = EntityViewInfo.getInstance(filter, null, null);
 
                     AttendanceResultSummaryCollection resultCol = iResultSummary.getAttendanceResultSummaryCollection(viewInfo);
@@ -461,14 +462,14 @@ public class AttendanceServiceImpl implements AttendanceService {
         AttendancePeriodInfo info = cache.get(periodCode);
         if (info == null) {
             AttendancePeriodCollection col = iPeriod.getAttendancePeriodCollection(
-                    "where number = '" + escapeSql(periodCode) + "'");
+                    "where name = '" + escapeSql(periodCode) + "'");
             if (col != null && !col.isEmpty()) {
                 info = col.get(0);
                 cache.put(periodCode, info);
             }
         }
         if (info == null) {
-            return LookupResult.fail("sHR系统中不存在编码为" + periodCode + "的考勤周期");
+            return LookupResult.fail("sHR系统中不存在名称为" + periodCode + "的考勤周期");
         }
         return LookupResult.ok(info);
     }
@@ -564,7 +565,7 @@ public class AttendanceServiceImpl implements AttendanceService {
         String dateOrPeriod = request.getAttendanceDate() != null
                 ? request.getAttendanceDate()
                 : request.getAttendancePeriod();
-        return request.getPersonNumber() + "##" + dateOrPeriod;
+        return request.getPersonNumber() + "##" + dateOrPeriod + "##" + request.getAdminOrgCode() + "##" + request.getPositionCode();
     }
 
     private String escapeSql(String value) {