增加mmpub模块,增加齐套算法

This commit is contained in:
zhangxinah@yonyou.com 2025-03-26 15:10:45 +08:00
parent 3deeda5d52
commit 55e7646ebc
25 changed files with 138 additions and 0 deletions

View File

@ -1,5 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="bin" path="mmpub/src/public"/>
<classpathentry kind="src" output="bin" path="mmpub/src/client"/>
<classpathentry kind="src" output="bin" path="mmpub/src/private"/>
<classpathentry kind="src" output="bin" path="mmpub/src/test"/>
<classpathentry kind="src" output="bin" path="mmpub/resources"/>
<classpathentry kind="src" output="bin" path="sscivm/src/public"/>
<classpathentry kind="src" output="bin" path="sscivm/src/client"/>
<classpathentry kind="src" output="bin" path="sscivm/src/private"/>

0
mmpub/META-INF/.gitkeep Normal file
View File

0
mmpub/METADATA/.gitkeep Normal file
View File

3
mmpub/component.xml Normal file
View File

@ -0,0 +1,3 @@
<component name="mmpub" displayname="mmpub">
<dependencies/>
</component>

View File

View File

View File

View File

View File

View File

View File

View File

0
mmpub/doc/.gitkeep Normal file
View File

0
mmpub/resources/.gitkeep Normal file
View File

View File

View File

View File

View File

View File

View File

View File

@ -0,0 +1,85 @@
package nc.bs.mmpub.setanalysis.bp;
import nc.bs.mmpub.setanalysis.bp.log.SaMemoryBP;
import nc.bs.mmpub.setanalysis.bp.utils.SaLogger;
import nc.bs.mmpub.setanalysis.proxy.SaServiceProxy;
import nc.vo.mmpub.setanalysis.entity.AggAnalysisVO;
import nc.vo.mmpub.setanalysis.entity.SaContext;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.bs.mmpub.setanalysis.bp.rule.analysisAfterCheckRule;
import nc.vo.mmpub.setanalysis.entity.SaAnalysisVO;
import nc.vo.mmpub.setanalysis.utils.SaMeasureUtil;
import nc.bs.mmpub.setanalysis.bp.utils.SaScaleUtil;
import nc.bs.mmpub.setanalysis.bp.utils.SaVOUtils;
public class SetAnalysisBP {
private SaContext context;
public SetAnalysisBP(SaContext context) {
this.context = context;
}
public AggAnalysisVO[] doSetAnalysis() {
try {
addBeforeRule();
SaLogger.init();
UFDateTime tstarttime1 = new UFDateTime();
SaLogger.debug("0.分析开始^^^^^^^^^^^^^^^^^^^^^^^^^^");
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());
this.analysisAfterCheckRule();// 分析后调用回写
SaLogger.debug("齐套分析算法结束,共耗时:" + SaLogger.getRunTime(tstarttime1));
return this.context.getAggs();
} catch (BusinessException e) {
ExceptionUtils.wrappException(e);
SaLogger.error(e.getMessage());
return null;
}
}
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 printMemory(String operation) {
long totalMemory = Runtime.getRuntime().totalMemory() / 1024L / 1024L;
long freeMemory = Runtime.getRuntime().freeMemory() / 1024L / 1024L;
SaLogger.debug(operation + ":totalMemory->" + operation + "MB,freeMemory->" + totalMemory + "MB");
}
private void createMd5Function() {
(new SaFunctionBP()).createMD5();
}
private void addBeforeRule() {
}
private void analysisAfterCheckRule() {
(new analysisAfterCheckRule()).process(this.context.getAggs());
}
}

View File

@ -0,0 +1,45 @@
package nc.bs.mmpub.setanalysis.bp.rule;
import nc.bs.dao.BaseDAO;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.vo.mmpub.setanalysis.entity.AggAnalysisVO;
import nc.vo.mmpub.setanalysis.entity.SaAnalysisVO;
import nc.vo.pub.BusinessException;
public class analysisAfterCheckRule implements IRule<AggAnalysisVO> {
@Override
public void process(AggAnalysisVO[] aggAnalysisVOS) {
try {
for (AggAnalysisVO vo : aggAnalysisVOS) {
SaAnalysisVO saAnalysisVO = vo.getParentVO();
String cdemandbillbid = saAnalysisVO.getCdemandbillbid();//需求单据明细nsetsnum
Object ntotaloutnumsObj = saAnalysisVO.getNsetsnum();//齐套主数量ndemandnum
String ntotaloutnums = (ntotaloutnumsObj != null) ? ntotaloutnumsObj.toString() : "";
double ntotaloutnum =
(ntotaloutnums.isEmpty()) ? 0 : Double.parseDouble(ntotaloutnums);//齐套主数量
Object ndemandnumObj = saAnalysisVO.getNdemandnum();//分析主数量
String ndemandnums = (ndemandnumObj != null) ? ndemandnumObj.toString() : "";
double ndemandnum =
(ndemandnums.isEmpty()) ? 0 : Double.parseDouble(ndemandnums);//分析数量
double vdef4 = 0;
if (ndemandnum != 0) {
vdef4 = ntotaloutnum / ndemandnum;
}
String update =
" update mm_mo set vdef6=" + ntotaloutnum + ",vdef4=" + vdef4 + " where cmoid='"
+ cdemandbillbid + "' ";
updateSaleBSQty(update);
}
} catch (BusinessException e) {
throw new RuntimeException(e);
}
}
private int updateSaleBSQty(String sql) throws BusinessException {
BaseDAO baseDAO = new BaseDAO();
int succInt = baseDAO.executeUpdate(sql);
return succInt;
}
}

View File

0
mmpub/src/test/.gitkeep Normal file
View File