| 
					
				 | 
			
			
				@@ -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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 |