From ee338de1dab4ec3e4f1d7af84403bd91e714e9ba Mon Sep 17 00:00:00 2001 From: lihao Date: Fri, 29 Aug 2025 10:30:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E6=96=99=E8=AE=A1=E5=88=92=E4=B8=8B?= =?UTF-8?q?=E8=BE=BE=E8=AF=B7=E8=B4=AD=E5=92=8C=E7=94=9F=E4=BA=A7=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=97=B6=E5=A6=82=E6=9E=9Cbom=E4=B8=AD=E6=9F=A5?= =?UTF-8?q?=E4=B8=8D=E5=88=B0=E5=AD=90=E8=A1=A8=E7=89=A9=E6=96=99=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=AD=97=E6=AE=B5=E5=B0=B1=E6=A0=B9=E6=8D=AEbom?= =?UTF-8?q?=E5=AD=90=E8=A1=A8=E8=99=9A=E9=A1=B9=E7=89=A9=E6=96=99=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E4=BA=8C=E6=AC=A1=E6=9F=A5=E8=AF=A2bom=20=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=99=9A=E9=A1=B9=E7=89=A9=E6=96=99=E5=AD=90=E8=A1=A8?= =?UTF-8?q?=E6=97=B6=E5=80=99=E5=8C=85=E5=90=AB=E7=89=A9=E6=96=99=E5=92=8C?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=89=A9=E6=96=99=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pickm/action/PickmToBuyingreqAction.java | 74 +++++++++++++++++-- .../web/mmpac/pickm/action/PickmToPmo.java | 60 +++++++++++++-- 2 files changed, 124 insertions(+), 10 deletions(-) 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 ad823a0..cc6e952 100644 --- a/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToBuyingreqAction.java +++ b/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToBuyingreqAction.java @@ -8,18 +8,23 @@ 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.jdbc.framework.processor.MapListProcessor; import nc.util.mmf.busi.service.PFPubService; import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.ic.m4a.entity.GeneralInVO; import nc.vo.mmpac.pickm.entity.AggPickmVO; +import nc.vo.mmpac.pickm.entity.PickmHeadVO; import nc.vo.mmpac.pickm.entity.PickmItemVO; import nc.vo.pu.m20.entity.PraybillHeaderVO; +import nc.vo.pu.m20.entity.PraybillItemVO; import nc.vo.pu.m20.entity.PraybillVO; import nc.vo.pub.AggregatedValueObject; import nc.vo.pub.BusinessException; import nc.vo.pub.CircularlyAccessibleValueObject; import nc.vo.pub.ISuperVO; import nc.vo.pub.compiler.PfParameterVO; +import nc.vo.pub.lang.UFDouble; +import nccloud.api.rest.utils.ResultMessageUtil; import nccloud.dto.mmpac.pickm.pub.entity.PickmQueryInfoDTO; import nccloud.framework.core.exception.ExceptionUtils; import nccloud.framework.core.json.IJson; @@ -66,11 +71,23 @@ public class PickmToBuyingreqAction implements ICommonAction { throw new BusinessException("未检测到符合生成请购单数据,不能生成!"); } PraybillVO[] prayVOs = convertToGeneralInVO(vos, null); + List> updateList = new ArrayList<>(); + for (PraybillVO prayVO : prayVOs) { + for (int j=0;j map = new HashMap<>(); + PraybillItemVO praybillItemVO= (PraybillItemVO) prayVO.getChildrenVO()[j]; + map.put("num",praybillItemVO.getNastnum()); + map.put("pk",praybillItemVO.getCfirstbid()); + updateList.add(map); + } + + } List pk =new ArrayList<>(); for (AggPickmVO prayVO : vos) { PickmItemVO[] items = (PickmItemVO[]) prayVO.getChildren(PickmItemVO.class); for (int j=0;j> updateList) throws DAOException { + BaseDAO dao = new BaseDAO(); + for (Map updateMap : updateList) { + String sql = " update mm_pickm_b set vbdef16 = '"+((UFDouble)updateMap.get("num")).toString()+"' where mm_pickm_b.cpickm_bid ='" + updateMap.get("pk") + "'"; + + dao.executeUpdate(sql); + } + + } private PraybillVO[] convertToGeneralInVO(AggregatedValueObject[] sourceBillVOs, PfParameterVO srcParaVo) throws BusinessException { @@ -168,7 +203,17 @@ public class PickmToBuyingreqAction implements ICommonAction { for (PickmItemVO child : items) { // 未下达子表 切 若物料类型为“采购件”,则备料计划中所有采购件生成一张请购单 if(null != child.getVbdef13() && child.getVbdef13().equals("Y") ){ - continue; +// 如果已经下达数量 大于等于 需要下达数量 则不可继续下达 + if(null==child.getVbdef16() || (new UFDouble(child.getVbdef16()).compareTo(child.getNplanoutnum().sub(null!=child.getNaccoutastnum() ?child.getNaccoutastnum():UFDouble.ZERO_DBL)) >=0)){ + continue; + }else{ + + } +// if(new UFDouble(child.getVbdef16()).compareTo(child.getNplanoutnum().add(child.getNaccoutastnum())) >0){ +// +// }else{ +// +// } } String materalType = child.getVbdef14(); if(null == materalType){ @@ -196,7 +241,26 @@ public class PickmToBuyingreqAction implements ICommonAction { // MR=制造件; // PR=采购件; - + if(null==bomcode){ + String secondsql=" SELECT\n" + + "\n" + + " bd_defdoc.code\n" + + "FROM\n" + + " bd_bom_b \n" + + " LEFT JOIN bd_defdoc ON bd_bom_b.vdef1 = bd_defdoc.pk_defdoc\n" + + "WHERE\n" + + " bd_bom_b.cbomid in (select bd_bom.cbomid from bd_bom bd_bom WHERE bd_bom.pk_org = '"+child.getPk_org()+"' and bd_bom.hcmaterialid in (SELECT\n" + + " bd_bom_b.cmaterialvid \n" + + "FROM\n" + + " bd_bom_b \n" + + " LEFT JOIN bd_defdoc ON bd_bom_b.vdef1 = bd_defdoc.pk_defdoc\n" + + "WHERE\n" + + " bd_bom_b.cbomid in (select distinct bd_bom.cbomid from bd_bom bd_bom where ( bd_bom.pk_org = '"+child.getPk_org()+"' AND bd_bom.hcmaterialid = '"+hmateral+"' AND bd_bom.hfbomcategory = 1 AND bd_bom.hbcustomized = 'N' ) and bd_bom.dr = 0 and bd_bom.hbcustomized = 'N' and bd_bom.fbomtype != 3 ) \n" + + "AND bisvirtual='Y') AND bd_bom.hfbomcategory = 1 AND bd_bom.hbcustomized = 'N' and bd_bom.dr = 0 and bd_bom.hbcustomized = 'N' and bd_bom.fbomtype != 3 ) \n" + + " AND \n" + + " bd_bom_b.dr = 0 and bd_bom_b.cmaterialvid='"+child.getCbmaterialvid()+"'"; + bomcode = (String) dao.executeQuery(secondsql, new ColumnProcessor()); + } if(null != bomcode && "2".equals(bomcode) ){ // sql = " select martype from bd_materialstock where pk_material='" + child.getCbmaterialvid() + "' and pk_org='"+child.getPk_org()+"' and dr=0"; // String matType = (String) dao.executeQuery(sql, new ColumnProcessor()); 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 c796e51..ea52a3b 100644 --- a/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToPmo.java +++ b/mmpac/src/client/nccloud/web/mmpac/pickm/action/PickmToPmo.java @@ -24,6 +24,8 @@ import nc.vo.pub.BusinessException; import nc.vo.pub.compiler.PfParameterVO; import nc.vo.pub.lang.Calendars; import nc.vo.pub.lang.UFDateTime; +import nc.vo.pub.lang.UFDouble; +import nccloud.api.rest.utils.ResultMessageUtil; import nccloud.dto.mmpac.pickm.pub.entity.PickmQueryInfoDTO; import nccloud.framework.core.exception.ExceptionUtils; import nccloud.framework.core.json.IJson; @@ -64,9 +66,14 @@ public class PickmToPmo implements ICommonAction { } PMOAggVO[] prayVOs = convertToGeneralInVO(vos, null); List pk =new ArrayList<>(); + List> updateList = new ArrayList<>(); for (PMOAggVO prayVO : prayVOs) { for (int j=0;j map = new HashMap<>(); prayVO.getChildrenVO()[j].setVrowno(String.valueOf(j*10+10)); + map.put("num",prayVO.getChildrenVO()[j].getNastnum()); + map.put("pk",prayVO.getChildrenVO()[j].getVsrcbid()); + updateList.add(map); pk.add(prayVO.getChildrenVO()[j].getCmoid()); } } @@ -85,12 +92,31 @@ public class PickmToPmo implements ICommonAction { //回写是否下方为是 updetaPmo(pk); } + if(!updateList.isEmpty()){ +// 回写已经下达数量 + updetaPmoNum(updateList); + } return returnMap; - } catch (Exception e) { - ExceptionUtils.wrapException(e); + }catch (BusinessException e) { + try { + throw new BusinessException(e.getMessage()); + } catch (BusinessException ex) { + throw new RuntimeException(ex); + } } - return null; +// return null; + } + + private void updetaPmoNum(List> updateList) throws DAOException { + BaseDAO dao = new BaseDAO(); + for (Map updateMap : updateList) { + String sql = " update mm_pickm_b set vbdef16 = '"+((UFDouble)updateMap.get("num")).toString()+"' where mm_pickm_b.cpickm_bid ='" + updateMap.get("pk") + "'"; + + dao.executeUpdate(sql); + } + + } private void updetaPmo(List arrayList) throws DAOException { @@ -216,7 +242,12 @@ public class PickmToPmo implements ICommonAction { // 未下达子表 切 若物料类型为“制造件”,则备料计划中所有制造件件生成一张开立状态的流程生产订单 if(null != child.getVbdef13() && child.getVbdef13().equals("Y") ){ - continue; +// continue; + if(null==child.getVbdef16() || (new UFDouble(child.getVbdef16()).compareTo(child.getNplanoutnum().sub(null!=child.getNaccoutastnum() ?child.getNaccoutastnum():UFDouble.ZERO_DBL)) >=0)){ + continue; + }else{ + + } } String rowno=child.getVrowno(); String materalType = child.getVbdef14(); @@ -243,7 +274,26 @@ public class PickmToPmo implements ICommonAction { // MR=制造件; // PR=采购件; - + if(null==bomcode){ + String secondsql=" SELECT\n" + + "\n" + + " bd_defdoc.code\n" + + "FROM\n" + + " bd_bom_b \n" + + " LEFT JOIN bd_defdoc ON bd_bom_b.vdef1 = bd_defdoc.pk_defdoc\n" + + "WHERE\n" + + " bd_bom_b.cbomid in (select bd_bom.cbomid from bd_bom bd_bom WHERE bd_bom.pk_org = '"+child.getPk_org()+"' and bd_bom.hcmaterialid in (SELECT\n" + + " bd_bom_b.cmaterialvid \n" + + "FROM\n" + + " bd_bom_b \n" + + " LEFT JOIN bd_defdoc ON bd_bom_b.vdef1 = bd_defdoc.pk_defdoc\n" + + "WHERE\n" + + " bd_bom_b.cbomid in (select distinct bd_bom.cbomid from bd_bom bd_bom where ( bd_bom.pk_org = '"+child.getPk_org()+"' AND bd_bom.hcmaterialid = '"+hmateral+"' AND bd_bom.hfbomcategory = 1 AND bd_bom.hbcustomized = 'N' ) and bd_bom.dr = 0 and bd_bom.hbcustomized = 'N' and bd_bom.fbomtype != 3 ) \n" + + "AND bisvirtual='Y') AND bd_bom.hfbomcategory = 1 AND bd_bom.hbcustomized = 'N' and bd_bom.dr = 0 and bd_bom.hbcustomized = 'N' and bd_bom.fbomtype != 3 ) \n" + + " AND \n" + + " bd_bom_b.dr = 0 and bd_bom_b.cmaterialvid='"+child.getCbmaterialvid()+"'"; + bomcode = (String) dao.executeQuery(secondsql, new ColumnProcessor()); + } if(null != bomcode && "1".equals(bomcode) ){ }else if(null != bomcode && "2".equals(bomcode)){