Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
49f56dc502
|
|
@ -8,7 +8,6 @@ import nc.bs.ic.general.insert.rule.before.InsertBeforeEventRule;
|
|||
import nc.bs.ic.general.rule.after.AfterInsertRuleForRewriteSpecial;
|
||||
import nc.bs.ic.general.rule.after.AtpAfterUpdate;
|
||||
import nc.bs.ic.general.rule.before.CtplcustomeridCheck;
|
||||
import nc.bs.ic.m45.insert.rule.PurchaseInProjectRule;
|
||||
import nc.bs.ic.m4d.base.BPPlugInPoint;
|
||||
import nc.bs.ic.m4d.base.MaterialOutCheckRule;
|
||||
import nc.bs.ic.m4d.base.MaterialOutValueProcRule;
|
||||
|
|
@ -109,7 +108,6 @@ public class InsertBP implements IInsertBP<MaterialOutVO>,
|
|||
|
||||
//2025年6月13日09点38分 -- 物料档案基本页签启用项目辅助属性+库存组织未启用项目,采购入库单保存时(包含接口导入)清除行项目,材料出库单保存时(包含接口导入)清除行项目
|
||||
processor.addBeforeRule(new MaterialOutProjectRule());
|
||||
processor.addBeforeRule(new MaterialOutBillDateRule());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,57 +0,0 @@
|
|||
package nc.bs.ic.m4d.insert.rule;
|
||||
|
||||
import nc.bs.ic.pub.base.ICRule;
|
||||
import nc.bs.uapbd.util.MyHelper;
|
||||
import nc.util.mmf.framework.base.MMValueCheck;
|
||||
import nc.vo.ic.general.define.ICBillHeadVO;
|
||||
import nc.vo.ic.general.define.ICBillVO;
|
||||
import nc.vo.ic.m4d.entity.MaterialOutVO;
|
||||
import nc.vo.org.StockOrgVO;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pub.lang.UFDate;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
|
||||
/**
|
||||
* 精密-材料出库新增-单据日期赋值-启源领料
|
||||
*
|
||||
* @author mzr
|
||||
* @date 2025/10/26
|
||||
*/
|
||||
public class MaterialOutBillDateRule extends ICRule<MaterialOutVO> {
|
||||
@Override
|
||||
public void process(MaterialOutVO[] vos) {
|
||||
if (MMValueCheck.isEmpty(vos)) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
for (ICBillVO vo : vos) {
|
||||
ICBillHeadVO headVO = vo.getParentVO();
|
||||
String pk_org = (String) headVO.getAttributeValue("pk_org");
|
||||
String orgCode = MyHelper.transferField(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_STOCKORG, pk_org);
|
||||
// 启源领料id
|
||||
String vdef9 = headVO.getVdef9();
|
||||
if ("C038".equals(orgCode) && MMValueCheck.isNotEmpty(vdef9)) {
|
||||
// 启源传入的单据,单据日期增加校验
|
||||
UFDate dbilldate = headVO.getDbilldate();
|
||||
// 设置单据日期, 如果单据日期小于2025-11-02,则单据日期设置为2025-11-02
|
||||
UFDate ufDate = new UFDate("2025-11-02");
|
||||
if (dbilldate != null) {
|
||||
int i = dbilldate.compareTo(ufDate);
|
||||
if (i < 0) {
|
||||
headVO.setDbilldate(ufDate);
|
||||
}
|
||||
} else {
|
||||
UFDate nowDate = new UFDate();
|
||||
int i = nowDate.compareTo(ufDate);
|
||||
if (i < 0) {
|
||||
headVO.setDbilldate(ufDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
ExceptionUtils.wrappException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package nc.pubimpl.ic.m4d.mm55a3.action;
|
||||
|
||||
import nc.bs.ic.general.rule.before.IgnoreSafetyStockCheck;
|
||||
import nc.bs.ic.general.rule.before.MaterialOutBillDateRule;
|
||||
import nc.bs.ic.general.rule.before.RowNoProcessForPushBill;
|
||||
import nc.bs.ic.m4d.base.ServicePluginPoint;
|
||||
import nc.bs.ic.m4d.insert.InsertBP;
|
||||
import nc.bs.ic.pub.base.ICAroundProcesser;
|
||||
import nc.vo.ic.general.util.BillChangeUtil;
|
||||
import nc.vo.ic.m4d.entity.MaterialOutVO;
|
||||
import nc.vo.pubapp.pattern.log.TimeLog;
|
||||
|
||||
public class PushSaveActionFor55A3 {
|
||||
public PushSaveActionFor55A3() {
|
||||
}
|
||||
|
||||
public MaterialOutVO[] pushSave(MaterialOutVO[] vos, boolean isFillNum) {
|
||||
ICAroundProcesser<MaterialOutVO> processor = new ICAroundProcesser(ServicePluginPoint.pushSaveFor55A3);
|
||||
processor.addBeforeRule(new MaterialOutBillDateRule<>());
|
||||
processor.addBeforeRule(new Push4DFor55A3BeforeProcess(isFillNum));
|
||||
processor.addBeforeRule(new IgnoreSafetyStockCheck());
|
||||
processor.addBeforeRule(new RowNoProcessForPushBill());
|
||||
TimeLog.logStart();
|
||||
(new BillChangeUtil()).dealLiabilityFor4D(vos);
|
||||
MaterialOutVO[] beforeRstVos = (MaterialOutVO[])processor.before(vos);
|
||||
TimeLog.info("调用新增保存BP前执行业务规则");
|
||||
TimeLog.logStart();
|
||||
MaterialOutVO[] ret = (new InsertBP()).insert(beforeRstVos);
|
||||
TimeLog.info("调用新增保存BP,进行保存");
|
||||
TimeLog.logStart();
|
||||
processor.after(ret);
|
||||
TimeLog.info("调用新增保存BP后执行业务规则");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,219 @@
|
|||
package nc.bs.ic.general.insert;
|
||||
|
||||
import nc.bs.ic.billcode.rule.GeneralBillAdaptor;
|
||||
import nc.bs.ic.billcode.rule.ICGetBillCodeRule;
|
||||
import nc.bs.ic.billcode.rule.ICUniqueBillCode;
|
||||
import nc.bs.ic.general.insert.rule.after.AutoGeneralBillSign;
|
||||
import nc.bs.ic.general.insert.rule.after.DeleteLocationVOAfterBillInsert;
|
||||
import nc.bs.ic.general.insert.rule.after.FlowAccountUpdate;
|
||||
import nc.bs.ic.general.insert.rule.after.InsertAfterEventRule;
|
||||
import nc.bs.ic.general.insert.rule.after.LocationSaveAfterBillInsert;
|
||||
import nc.bs.ic.general.insert.rule.after.RewriteCorNum;
|
||||
import nc.bs.ic.general.insert.rule.after.SnCodeInsertAfterRule;
|
||||
import nc.bs.ic.general.insert.rule.before.BillDefaultValueSetter;
|
||||
import nc.bs.ic.general.insert.rule.before.CalTotalItems;
|
||||
import nc.bs.ic.general.insert.rule.before.DeasInfoHandle;
|
||||
import nc.bs.ic.general.insert.rule.before.DefaultBatchGenerate;
|
||||
import nc.bs.ic.general.insert.rule.before.ICBillDataCheck;
|
||||
import nc.bs.ic.general.insert.rule.before.ICStockOrgEnableCheckRule;
|
||||
import nc.bs.ic.general.insert.rule.before.InsertBeforeEventRule;
|
||||
import nc.bs.ic.general.insert.rule.before.IsFixedSpace;
|
||||
import nc.bs.ic.general.insert.rule.before.IsSeparateSpace;
|
||||
import nc.bs.ic.general.insert.rule.before.SnCodeInsertBeforeRule;
|
||||
import nc.bs.ic.general.rule.after.AtpAfterUpdate;
|
||||
import nc.bs.ic.general.rule.after.BarcodeOnhandCheck;
|
||||
import nc.bs.ic.general.rule.after.InOutTraceCheck;
|
||||
import nc.bs.ic.general.rule.after.MonthAfterUpdate;
|
||||
import nc.bs.ic.general.rule.after.OnhandAfterUpdate;
|
||||
import nc.bs.ic.general.rule.after.UpdateBatchByBill;
|
||||
import nc.bs.ic.general.rule.before.*;
|
||||
import nc.bs.ic.pub.base.ICAroundProcesser;
|
||||
import nc.bs.ic.pub.base.IInsertRuleProvider;
|
||||
import nc.bs.ic.pub.bp.BaseInsertBPTemplate;
|
||||
import nc.impl.pubapp.pattern.rule.plugin.IPluginPoint;
|
||||
import nc.vo.ic.general.define.ICBillVO;
|
||||
import nc.vo.ic.general.define.MetaNameConst;
|
||||
import nc.vo.ic.pub.define.ICPubMetaNameConst;
|
||||
import nc.vo.ic.pub.util.StringUtil;
|
||||
import nc.vo.scmpub.rule.AutoMaterialAssignRule;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* <b>普通出入库单新增模板:</b>
|
||||
* <ul>
|
||||
* <li>
|
||||
* </ul>
|
||||
* <p>
|
||||
*
|
||||
* @param <T> <p>
|
||||
* @version 6.0
|
||||
* @since 6.0
|
||||
* @author songhy
|
||||
* @time 2010-8-31 上午11:30:28
|
||||
*/
|
||||
public class InsertBPTemplate<T extends ICBillVO> extends
|
||||
BaseInsertBPTemplate<T> {
|
||||
|
||||
/**
|
||||
* InsertBPTemplate 的构造子
|
||||
*
|
||||
* @param point
|
||||
* @param rules
|
||||
*/
|
||||
public InsertBPTemplate(IPluginPoint point, IInsertRuleProvider<T> rules) {
|
||||
super(point, rules);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得处理后规则集合
|
||||
*
|
||||
* @return
|
||||
* @since 6.0
|
||||
*/
|
||||
@Override
|
||||
protected void addAfterRule(T[] vos, ICAroundProcesser<T> processor) {
|
||||
|
||||
// 检验单据号是否重复
|
||||
processor.addAfterRule(new ICUniqueBillCode<T>(new GeneralBillAdaptor(
|
||||
vos[0])));
|
||||
// 在单据保存后保存单品数据
|
||||
processor.addAfterRule(new LocationSaveAfterBillInsert<T>());
|
||||
// 必须放在LocationSaveAfterBillInsert规则后
|
||||
processor.addAfterRule(new DeleteLocationVOAfterBillInsert<T>());
|
||||
// 回写累计出库
|
||||
processor.addAfterRule(new RewriteCorNum<T>());
|
||||
// 出库跟踪入库检查
|
||||
processor.addAfterRule(new InOutTraceCheck<T>());
|
||||
// 子类的规则 这个顺序禁止变动
|
||||
this.getRuleProvider().addAfterRule(vos, processor);
|
||||
// 现存量更新后规则
|
||||
OnhandAfterUpdate<T> hand = new OnhandAfterUpdate<T>();
|
||||
processor.addAfterRule(hand);
|
||||
// 可用量更新后规则
|
||||
processor.addAfterRule(new AtpAfterUpdate<T>());
|
||||
// 负结存检查(去掉 放入现存量更新后 更合适)
|
||||
// processor.addAfterRule(new BillOnhandCheck<T>());
|
||||
// 安全库存检查(去掉 放入现存量更新 更合适)
|
||||
// processor.addAfterRule(new SafetyStockCheck<T>());
|
||||
// 再订购点检查(去掉 放入现存量更新 更合适)
|
||||
// processor.addAfterRule(new ReorderPointCheck<T>());
|
||||
// 记流水账
|
||||
processor.addAfterRule(new FlowAccountUpdate<T>());
|
||||
// 月结补单后规则
|
||||
processor.addAfterRule(new MonthAfterUpdate<T>());
|
||||
// 更新批次档案(必须放在后规则,且必须在单据号获得和记流水账规则后)
|
||||
processor.addAfterRule(new UpdateBatchByBill<T>());
|
||||
processor.addAfterRule(new InsertAfterEventRule<T>());
|
||||
// 条码结存和条码重复校验
|
||||
processor.addAfterRule(new BarcodeOnhandCheck<T>());
|
||||
// 检查是否保存即签字
|
||||
processor.addAfterRule(new AutoGeneralBillSign<T>());
|
||||
// 新增业务日志
|
||||
// processor.addAfterRule(new AddBusinessLogRule<T>());
|
||||
processor.addAfterRule(new SnCodeInsertAfterRule<T>());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得处理前规则集合
|
||||
*
|
||||
* @return
|
||||
* @since 6.0
|
||||
*/
|
||||
@Override
|
||||
protected void addBeforeRule(T[] vos, ICAroundProcesser<T> processor) {
|
||||
//库存扩展清空项目字段--规则限制单据--2025年7月17日09点54分
|
||||
processor.addBeforeRule(new ICItemProjectValueRule());
|
||||
|
||||
// 发布交易类型设置交易类型主键
|
||||
processor.addBeforeRule(new InOutBizTypeRule<T>());
|
||||
// 库存交易类型检查
|
||||
processor.addBeforeRule(new ICTranstypeCheck<T>());
|
||||
// 单据默认值设置
|
||||
processor.addBeforeRule(new BillDefaultValueSetter<T>());
|
||||
//组织停用检查
|
||||
processor.addBeforeRule(new ICStockOrgEnableCheckRule<T>());
|
||||
// 精密-单据日期检查
|
||||
processor.addBeforeRule(new MaterialOutBillDateRule<T>());
|
||||
// 开关账检查
|
||||
processor.addBeforeRule(new BaseAccountStatusCheck<T>());
|
||||
// 总数量,体积计算
|
||||
processor.addBeforeRule(new CalTotalItems<T>());
|
||||
// 默认货位数据生成
|
||||
processor.addBeforeRule(new DefaultSpaceGenerate<T>());
|
||||
|
||||
// 保存时增加库存单据进行货位校验的时机参数校验
|
||||
processor.addBeforeRule(new GoodsAllocationCheck<T>());
|
||||
|
||||
// 处理拆解信息
|
||||
processor.addBeforeRule(new DeasInfoHandle<T>());
|
||||
// 单据实体数据
|
||||
processor.addBeforeRule(new ICBillDataCheck<T>());
|
||||
|
||||
//物料自动分配
|
||||
processor.addBeforeRule(new AutoMaterialAssignRule<T>(ICPubMetaNameConst.CMATERIALVID,
|
||||
new String[] { ICPubMetaNameConst.PK_ORG, ICPubMetaNameConst.COSTREGIONID, MetaNameConst.CCOSTDOMAINID,
|
||||
MetaNameConst.CPURORGOID, MetaNameConst.CFANACEORGOID },
|
||||
new String[] { MetaNameConst.CLIABILITYOID, MetaNameConst.CIOLIABILITYOID }));
|
||||
|
||||
// 检查存货是否分配到库存组织(56保存后规则)
|
||||
processor.addBeforeRule(new InvAllocCheck<T>());
|
||||
// 仓库检查:包括库存组织与仓库关系检查,包括代储,废品仓,资产仓
|
||||
processor.addBeforeRule(new WarehouseAttributeCheck<T>());
|
||||
// 序列号生成
|
||||
processor.addBeforeRule(new SnCodeInsertBeforeRule<T>());
|
||||
// 单品数据检查
|
||||
processor.addBeforeRule(new LocactionEntityCheck<T>());
|
||||
// 设备类物料序列号检查
|
||||
processor.addBeforeRule(new EquipSerialExistCheck<T>());
|
||||
// 是否固定货位 改为函数实现
|
||||
processor.addBeforeRule(new IsFixedSpace<T>());
|
||||
// 是否单独货位
|
||||
processor.addBeforeRule(new IsSeparateSpace<T>());
|
||||
// 物料相关属性检查 包括(物料辅助属性检查)
|
||||
processor.addBeforeRule(new InvAttributeCheck<T>());
|
||||
// 自定义项检查
|
||||
processor.addBeforeRule(new UserDefCheckRule<T>());
|
||||
// 自由辅助属性控制
|
||||
processor.addBeforeRule(new MaterialAssistantCheck<T>());
|
||||
// 库存状态和交易类型检查,需要写Adapter
|
||||
processor.addBeforeRule(new StateAndTranTypeMatch<T>());
|
||||
|
||||
// 发运清单下产成品入库单信息填充
|
||||
processor.addBeforeRule(new InOutFillForDeliverylistRule<T>());
|
||||
// 默认批次生成
|
||||
processor.addBeforeRule(new DefaultBatchGenerate<T>());
|
||||
// 批次属性检查
|
||||
processor.addBeforeRule(new BatchAttributeCheck<T>());
|
||||
// 换算率格式化规则
|
||||
processor.addBeforeRule(new ChangeRateFormat<T>());
|
||||
// 获取单据号
|
||||
processor.addBeforeRule(new ICGetBillCodeRule<T>(new GeneralBillAdaptor(
|
||||
vos[0])));
|
||||
// 自动平衡主辅
|
||||
processor.addBeforeRule(new NumBalanceRule<T>());
|
||||
// 可用量更新前规则
|
||||
processor.addBeforeRule(new AtpBeforeUpdate<T>());
|
||||
|
||||
// 现存量更新前规则
|
||||
processor.addBeforeRule(new OnhandBeforeUpdate<T>());
|
||||
|
||||
// 补单前规则
|
||||
processor.addBeforeRule(new MonthBeforeUpdate<T>());
|
||||
this.getRuleProvider().addBeforeRule(vos, processor);
|
||||
//增加业务事件监听规则
|
||||
processor.addBeforeRule(new InsertBeforeEventRule<T>());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected T[] insertBill(T[] vos) {
|
||||
for (T vo : vos) {
|
||||
if (!StringUtil.isSEmptyOrNull(vo.getHead().getCgeneralhid())) {
|
||||
continue;
|
||||
}
|
||||
vo.getHead().setCgeneralhid(vo.getTempBillPK());
|
||||
}
|
||||
return super.insertBill(vos);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
package nc.bs.ic.general.rule.before;
|
||||
|
||||
import nc.bs.dao.BaseDAO;
|
||||
import nc.bs.ic.pub.base.ICRule;
|
||||
import nc.jdbc.framework.processor.MapListProcessor;
|
||||
import nc.vo.ic.general.define.ICBillBodyVO;
|
||||
import nc.vo.ic.general.define.ICBillVO;
|
||||
import nc.vo.ic.m46.entity.FinProdInVO;
|
||||
import nc.vo.ic.m4a.entity.GeneralInVO;
|
||||
import nc.vo.ic.m4c.entity.SaleOutVO;
|
||||
import nc.vo.ic.m4i.entity.GeneralOutVO;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pub.lang.UFBoolean;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
import nc.vo.pubapp.pattern.pub.SqlBuilder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Classname ICItemProjectValueRule
|
||||
* @Description 物料档案基本页签启用项目辅助属性+库存组织未启用项目,成品入库单、其它入库单保存时(包含接口导入)清除行项目,销售出库单、其它出库单保存时(包含接口导入)清除行项目;
|
||||
* @Version 1.0.0
|
||||
* @Date 2025/7/17 9:55
|
||||
* @Created by ame
|
||||
*/
|
||||
public class ICItemProjectValueRule <E extends ICBillVO> extends ICRule<E> {
|
||||
private static BaseDAO dao = new BaseDAO();
|
||||
@Override
|
||||
public void process(E[] vos) {
|
||||
if (vos == null || vos.length < 1) {
|
||||
return;
|
||||
}
|
||||
//过滤单据
|
||||
UFBoolean isExe= checkBilltype(vos[0]);
|
||||
if(!isExe.booleanValue()){
|
||||
return;
|
||||
}
|
||||
try {
|
||||
//获取表头计划组织及表体行物料
|
||||
for (ICBillVO vo : vos) {
|
||||
String pk_org = (String) vo.getParentVO().getAttributeValue("pk_org");
|
||||
ICBillBodyVO[] bodys = vo.getBodys();
|
||||
Map<String, String> material_construct = new HashMap<>();
|
||||
Map<String, String> material_stock = new HashMap<>();
|
||||
queryFix2ByMaterial(bodys, material_construct, material_stock, pk_org);
|
||||
for (ICBillBodyVO body : bodys) {
|
||||
String cmaterialvid = body.getCmaterialvid();
|
||||
if (material_construct.containsKey(cmaterialvid) && "Y".equals(material_construct.get(cmaterialvid)) && (!material_stock.containsKey(cmaterialvid) || "N".equals(material_stock.get(cmaterialvid)))) {
|
||||
body.setCprojectid(null);
|
||||
body.setStatus(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (BusinessException var6) {
|
||||
ExceptionUtils.wrappException(var6);
|
||||
}
|
||||
}
|
||||
|
||||
private UFBoolean checkBilltype(E vo) {
|
||||
//2025年7月29日14点54分--取消其它出入库的启用项目逻辑
|
||||
// if(vo instanceof FinProdInVO ||vo instanceof GeneralInVO || vo instanceof SaleOutVO || vo instanceof GeneralOutVO){
|
||||
if(vo instanceof FinProdInVO|| vo instanceof SaleOutVO){
|
||||
return UFBoolean.TRUE;
|
||||
}else {
|
||||
return UFBoolean.FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
private void queryFix2ByMaterial(ICBillBodyVO[] childrenVOs, Map<String, String> materialConstruct, Map<String, String> materialStock, String pkOrg) throws BusinessException {
|
||||
List<String> materials = new ArrayList<>();
|
||||
|
||||
for (ICBillBodyVO childrenVO : childrenVOs) {
|
||||
String cmaterialvid = childrenVO.getCmaterialvid();
|
||||
materials.add(cmaterialvid);
|
||||
}
|
||||
SqlBuilder sql = new SqlBuilder();
|
||||
sql.append(" SELECT bdm.pk_material ,bdmf.fix2,bdms.fixasst2 ");
|
||||
sql.append(" FROM bd_material bdm ");
|
||||
sql.append(" LEFT JOIN bd_marasstframe bdmf ON bdm.pk_marasstframe =bdmf.pk_marasstframe ");
|
||||
sql.append(" LEFT JOIN bd_materialstock bdms ON bdms.PK_MATERIAL =bdm.PK_MATERIAL AND bdms.PK_ORG ='" + pkOrg + "' ");
|
||||
sql.append(" where ");
|
||||
//判断物料是否超500行
|
||||
if (materials != null && materials.size() <= 500) {
|
||||
sql.append("bdm.pk_material", materials.toArray(new String[0]));
|
||||
}
|
||||
if (materials != null && materials.size() > 500) {
|
||||
//按照500条数据分批查询
|
||||
List<List<String>> result = new ArrayList<>();
|
||||
int total = materials.size();
|
||||
for (int i = 0; i < total; i += 500) {
|
||||
int end = Math.min(total, i + 500);
|
||||
result.add(new ArrayList<>(materials.subList(i, end)));
|
||||
}
|
||||
for (int i = 0; i < result.size(); i++) {
|
||||
sql.append("bdm.pk_material", result.get(i).toArray(new String[0]));
|
||||
if (i != result.size() - 1) {
|
||||
sql.append(" or ");
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> remain = (List<Map<String, Object>>) dao.executeQuery(sql.toString(), new MapListProcessor());
|
||||
if (remain == null || remain.isEmpty()) {
|
||||
throw new BusinessException("物料查询辅助属性结构失败,sql【" + sql + "】");
|
||||
}
|
||||
for (Map<String, Object> map : remain) {
|
||||
String fix2 = map.get("fix2") == null ? "N" : map.get("fix2").toString();
|
||||
String fixasst2 = map.get("fixasst2") == null ? "N" : map.get("fixasst2").toString();
|
||||
materialConstruct.put(map.get("pk_material").toString(), fix2);
|
||||
materialStock.put(map.get("pk_material").toString(), fixasst2);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
package nc.bs.ic.general.rule.before;
|
||||
|
||||
import nc.bs.ic.pub.base.ICRule;
|
||||
import nc.bs.uapbd.util.MyHelper;
|
||||
import nc.util.mmf.framework.base.MMValueCheck;
|
||||
import nc.vo.ic.general.define.ICBillHeadVO;
|
||||
import nc.vo.ic.general.define.ICBillVO;
|
||||
import nc.vo.ic.m4d.entity.MaterialOutVO;
|
||||
import nc.vo.org.StockOrgVO;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pub.lang.UFDate;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
|
||||
/**
|
||||
* 精密-材料出库新增-单据日期赋值-启源领料
|
||||
*
|
||||
* @author mzr
|
||||
* @date 2025/10/26
|
||||
*/
|
||||
public class MaterialOutBillDateRule<E extends ICBillVO> extends ICRule<E> {
|
||||
@Override
|
||||
public void process(E[] vos) {
|
||||
if (MMValueCheck.isEmpty(vos)) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
for (ICBillVO vo : vos) {
|
||||
if (vo instanceof MaterialOutVO) {
|
||||
ICBillHeadVO headVO = vo.getParentVO();
|
||||
String pk_org = (String) headVO.getAttributeValue("pk_org");
|
||||
String orgCode = MyHelper.transferField(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_STOCKORG, pk_org);
|
||||
// 启源领料id
|
||||
String vdef9 = headVO.getVdef9();
|
||||
if ("C038".equals(orgCode) && MMValueCheck.isNotEmpty(vdef9)) {
|
||||
// 启源传入的单据,单据日期增加校验
|
||||
UFDate dbilldate = headVO.getDbilldate();
|
||||
// 设置单据日期, 如果单据日期小于2025-11-02,则单据日期设置为2025-11-02
|
||||
UFDate ufDate = new UFDate("2025-11-02");
|
||||
if (dbilldate != null) {
|
||||
int i = dbilldate.compareTo(ufDate);
|
||||
if (i < 0) {
|
||||
headVO.setDbilldate(ufDate);
|
||||
}
|
||||
} else {
|
||||
UFDate nowDate = new UFDate();
|
||||
int i = nowDate.compareTo(ufDate);
|
||||
if (i < 0) {
|
||||
headVO.setDbilldate(ufDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
ExceptionUtils.wrappException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -142,8 +142,8 @@ public class PickmRewriteNNum4DBP {
|
|||
PickmItemVO[] pickmItemVOS = update.update(updateItems);
|
||||
|
||||
//备料计划点击备料重算后调高压MES修改
|
||||
// SyncGyMesPickmUtil pickmUtil = new SyncGyMesPickmUtil();
|
||||
// pickmUtil.process(aggVOs);
|
||||
SyncGyMesPickmUtil pickmUtil = new SyncGyMesPickmUtil();
|
||||
pickmUtil.process(aggVOs);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,9 +101,10 @@ public class AfterApproveRuleHighpressureMes implements IRule<AggPickmVO> {
|
|||
// 生产部门
|
||||
String deptsql = " select code,name from org_dept where pk_dept='" + pickmHeadVO.getCdeptid() + "' and dr=0 ";
|
||||
Map<String, Object> dept = (Map<String, Object>) baseDAO.executeQuery(deptsql, new MapProcessor());
|
||||
singleObj.put("bipDeptName", dept.get("name")); // 生产部门
|
||||
singleObj.put("bipDeptId", dept.get("code")); // 生产部门编码
|
||||
|
||||
if (!dept.isEmpty()) {
|
||||
singleObj.put("bipDeptName", dept.get("name")); // 生产部门
|
||||
singleObj.put("bipDeptId", dept.get("code")); // 生产部门编码
|
||||
}
|
||||
singleObj.put("bipProcessProductionOrderId", pickmHeadVO.getVsourcemocode()); // 流程生产订单号
|
||||
singleObj.put("bipProcessProductionOrderRowNum", pickmHeadVO.getVsourcemorowcode()); // 来源单据号行号
|
||||
singleObj.put("bipParentProcessProductionOrderId", pickmHeadVO.getVfirstbillcode()); // 上级来源单据号
|
||||
|
|
@ -140,8 +141,8 @@ public class AfterApproveRuleHighpressureMes implements IRule<AggPickmVO> {
|
|||
JSONObject itemObj = new JSONObject();
|
||||
|
||||
itemObj.put("bipChildId", item.getCpickm_bid()); // 子项主键ID
|
||||
// itemObj.put("bchkitemforwr", item.getBchkitemforwr()); // 完工齐套检查
|
||||
itemObj.put("bchkitemforwr", "Y"); // 完工齐套检查
|
||||
// itemObj.put("bchkitemforwr", "Y"); // 完工齐套检查
|
||||
itemObj.put("bchkitemforwr",item.getBchkitemforwr().booleanValue()?"Y":"N"); // 完工齐套检查
|
||||
itemObj.put("quantityPerSet", item.getNunituseastnum() != null ? item.getNunituseastnum().doubleValue() : null); // 单套数量(单位用量)
|
||||
itemObj.put("reservedQuantity", item.getNatpastnum() != null ? item.getNatpastnum().doubleValue() : null); // 预留数量
|
||||
itemObj.put("cumulativePendingQuantity", item.getNshouldastnum() != null ? item.getNshouldastnum().doubleValue() : null); // 累计待发数量
|
||||
|
|
@ -180,8 +181,10 @@ public class AfterApproveRuleHighpressureMes implements IRule<AggPickmVO> {
|
|||
// 生产部门
|
||||
String deptsql = " select code,name from org_dept where pk_dept='" + pickmHeadVO.getCdeptid() + "' and dr=0 ";
|
||||
Map<String, Object> dept = (Map<String, Object>) baseDAO.executeQuery(deptsql, new MapProcessor());
|
||||
singleObj.put("bipDeptName", dept.get("name")); // 生产部门
|
||||
singleObj.put("bipDeptId", dept.get("code")); // 生产部门编码
|
||||
if (!dept.isEmpty()) {
|
||||
singleObj.put("bipDeptName", dept.get("name")); // 生产部门
|
||||
singleObj.put("bipDeptId", dept.get("code")); // 生产部门编码
|
||||
}
|
||||
|
||||
singleObj.put("bipProcessProductionOrderId", pickmHeadVO.getVsourcemocode()); // 流程生产订单号
|
||||
singleObj.put("bipProcessProductionOrderRowNum", pickmHeadVO.getVsourcemorowcode()); // 来源单据号行号
|
||||
|
|
@ -220,7 +223,8 @@ public class AfterApproveRuleHighpressureMes implements IRule<AggPickmVO> {
|
|||
JSONObject itemObj = new JSONObject();
|
||||
|
||||
itemObj.put("bipChildId", item.getCpickm_bid()); // 子项主键ID
|
||||
itemObj.put("bchkitemforwr", "Y"); // 完工齐套检查
|
||||
// itemObj.put("bchkitemforwr", "Y"); // 完工齐套检查
|
||||
itemObj.put("bchkitemforwr",item.getBchkitemforwr().booleanValue()?"Y":"N"); // 完工齐套检查
|
||||
itemObj.put("quantityPerSet", item.getNunituseastnum() != null ? item.getNunituseastnum().doubleValue() : null); // 单套数量(单位用量)
|
||||
itemObj.put("reservedQuantity", item.getNatpastnum() != null ? item.getNatpastnum().doubleValue() : null); // 预留数量
|
||||
itemObj.put("cumulativePendingQuantity", item.getNshouldastnum() != null ? item.getNshouldastnum().doubleValue() : null); // 累计待发数量
|
||||
|
|
|
|||
|
|
@ -130,9 +130,10 @@ public class AfterPickmRuleHighpressureRule implements IRule<PMOAggVO> {
|
|||
// 生产部门
|
||||
String deptsql = " select code,name from org_dept where pk_dept='" + pickmHeadVO.getCdeptid() + "' and dr=0 ";
|
||||
Map<String, Object> dept = (Map<String, Object>) baseDAO.executeQuery(deptsql, new MapProcessor());
|
||||
singleObj.put("bipDeptName", dept.get("name")); // 生产部门
|
||||
singleObj.put("bipDeptId", dept.get("code")); // 生产部门编码
|
||||
|
||||
if (!dept.isEmpty()) {
|
||||
singleObj.put("bipDeptName", dept.get("name")); // 生产部门
|
||||
singleObj.put("bipDeptId", dept.get("code")); // 生产部门编码
|
||||
}
|
||||
singleObj.put("bipProcessProductionOrderId", pickmHeadVO.getVsourcemocode()); // 流程生产订单号
|
||||
singleObj.put("bipProcessProductionOrderRowNum", pickmHeadVO.getVsourcemorowcode()); // 来源单据号行号
|
||||
singleObj.put("bipParentProcessProductionOrderId", pickmHeadVO.getVfirstbillcode()); // 上级来源单据号
|
||||
|
|
@ -168,7 +169,8 @@ public class AfterPickmRuleHighpressureRule implements IRule<PMOAggVO> {
|
|||
JSONObject itemObj = new JSONObject();
|
||||
|
||||
itemObj.put("bipChildId", item.getCpickm_bid()); // 子项主键ID
|
||||
itemObj.put("bchkitemforwr", "Y"); // 完工齐套检查
|
||||
// itemObj.put("bchkitemforwr", "Y"); // 完工齐套检查
|
||||
itemObj.put("bchkitemforwr",item.getBchkitemforwr().booleanValue()?"Y":"N"); // 完工齐套检查
|
||||
itemObj.put("quantityPerSet", item.getNunituseastnum() != null ? item.getNunituseastnum().doubleValue() : null); // 单套数量(单位用量)
|
||||
itemObj.put("reservedQuantity", item.getNatpastnum() != null ? item.getNatpastnum().doubleValue() : null); // 预留数量
|
||||
itemObj.put("cumulativePendingQuantity", item.getNshouldastnum() != null ? item.getNshouldastnum().doubleValue() : null); // 累计待发数量
|
||||
|
|
|
|||
|
|
@ -88,9 +88,10 @@ public class SyncGyMesPickmUtil {
|
|||
// 生产部门
|
||||
String deptsql = " select code,name from org_dept where pk_dept='" + pickmHeadVO.getCdeptid() + "' and dr=0 ";
|
||||
Map<String, Object> dept = (Map<String, Object>) baseDAO.executeQuery(deptsql, new MapProcessor());
|
||||
singleObj.put("bipDeptName", dept.get("name")); // 生产部门
|
||||
singleObj.put("bipDeptId", dept.get("code")); // 生产部门编码
|
||||
|
||||
if (!dept.isEmpty()) {
|
||||
singleObj.put("bipDeptName", dept.get("name")); // 生产部门
|
||||
singleObj.put("bipDeptId", dept.get("code")); // 生产部门编码
|
||||
}
|
||||
singleObj.put("bipProcessProductionOrderId", pickmHeadVO.getVsourcemocode()); // 流程生产订单号
|
||||
singleObj.put("bipProcessProductionOrderRowNum", pickmHeadVO.getVsourcemorowcode()); // 来源单据号行号
|
||||
singleObj.put("bipParentProcessProductionOrderId", pickmHeadVO.getVfirstbillcode()); // 上级来源单据号
|
||||
|
|
@ -126,7 +127,8 @@ public class SyncGyMesPickmUtil {
|
|||
JSONObject itemObj = new JSONObject();
|
||||
|
||||
itemObj.put("bipChildId", item.getCpickm_bid()); // 子项主键ID
|
||||
itemObj.put("bchkitemforwr", "Y"); // 完工齐套检查
|
||||
// itemObj.put("bchkitemforwr", "Y"); // 完工齐套检查
|
||||
itemObj.put("bchkitemforwr",item.getBchkitemforwr().booleanValue()?"Y":"N"); // 完工齐套检查
|
||||
itemObj.put("quantityPerSet", item.getNunituseastnum() != null ? item.getNunituseastnum().doubleValue() : null); // 单套数量(单位用量)
|
||||
itemObj.put("reservedQuantity", item.getNatpastnum() != null ? item.getNatpastnum().doubleValue() : null); // 预留数量
|
||||
itemObj.put("cumulativePendingQuantity", item.getNshouldastnum() != null ? item.getNshouldastnum().doubleValue() : null); // 累计待发数量
|
||||
|
|
|
|||
Loading…
Reference in New Issue