齐套率计算调整
This commit is contained in:
		
							parent
							
								
									0eb0cd5c3c
								
							
						
					
					
						commit
						c1aa00cbcb
					
				|  | @ -0,0 +1,88 @@ | |||
| // | ||||
| // Source code recreated from a .class file by IntelliJ IDEA | ||||
| // (powered by FernFlower decompiler) | ||||
| // | ||||
| 
 | ||||
| package nc.bs.mmpub.setanalysis.bp; | ||||
| 
 | ||||
| import nc.bs.mmpub.setanalysis.bp.log.SaMemoryBP; | ||||
| import nc.bs.mmpub.setanalysis.bp.rule.analysisAfterCheckRule; | ||||
| import nc.bs.mmpub.setanalysis.bp.utils.SaLogger; | ||||
| import nc.bs.mmpub.setanalysis.bp.utils.SaScaleUtil; | ||||
| import nc.bs.mmpub.setanalysis.bp.utils.SaVOUtils; | ||||
| import nc.bs.mmpub.setanalysis.proxy.SaServiceProxy; | ||||
| import nc.bs.mmpub.setanalysis.rule.SaCheckTsRule; | ||||
| import nc.vo.mmpub.setanalysis.entity.AggAnalysisVO; | ||||
| import nc.vo.mmpub.setanalysis.entity.SaAnalysisVO; | ||||
| import nc.vo.mmpub.setanalysis.entity.SaContext; | ||||
| import nc.vo.mmpub.setanalysis.utils.SaMeasureUtil; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.lang.UFDateTime; | ||||
| import nc.vo.pubapp.pattern.exception.ExceptionUtils; | ||||
| 
 | ||||
