物料计划信息服务类标品代码
This commit is contained in:
parent
9bee99b80b
commit
44e463600e
|
|
@ -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[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue