Merge remote-tracking branch 'origin/main'

This commit is contained in:
mzr 2025-03-27 12:11:43 +08:00
commit 24c8292710
31 changed files with 1638 additions and 0 deletions

View File

@ -1,5 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <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/public"/>
<classpathentry kind="src" output="bin" path="sscivm/src/client"/> <classpathentry kind="src" output="bin" path="sscivm/src/client"/>
<classpathentry kind="src" output="bin" path="sscivm/src/private"/> <classpathentry kind="src" output="bin" path="sscivm/src/private"/>

View File

@ -0,0 +1,382 @@
package nc.bs.mmpac.pmo.pac0002.bp;
import java.util.ArrayList;
import java.util.List;
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
import nc.bs.mmpac.pmo.pac0002.rule.PMOATOCheckRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOATPUpdateRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOCffileidInserAndUpdatetRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOCreatePickmWhenInsertRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOInsertSaveApproveRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOMarkWrSNWhenInsertRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOSNDupCheckRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOSaveSNWhenInsertRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOSplitByTaskDetailsRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOSyncSNWhenInsertRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.CheckMaterialIsEnableRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckCinwarehouseidRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDMODuplicateRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDateLogicRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckMaterialPermissionRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckNrwxisLogicRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckParentStatusRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedureDateLogicRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedureDupRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedurePSCRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedureratioRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProdurepointRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckSCDuplicateRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckSNNumAndUnitRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckSaveNotNullRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOProcedureChkPntRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillBatchCodeRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillFirstMOInfoRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillInsertBatchValueRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillInsertDefaultValueRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillInsertPlanTimeByProcedureRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillMaterialRelationRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillPushDefaultValueRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillPushVersionRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillSNPkAndCodeRule;
import nc.bs.mmpac.pmo.pac0002.rule.grand.PMOCreatePlanOutputRule;
import nc.bs.mmpac.pmo.pac0002.rule.grand.PMOCreateProcedureRule;
import nc.bs.mmpac.pmo.pac0002.rule.grand.PMOSyncPlanmmNumRule;
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4MPS;
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4PMO;
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4PSCRecive;
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4PSM;
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4Renovate;
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4SFC;
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4SO;
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4TO;
import nc.bs.mmpac.pmo.pac0002.bp.rule.saveBeforeCheckRule;
import nc.bs.mmpub.rule.MMATOMaterialCheckRule;
import nc.bs.mmpub.rule.MMAutoMaterialAssignRule;
import nc.bs.mmpub.rule.MMBillTypeIsLockCheckRule;
import nc.bs.pubapp.pub.rule.FieldLengthCheckRule;
import nc.bs.pubapp.pub.rule.FillInsertDataRule;
import nc.bs.pubapp.pub.rule.OrgDisabledCheckRule;
import nc.impl.pubapp.bd.userdef.UserDefSaveRule;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
import nc.pubitf.sn.doc.param.SnDocParam;
import nc.util.mmf.busi.rule.MMBillCodeCheckAndTrantypeRule;
import nc.util.mmf.busi.rule.MMCheckMaterialProdModeRule;
import nc.util.mmf.busi.rule.MMCheckMaterialVirtualRule;
import nc.util.mmf.busi.rule.MMCreateBillcodeAndTrantypecodeRule;
import nc.util.mmf.busi.rule.MMRowNoCheckRule;
import nc.util.mmf.framework.gc.GCBillCloneUtil;
import nc.util.mmf.framework.gc.GCBillInsert;
import nc.util.mmf.framework.gc.GCInsertBPTemplate;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.util.PmoSagaUtil;
public class PMOInsertBP {
public PMOAggVO[] insert(PMOAggVO[] bills, boolean issub, boolean isPush) {
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.INSERT);
List<SnDocParam> updateParams = new ArrayList<SnDocParam>();
List<SnDocParam> saveParams = new ArrayList<SnDocParam>();
addBeforeRule(processer, issub, isPush, updateParams, saveParams);
addAfterRule(processer, issub, isPush, updateParams, saveParams);
GCBillInsert<PMOAggVO> bo = new GCBillInsert<PMOAggVO>();
PMOAggVO[] aggvos = (PMOAggVO[]) processer.before(bills);
PMOAggVO[] newvos = (PMOAggVO[]) bo.insert(aggvos);
PmoSagaUtil.addSagaAndCompensate4Insert(newvos);
return (PMOAggVO[]) processer.after(newvos);
}
public void insertSagasCheck(PMOAggVO[] bills, boolean issub, boolean isPush) {
GCInsertBPTemplate<PMOAggVO> bp = new GCInsertBPTemplate<PMOAggVO>(PMOPluginPoint.INSERT);
addBeforeRuleSagasCheck(bp.getAroundProcesser(), issub, isPush);
bp.getAroundProcesser().before(bills);
}
private void addBeforeRule(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush,
List<SnDocParam> updateParams, List<SnDocParam> saveParams) {
IRule<PMOAggVO> materialIsEnableRule = new CheckMaterialIsEnableRule();
processer.addBeforeRule(materialIsEnableRule);
OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
processer.addBeforeRule(orgDisabledCheckRule);
FillInsertDataRule fillInsertDataRule = new FillInsertDataRule();
processer.addBeforeRule(fillInsertDataRule);
MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode");
processer.addBeforeRule(mMBillTypeIsLockCheckRule);
MMAutoMaterialAssignRule mMAutoMaterialAssignRule = new MMAutoMaterialAssignRule(null, "cmaterialvid",
new String[] { "pk_org", "cplanfactoryid" }, null);
processer.addBeforeFinalRule(mMAutoMaterialAssignRule);
MMATOMaterialCheckRule mMATOMaterialCheckRule = new MMATOMaterialCheckRule(null, "cmaterialvid", "cffileid");
processer.addBeforeRule(mMATOMaterialCheckRule);
IRule<PMOAggVO> marperrule = new PMOCheckMaterialPermissionRule();
processer.addBeforeRule(marperrule);
MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule();
processer.addBeforeRule(mMCheckMaterialVirtualRule);
IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule();
processer.addBeforeRule(chkrwxisrule);
IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub);
processer.addBeforeRule(chkrule);
IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule();
processer.addBeforeRule(fillvaluerule);
processer.addBeforeRule(new PMOSyncPlanmmNumRule());
MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule();
processer.addBeforeRule(mMRowNoCheckRule);
IRule<PMOAggVO> scrapAddrule = new PMOCheckParentStatusRule();
processer.addBeforeRule(scrapAddrule);
IRule<PMOAggVO> snDuprule = new PMOSNDupCheckRule();
processer.addBeforeRule(snDuprule);
IRule<PMOAggVO> outputrule = new PMOCreatePlanOutputRule();
processer.addBeforeRule(outputrule);
IRule<PMOAggVO> procedurerule = new PMOCreateProcedureRule(isPush);
processer.addBeforeRule(procedurerule);
IRule<PMOAggVO> filltimeprocedurerule = new PMOFillInsertPlanTimeByProcedureRule();
processer.addBeforeRule(filltimeprocedurerule);
IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule();
processer.addBeforeRule(daterule);
IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule();
processer.addBeforeRule(chkPntRule);
processer.addBeforeRule(new PMOCheckProdurepointRule());
IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true);
processer.addBeforeRule(procdatelogicrule);
IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule();
processer.addBeforeRule(proccoderule);
IRule<PMOAggVO> procPscCheckRule = new PMOCheckProcedurePSCRule();
processer.addBeforeRule(procPscCheckRule);
FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule();
processer.addBeforeRule(fieldLengthCheckRule);
UserDefSaveRule<PMOAggVO> defRule = new UserDefSaveRule<PMOAggVO>(
new Class[] { nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class });
processer.addBeforeRule(defRule);
MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1,
nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class);
processer.addBeforeRule(prodModeRule);
IRule<PMOAggVO> rewriteReviceRule = new RewriteInsertNum4PSCRecive();
processer.addBeforeRule(rewriteReviceRule);
IRule<PMOAggVO> wrMarkRule = new PMOMarkWrSNWhenInsertRule();
processer.addBeforeRule(wrMarkRule);
IRule<PMOAggVO> atprule = new PMOATPUpdateRule(true, "55A2");
processer.addBeforeRule(atprule);
IRule<PMOAggVO> rewritewr = new RewriteInsertNum4Renovate();
processer.addBeforeRule(rewritewr);
IRule<PMOAggVO> rewritesfc = new RewriteInsertNum4SFC();
processer.addBeforeRule(rewritesfc);
MMCreateBillcodeAndTrantypecodeRule mMCreateBillcodeAndTrantypecodeRule = new MMCreateBillcodeAndTrantypecodeRule(
"55A2", "vbillcode", "pk_group", "pk_org", "vtrantypecode");
processer.addBeforeRule(mMCreateBillcodeAndTrantypecodeRule);
IRule<PMOAggVO> fillfirstInfo = new PMOFillFirstMOInfoRule();
processer.addBeforeRule(fillfirstInfo);
IRule<PMOAggVO> fillbatchvaluerule = new PMOFillInsertBatchValueRule();
processer.addBeforeRule(fillbatchvaluerule);
IRule<PMOAggVO> batchcodeRule = new PMOFillBatchCodeRule();
processer.addBeforeRule(batchcodeRule);
PMOCffileidInserAndUpdatetRule cffileidRule = new PMOCffileidInserAndUpdatetRule();
processer.addBeforeRule(cffileidRule);
IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule();
processer.addBeforeRule(snCheckRule);
IRule<PMOAggVO> snRule = new PMOFillSNPkAndCodeRule();
processer.addBeforeRule(snRule);
IRule<PMOAggVO> snSyncRule = new PMOSyncSNWhenInsertRule(updateParams, saveParams);
processer.addBeforeRule(snSyncRule);
IRule<PMOAggVO> checkCinwarehouseidRule = new PMOCheckCinwarehouseidRule();
processer.addBeforeRule(checkCinwarehouseidRule);
IRule<PMOAggVO> atoCheck = new PMOATOCheckRule();
processer.addBeforeRule(atoCheck);
IRule<PMOAggVO> procedureIRule = new PMOCheckProcedureratioRule();
processer.addBeforeRule(procedureIRule);
IRule<PMOAggVO> saveBeforeCheckRule = new saveBeforeCheckRule();
processer.addBeforeRule(saveBeforeCheckRule);
}
private void addBeforeRuleSagasCheck(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush) {
OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
processer.addBeforeRule(orgDisabledCheckRule);
FillInsertDataRule fillInsertDataRule = new FillInsertDataRule();
processer.addBeforeRule(fillInsertDataRule);
MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode");
processer.addBeforeRule(mMBillTypeIsLockCheckRule);
MMATOMaterialCheckRule mMATOMaterialCheckRule = new MMATOMaterialCheckRule(null, "cmaterialvid", "cffileid");
processer.addBeforeRule(mMATOMaterialCheckRule);
IRule<PMOAggVO> marperrule = new PMOCheckMaterialPermissionRule();
processer.addBeforeRule(marperrule);
MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule();
processer.addBeforeRule(mMCheckMaterialVirtualRule);
IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule();
processer.addBeforeRule(chkrwxisrule);
IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub);
processer.addBeforeRule(chkrule);
IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule();
processer.addBeforeRule(fillvaluerule);
processer.addBeforeRule(new PMOSyncPlanmmNumRule());
MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule();
processer.addBeforeRule(mMRowNoCheckRule);
IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule();
processer.addBeforeRule(daterule);
IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule();
processer.addBeforeRule(chkPntRule);
processer.addBeforeRule(new PMOCheckProdurepointRule());
IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true);
processer.addBeforeRule(procdatelogicrule);
IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule();
processer.addBeforeRule(proccoderule);
FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule();
processer.addBeforeRule(fieldLengthCheckRule);
UserDefSaveRule<PMOAggVO> defRule = new UserDefSaveRule<PMOAggVO>(
new Class[] { nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class });
processer.addBeforeRule(defRule);
MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1,
nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class);
processer.addBeforeRule(prodModeRule);
IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule();
processer.addBeforeRule(snCheckRule);
IRule<PMOAggVO> atoCheck = new PMOATOCheckRule();
processer.addBeforeRule(atoCheck);
}
private void addAfterRule(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush,
List<SnDocParam> updateParams, List<SnDocParam> saveParams) {
MMBillCodeCheckAndTrantypeRule mMBillCodeCheckAndTrantypeRule = new MMBillCodeCheckAndTrantypeRule("55A2",
"vbillcode", "pk_group", "pk_org", "vtrantypecode");
processer.addAfterRule(mMBillCodeCheckAndTrantypeRule);
IRule<PMOAggVO> duprule = new PMOCheckSCDuplicateRule();
processer.addAfterRule(duprule);
IRule<PMOAggVO> dmoduprule = new PMOCheckDMODuplicateRule();
processer.addAfterRule(dmoduprule);
IRule<PMOAggVO> pmorule = new RewriteInsertNum4PMO();
processer.addAfterRule(pmorule);
IRule<PMOAggVO> rewriteso = new RewriteInsertNum4SO();
processer.addAfterRule(rewriteso);
IRule<PMOAggVO> rewritepsm = new RewriteInsertNum4PSM();
processer.addAfterRule(rewritepsm);
IRule<PMOAggVO> rewritepo = new RewriteInsertNum4MPS();
processer.addAfterRule(rewritepo);
IRule<PMOAggVO> rewriteto = new RewriteInsertNum4TO();
processer.addAfterRule(rewriteto);
IRule<PMOAggVO> atprule = new PMOATPUpdateRule(false, "55A2");
processer.addAfterRule(atprule);
IRule<PMOAggVO> snsaverule = new PMOSaveSNWhenInsertRule(updateParams, saveParams);
processer.addAfterRule(snsaverule);
IRule<PMOAggVO> createPickmRule = new PMOCreatePickmWhenInsertRule();
processer.addAfterRule(createPickmRule);
IRule<PMOAggVO> saveapproverule = new PMOInsertSaveApproveRule();
processer.addAfterRule(saveapproverule);
}
public PMOAggVO[] pushInsert(PMOAggVO[] vos, boolean issub, String pushtype) {
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT);
addPushInsertBeforeRules(processer, pushtype);
processer.before(vos);
PMOAggVO[] aggvos = insert(vos, issub, true);
if ("PSM".equals(pushtype)) {
PMOAggVO[] cloneVos = (PMOAggVO[]) (new GCBillCloneUtil()).cloneBills(aggvos);
PMOSplitByTaskDetailsRule createPutPlan = new PMOSplitByTaskDetailsRule(false);
createPutPlan.process(cloneVos);
}
return aggvos;
}
public void pushInsertSagasCheck(PMOAggVO[] vos, boolean issub, String pushtype) {
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT);
addPushInsertBeforeRules(processer, pushtype);
processer.before(vos);
insertSagasCheck(vos, issub, true);
}
private void addPushInsertBeforeRules(AroundProcesser<PMOAggVO> processer, String pushtype) {
IRule<PMOAggVO> versionrule = new PMOFillPushVersionRule();
processer.addBeforeRule(versionrule);
IRule<PMOAggVO> defaultrule = new PMOFillPushDefaultValueRule();
processer.addBeforeRule(defaultrule);
IRule<PMOAggVO> relationrule = new PMOFillMaterialRelationRule(pushtype);
processer.addBeforeRule(relationrule);
}
}

View File

@ -0,0 +1,105 @@
package nc.bs.mmpac.pmo.pac0002.bp;
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterBillStatusRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOPutAutoAuditPickmRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDeptNotNullRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelActApplyRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelBatchBindRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelDispatchNumRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelHoldNumRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelOperationRepRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelWrNumRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOPutCancelCheckPutPlanStatusRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillBatchCodeRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillPutValueRule;
import nc.bs.mmpac.pmo.pac0002.bp.rule.putBeforeCheckRule;
import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule;
import nc.impl.pubapp.pattern.rule.IFilterRule;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
import nc.util.mmf.framework.gc.GCUpdateBPTemplate;
import nc.vo.mmpac.pmo.pac0002.constant.PMOConstLang;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFBillstatusEnum;
public class PMOPutBP {
public PMOAggVO[] put(PMOAggVO[] fullBills, PMOAggVO[] originBills) {
GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate<PMOAggVO>(PMOPluginPoint.PUT);
addPutBeforeRule(bp.getAroundProcesser());
addPutAfterRule(bp.getAroundProcesser());
return (PMOAggVO[]) bp.update(fullBills, originBills);
}
private void addPutBeforeRule(CompareAroundProcesser<PMOAggVO> processer) {
MMVOSagaFrozenValidateRule mMVOSagaFrozenValidateRule = new MMVOSagaFrozenValidateRule(true);
processer.addBeforeRule(mMVOSagaFrozenValidateRule);
IFilterRule<PMOAggVO> filterStatusRule = new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(),
PMOFBillstatusEnum.AUDIT);
processer.addBeforeRule(filterStatusRule);
IRule<PMOAggVO> checkDeptRule = new PMOCheckDeptNotNullRule();
processer.addBeforeRule(checkDeptRule);
IFilterRule<PMOAggVO> pickmRule = new PMOPutAutoAuditPickmRule();
processer.addBeforeRule(pickmRule);
IRule<PMOAggVO> fillValueRule = new PMOFillPutValueRule(false);
processer.addBeforeRule(fillValueRule);
IRule<PMOAggVO> batchcodeRule = new PMOFillBatchCodeRule();
processer.addBeforeRule(batchcodeRule);
IRule<PMOAggVO> putBeforeCheckRule = new putBeforeCheckRule();
processer.addBeforeRule(putBeforeCheckRule);
}
private void addPutAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
}
public PMOAggVO[] putCancel(PMOAggVO[] fullBills, PMOAggVO[] originBills) {
GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate<PMOAggVO>(PMOPluginPoint.UNPUT);
addPutCancelBeforeRule(bp.getAroundProcesser());
addPutCancelAfterRule(bp.getAroundProcesser());
return (PMOAggVO[]) bp.update(fullBills, originBills);
}
private void addPutCancelBeforeRule(CompareAroundProcesser<PMOAggVO> processer) {
IFilterRule<PMOAggVO> filterStatusRule = new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(),
PMOFBillstatusEnum.AUDIT);
processer.addBeforeRule(filterStatusRule);
IRule<PMOAggVO> checkWRNumRule = new PMOCheckPutCancelWrNumRule();
processer.addBeforeRule(checkWRNumRule);
IRule<PMOAggVO> checkActApplyRule = new PMOCheckPutCancelActApplyRule();
processer.addBeforeRule(checkActApplyRule);
IRule<PMOAggVO> checkHoldNumRule = new PMOCheckPutCancelHoldNumRule();
processer.addBeforeRule(checkHoldNumRule);
IRule<PMOAggVO> checkBatchBindRule = new PMOCheckPutCancelBatchBindRule();
processer.addBeforeRule(checkBatchBindRule);
IRule<PMOAggVO> fillValueRule = new PMOFillPutValueRule(true);
processer.addBeforeRule(fillValueRule);
IRule<PMOAggVO> checkDispatchNumRule = new PMOCheckPutCancelDispatchNumRule();
processer.addBeforeRule(checkDispatchNumRule);
IRule<PMOAggVO> checkOperationRepRule = new PMOCheckPutCancelOperationRepRule();
processer.addBeforeRule(checkOperationRepRule);
IRule<PMOAggVO> putCancelCheckPutPlanStatusRule = new PMOPutCancelCheckPutPlanStatusRule();
processer.addBeforeRule(putCancelCheckPutPlanStatusRule);
}
private void addPutCancelAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
}
}