| public class SetAnalysisBP { | ||||
| 
 | ||||
|     private SaContext context; | ||||
| 
 | ||||
|     public SetAnalysisBP(SaContext context) { | ||||
|         this.context = context; | ||||
|     } | ||||
| 
 | ||||
|     public AggAnalysisVO[] doSetAnalysis() { | ||||
|         try { | ||||
|             this.addBeforeRule(); | ||||
|             SaLogger.init(); | ||||
|             UFDateTime tstarttime1 = new UFDateTime(); | ||||
|             SaLogger.debug("0.分析开始^^^^^^^^^^^^^^^^^^^^^^^^^^"); | ||||
|             this.createMd5Function(); | ||||
|             UFDateTime tstarttime2 = new UFDateTime(); | ||||
|             SaLogger.debug("1.收集数据"); | ||||
|             SaMemoryBP.printMemory(); | ||||
|             SaServiceProxy.getAnalysisService().gather_RequiresNew(this.context); | ||||
|             SaLogger.debug("数据收集共耗时:" + SaLogger.getRunTime(tstarttime2)); | ||||
|             UFDateTime tstarttime3 = new UFDateTime(); | ||||
|             SaLogger.debug("2.执行匹配开始"); | ||||
|             SaServiceProxy.getAnalysisService().match_RequiresNew(this.context); | ||||
|             SaLogger.debug("匹配共耗时:" + SaLogger.getRunTime(tstarttime3)); | ||||
|             UFDateTime tstarttime4 = new UFDateTime(); | ||||
|             SaLogger.debug("3.反算齐套开始"); | ||||
|             SaServiceProxy.getAnalysisService().multiStorey_RequiresNew(this.context); | ||||
|             SaLogger.debug("反算齐套结束,共耗时:" + SaLogger.getRunTime(tstarttime4)); | ||||
|             SaMemoryBP.printMemory(); | ||||
|             this.result(this.context.getAggs()); | ||||
|             //分析后调用回写,齐套率计算方式已调整,此处不用,注释analysisAfterCheckRule | ||||
|             // this.analysisAfterCheckRule(); | ||||
|             SaLogger.debug("齐套分析算法结束,共耗时:" + SaLogger.getRunTime(tstarttime1)); | ||||
|             return this.context.getAggs(); | ||||
|         } catch (BusinessException var5) { | ||||
|             ExceptionUtils.wrappException(var5); | ||||
|             SaLogger.error(var5.getMessage()); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private void printMemory(String operation) { | ||||
|         long totalMemory = Runtime.getRuntime().totalMemory() / 1024L / 1024L; | ||||
|         long freeMemory = Runtime.getRuntime().freeMemory() / 1024L / 1024L; | ||||
|         SaLogger.debug(operation + ":totalMemory->" + totalMemory + "MB,freeMemory->" + freeMemory + "MB"); | ||||
|     } | ||||
| 
 | ||||
|     private void createMd5Function() { | ||||
|         (new SaFunctionBP()).createMD5(); | ||||
|     } | ||||
| 
 | ||||
|     private void result(AggAnalysisVO[] aggs) { | ||||
|         SaScaleUtil scale = new SaScaleUtil(); | ||||
|         SaAnalysisVO[] savos = SaVOUtils.construcVOs(aggs); | ||||
|         scale.setScaleSuperVOs(savos, "cmeasureid", new String[]{"nsetsnum"}); | ||||
|         SaMeasureUtil.setAnalysisAssNum(aggs); | ||||
|     } | ||||
| 
 | ||||
|     private void addBeforeRule() { | ||||
|         (new SaCheckTsRule()).process(this.context.getAggs()); | ||||
|     } | ||||
| 
 | ||||
|     private void analysisAfterCheckRule() { | ||||
|         (new analysisAfterCheckRule()).process(this.context.getAggs()); | ||||
|     } | ||||
| } | ||||
|  | @ -182,24 +182,19 @@ public class SaMultiStoreyBP { | |||
|                     if (agg != null) { | ||||
|                         SaAnalysisVO analysis = agg.getParentVO(); | ||||
|                         analysis.setNsetsnum(nsetsnum.getNsetsnum()); | ||||
|                         // 流程生产订单表体主键 | ||||
|                         String cdemandbillbid = analysis.getCdemandbillbid(); | ||||
|                         // 物料的总行数 | ||||
|                         UFDouble goodsnum = nsetsnum.getGoodsnum().setScale(2, UFDouble.ROUND_HALF_UP); | ||||
|                         // 满足齐套的物料的行数 | ||||
|                         UFDouble pass_goodsnum = nsetsnum.getPass_goodsnum().setScale(2, UFDouble.ROUND_HALF_UP); | ||||
|                         // 齐套率计算=满足的/总数量 | ||||
|                         UFDouble rate = pass_goodsnum.div(goodsnum, 4, UFDouble.ROUND_HALF_UP); | ||||
|                         // 修改流程生产订单的齐套率、物料的总行数、满足齐套的物料的行数 | ||||
|                         String sql = String.format("update mm_mo set vdef12 = '%s',vdef11 = '%s',vdef4 = '%s' where cmoid = '%s'", | ||||
|                                 goodsnum, pass_goodsnum, rate, cdemandbillbid); | ||||
|                         try { | ||||
|                             NCCForUAPLogger.debug("sql = " + sql); | ||||
|                             BaseDAO bd = new BaseDAO(); | ||||
|                             bd.executeUpdate(sql); | ||||
|                         } catch (DAOException e) { | ||||
|                             NCCForUAPLogger.debug("setRewriteNmaterialnum-exp:" + e.getMessage()); | ||||
|                             throw new RuntimeException(e); | ||||
|                         if (isUpdateMatch) { | ||||
|                             // 流程生产订单表体主键 | ||||
|                             String cdemandbillbid = analysis.getCdemandbillbid(); | ||||
|                             // 物料的总行数 | ||||
|                             UFDouble goodsnum = nsetsnum.getGoodsnum().setScale(2, UFDouble.ROUND_HALF_UP); | ||||
|                             // 满足齐套的物料的行数 | ||||
|                             UFDouble pass_goodsnum = nsetsnum.getPass_goodsnum().setScale(2, UFDouble.ROUND_HALF_UP); | ||||
|                             // 齐套率计算=满足的/总数量 | ||||
|                             UFDouble rate = pass_goodsnum.div(goodsnum, 2, UFDouble.ROUND_HALF_UP); | ||||
|                             // 修改流程生产订单的齐套率、物料的总行数、满足齐套的物料的行数 | ||||
|                             String sql = String.format("update mm_mo set vdef12 = '%s',vdef11 = '%s',vdef4 = '%s' where cmoid = '%s'", | ||||
|                                     goodsnum, pass_goodsnum, rate.toString(), cdemandbillbid); | ||||
|                             updateDef4(sql); | ||||
|                         } | ||||
| 
 | ||||
|                     } | ||||
|  | @ -218,6 +213,17 @@ public class SaMultiStoreyBP { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private int updateDef4(String sql) { | ||||
|         try { | ||||
|             NCCForUAPLogger.debug("sql = " + sql); | ||||
|             BaseDAO baseDAO = new BaseDAO(); | ||||
|             return baseDAO.executeUpdate(sql); | ||||
|         } catch (DAOException e) { | ||||
|             NCCForUAPLogger.debug("setRewriteNmaterialnum-exp:" + e.getMessage()); | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private int getLevel(String key) { | ||||
|         return key.length() == 0 ? 0 : Integer.parseInt(key) - 1; | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue