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);
|
||||||
|
//修改成从account_no取值 yxl 20250717
|
||||||
|
//派拉反馈:我们分几种用户类型,id会不同,所以才建议你们最好取account_no字段
|
||||||
|
JSONObject resultJO = jsonObject.getJSONObject("attributes");
|
||||||
|
if(resultJO == null) {
|
||||||
|
//如果没有attributes的对象,还返回id
|
||||||
return jsonObject.getString("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