diff --git a/mmpac/src/private/nc/pubimpl/mmpac/pmo/wr/PublicPMOService4WrImpl.java b/mmpac/src/private/nc/pubimpl/mmpac/pmo/wr/PublicPMOService4WrImpl.java index b5973d20..1ca31310 100644 --- a/mmpac/src/private/nc/pubimpl/mmpac/pmo/wr/PublicPMOService4WrImpl.java +++ b/mmpac/src/private/nc/pubimpl/mmpac/pmo/wr/PublicPMOService4WrImpl.java @@ -24,6 +24,7 @@ import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPCalUtil; import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil; import nc.bs.mmpac.pmo.pac0002.rule.PMOATPUpdateRule; import nc.bs.pubapp.AppBsContext; +import nc.bs.uapbd.util.MyHelper; import nc.impl.pubapp.pattern.data.vo.VOQuery; import nc.impl.pubapp.pattern.data.vo.tool.VOConcurrentTool; import nc.itf.uap.IUAPQueryBS; @@ -41,6 +42,7 @@ import nc.util.mmf.framework.db.MMSqlBuilder; import nc.util.mmf.framework.db.MMTempTable; import nc.util.mmf.framework.gc.GCBillTransferTool; import nc.util.mmf.framework.gc.GCBillUpdate; +import nc.vo.bd.material.MaterialVO; import nc.vo.mmpac.pickm.entity.PickmHeadVO; import nc.vo.mmpac.pickm.entity.PickmItemVO; import nc.vo.mmpac.pmo.pac0002.constant.PMOConstLang; @@ -241,6 +243,43 @@ public class PublicPMOService4WrImpl implements IPublicPMOService4Wr { PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid()); UFBoolean autoFlag = (UFBoolean)autodonepara.get(head.getCtrantypeid()); if (autoFlag.booleanValue()) { + BaseDAO dao = new BaseDAO(); + // 查询备料计划 如果下游备料计划未出库数量(计划出库-累计出库)小于0,生产订单自动完工取消 naccoutnum 累计出库数量 nplanoutnum计划出库 + String pickmsql = "select cbmaterialvid,vrowno,nplanoutnum,naccoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0) and dr = 0"; + List> hmateral = (List>) dao.executeQuery(pickmsql, new MapListProcessor()); + List vrownos = new ArrayList(); + List> maps = new ArrayList(); + + Boolean l=false; + for (Map map : hmateral) { + String material =MaterialVO.CODE+","+MaterialVO.NAME+","+MaterialVO.OUTTOLERANCE; + // 物料出库容差 % 0.0000 + Map goodsMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), material, MaterialVO.PK_MATERIAL, item.getCmaterialvid()); + String Outtolerance= null !=goodsMap.get("outtolerance") ? goodsMap.get("outtolerance").toString() : "0"; + if(null != map.get("nplanoutnum") && null != map.get("naccoutnum") && (new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs()).compareTo(new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).multiply(new UFDouble(String.valueOf(Outtolerance.toString())))) > 0) { + l=true; + Map map1 =new HashMap<>(); + map1.put("vrowno",map.get("vrowno").toString()); + map1.put("mrlname",goodsMap.get("name").toString()); + map1.put("mrlcode",goodsMap.get("code").toString()); + maps.add(map1); + } + } + if(l){ + // String pickm = " select vbillcode,cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0"; + // List> pickms = (List>) dao.executeQuery(pickm, new MapListProcessor()); + String err=""; + for (Map vrowno : maps) { + String pmobillcode= head.getVbillcode(); + String pmovrowno= item.getVrowno(); + // String pickmbillcode= pickms.get(0).get("vbillcode").toString(); + String pickmvrowno= vrowno.get("vrowno").toString(); + String mrlname= vrowno.get("mrlname").toString(); + String mrlcode= vrowno.get("mrlcode").toString(); + err=err+"生产订单"+pmobillcode+"行"+pmovrowno+"的备料计划行"+pickmvrowno+"物料【"+mrlcode+","+mrlname+"】检查不通过\n"; + } + throw new BusinessException(err); + } item.setFitemstatus(Integer.valueOf(PMOFItemStatusEnum.FINISH.getEnumValue().getValue())); item.setTactendtime(new UFDateTime(AppBsContext.getInstance().getBusiDate().toPersisted())); item.setStatus(1); @@ -262,23 +301,50 @@ public class PublicPMOService4WrImpl implements IPublicPMOService4Wr { } if (totalWRnum.doubleValue() >= compareplanputnum.doubleValue() && !MMMapUtil.isEmpty(autodonepara)) { - BaseDAO dao = new BaseDAO(); -// 查询备料计划 如果下游备料计划未出库数量(计划出库-累计出库)小于0,生产订单自动完工取消 naccoutnum 累计出库数量 nplanoutnum计划出库 - String pickmsql = "select nplanoutnum,naccoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0) and dr = 0"; - List> hmateral = (List>) dao.executeQuery(pickmsql, new MapListProcessor()); - Boolean l=false; - for (Map map : hmateral) { - if(null != map.get("nplanoutnum") && null != map.get("naccoutnum") && new UFDouble(String.valueOf(map.get("nplanoutnum"))).sub(new UFDouble(String.valueOf(map.get("naccoutnum")))).compareTo(UFDouble.ZERO_DBL) <0) { - l=true; - } - } - if(l){ - continue; - } + PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid()); UFBoolean autoFlag = (UFBoolean)autodonepara.get(head.getCtrantypeid()); if (autoFlag.booleanValue()) { + BaseDAO dao = new BaseDAO(); + // 查询备料计划 如果下游备料计划未出库数量(计划出库-累计出库)小于0,生产订单自动完工取消 naccoutnum 累计出库数量 nplanoutnum计划出库 + String pickmsql = "select cbmaterialvid,vrowno,nplanoutnum,naccoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0) and dr = 0"; + List> hmateral = (List>) dao.executeQuery(pickmsql, new MapListProcessor()); + List vrownos = new ArrayList(); + List> maps = new ArrayList(); + + Boolean l=false; + for (Map map : hmateral) { + String material =MaterialVO.CODE+","+MaterialVO.NAME+","+MaterialVO.OUTTOLERANCE; + // 物料出库容差 % 0.0000 + Map goodsMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), material, MaterialVO.PK_MATERIAL, item.getCmaterialvid()); + String Outtolerance= null !=goodsMap.get("outtolerance") ? goodsMap.get("outtolerance").toString() : "0"; + if(null != map.get("nplanoutnum") && null != map.get("naccoutnum") && (new UFDouble(map.get("nplanoutnum").toString()).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs()).compareTo(new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).multiply(new UFDouble(String.valueOf(Outtolerance.toString())))) > 0) { + UFDouble num1 = new UFDouble(map.get("nplanoutnum").toString()).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs(); + + l=true; + Map map1 =new HashMap<>(); + map1.put("vrowno",map.get("vrowno").toString()); + map1.put("mrlname",goodsMap.get("name").toString()); + map1.put("mrlcode",goodsMap.get("code").toString()); + maps.add(map1); + } + } + if(l){ + // String pickm = " select vbillcode,cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0"; + // List> pickms = (List>) dao.executeQuery(pickm, new MapListProcessor()); + String err=""; + for (Map vrowno : maps) { + String pmobillcode= head.getVbillcode(); + String pmovrowno= item.getVrowno(); + // String pickmbillcode= pickms.get(0).get("vbillcode").toString(); + String pickmvrowno= vrowno.get("vrowno").toString(); + String mrlname= vrowno.get("mrlname").toString(); + String mrlcode= vrowno.get("mrlcode").toString(); + err=err+"生产订单"+pmobillcode+"行"+pmovrowno+"的备料计划行"+pickmvrowno+"物料【"+mrlcode+","+mrlname+"】检查不通过\n"; + } + throw new BusinessException(err); + } item.setFitemstatus(Integer.valueOf(PMOFItemStatusEnum.FINISH.getEnumValue().getValue())); item.setTactendtime(new UFDateTime(AppBsContext.getInstance().getBusiDate().toPersisted())); item.setStatus(1);