Merge remote-tracking branch 'origin/main'
This commit is contained in:
		
						commit
						442874e2f1
					
				|  | @ -0,0 +1,194 @@ | |||
| package nc.impl.bd.material.plan; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import nc.bs.bd.baseservice.busilog.BDOrgInfoBusiLogUtil; | ||||
| import nc.bs.bd.baseservice.md.BDSingleBaseService; | ||||
| import nc.bs.bd.material.plan.validator.MaterialPlanAsstValidator; | ||||
| import nc.bs.bd.material.plan.validator.MaterialPlanIsPermitApproveValidator; | ||||
| import nc.bs.bd.material.plan.validator.MaterialPlanSaveValidator; | ||||
| import nc.bs.bd.material.plan.validator.MaterialReplUniqueValidator; | ||||
| import nc.bs.businessevent.bd.BDCommonEventUtil; | ||||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.bs.framework.common.InvocationInfoProxy; | ||||
| import nc.bs.framework.common.NCLocator; | ||||
| import nc.bs.uif2.validation.NullValueValidator; | ||||
| import nc.bs.uif2.validation.Validator; | ||||
| import nc.itf.bd.material.plan.IMaterialPlanService; | ||||
| import nc.itf.org.IOrgUnitQryService; | ||||
| import nc.pubitf.uapbd.IMaterialIsShareService; | ||||
| import nc.vo.bd.material.plan.MaterialPlanVO; | ||||
| import nc.vo.bd.material.stock.MaterialReplVO; | ||||
| import nc.vo.bd.pub.SingleDistributedUpdateValidator; | ||||
| import nc.vo.org.OrgVO; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.CircularlyAccessibleValueObject; | ||||
| import nc.vo.pub.SuperVO; | ||||
| import nc.vo.pub.lang.UFBoolean; | ||||
| import nc.vo.util.BDPKLockUtil; | ||||
| import nc.vo.util.BDVersionValidationUtil; | ||||
| import nc.vo.util.bizlock.BizlockDataUtil; | ||||
| 
 | ||||
| 
 | ||||
