1、sso修改为取账号作为匹配 2、增加收款单更新资金计划科目的定时任务
This commit is contained in:
		
							parent
							
								
									a719a19cff
								
							
						
					
					
						commit
						0c654cd10a
					
				|  | @ -25,7 +25,7 @@ public class JHSSOAuthHandler implements ThirdSSOAuthHandler { | ||||||
| 
 | 
 | ||||||
|     private String callBackUrl = System.getProperty("domain.contextUrl"); |     private String callBackUrl = System.getProperty("domain.contextUrl"); | ||||||
| 
 | 
 | ||||||
|     private static final String[] projectgroups = new String[]{"mahongqiang","xujianbiao","anchenyuan","yuxueliang","weiyunlong","liguiqiang"}; |     private static final String[] projectgroups = new String[]{"mahongqiang","xujianbiao","anchenyuan","yuxueliang","liguiqiang"}; | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public void callTrdSSOLogin(HttpServletRequest hsrequest, HttpServletResponse hsresponse, String backUrl) { |     public void callTrdSSOLogin(HttpServletRequest hsrequest, HttpServletResponse hsresponse, String backUrl) { | ||||||
|  | @ -135,7 +135,15 @@ public class JHSSOAuthHandler implements ThirdSSOAuthHandler { | ||||||
|                 logger.info("认证中心Userinfo result:"+linkPostjson); |                 logger.info("认证中心Userinfo result:"+linkPostjson); | ||||||
|                 if (StringUtils.isNotEmpty(linkPostjson)) { |                 if (StringUtils.isNotEmpty(linkPostjson)) { | ||||||
|                     jsonObject = JSONObject.parseObject(linkPostjson); |                     jsonObject = JSONObject.parseObject(linkPostjson); | ||||||
|                     return jsonObject.getString("id"); |                     //修改成从account_no取值 yxl 20250717 | ||||||
|  |                     //派拉反馈:我们分几种用户类型,id会不同,所以才建议你们最好取account_no字段 | ||||||
|  |                     JSONObject resultJO = jsonObject.getJSONObject("attributes"); | ||||||
|  |                     if(resultJO == null) { | ||||||
|  |                         //如果没有attributes的对象,还返回id | ||||||
|  |                         return jsonObject.getString("id"); | ||||||
|  |                     }else { | ||||||
|  |                         return resultJO.getString("account_no"); | ||||||
|  |                     } | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } catch (Exception e) { |         } catch (Exception e) { | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ public class NotSAPNumNoticeTask extends AbstractTask implements Plugin { | ||||||
| 
 | 
 | ||||||
|     //fk_shjh_ispushsap 已推送sap标记 |     //fk_shjh_ispushsap 已推送sap标记 | ||||||
|     private static final String recesql = "select fopenorgid,fpayerid,fpayername,count(fid) from T_CAS_ReceivingBill where fk_shjh_ispushsap='0' and to_char(Fpayeedate,'yyyy-MM-DD')=? group by fopenorgid,fpayerid,fpayername"; |     private static final String recesql = "select fopenorgid,fpayerid,fpayername,count(fid) from T_CAS_ReceivingBill where fk_shjh_ispushsap='0' and to_char(Fpayeedate,'yyyy-MM-DD')=? group by fopenorgid,fpayerid,fpayername"; | ||||||
|     private static final String recbillName = "cas_recbill";//收款单 T_CAS_ReceivingBill | //    private static final String recbillName = "cas_recbill";//收款单 T_CAS_ReceivingBill | ||||||
|     private static final String pzbName = "shjh_sfkwyltzb";//收付款未认领人员通知映射表 |     private static final String pzbName = "shjh_sfkwyltzb";//收付款未认领人员通知映射表 | ||||||
|     private static final Log logger = LogFactory.getLog(NotSAPNumNoticeTask.class); |     private static final Log logger = LogFactory.getLog(NotSAPNumNoticeTask.class); | ||||||
| 
 | 
 | ||||||
|  | @ -56,7 +56,6 @@ public class NotSAPNumNoticeTask extends AbstractTask implements Plugin { | ||||||
| 
 | 
 | ||||||
|         //遍历map处理消息发送 |         //遍历map处理消息发送 | ||||||
|         QFilter qFilter; |         QFilter qFilter; | ||||||
|         QFilter custFilter; |  | ||||||
|         DynamicObject[] pzbcoll; |         DynamicObject[] pzbcoll; | ||||||
|         DynamicObject pzbinfo; |         DynamicObject pzbinfo; | ||||||
|         DynamicObjectCollection users;//配置表中的被通知人集合 |         DynamicObjectCollection users;//配置表中的被通知人集合 | ||||||
|  | @ -77,10 +76,14 @@ public class NotSAPNumNoticeTask extends AbstractTask implements Plugin { | ||||||
|             qFilter = new QFilter("shjh_biztype", QCP.equals, "sk");//业务类型为收款 |             qFilter = new QFilter("shjh_biztype", QCP.equals, "sk");//业务类型为收款 | ||||||
|             qFilter.and("shjh_org", QCP.equals, Long.parseLong(orgid));//公司ID |             qFilter.and("shjh_org", QCP.equals, Long.parseLong(orgid));//公司ID | ||||||
|             qFilter.and("enable", QCP.equals, "1");//使用状态 |             qFilter.and("enable", QCP.equals, "1");//使用状态 | ||||||
|             custFilter = new QFilter("shjh_customer", QCP.equals, Long.parseLong(customerid));//客户 |             qFilter.and("shjh_customer", QCP.equals, Long.parseLong(customerid));//客户 | ||||||
|             pzbcoll = BusinessDataServiceHelper.load(pzbName,"id",new QFilter[]{qFilter,custFilter}); |             pzbcoll = BusinessDataServiceHelper.load(pzbName,"id",qFilter.toArray()); | ||||||
|             if(pzbcoll == null || pzbcoll.length == 0){ |             if(pzbcoll == null || pzbcoll.length == 0){ | ||||||
|                 //根据客户没有找到对应配置表,去掉客户再查找一次 |                 //根据客户没有找到对应配置表,去掉客户再查找一次 | ||||||
|  |                 qFilter = new QFilter("shjh_biztype", QCP.equals, "sk");//业务类型为收款 | ||||||
|  |                 qFilter.and("shjh_org", QCP.equals, Long.parseLong(orgid));//公司ID | ||||||
|  |                 qFilter.and("enable", QCP.equals, "1");//使用状态 | ||||||
|  |                 qFilter.and("shjh_customer", QCP.equals, 0L);//客户为空 | ||||||
|                 pzbcoll = BusinessDataServiceHelper.load(pzbName,"id",qFilter.toArray()); |                 pzbcoll = BusinessDataServiceHelper.load(pzbName,"id",qFilter.toArray()); | ||||||
|             } |             } | ||||||
|             if(pzbcoll != null && pzbcoll.length >= 1){ |             if(pzbcoll != null && pzbcoll.length >= 1){ | ||||||
|  |  | ||||||
|  | @ -0,0 +1,390 @@ | ||||||
|  | package shjh.jhzj7.fi.fi.plugin.task; | ||||||
|  | 
 | ||||||
|  | import kd.bos.context.RequestContext; | ||||||
|  | import kd.bos.dataentity.entity.DynamicObject; | ||||||
|  | import kd.bos.dataentity.entity.DynamicObjectCollection; | ||||||
|  | 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.operation.SaveServiceHelper; | ||||||
|  | import kd.sdk.plugin.Plugin; | ||||||
|  | 
 | ||||||
|  | import java.util.*; | ||||||
|  | 
 | ||||||
|  | public class RecBillZjjhTask extends AbstractTask implements Plugin { | ||||||
|  |     private static final Log logger = LogFactory.getLog(RecBillZjjhTask.class); | ||||||
|  | 
 | ||||||
|  |     private static final String recbillName = "cas_recbill";//收款单 T_CAS_ReceivingBill | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException { | ||||||
|  | 
 | ||||||
|  |         DynamicObject[] recbills = BusinessDataServiceHelper.load(recbillName, "id", null); | ||||||
|  |         logger.info("本次需要处理的收款单个数"+recbills.length); | ||||||
|  |         ArrayList<Long> ids = new ArrayList<>(recbills.length); | ||||||
|  |         for (DynamicObject doinfo : recbills) { | ||||||
|  |             ids.add(doinfo.getLong("id")); | ||||||
|  |         } | ||||||
|  |         Map<Object, DynamicObject> recBillMap = BusinessDataServiceHelper.loadFromCache(ids.toArray(), recbillName); | ||||||
|  |         DynamicObject zjaccount;//资金计划科目 | ||||||
|  |         for (DynamicObject recbill : recBillMap.values()) { | ||||||
|  |             //根据配置表携带资金计划科目 | ||||||
|  |             zjaccount = xdMembersubject(recbill); | ||||||
|  |             recbill.set("shjh_planclass", zjaccount); | ||||||
|  |             if(zjaccount == null){ | ||||||
|  |                 logger.info(recbill.getString("billno")+"对应资金计划科目为空"); | ||||||
|  |             }else{ | ||||||
|  |                 logger.info(recbill.getString("billno")+"对应资金计划科目为"+zjaccount.getLong("id")); | ||||||
|  |             } | ||||||
|  |             SaveServiceHelper.save(new DynamicObject[]{recbill}); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private DynamicObject xdMembersubject(DynamicObject bill) { | ||||||
|  |         // 收款单,系统自动根据配置表(shjh_pay_account)带出资金计划科目 | ||||||
|  |         Date bizDate = bill.getDate("bizdate"); | ||||||
|  |         QFilter qFilter = new QFilter("shjh_biztype", QCP.equals, "B"); // 业务类型:收款 | ||||||
|  |         qFilter.and(new QFilter("status", QCP.equals, "C")); // 审核状态 | ||||||
|  |         qFilter.and(new QFilter("enable",QCP.equals,"1"));//启用状态 | ||||||
|  |         qFilter.and(new QFilter("shjh_begindate", QCP.less_equals, bizDate)); | ||||||
|  |         qFilter.and(new QFilter("shjh_enddate", QCP.large_equals, bizDate)); | ||||||
|  | 
 | ||||||
|  |         // 加载配置数据,并按优先级排序 | ||||||
|  |         DynamicObject[] load = BusinessDataServiceHelper.load( | ||||||
|  |                 "shjh_pay_account", | ||||||
|  |                 "id,shjh_priority,shjh_companys,shjh_bbhzz,shjh_bizbig,shjh_bbhywdl,shjh_bizsmall,shjh_cc,shjh_yym,shjh_kjkm,shjh_bhkh,shjh_bbhkh,shjh_bhgys,shjh_bbhgys,shjh_bbhbz,shjh_khzw,shjh_membersubject", | ||||||
|  |                 qFilter.toArray(), | ||||||
|  |                 "shjh_priority" | ||||||
|  |         ); | ||||||
|  | 
 | ||||||
|  |         if (load.length == 0) { | ||||||
|  |             return null; // 无匹配配置,返回 null | ||||||
|  |         } | ||||||
|  |         // 转换为 List 以便支持 remove 操作 | ||||||
|  |         List<DynamicObject> configList = new ArrayList<>(Arrays.asList(load)); | ||||||
|  |         // 遍历并过滤配置 | ||||||
|  |         Iterator<DynamicObject> iterator = configList.iterator(); | ||||||
|  |         while (iterator.hasNext()) { | ||||||
|  |             DynamicObject config = iterator.next(); | ||||||
|  | 
 | ||||||
|  |             // 1. 检查公司范围(包含) | ||||||
|  |             if (checkDynamicDataMatch(config, bill, "shjh_companys", "openorg")) { | ||||||
|  |                 iterator.remove(); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // 2. 检查不包含的公司范围(排除) | ||||||
|  |             if (checkNotDynamicMatch(config, bill, "shjh_bbhzz", "openorg")) { | ||||||
|  |                 iterator.remove(); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // 3. 检查业务大类(包含) | ||||||
|  |             if (checkDynamicDataMatch(config, bill, "shjh_bizbig", "shjh_bizebig")) { | ||||||
|  |                 iterator.remove(); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // 4. 检查不包含的业务大类(排除) | ||||||
|  |             if (checkNotDynamicMatch(config, bill, "shjh_bbhywdl", "shjh_bizebig")) { | ||||||
|  |                 iterator.remove(); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // 5. 检查业务小类(包含) | ||||||
|  |             if (checkDynamicDataMatch(config, bill, "shjh_bizsmall", "shjh_bizsmall")) { | ||||||
|  |                 iterator.remove(); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // 6. 检查成本中心(包含) | ||||||
|  |             if (checkDynamicDataMatch(config, bill, "shjh_cc", "shjh_costcenter")) { | ||||||
|  |                 iterator.remove(); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // 7. 检查原因码(包含) | ||||||
|  |             if (checkDynamicDataMatch(config, bill, "entry", "shjh_yym", "shjh_yym")) { | ||||||
|  |                 iterator.remove(); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // 8. 检查会计科目(包含) | ||||||
|  |             if (checkDynamicDataMatch(config, bill, "entry", "shjh_kjkm", "shjh_accountsap")) { | ||||||
|  |                 iterator.remove(); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // 9. 检查币种(不包含) | ||||||
|  |             if (checkNotDynamicMatch(config, bill, "shjh_bbhbz", "currency")) { | ||||||
|  |                 iterator.remove(); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             //付款人类型 | ||||||
|  |             String payerType = bill.getString("payertype"); | ||||||
|  |             if (null!=payerType) { | ||||||
|  |                 switch (payerType) { | ||||||
|  |                     case "bd_customer": | ||||||
|  |                         // 10_1. 检查客户(包含) | ||||||
|  |                         if (checkCustomerOrSupplierMatch(config, bill, "shjh_bhkh", "payer")) { | ||||||
|  |                             iterator.remove(); | ||||||
|  |                             continue; | ||||||
|  |                         } | ||||||
|  | 
 | ||||||
|  |                         // 10_2. 检查客户(不包含) | ||||||
|  |                         if (checkNotCustomerOrSupplierMatch(config, bill, "shjh_bbhkh", "payer")) { | ||||||
|  |                             iterator.remove(); | ||||||
|  |                             continue; | ||||||
|  |                         } | ||||||
|  | 
 | ||||||
|  |                         // 10_3.检查客户组(包含) | ||||||
|  |                         if (checkCustomerGroup(config, bill)) { | ||||||
|  |                             iterator.remove(); | ||||||
|  |                             continue; | ||||||
|  |                         } | ||||||
|  | 
 | ||||||
|  |                         break; | ||||||
|  |                     case "bd_supplier": | ||||||
|  |                         // 11_1. 检查供应商(包含) | ||||||
|  |                         if (checkCustomerOrSupplierMatch(config, bill, "shjh_bhgys", "payer")) { | ||||||
|  |                             iterator.remove(); | ||||||
|  |                             continue; | ||||||
|  |                         } | ||||||
|  | 
 | ||||||
|  |                         // 11_2. 检查供应商(不包含) | ||||||
|  |                         if (checkNotCustomerOrSupplierMatch(config, bill, "shjh_bbhgys", "payer")) { | ||||||
|  |                             iterator.remove(); | ||||||
|  |                             continue; | ||||||
|  |                         } | ||||||
|  | 
 | ||||||
|  |                         break; | ||||||
|  |                     default: | ||||||
|  |                         break; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 处理剩余数据 | ||||||
|  |         if (configList.isEmpty()) { | ||||||
|  |             return null; // 无匹配配置 | ||||||
|  |         } else { | ||||||
|  |             // 默认取优先级最高的第一条数据 | ||||||
|  |             DynamicObject selectedConfig = configList.get(0); | ||||||
|  |             return selectedConfig.getDynamicObject("shjh_membersubject"); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 不包含某个多选基础资料 | ||||||
|  |      * @param accountBill 资金计划科目表 | ||||||
|  |      * @param recBill 收款处理 | ||||||
|  |      * @param accountField 被匹配基础资料标识 | ||||||
|  |      * @param recField 提供基础资料标识 | ||||||
|  |      * @return 是否符合 | ||||||
|  |      */ | ||||||
|  |     private boolean checkNotDynamicMatch(DynamicObject accountBill, DynamicObject recBill ,String accountField,String recField) { | ||||||
|  |         DynamicObjectCollection dynamicObjectCollection = accountBill.getDynamicObjectCollection(accountField); | ||||||
|  |         if (dynamicObjectCollection.isEmpty()) { | ||||||
|  |             return false; // 无排除限制则通过 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         DynamicObject dynamicObject = recBill.getDynamicObject(recField); | ||||||
|  |         if (dynamicObject == null) { | ||||||
|  |             return false; // 单据无信息,无法排除 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         Long bizBigId = dynamicObject.getLong("id"); | ||||||
|  |         for (DynamicObject object : dynamicObjectCollection) { | ||||||
|  |             if (bizBigId.compareTo(object.getLong("fbasedataid_id")) == 0) { | ||||||
|  |                 return true; // 匹配到 | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return false; // 未匹配到 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 包含某个多选基础资料-收款单表头取数 | ||||||
|  |      * @param accountBill 资金计划科目表 | ||||||
|  |      * @param recBill 收款处理 | ||||||
|  |      * @param accountField 被匹配基础资料标识 | ||||||
|  |      * @param recField 提供基础资料标识 | ||||||
|  |      * @return 是否符合 | ||||||
|  |      */ | ||||||
|  |     private boolean checkDynamicDataMatch(DynamicObject accountBill, DynamicObject recBill ,String accountField,String recField){ | ||||||
|  |         DynamicObjectCollection dynamicObjectCollection = accountBill.getDynamicObjectCollection(accountField); | ||||||
|  |         if (dynamicObjectCollection.isEmpty()) { | ||||||
|  |             return false; // 无限制-通过 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         DynamicObject dynamicObject = recBill.getDynamicObject(recField); | ||||||
|  |         if (dynamicObject == null) { | ||||||
|  |             return true; // 已经指定范围,但收款单无字段-移除 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         Long id = dynamicObject.getLong("id"); | ||||||
|  |         for (DynamicObject object : dynamicObjectCollection) { | ||||||
|  |             if (id.compareTo(object.getLong("fbasedataid_id")) == 0) { | ||||||
|  |                 return false; // 匹配到包含的基础资料-通过 | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return true; // 未匹配到包含的多选基础资料 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 包含某个多选基础资料-收款单分录取数 | ||||||
|  |      * @param accountBill 资金计划科目表 | ||||||
|  |      * @param recBill 收款处理 | ||||||
|  |      * @param entryName 分录标识 | ||||||
|  |      * @param accountField 被匹配基础资料标识 | ||||||
|  |      * @param recField 提供基础资料标识 | ||||||
|  |      * @return 是否符合 | ||||||
|  |      */ | ||||||
|  |     private boolean checkDynamicDataMatch(DynamicObject accountBill, DynamicObject recBill ,String entryName,String accountField,String recField){ | ||||||
|  |         DynamicObjectCollection dynamicObjectCollection = accountBill.getDynamicObjectCollection(accountField); | ||||||
|  |         if (dynamicObjectCollection.isEmpty()) { | ||||||
|  |             return false; // 无限制则通过 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         DynamicObjectCollection entry = recBill.getDynamicObjectCollection(entryName); | ||||||
|  |         if (entry.isEmpty()) { | ||||||
|  |             return true; // 单据字段信息,不匹配 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         DynamicObject dynamicObject = entry.get(0).getDynamicObject(recField); | ||||||
|  |         if (dynamicObject==null){ | ||||||
|  |             return true;//放行 | ||||||
|  |         } | ||||||
|  |         Long orgId = dynamicObject.getLong("id"); | ||||||
|  |         for (DynamicObject object : dynamicObjectCollection) { | ||||||
|  |             if (orgId.compareTo(object.getLong("fbasedataid_id")) == 0) { | ||||||
|  |                 return false; // 匹配到包含的基础资料-放行 | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return true; // 未匹配到包含的多选基础资料-移除 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 针对包含客户||供应商 | ||||||
|  |      * @param accountBill | ||||||
|  |      * @param recBill | ||||||
|  |      * @param accountField | ||||||
|  |      * @param recField | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     private boolean checkCustomerOrSupplierMatch(DynamicObject accountBill, DynamicObject recBill ,String accountField,String recField){ | ||||||
|  |         DynamicObjectCollection dynamicObjectCollection = accountBill.getDynamicObjectCollection(accountField); | ||||||
|  |         if (dynamicObjectCollection.isEmpty()) { | ||||||
|  |             return false; // 无限制则通过 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         Long id = recBill.getLong(recField); | ||||||
|  |         if (id == 0L) { | ||||||
|  |             return true; // 单据字段信息,不匹配 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         for (DynamicObject object : dynamicObjectCollection) { | ||||||
|  |             if (id.compareTo(object.getLong("fbasedataid_id")) == 0) { | ||||||
|  |                 return false; // 匹配到包含的基础资料 | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return true; // 未匹配到包含的多选基础资料 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 针对不包含客户||供应商 | ||||||
|  |      * @param accountBill | ||||||
|  |      * @param recBill | ||||||
|  |      * @param accountField | ||||||
|  |      * @param recField | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     private boolean checkNotCustomerOrSupplierMatch(DynamicObject accountBill, DynamicObject recBill ,String accountField,String recField){ | ||||||
|  |         DynamicObjectCollection dynamicObjectCollection = accountBill.getDynamicObjectCollection(accountField); | ||||||
|  |         if (dynamicObjectCollection.isEmpty()) { | ||||||
|  |             return false; // 无限制则通过 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         Long id = recBill.getLong(recField); | ||||||
|  |         if (id == 0L) { | ||||||
|  |             return false; // 单据字段信息,不匹配 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         for (DynamicObject object : dynamicObjectCollection) { | ||||||
|  |             if (id.compareTo(object.getLong("fbasedataid_id")) == 0) { | ||||||
|  |                 return true; // 匹配到包含的基础资料 | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return false; // 未匹配到包含的多选基础资料 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 针对客户检查客户组,客户组为必填项 | ||||||
|  |      * @param accountBill 资金计划科目表 | ||||||
|  |      * @param recBill 收款处理 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     private boolean checkCustomerGroup(DynamicObject accountBill, DynamicObject recBill) { | ||||||
|  |         // 1. 获取客户ID | ||||||
|  |         Long id = recBill.getLong("payer"); | ||||||
|  |         if (id == null) { | ||||||
|  |             return false; // 无付款人信息,默认通过 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 2. 加载客户对象 | ||||||
|  |         DynamicObject customer = BusinessDataServiceHelper.loadSingle(id, "bd_customer"); | ||||||
|  |         if (customer == null) { | ||||||
|  |             return false; // 客户不存在,默认通过 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 3. 获取客户的客户组列表(shjh_entry_five) | ||||||
|  |         DynamicObjectCollection customerGroups = customer.getDynamicObjectCollection("shjh_entry_five"); | ||||||
|  |         if (customerGroups.isEmpty()) { | ||||||
|  |             return false; // 客户未关联任何客户组,默认通过 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 4. 获取配置表中允许的客户组列表(shjh_khzw) | ||||||
|  |         DynamicObjectCollection allowedGroups = accountBill.getDynamicObjectCollection("shjh_khzw"); | ||||||
|  |         if (allowedGroups.isEmpty()) { | ||||||
|  |             return false; // 配置未限制客户组,默认通过 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         //获取收款单组织 | ||||||
|  |         DynamicObject openorg = recBill.getDynamicObject("openorg"); | ||||||
|  |         String orgNumber = ""; | ||||||
|  |         if (null != openorg) { | ||||||
|  |             orgNumber = openorg.getString("number"); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 5. 检查客户是否属于配置允许的客户组 | ||||||
|  |         for (DynamicObject customerGroup : customerGroups) { | ||||||
|  |             String customerGroupNumber = customerGroup.getString("shjh_entryfive_number"); | ||||||
|  |             if (customerGroupNumber == null) { | ||||||
|  |                 continue; // 跳过无编号的客户组 | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             String salecompanynum = customerGroup.getString("shjh_salecompanynum"); | ||||||
|  |             if (salecompanynum == null) { | ||||||
|  |                 continue; // 跳过无销售公司编号的客户组 | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             if (!salecompanynum.equals(orgNumber)) { | ||||||
|  |                 continue; // 跳过销售公司编号与收款单核算组织不匹配的客户组 | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             for (DynamicObject allowedGroup : allowedGroups) { | ||||||
|  |                 DynamicObject baseDataObj = allowedGroup.getDynamicObject("fbasedataid"); | ||||||
|  |                 String number=baseDataObj.getString("number"); | ||||||
|  |                 if (customerGroupNumber.equals(number)) { | ||||||
|  |                     return false; // 匹配到允许的客户组 | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return true; // 客户不属于任何允许的客户组 | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue