From 803f6ba915ee652eb1d86f5aa46ad0bddb44f554 Mon Sep 17 00:00:00 2001 From: "zhangxinah@yonyou.com" Date: Wed, 14 May 2025 18:24:18 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=A7=A3=E5=86=B3MPR=E8=BF=90=E7=AE=97?= =?UTF-8?q?=E5=9B=9E=E5=86=99=E5=A4=87=E6=96=99=E8=AE=A1=E5=88=92=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E9=97=AE=E9=A2=98-=E5=BC=A0=E9=91=AB0514?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nc/rule/mmpps/plo/PloProdDeptRule.java | 240 +++++++++--------- 1 file changed, 117 insertions(+), 123 deletions(-) diff --git a/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java b/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java index 938c68b..d73cf44 100644 --- a/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java +++ b/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java @@ -32,129 +32,123 @@ import nc.vo.mmpac.pickm.entity.PickmItemVO; public class PloProdDeptRule implements IRule { - @Override - public void process(AggregatedPoVO[] vos) { - if (null == vos) { - return; - } - Map> map = new HashMap>(); - ArrayList vsrcbidList = new ArrayList<>(); - for (AggregatedPoVO agg : vos) { - PoVO plo = agg.getParentVO(); - String vid = plo.getCmaterialvid(); - String stockorgid = plo.getCstockorgid(); - String stockorgvid = plo.getCstockorgvid(); - String prodDeptid = plo.getCproddeptid(); - String prodDeptvid = plo.getCproddeptvid(); - Integer posource = plo.getFposource(); - if (PoSourceEnum.COMPUT == posource && MMValueCheck.isEmpty(prodDeptid) - && MMValueCheck.isEmpty(prodDeptvid) && MMValueCheck.isNotEmpty(stockorgid) - && MMValueCheck.isNotEmpty(stockorgvid)) { - List vids = map.get(stockorgid); - if (null == vids) { - List list = new ArrayList(); - list.add(vid); - map.put(stockorgid, list); - } - else { - vids.add(vid); - } - } - String vsrcbid = plo.getVsrcbid();//来源单据表体主键 - int fdemandbill = plo.getFdemandbill();//需求来源 - if (PoSourceEnum.COMPUT == posource && fdemandbill == 1) { - vsrcbidList.add(vsrcbid); - } - } - if (vsrcbidList != null && vsrcbidList.size() > 0) { - String[] vsrcbids = vsrcbidList.toArray(new String[vsrcbidList.size()]); - Map pickmVOMap; - try { - pickmVOMap = NCLocator.getInstance().lookup(IPickmPubQueryService.class) - .queryPickm4Issue(vsrcbids); - } catch (BusinessException e) { - throw new RuntimeException(e); - } - pickmVOMap.getClass(); - for (AggregatedPoVO agg : vos) { - PoVO plo = agg.getParentVO(); - String vsrcbid = plo.getVsrcbid();//来源单据表体主键 - AggPickmVO aggPickmVOData = pickmVOMap.get(vsrcbid); - if (aggPickmVOData != null) { - PickmItemVO[] children = (PickmItemVO[]) aggPickmVOData.getChildren(PickmItemVO.class); - String vbdef5 = "";//合同编号 - String vbdef6 = "";//合同销售订单号 - String vbdef7 = "";//标前项目号 - for (PickmItemVO pickmItemVO : children) { - if (pickmItemVO.getCpickm_bid().equals(vsrcbid)) { - vbdef5 = pickmItemVO.getVbdef5();//合同编号 - vbdef6 = pickmItemVO.getVbdef6();//合同销售订单号 - vbdef7 = pickmItemVO.getVbdef7();//标前项目号 - } - } - plo.setVdef2(vbdef5);//合同编号 - plo.setVdef3(vbdef6);//合同销售订单号 - plo.setVdef4(vbdef7);//标前项目号 - } - } - } - Set stockorgids = map.keySet(); - Iterator i = stockorgids.iterator(); - while (i.hasNext()) { - String key = i.next(); - List vids = map.get(key); - Map results = - MaterialPubService.queryMaterialProduceInfoByPks(vids.toArray(new String[0]), key, new String[] { - MaterialProdVO.PK_PRODEPTDOC - }); - for (AggregatedPoVO agg : vos) { - PoVO plo = agg.getParentVO(); - String vid = plo.getCmaterialvid(); - String stockorgid = plo.getCstockorgid(); - String stockorgvid = plo.getCstockorgvid(); - Integer posource = plo.getFposource(); - if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(stockorgid) - && MMValueCheck.isNotEmpty(stockorgvid)) { - if (null != results) { - MaterialProdVO prodvo = results.get(vid); - if (null != prodvo) { - plo.setCproddeptid(prodvo.getPk_prodeptdoc());// 生产部门ID - } - } - } - } - } - // 根据生产部门ID查询设置VID - List proddeptids = new ArrayList(); - for (AggregatedPoVO agg : vos) { - PoVO plo = agg.getParentVO(); - String prodDeptid = plo.getCproddeptid(); - Integer posource = plo.getFposource(); - if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) { - proddeptids.add(prodDeptid); - } - } - IDeptPubService deptPubService = this.getDeptPubService(); - try { - HashMap results = deptPubService.getLastVIDSByDeptIDS(proddeptids.toArray(new String[0])); - if (null != results) { - for (AggregatedPoVO agg : vos) { - PoVO plo = agg.getParentVO(); - String prodDeptid = plo.getCproddeptid(); - Integer posource = plo.getFposource(); - if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) { - plo.setCproddeptvid(results.get(prodDeptid)); - } - } - } - } - catch (BusinessException e) { - ExceptionUtils.wrappException(e); - } + @Override + public void process(AggregatedPoVO[] vos) { + if (null == vos) { + return; + } + Map> map = new HashMap>(); + ArrayList vsrcbidList = new ArrayList<>(); + for (AggregatedPoVO agg : vos) { + PoVO plo = agg.getParentVO(); + String vid = plo.getCmaterialvid(); + String stockorgid = plo.getCstockorgid(); + String stockorgvid = plo.getCstockorgvid(); + String prodDeptid = plo.getCproddeptid(); + String prodDeptvid = plo.getCproddeptvid(); + Integer posource = plo.getFposource(); + if (PoSourceEnum.COMPUT == posource && MMValueCheck.isEmpty(prodDeptid) && MMValueCheck.isEmpty(prodDeptvid) + && MMValueCheck.isNotEmpty(stockorgid) && MMValueCheck.isNotEmpty(stockorgvid)) { + List vids = map.get(stockorgid); + if (null == vids) { + List list = new ArrayList(); + list.add(vid); + map.put(stockorgid, list); + } else { + vids.add(vid); + } + } + String vsrcbid = plo.getVsrcbid();// 来源单据表体主键 + // 需求来源为备料计划的才回写 + if (PoSourceEnum.COMPUT == posource && plo.getFdemandbill() != null && plo.getFdemandbill() == 1) { + vsrcbidList.add(vsrcbid); + } + } + if (vsrcbidList != null && vsrcbidList.size() > 0) { + String[] vsrcbids = vsrcbidList.toArray(new String[vsrcbidList.size()]); + Map pickmVOMap; + try { + pickmVOMap = NCLocator.getInstance().lookup(IPickmPubQueryService.class).queryPickm4Issue(vsrcbids); + } catch (BusinessException e) { + throw new RuntimeException(e); + } + pickmVOMap.getClass(); + for (AggregatedPoVO agg : vos) { + PoVO plo = agg.getParentVO(); + String vsrcbid = plo.getVsrcbid();// 来源单据表体主键 + AggPickmVO aggPickmVOData = pickmVOMap.get(vsrcbid); + if (aggPickmVOData != null) { + PickmItemVO[] children = (PickmItemVO[]) aggPickmVOData.getChildren(PickmItemVO.class); + String vbdef5 = "";// 合同编号 + String vbdef6 = "";// 合同销售订单号 + String vbdef7 = "";// 标前项目号 + for (PickmItemVO pickmItemVO : children) { + if (pickmItemVO.getCpickm_bid().equals(vsrcbid)) { + vbdef5 = pickmItemVO.getVbdef5();// 合同编号 + vbdef6 = pickmItemVO.getVbdef6();// 合同销售订单号 + vbdef7 = pickmItemVO.getVbdef7();// 标前项目号 + } + } + plo.setVdef2(vbdef5);// 合同编号 + plo.setVdef3(vbdef6);// 合同销售订单号 + plo.setVdef4(vbdef7);// 标前项目号 + } + } + } + Set stockorgids = map.keySet(); + Iterator i = stockorgids.iterator(); + while (i.hasNext()) { + String key = i.next(); + List vids = map.get(key); + Map results = MaterialPubService.queryMaterialProduceInfoByPks( + vids.toArray(new String[0]), key, new String[] { MaterialProdVO.PK_PRODEPTDOC }); + for (AggregatedPoVO agg : vos) { + PoVO plo = agg.getParentVO(); + String vid = plo.getCmaterialvid(); + String stockorgid = plo.getCstockorgid(); + String stockorgvid = plo.getCstockorgvid(); + Integer posource = plo.getFposource(); + if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(stockorgid) + && MMValueCheck.isNotEmpty(stockorgvid)) { + if (null != results) { + MaterialProdVO prodvo = results.get(vid); + if (null != prodvo) { + plo.setCproddeptid(prodvo.getPk_prodeptdoc());// 生产部门ID + } + } + } + } + } + // 根据生产部门ID查询设置VID + List proddeptids = new ArrayList(); + for (AggregatedPoVO agg : vos) { + PoVO plo = agg.getParentVO(); + String prodDeptid = plo.getCproddeptid(); + Integer posource = plo.getFposource(); + if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) { + proddeptids.add(prodDeptid); + } + } + IDeptPubService deptPubService = this.getDeptPubService(); + try { + HashMap results = deptPubService.getLastVIDSByDeptIDS(proddeptids.toArray(new String[0])); + if (null != results) { + for (AggregatedPoVO agg : vos) { + PoVO plo = agg.getParentVO(); + String prodDeptid = plo.getCproddeptid(); + Integer posource = plo.getFposource(); + if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) { + plo.setCproddeptvid(results.get(prodDeptid)); + } + } + } + } catch (BusinessException e) { + ExceptionUtils.wrappException(e); + } - } + } - private IDeptPubService getDeptPubService() { - return NCLocator.getInstance().lookup(IDeptPubService.class); - } + private IDeptPubService getDeptPubService() { + return NCLocator.getInstance().lookup(IDeptPubService.class); + } } From 48f6b832feab3b0fe98acc3d84b27c14eb61621c Mon Sep 17 00:00:00 2001 From: "zhangxinah@yonyou.com" Date: Wed, 14 May 2025 18:24:40 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=8F=91=E7=A5=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=8A=B6=E6=80=81=E6=8A=A5=E9=94=99=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ivsale/util/InvoiceTypeToTspzUtil.java | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 sscivm/src/public/nc/bs/sscivm/ivsale/util/InvoiceTypeToTspzUtil.java diff --git a/sscivm/src/public/nc/bs/sscivm/ivsale/util/InvoiceTypeToTspzUtil.java b/sscivm/src/public/nc/bs/sscivm/ivsale/util/InvoiceTypeToTspzUtil.java new file mode 100644 index 0000000..7c8f5f3 --- /dev/null +++ b/sscivm/src/public/nc/bs/sscivm/ivsale/util/InvoiceTypeToTspzUtil.java @@ -0,0 +1,89 @@ +package nc.bs.sscivm.ivsale.util; + +import nc.vo.sscivm.ivmpub.InvoiceTypeEnum; + +import java.util.HashMap; +import java.util.Map; + +/** + * 发票类型和特殊票种映射工具类 + * @author wangyl7 + * + */ +public class InvoiceTypeToTspzUtil { + private final static Map invoiceMap = new HashMap(); + private final static Map tspzMap = new HashMap(); + static { + invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_JDC.toIntValue(), "4"); + invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_KCL.toIntValue(), "1"); + invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_DZZYFP_KCL.toIntValue(), "2"); + invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_KCL.toIntValue(), "3"); + invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_KCL.toIntValue(), "4"); + invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_ESCTYFP.toIntValue(), "15");//二手车统一销售与机打重复 + invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_NCP.toIntValue(), "1"); + invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_NCP.toIntValue(), "3"); + + tspzMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_JDC.toIntValue(), "12"); + tspzMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_KCL.toIntValue(), "16"); + tspzMap.put(InvoiceTypeEnum.INVOICETYPE_DZZYFP_KCL.toIntValue(), "16"); + tspzMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_KCL.toIntValue(), "16"); + tspzMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_KCL.toIntValue(), "16"); + tspzMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_NCP.toIntValue(), "9"); + tspzMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_NCP.toIntValue(), "9"); + } + + /** + * 获取真实的发票类型 + * @param fplx 发票类型 + * @return 真实的发票类型 + */ + public static String getRealInvoicetype(Integer fplx){ + if (invoiceMap.containsKey(fplx)){ + return invoiceMap.get(fplx); + } + return String.valueOf(fplx); + } + + /** + * 获取特殊票种 + * @param fplx 发票类型 + * @return 特殊票种 + */ + public static String getTspz(Integer fplx){ + if (tspzMap.containsKey(fplx)){ + return tspzMap.get(fplx); + } + return null; + } + + /** + * 更具发票类型和特殊票种转发票类型 + * @param fplx + * @param tspz + * @return + */ + public static String getInvoicetypeByFplxAndTspz(String fplx, String tspz){ + //非特殊票种 + if (tspz == null || tspz.startsWith("E")){ + return fplx; + } + //全电发票不拼接 + if ("31".equals(fplx) || "32".equals(fplx) ||"33".equals(fplx) || "34".equals(fplx)){ + return fplx; + } + //增值税专用发票(机动车) + if ("412".equals(fplx + tspz)){ + return InvoiceTypeEnum.INVOICETYPE_ZYFP_JDC.toStringValue(); + } + //农产品收购 + if ("9".equals(tspz)) { + return fplx + "0" + tspz; + } + //数电纸质发票(机动车销售统一发票 + if ("36".equals(fplx)){ + return fplx; + } + //其他特殊票种发票 + return fplx + tspz; + } +} From 174210024262cbc36241f5e38b53e90b72d8098a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Wed, 14 May 2025 21:19:48 +0800 Subject: [PATCH 3/3] =?UTF-8?q?gaoningbom=E6=96=B0=E5=A2=9E=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=B7=BB=E5=8A=A0=E6=88=90=E5=A5=97=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E9=80=BB=E8=BE=91=5F=E4=B8=89=E6=96=B9=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E7=94=A8=E6=88=B7=E4=BC=9A=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/mmbd/bom/APIBomBusinessServiceImpl.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java b/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java index 5812af9..b781f31 100644 --- a/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java +++ b/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java @@ -88,6 +88,8 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { private static Map tsMap = new HashMap(); + private String orgCodeFlag =null; + private static Map voMap = new HashMap(); private static Map> idsMap = new HashMap(); @@ -112,7 +114,11 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { list.add(agg); } AggBomVO[] aggVOs = (AggBomVO[]) list.toArray(new AggBomVO[list.size()]); - + if(aggVOs[0].getParentVO().getAttributeValue("pk_org")==null||aggVOs[0].getParentVO().getAttributeValue("pk_org")==""){ + ExceptionUtils.wrappBusinessException("请求参数pk_org为空,请检查!!!!"); + }else{ + this.orgCodeFlag=aggVOs[0].getParentVO().getAttributeValue("pk_org").toString(); + } BillFieldsCodeToPkUtil.doTranslateVOFields(aggVOs); IUifService iUifService = NCLocator.getInstance().lookup(IUifService.class); for (AggBomVO aggtwo : aggVOs) { @@ -170,7 +176,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { result = service.insertBom((AggBomVO[]) addAggvoList.toArray(new AggBomVO[0])); } else if (!commitAggvoList.isEmpty() && addAggvoList.isEmpty()) { List newAggVOList = new ArrayList<>(); - if ("gaoning".equals(userCode)) { + if ("gaoning".equals(userCode)|| "C029".equals(orgCodeFlag)) { for (AggBomVO aggvo : commitAggvoList) { result = service.insertCommitBomWithParam(new AggBomVO[] { aggvo }, true, true); newAggVOList.add(result[0]); @@ -720,7 +726,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { if (VersionTypeEnum.AVAILABLE.equalsValue(head.getHfversiontype()) && !head.getCbomid().equals(headvo.getCbomid())) { // sdlizheng --添加独立判断--plm三方越过此校验 - if ("gaoning".equals(userCode) || "dlkgsrm".equals(userCode)) { + if ("gaoning".equals(userCode) || "dlkgsrm".equals(userCode)|| "C029".equals(this.orgCodeFlag)) { // AggBomVO afterVO = service.canceldefault(aggBomVO); } else { return UFBoolean.TRUE; @@ -774,14 +780,14 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { agg.getParent().setAttributeValue("fbillstatus", Integer.valueOf(-1)); agg.getParent().setAttributeValue("hfbomsource", Integer.valueOf(1)); agg.getParent().setAttributeValue("hfbomcategory", Integer.valueOf(1)); - if ("gaoning".equals(userCode) || "dlkgsrm".equals(userCode)) { + if ("gaoning".equals(userCode) || "dlkgsrm".equals(userCode)|| "C029".equals(this.orgCodeFlag)) { // sdlizheng // 1、对于之前不存在的BOM,新增时:如果是传自由态,不默认且无效,走标准逻辑,如果传的是审批态默认且有效。2025年4月11日16点28分 start if (fbillstatus != null && "1".equals(fbillstatus.toString())) { agg.getParent().setAttributeValue("hfversiontype", Integer.valueOf(1)); agg.getParent().setAttributeValue("hbdefault", UFBoolean.TRUE); }else if(fbillstatus != null && "-1".equals(fbillstatus.toString())){ - if("gaoning".equals(userCode)){ + if("gaoning".equals(userCode)|| "C029".equals(this.orgCodeFlag)){ agg.getParent().setAttributeValue("hfversiontype", Integer.valueOf(1)); agg.getParent().setAttributeValue("hbdefault", UFBoolean.TRUE); }