互感器采购订单_生产订单_备料计划过滤103物料分类

This commit is contained in:
李正@用友 2025-07-02 15:54:33 +08:00
parent e8f76b652f
commit 155c549ad0
3 changed files with 170 additions and 19 deletions

View File

@ -4,29 +4,30 @@ package nc.bs.mmpac.pickm.bp.rule;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import nc.bs.dao.BaseDAO; import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Log; import nc.bs.logging.Log;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.impl.pubapp.pattern.rule.IRule; import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.bd.material.baseinfo.IMaterialBaseInfoQueryService;
import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.ColumnProcessor;
import nc.pubitf.para.SysInitQuery; import nc.pubitf.para.SysInitQuery;
import nc.vo.bd.defdoc.DefdocVO;
import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.MaterialVO;
import nc.vo.bd.rt.rt0004.entity.RcVO;
import nc.vo.bd.stordoc.StordocVO;
import nc.vo.cmp.util.StringUtils; import nc.vo.cmp.util.StringUtils;
import nc.vo.mmpac.pickm.entity.AggPickmVO; import nc.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpac.pickm.entity.PickmHeadVO; import nc.vo.mmpac.pickm.entity.PickmHeadVO;
import nc.vo.mmpac.pickm.entity.PickmItemVO; import nc.vo.mmpac.pickm.entity.PickmItemVO;
import nc.vo.org.OrgVO; import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException; import nc.vo.pub.BusinessException;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pub.ISuperVO;
import nc.vo.pub.lang.UFBoolean; import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDouble; import nc.vo.pub.lang.UFDouble;
import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.pubapp.pattern.pub.SqlBuilder;
import nc.vo.scmpub.util.ArrayUtil; import nc.vo.scmpub.util.ArrayUtil;
import nc.vo.util.CloneUtil;
import java.util.ArrayList; import java.util.*;
import java.util.List;
public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> { public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> {
@ -40,8 +41,9 @@ public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> {
return; return;
} }
try { try {
AggPickmVO[] cloneOrderVOS = (AggPickmVO[]) CloneUtil.deepClone(vos);
// ¼ì²é²¢É¸Ñ¡ÁìÁÏ×éÖ¯ // ¼ì²é²¢É¸Ñ¡ÁìÁÏ×éÖ¯
List<AggPickmVO> newAggPickmVOS = checkAndFilterBillSrcOrg(vos); List<AggPickmVO> newAggPickmVOS = checkAndFilterBillSrcOrg(cloneOrderVOS);
if (newAggPickmVOS.isEmpty()) { if (newAggPickmVOS.isEmpty()) {
return; return;
} }
@ -188,6 +190,8 @@ public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> {
private List<AggPickmVO> checkAndFilterBillSrcOrg(AggPickmVO[] aggPickmVOS) throws BusinessException { private List<AggPickmVO> checkAndFilterBillSrcOrg(AggPickmVO[] aggPickmVOS) throws BusinessException {
List<AggPickmVO> aggvoList = new ArrayList<>(); List<AggPickmVO> aggvoList = new ArrayList<>();
List<AggPickmVO> finalList = new ArrayList<>();
for (AggPickmVO aggvo : aggPickmVOS) { for (AggPickmVO aggvo : aggPickmVOS) {
String pkOrg = aggvo.getParentVO().getPk_org(); String pkOrg = aggvo.getParentVO().getPk_org();
String orgCode = transferCodeByPk(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); String orgCode = transferCodeByPk(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
@ -197,13 +201,62 @@ public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> {
if(vdef20==null||"N".equals(vdef20)){ if(vdef20==null||"N".equals(vdef20)){
if ("C022".equals(orgCode)&& 1 == aggvo.getParentVO().getFbillstatus()&&aggvo.getChildrenVO()!=null && aggvo.getChildrenVO().length > 0) { if ("C022".equals(orgCode)&& 1 == aggvo.getParentVO().getFbillstatus()&&aggvo.getChildrenVO()!=null && aggvo.getChildrenVO().length > 0) {
if("61".equals(vfirstbilltype)||"55A2".equals(vfirstbilltype)){ if("61".equals(vfirstbilltype)||"55A2".equals(vfirstbilltype)){
//2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传
//获取表体物料信息
aggvoList.add(aggvo); aggvoList.add(aggvo);
} }
} }
} }
} }
return aggvoList; //再次筛选
//2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传
//获取表体物料信息
if(aggvoList.isEmpty()){
return aggvoList;
}
Set<String> materialpks=new HashSet<>();
for (AggPickmVO aggvo : aggvoList) {
PickmItemVO[] items = (PickmItemVO[]) aggvo.getChildren(PickmItemVO.class);
for (PickmItemVO item : items) {
String cbmaterialvid = item.getCbmaterialvid();
materialpks.add(cbmaterialvid);
}
}
if(materialpks.isEmpty()){
return aggvoList;
}
//根据物料id查询物料信息
MaterialVO[] vos = NCLocator.getInstance().lookup(IMaterialBaseInfoQueryService.class).queryDataByPks(materialpks.toArray(new String[0]));
//组装Map
Map<String, String> materialMap = new HashMap<>();
if(vos==null || vos.length<1){
throw new BusinessException("Failed to query material info , please check !!!");
}
for (MaterialVO vo : vos) {
String cmaterialvid = vo.getPk_material();
String cmaterialcode =vo.getCode();
materialMap.put(cmaterialvid, cmaterialcode);
}
//筛选行数据
for (AggPickmVO aggvo : aggvoList) {
List<PickmItemVO> newItems = new ArrayList<>();
PickmItemVO[] items = (PickmItemVO[]) aggvo.getChildren(PickmItemVO.class);
for (PickmItemVO item : items) {
String cmaterialvid = item.getCbmaterialvid();
if (materialMap.containsKey(cmaterialvid)) {
String materialCode = materialMap.get(cmaterialvid);
if(!materialCode.startsWith("103")){
newItems.add(item);
}
}
}
if (!newItems.isEmpty()) {
aggvo.setChildren(PickmItemVO.class,newItems.toArray(new PickmItemVO[0]));
finalList.add(aggvo);
}
}
return finalList;
} }
private void pushToRZMOMBy55A2(AggPickmVO[] aggPickmVOS) throws BusinessException { private void pushToRZMOMBy55A2(AggPickmVO[] aggPickmVOS) throws BusinessException {

View File

@ -3,14 +3,17 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import nc.bs.dao.BaseDAO; import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Log; import nc.bs.logging.Log;
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService; import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.impl.pubapp.pattern.rule.IRule; import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.bd.material.baseinfo.IMaterialBaseInfoQueryService;
import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.ColumnProcessor;
import nc.pubitf.para.SysInitQuery; import nc.pubitf.para.SysInitQuery;
import nc.util.mmf.framework.base.MMValueCheck; import nc.util.mmf.framework.base.MMValueCheck;
import nc.vo.bd.defdoc.DefdocVO; import nc.vo.bd.defdoc.DefdocVO;
import nc.vo.bd.material.MaterialVO;
import nc.vo.cmp.util.StringUtils; import nc.vo.cmp.util.StringUtils;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO;
@ -21,11 +24,9 @@ import nc.vo.pub.lang.UFBoolean;
import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.pubapp.pattern.pub.SqlBuilder;
import nc.vo.scmpub.util.ArrayUtil; import nc.vo.scmpub.util.ArrayUtil;
import nc.vo.util.CloneUtil;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 流程生产订单审批后推送RZ * 流程生产订单审批后推送RZ
@ -46,8 +47,9 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<PMOAggVO> {
return; return;
} }
try { try {
PMOAggVO[] cloneOrderVOS = (PMOAggVO[]) CloneUtil.deepClone(pmoAggVOS);
// 检查并筛选生产订单 // 检查并筛选生产订单
List<PMOAggVO> filteredOrders = checkAndFilterBillSrcOrg(pmoAggVOS); List<PMOAggVO> filteredOrders = checkAndFilterBillSrcOrg(cloneOrderVOS);
if (filteredOrders.isEmpty()) { if (filteredOrders.isEmpty()) {
return; return;
} }
@ -66,6 +68,7 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<PMOAggVO> {
private List<PMOAggVO> checkAndFilterBillSrcOrg(PMOAggVO[] pmoAggVOS) throws BusinessException { private List<PMOAggVO> checkAndFilterBillSrcOrg(PMOAggVO[] pmoAggVOS) throws BusinessException {
List<PMOAggVO> aggvoList = new ArrayList<>(); List<PMOAggVO> aggvoList = new ArrayList<>();
List<String> tranidList = new ArrayList<String>(); List<String> tranidList = new ArrayList<String>();
List<PMOAggVO> finalList = new ArrayList<>();
for (PMOAggVO aggvo : pmoAggVOS) { for (PMOAggVO aggvo : pmoAggVOS) {
PMOHeadVO headvo = aggvo.getParentVO(); PMOHeadVO headvo = aggvo.getParentVO();
String tranid = headvo.getCtrantypeid(); String tranid = headvo.getCtrantypeid();
@ -77,7 +80,6 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<PMOAggVO> {
if (tranidList.size() > 0) { if (tranidList.size() > 0) {
bSaveApproveMap = PMOBPService.getIPMOTransTypeQueryService() bSaveApproveMap = PMOBPService.getIPMOTransTypeQueryService()
.getBSaveApproveByTranTypeIDs(tranidList.toArray(new String[0])); .getBSaveApproveByTranTypeIDs(tranidList.toArray(new String[0]));
} }
for (PMOAggVO aggvo : pmoAggVOS) { for (PMOAggVO aggvo : pmoAggVOS) {
String pkOrg = aggvo.getParentVO().getPk_org(); String pkOrg = aggvo.getParentVO().getPk_org();
@ -97,7 +99,53 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<PMOAggVO> {
} }
} }
} }
return aggvoList; //再次筛选
//2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传
//获取表体物料信息
if(aggvoList.isEmpty()){
return aggvoList;
}
Set<String> materialpks=new HashSet<>();
for (PMOAggVO aggvo : aggvoList) {
for (PMOItemVO item : aggvo.getChildrenVO()) {
String cbmaterialvid = item.getCmaterialvid();
materialpks.add(cbmaterialvid);
}
}
if(materialpks.isEmpty()){
return aggvoList;
}
//根据物料id查询物料信息
MaterialVO[] vos = NCLocator.getInstance().lookup(IMaterialBaseInfoQueryService.class).queryDataByPks(materialpks.toArray(new String[0]));
//组装Map
Map<String, String> materialMap = new HashMap<>();
if(vos==null || vos.length<1){
throw new BusinessException("Failed to query material info , please check !!!");
}
for (MaterialVO vo : vos) {
String cmaterialvid = vo.getPk_material();
String cmaterialcode =vo.getCode();
materialMap.put(cmaterialvid, cmaterialcode);
}
//筛选行数据
for (PMOAggVO aggvo : aggvoList) {
List<PMOItemVO> newItems = new ArrayList<>();
PMOItemVO[] items = (PMOItemVO[]) aggvo.getChildren(PMOItemVO.class);
for (PMOItemVO item : items) {
String cmaterialvid = item.getCmaterialvid();
if (materialMap.containsKey(cmaterialvid)) {
String materialCode = materialMap.get(cmaterialvid);
if(!materialCode.startsWith("103")){
newItems.add(item);
}
}
}
if (!newItems.isEmpty()) {
aggvo.setChildren(PMOItemVO.class,newItems.toArray(new PMOItemVO[0]));
finalList.add(aggvo);
}
}
return finalList;
} }
/** /**

View File

@ -3,9 +3,11 @@ package nc.bs.pu.m21.action.rule.approve;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import nc.bs.dao.BaseDAO; import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Log; import nc.bs.logging.Log;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.impl.pubapp.pattern.rule.IRule; import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.bd.material.baseinfo.IMaterialBaseInfoQueryService;
import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.ColumnProcessor;
import nc.pubitf.para.SysInitQuery; import nc.pubitf.para.SysInitQuery;
import nc.vo.bd.defdoc.DefdocVO; import nc.vo.bd.defdoc.DefdocVO;
@ -24,9 +26,9 @@ import nc.vo.pub.lang.UFDouble;
import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.pubapp.pattern.pub.SqlBuilder;
import nc.vo.scmpub.util.ArrayUtil; import nc.vo.scmpub.util.ArrayUtil;
import nc.vo.util.CloneUtil;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import static nccloud.openapi.ic.m4c.mapping.M4cFieldsEnum.cmaterialvid; import static nccloud.openapi.ic.m4c.mapping.M4cFieldsEnum.cmaterialvid;
@ -47,9 +49,10 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<OrderVO> {
return; return;
} }
try { try {
OrderVO[] cloneOrderVOS = (OrderVO[]) CloneUtil.deepClone(orderVOS);
//检查并筛选销售出库单据为互感器公司 //检查并筛选销售出库单据为互感器公司
List<OrderVO> newOrderVOS = checkAndFilterBillSrcOrg(orderVOS); List<OrderVO> newOrderVOS = checkAndFilterBillSrcOrg(cloneOrderVOS);
if (newOrderVOS.isEmpty()) { if (newOrderVOS==null||newOrderVOS.size()<1) {
return; return;
} }
//推送到锐制系统 //推送到锐制系统
@ -62,6 +65,8 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<OrderVO> {
private List<OrderVO> checkAndFilterBillSrcOrg(OrderVO[] OrderVOS) throws BusinessException { private List<OrderVO> checkAndFilterBillSrcOrg(OrderVO[] OrderVOS) throws BusinessException {
List<OrderVO> aggvoList = new ArrayList<>(); List<OrderVO> aggvoList = new ArrayList<>();
List<OrderVO> finalList = new ArrayList<>();
for (OrderVO aggvo : OrderVOS) { for (OrderVO aggvo : OrderVOS) {
String pkOrg = aggvo.getHVO().getPk_org(); String pkOrg = aggvo.getHVO().getPk_org();
Integer forderstatus = aggvo.getHVO().getForderstatus(); Integer forderstatus = aggvo.getHVO().getForderstatus();
@ -73,7 +78,52 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<OrderVO> {
} }
} }
} }
return aggvoList; //再次筛选
//2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传
//获取表体物料信息
if(aggvoList.isEmpty()){
return aggvoList;
}
Set<String> materialpks=new HashSet<>();
for (OrderVO aggvo : aggvoList) {
for (OrderItemVO item : aggvo.getBVO()) {
String cmaterialvid = item.getPk_material();
materialpks.add(cmaterialvid);
}
}
if(materialpks.isEmpty()){
return aggvoList;
}
//根据物料id查询物料信息
MaterialVO[] vos = NCLocator.getInstance().lookup(IMaterialBaseInfoQueryService.class).queryDataByPks(materialpks.toArray(new String[0]));
//组装Map
Map<String, String> materialMap = new HashMap<>();
if(vos==null || vos.length<1){
throw new BusinessException("Failed to query material info , please check !!!");
}
for (MaterialVO vo : vos) {
String cmaterialvid = vo.getPk_material();
String cmaterialcode =vo.getCode();
materialMap.put(cmaterialvid, cmaterialcode);
}
//筛选行数据
for (OrderVO aggvo : aggvoList) {
List<OrderItemVO> newItems = new ArrayList<>();
for (OrderItemVO item : aggvo.getBVO()) {
String cmaterialvid = item.getPk_material();
if (materialMap.containsKey(cmaterialvid)) {
String materialCode = materialMap.get(cmaterialvid);
if(!materialCode.startsWith("103")){
newItems.add(item);
}
}
}
if (!newItems.isEmpty()) {
aggvo.setBVO(newItems.toArray(new OrderItemVO[0]));
finalList.add(aggvo);
}
}
return finalList;
} }
/** /**