View File

@ -0,0 +1,122 @@
package nc.bs.mmpac.pmo.pac0002.bp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService;
import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil;
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterBillStatusRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterRowStatusRule;
import nc.bs.mmpac.pmo.pac0002.rule.PMOPutAutoAuditPickmRule;
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDeptNotNullRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillBatchCodeRule;
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillPutValueRule;
import nc.bs.mmpac.pmo.pac0002.bp.rule.putBeforeCheckRule;
import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule;
import nc.impl.pubapp.pattern.data.vo.tool.VOConcurrentTool;
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
import nc.util.mmf.framework.gc.GCBillConcurrentTool;
import nc.util.mmf.framework.gc.GCBillTransferTool;
import nc.util.mmf.framework.gc.GCBillUpdate;
import nc.util.mmf.framework.gc.GCUpdateBPTemplate;
import nc.vo.mmpac.pmo.pac0002.constant.PMOConstLang;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFBillstatusEnum;
import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFItemStatusEnum;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
public class PMORowPutBP {
public PMOAggVO[] rowput(PMOAggVO[] vos) {
try {
GCBillConcurrentTool lockTool = new GCBillConcurrentTool();
lockTool.lockBill(vos);
(new VOConcurrentTool()).checkTSWithDB(vos[0].getChildrenVO());
GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate<PMOAggVO>(PMOPluginPoint.ROWPUT);
CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser();
addRowPutBeforeRule(processer);
addRowPutAfterRule(processer);
PMOAggVO[] returnvos = (PMOAggVO[]) processer.before(vos, vos);
List<PMOItemVO> upditemList = new ArrayList<PMOItemVO>();
Map<String, PMOItemVO> upditemMap = new HashMap<String, PMOItemVO>();
for (PMOAggVO aggvo : returnvos) {
PMOItemVO[] items = aggvo.getChildrenVO();
for (PMOItemVO item : items) {
upditemList.add(item);
upditemMap.put(item.getCmoid(), item);
}
}
PMOAggVO aggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid());
PMOItemVO[] olditems = aggvo.getChildrenVO();
List<PMOItemVO> tempitems = new ArrayList<PMOItemVO>();
for (PMOItemVO item : olditems) {
if (!upditemMap.containsKey(item.getCmoid())) {
tempitems.add(item);
} else {
((PMOItemVO) upditemMap.get(item.getCmoid())).setStatus(1);
PMOBPUtil.setGrandVOStatusUpdate((PMOItemVO) upditemMap.get(item.getCmoid()));
tempitems.add((PMOItemVO) upditemMap.get(item.getCmoid()));
}
}
aggvo.setChildrenVO((CircularlyAccessibleValueObject[]) tempitems.toArray(new PMOItemVO[tempitems.size()]));
PMOAggVO[] aggvos = { aggvo };
GCBillTransferTool<PMOAggVO> transferTool = new GCBillTransferTool<PMOAggVO>(aggvos);
PMOAggVO[] originBills = (PMOAggVO[]) transferTool.getOriginBills();
GCBillUpdate<PMOAggVO> billupdate = new GCBillUpdate<PMOAggVO>();
PMOAggVO[] newaggvos = (PMOAggVO[]) billupdate.update(aggvos, originBills);
PMOItemVO[] totalitems = newaggvos[0].getChildrenVO();
Map<String, PMOItemVO> newitemMap = new HashMap<String, PMOItemVO>();
for (PMOItemVO item : totalitems) {
if (upditemMap.containsKey(item.getCmoid())) {
newitemMap.put(item.getCmoid(), item);
}
}
returnvos[0]
.setChildrenVO((CircularlyAccessibleValueObject[]) newitemMap.values().toArray(new PMOItemVO[0]));
processer.after(returnvos, returnvos);
PMOAggVO newaggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid());
return new PMOAggVO[] { newaggvo };
} catch (Exception e) {
ExceptionUtils.wrappException(e);
return null;
}
}
private void addRowPutBeforeRule(CompareAroundProcesser<PMOAggVO> processer) {
MMVOSagaFrozenValidateRule mMVOSagaFrozenValidateRule = new MMVOSagaFrozenValidateRule(true);
processer.addBeforeRule(mMVOSagaFrozenValidateRule);
processer.addBeforeRule(
new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(), PMOFBillstatusEnum.AUDIT));
processer.addBeforeRule(
new PMOFilterRowStatusRule(PMOConstLang.getMSG_RULE_NO_ROWDATA(), PMOFItemStatusEnum.AUDIT));
processer.addBeforeRule(new PMOCheckDeptNotNullRule());
processer.addBeforeRule(new PMOPutAutoAuditPickmRule());
processer.addBeforeRule(new PMOFillPutValueRule(false));
processer.addBeforeRule(new PMOFillBatchCodeRule());
processer.addBeforeRule(new putBeforeCheckRule());
}
private void addRowPutAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
}
}

