负计划采购入库回写校验

This commit is contained in:
lihao 2025-10-28 16:12:41 +08:00
parent 8c76f8e3e9
commit 9d13298270
2 changed files with 164 additions and 0 deletions

View File

@ -0,0 +1,108 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package nc.bs.pu.m23.writeback.ic.m45;
import java.util.HashSet;
import java.util.Set;
import nc.bs.pu.m23.plugin.ArriveBPPlugInPoint;
import nc.bs.pu.m23.writeback.ic.rule.*;
import nc.impl.pubapp.pattern.data.view.ViewQuery;
import nc.impl.pubapp.pattern.data.view.ViewUpdate;
import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
import nc.pubitf.pu.m23.ic.m45.IWriteback23For45Para;
import nc.vo.ml.NCLangRes4VoTransl;
import nc.vo.pu.m23.entity.ArriveItemVO;
import nc.vo.pu.m23.entity.ArriveViewVO;
import nc.vo.pu.m23.utils.ArrivePublicUtil;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nccloud.commons.lang.ArrayUtils;
import nccloud.commons.lang.StringUtils;
public class Writeback23For45BP {
public Writeback23For45BP() {
}
public void writeback(IWriteback23For45Para[] paras) {
if (!ArrayUtils.isEmpty(paras)) {
this.checkWritePara(paras);
String[] bidArray = ArrivePublicUtil.getWriteParaBidArray(paras);
ViewQuery<ArriveViewVO> q = new ViewQuery(ArriveViewVO.class);
q.setSharedHead(true);
Set<String> bidSet = new HashSet();
for(int i = 0; i < bidArray.length; ++i) {
bidSet.add(bidArray[i]);
}
ArriveViewVO[] oldViewVOArray = (ArriveViewVO[])q.query((String[])bidSet.toArray(new String[bidSet.size()]));
ArriveBPPlugInPoint point = ArriveBPPlugInPoint.Writeback23For45BP;
AroundProcesser<ArriveViewVO> pc = new AroundProcesser(point);
this.addBeforeFinalRule(pc, paras);
this.addAfterRule(pc, paras);
pc.before(oldViewVOArray);
String[] names = new String[]{"naccumstorenum", "bletgostate", "naccumletgoinnum"};
ViewUpdate<ArriveViewVO> bo = new ViewUpdate();
oldViewVOArray = (ArriveViewVO[])bo.update(oldViewVOArray, ArriveItemVO.class, names);
pc.after(oldViewVOArray);
}
}
private void addAfterRule(AroundProcesser<ArriveViewVO> processer, IWriteback23For45Para[] paras) {
processer.addAfterRule(new ChkBStoreNumRule(UFBoolean.valueOf(paras[0].isNumUserConfirm())));
processer.addAfterRule(new ChknaccumstorenumRule());
}
private void addBeforeFinalRule(AroundProcesser<ArriveViewVO> processer, IWriteback23For45Para[] paras) {
processer.addBeforeFinalRule(new ChkBCreateFaCardRule());
processer.addBeforeFinalRule(new UpdateBBStoreNumRule(paras));
processer.addBeforeFinalRule(new UpdateViewStoreNumRule(paras));
processer.addBeforeFinalRule(new WriteAccumLetgoInnumRule(paras));
}
private void checkWritePara(IWriteback23For45Para[] paras) {
for(IWriteback23For45Para para : paras) {
if (StringUtils.isEmpty(para.getHID())) {
String message = NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0092");
ExceptionUtils.wrappBusinessException(message);
}
if (StringUtils.isEmpty(para.getBID())) {
String message = NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0093");
ExceptionUtils.wrappBusinessException(message);
}
}
}
public void writebackSagasCheck(IWriteback23For45Para[] paras) {
if (!ArrayUtils.isEmpty(paras)) {
this.checkWritePara(paras);
String[] bidArray = ArrivePublicUtil.getWriteParaBidArray(paras);
ViewQuery<ArriveViewVO> q = new ViewQuery(ArriveViewVO.class);
q.setSharedHead(true);
Set<String> bidSet = new HashSet();
for(int i = 0; i < bidArray.length; ++i) {
bidSet.add(bidArray[i]);
}
ArriveViewVO[] oldViewVOArray = (ArriveViewVO[])q.query((String[])bidSet.toArray(new String[bidSet.size()]));
ArriveBPPlugInPoint point = ArriveBPPlugInPoint.Writeback23For45BP;
AroundProcesser<ArriveViewVO> pc = new AroundProcesser(point);
this.addBeforeFinalSagasCheckRule(pc, paras);
pc.before(oldViewVOArray);
}
}
private void addBeforeFinalSagasCheckRule(AroundProcesser<ArriveViewVO> processer, IWriteback23For45Para[] paras) {
processer.addBeforeFinalRule(new ChkBCreateFaCardRule());
processer.addBeforeFinalRule(new UpdateBBStoreNumRule(paras, true));
processer.addBeforeFinalRule(new UpdateViewStoreNumRule(paras));
processer.addBeforeFinalRule(new WriteAccumLetgoInnumRule(paras, true));
}
}

View File

@ -0,0 +1,56 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package nc.bs.pu.m23.writeback.ic.rule;
import nc.bs.dao.BaseDAO;
import nc.bs.dao.DAOException;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.jdbc.framework.processor.MapProcessor;
import nc.vo.ml.NCLangRes4VoTransl;
import nc.vo.pu.m23.entity.ArriveItemVO;
import nc.vo.pu.m23.entity.ArriveViewVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDouble;
import nc.vo.pubapp.pattern.data.ValueUtils;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import java.util.Map;
public class ChknaccumstorenumRule implements IRule<ArriveViewVO> {
public ChknaccumstorenumRule() {
}
public void process(ArriveViewVO[] vos) {
if (vos != null && vos.length != 0) {
for(ArriveViewVO view : vos) {
try {
UFDouble naccumstorenum1= getNaccumstorenum(view.getBVO().getPk_arriveorder_b());
} catch (DAOException e) {
throw new RuntimeException(e);
}
UFDouble naccumstorenum = view.getBVO().getNaccumstorenum();
Object vbdef33 = view.getBVO().getVbdef33();
if(null != vbdef33 && null!=naccumstorenum && naccumstorenum.compareTo(new UFDouble(String.valueOf(vbdef33)))>0) {
try {
throw new BusinessException("累计入库主数量大于最终需求数量不能生成采购入库!");
} catch (BusinessException e) {
throw new RuntimeException(e);
}
}
}
}
}
private UFDouble getNaccumstorenum(String pkArriveorderB) throws DAOException {
// csourcebid
String mrlsql = "select naccumstorenum from po_arriveorder_b where pk_arriveorder_b = '" + pkArriveorderB + "' ";
Object mrl = new BaseDAO().executeQuery(mrlsql, new ColumnProcessor());
return new UFDouble(String.valueOf(mrl));
}
}