上划下拨单定时推送任务
This commit is contained in:
		
							parent
							
								
									c1e3493939
								
							
						
					
					
						commit
						6c0960b41f
					
				|  | @ -0,0 +1,124 @@ | |||
| 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.entity.operate.OperateOptionConst; | ||||
| import kd.bos.entity.operate.result.OperationResult; | ||||
| import kd.bos.exception.KDException; | ||||
| import kd.bos.logging.Log; | ||||
| import kd.bos.logging.LogFactory; | ||||
| import kd.bos.orm.query.QCP; | ||||
| import kd.bos.orm.query.QFilter; | ||||
| import kd.bos.schedule.executor.AbstractTask; | ||||
| import kd.bos.servicehelper.BusinessDataServiceHelper; | ||||
| import kd.bos.servicehelper.botp.BFTrackerServiceHelper; | ||||
| import kd.bos.servicehelper.operation.OperationServiceHelper; | ||||
| import kd.sdk.plugin.Plugin; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| /** | ||||
|  * 后台任务插件 | ||||
|  * 上划、下拨单定时推送SAP | ||||
|  */ | ||||
| public class UpAndDownBillTask extends AbstractTask implements Plugin { | ||||
| 
 | ||||
| 
 | ||||
|     private final static Log logger = LogFactory.getLog(UpAndDownBillTask.class); | ||||
| 
 | ||||
|     //上划单标识 | ||||
|     private final static String UP_KEY="fca_transupbill"; | ||||
| 
 | ||||
|     //下拨单标识 | ||||
|     private final static String DOWN_KEY="fca_transdownbill"; | ||||
| 
 | ||||
|     @Override | ||||
|     public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException { | ||||
|         //1.单据状态=已付款 | ||||
|         //2.推送SAP=false && SAP凭证号=null | ||||
|         //3.关联凭证已审核 | ||||
|         QFilter qFilter = new QFilter("billstatus", QCP.equals, "D"); | ||||
|         qFilter.and(new QFilter("shjh_sendsap",QCP.equals,false)); | ||||
|         qFilter.and(new QFilter("isvoucher",QCP.equals,true)); | ||||
|         String[] billno=new String[]{"SHZJ202506300007","SHZJ202506250007"}; | ||||
|         qFilter.and(new QFilter("billno",QCP.in,billno)); | ||||
|         this.queryBills(qFilter,UP_KEY); | ||||
|         this.queryBills(qFilter,DOWN_KEY); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 查询符合条件的单据 | ||||
|      * @param qFilter | ||||
|      * @param upKey | ||||
|      */ | ||||
|     private void queryBills(QFilter qFilter, String upKey) { | ||||
|         DynamicObject[] objects = BusinessDataServiceHelper.load(upKey, "id", qFilter.toArray()); | ||||
|         if (objects.length!=0){ | ||||
|             ArrayList<Long> idList = new ArrayList<>(); | ||||
|             for (DynamicObject object : objects) { | ||||
|                 //联查凭证状态-已审核 | ||||
|                 Boolean exitAuditVoucher = this.QueryVoucherStatus(object.getPkValue()); | ||||
|                 if (exitAuditVoucher){ | ||||
|                     idList.add((Long) object.getPkValue()); | ||||
|                 } | ||||
|             } | ||||
|             if (idList.size()!=0){ | ||||
|                 Map<Object, DynamicObject> billMap = BusinessDataServiceHelper.loadFromCache(idList.toArray(), upKey); | ||||
|                 // 配置操作选项(共用) | ||||
|                 OperateOption operateOption = createStrictOperateOption(); | ||||
|                 List<DynamicObject> billList = new ArrayList<>(billMap.values()); | ||||
|                 pushBills(billList,"sendvoucher",operateOption,upKey); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 查询关联凭证是否已审核 | ||||
|      * @param pkValue 源单id | ||||
|      * @return 布尔值 | ||||
|      */ | ||||
|     private Boolean QueryVoucherStatus(Object pkValue) { | ||||
|         boolean exitAuditVoucher = false; | ||||
|         QFilter voucherFilters = new QFilter("sourcebill", QCP.equals, pkValue); | ||||
|         DynamicObject gl_voucher = BusinessDataServiceHelper.loadSingle("gl_voucher", voucherFilters.toArray()); | ||||
|         if (gl_voucher != null) { | ||||
|             String billStatus = gl_voucher.getString("billstatus"); | ||||
|             if ("C".equals(billStatus)){ | ||||
|                 exitAuditVoucher=true; | ||||
|             } | ||||
|         } | ||||
|         return exitAuditVoucher; | ||||
|     } | ||||
| 
 | ||||
|     private OperateOption createStrictOperateOption() { | ||||
|         OperateOption option = OperateOption.create(); | ||||
|         option.setVariableValue(OperateOptionConst.IGNOREWARN, "true");//不执行警告级别校验器 | ||||
|         option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, "true");//不显示交互提示,自动执行到底 | ||||
|         option.setVariableValue(OperateOptionConst.STRICTVALIDATION, "true");//全部校验通过才保存 | ||||
|         option.setVariableValue(OperateOptionConst.MUTEX_ISSTRICT, "true");//同一个用户在多个界面操作同一张,也不允许操作 | ||||
|         return option; | ||||
|     } | ||||
| 
 | ||||
|     private void pushBills(List<DynamicObject> bills, String operationKey, OperateOption option,String billKey){ | ||||
|         if (bills.isEmpty()){ | ||||
|             logger.info(billKey+"无数据处理"); | ||||
|             return; | ||||
|         } | ||||
|         try { | ||||
|             DynamicObject[] billArray = bills.toArray(new DynamicObject[0]); | ||||
|             OperationResult result = OperationServiceHelper.executeOperate(operationKey, billKey, billArray, option); | ||||
| 
 | ||||
|             if (result.isSuccess()) { | ||||
|                 logger.info(String.format("【%s】批量处理成功:%d 张单据", operationKey, bills.size())); | ||||
|             } else { | ||||
|                 logger.error(String.format("【%s】处理失败:%s", operationKey, result.getMessage())); | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             logger.error(String.format("【%s】执行异常:", operationKey), e); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue