2312MPR运算带出流程生产订单同步自定义项-张鑫0412
This commit is contained in:
parent
0890860fd4
commit
c964142c31
|
@ -6,145 +6,155 @@ import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import nc.bs.framework.common.NCLocator;
|
import nc.bs.framework.common.NCLocator;
|
||||||
import nc.impl.pubapp.pattern.rule.IRule;
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
import nc.pubitf.org.IDeptPubService;
|
import nc.pubitf.org.IDeptPubService;
|
||||||
import nc.util.mmf.busi.service.MaterialPubService;
|
import nc.util.mmf.busi.service.MaterialPubService;
|
||||||
import nc.util.mmf.framework.base.MMValueCheck;
|
import nc.util.mmf.framework.base.MMValueCheck;
|
||||||
import nc.vo.bd.material.prod.MaterialProdVO;
|
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.AggregatedPoVO;
|
||||||
import nc.vo.mmpps.mps0202.PoSourceEnum;
|
import nc.vo.mmpps.mps0202.PoSourceEnum;
|
||||||
import nc.vo.mmpps.mps0202.PoVO;
|
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.pub.BusinessException;
|
||||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
import nc.pubitf.mmpac.pickm.pub.IPickmPubQueryService;
|
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> {
|
||||||
public void process(AggregatedPoVO[] vos) {
|
|
||||||
if (null == vos) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ArrayList<String> vsrcbidList = new ArrayList<>();
|
@Override
|
||||||
Map<String, List<String>> map = new HashMap<String, List<String>>();
|
public void process(AggregatedPoVO[] vos) {
|
||||||
for (AggregatedPoVO agg : vos) {
|
if (null == vos) {
|
||||||
PoVO plo = agg.getParentVO();
|
return;
|
||||||
String vid = plo.getCmaterialvid();
|
}
|
||||||
String stockorgid = plo.getCstockorgid();
|
Map<String, List<String>> map = new HashMap<String, List<String>>();
|
||||||
String stockorgvid = plo.getCstockorgvid();
|
ArrayList<String> vsrcbidList = new ArrayList<>();
|
||||||
String prodDeptid = plo.getCproddeptid();
|
for (AggregatedPoVO agg : vos) {
|
||||||
String prodDeptvid = plo.getCproddeptvid();
|
PoVO plo = agg.getParentVO();
|
||||||
Integer posource = plo.getFposource();
|
String vid = plo.getCmaterialvid();
|
||||||
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isEmpty(prodDeptid) && MMValueCheck.isEmpty(prodDeptvid)
|
String stockorgid = plo.getCstockorgid();
|
||||||
&& MMValueCheck.isNotEmpty(stockorgid) && MMValueCheck.isNotEmpty(stockorgvid)) {
|
String stockorgvid = plo.getCstockorgvid();
|
||||||
List<String> vids = (List<String>) map.get(stockorgid);
|
String prodDeptid = plo.getCproddeptid();
|
||||||
if (null == vids) {
|
String prodDeptvid = plo.getCproddeptvid();
|
||||||
List<String> list = new ArrayList<String>();
|
Integer posource = plo.getFposource();
|
||||||
list.add(vid);
|
if (PoSourceEnum.COMPUT == posource && MMValueCheck.isEmpty(prodDeptid)
|
||||||
map.put(stockorgid, list);
|
&& MMValueCheck.isEmpty(prodDeptvid) && MMValueCheck.isNotEmpty(stockorgid)
|
||||||
} else {
|
&& 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 {
|
||||||
|
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<String, AggPickmVO> 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<String> stockorgids = map.keySet();
|
||||||
|
Iterator<String> i = stockorgids.iterator();
|
||||||
|
while (i.hasNext()) {
|
||||||
|
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();
|
||||||
|
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<String> proddeptids = new ArrayList<String>();
|
||||||
|
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<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(results.get(prodDeptid));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (BusinessException e) {
|
||||||
|
ExceptionUtils.wrappException(e);
|
||||||
|
}
|
||||||
|
|
||||||
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<String, AggPickmVO> 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<String> stockorgids = map.keySet();
|
private IDeptPubService getDeptPubService() {
|
||||||
Iterator<String> i = stockorgids.iterator();
|
return NCLocator.getInstance().lookup(IDeptPubService.class);
|
||||||
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" });
|
|
||||||
|
|
||||||
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) && null != results) {
|
|
||||||
MaterialProdVO prodvo = (MaterialProdVO) results.get(vid);
|
|
||||||
if (null != prodvo) {
|
|
||||||
plo.setCproddeptid(prodvo.getPk_prodeptdoc());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> proddeptids = new ArrayList<String>();
|
|
||||||
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 = getDeptPubService();
|
|
||||||
try {
|
|
||||||
HashMap<String, String> results = deptPubService
|
|
||||||
.getLastVIDSByDeptIDS((String[]) 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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (BusinessException e) {
|
|
||||||
ExceptionUtils.wrappException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private IDeptPubService getDeptPubService() {
|
|
||||||
return (IDeptPubService) NCLocator.getInstance().lookup(IDeptPubService.class);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue