支付信息变更单-列表过滤锁定当前变更人
This commit is contained in:
		
							parent
							
								
									9361e4ec6e
								
							
						
					
					
						commit
						e12d9ed338
					
				|  | @ -3,6 +3,7 @@ package shjh.jhzj7.fi.fi.plugin.task; | |||
| import kd.bos.context.RequestContext; | ||||
| import kd.bos.dataentity.OperateOption; | ||||
| import kd.bos.dataentity.entity.DynamicObject; | ||||
| import kd.bos.dataentity.entity.DynamicObjectCollection; | ||||
| import kd.bos.entity.operate.OperateOptionConst; | ||||
| import kd.bos.entity.operate.result.OperationResult; | ||||
| import kd.bos.exception.KDException; | ||||
|  | @ -16,6 +17,8 @@ import kd.bos.servicehelper.operation.OperationServiceHelper; | |||
| import kd.sdk.plugin.Plugin; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Calendar; | ||||
| import java.util.Date; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| /** | ||||
|  | @ -47,20 +50,69 @@ public class PayApplyFukuanTask extends AbstractTask implements Plugin { | |||
|             // 不显示交互提示,自动执行到底 | ||||
|             operateOption.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true)); | ||||
|             // 全部校验通过才保存 | ||||
|             operateOption.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(true)); | ||||
|             //operateOption.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(true)); | ||||
|             //同一个用户在多个界面操作同一张,也不允许操作 | ||||
|             operateOption.setVariableValue(OperateOptionConst.MUTEX_ISSTRICT, String.valueOf(true)); | ||||
|             for (DynamicObject dynamicObject : recBillMap.values()) { | ||||
|                 // 注意:executeOperate 需要一个数组形式的 DynamicObject[] | ||||
|                 DynamicObject[] billArray = new DynamicObject[]{dynamicObject}; | ||||
|                 OperationResult operationResult = OperationServiceHelper.executeOperate("pushandsave", AP_PAYAPPLY, billArray, operateOption); | ||||
|                 // 可以根据需要处理 operationResult,例如检查是否成功、获取返回值等 | ||||
|                 if (operationResult.isSuccess()) { | ||||
|                     logger.info("执行 pay 成功,单据编号:" + dynamicObject.getPkValue()); | ||||
|                 } else { | ||||
|                     logger.error(operationResult.getMessage()); | ||||
|                 DynamicObjectCollection entry = dynamicObject.getDynamicObjectCollection("entry"); | ||||
|                 if (entry!=null && entry.size()!=0){ | ||||
|                     //判断是否集团内-境内外供应商 | ||||
|                     DynamicObject dynamicObject1 = entry.get(0); | ||||
|                     boolean supplierFilter = supplierFilter(dynamicObject1); | ||||
|                     //判断是否存在数据在下推期间范围(到期日是当前月月底前) | ||||
|                     boolean expirationDateFilter = expirationDateFilter(entry); | ||||
|                     if (!supplierFilter && expirationDateFilter){ | ||||
|                         DynamicObject[] billArray = new DynamicObject[]{dynamicObject}; | ||||
|                         OperationResult operationResult = OperationServiceHelper.executeOperate("pushandsave", AP_PAYAPPLY, billArray, operateOption); | ||||
|                         // 可以根据需要处理 operationResult,例如检查是否成功、获取返回值等 | ||||
|                         if (operationResult.isSuccess()) { | ||||
|                             logger.info("执行 pay 成功,单据编号:" + dynamicObject.getPkValue()); | ||||
|                         } else { | ||||
|                             logger.error(operationResult.getMessage()); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private boolean supplierFilter(DynamicObject dynamicObject){ | ||||
|         boolean isFilterSupplier = false; | ||||
|         String asstacttype = dynamicObject.getString("e_asstacttype"); | ||||
|         if ("bd_supplier".equals(asstacttype)){ | ||||
|             DynamicObject asstact = dynamicObject.getDynamicObject("e_asstact"); | ||||
|             if (asstact!=null){ | ||||
|                 //获取供应商分类映射 | ||||
|                 QFilter qFilter1 = new QFilter("supplier.id", QCP.equals, asstact.getPkValue()); | ||||
|                 DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle("bd_suppliergroupdetail", qFilter1.toArray()); | ||||
|                 if (dynamicObject1!=null){ | ||||
|                     String number = dynamicObject1.getString("group.number"); | ||||
|                     if ("D200".equals(number) || "D201".equals(number)){ | ||||
|                         isFilterSupplier=true; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return isFilterSupplier; | ||||
|     } | ||||
| 
 | ||||
|     private boolean expirationDateFilter(DynamicObjectCollection entry){ | ||||
|         boolean hasValidDueDate = false;  // 默认false,表示没有符合条件的数据 | ||||
| 
 | ||||
|         // 获取当前月的最后一天(月底) | ||||
|         Calendar calendar = Calendar.getInstance(); | ||||
|         calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); | ||||
|         Date endOfCurrentMonth = calendar.getTime(); | ||||
| 
 | ||||
|         //遍历entry集合,检查是否有到期日小于等于当前月月底的数据 | ||||
|         for (DynamicObject object : entry) { | ||||
|             Date dueDate = object.getDate("e_duedate"); | ||||
|             if (dueDate != null && dueDate.compareTo(endOfCurrentMonth) <= 0) { | ||||
|                 hasValidDueDate = true;  // 找到符合条件的数据 | ||||
|                 break;  // 只要有一条符合就退出循环 | ||||
|             } | ||||
|         } | ||||
|         return hasValidDueDate; | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue