From 9086a9d93ba887c79736d287f1e390e08f305803 Mon Sep 17 00:00:00 2001 From: lihao Date: Sat, 21 Jun 2025 16:07:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pac0002/bp/rule/putBeforeCheckRule.java | 29 +++++++++++++++++++ .../pac0002/bp/rule/saveBeforeCheckRule.java | 28 ++++++++++++++++-- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/putBeforeCheckRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/putBeforeCheckRule.java index 3b3d54c..e1ce133 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/putBeforeCheckRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/putBeforeCheckRule.java @@ -5,12 +5,16 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Map; + +import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; +import nc.bs.trade.business.HYSuperDMO; import nc.impl.pubapp.pattern.rule.IRule; import nc.itf.uap.IUAPQueryBS; import nc.itf.uif.pub.IUifService; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapProcessor; +import nc.vo.bd.defdoc.DefdocVO; import nc.vo.ic.m4c.entity.SaleOutHeadVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; @@ -58,6 +62,16 @@ public class putBeforeCheckRule implements IRule { || valMap.get("pk_billtypecode").equals("30-Cxx-16")) { return; } + + String code = valMap.get("code").toString(); + LocalDateTime dbilldate = LocalDateTime.parse(valMap.get("dbilldate").toString(), + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + LocalDateTime targetDate1 = LocalDateTime.parse("2025-06-27 00:00:00", + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + List defMap = checkOrgCtrl1(); + if (!valMap.isEmpty()&& defMap.contains(code) && dbilldate.isBefore(targetDate1)) { + return; + } // 历史数据不考虑 String storedDateStr = (String) valMap.get("creationtime"); String targetDateStr = "2024-12-31 00:00:00"; @@ -106,4 +120,19 @@ public class putBeforeCheckRule implements IRule { public IUAPQueryBS getQueryService() { return NCLocator.getInstance().lookup(IUAPQueryBS.class); } + private List checkOrgCtrl1() { + List list = new ArrayList<>(); + String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='org-ctrl' and dr=0 ) and dr=0"; + try { + DefdocVO[] defdocVOs = (DefdocVO[]) new HYSuperDMO().queryByWhereClause(DefdocVO.class, strWhere); + if (defdocVOs != null && defdocVOs.length > 0) { + for (DefdocVO defdocVO : defdocVOs) { + list.add(defdocVO.getCode()); + } + } + } catch (DAOException e) { + e.printStackTrace(); + } + return list; + } } diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/saveBeforeCheckRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/saveBeforeCheckRule.java index 376130a..b3de5f8 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/saveBeforeCheckRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/saveBeforeCheckRule.java @@ -51,6 +51,15 @@ public class saveBeforeCheckRule implements IRule { if (valMap == null || valMap.isEmpty()) { throw new BusinessException("无法关联到销售订单,无法保存!"); } + String code = valMap.get("code").toString(); + LocalDateTime dbilldate = LocalDateTime.parse(valMap.get("dbilldate").toString(), + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + LocalDateTime targetDate1 = LocalDateTime.parse("2025-06-27 00:00:00", + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + List defMap = checkOrgCtrl1(); + if (!valMap.isEmpty()&& defMap.contains(code) && dbilldate.isBefore(targetDate1)) { + return; + } // 销售发票表头pk_billtypecode=30-Cxx-12 if (valMap.get("pk_billtypecode").equals("30-Cxx-12") || valMap.get("pk_billtypecode").equals("30-Cxx-02") @@ -94,8 +103,9 @@ public class saveBeforeCheckRule implements IRule { private Map getVbdef6(String vsrcbidStr,String cmoid) throws BusinessException { IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class); - String sql = " SELECT bt.pk_billtypecode,s.creationtime,b.vbdef12,d.nastnum FROM so_saleorder_b b\n" + String sql = " SELECT org_salesorg.CODE ,s.dbilldate, bt.pk_billtypecode,s.creationtime,b.vbdef12,d.nastnum FROM so_saleorder_b b\n" + "INNER JOIN so_saleorder s ON s.csaleorderid = b.csaleorderid\n" + + " LEFT JOIN org_salesorg ON org_salesorg.PK_SALESORG = s.PK_ORG " + "left join (select mm_mo.Vsrcbid,sum(nastnum) as nastnum \n" + "from mm_mo\n" + "where mm_mo.dr=0\n"+" and cmoid !='"+cmoid+ "' " + "group by mm_mo.Vsrcbid) d on b.csaleorderbid=d.Vsrcbid\n" + "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n" + "where b.csaleorderbid='" @@ -138,5 +148,19 @@ public class saveBeforeCheckRule implements IRule { public IUAPQueryBS getQueryService() { return NCLocator.getInstance().lookup(IUAPQueryBS.class); } - + private List checkOrgCtrl1() { + List list = new ArrayList<>(); + String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='org-ctrl' and dr=0 ) and dr=0"; + try { + DefdocVO[] defdocVOs = (DefdocVO[]) new HYSuperDMO().queryByWhereClause(DefdocVO.class, strWhere); + if (defdocVOs != null && defdocVOs.length > 0) { + for (DefdocVO defdocVO : defdocVOs) { + list.add(defdocVO.getCode()); + } + } + } catch (DAOException e) { + e.printStackTrace(); + } + return list; + } }