互感器采购订单_生产订单_备料计划过滤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.JSONObject;
import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Log;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.bd.material.baseinfo.IMaterialBaseInfoQueryService;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.pubitf.para.SysInitQuery;
import nc.vo.bd.defdoc.DefdocVO;
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.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
import nc.vo.mmpac.pickm.entity.PickmItemVO;
import nc.vo.org.OrgVO;
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.UFDouble;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.pubapp.pattern.pub.SqlBuilder;
import nc.vo.scmpub.util.ArrayUtil;
import nc.vo.util.CloneUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> {
@ -40,8 +41,9 @@ public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> {
return;
}
try {
AggPickmVO[] cloneOrderVOS = (AggPickmVO[]) CloneUtil.deepClone(vos);
// ¼ì²é²¢É¸Ñ¡ÁìÁÏ×éÖ¯
List<AggPickmVO> newAggPickmVOS = checkAndFilterBillSrcOrg(vos);
List<AggPickmVO> newAggPickmVOS = checkAndFilterBillSrcOrg(cloneOrderVOS);
if (newAggPickmVOS.isEmpty()) {
return;
}
@ -188,6 +190,8 @@ public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> {
private List<AggPickmVO> checkAndFilterBillSrcOrg(AggPickmVO[] aggPickmVOS) throws BusinessException {
List<AggPickmVO> aggvoList = new ArrayList<>();
List<AggPickmVO> finalList = new ArrayList<>();
for (AggPickmVO aggvo : aggPickmVOS) {
String pkOrg = aggvo.getParentVO().getPk_org();
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 ("C022".equals(orgCode)&& 1 == aggvo.getParentVO().getFbillstatus()&&aggvo.getChildrenVO()!=null && aggvo.getChildrenVO().length > 0) {
if("61".equals(vfirstbilltype)||"55A2".equals(vfirstbilltype)){
//2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传
//获取表体物料信息
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 {

View File

@ -3,14 +3,17 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Log;
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.bd.material.baseinfo.IMaterialBaseInfoQueryService;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.pubitf.para.SysInitQuery;
import nc.util.mmf.framework.base.MMValueCheck;
import nc.vo.bd.defdoc.DefdocVO;
import nc.vo.bd.material.MaterialVO;
import nc.vo.cmp.util.StringUtils;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
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.pub.SqlBuilder;
import nc.vo.scmpub.util.ArrayUtil;
import nc.vo.util.CloneUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 流程生产订单审批后推送RZ
@ -46,8 +47,9 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<PMOAggVO> {
return;
}
try {
PMOAggVO[] cloneOrderVOS = (PMOAggVO[]) CloneUtil.deepClone(pmoAggVOS);
// 检查并筛选生产订单
List<PMOAggVO> filteredOrders = checkAndFilterBillSrcOrg(pmoAggVOS);
List<PMOAggVO> filteredOrders = checkAndFilterBillSrcOrg(cloneOrderVOS);
if (filteredOrders.isEmpty()) {
return;
}
@ -66,6 +68,7 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<PMOAggVO> {
private List<PMOAggVO> checkAndFilterBillSrcOrg(PMOAggVO[] pmoAggVOS) throws BusinessException {
List<PMOAggVO> aggvoList = new ArrayList<>();
List<String> tranidList = new ArrayList<String>();
List<PMOAggVO> finalList = new ArrayList<>();
for (PMOAggVO aggvo : pmoAggVOS) {
PMOHeadVO headvo = aggvo.getParentVO();
String tranid = headvo.getCtrantypeid();
@ -77,7 +80,6 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<PMOAggVO> {
if (tranidList.size() > 0) {
bSaveApproveMap = PMOBPService.getIPMOTransTypeQueryService()
.getBSaveApproveByTranTypeIDs(tranidList.toArray(new String[0]));
}
for (PMOAggVO aggvo : pmoAggVOS) {
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.JSONObject;
import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Log;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.bd.material.baseinfo.IMaterialBaseInfoQueryService;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.pubitf.para.SysInitQuery;
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.pub.SqlBuilder;
import nc.vo.scmpub.util.ArrayUtil;
import nc.vo.util.CloneUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import static nccloud.openapi.ic.m4c.mapping.M4cFieldsEnum.cmaterialvid;
@ -47,9 +49,10 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<OrderVO> {
return;
}
try {
OrderVO[] cloneOrderVOS = (OrderVO[]) CloneUtil.deepClone(orderVOS);
//检查并筛选销售出库单据为互感器公司
List<OrderVO> newOrderVOS = checkAndFilterBillSrcOrg(orderVOS);
if (newOrderVOS.isEmpty()) {
List<OrderVO> newOrderVOS = checkAndFilterBillSrcOrg(cloneOrderVOS);
if (newOrderVOS==null||newOrderVOS.size()<1) {
return;
}
//推送到锐制系统
@ -62,6 +65,8 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<OrderVO> {
private List<OrderVO> checkAndFilterBillSrcOrg(OrderVO[] OrderVOS) throws BusinessException {
List<OrderVO> aggvoList = new ArrayList<>();
List<OrderVO> finalList = new ArrayList<>();
for (OrderVO aggvo : OrderVOS) {
String pkOrg = aggvo.getHVO().getPk_org();
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;
}
/**