View File

@ -0,0 +1,111 @@
package nc.bs.mmpac.pmo.pac0002.bp.rule;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import nc.bs.framework.common.NCLocator;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.uap.IUAPQueryBS;
import nc.itf.uif.pub.IUifService;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.jdbc.framework.processor.MapProcessor;
import nc.vo.ic.m4c.entity.SaleOutHeadVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
import nc.vo.pub.BusinessException;
import nc.vo.so.m30.entity.SaleOrderBVO;
//import nc.bs.rbac.bizlistener.BaseDocDataPermChangeEventListener;
//import nc.impl.mmpac.pmo.pac0002.PMOTransTypeQueryServiceImpl;
//import nc.impl.mmpac.bcrule.predata.BarCodeDataInitListener;
//import nc.ui.mmpub.setanalysis.action.SaAnalysisAction.actionPerformed;//流程生产订单齐套分析-分析
//import nc.impl.mmpub.setanalysis.SetAnalysisServiceImpl;
import nc.bs.mmpac.pmo.pac0002.bp.PMORowPutBP;
import nccloud.web.mmpac.pmo.action.PmoCardPutAction;
public class putBeforeCheckRule implements IRule<PMOAggVO> {
private static IUifService service = (IUifService) NCLocator.getInstance()
.lookup(IUifService.class.getName());
@Override
public void process(PMOAggVO[] vos) {
try {
// TODO Auto-generated method stub
List<SaleOrderBVO> list = new ArrayList<SaleOrderBVO>();
for (PMOAggVO vo : vos) {
//判断是否是需要控制的业务单元
PMOHeadVO pmoHeadVO = vo.getParentVO();
String pkstockorgStr = getPk_stockorg(pmoHeadVO.getPk_org());
if (pkstockorgStr == null || pkstockorgStr.equals("")) {
return;
}
PMOItemVO[] iSuperVOs = vo.getChildrenVO();
for (int i = 0; i < iSuperVOs.length; i++) {
PMOItemVO itemvo = iSuperVOs[i];
//判断是否类型是否为30
if (itemvo.getVsrctype() == null || !itemvo.getVsrctype().equals("30")) {
return;
}
Map<String, Object> valMap = getVbdef6(itemvo.getVsrcbid());
//销售发票表头pk_billtypecode=30-Cxx-12
if (valMap.get("pk_billtypecode").equals("30-Cxx-12")||valMap.get("pk_billtypecode").equals("30-Cxx-02")||valMap.get("pk_billtypecode").equals("30-Cxx-08")||valMap.get("pk_billtypecode").equals("30-Cxx-13")) {
return;
}
//历史数据不考虑
String storedDateStr = (String) valMap.get("creationtime");
String targetDateStr = "2024-12-31 00:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime storedDate = LocalDateTime.parse(storedDateStr, formatter);
LocalDateTime targetDate = LocalDateTime.parse(targetDateStr, formatter);
if (storedDate.isBefore(targetDate)) {
return;
}
String vdef4Str = itemvo.getVdef4();//齐套率
String vdef4 = (vdef4Str != null) ? vdef4Str.toString() : "";
double vdef4qty = (vdef4.isEmpty()) ? 0 : Double.parseDouble(vdef4);//齐套率
String vdef10Str = itemvo.getVdef10();//齐套率标准
String vdef10 = (vdef10Str != null) ? vdef10Str.toString() : "";
double vdef10qty = (vdef10.isEmpty()) ? 0 : Double.parseDouble(vdef10);//齐套率标准
if (vdef4qty < vdef10qty) {
throw new BusinessException(
"齐套率" + vdef4qty + "小于齐套率标准'" + vdef10qty + "',无法保存!");
}
}
}
} catch (BusinessException e) {
throw new RuntimeException(e);
}
}
private Map<String, Object> getVbdef6(String vsrcbidStr) throws BusinessException {
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
String sql = " SELECT bt.pk_billtypecode,s.creationtime,b.vbdef12,d.nastnum FROM so_saleorder_b b\n"
+ "INNER JOIN so_saleorder s ON s.csaleorderid = b.csaleorderid\n"
+ "left join (select mm_mo.Vsrcbid,sum(nastnum) as nastnum \n"
+ "from mm_mo\n"
+ "where mm_mo.dr=0\n"
+ "group by mm_mo.Vsrcbid) d on b.csaleorderbid=d.Vsrcbid\n"
+ "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n"
+ "where b.csaleorderbid='" + vsrcbidStr + "' ";
Map<String, Object> valList = (Map<String, Object>) queryBS.executeQuery(sql, new MapProcessor());
return valList;
}
private String getPk_stockorg(String pk_stockorg) throws BusinessException {
String sql =
" select pk_stockorg from org_stockorg where code in ('C018','C029','C033','C039','C020','C019') and pk_stockorg='"
+ pk_stockorg + "' ";
String saleorderPK = (String) getQueryService().executeQuery(sql, new ColumnProcessor());
return saleorderPK;
}
public IUAPQueryBS getQueryService() {
return NCLocator.getInstance().lookup(IUAPQueryBS.class);
}
}

