Browse Source

出差、外办,增加与HR休假的时间重叠校验

wanghaiwu 1 day ago
parent
commit
0e439acd0e

+ 63 - 13
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/common/FinanceCommonUtils.java

@@ -6,6 +6,8 @@ import kd.bos.logging.LogFactory;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.fi.fa.business.constants.BdUser;
+
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -30,14 +32,25 @@ public class FinanceCommonUtils {
         String checkMsg = "";
 
         String selectFields = "id, billno";
-
-        QFilter qFilter = buildSearchFilter("er_tripreqbill", billId, userId, startDate, endDate);
+        String entityName = "";
         //出差申请单
-        DynamicObject[] tripReqBillArray = BusinessDataServiceHelper.load("er_tripreqbill", selectFields, qFilter.toArray());
+        entityName = "er_tripreqbill";
+        QFilter qFilter = buildSearchFilter(entityName, billId, userId, startDate, endDate);
+        DynamicObject[] tripReqBillArray = BusinessDataServiceHelper.load(entityName, selectFields, qFilter.toArray());
 
-        qFilter = buildSearchFilter("er_dailyvehiclebill", billId, userId, startDate, endDate);
         //外办单
-        DynamicObject[] vehicleBillArray = BusinessDataServiceHelper.load("er_dailyvehiclebill", selectFields, qFilter.toArray());
+        entityName = "er_dailyvehiclebill";
+        qFilter = buildSearchFilter(entityName, billId, userId, startDate, endDate);
+        DynamicObject[] vehicleBillArray = BusinessDataServiceHelper.load(entityName, selectFields, qFilter.toArray());
+
+        //HR休假申请
+        entityName = "wtabm_vaapplyself";
+        qFilter = buildSearchFilter(entityName, billId, userId, startDate, endDate);
+
+        //测试
+        qFilter.and(new QFilter("billno", QCP.equals, "LE-20250604-000002"));
+
+        DynamicObject[] vaapplyBillArray = BusinessDataServiceHelper.load(entityName, selectFields, qFilter.toArray());
 
         String tripReqBills = "";
         if(tripReqBillArray.length > 0){
@@ -47,6 +60,7 @@ public class FinanceCommonUtils {
 
             tripReqBills = String.join(",", numberList);
         }
+
         String vehicleBills = "";
         if(vehicleBillArray.length > 0){
             List<String> numberList = (List) Arrays.stream(vehicleBillArray).map((o) -> {
@@ -56,12 +70,25 @@ public class FinanceCommonUtils {
             vehicleBills = String.join(",", numberList);
         }
 
+        String vaapplyBills = "";
+        if(vaapplyBillArray.length > 0){
+            List<String> numberList = (List) Arrays.stream(vaapplyBillArray).map((o) -> {
+                return o.getString("billno");
+            }).collect(Collectors.toList());
+
+            vaapplyBills = String.join(",", numberList);
+        }
+
+
         if(tripReqBills.length() > 0){
             checkMsg += "出差申请单:" + tripReqBills;
         }
         if(vehicleBills.length() > 0){
             checkMsg += "外办单:" + vehicleBills;
         }
+        if(vaapplyBills.length() > 0){
+            checkMsg += "HR休假单:" + vaapplyBills;
+        }
 
         return checkMsg;
     }
@@ -75,22 +102,45 @@ public class FinanceCommonUtils {
      */
     public static QFilter buildSearchFilter(String entityName, Long billId, Long userId, Date startDate, Date endDate){
         String prefix = "";
+        String startField = "startDate";
+        String endField = "endDate";
 
-        QFilter qFilter = new QFilter("applier", QCP.equals, userId);
-        qFilter.and(new QFilter("id", QCP.not_equals, billId));
-        if("er_tripreqbill".equals(entityName)){
+        QFilter qFilter = new QFilter("id", QCP.not_equals, billId);
+        if("er_tripreqbill".equals(entityName)){//出差申请
+            qFilter.and(new QFilter("applier", QCP.equals, userId));
+            //废弃 状态不需要校验
             qFilter.and(new QFilter("billstatus", QCP.not_equals2, "H"));
 
             prefix = "tripentry.";
+        } else if("er_dailyvehiclebill".equals(entityName)){//用车申请
+            qFilter.and(new QFilter("applier", QCP.equals, userId));
+        } else if("wtabm_vaapplyself".equals(entityName)){//HR休假
+            DynamicObject userInfo = BusinessDataServiceHelper.loadSingleFromCache(userId, "bos_user");
+            String personNo = userInfo.getString("number");
+
+            //过滤条件:考勤人员.工号
+            qFilter.and(new QFilter("personid.number", QCP.equals, personNo));
+            //审批不通过、废弃状态不需要校验
+            qFilter.and(new QFilter("billstatus", QCP.not_in, new String[]{"E","F"}));
+
+            prefix = "entryentity.";
+            startField = "entrystartdate";
+            endField = "entryenddate";
         }
 
-        QFilter startFilter = new QFilter(prefix + "startDate", QCP.less_equals, startDate);
-        startFilter.and(new QFilter(prefix + "endDate", QCP.large_equals, startDate));
+        QFilter startFilter = new QFilter(prefix + startField, QCP.less_equals, startDate);
+        startFilter.and(new QFilter(prefix + endField, QCP.large_equals, startDate));
+
+        QFilter endFilter = new QFilter(prefix + startField, QCP.less_equals, endDate);
+        endFilter.and(new QFilter(prefix + endField, QCP.large_equals, endDate));
+
+        QFilter startFilter1 = new QFilter(prefix + startField, QCP.large_equals, startDate);
+        startFilter1.and(new QFilter(prefix + startField, QCP.less_than, endDate));
 
-        QFilter endFilter = new QFilter(prefix + "startDate", QCP.less_equals, endDate);
-        endFilter.and(new QFilter(prefix + "endDate", QCP.large_equals, endDate));
+        QFilter endFilter1 = new QFilter(prefix + endField, QCP.large_equals, startDate);
+        endFilter1.and(new QFilter(prefix + endField, QCP.less_than, endDate));
 
-        qFilter.and(startFilter.or(endFilter));
+        qFilter.and(startFilter.or(endFilter).or(startFilter1).or(endFilter1));
 
         return qFilter;
     }