2312MPR运算带出流程生产订单同步自定义项-张鑫0412

This commit is contained in:
zhangxinah@yonyou.com 2025-04-12 12:38:32 +08:00
parent 0890860fd4
commit c964142c31
1 changed files with 132 additions and 122 deletions

View File

@ -6,33 +6,39 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import nc.bs.framework.common.NCLocator;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.pubitf.org.IDeptPubService;
import nc.util.mmf.busi.service.MaterialPubService;
import nc.util.mmf.framework.base.MMValueCheck;
import nc.vo.bd.material.prod.MaterialProdVO;
import nc.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpps.mps0202.AggregatedPoVO;
import nc.vo.mmpps.mps0202.PoSourceEnum;
import nc.vo.mmpps.mps0202.PoVO;
import nc.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpac.pickm.entity.PickmItemVO;
import nc.vo.pub.BusinessException;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.pubitf.mmpac.pickm.pub.IPickmPubQueryService;
import nc.vo.mmpac.pickm.entity.PickmItemVO;
/**
* 巠饜2312MPR堍呾奀參磁肮晤瘍磁肮种忮隆等瘍梓ゴ砐醴瘍湍善數赫隆等 zhangxinah
* 对运算产生的计划订单补全生产部门需要对计划订单先按生产工厂进行分组然后调用服务进行设置
*
* @since 6.3
* @version 2013-2-26 下午12:28:29
* @author duanxf
*/
public class PloProdDeptRule extends Object implements IRule<AggregatedPoVO> {
public class PloProdDeptRule implements IRule<AggregatedPoVO> {
@Override
public void process(AggregatedPoVO[] vos) {
if (null == vos) {
return;
}
ArrayList<String> vsrcbidList = new ArrayList<>();
Map<String, List<String>> map = new HashMap<String, List<String>>();
ArrayList<String> vsrcbidList = new ArrayList<>();
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
String vid = plo.getCmaterialvid();
@ -41,15 +47,16 @@ public class PloProdDeptRule extends Object implements IRule<AggregatedPoVO> {
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<String> vids = (List<String>) map.get(stockorgid);
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isEmpty(prodDeptid)
&& MMValueCheck.isEmpty(prodDeptvid) && MMValueCheck.isNotEmpty(stockorgid)
&& MMValueCheck.isNotEmpty(stockorgvid)) {
List<String> vids = map.get(stockorgid);
if (null == vids) {
List<String> list = new ArrayList<String>();
list.add(vid);
map.put(stockorgid, list);
} else {
}
else {
vids.add(vid);
}
}
@ -63,7 +70,8 @@ public class PloProdDeptRule extends Object implements IRule<AggregatedPoVO> {
String[] vsrcbids = vsrcbidList.toArray(new String[vsrcbidList.size()]);
Map<String, AggPickmVO> pickmVOMap;
try {
pickmVOMap = NCLocator.getInstance().lookup(IPickmPubQueryService.class).queryPickm4Issue(vsrcbids);
pickmVOMap = NCLocator.getInstance().lookup(IPickmPubQueryService.class)
.queryPickm4Issue(vsrcbids);
} catch (BusinessException e) {
throw new RuntimeException(e);
}
@ -90,15 +98,15 @@ public class PloProdDeptRule extends Object implements IRule<AggregatedPoVO> {
}
}
}
Set<String> stockorgids = map.keySet();
Iterator<String> i = stockorgids.iterator();
while (i.hasNext()) {
String key = (String) i.next();
List<String> vids = (List<String>) map.get(key);
Map<String, MaterialProdVO> results = MaterialPubService.queryMaterialProduceInfoByPks(
(String[]) vids.toArray(new String[0]), key, new String[] { "pk_prodeptdoc" });
String key = i.next();
List<String> vids = map.get(key);
Map<String, MaterialProdVO> 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();
@ -106,15 +114,17 @@ public class PloProdDeptRule extends Object implements IRule<AggregatedPoVO> {
String stockorgvid = plo.getCstockorgvid();
Integer posource = plo.getFposource();
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(stockorgid)
&& MMValueCheck.isNotEmpty(stockorgvid) && null != results) {
MaterialProdVO prodvo = (MaterialProdVO) results.get(vid);
&& MMValueCheck.isNotEmpty(stockorgvid)) {
if (null != results) {
MaterialProdVO prodvo = results.get(vid);
if (null != prodvo) {
plo.setCproddeptid(prodvo.getPk_prodeptdoc());
plo.setCproddeptid(prodvo.getPk_prodeptdoc());// 生产部门ID
}
}
}
}
}
// 根据生产部门ID查询设置VID
List<String> proddeptids = new ArrayList<String>();
for (AggregatedPoVO agg : vos) {
PoVO plo = agg.getParentVO();
@ -124,27 +134,27 @@ public class PloProdDeptRule extends Object implements IRule<AggregatedPoVO> {
proddeptids.add(prodDeptid);
}
}
IDeptPubService deptPubService = getDeptPubService();
IDeptPubService deptPubService = this.getDeptPubService();
try {
HashMap<String, String> results = deptPubService
.getLastVIDSByDeptIDS((String[]) proddeptids.toArray(new String[0]));
HashMap<String, String> 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((String) results.get(prodDeptid));
plo.setCproddeptvid(results.get(prodDeptid));
}
}
}
} catch (BusinessException e) {
}
catch (BusinessException e) {
ExceptionUtils.wrappException(e);
}
}
private IDeptPubService getDeptPubService() {
return (IDeptPubService) NCLocator.getInstance().lookup(IDeptPubService.class);
return NCLocator.getInstance().lookup(IDeptPubService.class);
}
}