物料计划信息服务类标品代码

This commit is contained in:
mzr 2025-10-14 18:01:13 +08:00
parent 9bee99b80b
commit 44e463600e
1 changed files with 194 additions and 0 deletions

View File

@ -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];
}
}