Merge remote-tracking branch 'origin/main'

This commit is contained in:
lihao 2025-11-20 10:59:11 +08:00
commit 025e84b9e4
3 changed files with 96 additions and 39 deletions

View File

@ -1,41 +1,16 @@
package nc.bs.mmpac.pickm.bp;
import java.util.ArrayList;
import java.util.List;
import nc.bs.mmpac.pickm.bp.rule.AfterApproveRuleHighpressureIms;
import nc.bs.mmpac.pickm.bp.rule.AfterQtyUpdRuleHighpressureMes;
import nc.bs.mmpac.pickm.bp.rule.AfterupdateSyncEpicMesRule;
import nc.bs.mmpac.pickm.bp.rule.PickItemsSetVbdef36Rule;
import nc.bs.mmpac.pickm.plugin.PickmPluginPoint;
import nc.bs.mmpac.pickm.rule.PSCPickmRewriteMoPickmUpdateRule;
import nc.bs.mmpac.pickm.rule.PickmAutoApproveAfterSaveRule;
import nc.bs.mmpac.pickm.rule.PickmBillStatusToFreeRule;
import nc.bs.mmpac.pickm.rule.PickmCheckItemMaterialPermissionRule;
import nc.bs.mmpac.pickm.rule.PickmCheckMaterialPermissionRule;
import nc.bs.mmpac.pickm.rule.PickmCheckRowNOChangedRule;
import nc.bs.mmpac.pickm.rule.PickmCheckSameStockRule;
import nc.bs.mmpac.pickm.rule.PickmCreateSubMoRule;
import nc.bs.mmpac.pickm.rule.PickmFbackflustimeCheckRule;
import nc.bs.mmpac.pickm.rule.PickmItemVOFilterRule;
import nc.bs.mmpac.pickm.rule.PickmNeedDeliverBackCheckRule;
import nc.bs.mmpac.pickm.rule.PickmRowNoRule;
import nc.bs.mmpac.pickm.rule.PickmSaveRule;
import nc.bs.mmpac.pickm.rule.PickmSubMoAdjustSuggestRule;
import nc.bs.mmpac.pickm.rule.SNMaterialNotBackFlushRule;
import nc.bs.mmpac.pickm.rule.ic.PickmATPCheckRule;
import nc.bs.mmpac.pickm.rule.ic.PickmAdjustReserveWhenEditRule;
import nc.bs.mmpac.pickm.rule.ic.PickmAutoChangeStateRule;
import nc.bs.mmpac.pickm.rule.ic.PickmAutoReserveRule;
import nc.bs.mmpac.pickm.rule.ic.PickmRewriteOtherNumRule;
import nc.bs.mmpac.pickm.rule.*;
import nc.bs.mmpac.pickm.rule.ic.*;
import nc.bs.mmpac.pickm.rule.realsub.PickmRewritePLOWhenUpdateRule;
import nc.bs.mmpub.rule.MMATOMaterialCheckRule;
import nc.bs.mmpub.rule.MMAutoMaterialAssignRule;
import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule;
import nc.bs.pubapp.pub.rule.BillCodeCheckRule;
import nc.bs.pubapp.pub.rule.FieldLengthCheckRule;
import nc.bs.pubapp.pub.rule.FillUpdateDataRule;
import nc.bs.pubapp.pub.rule.OrgDisabledCheckRule;
import nc.bs.pubapp.pub.rule.UpdateBillCodeRule;
import nc.bs.pubapp.pub.rule.*;
import nc.bs.uif2.validation.ValidationFailure;
import nc.bsutil.mmpac.pickm.PickmSagasUtil;
import nc.impl.pubapp.bd.material.assistant.MarAssistantSaveRule;
@ -54,6 +29,9 @@ import nc.vo.mmpac.pickm.entity.PickmHeadVO;
import nc.vo.mmpac.pickm.entity.PickmItemVO;
import nc.vo.pub.VOStatus;
import java.util.ArrayList;
import java.util.List;
/**
* 备料计划修改 BP
*/
@ -67,8 +45,6 @@ public class PickmUpdateBP {
private boolean isForYL;
private boolean isForNcc = false;
;
// 挪退料建议
private ValidationFailure checkInfo = new ValidationFailure();
@ -207,9 +183,9 @@ public class PickmUpdateBP {
ICompareRule<AggPickmVO> subMoAdjustSuggestRule = new PickmSubMoAdjustSuggestRule(this.checkInfo);
processer.addAfterRule(subMoAdjustSuggestRule);
processer.addAfterRule(new AfterupdateSyncEpicMesRule());
//备料计划变更后推送高压IMS
processer.addAfterRule(new AfterApproveRuleHighpressureIms());
//备料计划预留推送高压MES
// 备料计划变更后推送高压IMS
// processer.addAfterRule(new AfterApproveRuleHighpressureIms());
// 备料计划预留推送高压MES
processer.addAfterRule(new AfterQtyUpdRuleHighpressureMes());
}
@ -328,6 +304,7 @@ public class PickmUpdateBP {
// 调用更新状态rule:自动完成 or 自动取消完成
ICompareRule<AggPickmVO> autoChangeStateRule = new PickmAutoChangeStateRule();
processer.addBeforeRule(autoChangeStateRule);
// sqz 赋值发货仓库现存量
processer.addBeforeRule(new PickItemsSetVbdef36Rule());
}
}

View File

@ -0,0 +1,79 @@
package nc.bs.mmpac.pickm.bp.rule;
import nc.bs.framework.common.NCLocator;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.vo.cmp.util.StringUtils;
import nc.vo.ic.onhand.entity.OnhandNumVO;
import nc.vo.ic.onhand.entity.OnhandVO;
import nc.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
import nc.vo.mmpac.pickm.entity.PickmItemVO;
import nc.vo.pub.lang.UFDouble;
import nccloud.api.ic.onhand.IAPIOnhandQuery;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 获取现存量,设置到自定义项36
*/
public class PickItemsSetVbdef36Rule implements IRule<AggPickmVO> {
@Override
public void process(AggPickmVO[] aggPickmVOS) {
for (AggPickmVO vo : aggPickmVOS) {
PickmHeadVO parentVO = vo.getParentVO();
String pkOrg1 = parentVO.getPk_org();
if (!"0001A1100000000026O8".equals(pkOrg1)) return;
PickmItemVO[] childrenVO = (PickmItemVO[]) vo.getChildrenVO();
Map<String, Object> map = new HashMap<>();
ArrayList<PickmItemVO> pickmItemVOS = new ArrayList<>();
for (PickmItemVO pickmItemVO : childrenVO) {
List<Map<String, Object>> onhandQueryListBatch = new ArrayList<>();
String coutstockid = pickmItemVO.getCoutstockid();
String cbmaterialid = pickmItemVO.getCbmaterialid();
// if (!"1001A11000000RYRQOPY".equals(cbmaterialid))continue;
String pkOrg = pickmItemVO.getPk_org();
String vbatchcode = pickmItemVO.getVbatchcode();
String cbprojectid = pickmItemVO.getCbprojectid();
if (StringUtils.isEmpty(coutstockid)) continue;
map.put("cwarehouseid", coutstockid);// 发料仓库
map.put("cmaterialoid", cbmaterialid);
map.put("pk_org", pkOrg);
if (!StringUtils.isEmpty(cbprojectid)) {
map.put("cprojectid", cbprojectid);
}
if (!StringUtils.isEmpty(vbatchcode)) {
map.put("vbatchcode", vbatchcode);
}
onhandQueryListBatch.add(map);
OnhandVO[] onhandNum = this.getOnhandNum(onhandQueryListBatch);
if (onhandNum != null) {
OnhandNumVO onhandNumVO = onhandNum[0].getOnhandNumVO();
UFDouble nonhandnum = onhandNumVO.getNonhandnum();
pickmItemVO.setVbdef36(String.valueOf(nonhandnum));
}
pickmItemVOS.add(pickmItemVO);
}
vo.setChildren(PickmItemVO.class, pickmItemVOS.toArray(new PickmItemVO[0]));
}
}
// 2025年11月7日 sqz根据物料组织仓库批次项目获取现存量
public OnhandVO[] getOnhandNum(List<Map<String, Object>> onhandQueryListBatch) {
OnhandVO[] onhandVOs = null;
try {
if (!onhandQueryListBatch.isEmpty()) {
onhandVOs = NCLocator.getInstance().lookup(IAPIOnhandQuery.class)
.queryOnhandVOByDimsNoTrans(onhandQueryListBatch);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return onhandVOs;
}
}

View File

@ -102,7 +102,7 @@ public class MaterialToQmsPlugin implements IBackgroundWorkPlugin {
" LEFT JOIN bd_material a ON a.pk_material = b.pk_material" +
" WHERE b.dr = 0 AND a.dr = 0" +
" AND " + inStrPkOrg +
" AND (b.ts > '" + rangeTimeString + "' OR a.ts > '" + rangeTimeString + "')";
" AND (b.ts > '" + rangeTimeString + "' OR a.ts > '" + rangeTimeString + "')";
List<Map<String, String>> pkList = (List<Map<String, String>>) getDao().executeQuery(sql, new MapListProcessor());
return pkList;
}
@ -119,7 +119,7 @@ public class MaterialToQmsPlugin implements IBackgroundWorkPlugin {
"pk_marbasclass = '" + pk_marbasclass + "'");
// 计量单位
// 过滤物料分类
if(checkMrlType(mrlTypeName,configParams)){
if (checkMrlType(mrlTypeName, configParams)) {
continue;
}
Map unitMap = getGoodsInfo(pkMaterial);
@ -184,6 +184,7 @@ public class MaterialToQmsPlugin implements IBackgroundWorkPlugin {
Object map = (Object) new BaseDAO().executeQuery(sql, new ColumnProcessor());
return map;
}
private boolean checkMrlType(String mrlTypeName, Map<String, String> configParams) throws BusinessException {
// 从配置中获取目标类型字符串
String targetCode = configParams.get("mrlType");
@ -219,12 +220,12 @@ public class MaterialToQmsPlugin implements IBackgroundWorkPlugin {
String requestUrl = baseUrl + reqUrl;
logger.error("QMS-Material-url = " + requestUrl);
String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr);
JSONObject resultObj = JSONObject.parseObject(result);
logger.error("QMS-Material-res = " + result);
JSONObject resultObj = JSONObject.parseObject(result);
if (!"true".equals(resultObj.getString("success"))) {
logger.error("QMS-Material-error,result[" + resultObj.toJSONString() + "]");
throw new BusinessException("QMS-Material-error:" + resultObj.getString("message"));
// throw new BusinessException("QMS-Material-error:" + resultObj.getString("message"));
}
}