解决MPR运算回写备料计划报错问题-张鑫0514
This commit is contained in:
parent
1492a58adb
commit
803f6ba915
|
@ -32,129 +32,123 @@ import nc.vo.mmpac.pickm.entity.PickmItemVO;
|
|||
|
||||
public class PloProdDeptRule implements IRule<AggregatedPoVO> {
|
||||
|
||||
@Override
|
||||
public void process(AggregatedPoVO[] vos) {
|
||||
if (null == vos) {
|
||||
return;
|
||||
}
|
||||
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();
|
||||
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<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);
|
||||
}
|
||||
@Override
|
||||
public void process(AggregatedPoVO[] vos) {
|
||||
if (null == vos) {
|
||||
return;
|
||||
}
|
||||
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();
|
||||
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<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();// 来源单据表体主键
|
||||
// 需求来源为备料计划的才回写
|
||||
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<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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private IDeptPubService getDeptPubService() {
|
||||
return NCLocator.getInstance().lookup(IDeptPubService.class);
|
||||
}
|
||||
private IDeptPubService getDeptPubService() {
|
||||
return NCLocator.getInstance().lookup(IDeptPubService.class);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue