被动付款入账&&收款入账中心反写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_PAY="cas_paybill"; | ||||||
|     //下拨处理 |     //下拨处理 | ||||||
|     private static final String KEY_DOWN="fca_transdownbill"; |     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 |     @Override | ||||||
|     public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException { |     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)) { |             if (StringUtils.isNotEmpty(credentialNum)) { | ||||||
|                 beiIntelpay.set("shjh_credentialnums", credentialNum); |                 beiIntelpay.set("shjh_credentialnums", credentialNum); | ||||||
|                 toSaveList.add(beiIntelpay); |                 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<>(); |         Map<String, String> keyToFieldMap = new LinkedHashMap<>(); | ||||||
|         keyToFieldMap.put(KEY_PAY, "shjh_credentialnum"); |         keyToFieldMap.put(KEY_PAY, "shjh_credentialnum"); | ||||||
|         keyToFieldMap.put(KEY_DOWN, "shjh_sappzh"); |         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()) { |         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