备料计划转出库申请单-数量校验

This commit is contained in:
mzr 2024-12-30 18:18:20 +08:00
parent 5a3678225a
commit 30fa6ee4ef
1 changed files with 139 additions and 0 deletions

View File

@ -0,0 +1,139 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package nc.bs.pub.action;
import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.NCLocator;
import nc.bs.ic.pub.env.ICBSContext;
import nc.bs.ic.pub.util.ICBillVOQuery;
import nc.bs.pub.compiler.AbstractCompiler2;
import nc.bs.scmpub.pf.PfParameterUtil;
import nc.itf.ic.m4455.self.ISapplyBillMaintain;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.vo.ic.m4455.entity.SapplyBillBodyVO;
import nc.vo.ic.m4455.entity.SapplyBillVO;
import nc.vo.ic.pub.pf.ICPFParameter;
import nc.vo.ic.pub.util.ValueCheckUtil;
import nc.vo.ml.NCLangRes4VoTransl;
import nc.vo.pub.BusinessException;
import nc.vo.pub.compiler.PfParameterVO;
import nc.vo.pub.lang.UFDouble;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.pubapp.pattern.pub.MathTool;
import nccloud.baseapp.core.log.NCCForUAPLogger;
import java.util.Hashtable;
public class N_4455_WRITE extends AbstractCompiler2 {
private Hashtable m_keyHas = null;
private Hashtable m_methodReturnHas = new Hashtable();
private BaseDAO baseDAO = null;
public N_4455_WRITE() {
}
public Object runComClass(PfParameterVO vo) throws BusinessException {
try {
super.m_tmpVo = vo;
ICBSContext context = new ICBSContext();
ICPFParameter pfparam = (ICPFParameter) this.getUserObj();
if (pfparam == null) {
pfparam = new ICPFParameter();
}
if (ValueCheckUtil.isNullORZeroLength(pfparam.getBusinessCheckMap())) {
pfparam.setBAtpCheckFlag(false);
}
context.setICPFParameter(pfparam);
SapplyBillVO[] outVOs = (SapplyBillVO[]) ((SapplyBillVO[]) this.getVos());
// 保存前校验申请数量是否超过计划数量
for (SapplyBillVO billVO : outVOs) {
SapplyBillBodyVO[] bodyVOS = billVO.getBodys();
for (SapplyBillBodyVO bodyVO : bodyVOS) {
// 只判断来源单据是备料计划的出库申请
if (!"55A3".equals(bodyVO.getCsourcetype())) {
continue;
}
String csourcebillbid = bodyVO.getCsourcebillbid();
// 查询备料计划中的计划出库数量通过备料计划的表体主键
String getPlanNumSql = "SELECT nplanoutastnum "
+ "FROM mm_pickm_b "
+ "WHERE NVL(dr,0) = 0 AND cpickm_bid = '[csourcebillbid]'";
getPlanNumSql = getPlanNumSql.replace("[csourcebillbid]", csourcebillbid);
Object nplanoutastnum = getBaseDAO().executeQuery(getPlanNumSql,
new ColumnProcessor("nplanoutastnum"));
if (nplanoutastnum == null) {
continue;
}
UFDouble plantNum = new UFDouble(String.valueOf(nplanoutastnum));
// 通过备料计划的表体主键查询已申请数量
String getApplyNumSql = "SELECT NVL(SUM(nassistnum),0) nassistnum "
+ "FROM ic_sapply_b "
+ "WHERE NVL(dr,0) = 0 AND csourcebillbid = '[csourcebillbid]' and cgeneralbid != '[bid]'";
getApplyNumSql = getApplyNumSql.replace("[csourcebillbid]", csourcebillbid);
getApplyNumSql = getApplyNumSql.replace("[bid]", bodyVO.getPrimaryKey());
Object nassistnum = getBaseDAO().executeQuery(getApplyNumSql,
new ColumnProcessor("nassistnum"));
UFDouble applyNum = new UFDouble(String.valueOf(nassistnum));
NCCForUAPLogger.debug(String.format(
"出库申请保存: 来源单据表体主键 = [%S], 计划出库数量 = [%S], 已申请数量 = [%S], 本次申请数量 = [%S],",
csourcebillbid, plantNum, applyNum, bodyVO.getNassistnum()
));
UFDouble applyNum1 = applyNum.add(bodyVO.getNassistnum());
if (MathTool.compareTo(plantNum, applyNum1) < 0) {
nccloud.framework.core.exception.ExceptionUtils.wrapBusinessException("申请数量已超出计划数量,请检查!");
}
}
}
if (null != outVOs[0] && null != outVOs[0].getHead() && null != outVOs[0].getHead().getCgeneralhid()) {
PfParameterUtil<SapplyBillVO> util = new PfParameterUtil(this.getPfParameterVO(), outVOs);
SapplyBillVO[] originBills = (SapplyBillVO[]) util.getOrginBills();
if (originBills == null) {
originBills = (SapplyBillVO[]) (new ICBillVOQuery()).fetchVOWithLoc(outVOs);
}
SapplyBillVO[] clientFullBills = (SapplyBillVO[]) util.getClientFullInfoBill();
return ((ISapplyBillMaintain) NCLocator.getInstance().lookup(ISapplyBillMaintain.class)).update(clientFullBills, originBills);
} else {
SapplyBillVO[] retunVos = new SapplyBillVO[outVOs.length];
ISapplyBillMaintain service = (ISapplyBillMaintain) NCLocator.getInstance().lookup(ISapplyBillMaintain.class);
for (int i = 0; i < outVOs.length; ++i) {
retunVos[i] = service.insert(new SapplyBillVO[]{outVOs[i]})[0];
}
return retunVos;
}
} catch (Exception var8) {
ExceptionUtils.marsh(var8);
return null;
}
}
public String getCodeRemark() {
return NCLangRes4VoTransl.getNCLangRes().getStrByID("4008003_0", "04008003-0108");
}
private void setParameter(String key, Object val) {
if (this.m_keyHas == null) {
this.m_keyHas = new Hashtable();
}
if (val != null) {
this.m_keyHas.put(key, val);
}
}
private BaseDAO getBaseDAO() {
if (this.baseDAO == null) {
this.baseDAO = new BaseDAO();
}
return this.baseDAO;
}
}