Merge remote-tracking branch 'origin/main'
This commit is contained in:
		
						commit
						24c8292710
					
				|  | @ -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,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); | ||||
| 	} | ||||
| } | ||||
|  | @ -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) { | ||||
| 	} | ||||
| } | ||||
|  | @ -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) { | ||||
| 	} | ||||
| } | ||||
|  | @ -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); | ||||
|     } | ||||
| } | ||||
|  | @ -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,0 +1,3 @@ | |||
| <component name="mmpub" displayname="mmpub"> | ||||
|   <dependencies/> | ||||
| </component> | ||||
|  | @ -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()); | ||||
| 	} | ||||
| } | ||||
|  | @ -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; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | @ -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); | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in New Issue