期初流程生产订单不填充序列号-增加组织判断

This commit is contained in:
mzr 2025-09-21 20:13:44 +08:00
parent ffd6b82aed
commit 5f2d4be2cb
1 changed files with 43 additions and 32 deletions

View File

@ -5,10 +5,10 @@
package nc.bs.mmpac.pmo.pac0002.rule.fill;
import java.util.*;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Logger;
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOSNServiceAdapter;
import nc.bs.uapbd.util.MyHelper;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.pubitf.mmpac.pmo.adapter.PMOMaterlAdapter;
import nc.pubitf.sn.doc.ISnService;
@ -29,10 +29,13 @@ import nc.vo.mmpac.pmo.pac0002.enumeration.PMOSnsrcEnum;
import nc.vo.mmpac.pmo.pac0002.util.PMOModuleUtil;
import nc.vo.mmpac.pmo.pac0002.util.PMOSNUtil;
import nc.vo.mmpac.pmo.parameter.PMOMaterlKey;
import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.sn.doc.entity.SerialNoVO;
import java.util.*;
public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
public PMOFillSNPkAndCodeRule() {
}
@ -40,14 +43,14 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
public void process(PMOAggVO[] vos) {
if (!MMValueCheck.isEmpty(vos)) {
if (PMOModuleUtil.isSNEnabled()) {
for(PMOAggVO aggvo : vos) {
for (PMOAggVO aggvo : vos) {
if (!MMValueCheck.isEmpty(aggvo.getChildrenVO())) {
boolean existsSn = this.isExistSn(aggvo);
boolean is55A2 = SnParasQuery.querySN001(aggvo.getParentVO().getPk_org(), "55A2");
if (is55A2 || existsSn) {
List<PMOMaterlKey> materlKeys = new ArrayList();
for(PMOItemVO itemvo : aggvo.getChildrenVO()) {
for (PMOItemVO itemvo : aggvo.getChildrenVO()) {
PMOMaterlKey materlKey = new PMOMaterlKey(itemvo.getPk_org(), itemvo.getCmaterialvid());
materlKeys.add(materlKey);
}
@ -56,7 +59,7 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
Map<PMOMaterlKey, String> snUnitMap = PMOMaterlAdapter.queryMaterSNUnit(materlKeys);
List<ISnGenerateParam> genParams = new ArrayList();
for(PMOItemVO itemvo : aggvo.getChildrenVO()) {
for (PMOItemVO itemvo : aggvo.getChildrenVO()) {
if (MMValueCheck.isNotEmpty(itemvo.getSerialnos())) {
this.constructSnGenPkParam(genParams, itemvo);
} else if (is55A2) {
@ -68,7 +71,7 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
return;
}
ISnResult serialnos = PMOSNServiceAdapter.createSerialnos((ISnGenerateParam[])genParams.toArray(new ISnGenerateParam[genParams.size()]));
ISnResult serialnos = PMOSNServiceAdapter.createSerialnos((ISnGenerateParam[]) genParams.toArray(new ISnGenerateParam[genParams.size()]));
this.fillPMOGrandSNVoValues(aggvo, serialnos, snUnitMap);
this.fillTS4UpdateSN(aggvo);
}
@ -82,9 +85,9 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
private void fillTS4UpdateSN(PMOAggVO aggvo) {
List<SnDocParam> paramList = new ArrayList();
for(PMOItemVO itemvo : aggvo.getChildrenVO()) {
for (PMOItemVO itemvo : aggvo.getChildrenVO()) {
if (MMValueCheck.isNotEmpty(itemvo.getSerialnos())) {
for(PMOSerialNoVO snvo : itemvo.getSerialnos()) {
for (PMOSerialNoVO snvo : itemvo.getSerialnos()) {
SnDocParam para = new SnDocParam();
para.setCmaterialvid(itemvo.getCmaterialvid());
para.setCmaterialoid(itemvo.getCmaterialid());
@ -95,20 +98,20 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
}
try {
SerialNoVO[] rets = ((ISnService)NCLocator.getInstance().lookup(ISnService.class)).querySerialnos((ISnDocParam[])paramList.toArray(new SnDocParam[0]), new String[]{"vcode", "pk_serialno", "cmaterialoid", "cmaterialvid", "ts"});
SerialNoVO[] rets = ((ISnService) NCLocator.getInstance().lookup(ISnService.class)).querySerialnos((ISnDocParam[]) paramList.toArray(new SnDocParam[0]), new String[]{"vcode", "pk_serialno", "cmaterialoid", "cmaterialvid", "ts"});
if (MMArrayUtil.isNotEmpty(rets)) {
Map<String, SerialNoVO> key2id = new HashMap();
for(SerialNoVO ret : rets) {
for (SerialNoVO ret : rets) {
key2id.put(ret.getCmaterialvid() + ret.getVcode(), ret);
}
for(PMOItemVO itemvo : aggvo.getChildrenVO()) {
for (PMOItemVO itemvo : aggvo.getChildrenVO()) {
if (MMValueCheck.isNotEmpty(itemvo.getSerialnos())) {
for(PMOSerialNoVO pmosnvo : itemvo.getSerialnos()) {
for (PMOSerialNoVO pmosnvo : itemvo.getSerialnos()) {
if (MMValueCheck.isNotEmpty(pmosnvo.getVsncode())) {
String var10001 = itemvo.getCmaterialvid();
SerialNoVO snvo = (SerialNoVO)key2id.get(var10001 + pmosnvo.getVsncode());
SerialNoVO snvo = (SerialNoVO) key2id.get(var10001 + pmosnvo.getVsncode());
if (MMValueCheck.isNotEmpty(snvo)) {
pmosnvo.setVsrcts(snvo.getTs());
}
@ -124,9 +127,9 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
}
private void constructSnGenPkParam(List<ISnGenerateParam> genParams, PMOItemVO itemvo) {
for(PMOSerialNoVO snvo : itemvo.getSerialnos()) {
for (PMOSerialNoVO snvo : itemvo.getSerialnos()) {
if ((MMValueCheck.isEmpty(snvo.getFsnsrc()) || PMOSnsrcEnum.SNREF.toIntValue() != snvo.getFsnsrc()) && (snvo.getStatus() == 2 || snvo.getStatus() == 1)) {
snvo.setCserialnoid((String)null);
snvo.setCserialnoid((String) null);
}
if (!MMValueCheck.isNotEmpty(snvo.getCserialnoid())) {
@ -154,7 +157,7 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
private boolean isExistSn(PMOAggVO aggvo) {
boolean existsSn = false;
for(PMOItemVO itemvo : aggvo.getChildrenVO()) {
for (PMOItemVO itemvo : aggvo.getChildrenVO()) {
if (MMValueCheck.isNotEmpty(itemvo.getSerialnos())) {
existsSn = true;
break;
@ -166,9 +169,9 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
private void autoGenPKandCode(List<ISnGenerateParam> genParams, PMOItemVO itemvo, Map<PMOMaterlKey, Boolean> isSnMap, Map<PMOMaterlKey, String> snUnitMap) {
PMOMaterlKey materlKey = new PMOMaterlKey(itemvo.getPk_org(), itemvo.getCmaterialvid());
Boolean isSN = (Boolean)isSnMap.get(materlKey);
Boolean isSN = (Boolean) isSnMap.get(materlKey);
if (!MMValueCheck.isEmpty(isSN) && isSN) {
this.constructSnGenPkAndCodeParam(genParams, itemvo, (String)snUnitMap.get(materlKey));
this.constructSnGenPkAndCodeParam(genParams, itemvo, (String) snUnitMap.get(materlKey));
}
}
@ -177,12 +180,12 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
param.setKey(itemvo.getCmoid());
if (snunit.equalsIgnoreCase(itemvo.getCunitid())) {
double num = itemvo.getNmmnum().toDouble();
param.setCreateSnNum((int)num);
param.setCreateSnNum((int) num);
}
if (snunit.equalsIgnoreCase(itemvo.getCastunitid())) {
double astnum = itemvo.getNmmastnum().toDouble();
param.setCreateSnNum((int)astnum);
param.setCreateSnNum((int) astnum);
}
param.setPk_storeorg(itemvo.getPk_org());
@ -202,19 +205,27 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
PMOHeadVO headVO = aggvo.getParentVO();
String pkOrg = headVO.getPk_org();
if (MMValueCheck.isNotEmpty(pkOrg)) {
// 交易类型编码
String vtrantypecode = headVO.getVtrantypecode();
Set<String> billTypeCodes = Set.of(
"55A2-Cxx-01", "55A2-Cxx-18"
);
// 电力电子集团下的-期初订单不填充序列号
if (billTypeCodes.contains(vtrantypecode)) {
return;
try {
String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
Map<String, String> configParams = MyHelper.getConfigParams("Dldz-config", null);
if (!MyHelper.checkIfDldzOrg(orgCode, configParams)) {
// 交易类型编码
String vtrantypecode = headVO.getVtrantypecode();
Set<String> billTypeCodes = Set.of(
"55A2-Cxx-01", "55A2-Cxx-18"
);
// 电力电子集团下的-期初订单不填充序列号
if (billTypeCodes.contains(vtrantypecode)) {
return;
}
}
} catch (BusinessException e) {
Logger.error("fillPMOGrandSNVoValues-exp = " + e.getMessage());
}
}
for(PMOItemVO itemvo : aggvo.getChildrenVO()) {
for (PMOItemVO itemvo : aggvo.getChildrenVO()) {
if (MMValueCheck.isNotEmpty(itemvo.getSerialnos())) {
for(PMOSerialNoVO snvo : itemvo.getSerialnos()) {
for (PMOSerialNoVO snvo : itemvo.getSerialnos()) {
if (!MMValueCheck.isNotEmpty(snvo.getCserialnoid())) {
String var10000 = itemvo.getCmoid();
String key = var10000 + snvo.getVsncode();
@ -231,7 +242,7 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
if (!MMValueCheck.isEmpty(rets)) {
List<PMOSerialNoVO> snvoList = new ArrayList();
for(ISnPkandCodeParam ret : rets) {
for (ISnPkandCodeParam ret : rets) {
PMOSerialNoVO snvo = new PMOSerialNoVO();
snvo.setCserialnoid(ret.getPk_sndoc());
snvo.setVsncode(ret.getSncode());
@ -242,7 +253,7 @@ public class PMOFillSNPkAndCodeRule implements IRule<PMOAggVO> {
snvoList.add(snvo);
}
itemvo.setSerialnos((PMOSerialNoVO[])snvoList.toArray(new PMOSerialNoVO[snvoList.size()]));
itemvo.setSerialnos((PMOSerialNoVO[]) snvoList.toArray(new PMOSerialNoVO[snvoList.size()]));
}
}
}