实际独立需求生成生产订单 批次号位置源码
This commit is contained in:
parent
de221a16b8
commit
5f89006519
|
@ -0,0 +1,663 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package nc.impl.mmpac.pmo.pac0002;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import nc.bs.framework.common.NCLocator;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.PMOAdjustBP;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.PMOApproveBP;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.PMOBatchEditBP;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.PMODeleteBP;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.PMOInsertBP;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.PMOQueryBP;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.PMOSaveCommitBP;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.PMOUpdateBP;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.query.PMOItemVOQueryBP;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPCalUtil;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil;
|
||||
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDeptNotNullRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckItemNotNullRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckItemParentProcedureRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckParentProcedureNoRule;
|
||||
import nc.impl.pubapp.bd.userdef.UserDefSaveRule;
|
||||
import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
|
||||
import nc.itf.mmpac.pmo.pac0002.IPMOMaintainService;
|
||||
import nc.itf.uap.rbac.IUserManageQuery_C;
|
||||
import nc.jdbc.framework.generator.SequenceGenerator;
|
||||
import nc.util.mmf.busi.measure.MeasureHelper;
|
||||
import nc.util.mmf.busi.service.OrgUnitPubService;
|
||||
import nc.util.mmf.framework.base.MMArrayUtil;
|
||||
import nc.util.mmf.framework.base.MMCollectionUtil;
|
||||
import nc.util.mmf.framework.base.MMMapUtil;
|
||||
import nc.util.mmf.framework.base.MMNumberUtil;
|
||||
import nc.util.mmf.framework.base.MMValueCheck;
|
||||
import nc.util.mmf.framework.gc.GCBillTransferTool;
|
||||
import nc.util.mmf.framework.gc.GCPseudoColUtil;
|
||||
import nc.vo.bd.feature.ffile.entity.AggFFileVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemMeasureParam;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOMaterialRelationVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOMaterialViewVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOPlanOutputVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFSrcMoOperTypeEnum;
|
||||
import nc.vo.mmpac.pmo.pac0002.util.PMOFillTransTypeUtil;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pub.SuperVO;
|
||||
import nc.vo.pub.lang.UFDouble;
|
||||
import nc.vo.pubapp.AppContext;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
import nc.vo.pubapp.pattern.pub.MapList;
|
||||
|
||||
public class PMOMaintainServiceImpl implements IPMOMaintainService {
|
||||
public PMOMaintainServiceImpl() {
|
||||
}
|
||||
|
||||
public PMOAggVO[] insert(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
new GCBillTransferTool(vos);
|
||||
AroundProcesser<PMOAggVO> processer = new AroundProcesser(PMOPluginPoint.VIEWINSERT);
|
||||
processer.addBeforeRule(new PMOCheckItemNotNullRule());
|
||||
processer.addBeforeRule(new PMOCheckItemParentProcedureRule());
|
||||
processer.addBeforeRule(new PMOCheckParentProcedureNoRule());
|
||||
processer.addBeforeRule(new PMOCheckDeptNotNullRule());
|
||||
processer.before(vos);
|
||||
vos = (new PMOInsertBP()).insert(vos, false, false);
|
||||
return vos;
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] insert_RequiresNew(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
PMOAggVO[] rtnVos = (new PMOInsertBP()).insert(vos, false, false);
|
||||
return rtnVos;
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] update(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
GCBillTransferTool<PMOAggVO> transTool = new GCBillTransferTool(vos);
|
||||
PMOAggVO[] fullBills = (PMOAggVO[])transTool.getClientFullInfoBill();
|
||||
this.setAggFFileVO(vos, fullBills);
|
||||
PMOAggVO[] originBills = (PMOAggVO[])transTool.getOriginBills();
|
||||
this.setVfirstmocode(fullBills, originBills);
|
||||
PMOUpdateBP bp = new PMOUpdateBP();
|
||||
PMOAggVO[] retBills = bp.update(fullBills, originBills);
|
||||
this.setCheckInfoToReturnAggVO(retBills, bp.getCheckInfoList());
|
||||
return retBills;
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void setAggFFileVO(PMOAggVO[] vos, PMOAggVO[] fullBills) {
|
||||
Map<String, AggFFileVO> cffileVOMap = new HashMap();
|
||||
|
||||
for(PMOAggVO vo : vos) {
|
||||
for(PMOItemVO itemvo : vo.getChildrenVO()) {
|
||||
String key = itemvo.getCmoid();
|
||||
if (MMValueCheck.isEmpty(key)) {
|
||||
key = (String)itemvo.getAttributeValue("pseudocolumn");
|
||||
}
|
||||
|
||||
cffileVOMap.put(itemvo.getCmoid(), itemvo.getFfvo());
|
||||
}
|
||||
}
|
||||
|
||||
for(PMOAggVO vo : fullBills) {
|
||||
for(PMOItemVO itemvo : vo.getChildrenVO()) {
|
||||
String key = itemvo.getCmoid();
|
||||
if (MMValueCheck.isEmpty(key)) {
|
||||
key = (String)itemvo.getAttributeValue("pseudocolumn");
|
||||
}
|
||||
|
||||
AggFFileVO ffvo = (AggFFileVO)cffileVOMap.get(key);
|
||||
if (MMValueCheck.isNotEmpty(ffvo)) {
|
||||
itemvo.setFfvo(ffvo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void setVfirstmocode(PMOAggVO[] fullBills, PMOAggVO[] originBills) {
|
||||
if (!MMArrayUtil.isEmpty(fullBills)) {
|
||||
Map<String, PMOHeadVO> cacheBill = new HashMap();
|
||||
if (MMArrayUtil.isNotEmpty(originBills)) {
|
||||
for(PMOAggVO origin : originBills) {
|
||||
cacheBill.put(origin.getPrimaryKey(), origin.getParentVO());
|
||||
}
|
||||
}
|
||||
|
||||
for(PMOAggVO vo : fullBills) {
|
||||
PMOHeadVO headVo = vo.getParentVO();
|
||||
String vBillCode = headVo.getVbillcode();
|
||||
if (!MMValueCheck.isEmpty(vBillCode)) {
|
||||
PMOHeadVO originHeadVo = (PMOHeadVO)cacheBill.get(headVo.getPrimaryKey());
|
||||
String originBillCode = originHeadVo.getVbillcode();
|
||||
PMOItemVO[] items = vo.getChildrenVO();
|
||||
if (MMArrayUtil.isNotEmpty(items)) {
|
||||
for(PMOItemVO item : items) {
|
||||
if (MMValueCheck.isNotEmpty(originBillCode) && !vBillCode.equals(originBillCode) && originBillCode.equals(item.getVfirstmocode())) {
|
||||
item.setVfirstmocode(vBillCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void setCheckInfoToReturnAggVO(PMOAggVO[] returnAggVOs, List<String> checkInfoList) {
|
||||
if (MMCollectionUtil.isNotEmpty(checkInfoList) && MMArrayUtil.isNotEmpty(returnAggVOs)) {
|
||||
String checkInfo = (String)checkInfoList.get(0);
|
||||
returnAggVOs[0].getChildrenVO()[0].setExtendmsg(checkInfo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public PMOAggVO[] adjustPMO(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
GCBillTransferTool<PMOAggVO> transTool = new GCBillTransferTool(vos);
|
||||
PMOAggVO[] fullBills = (PMOAggVO[])transTool.getClientFullInfoBill();
|
||||
this.setAggFFileVO(vos, fullBills);
|
||||
PMOAggVO[] originBills = (PMOAggVO[])transTool.getOriginBills();
|
||||
PMOAdjustBP bp = new PMOAdjustBP();
|
||||
PMOAggVO[] retBills = bp.adjust(fullBills, originBills);
|
||||
this.setCheckInfoToReturnAggVO(retBills, bp.getCheckInfoList());
|
||||
return retBills;
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] batchUpdate(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
GCBillTransferTool<PMOAggVO> transTool = new GCBillTransferTool(vos);
|
||||
PMOAggVO[] fullBills = (PMOAggVO[])transTool.getClientFullInfoBill();
|
||||
PMOAggVO[] originBills = (PMOAggVO[])transTool.getOriginBills();
|
||||
PMOBatchEditBP bp = new PMOBatchEditBP();
|
||||
PMOAggVO[] updvos = bp.batchUpdate(fullBills, originBills);
|
||||
return (new PMOQueryBP()).fillPbInfo(updvos);
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void delete(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
GCBillTransferTool<PMOAggVO> transferTool = new GCBillTransferTool(vos);
|
||||
PMOAggVO[] fullBills = (PMOAggVO[])transferTool.getClientFullInfoBill();
|
||||
PMODeleteBP bp = new PMODeleteBP();
|
||||
bp.delete(fullBills);
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public PMOAggVO[] approve(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
GCBillTransferTool<PMOAggVO> transTool = new GCBillTransferTool(vos);
|
||||
PMOAggVO[] fullBills = (PMOAggVO[])transTool.getClientFullInfoBill();
|
||||
PMOAggVO[] originBills = (PMOAggVO[])transTool.getOriginBills();
|
||||
PMOApproveBP bp = new PMOApproveBP();
|
||||
PMOAggVO[] updvos = bp.approve(fullBills, originBills);
|
||||
List<String> hidList = new ArrayList();
|
||||
if (MMArrayUtil.isEmpty(updvos)) {
|
||||
return null;
|
||||
} else {
|
||||
for(PMOAggVO returnvo : updvos) {
|
||||
hidList.add(returnvo.getParentVO().getCpmohid());
|
||||
}
|
||||
|
||||
return (new PMOQueryBP()).fillPbInfo(PMOBPService.getIPMOQueryService().queryByPks((String[])hidList.toArray(new String[hidList.size()])));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] approve_RequiresNew(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
PMOApproveBP bp = new PMOApproveBP();
|
||||
List<PMOAggVO> aggvos = new ArrayList();
|
||||
|
||||
for(PMOAggVO vo : vos) {
|
||||
GCPseudoColUtil.getInstance().setPseudoColInfo(vo);
|
||||
aggvos.add((PMOAggVO)vo.clone());
|
||||
}
|
||||
|
||||
PMOAggVO[] updvos = bp.approve(vos, (PMOAggVO[])aggvos.toArray(new PMOAggVO[aggvos.size()]));
|
||||
return updvos;
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] approveCancel(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
GCBillTransferTool<PMOAggVO> transTool = new GCBillTransferTool(vos);
|
||||
PMOAggVO[] fullBills = (PMOAggVO[])transTool.getClientFullInfoBill();
|
||||
PMOAggVO[] originBills = (PMOAggVO[])transTool.getOriginBills();
|
||||
PMOApproveBP bp = new PMOApproveBP();
|
||||
PMOAggVO[] updvos = bp.approveCancel(fullBills, originBills);
|
||||
List<String> hidList = new ArrayList();
|
||||
|
||||
for(PMOAggVO returnvo : updvos) {
|
||||
hidList.add(returnvo.getParentVO().getCpmohid());
|
||||
}
|
||||
|
||||
return (new PMOQueryBP()).fillPbInfo(PMOBPService.getIPMOQueryService().queryByPks((String[])hidList.toArray(new String[hidList.size()])));
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] fillVOInfo4AID(PMOAggVO[] aggvos) throws BusinessException {
|
||||
return MMArrayUtil.isEmpty(aggvos) ? null : (new PMOBPUtil()).fillVOInfo4AID(aggvos);
|
||||
}
|
||||
|
||||
public PMOAggVO[] fillVOInfo4KF(PMOAggVO[] aggvos) throws BusinessException {
|
||||
if (MMArrayUtil.isEmpty(aggvos)) {
|
||||
return null;
|
||||
} else {
|
||||
(new PMOFillTransTypeUtil()).fillTransTypeValues(aggvos);
|
||||
|
||||
try {
|
||||
(new UserDefSaveRule(new Class[]{PMOItemVO.class, PMOPlanOutputVO.class})).process(aggvos);
|
||||
List<PMOItemVO> itemList = new ArrayList();
|
||||
MapList<String, PMOAggVO> orgMapList = new MapList();
|
||||
|
||||
for(PMOAggVO aggvo : aggvos) {
|
||||
String pk_org = aggvo.getParentVO().getPk_org();
|
||||
orgMapList.put(pk_org, aggvo);
|
||||
PMOItemVO[] items = aggvo.getChildrenVO();
|
||||
Map<String, UFDouble> waterRateMap = PMOBPCalUtil.getWasterrate(aggvo);
|
||||
if (!MMArrayUtil.isEmpty(items)) {
|
||||
PMOItemMeasureParam param = new PMOItemMeasureParam();
|
||||
|
||||
for(PMOItemVO item : items) {
|
||||
if (MMNumberUtil.isNotNullAndNotZero(item.getNplanputastnum())) {
|
||||
MeasureHelper.fillAccNumber(item, param, "nplanputnum", "nplanputastnum");
|
||||
}
|
||||
|
||||
UFDouble wastrate = (UFDouble)waterRateMap.get(item.getCmaterialvid());
|
||||
UFDouble nNum = item.getNplanputnum().multiply((new UFDouble(1)).sub(wastrate));
|
||||
item.setNnum(nNum);
|
||||
item.setNrwxis(wastrate);
|
||||
itemList.add(item);
|
||||
}
|
||||
|
||||
MeasureHelper.fillAssNumber((SuperVO[])itemList.toArray(new PMOItemVO[itemList.size()]), param, "nnum", "nastnum");
|
||||
}
|
||||
}
|
||||
|
||||
for(PMOAggVO aggvo : aggvos) {
|
||||
PMOItemVO[] items = aggvo.getChildrenVO();
|
||||
if (!MMArrayUtil.isEmpty(items)) {
|
||||
for(PMOItemVO item : items) {
|
||||
item.setNmmastnum(item.getNastnum());
|
||||
item.setNmmnum(item.getNnum());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Set<String> orgids = orgMapList.keySet();
|
||||
Map<String, String> orgoid2Vid = new HashMap();
|
||||
if (orgids.size() > 0) {
|
||||
orgoid2Vid = OrgUnitPubService.getNewVIDSByOrgIDS((String[])orgids.toArray(new String[orgids.size()]));
|
||||
}
|
||||
|
||||
if (MMMapUtil.isNotEmpty(orgoid2Vid)) {
|
||||
for(PMOAggVO aggvo : aggvos) {
|
||||
PMOHeadVO head = aggvo.getParentVO();
|
||||
if (orgoid2Vid.containsKey(head.getPk_org())) {
|
||||
head.setPk_org_v((String)orgoid2Vid.get(head.getPk_org()));
|
||||
}
|
||||
|
||||
if (MMValueCheck.isEmpty(head.getCplanfactoryid())) {
|
||||
head.setCplanfactoryid(head.getPk_org());
|
||||
head.setCplanfactoryvid(head.getPk_org_v());
|
||||
}
|
||||
|
||||
PMOItemVO[] items = aggvo.getChildrenVO();
|
||||
if (!MMArrayUtil.isEmpty(items)) {
|
||||
for(PMOItemVO item : items) {
|
||||
item.setPk_group(head.getPk_group());
|
||||
item.setPk_org(head.getPk_org());
|
||||
item.setPk_org_v(head.getPk_org_v());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(String orgid : orgids) {
|
||||
List<PMOAggVO> moList = orgMapList.get(orgid);
|
||||
MapList<String, PMOItemVO> marMapList = new MapList();
|
||||
|
||||
for(PMOAggVO aggvo : moList) {
|
||||
PMOItemVO[] items = aggvo.getChildrenVO();
|
||||
SequenceGenerator sgkey = new SequenceGenerator();
|
||||
String[] cmoids = sgkey.generate(items.length);
|
||||
|
||||
for(int i = 0; i < items.length; ++i) {
|
||||
if (null == items[i].getCmoid()) {
|
||||
items[i].setCmoid(cmoids[i]);
|
||||
}
|
||||
|
||||
marMapList.put(items[i].getCmaterialvid(), items[i]);
|
||||
}
|
||||
}
|
||||
|
||||
Set<String> marSet = marMapList.keySet();
|
||||
String[] marPlanFields = new String[]{"prevahead", "endahead", "fixedahead", "aheadbatch", "aheadcoff", "planprop"};
|
||||
String[] marProdFields = new String[]{"pk_prodeptdoc", "pk_propsndoc"};
|
||||
Map<String, PMOMaterialRelationVO> infoMap = PMOBPService.getIPMOQueryService().queryMaterialRelationArray(marMapList, marPlanFields, marProdFields, orgid, ((PMOAggVO)orgMapList.get(orgid).get(0)).getParentVO().getPk_group());
|
||||
if (!MMMapUtil.isEmpty(infoMap)) {
|
||||
for(String key : marSet) {
|
||||
PMOItemVO[] hvos = (PMOItemVO[])marMapList.get(key).toArray(new PMOItemVO[0]);
|
||||
if (!MMArrayUtil.isEmpty(hvos)) {
|
||||
for(PMOItemVO hvo : hvos) {
|
||||
PMOMaterialRelationVO infovo = (PMOMaterialRelationVO)infoMap.get(key + hvo.getCmoid());
|
||||
if (MMValueCheck.isEmpty(hvo.getCbomversionid())) {
|
||||
hvo.setCbomversionid(infovo.getCbomversionid());
|
||||
hvo.setVbomversion(infovo.getVbomversion());
|
||||
}
|
||||
|
||||
if (MMValueCheck.isEmpty(hvo.getCpackbomid())) {
|
||||
hvo.setCpackbomid(infovo.getCpackbomid());
|
||||
hvo.setVpackbomversion(infovo.getVpackbomversion());
|
||||
}
|
||||
|
||||
if (MMValueCheck.isEmpty(hvo.getCdeptvid())) {
|
||||
hvo.setCdeptvid(infovo.getCdeptvid());
|
||||
hvo.setCdeptid(infovo.getCdeptid());
|
||||
}
|
||||
|
||||
if (MMValueCheck.isEmpty(hvo.getCemployeeid())) {
|
||||
hvo.setCemployeeid(infovo.getCemployeeid());
|
||||
}
|
||||
|
||||
if (MMValueCheck.isEmpty(hvo.getCrtversionid())) {
|
||||
hvo.setCrtversionid(infovo.getCrtversionid());
|
||||
hvo.setVrtversion(infovo.getVrtversion());
|
||||
}
|
||||
|
||||
if (MMValueCheck.isEmpty(hvo.getCwkid())) {
|
||||
hvo.setCwkid(infovo.getCwkid());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return aggvos;
|
||||
} catch (BusinessException e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] fillVOInfo4TRAN(PMOAggVO[] aggvos) throws BusinessException {
|
||||
try {
|
||||
return this.fillVOInfo4AID(aggvos);
|
||||
} catch (BusinessException e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] fillVOInfo4SO(PMOAggVO[] aggvos) throws BusinessException {
|
||||
try {
|
||||
return this.fillVOInfo4AID(aggvos);
|
||||
} catch (BusinessException e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] fillVOInfo4WR(PMOAggVO[] aggvos) throws BusinessException {
|
||||
if (MMArrayUtil.isEmpty(aggvos)) {
|
||||
return null;
|
||||
} else {
|
||||
try {
|
||||
(new UserDefSaveRule(new Class[]{PMOItemVO.class, PMOPlanOutputVO.class})).process(aggvos);
|
||||
List<PMOItemVO> itemList = new ArrayList();
|
||||
List<String> fitemidList = new ArrayList();
|
||||
MapList<String, PMOAggVO> orgMapList = new MapList();
|
||||
|
||||
for(PMOAggVO aggvo : aggvos) {
|
||||
String pk_org = aggvo.getParentVO().getPk_org();
|
||||
PMOItemVO[] items = aggvo.getChildrenVO();
|
||||
orgMapList.put(pk_org, aggvo);
|
||||
Map<String, UFDouble> waterRateMap = PMOBPCalUtil.getWasterrate(aggvo);
|
||||
if (!MMArrayUtil.isEmpty(items)) {
|
||||
for(PMOItemVO item : items) {
|
||||
if (!MMValueCheck.isEmpty(item.getCsrcmobid())) {
|
||||
fitemidList.add(item.getCsrcmobid());
|
||||
}
|
||||
|
||||
UFDouble wastrate = (UFDouble)waterRateMap.get(item.getCmaterialvid());
|
||||
UFDouble nNum = item.getNmmnum().div((new UFDouble(1)).sub(wastrate));
|
||||
item.setNplanputnum(nNum);
|
||||
item.setNrwxis(wastrate);
|
||||
if (PMOFSrcMoOperTypeEnum.RE.equalsValue(item.getFsrcmooper()) || PMOFSrcMoOperTypeEnum.PROCRE.equalsValue(item.getFsrcmooper())) {
|
||||
item.setNplanputastnum(item.getNmmastnum());
|
||||
item.setNplanputnum(item.getNmmnum());
|
||||
item.setNrwxis(UFDouble.ZERO_DBL);
|
||||
}
|
||||
|
||||
itemList.add(item);
|
||||
}
|
||||
|
||||
PMOItemMeasureParam param = new PMOItemMeasureParam();
|
||||
MeasureHelper.fillAssNumber((SuperVO[])itemList.toArray(new PMOItemVO[itemList.size()]), param, "nplanputnum", "nplanputastnum");
|
||||
}
|
||||
}
|
||||
|
||||
if (fitemidList.size() > 0) {
|
||||
Map<String, PMOItemVO> fitemsMap = PMOItemVOQueryBP.getPMOItemVOMap((String[])fitemidList.toArray(new String[fitemidList.size()]));
|
||||
|
||||
for(PMOAggVO aggvo : aggvos) {
|
||||
PMOItemVO[] items = aggvo.getChildrenVO();
|
||||
if (!MMArrayUtil.isEmpty(items)) {
|
||||
for(PMOItemVO item : items) {
|
||||
PMOItemVO fitem = (PMOItemVO)fitemsMap.get(item.getCsrcmobid());
|
||||
if (!MMValueCheck.isEmpty(fitem)) {
|
||||
if (PMOFSrcMoOperTypeEnum.RW.equalsValue(item.getFsrcmooper())) {
|
||||
item.setCbomversionid(fitem.getCbomversionid());
|
||||
item.setVbomversion(fitem.getVbomversion());
|
||||
item.setCpackbomid(fitem.getCpackbomid());
|
||||
item.setVpackbomversion(fitem.getVpackbomversion());
|
||||
item.setCrtversionid(fitem.getCrtversionid());
|
||||
item.setVrtversion(fitem.getVrtversion());
|
||||
}
|
||||
|
||||
item.setCvendorid(fitem.getCvendorid());
|
||||
item.setCproductorid(fitem.getCproductorid());
|
||||
item.setCprojectid(fitem.getCprojectid());
|
||||
item.setCcustomerid(fitem.getCcustomerid());
|
||||
item.setVfree1(fitem.getVfree1());
|
||||
item.setVfree2(fitem.getVfree2());
|
||||
item.setVfree3(fitem.getVfree3());
|
||||
item.setVfree4(fitem.getVfree4());
|
||||
item.setVfree5(fitem.getVfree5());
|
||||
item.setVfree6(fitem.getVfree6());
|
||||
item.setVfree7(fitem.getVfree7());
|
||||
item.setVfree8(fitem.getVfree8());
|
||||
item.setVfree9(fitem.getVfree9());
|
||||
item.setVfree10(fitem.getVfree10());
|
||||
item.setCrequireorg(fitem.getCrequireorg());
|
||||
item.setCrequireorgvid(fitem.getCrequireorgvid());
|
||||
item.setTrequiredate(fitem.getTrequiredate());
|
||||
item.setCcustmaterialid(fitem.getCcustmaterialid());
|
||||
|
||||
for(int i = 1; i <= 20; ++i) {
|
||||
if (MMValueCheck.isEmpty(item.getAttributeValue("vdef" + i))) {
|
||||
item.setAttributeValue("vdef" + i, fitem.getAttributeValue("vdef" + i));
|
||||
}
|
||||
}
|
||||
|
||||
item.setVparentbillid(fitem.getVparentbillid());
|
||||
item.setVparentbillcode(fitem.getVparentbillcode());
|
||||
item.setCparentmobid(fitem.getCparentmobid());
|
||||
item.setVparentmorowno(fitem.getVparentmorowno());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String pk_user = AppContext.getInstance().getPkUser();
|
||||
String cemployeeid = null;
|
||||
if (!MMValueCheck.isEmpty(pk_user)) {
|
||||
try {
|
||||
cemployeeid = ((IUserManageQuery_C)NCLocator.getInstance().lookup(IUserManageQuery_C.class)).queryPsndocByUserid(pk_user);
|
||||
} catch (BusinessException ex) {
|
||||
ExceptionUtils.wrappException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
if (!MMValueCheck.isEmpty(cemployeeid)) {
|
||||
for(PMOAggVO aggvo : aggvos) {
|
||||
PMOItemVO[] items = aggvo.getChildrenVO();
|
||||
if (!MMArrayUtil.isEmpty(items)) {
|
||||
for(PMOItemVO item : items) {
|
||||
if (MMValueCheck.isEmpty(item.getCemployeeid())) {
|
||||
item.setCemployeeid(cemployeeid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Set<String> orgids = orgMapList.keySet();
|
||||
Map<String, String> orgoid2Vid = new HashMap();
|
||||
if (orgids.size() > 0) {
|
||||
orgoid2Vid = OrgUnitPubService.getNewVIDSByOrgIDS((String[])orgids.toArray(new String[orgids.size()]));
|
||||
}
|
||||
|
||||
if (MMMapUtil.isNotEmpty(orgoid2Vid)) {
|
||||
for(PMOAggVO aggvo : aggvos) {
|
||||
PMOHeadVO head = aggvo.getParentVO();
|
||||
if (orgoid2Vid.containsKey(head.getPk_org())) {
|
||||
head.setPk_org_v((String)orgoid2Vid.get(head.getPk_org()));
|
||||
}
|
||||
|
||||
if (MMValueCheck.isEmpty(head.getCplanfactoryid())) {
|
||||
head.setCplanfactoryid(head.getPk_org());
|
||||
head.setCplanfactoryvid(head.getPk_org_v());
|
||||
}
|
||||
|
||||
PMOItemVO[] items = aggvo.getChildrenVO();
|
||||
if (!MMArrayUtil.isEmpty(items)) {
|
||||
for(PMOItemVO item : items) {
|
||||
item.setPk_group(head.getPk_group());
|
||||
item.setPk_org(head.getPk_org());
|
||||
item.setPk_org_v(head.getPk_org_v());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(String orgid : orgids) {
|
||||
List<PMOAggVO> moList = orgMapList.get(orgid);
|
||||
MapList<String, PMOItemVO> marMapList = new MapList();
|
||||
|
||||
for(PMOAggVO aggvo : moList) {
|
||||
PMOItemVO[] items = aggvo.getChildrenVO();
|
||||
SequenceGenerator sgkey = new SequenceGenerator();
|
||||
String[] cmoids = sgkey.generate(items.length);
|
||||
|
||||
for(int i = 0; i < items.length; ++i) {
|
||||
if (null == items[i].getCmoid()) {
|
||||
items[i].setCmoid(cmoids[i]);
|
||||
}
|
||||
|
||||
marMapList.put(items[i].getCmaterialvid(), items[i]);
|
||||
}
|
||||
}
|
||||
|
||||
Set<String> marSet = marMapList.keySet();
|
||||
String[] marPlanFields = new String[]{"prevahead", "endahead", "fixedahead", "aheadbatch", "aheadcoff", "planprop"};
|
||||
String[] marProdFields = new String[]{"pk_prodeptdoc", "pk_propsndoc"};
|
||||
Map<String, PMOMaterialRelationVO> infoMap = PMOBPService.getIPMOQueryService().queryMaterialRelationArray(marMapList, marPlanFields, marProdFields, orgid, ((PMOAggVO)orgMapList.get(orgid).get(0)).getParentVO().getPk_group());
|
||||
if (!MMMapUtil.isEmpty(infoMap)) {
|
||||
for(String key : marSet) {
|
||||
PMOItemVO[] hvos = (PMOItemVO[])marMapList.get(key).toArray(new PMOItemVO[0]);
|
||||
if (!MMArrayUtil.isEmpty(hvos)) {
|
||||
for(PMOItemVO hvo : hvos) {
|
||||
PMOMaterialRelationVO infovo = (PMOMaterialRelationVO)infoMap.get(key + hvo.getCmoid());
|
||||
if (MMValueCheck.isEmpty(hvo.getCdeptvid())) {
|
||||
hvo.setCdeptvid(infovo.getCdeptvid());
|
||||
hvo.setCdeptid(infovo.getCdeptid());
|
||||
}
|
||||
|
||||
if (MMValueCheck.isEmpty(hvo.getCemployeeid())) {
|
||||
hvo.setCemployeeid(infovo.getCemployeeid());
|
||||
}
|
||||
|
||||
if (MMValueCheck.isEmpty(hvo.getCwkid())) {
|
||||
hvo.setCwkid(infovo.getCwkid());
|
||||
}
|
||||
|
||||
PMOMaterialViewVO materialvo = PMOBPCalUtil.getMaterialView(hvo.getPk_org(), infovo);
|
||||
PMOBPCalUtil.fillTReqTimeSupplyTime(materialvo, hvo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return aggvos;
|
||||
} catch (BusinessException e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] insertCommit(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
return (new PMOSaveCommitBP()).insertCommit(vos);
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public PMOAggVO[] updateCommit(PMOAggVO[] vos) throws BusinessException {
|
||||
try {
|
||||
return (new PMOSaveCommitBP()).updateCommit(vos);
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.marsh(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue