高压生产报告审核后自动生产转运单
This commit is contained in:
parent
c04935f925
commit
3866c75b85
|
|
@ -0,0 +1,49 @@
|
||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package nc.bs.mmpac.wr.bp;
|
||||||
|
|
||||||
|
import nc.bs.mmpac.wr.flowbiz.HandOverRule;
|
||||||
|
import nc.bs.mmpac.wr.plugin.WrPluginPoint;
|
||||||
|
import nc.bs.mmpac.wr.rule.audit.WrAuditSetValueRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.audit.WrAuditValidateForFlowRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.createpick.WrQueryBackFlushFlagRule;
|
||||||
|
import nc.impl.pubapp.pattern.rule.ICompareRule;
|
||||||
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||||
|
import nc.util.mmf.framework.gc.GCUpdateBPTemplate;
|
||||||
|
import nc.vo.mmpac.wr.entity.AggWrVO;
|
||||||
|
|
||||||
|
public class WrApproveBP {
|
||||||
|
public WrApproveBP() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public AggWrVO[] audit(AggWrVO[] fullBills, AggWrVO[] originBills) {
|
||||||
|
GCUpdateBPTemplate<AggWrVO> bp = new GCUpdateBPTemplate(WrPluginPoint.AUDITEUPDATE);
|
||||||
|
this.addBeforeRule(bp.getAroundProcesser());
|
||||||
|
this.addAfterRule(bp.getAroundProcesser());
|
||||||
|
return (AggWrVO[])bp.update(fullBills, originBills);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addBeforeRule(CompareAroundProcesser<AggWrVO> processor) {
|
||||||
|
ICompareRule<AggWrVO> wrAuditValidateForFlowRule = new WrAuditValidateForFlowRule();
|
||||||
|
processor.addBeforeRule(wrAuditValidateForFlowRule);
|
||||||
|
IRule<AggWrVO> wrAuditSetValueRule = new WrAuditSetValueRule(true, 0);
|
||||||
|
processor.addBeforeRule(wrAuditSetValueRule);
|
||||||
|
processor.addBeforeRule(new WrQueryBackFlushFlagRule());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @deprecated */
|
||||||
|
@Deprecated
|
||||||
|
private void addAfterRule(CompareAroundProcesser<AggWrVO> processor) {
|
||||||
|
processor.addAfterRule(new HandOverRule());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @deprecated */
|
||||||
|
@Deprecated
|
||||||
|
protected IRule<AggWrVO> getWrAuditAutoBackflushRule() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,463 @@
|
||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package nc.bs.mmpac.wr.flowbiz;
|
||||||
|
|
||||||
|
import nc.bs.dao.BaseDAO;
|
||||||
|
import nc.bs.framework.common.NCLocator;
|
||||||
|
import nc.bs.uapbd.util.MyHelper;
|
||||||
|
import nc.bs.uif2.validation.ValidationException;
|
||||||
|
import nc.bs.uif2.validation.ValidationFailure;
|
||||||
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.itf.mmpac.handtake.IHandTakeMaintainService;
|
||||||
|
import nc.itf.mmpac.handtake.dhandtake.IDHandTakeBusinessService;
|
||||||
|
import nc.itf.mmpac.handtake.phandtake.IPHandTakeBusinessService;
|
||||||
|
import nc.itf.mmpac.wr.IWrTranstypeQueryService;
|
||||||
|
import nc.itf.uap.pf.IPFWorkflowQry;
|
||||||
|
import nc.jdbc.framework.processor.MapListProcessor;
|
||||||
|
import nc.md.data.access.NCObject;
|
||||||
|
import nc.md.model.MetaDataException;
|
||||||
|
import nc.md.persist.framework.IMDPersistenceQueryService;
|
||||||
|
import nc.pubitf.mmpac.mo.wr.IMoPubService4Wr;
|
||||||
|
import nc.pubitf.uapbd.IMaterialPubService_C;
|
||||||
|
import nc.util.mmf.framework.base.MMNumberUtil;
|
||||||
|
import nc.util.mmf.framework.base.MMValueCheck;
|
||||||
|
import nc.util.mmpac.wr.WrTransTypeUtil;
|
||||||
|
import nc.util.mmpac.wr.WrVOCommonUtil;
|
||||||
|
import nc.util.mmpac.wr.vochange.WrBusiVOToChangeVO;
|
||||||
|
import nc.vo.bd.material.prod.MaterialProdVO;
|
||||||
|
import nc.vo.bd.material.stock.MaterialStockVO;
|
||||||
|
import nc.vo.ml.NCLangRes4VoTransl;
|
||||||
|
import nc.vo.mmpac.handtake.consts.CMMLangConstHandTake;
|
||||||
|
import nc.vo.mmpac.handtake.entity.AggHandTakeVO;
|
||||||
|
import nc.vo.mmpac.handtake.entity.HandTakeBVO;
|
||||||
|
import nc.vo.mmpac.handtake.entity.HandTakeHVO;
|
||||||
|
import nc.vo.mmpac.mo.param.MoQueryParam4Wr;
|
||||||
|
import nc.vo.mmpac.wr.consts.WrptLangConst;
|
||||||
|
import nc.vo.mmpac.wr.entity.*;
|
||||||
|
import nc.vo.mmpac.wr.enumeration.WrBillStatusEnum;
|
||||||
|
import nc.vo.mmpac.wr.enumeration.WrQualityProcessMethodEnum;
|
||||||
|
import nc.vo.org.OrgVO;
|
||||||
|
import nc.vo.org.OrgVOQueryFacade;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
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.MapList;
|
||||||
|
import nccloud.framework.service.ServiceLocator;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class HandOverRule implements IRule<AggWrVO> {
|
||||||
|
private Map<String, String> configParams;
|
||||||
|
|
||||||
|
|
||||||
|
public HandOverRule() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void process(AggWrVO[] vos) {
|
||||||
|
try {
|
||||||
|
configParams = MyHelper.getConfigParams("gy-config", null);
|
||||||
|
if (configParams.isEmpty()) {
|
||||||
|
throw new BusinessException("高压的接口缺少配置");
|
||||||
|
}
|
||||||
|
|
||||||
|
IWrTranstypeQueryService queryService= (IWrTranstypeQueryService)NCLocator.getInstance().lookup(IWrTranstypeQueryService.class);
|
||||||
|
IHandTakeMaintainService handTakeMaintainService= (IHandTakeMaintainService)NCLocator.getInstance().lookup(IHandTakeMaintainService.class);
|
||||||
|
List<AggWrVO> list = new ArrayList<>();
|
||||||
|
for(AggWrVO vo : vos) {
|
||||||
|
String pkOrg = vo.getParentVO().getPk_org();
|
||||||
|
String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
|
||||||
|
if (checkIfOrg(orgCode, configParams)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(!vo.getParentVO().getFbillstatus().equals(WrBillStatusEnum.COMMITE.toInteger())){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(queryService.isAuditToProdInBPTransType(new String[]{vo.getParentVO().getVtrantypeid()}).get(vo.getParentVO().getVtrantypeid())){
|
||||||
|
throw new BusinessException("交易类型不能是审批即入库");
|
||||||
|
|
||||||
|
}
|
||||||
|
WrItemVO[] itemVOS= vo.getChildrenVO();
|
||||||
|
List<WrItemVO> itemlist = new ArrayList<WrItemVO>();
|
||||||
|
for (WrItemVO itemVO : itemVOS) {
|
||||||
|
IMaterialPubService_C serv = (IMaterialPubService_C)NCLocator.getInstance().lookup(IMaterialPubService_C.class);
|
||||||
|
Map<String, MaterialProdVO> map = serv.queryMaterialProduceInfoByPks(new String[]{itemVO.getCbmaterialvid()},pkOrg
|
||||||
|
,new String[]{"wghxcl","iscreatesonprodorder"});
|
||||||
|
if(map.isEmpty()) {
|
||||||
|
throw new BusinessException("请检查工位半产品是否维护配套子件和完工后续处理生产页签参数");
|
||||||
|
// continue;
|
||||||
|
}else{
|
||||||
|
MaterialProdVO materialProdVO=map.get(itemVO.getCbmaterialvid());
|
||||||
|
if(materialProdVO == null) {
|
||||||
|
throw new BusinessException("请检查工位半产品是否维护配套子件和完工后续处理生产页签参数");
|
||||||
|
// continue;
|
||||||
|
}
|
||||||
|
if(materialProdVO.getWghxcl().equals(1)&& materialProdVO.getIscreatesonprodorder().booleanValue()) {
|
||||||
|
AggWrVO vo1 = new AggWrVO();
|
||||||
|
vo1.setParentVO(vo.getParentVO());
|
||||||
|
vo1.setChildrenVO(new WrItemVO[]{itemVO});
|
||||||
|
list.add(vo1);
|
||||||
|
}else{
|
||||||
|
throw new BusinessException("请检查工位半产品是否维护配套子件和完工后续处理生产页签参数");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<AggHandTakeVO> aggHandTakeVOS= new ArrayList<>();
|
||||||
|
for (AggWrVO vo : list) {
|
||||||
|
try {
|
||||||
|
this.loadWrQualityVO(vo);
|
||||||
|
} catch (MetaDataException var18) {
|
||||||
|
ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("5008100_0", "05008100-0034"));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.validate(vo);
|
||||||
|
this.validateSerialManage(new AggWrVO[]{vo});
|
||||||
|
|
||||||
|
moCloseProcess(new AggWrVO[]{vo});
|
||||||
|
WrTransTypeUtil.changeTransTypeCodeDefault(vo.getParentVO());
|
||||||
|
AggWrChangeVO[] aggChangeVOs = WrBusiVOToChangeVO.changeOnlyQualityVO(new AggWrVO[]{vo});
|
||||||
|
IPHandTakeBusinessService serv = (IPHandTakeBusinessService)NCLocator.getInstance().lookup(IPHandTakeBusinessService.class);
|
||||||
|
|
||||||
|
IDHandTakeBusinessService idHandTakeBusinessService= (IDHandTakeBusinessService)NCLocator.getInstance().lookup(IDHandTakeBusinessService.class);
|
||||||
|
|
||||||
|
|
||||||
|
int fprodmode = vo.getParentVO().getFprodmode();
|
||||||
|
AggHandTakeVO takeVO =new AggHandTakeVO();
|
||||||
|
try {
|
||||||
|
if (fprodmode == 1) {
|
||||||
|
takeVO = serv.getPHandOverVO(aggChangeVOs[0]);
|
||||||
|
} else {
|
||||||
|
takeVO = idHandTakeBusinessService.getDHandOverVO(aggChangeVOs[0]);
|
||||||
|
}
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
ExceptionUtils.wrappException(e);
|
||||||
|
}
|
||||||
|
takeVO.getParentVO().setAttributeValue("ncanhandnum",takeVO.getParentVO().getNhandovernum());
|
||||||
|
|
||||||
|
takeVO.getParentVO().setAttributeValue("ncanhandastnum",takeVO.getParentVO().getNhandoverastnum());
|
||||||
|
// AggHandTakeVO takeVO = serv.getPHandOverVO(aggChangeVOs[0]);
|
||||||
|
for (HandTakeBVO handTakeBVO:(HandTakeBVO[])takeVO.getChildrenVO()){
|
||||||
|
|
||||||
|
if(handTakeBVO.getVrcvmocode().isEmpty() || handTakeBVO.getVrcvpickmcode().isEmpty()){
|
||||||
|
throw new BusinessException("没有接受备料计划单号和接受生产订单号,请检查工位半产品是否维护配套子件和完工后续处理生产页签参数");
|
||||||
|
}
|
||||||
|
if(takeVO.getParentVO().getNhandoverastnum().compareTo(UFDouble.ZERO_DBL) ==0){
|
||||||
|
throw new BusinessException("完工数量不能为0");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
handTakeBVO.setNrcvastnum(takeVO.getParentVO().getNhandoverastnum());
|
||||||
|
handTakeBVO.setNrcvnum(takeVO.getParentVO().getNhandovernum());
|
||||||
|
|
||||||
|
handTakeBVO.setNrcvdnum(takeVO.getParentVO().getNhandovernum());
|
||||||
|
handTakeBVO.setNrcvdastnum(takeVO.getParentVO().getNhandovernum());
|
||||||
|
|
||||||
|
String cvwcode="";
|
||||||
|
cvwcode=configParams.get("cvwcode");
|
||||||
|
String sql = "SELECT pk_stordoc FROM bd_stordoc WHERE code = '"+cvwcode+"' AND dr = 0";
|
||||||
|
ArrayList<HashMap<String, Object>> saleMap = (ArrayList<HashMap<String, Object>>)new BaseDAO().executeQuery(sql, new MapListProcessor());
|
||||||
|
if(saleMap.isEmpty()) {
|
||||||
|
throw new BusinessException("未配置移送虚拟仓库");
|
||||||
|
}
|
||||||
|
handTakeBVO.setCrcvwhid(saleMap.get(0).get("pk_stordoc").toString());
|
||||||
|
handTakeBVO.setFrcvstatus(2);
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(handTakeBVO.getCrcvfactoryvid()) && StringUtils.isNotEmpty(handTakeBVO.getCrcvfactoryid())) {
|
||||||
|
for(OrgVO orgVO : OrgVOQueryFacade.getInstance().queryOrgVOByPks(new String[]{handTakeBVO.getCrcvfactoryid()})) {
|
||||||
|
handTakeBVO.setCrcvfactoryvid(orgVO.getPk_vid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
aggHandTakeVOS.add(takeVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
// handTakeMaintainService.insert(aggHandTakeVOS.toArray(new AggHandTakeVO[aggHandTakeVOS.size()]));
|
||||||
|
try {
|
||||||
|
this.validate(aggHandTakeVOS.get(0));
|
||||||
|
} catch (ValidationException e) {
|
||||||
|
ExceptionUtils.wrappException(e);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
this.process(aggHandTakeVOS.get(0));
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
ExceptionUtils.wrappException(e);
|
||||||
|
}
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private boolean checkIfOrg(String code, Map<String, String> configParams) throws BusinessException {
|
||||||
|
String targetCode = configParams.get("gyOrg");
|
||||||
|
if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) {
|
||||||
|
throw new BusinessException("未配置组织参数");
|
||||||
|
}
|
||||||
|
String[] orgItem = targetCode.split(",");
|
||||||
|
for (String orgCode : orgItem) {
|
||||||
|
if (!orgCode.isEmpty() && orgCode.equals(code)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private IPFWorkflowQry getService() {
|
||||||
|
return (IPFWorkflowQry)NCLocator.getInstance().lookup(IPFWorkflowQry.class);
|
||||||
|
}
|
||||||
|
private void loadWrQualityVO(AggWrVO aggWrVO) throws MetaDataException {
|
||||||
|
WrItemVO[] wrItemVOs = aggWrVO.getChildrenVO();
|
||||||
|
|
||||||
|
for(WrItemVO wrItemVO : wrItemVOs) {
|
||||||
|
IMDPersistenceQueryService queryService = (IMDPersistenceQueryService)NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
|
||||||
|
String whereSql = " pk_wr_product_q = '" + wrItemVO.getPk_wr_product() + "' and dr = 0";
|
||||||
|
NCObject[] qualityNCVOs = queryService.queryBillOfNCObjectByCond(WrQualityVO.class, whereSql, false);
|
||||||
|
ArrayList<WrQualityVO> qualityVoList = new ArrayList();
|
||||||
|
if (qualityNCVOs != null && qualityNCVOs.length > 0) {
|
||||||
|
if (qualityNCVOs.length > 1) {
|
||||||
|
ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("5008100_0", "05008100-0035"));
|
||||||
|
}
|
||||||
|
|
||||||
|
for(NCObject qualityNCVO : qualityNCVOs) {
|
||||||
|
if (qualityNCVO.getContainmentObject() instanceof WrQualityVO) {
|
||||||
|
((WrQualityVO)qualityNCVO.getContainmentObject()).setPk_wr_product(wrItemVO.getPk_wr_product());
|
||||||
|
qualityVoList.add((WrQualityVO)qualityNCVO.getContainmentObject());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wrItemVO.setQualityvos((WrQualityVO[])qualityVoList.toArray(new WrQualityVO[0]));
|
||||||
|
} else {
|
||||||
|
wrItemVO.setQualityvos((WrQualityVO[])null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validate(AggWrVO aggWrVO) {
|
||||||
|
if (MMValueCheck.isEmpty(aggWrVO)) {
|
||||||
|
ExceptionUtils.wrappBusinessException(WrptLangConst.getProdinHIT_NOPRODINDATAS());
|
||||||
|
}
|
||||||
|
|
||||||
|
WrItemVO[] wrItemVOs = aggWrVO.getChildrenVO();
|
||||||
|
if (MMValueCheck.isEmpty(wrItemVOs)) {
|
||||||
|
ExceptionUtils.wrappBusinessException(WrptLangConst.getProdinHIT_NOPRODINDATAS());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wrItemVOs.length != 1) {
|
||||||
|
ExceptionUtils.wrappBusinessException(WrptLangConst.ERR_MultyHandOver());
|
||||||
|
}
|
||||||
|
|
||||||
|
WrQualityVO[] wrQualityVOs = wrItemVOs[0].getQualityvos();
|
||||||
|
if (MMValueCheck.isEmpty(wrQualityVOs)) {
|
||||||
|
ExceptionUtils.wrappBusinessException(WrptLangConst.getProdinHIT_NOPRODINDATAS());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wrQualityVOs.length != 1) {
|
||||||
|
ExceptionUtils.wrappBusinessException(WrptLangConst.ERR_MultyHandOver());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!WrQualityProcessMethodEnum.PRODIN.equalsValue(wrQualityVOs[0].getFgprocessmethod())) {
|
||||||
|
ExceptionUtils.wrappBusinessException(WrptLangConst.getHandtakeHIT_ONLYPRODINCANHANDTAKE());
|
||||||
|
}
|
||||||
|
Map<String, UFBoolean> serialFlagMap =isSerialManage(WrVOCommonUtil.groupMaterialByOrg(new AggWrVO[]{aggWrVO}));
|
||||||
|
WrVO var10001 = aggWrVO.getParentVO();
|
||||||
|
if (WrVOCommonUtil.isMapTure(serialFlagMap, var10001 + wrItemVOs[0].getCbmaterialvid())) {
|
||||||
|
String erroMsg = WrptLangConst.WR__SERIL_NOTSURPORTMSG(new String[]{aggWrVO.getParentVO().getVbillcode(), wrItemVOs[0].getVbrowno()});
|
||||||
|
ExceptionUtils.wrappBusinessException(erroMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateSerialManage(AggWrVO[] aggWrVOs) {
|
||||||
|
Map<String, UFBoolean> isSerialMana = isSerialManage(WrVOCommonUtil.groupMaterialByOrg(aggWrVOs));
|
||||||
|
AggWrVO aggWrVO = aggWrVOs[0];
|
||||||
|
WrItemVO itemvo = aggWrVO.getChildrenVO()[0];
|
||||||
|
String pk_org = aggWrVO.getParentVO().getPk_org();
|
||||||
|
String matvid = itemvo.getCbmaterialvid();
|
||||||
|
if (null != isSerialMana && isSerialMana.keySet().contains(pk_org + matvid) && UFBoolean.TRUE.equals(isSerialMana.get(pk_org + matvid))) {
|
||||||
|
ExceptionUtils.wrappBusinessException(WrptLangConst.getSERIALMANAGENOTHANDOVER(new String[]{aggWrVO.getParentVO().getVbillcode(), itemvo.getVbrowno()}));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void moCloseProcess(AggWrVO[] aggWrVOs) {
|
||||||
|
if (aggWrVOs.length == 1) {
|
||||||
|
WrItemVO[] itemVOs = (WrItemVO[])aggWrVOs[0].getChildren(WrItemVO.class);
|
||||||
|
if (null != itemVOs && itemVOs.length == 1) {
|
||||||
|
Map<String, UFBoolean> mapResult = this.isMoCloseMap(aggWrVOs);
|
||||||
|
if (null != mapResult) {
|
||||||
|
if (Integer.valueOf(1).equals(aggWrVOs[0].getParentVO().getFprodmode())) {
|
||||||
|
if (UFBoolean.TRUE.equals(mapResult.get(itemVOs[0].getCbmobid()))) {
|
||||||
|
ExceptionUtils.wrappBusinessException(WrptLangConst.getMOClose_Msg(new String[]{itemVOs[0].getVbmobillcode(), itemVOs[0].getVbmorowno()}));
|
||||||
|
}
|
||||||
|
} else if (Integer.valueOf(2).equals(aggWrVOs[0].getParentVO().getFprodmode()) && UFBoolean.TRUE.equals(mapResult.get(itemVOs[0].getCbmoid()))) {
|
||||||
|
ExceptionUtils.wrappBusinessException(WrptLangConst.getDMOClose_Msg(new String[]{itemVOs[0].getVbmobillcode()}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public Map<String, UFBoolean> isMoCloseMap(AggWrVO[] aggWrVOs) {
|
||||||
|
Map<String, UFBoolean> mapResult = new HashMap();
|
||||||
|
if (MMValueCheck.isEmpty(aggWrVOs)) {
|
||||||
|
return mapResult;
|
||||||
|
} else {
|
||||||
|
MapList<Integer, String> moidByProdMode = new MapList();
|
||||||
|
|
||||||
|
for(AggWrVO aggWrVO : aggWrVOs) {
|
||||||
|
WrItemVO[] itemVOs = (WrItemVO[])aggWrVO.getChildren(WrItemVO.class);
|
||||||
|
if (!MMValueCheck.isEmpty(itemVOs)) {
|
||||||
|
for(WrItemVO itemVO : itemVOs) {
|
||||||
|
if (!MMValueCheck.isEmpty(itemVO.getCbmoid())) {
|
||||||
|
if (Integer.valueOf(1).equals(aggWrVO.getParentVO().getFprodmode())) {
|
||||||
|
moidByProdMode.put(1, itemVO.getCbmobid());
|
||||||
|
} else if (Integer.valueOf(2).equals(aggWrVO.getParentVO().getFprodmode())) {
|
||||||
|
moidByProdMode.put(2, itemVO.getCbmoid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<Map.Entry<Integer, List<String>>> entrySet = moidByProdMode.entrySet();
|
||||||
|
if (MMValueCheck.isEmpty(entrySet)) {
|
||||||
|
return mapResult;
|
||||||
|
} else {
|
||||||
|
List<MoQueryParam4Wr> queryParams = new ArrayList();
|
||||||
|
MoQueryParam4Wr queryParam = null;
|
||||||
|
|
||||||
|
for(Map.Entry<Integer, List<String>> entry : entrySet) {
|
||||||
|
if (!MMValueCheck.isEmpty((Integer)entry.getKey()) && !MMValueCheck.isEmpty((Collection)entry.getValue())) {
|
||||||
|
queryParam = new MoQueryParam4Wr();
|
||||||
|
queryParam.setProdMode((Integer)entry.getKey());
|
||||||
|
queryParam.setIds((String[])((List)entry.getValue()).toArray(new String[0]));
|
||||||
|
queryParams.add(queryParam);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
mapResult = NCLocator.getInstance().lookup(IMoPubService4Wr.class).checkMoClose((MoQueryParam4Wr)queryParams.get(0));
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
ExceptionUtils.wrappException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return mapResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Map<String, UFBoolean> isSerialManage(MapList<String, String> matAndOrgMap) {
|
||||||
|
Set<Map.Entry<String, List<String>>> entrySet = matAndOrgMap.entrySet();
|
||||||
|
Map<String, UFBoolean> serialFlagMap = new HashMap();
|
||||||
|
|
||||||
|
for(Map.Entry<String, List<String>> entry : entrySet) {
|
||||||
|
String org = (String)entry.getKey();
|
||||||
|
List<String> matVids = (List)entry.getValue();
|
||||||
|
if (!MMValueCheck.isEmpty(org) && !MMValueCheck.isEmpty(matVids)) {
|
||||||
|
List<String> needLoadMats = new ArrayList();
|
||||||
|
|
||||||
|
for(String mat : matVids) {
|
||||||
|
if (!serialFlagMap.keySet().contains(org + mat)) {
|
||||||
|
needLoadMats.add(mat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, MaterialStockVO> mrlStockVOArray = queryMaterialStockInfo(needLoadMats, org);
|
||||||
|
|
||||||
|
for(String pk_material : matVids) {
|
||||||
|
if (null != mrlStockVOArray && mrlStockVOArray.size() >= 0 && null != mrlStockVOArray.get(pk_material)) {
|
||||||
|
serialFlagMap.put(org + pk_material, ((MaterialStockVO)mrlStockVOArray.get(pk_material)).getSerialmanaflag());
|
||||||
|
} else {
|
||||||
|
serialFlagMap.put(org + pk_material, UFBoolean.FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return serialFlagMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, MaterialStockVO> queryMaterialStockInfo(List<String> matVids, String org) {
|
||||||
|
Map<String, MaterialStockVO> mrlStockVOArray = null;
|
||||||
|
if (!MMValueCheck.isEmpty(matVids) && !MMValueCheck.isEmpty(org)) {
|
||||||
|
try {
|
||||||
|
mrlStockVOArray = ((IMaterialPubService_C) NCLocator.getInstance().lookup(IMaterialPubService_C.class)).queryMaterialStockInfoByPks((String[])matVids.toArray(new String[0]), org, new String[]{"serialmanaflag", "issinglcheck", "stockbycheck", "sernumunit"});
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
ExceptionUtils.wrappException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return mrlStockVOArray;
|
||||||
|
} else {
|
||||||
|
return mrlStockVOArray;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void validate(AggHandTakeVO aggHandTakeVO) throws ValidationException {
|
||||||
|
List<ValidationFailure> failure = new ArrayList();
|
||||||
|
HandTakeHVO htHead = aggHandTakeVO.getParentVO();
|
||||||
|
HandTakeBVO[] htBodys = (HandTakeBVO[])aggHandTakeVO.getChildren(HandTakeBVO.class);
|
||||||
|
if (!MMValueCheck.isEmpty(htHead) && !MMValueCheck.isEmpty(htBodys)) {
|
||||||
|
UFDouble canHandOverNum = aggHandTakeVO.getParent().getAttributeValue("ncanhandnum") != null ? new UFDouble(aggHandTakeVO.getParent().getAttributeValue("ncanhandnum").toString()) : null;
|
||||||
|
UFDouble canHandOverAstNum = aggHandTakeVO.getParent().getAttributeValue("ncanhandastnum") != null ? new UFDouble(aggHandTakeVO.getParent().getAttributeValue("ncanhandastnum").toString()) : null;
|
||||||
|
UFDouble inNum = UFDouble.ZERO_DBL;
|
||||||
|
UFDouble inAstNum = UFDouble.ZERO_DBL;
|
||||||
|
|
||||||
|
for(HandTakeBVO htBody : htBodys) {
|
||||||
|
String[] billNo = new String[]{htBody.getVrowno()};
|
||||||
|
if (MMValueCheck.isEmpty(htBody.getCrcvfactoryid())) {
|
||||||
|
failure.add(new ValidationFailure(CMMLangConstHandTake.getHandoverFactoryEmpty(billNo)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!MMNumberUtil.isGtZero(htBody.getNrcvastnum())) {
|
||||||
|
failure.add(new ValidationFailure(CMMLangConstHandTake.getHandoverNumZero(billNo)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!MMNumberUtil.isGtZero(htBody.getNrcvnum())) {
|
||||||
|
failure.add(new ValidationFailure(CMMLangConstHandTake.getHandoverNNumZero(billNo)));
|
||||||
|
}
|
||||||
|
|
||||||
|
inAstNum = MMNumberUtil.add(new UFDouble[]{inAstNum, htBody.getNrcvastnum()});
|
||||||
|
inNum = MMNumberUtil.add(new UFDouble[]{inNum, htBody.getNrcvnum()});
|
||||||
|
if (MMNumberUtil.isEqual(inAstNum, canHandOverAstNum) && !MMNumberUtil.isEqual(inNum, canHandOverNum)) {
|
||||||
|
htBody.setNrcvnum(htBody.getNrcvnum().add(canHandOverNum.sub(inNum)));
|
||||||
|
inNum = canHandOverNum;
|
||||||
|
} else if (!MMNumberUtil.isEqual(inAstNum, canHandOverAstNum) && MMNumberUtil.isEqual(inNum, canHandOverNum)) {
|
||||||
|
htBody.setNrcvastnum(MMNumberUtil.add(new UFDouble[]{htBody.getNrcvastnum(), canHandOverAstNum.sub(inAstNum)}));
|
||||||
|
inAstNum = canHandOverAstNum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MMNumberUtil.isLs(canHandOverNum, inNum)) {
|
||||||
|
failure.add(new ValidationFailure(CMMLangConstHandTake.getHandoverNumError()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (failure.size() > 0) {
|
||||||
|
throw new ValidationException(failure);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
failure.add(new ValidationFailure(CMMLangConstHandTake.getHIT_NOBUSDATA()));
|
||||||
|
throw new ValidationException(failure);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean process(AggHandTakeVO aggHandTakeVO) throws BusinessException {
|
||||||
|
HandTakeBVO[] htBodys = (HandTakeBVO[])aggHandTakeVO.getChildren(HandTakeBVO.class);
|
||||||
|
IPHandTakeBusinessService serv = (IPHandTakeBusinessService)NCLocator.getInstance().lookup(IPHandTakeBusinessService.class);
|
||||||
|
|
||||||
|
if (MMValueCheck.isEmpty(htBodys)) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
serv.phandover(aggHandTakeVO);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue