From 375b4f5245ae1b5f867ae276bca0f3bc1cd659e1 Mon Sep 17 00:00:00 2001 From: mzr Date: Fri, 20 Jun 2025 21:41:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E6=AC=BE=E5=8D=95=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=90=8E=E6=9B=B4=E6=96=B0=E5=88=B0=E8=B4=A6=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E7=9A=84=E6=94=B6=E6=AC=BE=E7=94=9F=E6=88=90=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GatheringBillAfterUpdateInformer.java | 90 +++++++++ .../private/nc/bs/pub/action/N_F2_DELETE.java | 62 ------ .../private/nc/bs/pub/action/N_F2_SAVE.java | 186 ------------------ .../nc/bs/arap/util/GatheringBillAfter.java | 58 ------ 4 files changed, 90 insertions(+), 306 deletions(-) create mode 100644 arap/src/private/nc/bs/arap/busireg/GatheringBillAfterUpdateInformer.java delete mode 100644 arap/src/private/nc/bs/pub/action/N_F2_DELETE.java delete mode 100644 arap/src/private/nc/bs/pub/action/N_F2_SAVE.java delete mode 100644 arap/src/public/nc/bs/arap/util/GatheringBillAfter.java diff --git a/arap/src/private/nc/bs/arap/busireg/GatheringBillAfterUpdateInformer.java b/arap/src/private/nc/bs/arap/busireg/GatheringBillAfterUpdateInformer.java new file mode 100644 index 0000000..b34dee5 --- /dev/null +++ b/arap/src/private/nc/bs/arap/busireg/GatheringBillAfterUpdateInformer.java @@ -0,0 +1,90 @@ +package nc.bs.arap.busireg; + +import nc.bs.arap.util.SqlUtils; +import nc.bs.businessevent.BusinessEvent; +import nc.bs.businessevent.IBusinessEvent; +import nc.bs.businessevent.IBusinessListener; +import nc.bs.dao.BaseDAO; +import nc.bs.logging.Logger; +import nc.jdbc.framework.SQLParameter; +import nc.vo.pub.AggregatedValueObject; +import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; +import nccloud.commons.lang.StringUtils; + +import java.util.Arrays; +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * 收款单保存后更新到账通知的收款生成状态 + */ +public class GatheringBillAfterUpdateInformer implements IBusinessListener { + @Override + public void doAction(IBusinessEvent event) throws BusinessException { + String eventType = event.getEventType(); + BusinessEvent e = (BusinessEvent) event; + AggregatedValueObject[] aggVOs = this.dealUserObj(e.getUserObject()); + // EventType是事件编码 + if ("1002".equals(eventType)) { + // 新增后 + updateInformerGenerateFlag(aggVOs, "hasgenerate"); + } else if ("1006".equals(eventType)) { + // 删除后 + updateInformerGenerateFlag(aggVOs, "hasnogenerate"); + } + } + + /** + * 更新收款单对应的到账通知 cmp_informer 的 generateflag 生成状态 + * + * @param aggVos 收款单vo数组 + * @param generateFlag 目标状态(例如 "hasgenerate" 或 "hasnogenerate") + */ + private void updateInformerGenerateFlag(AggregatedValueObject[] aggVos, String generateFlag) { + if (aggVos == null || aggVos.length == 0) { + return; // 参数为空时直接返回 + } + try { + Set codeSet = new LinkedHashSet<>(); + for (AggregatedValueObject aggVo : aggVos) { + CircularlyAccessibleValueObject[] bvos = aggVo.getChildrenVO(); + for (CircularlyAccessibleValueObject bvo : bvos) { + String bankrelatedCode = (String) bvo.getAttributeValue("bankrelated_code"); + if (StringUtils.isNotEmpty(bankrelatedCode) && !"~".equals(bankrelatedCode)) { + codeSet.add(bankrelatedCode); + } + } + } + String[] codes = codeSet.toArray(new String[0]); + Logger.error("updateInformerGenerateFlag-codes = " + Arrays.toString(codes)); + if (codes.length == 0) { + return; + } + BaseDAO baseDAO = new BaseDAO(); + String inStr = SqlUtils.getInStr("bankrelated_code", codes, true); + String sql = "UPDATE cmp_informer SET generateflag = ? WHERE " + inStr; + Logger.error("updateInformerGenerateFlag-sql = " + sql); + SQLParameter params = new SQLParameter(); + params.addParam(generateFlag); + baseDAO.executeUpdate(sql, params); + } catch (Exception e) { + Logger.error("updateInformerGenerateFlag-exp:", e); + } + } + + private AggregatedValueObject[] dealUserObj(Object obj) { + if (obj instanceof BusinessEvent.BusinessUserObj) { + obj = ((BusinessEvent.BusinessUserObj) obj).getUserObj(); + } + + AggregatedValueObject[] retvos = null; + if (obj.getClass().isArray()) { + retvos = (AggregatedValueObject[]) obj; + } else { + retvos = new AggregatedValueObject[]{(AggregatedValueObject) obj}; + } + + return retvos; + } +} diff --git a/arap/src/private/nc/bs/pub/action/N_F2_DELETE.java b/arap/src/private/nc/bs/pub/action/N_F2_DELETE.java deleted file mode 100644 index a8e5b60..0000000 --- a/arap/src/private/nc/bs/pub/action/N_F2_DELETE.java +++ /dev/null @@ -1,62 +0,0 @@ -// -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by FernFlower decompiler) -// - -package nc.bs.pub.action; - -import nc.bs.arap.actions.N_BASE_ACTION; -import nc.bs.arap.util.GatheringBillAfter; -import nc.bs.framework.common.NCLocator; -import nc.vo.arap.gathering.AggGatheringBillVO; -import nc.vo.arap.pub.ArapConstant; -import nc.vo.fipub.exception.ExceptionHandler; -import nc.vo.pub.BusinessException; -import nc.vo.pub.compiler.PfParameterVO; -import nccloud.pubitf.arap.arappub.IArapBillPubUtilService; - -import java.util.Hashtable; - -public class N_F2_DELETE extends N_BASE_ACTION { - private Hashtable m_keyHas = null; - - public N_F2_DELETE() { - } - - public Object runComClass(PfParameterVO paraVo) throws BusinessException { - try { - if (paraVo.m_preValueVos == null) { - return null; - } else { - Object obj = null; - super.m_tmpVo = paraVo; - String actionCode = ArapConstant.DELETE; - ((IArapBillPubUtilService) NCLocator.getInstance().lookup(IArapBillPubUtilService.class)).interceptorVaildator(paraVo.m_preValueVos, actionCode); - this.setParameter("context", paraVo.m_preValueVos); - obj = this.runClass("nc.bs.arap.actions.GatheringbillDeleteBatchBSAction", "deleteVOs", "&context:nc.vo.pub.AggregatedValueObject[]", paraVo, this.m_keyHas); - this.afterCheck(); - // 收款单删除后将对应的到账通知cmp_informer的生成状态generateflag修改为已生成hasnogenerate - AggGatheringBillVO[] aggVos = (AggGatheringBillVO[]) paraVo.m_preValueVos; - GatheringBillAfter.updateInformerGenerateFlag(aggVos, "hasnogenerate"); - return obj; - } - } catch (Exception ex) { - throw ExceptionHandler.handleException(this.getClass(), ex); - } - } - - public String getCodeRemark() { - return " arap action script not allowed to modify ,all rights reserved!"; - } - - protected void setParameter(String key, Object val) { - if (this.m_keyHas == null) { - this.m_keyHas = new Hashtable(); - } - - if (val != null) { - this.m_keyHas.put(key, val); - } - - } -} diff --git a/arap/src/private/nc/bs/pub/action/N_F2_SAVE.java b/arap/src/private/nc/bs/pub/action/N_F2_SAVE.java deleted file mode 100644 index 232f6ff..0000000 --- a/arap/src/private/nc/bs/pub/action/N_F2_SAVE.java +++ /dev/null @@ -1,186 +0,0 @@ -package nc.bs.pub.action; - -import nc.bs.arap.actions.N_BASE_ACTION; -import nc.bs.arap.gatheringbp.GatherBillBO; -import nc.bs.arap.util.GatheringBillAfter; -import nc.bs.dao.BaseDAO; -import nc.bs.framework.common.InvocationInfoProxy; -import nc.bs.framework.common.NCLocator; -import nc.bs.logging.Logger; -import nc.impl.pubapp.env.BSContext; -import nc.pubitf.so.m30.sobalance.ISoBalance4VerifyQryBill; -import nc.vo.arap.gathering.AggGatheringBillVO; -import nc.vo.arap.pub.ArapConstant; -import nc.vo.arap.pub.BillEnumCollection; -import nc.vo.arap.receivable.ReceivableBillItemVO; -import nc.vo.arap.utils.StringUtil; -import nc.vo.fi.pub.SqlUtils; -import nc.vo.fipub.exception.ExceptionHandler; -import nc.vo.ml.NCLangRes4VoTransl; -import nc.vo.pub.AggregatedValueObject; -import nc.vo.pub.BusinessException; -import nc.vo.pub.compiler.PfParameterVO; -import nc.vo.pub.lang.UFBoolean; -import nc.vo.pub.lang.UFDouble; -import nccloud.bs.arap.util.commit.ArapCommitUtil; -import nccloud.impl.platform.common.util.StringUtils; -import nccloud.pubitf.arap.arappub.IArapBillPubUtilService; - -import java.util.*; - - -public class N_F2_SAVE extends N_BASE_ACTION { - private Hashtable m_keyHas = null; - - - public String getCodeRemark() { - return " arap action script not allowed to modify ,all rights reserved!"; - } - - - public Object runComClass(PfParameterVO paraVo) throws BusinessException { - try { - super.m_tmpVo = paraVo; - Object obj = null; - setParameter("context", paraVo.m_preValueVos); - - if (paraVo.isCloudEntry) { - - String actionCode = ArapConstant.SAVE; - ((IArapBillPubUtilService) NCLocator.getInstance().lookup(IArapBillPubUtilService.class)).interceptorVaildator(paraVo.m_preValueVos, actionCode); - } - - - String code = InvocationInfoProxy.getInstance().getProperty(ArapConstant.NCCFlOW_PARAMTER); - if (!StringUtils.isEmpty(code)) { - String[] codes = code.split(","); - for (int i = 0; i < codes.length; i++) { - BSContext.getInstance().setSession(codes[i], UFBoolean.FALSE); - } - } - - this.beforeCheck(); - - AggregatedValueObject bill = (paraVo.m_preValueVo == null) ? paraVo.m_preValueVos[0] : paraVo.m_preValueVo; - if (bill != null && bill.getChildrenVO() != null && bill.getChildrenVO().length > 0 && bill.getChildrenVO()[0] != null) { - String pk_billtype = (String) bill.getChildrenVO()[0].getAttributeValue("pk_billtype"); - String top_billtype = (String) bill.getChildrenVO()[0].getAttributeValue("top_billtype"); - String src_billtype = (String) bill.getChildrenVO()[0].getAttributeValue("src_billtype"); - - if ("F2".equals(pk_billtype) && "30".equals(src_billtype) && "F0".equals(top_billtype)) { - - Map f2mnyMap = new HashMap<>(); - Map f0mnyMap = new HashMap<>(); - - List orderIds = new ArrayList<>(); - List f0pks = new ArrayList<>(); - for (int i = 0; i < bill.getChildrenVO().length; i++) { - String src_billid = (String) bill.getChildrenVO()[i].getAttributeValue("src_billid"); - UFDouble money_bal = (UFDouble) bill.getChildrenVO()[i].getAttributeValue("money_bal"); - if (!StringUtil.isEmpty(src_billid)) { - orderIds.add((String) bill.getChildrenVO()[i].getAttributeValue("src_billid")); - } - if (f2mnyMap.get(src_billid) == null) { - f2mnyMap.put(src_billid, money_bal); - } else { - f2mnyMap.put(src_billid, ((UFDouble) f2mnyMap.get(src_billid)).add(money_bal)); - } - f0pks.add((String) bill.getChildrenVO()[i].getAttributeValue("top_billid")); - } - - String f0sql = SqlUtils.getInStr("pk_recbill", (String[]) f0pks.toArray(new String[0]), true); - - Collection foItemvos = (new BaseDAO()).retrieveByClause(ReceivableBillItemVO.class, f0sql); - for (ReceivableBillItemVO vo : foItemvos) { - String src_billid = (String) vo.getAttributeValue("src_billid"); - UFDouble money_bal = (UFDouble) vo.getAttributeValue("money_bal"); - if (f0mnyMap.get(src_billid) == null) { - f0mnyMap.put(src_billid, money_bal); - continue; - } - f0mnyMap.put(src_billid, ((UFDouble) f0mnyMap.get(src_billid)).add(money_bal)); - } - - - Map> soOrderIdTOF2ItemMnyMap = ((ISoBalance4VerifyQryBill) NCLocator.getInstance().lookup(ISoBalance4VerifyQryBill.class)).querySobalanceAccVerifyMnyMap((String[]) orderIds.toArray(new String[0])); - if (soOrderIdTOF2ItemMnyMap != null && soOrderIdTOF2ItemMnyMap.size() > 0) { - for (String order : orderIds) { - Map mnys = (Map) soOrderIdTOF2ItemMnyMap.get(order); - UFDouble summny = UFDouble.ZERO_DBL; - if (mnys == null || mnys.size() == 0) { - continue; - } - for (String key : mnys.keySet()) { - UFDouble mny = (mnys.get(key) == null) ? UFDouble.ZERO_DBL : (UFDouble) mnys.get(key); - summny = summny.add(mny); - } - if (f2mnyMap.get(order) == null) { - f2mnyMap.put(order, summny); - continue; - } - f2mnyMap.put(order, ((UFDouble) f2mnyMap.get(order)).add(summny)); - } - - - for (String order : orderIds) { - if (f0mnyMap.get(order) != null && f2mnyMap.get(order) != null && ((UFDouble) f2mnyMap.get(order)).abs().compareTo(((UFDouble) f0mnyMap.get(order)).abs()) > 0) { - throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-1678")); - } - } - } - } - } - - - String primaryKey = paraVo.m_preValueVos[0].getParentVO().getPrimaryKey(); - - if (hasBill(primaryKey)) { - obj = runClass("nc.bs.arap.actions.GatheringbillEditSaveBatchBSAction", "updateVOs", "&context:nc.vo.pub.AggregatedValueObject[]", paraVo, this.m_keyHas); - } else { - - paraVo = approveStatusChange(paraVo); - obj = runClass("nc.bs.arap.actions.GatheringbillSaveBatchBSAction", "insertVOs", "&context:nc.vo.pub.AggregatedValueObject[]", paraVo, this.m_keyHas); - } - // 生成收款单后将对应的到账通知cmp_informer的生成状态generateflag修改为已生成hasgenerate - AggGatheringBillVO[] aggVos = (AggGatheringBillVO[]) paraVo.m_preValueVos; - GatheringBillAfter.updateInformerGenerateFlag(aggVos, "hasgenerate"); - - return (new ArapCommitUtil()).autoCommit(obj); - - } catch (Exception exception) { - throw ExceptionHandler.handleException(getClass(), exception); - } - } - - private boolean hasBill(String primaryKey) throws BusinessException { - boolean hasBill = false; - if (primaryKey != null) { - AggGatheringBillVO[] bvos = null; - try { - GatherBillBO payableBO = new GatherBillBO(); - bvos = payableBO.findBillByPrimaryKey(new String[]{primaryKey}); - } catch (Exception e) { - Logger.error(e.getMessage(), e); - } - if (bvos != null && bvos.length != 0 && bvos[0] != null) { - hasBill = true; - } - } - return hasBill; - } - - protected void setParameter(String key, Object val) { - if (this.m_keyHas == null) { - this.m_keyHas = new Hashtable(); - } - if (val != null) - this.m_keyHas.put(key, val); - } - - private PfParameterVO approveStatusChange(PfParameterVO paraVo) { - for (AggregatedValueObject vo : paraVo.m_preValueVos) { - vo.getParentVO().setAttributeValue("approvestatus", BillEnumCollection.ApproveStatus.NOSTATE.VALUE); - } - return paraVo; - } -} \ No newline at end of file diff --git a/arap/src/public/nc/bs/arap/util/GatheringBillAfter.java b/arap/src/public/nc/bs/arap/util/GatheringBillAfter.java deleted file mode 100644 index 01d40f6..0000000 --- a/arap/src/public/nc/bs/arap/util/GatheringBillAfter.java +++ /dev/null @@ -1,58 +0,0 @@ -package nc.bs.arap.util; - -import nc.bs.dao.BaseDAO; -import nc.bs.logging.Logger; -import nc.jdbc.framework.SQLParameter; -import nc.vo.arap.gathering.AggGatheringBillVO; -import nc.vo.arap.gathering.GatheringBillItemVO; -import nccloud.commons.lang.StringUtils; - -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.Set; - -/** - * 更新到账通知的收款生成状态 - * - * @author mzr - * @date 2025/6/13 - */ -public class GatheringBillAfter { - - /** - * 更新收款单对应的到账通知 cmp_informer 的 generateflag 生成状态 - * - * @param aggVos 收款单vo数组 - * @param generateFlag 目标状态(例如 "hasgenerate" 或 "hasnogenerate") - */ - public static void updateInformerGenerateFlag(AggGatheringBillVO[] aggVos, String generateFlag) { - if (aggVos == null || aggVos.length == 0) { - return; // 参数为空时直接返回 - } - try { - Set codeSet = new LinkedHashSet<>(); - for (AggGatheringBillVO aggVo : aggVos) { - GatheringBillItemVO[] bvos = aggVo.getBodyVOs(); - for (GatheringBillItemVO bvo : bvos) { - String bankrelatedCode = bvo.getBankrelated_code(); - if (StringUtils.isNotEmpty(bankrelatedCode) && !"~".equals(bankrelatedCode)) { - codeSet.add(bankrelatedCode); - } - } - } - String[] codes = codeSet.toArray(new String[0]); - Logger.error("updateInformerGenerateFlag-codes = " + Arrays.toString(codes)); - if (codes.length == 0) { - return; - } - BaseDAO baseDAO = new BaseDAO(); - String inStr = SqlUtils.getInStr("bankrelated_code", codes, true); - String sql = "UPDATE cmp_informer SET generateflag = ? WHERE " + inStr; - SQLParameter params = new SQLParameter(); - params.addParam(generateFlag); - baseDAO.executeUpdate(sql, params); - } catch (Exception e) { - Logger.error("updateInformerGenerateFlag-exp:", e); - } - } -}