View File

@ -0,0 +1,233 @@
package nc.bd.itf.tools;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDate;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.pub.lang.UFDouble;
public class BFPubTools
{
public static UFDouble ZERO = UFDouble.ZERO_DBL;
public static boolean isEmpty(String value)
{
return (value == null) || (value.trim().length() == 0);
}
public static UFBoolean getUFBoolean_NullAs(Object value, UFBoolean bDefautValue)
{
if ((value == null) || (value.toString().trim().equals("")))
return bDefautValue;
if ((value instanceof UFBoolean)) {
return (UFBoolean)value;
}
return new UFBoolean(value.toString().trim());
}
public static UFDate getUFDate(Object value)
{
if ((value == null) || (value.toString().trim().equals("")))
return null;
if ((value instanceof UFDate)) {
return (UFDate)value;
}
return new UFDate(value.toString().trim());
}
public static UFDateTime getUFDateTime(Object value)
{
if ((value == null) || (value.toString().trim().equals("")))
return null;
if ((value instanceof UFDateTime)) {
return (UFDateTime)value;
}
return new UFDateTime(value.toString().trim());
}
public static UFDouble getUFDouble_NullAsZero(Object value)
{
if ((value == null) || (value.toString().trim().equals("")) || (value.toString().trim().equals("~")))
return ZERO;
if ((value instanceof UFDouble))
return (UFDouble)value;
if ((value instanceof BigDecimal)) {
return new UFDouble((BigDecimal)value);
}
return new UFDouble(value.toString().trim());
}
public static UFDouble getUFDouble_ValueAsValue(double dValue)
{
if (dValue == 0.0D) {
return ZERO;
}
return new UFDouble(dValue);
}
public static UFDouble getUFDouble_ValueAsValue(Object value)
{
if ((value == null) || (value.toString().trim().equals("")))
return null;
if ((value instanceof UFDouble))
return (UFDouble)value;
if ((value instanceof BigDecimal)) {
return new UFDouble((BigDecimal)value);
}
return new UFDouble(value.toString().trim());
}
public static UFDouble getUFDouble_ZeroAsNull(double dValue)
{
if (dValue == 0.0D) {
return null;
}
return new UFDouble(dValue);
}
public static UFDouble getUFDouble_ZeroAsNull(Object value)
{
UFDouble dValue = getUFDouble_NullAsZero(value);
if (dValue.compareTo(ZERO) == 0) {
return null;
}
return dValue;
}
public static String getString_TrimZeroLenAsNull(Object value)
{
if ((value == null) || (value.toString().trim().length() == 0)) {
return null;
}
return value.toString().trim();
}
public static String getString_TrimZeroLenAs(Object value, String str)
{
if ((value == null) || (value.toString().trim().length() == 0)) {
return str;
}
return value.toString().trim();
}
public static String getString_TrimAsNull(Object value) {
if ((value == null) || (value.toString().trim().length() == 0)) {
return "";
}
return value.toString().trim();
}
public static String getInStr(Collection<?> coll)
{
String intStr = null;
if ((coll != null) && (coll.size() > 0)) {
StringBuilder sb = new StringBuilder();
String[] values = (String[])coll.toArray(new String[0]);
for (int i = 0; i < values.length; i++) {
sb.append("'").append(values[i]).append("'");
if (i < values.length - 1)
sb.append(",");
}
intStr = sb.toString();
}
return intStr;
}
public static String getInSqlWithOutAnd(String sFieldName, ArrayList<?> alValue, int start, int num)
{
if ((sFieldName == null) || (sFieldName.trim().length() == 0) ||
(alValue == null) || (start < 0) || (num < 0))
return null;
StringBuffer sbSQL = new StringBuffer(200);
sbSQL.append(" (").append(sFieldName).append(" IN (");
int end = start + num;
for (int i = start; i < end; i++) {
if ((alValue.get(i) != null) &&
(alValue.get(i).toString().trim().length() > 0)) {
sbSQL.append("'").append(alValue.get(i)).append("'");
if ((i != alValue.size() - 1) && ((i <= 0) || (i % 200 != 0)))
sbSQL.append(",");
} else {
return null;
}
if ((i > 0) && (i % 200 == 0))
sbSQL.append(" ) OR ").append(sFieldName).append(" IN ( ");
}
sbSQL.append(" ) )");
return sbSQL.toString();
}
public static String getInSqlWithOutAnd(String sFieldName, List<?> alValue, int start, int num)
{
if ((sFieldName == null) || (sFieldName.trim().length() == 0) ||
(alValue == null) || (start < 0) || (num < 0))
return null;
StringBuffer sbSQL = new StringBuffer(200);
sbSQL.append(" (").append(sFieldName).append(" IN (");
int end = start + num;
for (int i = start; i < end; i++) {
if ((alValue.get(i) != null) &&
(alValue.get(i).toString().trim().length() > 0)) {
sbSQL.append("'").append(alValue.get(i)).append("'");
if ((i != alValue.size() - 1) && ((i <= 0) || (i % 200 != 0)))
sbSQL.append(",");
} else {
return null;
}
if ((i > 0) && (i % 200 == 0))
sbSQL.append(" ) OR ").append(sFieldName).append(" IN ( ");
}
sbSQL.append(" ) )");
return sbSQL.toString();
}
public static String getInSqlWithOutAnd(String sFieldName, String[] saValue, int start, int num)
{
if ((sFieldName == null) || (sFieldName.trim().length() == 0) ||
(saValue == null) || (start < 0) || (num < 0) ||
(saValue.length < start + num))
return null;
StringBuffer sbSQL = new StringBuffer(200);
sbSQL.append(" (").append(sFieldName).append(" IN ( ");
int end = start + num;
for (int i = start; i < end; i++) {
if ((saValue[i] != null) && (saValue[i].trim().length() > 0)) {
sbSQL.append("'").append(saValue[i]).append("'");
if ((i != saValue.length - 1) && ((i <= 0) || (i % 200 != 0)))
sbSQL.append(",");
} else {
return null;
}
if ((i > 0) && (i % 200 == 0))
sbSQL.append(" ) OR ").append(sFieldName).append(" IN ( ");
}
sbSQL.append(" ) )");
return sbSQL.toString();
}
public static String getInSqlWithOutAnd(String sFieldName, Object[] oValue, int start, int num) {
if ((sFieldName == null) || (sFieldName.trim().length() == 0) ||
(oValue == null) || (start < 0) || (num < 0) ||
(oValue.length < start + num))
return null;
StringBuffer sbSQL = new StringBuffer(200);
sbSQL.append(" (").append(sFieldName).append(" IN ( ");
int end = start + num;
for (int i = start; i < end; i++) {
String sValue = getString_TrimZeroLenAsNull(oValue);
if (oValue[i] != null) {
sbSQL.append("'").append(sValue).append("'");
if ((i != oValue.length - 1) && ((i <= 0) || (i % 200 != 0)))
sbSQL.append(",");
} else {
return null;
}
if ((i > 0) && (i % 200 == 0))
sbSQL.append(" ) OR ").append(sFieldName).append(" IN ( ");
}
sbSQL.append(" ) )");
return sbSQL.toString();
}
}

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