| public class MaterialPlanServiceImpl | ||||
|         extends BDSingleBaseService<MaterialPlanVO> | ||||
|         implements IMaterialPlanService { | ||||
|     public MaterialPlanServiceImpl() { | ||||
|         super("8b7d49ab-7a65-4885-bcf1-7df89b84df4b", new String[]{"materialrepl"}); | ||||
|         setBusiLogUtil(new BDOrgInfoBusiLogUtil("8b7d49ab-7a65-4885-bcf1-7df89b84df4b", "c7dc0ccd-8872-4eee-8882-160e8f49dfad")); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     public void deleteMaterialPlanVO(MaterialPlanVO deleteVO) throws BusinessException { | ||||
|         deleteVO(deleteVO); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     protected void deletelockOperate(MaterialPlanVO vo) throws BusinessException { | ||||
|         BDPKLockUtil.lockString(new String[]{vo.getPk_material()}); | ||||
|         BDPKLockUtil.lockString(new String[]{getLockKey(vo)}); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     public MaterialPlanVO updateMaterialPlanVO(MaterialPlanVO vo) throws BusinessException { | ||||
|         fixChildVOFields(vo); | ||||
| 
 | ||||
| 
 | ||||
|         getUniqueFieldTrimUtil().trimUniqueFields(new SuperVO[]{vo}); | ||||
| 
 | ||||
| 
 | ||||
|         updatelockOperate(vo); | ||||
| 
 | ||||
| 
 | ||||
|         BDVersionValidationUtil.validateSuperVO(new SuperVO[]{vo}); | ||||
| 
 | ||||
| 
 | ||||
|         MaterialPlanVO oldVO = (MaterialPlanVO) retrieveVO(vo.getPrimaryKey()); | ||||
| 
 | ||||
| 
 | ||||
|         updateValidateVO(oldVO, vo); | ||||
| 
 | ||||
| 
 | ||||
|         setUpdateAuditInfo(vo); | ||||
| 
 | ||||
|         IMaterialIsShareService materialIsShareService = (IMaterialIsShareService) NCLocator.getInstance().lookup(IMaterialIsShareService.class); | ||||
| 
 | ||||
|         String pk_group = InvocationInfoProxy.getInstance().getGroupId(); | ||||
| 
 | ||||
| 
 | ||||
|         BDCommonEventUtil eventUtil = new BDCommonEventUtil(getMDId()); | ||||
|         if (!vo.getPk_org().equals(pk_group)) { | ||||
|             MaterialPlanVO[] oldVOs = getMaterialPlanVOs(oldVO); | ||||
|             MaterialPlanVO[] vos = getMaterialPlanVOs(vo); | ||||
|             eventUtil.setOldObjs(oldVOs); | ||||
|             if (materialIsShareService.isMaterialShare()) { | ||||
|                 eventUtil.dispatchUpdateBeforeEvent((Object[]) vos); | ||||
|             } else { | ||||
|                 eventUtil.dispatchUpdateBeforeEvent((Object[]) vos); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         dbUpdateVO(vo); | ||||
| 
 | ||||
| 
 | ||||
|         notifyVersionChangeWhenDataUpdated(vo); | ||||
| 
 | ||||
| 
 | ||||
|         vo = (MaterialPlanVO) retrieveVO(vo.getPrimaryKey()); | ||||
| 
 | ||||
| 
 | ||||
|         if (!vo.getPk_org().equals(pk_group)) { | ||||
|             MaterialPlanVO[] oldVOs = getMaterialPlanVOs(oldVO); | ||||
|             MaterialPlanVO[] vos = getMaterialPlanVOs(vo); | ||||
|             eventUtil.setOldObjs(oldVOs); | ||||
|             if (materialIsShareService.isMaterialShare()) { | ||||
|                 eventUtil.dispatchUpdateAfterEvent((Object[]) vos); | ||||
|             } else { | ||||
|                 eventUtil.dispatchUpdateAfterEvent((Object[]) vos); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         writeUpdatedBusiLog(oldVO, vo); | ||||
| 
 | ||||
|         return vo; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     protected void updatelockOperate(MaterialPlanVO vo) throws BusinessException { | ||||
|         BDPKLockUtil.lockString(new String[]{vo.getPk_material()}); | ||||
|         BDPKLockUtil.lockString(new String[]{getLockKey(vo)}); | ||||
|         BizlockDataUtil.lockDataByBizlock(new CircularlyAccessibleValueObject[]{vo}); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private String getLockKey(MaterialPlanVO vo) { | ||||
|         return vo.getPk_material() + "#" + vo.getPk_material(); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private void fixChildVOFields(MaterialPlanVO vo) throws BusinessException { | ||||
|         MaterialReplVO[] repls = vo.getMaterialrepl(); | ||||
|         if (repls != null && repls.length > 0) { | ||||
|             for (int i = 0; i < repls.length; i++) { | ||||
| 
 | ||||
|                 repls[i].setPk_material(vo.getPk_material()); | ||||
| 
 | ||||
|                 repls[i].setPk_materialplan(vo.getPk_materialplan()); | ||||
| 
 | ||||
|                 if (repls[i].getDisplace() == null) { | ||||
|                     repls[i].setDisplace(UFBoolean.FALSE); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     protected Validator[] getUpdateValidator(MaterialPlanVO oldVO) { | ||||
|         NullValueValidator nullValueValidator = NullValueValidator.createMDNullValueValidator(MaterialPlanVO.class.getName(), | ||||
|                 Arrays.asList(new String[]{"pk_material", "pk_group", "pk_org", "planbasnum", "roundingnum"})); | ||||
| 
 | ||||
| 
 | ||||
|         MaterialPlanSaveValidator saveValidator = new MaterialPlanSaveValidator(); | ||||
|         MaterialPlanAsstValidator asstValidator = new MaterialPlanAsstValidator(); | ||||
| 
 | ||||
|         MaterialReplUniqueValidator replUniqueValidator = new MaterialReplUniqueValidator(oldVO); | ||||
| 
 | ||||
|         MaterialPlanIsPermitApproveValidator isPermitApproveValidator = new MaterialPlanIsPermitApproveValidator(); | ||||
|         return new Validator[]{nullValueValidator, saveValidator, asstValidator, replUniqueValidator, isPermitApproveValidator, new SingleDistributedUpdateValidator()}; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private MaterialPlanVO[] getMaterialPlanVOs(MaterialPlanVO vo) throws BusinessException { | ||||
|         ArrayList<MaterialPlanVO> list = new ArrayList<MaterialPlanVO>(); | ||||
|         String pk_group = InvocationInfoProxy.getInstance().getGroupId(); | ||||
|         if (vo.getPk_group().equals(vo.getPk_org())) { | ||||
|             IOrgUnitQryService orgQryService = (IOrgUnitQryService) NCLocator.getInstance().lookup(IOrgUnitQryService.class); | ||||
|             OrgVO[] orgVOs = orgQryService.queryAllOrgUnitVOSByGroupIDAndClause(pk_group, " orgtype34 ='Y' "); | ||||
| 
 | ||||
| 
 | ||||
|             Map<String, Object> orgmap = new HashMap<String, Object>(); | ||||
|             String planSql = " pk_material='" + vo.getPk_material() + "'"; | ||||
| 
 | ||||
|             MaterialPlanVO[] vos = (MaterialPlanVO[]) (new BaseDAO()).retrieveByClause(MaterialPlanVO.class, planSql).toArray(new MaterialPlanVO[0]); | ||||
| 
 | ||||
|             for (MaterialPlanVO materialPlanVO : vos) { | ||||
|                 orgmap.put(materialPlanVO.getPk_org(), vo); | ||||
|             } | ||||
| 
 | ||||
|             if (orgVOs != null) { | ||||
|                 for (OrgVO orgvo : orgVOs) { | ||||
|                     MaterialPlanVO temp = (MaterialPlanVO) vo.clone(); | ||||
|                     if (orgmap.get(orgvo.getPk_org()) == null) { | ||||
|                         temp.setPk_org(orgvo.getPk_org()); | ||||
|                         list.add(temp); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             return (MaterialPlanVO[]) list.toArray(new MaterialPlanVO[0]); | ||||
|         } | ||||
|         return new MaterialPlanVO[]{vo}; | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue