diff --git a/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToBuyingreqAction.java b/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToBuyingreqAction.java index 6fa10e8..d778401 100644 --- a/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToBuyingreqAction.java +++ b/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToBuyingreqAction.java @@ -1,9 +1,12 @@ package nccloud.web.mmpac.pickm.action; +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; import nc.itf.ic.m4a.IGeneralInMaintain; import nc.itf.mmpac.pickm.IPickmQueryService; import nc.itf.pu.m20.IPraybillMaintain; import nc.itf.uap.pf.busiflow.PfButtonClickContext; +import nc.jdbc.framework.processor.ColumnProcessor; import nc.util.mmf.busi.service.PFPubService; import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.ic.m4a.entity.GeneralInVO; @@ -30,7 +33,7 @@ import java.util.List; import java.util.Map; /** - * 备料计划转请购单 + * ϼƻת빺 */ public class PickmToBuyingreqAction implements ICommonAction { @Override @@ -38,9 +41,9 @@ public class PickmToBuyingreqAction implements ICommonAction { String read = iRequest.read(); IJson json = JsonFactory.create(); try { - // 获取请求查询信息 + // ȡѯϢ PickmQueryInfoDTO paramDTO = json.fromJson(read, PickmQueryInfoDTO.class); - // 获取主键 + // ȡ String[] cpickmids = paramDTO.getCpickmids(); // String[] cpickmbids = paramDTO.getCpickmbids(); // if (MMValueCheck.isEmpty(cpickmids) && (null == cpickmbids || cpickmbids.length == 0)) { @@ -52,17 +55,33 @@ public class PickmToBuyingreqAction implements ICommonAction { aggVOs = service.queryBillsByPks(cpickmids); } if (MMValueCheck.isEmpty(aggVOs)) { - /*@res "单据已被修改或删除,请刷新界面重新操作!"*/ + /*@res "ѱ޸Ļɾˢ½²"*/ ExceptionUtils.wrapBusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("5008100_0", "05008100-0009")); } // AggPickmVO[] aggPickmVOS=processAggVOs(aggVOs); - // 转换数据 - PraybillVO[] prayVOs = convertToGeneralInVO(processAggVOs(aggVOs), null); + // ת + AggPickmVO[] vos = processAggVOs(aggVOs); + if(vos.length == 0){ + throw new BusinessException("δ⵽빺ݣɣ"); + } + PraybillVO[] prayVOs = convertToGeneralInVO(vos, null); + + List pk =new ArrayList<>(); + for (AggPickmVO prayVO : vos) { + PickmItemVO[] items = (PickmItemVO[]) prayVO.getChildren(PickmItemVO.class); + for (int j=0;j returnMap = new HashMap<>(); returnMap.put("data", insertVos); returnMap.put("success", true); + if(!pk.isEmpty()){ + updetaPmo(pk); + } return returnMap; } catch (Exception e) { ExceptionUtils.wrapException(e); @@ -71,18 +90,18 @@ public class PickmToBuyingreqAction implements ICommonAction { } private PraybillVO[] convertToGeneralInVO(AggregatedValueObject[] sourceBillVOs, PfParameterVO srcParaVo) throws BusinessException { - // 来源交易类型或单据类型,需要在单据类型中注册 + // Դͻ򵥾ͣҪڵע String srcBillOrTranstype = "55A3"; - // 目标交易类型或单据类型,需要在单据类型中注册 + // Ŀ꽻ͻ򵥾ͣҪڵע String destBillOrTranstype = "20"; - // classifyMode int型参数,调用模式,参照PfButtonClickContext中定义,代码中调用为接口方式 ClassifyByItfdef + // classifyMode intͲģʽPfButtonClickContextж壬еΪӿڷʽ ClassifyByItfdef int classifyMode = PfButtonClickContext.ClassifyByItfdef; PraybillVO[] inVOS = (PraybillVO[]) PFPubService.runChangeData(srcBillOrTranstype, destBillOrTranstype, sourceBillVOs, srcParaVo, classifyMode); if (MMValueCheck.isEmpty(inVOS)) { - ExceptionUtils.wrapBusinessException("备料计划转换请购单失败"); + ExceptionUtils.wrapBusinessException("ϼƻת빺ʧ"); } for (PraybillVO inVO : inVOS) { - // 其它入库单的仓库、交易类型取自【业务参数设置】的默认值 + // ⵥIJֿ⡢ȡԡҵáĬֵ PraybillHeaderVO head = inVO.getHVO(); head.setCtrantypeid("0001A110000000001S1E"); // head.setCwarehouseid(""); @@ -90,7 +109,31 @@ public class PickmToBuyingreqAction implements ICommonAction { return inVOS; } - public AggPickmVO[] processAggVOs(AggPickmVO[] aggVOs) { + private void updetaPmo(List arrayList) throws DAOException { + String result = ""; + StringBuilder sb = new StringBuilder(); + if (arrayList.size() > 1) { + for (int i = 0; i < arrayList.size(); i++) { + + + sb.append("'").append(arrayList.get(i)).append("'"); + if (i < arrayList.size() - 1) { + sb.append(","); + } + } + + result = sb.toString(); + } else { + result = "'" + (String) arrayList.get(0) + "'"; + } + String sql = " update mm_pickm_b set vbdef13='Y' where mm_pickm_b.cpickm_bid in(" + result + ")"; + + BaseDAO dao = new BaseDAO(); + dao.executeUpdate(sql); + } + + + public AggPickmVO[] processAggVOs(AggPickmVO[] aggVOs) throws DAOException { Map> groupMap = new HashMap<>(); for (AggPickmVO vo : aggVOs) { @@ -103,17 +146,35 @@ public class PickmToBuyingreqAction implements ICommonAction { for (Map.Entry> entry : groupMap.entrySet()) { List group = entry.getValue(); - // 修改1:使用ISuperVO列表收集子对象 + // ޸1ʹISuperVOбռӶ List mergedChildren = new ArrayList(); for (AggPickmVO vo : group) { PickmItemVO[] items = (PickmItemVO[]) vo.getChildren(PickmItemVO.class); if (items != null) { for (PickmItemVO child : items) { - //只合并项目专用料数据 - if(child.getBprojectmaterial().booleanValue()){ - mergedChildren.add(child); + // δ´ӱ Ϊɹϼƻвɹһ빺 + if(null != child.getVbdef13() && child.getVbdef13().equals("Y") ){ + continue; } - // CircularlyAccessibleValueObject 实现了 ISuperVO + String materalType = child.getVbdef14(); + if(null == materalType){ +// MR=; +// PR=ɹ; + String sql = " select martype from bd_materialstock where pk_material='" + child.getCbmaterialvid() + "' and pk_org='"+child.getPk_org()+"' and dr=0"; + + BaseDAO dao = new BaseDAO(); + materalType = (String) dao.executeQuery(sql, new ColumnProcessor()); + if(null == materalType || "MR".equals(materalType) || "".equals(materalType) ){ + continue; + } + }else if("2".equals(materalType)){ + continue; + } + //ֻϲĿר +// if(child.getBprojectmaterial().booleanValue()){ + mergedChildren.add(child); +// } + // CircularlyAccessibleValueObject ʵ ISuperVO } } } @@ -123,7 +184,7 @@ public class PickmToBuyingreqAction implements ICommonAction { AggPickmVO newVO = new AggPickmVO(); newVO.setParent(group.get(0).getParentVO()); - // 修改2:转换为ISuperVO数组 + // ޸2תΪISuperVO newVO.setChildren(PickmItemVO.class, mergedChildren.toArray(new PickmItemVO[0])); resultList.add(newVO); diff --git a/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToPmo.java b/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToPmo.java index 3083d6e..2e4c648 100644 --- a/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToPmo.java +++ b/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToPmo.java @@ -1,9 +1,12 @@ package nccloud.web.mmpac.pickm.action; +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; import nc.itf.mmpac.pickm.IPickmQueryService; import nc.itf.mmpac.pmo.pac0002.IPMOMaintainService; import nc.itf.pu.m20.IPraybillMaintain; import nc.itf.uap.pf.busiflow.PfButtonClickContext; +import nc.jdbc.framework.processor.ColumnProcessor; import nc.util.mmf.busi.service.PFPubService; import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.mmpac.pickm.entity.AggPickmVO; @@ -35,9 +38,9 @@ public class PickmToPmo implements ICommonAction { String read = iRequest.read(); IJson json = JsonFactory.create(); try { - // 获取请求查询信息 + // ȡѯϢ PickmQueryInfoDTO paramDTO = json.fromJson(read, PickmQueryInfoDTO.class); - // 获取主键 + // ȡ String[] cpickmids = paramDTO.getCpickmids(); // String[] cpickmbids = paramDTO.getCpickmbids(); // if (MMValueCheck.isEmpty(cpickmids) && (null == cpickmbids || cpickmbids.length == 0)) { @@ -49,15 +52,26 @@ public class PickmToPmo implements ICommonAction { aggVOs = service.queryBillsByPks(cpickmids); } if (MMValueCheck.isEmpty(aggVOs)) { - /*@res "单据已被修改或删除,请刷新界面重新操作!"*/ + /*@res "ѱ޸Ļɾˢ½²"*/ ExceptionUtils.wrapBusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("5008100_0", "05008100-0009")); } - - PMOAggVO[] prayVOs = convertToGeneralInVO(processAggVOs(aggVOs), null); + AggPickmVO[] vos = processAggVOs(aggVOs); + if(vos.length == 0){ + throw new BusinessException("δ⵽ݣɣ"); + } + PMOAggVO[] prayVOs = convertToGeneralInVO(vos, null); + List pk =new ArrayList<>(); for (PMOAggVO prayVO : prayVOs) { for (int j=0;j returnMap = new HashMap<>(); returnMap.put("data", insertVos); returnMap.put("success", true); + if(!pk.isEmpty()){ + //дǷ·Ϊ + updetaPmo(pk); + } + return returnMap; } catch (Exception e) { ExceptionUtils.wrapException(e); } return null; } + + private void updetaPmo(List arrayList) throws DAOException { + String result = ""; + StringBuilder sb = new StringBuilder(); + if (arrayList.size() > 1) { + for (int i = 0; i < arrayList.size(); i++) { + + + sb.append("'").append(arrayList.get(i)).append("'"); + if (i < arrayList.size() - 1) { + sb.append(","); + } + } + + result = sb.toString(); + } else { + result = "'" + (String) arrayList.get(0) + "'"; + } + String sql = " update mm_pickm_b set vbdef13='Y' where mm_pickm_b.cpickm_bid in(" + result + ")"; + + BaseDAO dao = new BaseDAO(); + dao.executeUpdate(sql); + } + private PMOAggVO[] convertToGeneralInVO(AggregatedValueObject[] sourceBillVOs, PfParameterVO srcParaVo) throws BusinessException { - // 来源交易类型或单据类型,需要在单据类型中注册 + // Դͻ򵥾ͣҪڵע String srcBillOrTranstype = "55A3"; - // 目标交易类型或单据类型,需要在单据类型中注册 + // Ŀ꽻ͻ򵥾ͣҪڵע String destBillOrTranstype = "55A2"; - // classifyMode int型参数,调用模式,参照PfButtonClickContext中定义,代码中调用为接口方式 ClassifyByItfdef + // classifyMode intͲģʽPfButtonClickContextж壬еΪӿڷʽ ClassifyByItfdef int classifyMode = PfButtonClickContext.ClassifyByItfdef; PMOAggVO[] inVOS = (PMOAggVO[]) PFPubService.runChangeData(srcBillOrTranstype, destBillOrTranstype, sourceBillVOs, srcParaVo, classifyMode); if (MMValueCheck.isEmpty(inVOS)) { - ExceptionUtils.wrapBusinessException("备料计划转换流程生产订单失败"); + ExceptionUtils.wrapBusinessException("ϼƻתʧ"); } for (PMOAggVO inVO : inVOS) { - // 其它入库单的仓库、交易类型取自【业务参数设置】的默认值 + // ⵥIJֿ⡢ȡԡҵáĬֵ PMOHeadVO head = inVO.getParentVO(); head.setCtrantypeid("0001A110000000001S1E"); @@ -96,7 +139,7 @@ public class PickmToPmo implements ICommonAction { return inVOS; } - public AggPickmVO[] processAggVOs(AggPickmVO[] aggVOs) { + public AggPickmVO[] processAggVOs(AggPickmVO[] aggVOs) throws DAOException { Map> groupMap = new HashMap<>(); for (AggPickmVO vo : aggVOs) { @@ -109,17 +152,36 @@ public class PickmToPmo implements ICommonAction { for (Map.Entry> entry : groupMap.entrySet()) { List group = entry.getValue(); - // 修改1:使用ISuperVO列表收集子对象 + // ޸1ʹISuperVOбռӶ List mergedChildren = new ArrayList(); for (AggPickmVO vo : group) { PickmItemVO[] items = (PickmItemVO[]) vo.getChildren(PickmItemVO.class); if (items != null) { for (PickmItemVO child : items) { - //只合并项目专用料数据 + +// δ´ӱ Ϊϼƻһſ״̬ + if(null != child.getVbdef13() && child.getVbdef13().equals("Y") ){ + continue; + } + String materalType = child.getVbdef14(); + if(null == materalType){ +// MR=; +// PR=ɹ; + String sql = " select martype from bd_materialstock where pk_material='" + child.getCbmaterialvid() + "' and pk_org='"+child.getPk_org()+"' and dr=0"; + + BaseDAO dao = new BaseDAO(); + materalType = (String) dao.executeQuery(sql, new ColumnProcessor()); + if(null == materalType || "PR".equals(materalType) || "".equals(materalType) ){ + continue; + } + }else if("1".equals(materalType)){ + continue; + } + //ֻϲĿר if(child.getBprojectmaterial().booleanValue()){ mergedChildren.add(child); } - // CircularlyAccessibleValueObject 实现了 ISuperVO + // CircularlyAccessibleValueObject ʵ ISuperVO } } } @@ -129,7 +191,7 @@ public class PickmToPmo implements ICommonAction { AggPickmVO newVO = new AggPickmVO(); newVO.setParent(group.get(0).getParentVO()); - // 修改2:转换为ISuperVO数组 + // ޸2תΪISuperVO newVO.setChildren(PickmItemVO.class, mergedChildren.toArray(new PickmItemVO[0])); resultList.add(newVO);