View File

@ -0,0 +1,547 @@
package nccloud.api.uapbd.materialmanage.material;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import nc.bs.dao.BaseDAO;
import nc.ws.opm.pub.utils.result.APIErrCodeEnum;
import nc.bs.dao.DAOException;
import nc.bs.framework.common.NCLocator;
import nc.bs.framework.core.util.ObjectCreator;
import nc.impl.pubapp.pattern.database.SqlBuilderUtil;
import nc.itf.bd.material.assign.IMaterialAssignService;
import nc.jdbc.framework.processor.ColumnListProcessor;
import nc.vo.bd.material.MaterialVO;
import nc.vo.bd.material.prod.MaterialProdVO;
import nc.vo.bd.material.sale.MaterialSaleVO;
import nc.vo.bd.material.stock.MaterialStockVO;
import nccloud.api.baseapp.exchange.convert.IOpenApiJsonConvertToExChangeXmlService;
import nccloud.api.baseapp.exchange.convert.OpenApiConvertDataObject;
import nccloud.api.baseapp.exchange.convert.OpenApiConvertDataResult;
import nccloud.api.rest.utils.ApiResourceParamUtils;
import nccloud.api.rest.utils.IParamTranslator;
import nccloud.api.rest.utils.OpenApiPageInfo;
import nccloud.api.rest.utils.ResultMessageUtil;
import nccloud.api.uapbd.common.utils.OpenApiPagenationUtils;
import nccloud.commons.lang.StringUtils;
import nc.jdbc.framework.processor.MapListProcessor;
import nccloud.ws.rest.resource.AbstractNCCRestResource;
import org.json.JSONString;
/**
* 物料接口适配2312
*/
@Path("uapbd/material/material")
public class MaterialManageMaterial extends AbstractNCCRestResource {
private static final String defbilltype = "material";
@POST
@Path("add")
@Consumes({ "application/json" })
@Produces({ "application/json" })
public JSONString addMaterial(JSONString json) {
return process(json);
}
/**
*
* @param json {"code":"COM24111300019","version":"1","pk_org":"PLM"}
* @return
*/
@POST
@Path("queryMaterialIsExist")
@Consumes({ "application/json" })
@Produces({ "application/json" })
public JSONString queryMaterialIsExist(JSONString json) {
boolean bool = false;// false 不存在 true 存在
JSONObject jObject = JSONObject.parseObject(json.toJSONString());
if (jObject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null"));
}
if (StringUtils.isEmpty(jObject.getString("code"))) {
return ResultMessageUtil.exceptionToJSON("code 不能为空", APIErrCodeEnum.UNKNOWEXCCODE.getCode());
}
String code = jObject.getString("code");
String version = jObject.getString("version");
String pk_org = jObject.getString("pk_org");// 所属组织编码
String sql = "select bd_material.code,bd_material.version,org_orgs.code From bd_material , org_orgs where bd_material.pk_org=org_orgs.pk_org and bd_material.code='"
+ code + "'";
if (!StringUtils.isEmpty(version)) {
sql += " and bd_material.version ='" + jObject.get("version") + "'";
}
if (!StringUtils.isEmpty(pk_org)) {
sql += " and org_orgs.code ='" + jObject.get("pk_org") + "'";
}
try {
ArrayList<HashMap<String, String>> lists = (ArrayList<HashMap<String, String>>) new BaseDAO()
.executeQuery(sql, new MapListProcessor());
if (lists != null && lists.size() > 0) {
bool = true;
return ResultMessageUtil.toJSONUnTranslate(bool);
} else {
bool = false;
return ResultMessageUtil.toJSONUnTranslate(bool, "没有符合条件的数据");
}
} catch (DAOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ResultMessageUtil.toJSONUnTranslate(bool);
}
@POST
@Path("update")
@Consumes({ "application/json" })
@Produces({ "application/json" })
public JSONString updateMaterial(JSONString json) {
return process(json);
}
@POST
@Path("queryMaterial")
@Consumes({ "application/json" })
@Produces({ "application/json" })
public JSONString queryMaterial(JSONString json) {
JSONObject jObject = JSON.parseObject(json.toJSONString());
if (jObject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null"));
}
JSONObject bject = jObject.getJSONObject("ufinterface");
if (bject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("ufinterface:null"));
}
JSONObject data = bject.getJSONObject("data");
String pk_group = data.getString("pk_group");
JSONArray pk_orgs = data.getJSONArray("pk_org");
JSONArray code = data.getJSONArray("code");
JSONArray name = data.getJSONArray("name");
JSONArray marbaseclass = data.getJSONArray("marbaseclass");
String enablestate = data.getString("enablestate");
String ts = data.getString("ts");
JSONObject pageInfo = data.getJSONObject("pageInfo");
Map<String, Object> param = new HashMap<String, Object>();
if (StringUtils.isNotBlank(pk_group)) {
param.put("pk_group", pk_group);
}
if (StringUtils.isNotBlank(enablestate)) {
param.put("enablestate", enablestate);
}
if (StringUtils.isNotBlank(ts)) {
param.put("ts", ts);
}
if (pk_orgs != null && pk_orgs.size() > 0) {
param.put("pk_org", pk_orgs.toArray(new String[0]));
}
if (code != null && code.size() > 0) {
param.put("code", code.toArray(new String[0]));
}
if (name != null && name.size() > 0) {
param.put("name", name.toArray(new String[0]));
}
if (marbaseclass != null && marbaseclass.size() > 0) {
param.put("marbaseclass", marbaseclass.toArray(new String[0]));
}
try {
ApiResourceParamUtils ApiResourceParamUtils = new ApiResourceParamUtils();
IParamTranslator IParamTranslator = (IParamTranslator) ObjectCreator.newInstance("uapbd",
nccloud.api.uapbd.translator.OrgParamTranslator.class.getName());
ApiResourceParamUtils.addTranslatorMap("pk_org", IParamTranslator);
String condition = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param);
String sql = "select pk_material from bd_material where " + condition;
List<String> allPks = (List) (new BaseDAO()).executeQuery(sql, new ColumnListProcessor());
OpenApiPageInfo openApiPageInfo = new OpenApiPageInfo();
String[] currPks = OpenApiPagenationUtils.getCurrentPagePksAndPageInfo(allPks, pageInfo, openApiPageInfo);
if (currPks == null || currPks.length == 0) {
return ResultMessageUtil.toJSON(null);
}
SqlBuilderUtil SqlBuilderUtil = new SqlBuilderUtil();
String wherepart = SqlBuilderUtil.buildSQL("pk_material", currPks, null);
MaterialVO[] vos = (MaterialVO[]) (new BaseDAO()).retrieveByClause(MaterialVO.class, wherepart)
.toArray(new MaterialVO[0]);
ResultMessageUtil.toJSONByPage(vos, openApiPageInfo, false);
return ResultMessageUtil.toJSONByPage(vos, openApiPageInfo, false);
} catch (Exception e) {
return ResultMessageUtil.exceptionToJSON(e);
}
}
@POST
@Path("assignMaterial")
@Consumes({ "application/json" })
@Produces({ "application/json" })
public JSONString assignMaterial(JSONString json) {
JSONObject jObject = JSON.parseObject(json.toJSONString());
if (jObject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null"));
}
JSONObject bject = jObject.getJSONObject("ufinterface");
if (bject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("ufinterface:null"));
}
JSONObject data = bject.getJSONObject("data");
String pk_org = data.getString("pk_org");
String code = data.getString("code");
String version = data.getString("version");
JSONArray assignorgs = data.getJSONArray("assignorgs");
JSONObject pageInfo = data.getJSONObject("pageInfo");
Map<String, Object> param = new HashMap<String, Object>();
if (StringUtils.isBlank(pk_org) && StringUtils.isBlank(code) && StringUtils.isBlank(version)) {
return ResultMessageUtil.exceptionToJSON(new Exception("所属组织、物料编码、版本号,不能同时为空"));
}
if (assignorgs == null || (assignorgs != null && assignorgs.size() <= 0)) {
return ResultMessageUtil.exceptionToJSON(new Exception("分配组织不能为空"));
}
if (StringUtils.isNotBlank(pk_org)) {
param.put("pk_org", pk_org);
}
if (StringUtils.isNotBlank(code)) {
param.put("code", code);
}
if (StringUtils.isNotBlank(version)) {
param.put("version", version);
}
try {
ApiResourceParamUtils ApiResourceParamUtils = new ApiResourceParamUtils();
IParamTranslator IParamTranslator = (IParamTranslator) ObjectCreator.newInstance("uapbd",
nccloud.api.uapbd.translator.OrgParamTranslator.class.getName());
ApiResourceParamUtils.addTranslatorMap("pk_org", IParamTranslator);
String condition = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param);
MaterialVO[] vos = (MaterialVO[]) (new BaseDAO()).retrieveByClause(MaterialVO.class, condition)
.toArray(new MaterialVO[0]);
if (vos == null || (vos != null && vos.length <= 0)) {
return ResultMessageUtil.exceptionToJSON(new Exception("未查询到物料信息"));
}
IMaterialAssignService IMaterialAssignService = (IMaterialAssignService) NCLocator.getInstance()
.lookup(IMaterialAssignService.class);
if (vos != null && vos.length > 0) {
List<String> pk_materials = new ArrayList<String>();
for (MaterialVO vo : vos) {
pk_materials.add(vo.getPk_material());
}
if (assignorgs != null && assignorgs.size() > 0) {
List<String> pk_orgs = IParamTranslator.translateByCode(null,
(String[]) assignorgs.toArray(new String[0]));
IMaterialAssignService.assignMaterialByPks((String[]) pk_materials.toArray(new String[0]),
(String[]) pk_orgs.toArray(new String[0]), null);
}
}
return ResultMessageUtil.toJSON(null, "分配成功!");
} catch (Exception e) {
return ResultMessageUtil.exceptionToJSON(e);
}
}
@POST
@Path("queryMaterialsale")
@Consumes({ "application/json" })
@Produces({ "application/json" })
public JSONString queryMaterialsale(JSONString json) {
JSONObject jObject = JSON.parseObject(json.toJSONString());
if (jObject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null"));
}
JSONObject bject = jObject.getJSONObject("ufinterface");
if (bject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("ufinterface:null"));
}
JSONObject data = bject.getJSONObject("data");
String pk_org = data.getString("pk_org");
String code = data.getString("code");
String version = data.getString("version");
JSONArray saleorgs = data.getJSONArray("saleorgs");
JSONObject pageInfo = data.getJSONObject("pageInfo");
Map<String, Object> param = new HashMap<String, Object>();
if (StringUtils.isNotBlank(pk_org)) {
param.put("pk_org", pk_org);
}
if (StringUtils.isNotBlank(code)) {
param.put("code", code);
}
if (StringUtils.isNotBlank(version)) {
param.put("version", version);
}
if (StringUtils.isBlank(pk_org) && StringUtils.isBlank(code)) {
return ResultMessageUtil.exceptionToJSON(new Exception("所属组织和编码 pk_org、code不能同时为空"));
}
if (saleorgs == null || saleorgs.size() == 0) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("saleorgs:" + saleorgs + ",不能为空"));
}
try {
ApiResourceParamUtils ApiResourceParamUtils = new ApiResourceParamUtils();
IParamTranslator IParamTranslator = (IParamTranslator) ObjectCreator.newInstance("uapbd",
nccloud.api.uapbd.translator.OrgParamTranslator.class.getName());
ApiResourceParamUtils.addTranslatorMap("pk_org", IParamTranslator);
String condition = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param);
MaterialVO[] vos = (MaterialVO[]) (new BaseDAO()).retrieveByClause(MaterialVO.class, condition)
.toArray(new MaterialVO[0]);
if (vos != null && vos.length > 0) {
List<String> materialpks = new ArrayList<String>();
for (MaterialVO vo : vos) {
materialpks.add(vo.getPk_material());
}
param.clear();
param.put("pk_material", materialpks.toArray(new String[0]));
if (saleorgs != null && saleorgs.size() > 0) {
param.put("pk_org", saleorgs.toArray(new String[0]));
}
String condition1 = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param);
String sql = "select pk_materialsale from bd_materialsale where " + condition1;
List<String> allPks = (List) (new BaseDAO()).executeQuery(sql, new ColumnListProcessor());
OpenApiPageInfo openApiPageInfo = new OpenApiPageInfo();
String[] currPks = OpenApiPagenationUtils.getCurrentPagePksAndPageInfo(allPks, pageInfo,
openApiPageInfo);
if (currPks == null || currPks.length == 0) {
return ResultMessageUtil.toJSON(null);
}
SqlBuilderUtil SqlBuilderUtil = new SqlBuilderUtil();
String wherepart = SqlBuilderUtil.buildSQL("pk_materialsale", currPks, null);
MaterialSaleVO[] salevos = (MaterialSaleVO[]) (new BaseDAO())
.retrieveByClause(MaterialSaleVO.class, wherepart).toArray(new MaterialSaleVO[0]);
return ResultMessageUtil.toJSONByPage(salevos, openApiPageInfo, false);
}
} catch (Exception e) {
return ResultMessageUtil.exceptionToJSON(e);
}
return null;
}
@POST
@Path("queryMaterialprod")
@Consumes({ "application/json" })
@Produces({ "application/json" })
public JSONString queryMaterialprod(JSONString json) {
JSONObject jObject = JSON.parseObject(json.toJSONString());
if (jObject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null"));
}
JSONObject bject = jObject.getJSONObject("ufinterface");
if (bject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("ufinterface:null"));
}
JSONObject data = bject.getJSONObject("data");
String pk_org = data.getString("pk_org");
String code = data.getString("code");
String version = data.getString("version");
JSONArray prodorgs = data.getJSONArray("prodorgs");
JSONObject pageInfo = data.getJSONObject("pageInfo");
Map<String, Object> param = new HashMap<String, Object>();
if (StringUtils.isNotBlank(pk_org)) {
param.put("pk_org", pk_org);
}
if (StringUtils.isNotBlank(code)) {
param.put("code", code);
}
if (StringUtils.isNotBlank(version)) {
param.put("version", version);
}
if (StringUtils.isBlank(pk_org) && StringUtils.isBlank(code)) {
return ResultMessageUtil.exceptionToJSON(new Exception("所属组织和编码 pk_org、code不能同时为空"));
}
if (prodorgs == null || prodorgs.size() == 0) {
return ResultMessageUtil.exceptionToJSON(new Exception("prodorgs:" + prodorgs + ",不能为空"));
}
try {
ApiResourceParamUtils ApiResourceParamUtils = new ApiResourceParamUtils();
IParamTranslator IParamTranslator = (IParamTranslator) ObjectCreator.newInstance("uapbd",
nccloud.api.uapbd.translator.OrgParamTranslator.class.getName());
ApiResourceParamUtils.addTranslatorMap("pk_org", IParamTranslator);
String condition = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param);
MaterialVO[] vos = (MaterialVO[]) (new BaseDAO()).retrieveByClause(MaterialVO.class, condition)
.toArray(new MaterialVO[0]);
if (vos != null && vos.length > 0) {
List<String> materialpks = new ArrayList<String>();
for (MaterialVO vo : vos) {
materialpks.add(vo.getPk_material());
}
param.clear();
param.put("pk_material", materialpks.toArray(new String[0]));
if (prodorgs != null && prodorgs.size() > 0) {
param.put("pk_org", prodorgs.toArray(new String[0]));
}
String condition1 = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param);
String sql = "select pk_materialprod from bd_materialprod where " + condition1;
List<String> allPks = (List) (new BaseDAO()).executeQuery(sql, new ColumnListProcessor());
OpenApiPageInfo openApiPageInfo = new OpenApiPageInfo();
String[] currPks = OpenApiPagenationUtils.getCurrentPagePksAndPageInfo(allPks, pageInfo,
openApiPageInfo);
if (currPks == null || currPks.length == 0) {
return ResultMessageUtil.toJSON(null);
}
SqlBuilderUtil SqlBuilderUtil = new SqlBuilderUtil();
String wherepart = SqlBuilderUtil.buildSQL("pk_materialprod", currPks, null);
MaterialProdVO[] prodvos = (MaterialProdVO[]) (new BaseDAO())
.retrieveByClause(MaterialProdVO.class, wherepart).toArray(new MaterialProdVO[0]);
return ResultMessageUtil.toJSONByPage(prodvos, openApiPageInfo, false);
}
} catch (Exception e) {
return ResultMessageUtil.exceptionToJSON(e);
}
return null;
}
@POST
@Path("queryMaterialstock")
@Consumes({ "application/json" })
@Produces({ "application/json" })
public JSONString queryMaterialstock(JSONString json) {
JSONObject jObject = JSON.parseObject(json.toJSONString());
if (jObject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null"));
}
JSONObject bject = jObject.getJSONObject("ufinterface");
if (bject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("ufinterface:null"));
}
JSONObject data = bject.getJSONObject("data");
String pk_org = data.getString("pk_org");
String code = data.getString("code");
String version = data.getString("version");
JSONArray stockorgs = data.getJSONArray("stockorgs");
JSONObject pageInfo = data.getJSONObject("pageInfo");
Map<String, Object> param = new HashMap<String, Object>();
if (StringUtils.isNotBlank(pk_org)) {
param.put("pk_org", pk_org);
}
if (StringUtils.isNotBlank(code)) {
param.put("code", code);
}
if (StringUtils.isNotBlank(version)) {
param.put("version", version);
}
if (StringUtils.isBlank(pk_org) && StringUtils.isBlank(code)) {
return ResultMessageUtil.exceptionToJSON(new Exception("所属组织和编码 pk_org、code不能同时为空"));
}
if (stockorgs == null || stockorgs.size() == 0) {
return ResultMessageUtil.exceptionToJSON(new Exception("stockorgs:" + stockorgs + ",不能为空"));
}
try {
ApiResourceParamUtils ApiResourceParamUtils = new ApiResourceParamUtils();
IParamTranslator IParamTranslator = (IParamTranslator) ObjectCreator.newInstance("uapbd",
nccloud.api.uapbd.translator.OrgParamTranslator.class.getName());
ApiResourceParamUtils.addTranslatorMap("pk_org", IParamTranslator);
String condition = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param);
MaterialVO[] vos = (MaterialVO[]) (new BaseDAO()).retrieveByClause(MaterialVO.class, condition)
.toArray(new MaterialVO[0]);
if (vos != null && vos.length > 0) {
List<String> materialpks = new ArrayList<String>();
for (MaterialVO vo : vos) {
materialpks.add(vo.getPk_material());
}
param.clear();
param.put("pk_material", materialpks.toArray(new String[0]));
if (stockorgs != null && stockorgs.size() > 0) {
param.put("pk_org", stockorgs.toArray(new String[0]));
}
String condition1 = ApiResourceParamUtils.parseParmToSqlByCode(new MaterialVO(), param);
String sql = "select pk_materialstock from bd_materialstock where " + condition1;
List<String> allPks = (List) (new BaseDAO()).executeQuery(sql, new ColumnListProcessor());
OpenApiPageInfo openApiPageInfo = new OpenApiPageInfo();
String[] currPks = OpenApiPagenationUtils.getCurrentPagePksAndPageInfo(allPks, pageInfo,
openApiPageInfo);
if (currPks == null || currPks.length == 0) {
return ResultMessageUtil.toJSON(null);
}
SqlBuilderUtil SqlBuilderUtil = new SqlBuilderUtil();
String wherepart = SqlBuilderUtil.buildSQL("pk_materialstock", currPks, null);
MaterialStockVO[] stockvos = (MaterialStockVO[]) (new BaseDAO())
.retrieveByClause(MaterialStockVO.class, wherepart).toArray(new MaterialStockVO[0]);
return ResultMessageUtil.toJSONByPage(stockvos, openApiPageInfo, false);
}
} catch (Exception e) {
return ResultMessageUtil.exceptionToJSON(e);
}
return null;
}
private JSONString process(JSONString json) {
JSONObject jObject = JSON.parseObject(json.toJSONString());
if (jObject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null"));
}
JSONObject bject = jObject.getJSONObject("ufinterface");
if (bject == null) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException("ufinterface:null"));
}
String billtype = bject.getString("billtype");
String account = bject.getString("account");
String groupcode = bject.getString("groupcode");
if (!"material".equals(billtype)) {
return ResultMessageUtil.exceptionToJSON(new NullPointerException(
"billtype:" + billtype + ",account:" + account + ",groupcode:" + groupcode));
}
OpenApiConvertDataObject openApiConvertDataObject = new OpenApiConvertDataObject();
openApiConvertDataObject.setAccount(account);
openApiConvertDataObject.setBilltype(billtype);
openApiConvertDataObject.setGroupcode(groupcode);
openApiConvertDataObject.setOpenApiJsonData(jObject);
try {
OpenApiConvertDataResult r = getIOpenApiJsonConvertToExChangeXmlService()
.changeToExchangeData(openApiConvertDataObject);
if (r != null) {
return ResultMessageUtil.toJSON(r.getDesc());
}
} catch (Exception e) {
return ResultMessageUtil.exceptionToJSON(e);
}
return ResultMessageUtil.exceptionToJSON(new Exception("未知异常"));
}
public String getModule() {
return "uapbd";
}
private IOpenApiJsonConvertToExChangeXmlService getIOpenApiJsonConvertToExChangeXmlService() {
return (IOpenApiJsonConvertToExChangeXmlService) NCLocator.getInstance()
.lookup(IOpenApiJsonConvertToExChangeXmlService.class);
}
}