备料计划转出库申请单-数量校验
This commit is contained in:
parent
5a3678225a
commit
30fa6ee4ef
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue