被动付款入账&&收款入账中心反写SAP调度
This commit is contained in:
		
							parent
							
								
									c0e28a9276
								
							
						
					
					
						commit
						58b879f9c5
					
				|  | @ -25,10 +25,7 @@ public class BeiIntelpayBillTask extends AbstractTask implements Plugin { | |||
|     private static final String KEY_PAY="cas_paybill"; | ||||
|     //下拨处理 | ||||
|     private static final String KEY_DOWN="fca_transdownbill"; | ||||
|     //收款处理 | ||||
|     private static final String KEY_REC="cas_recbill"; | ||||
|     //上划处理 | ||||
|     private static final String KEY_UP="fca_transupbill"; | ||||
| 
 | ||||
| 
 | ||||
|     @Override | ||||
|     public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException { | ||||
|  | @ -56,6 +53,17 @@ public class BeiIntelpayBillTask extends AbstractTask implements Plugin { | |||
|             if (StringUtils.isNotEmpty(credentialNum)) { | ||||
|                 beiIntelpay.set("shjh_credentialnums", credentialNum); | ||||
|                 toSaveList.add(beiIntelpay); | ||||
|             }else { | ||||
|                 //从付款单关联交易明细信息匹配 | ||||
|                 String billno = beiIntelpay.getString("billno"); | ||||
|                 DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", new QFilter[]{new QFilter("bankcheckentity.edetailbillno", QCP.equals, billno)}); | ||||
|                 if (null !=paybill){ | ||||
|                     String credentialnum = paybill.getString("shjh_credentialnum"); | ||||
|                     if (null!=credentialnum){ | ||||
|                         beiIntelpay.set("shjh_credentialnums", credentialnum); | ||||
|                         toSaveList.add(beiIntelpay); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|  | @ -73,8 +81,7 @@ public class BeiIntelpayBillTask extends AbstractTask implements Plugin { | |||
|         Map<String, String> keyToFieldMap = new LinkedHashMap<>(); | ||||
|         keyToFieldMap.put(KEY_PAY, "shjh_credentialnum"); | ||||
|         keyToFieldMap.put(KEY_DOWN, "shjh_sappzh"); | ||||
|         keyToFieldMap.put(KEY_REC, "shjh_vouchernum"); | ||||
|         keyToFieldMap.put(KEY_UP, "shjh_sappzh"); | ||||
| 
 | ||||
| 
 | ||||
|         // 按顺序查找 | ||||
|         for (Map.Entry<String, String> entry : keyToFieldMap.entrySet()) { | ||||
|  |  | |||
|  | @ -0,0 +1,90 @@ | |||
| package shjh.jhzj7.fi.fi.plugin.task; | ||||
| 
 | ||||
| import kd.bos.context.RequestContext; | ||||
| import kd.bos.dataentity.entity.DynamicObject; | ||||
| import kd.bos.exception.KDException; | ||||
| 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.SaveServiceHelper; | ||||
| import kd.bos.util.StringUtils; | ||||
| import kd.sdk.plugin.Plugin; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.util.*; | ||||
| 
 | ||||
| /** | ||||
|  * 定时从付款单携带SAP付凭证单号至收款入账中心 | ||||
|  */ | ||||
| public class BeiIntelrecBillTask extends AbstractTask implements Plugin { | ||||
|     //收款处理 | ||||
|     private static final String KEY_REC="cas_recbill"; | ||||
|     //上划处理 | ||||
|     private static final String KEY_UP="fca_transupbill"; | ||||
|     @Override | ||||
|     public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException { | ||||
|         // 查询条件:收款金额大于0且凭证号为空 | ||||
|         QFilter q1 = new QFilter("creditamount", QCP.large_than, BigDecimal.ZERO); | ||||
|         QFilter q2 = new QFilter("shjh_credentialnums", QCP.equals, ""); | ||||
| 
 | ||||
|         // 加载需要处理的智能付款单 | ||||
|         DynamicObject[] beiIntelrecs = BusinessDataServiceHelper.load("bei_intelrec", | ||||
|                 "id,billno,shjh_credentialnums", | ||||
|                 new QFilter[]{q1, q2}); | ||||
| 
 | ||||
|         // 用于批量保存 | ||||
|         List<DynamicObject> toSaveList = new ArrayList<>(); | ||||
| 
 | ||||
|         for (DynamicObject beiIntelrec : beiIntelrecs) { | ||||
|             // 下查关联单据 | ||||
|             Map<String, HashSet<Long>> intelPayMap = BFTrackerServiceHelper.findTargetBills( | ||||
|                     "bei_intelrec", | ||||
|                     new Long[]{(Long) beiIntelrec.getPkValue()}); | ||||
| 
 | ||||
|             // 尝试从不同类型的关联单据中获取凭证号 | ||||
|             String credentialNum = findCredentialNum(intelPayMap); | ||||
| 
 | ||||
|             if (StringUtils.isNotEmpty(credentialNum)) { | ||||
|                 beiIntelrec.set("shjh_credentialnums", credentialNum); | ||||
|                 toSaveList.add(beiIntelrec); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // 批量保存 | ||||
|         if (!toSaveList.isEmpty()) { | ||||
|             SaveServiceHelper.save(toSaveList.toArray(new DynamicObject[0])); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 从关联单据中查找凭证号 | ||||
|      */ | ||||
|     private String findCredentialNum(Map<String, HashSet<Long>> intelPayMap) { | ||||
|         // 定义查找顺序和对应的字段名 | ||||
|         Map<String, String> keyToFieldMap = new LinkedHashMap<>(); | ||||
|         keyToFieldMap.put(KEY_REC, "shjh_vouchernum"); | ||||
|         keyToFieldMap.put(KEY_UP, "shjh_sappzh"); | ||||
| 
 | ||||
|         // 按顺序查找 | ||||
|         for (Map.Entry<String, String> entry : keyToFieldMap.entrySet()) { | ||||
|             String key = entry.getKey(); | ||||
|             String fieldName = entry.getValue(); | ||||
| 
 | ||||
|             if (intelPayMap.containsKey(key)) { | ||||
|                 for (Long billId : intelPayMap.get(key)) { | ||||
|                     DynamicObject bill = BusinessDataServiceHelper.loadSingle(billId, key); | ||||
|                     if (bill != null) { | ||||
|                         String credentialNum = bill.getString(fieldName); | ||||
|                         if (StringUtils.isNotEmpty(credentialNum)) { | ||||
|                             return credentialNum; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return null; | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue