齐套率计算调整
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) { |                     if (agg != null) { | ||||||
|                         SaAnalysisVO analysis = agg.getParentVO(); |                         SaAnalysisVO analysis = agg.getParentVO(); | ||||||
|                         analysis.setNsetsnum(nsetsnum.getNsetsnum()); |                         analysis.setNsetsnum(nsetsnum.getNsetsnum()); | ||||||
|                         // 流程生产订单表体主键 |                         if (isUpdateMatch) { | ||||||
|                         String cdemandbillbid = analysis.getCdemandbillbid(); |                             // 流程生产订单表体主键 | ||||||
|                         // 物料的总行数 |                             String cdemandbillbid = analysis.getCdemandbillbid(); | ||||||
|                         UFDouble goodsnum = nsetsnum.getGoodsnum().setScale(2, UFDouble.ROUND_HALF_UP); |                             // 物料的总行数 | ||||||
|                         // 满足齐套的物料的行数 |                             UFDouble goodsnum = nsetsnum.getGoodsnum().setScale(2, UFDouble.ROUND_HALF_UP); | ||||||
|                         UFDouble pass_goodsnum = nsetsnum.getPass_goodsnum().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); |                             // 齐套率计算=满足的/总数量 | ||||||
|                         // 修改流程生产订单的齐套率、物料的总行数、满足齐套的物料的行数 |                             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, cdemandbillbid); |                             String sql = String.format("update mm_mo set vdef12 = '%s',vdef11 = '%s',vdef4 = '%s' where cmoid = '%s'", | ||||||
|                         try { |                                     goodsnum, pass_goodsnum, rate.toString(), cdemandbillbid); | ||||||
|                             NCCForUAPLogger.debug("sql = " + sql); |                             updateDef4(sql); | ||||||
|                             BaseDAO bd = new BaseDAO(); |  | ||||||
|                             bd.executeUpdate(sql); |  | ||||||
|                         } catch (DAOException e) { |  | ||||||
|                             NCCForUAPLogger.debug("setRewriteNmaterialnum-exp:" + e.getMessage()); |  | ||||||
|                             throw new RuntimeException(e); |  | ||||||
|                         } |                         } | ||||||
| 
 | 
 | ||||||
|                     } |                     } | ||||||
|  | @ -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) { |     private int getLevel(String key) { | ||||||
|         return key.length() == 0 ? 0 : Integer.parseInt(key) - 1; |         return key.length() == 0 ? 0 : Integer.parseInt(key) - 1; | ||||||
|     } |     } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue