From bf23623f9138136041fb057d9f15fbde47efd840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Tue, 1 Jul 2025 09:37:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=90=E6=96=99=E5=87=BA=E5=BA=93=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=8E=BB=E9=99=A4=E7=94=B5=E7=BC=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ic/m4d/APIMaterialOutMaintainImpl.java | 238 +++++++++--------- .../api/ic/m4d/IAPIMaterialOutMaintain.java | 25 ++ 2 files changed, 144 insertions(+), 119 deletions(-) create mode 100644 ic/src/public/nccloud/api/ic/m4d/IAPIMaterialOutMaintain.java diff --git a/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java b/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java index 6cc454d..96be39d 100644 --- a/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java +++ b/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java @@ -48,9 +48,9 @@ import java.util.*; public class APIMaterialOutMaintainImpl implements IAPIMaterialOutMaintain{ - private static final BaseDAO DAO = new BaseDAO(); - - private static final IHttpPostOtherSys HTTP_POST_OTHER_SYS = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); +// private static final BaseDAO DAO = new BaseDAO(); + +// private static final IHttpPostOtherSys HTTP_POST_OTHER_SYS = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); @Override public MaterialOutVO[] save(List> paramList) throws BusinessException { @@ -70,11 +70,11 @@ public class APIMaterialOutMaintainImpl implements IAPIMaterialOutMaintain{ // 翻译货位 ICAPILocationVOUtils.translate(vos); - boolean isSpecialCase = checkSpecialCondition(paramList); +// boolean isSpecialCase = checkSpecialCondition(paramList); // 如果判定成功,处理金思维的材料出库,将来源的相关数据补充上 - if (isSpecialCase) { - processPickingPlanSpecialLogic(vos); - } +// if (isSpecialCase) { +// processPickingPlanSpecialLogic(vos); +// } //其他数据填充 new MaterialOutSaveFillValue().setDefaultValue(vos); @@ -283,132 +283,132 @@ public class APIMaterialOutMaintainImpl implements IAPIMaterialOutMaintain{ /** * 检查是否满足特殊条件:需要同步的组织 */ - private boolean checkSpecialCondition(List> materialOutVOS) throws BusinessException { - - List aggVOList = - TransferMapToVOTool.transferMapToAggVO(materialOutVOS, MaterialOutVO.class); - MaterialOutVO[] vos = - aggVOList.toArray(new MaterialOutVO[aggVOList.size()]); - - if(Objects.isNull(materialOutVOS)){ - return false; - } - for (MaterialOutVO materialOutVO : vos) { - MaterialOutHeadVO head = materialOutVO.getHead(); - // 提取组织 - String pkOrg = head.getPk_org(); - // 翻译成code -// String orgCode = transferCodeByPk(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_ORG, pkOrg); - // 使用统一的组织判断方法 - if(HTTP_POST_OTHER_SYS.checkIfIncludeOrg(pkOrg)){ - return true; - } - } - return false; - } +// private boolean checkSpecialCondition(List> materialOutVOS) throws BusinessException { +// +// List aggVOList = +// TransferMapToVOTool.transferMapToAggVO(materialOutVOS, MaterialOutVO.class); +// MaterialOutVO[] vos = +// aggVOList.toArray(new MaterialOutVO[aggVOList.size()]); +// +// if(Objects.isNull(materialOutVOS)){ +// return false; +// } +// for (MaterialOutVO materialOutVO : vos) { +// MaterialOutHeadVO head = materialOutVO.getHead(); +// // 提取组织 +// String pkOrg = head.getPk_org(); +// // 翻译成code +//// String orgCode = transferCodeByPk(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_ORG, pkOrg); +// // 使用统一的组织判断方法 +//// if(HTTP_POST_OTHER_SYS.checkIfIncludeOrg(pkOrg)){ +//// return true; +//// } +// } +// return false; +// } /** * 处理备料计划特殊逻辑 */ - private void processPickingPlanSpecialLogic(MaterialOutVO[] vos) throws BusinessException { - - for (MaterialOutVO vo : vos) { - MaterialOutBodyVO[] bodyVOs = vo.getBodys(); - if (bodyVOs != null) { - for (MaterialOutBodyVO bodyVO : bodyVOs) { - // 获取物料编码 - String materialCode = transferCodeByPk(MaterialVO.getDefaultTableName(), MaterialVO.CODE, MaterialVO.PK_MATERIAL, bodyVO.getCmaterialvid()); - if (StringUtils.isEmpty(materialCode)|| StringUtils.isEmpty(bodyVO.getCsourcebillbid())) { - continue; - } - // 基于mmpickmview视图查询备料计划相关数据 - String sql = buildPickingPlanQuery(materialCode,bodyVO.getCsourcebillbid()); - - try { - List> pickingPlanData = (List>) DAO.executeQuery(sql, new MapListProcessor()); - - // 不唯一或者找不到,这样是有问题,抛出 - if(pickingPlanData==null || pickingPlanData.isEmpty()){ - throw new BusinessException("根据生产订单明细主键和物料编码去查询bip的中间视图mmpickmview找不到数据,无法进行材料出库的上游主键赋值,请检查数据,报错SQL:"+sql); - } - - if(pickingPlanData.size()!=1){ - throw new BusinessException("根据生产订单明细主键和物料编码去查询bip的中间视图mmpickmview不唯一,无法进行材料出库的上游主键赋值,请检查数据,报错SQL:"+sql); - } - - if (pickingPlanData != null && !pickingPlanData.isEmpty()) { - // 处理查询到的备料计划数据 - processPickingPlanData(bodyVO, pickingPlanData); - } - - } catch (Exception e) { - throw new BusinessException("查询备料计划数据失败: " + e.getMessage(), e); - } - } - } - } - } +// private void processPickingPlanSpecialLogic(MaterialOutVO[] vos) throws BusinessException { +// +// for (MaterialOutVO vo : vos) { +// MaterialOutBodyVO[] bodyVOs = vo.getBodys(); +// if (bodyVOs != null) { +// for (MaterialOutBodyVO bodyVO : bodyVOs) { +// // 获取物料编码 +// String materialCode = transferCodeByPk(MaterialVO.getDefaultTableName(), MaterialVO.CODE, MaterialVO.PK_MATERIAL, bodyVO.getCmaterialvid()); +// if (StringUtils.isEmpty(materialCode)|| StringUtils.isEmpty(bodyVO.getCsourcebillbid())) { +// continue; +// } +// // 基于mmpickmview视图查询备料计划相关数据 +// String sql = buildPickingPlanQuery(materialCode,bodyVO.getCsourcebillbid()); +// +// try { +// List> pickingPlanData = (List>) DAO.executeQuery(sql, new MapListProcessor()); +// +// // 不唯一或者找不到,这样是有问题,抛出 +// if(pickingPlanData==null || pickingPlanData.isEmpty()){ +// throw new BusinessException("根据生产订单明细主键和物料编码去查询bip的中间视图mmpickmview找不到数据,无法进行材料出库的上游主键赋值,请检查数据,报错SQL:"+sql); +// } +// +// if(pickingPlanData.size()!=1){ +// throw new BusinessException("根据生产订单明细主键和物料编码去查询bip的中间视图mmpickmview不唯一,无法进行材料出库的上游主键赋值,请检查数据,报错SQL:"+sql); +// } +// +// if (pickingPlanData != null && !pickingPlanData.isEmpty()) { +// // 处理查询到的备料计划数据 +// processPickingPlanData(bodyVO, pickingPlanData); +// } +// +// } catch (Exception e) { +// throw new BusinessException("查询备料计划数据失败: " + e.getMessage(), e); +// } +// } +// } +// } +// } /** * 构建备料计划查询SQL(基于mmpickmview视图) */ - private String buildPickingPlanQuery(String materialCode,String cpmohid) { - StringBuilder sql = new StringBuilder(); - sql.append("SELECT "); - sql.append(" CODE,"); // 物料编码 - sql.append(" PK_BILLTYPECODE,"); // 备料计划交易类型编码 - sql.append(" CPICKMID,"); // 备料计划主键 - sql.append(" CMOID,"); // 流程生产订单行主键 - sql.append(" CPMOHID,"); // 流程生产订单主键 - sql.append(" VROWNO,"); // 备料计划明细行号 - sql.append(" CPICKM_BID "); // 备料计划明细主键 - sql.append("FROM MMPICKMVIEW "); - sql.append("WHERE CODE = '").append(materialCode).append("' AND ") - .append("cmoid ='").append(cpmohid).append("'"); - return sql.toString(); - } +// private String buildPickingPlanQuery(String materialCode,String cpmohid) { +// StringBuilder sql = new StringBuilder(); +// sql.append("SELECT "); +// sql.append(" CODE,"); // 物料编码 +// sql.append(" PK_BILLTYPECODE,"); // 备料计划交易类型编码 +// sql.append(" CPICKMID,"); // 备料计划主键 +// sql.append(" CMOID,"); // 流程生产订单行主键 +// sql.append(" CPMOHID,"); // 流程生产订单主键 +// sql.append(" VROWNO,"); // 备料计划明细行号 +// sql.append(" CPICKM_BID "); // 备料计划明细主键 +// sql.append("FROM MMPICKMVIEW "); +// sql.append("WHERE CODE = '").append(materialCode).append("' AND ") +// .append("cmoid ='").append(cpmohid).append("'"); +// return sql.toString(); +// } /** * 处理备料计划数据 */ - private void processPickingPlanData(MaterialOutBodyVO bodyVO, List> pickingPlanData) { - if (pickingPlanData == null || pickingPlanData.isEmpty()) { - return; - } - - Map firstRow = pickingPlanData.get(0); - - // 设置备料计划相关字段 - if (firstRow.get("cpickmid") != null) { - bodyVO.setCsourcebillhid(firstRow.get("cpickmid").toString()); // 来源单据ID - } - - if (firstRow.get("cpickm_bid") != null) { - bodyVO.setCsourcebillbid(firstRow.get("cpickm_bid").toString()); // 来源单据行ID - } - - if (firstRow.get("pk_billtypecode") != null) { - bodyVO.setCsourcetranstype(firstRow.get("pk_billtypecode").toString()); // 交易类型编码 - } - bodyVO.setCsourcetype("55A3"); - } +// private void processPickingPlanData(MaterialOutBodyVO bodyVO, List> pickingPlanData) { +// if (pickingPlanData == null || pickingPlanData.isEmpty()) { +// return; +// } +// +// Map firstRow = pickingPlanData.get(0); +// +// // 设置备料计划相关字段 +// if (firstRow.get("cpickmid") != null) { +// bodyVO.setCsourcebillhid(firstRow.get("cpickmid").toString()); // 来源单据ID +// } +// +// if (firstRow.get("cpickm_bid") != null) { +// bodyVO.setCsourcebillbid(firstRow.get("cpickm_bid").toString()); // 来源单据行ID +// } +// +// if (firstRow.get("pk_billtypecode") != null) { +// bodyVO.setCsourcetranstype(firstRow.get("pk_billtypecode").toString()); // 交易类型编码 +// } +// bodyVO.setCsourcetype("55A3"); +// } /** * 根据主键查询编码 */ - private String transferCodeByPk(String tableName, String selectField, String pkField, String pk) throws BusinessException { - if (nc.vo.cmp.util.StringUtils.isEmpty(pk)) { - return null; - } - SqlBuilder sqlBuilder = new SqlBuilder(); - sqlBuilder.append(" select " + selectField); - sqlBuilder.append(" from " + tableName); - sqlBuilder.append(" where "); - sqlBuilder.append(pkField, pk); - Object o = DAO.executeQuery(sqlBuilder.toString(), new ColumnProcessor()); - if (o == null) { - throw new BusinessException("未查询到编码信息,sql【" + sqlBuilder + "】"); - } - return o.toString(); - } +// private String transferCodeByPk(String tableName, String selectField, String pkField, String pk) throws BusinessException { +// if (nc.vo.cmp.util.StringUtils.isEmpty(pk)) { +// return null; +// } +// SqlBuilder sqlBuilder = new SqlBuilder(); +// sqlBuilder.append(" select " + selectField); +// sqlBuilder.append(" from " + tableName); +// sqlBuilder.append(" where "); +// sqlBuilder.append(pkField, pk); +// Object o = DAO.executeQuery(sqlBuilder.toString(), new ColumnProcessor()); +// if (o == null) { +// throw new BusinessException("未查询到编码信息,sql【" + sqlBuilder + "】"); +// } +// return o.toString(); +// } } diff --git a/ic/src/public/nccloud/api/ic/m4d/IAPIMaterialOutMaintain.java b/ic/src/public/nccloud/api/ic/m4d/IAPIMaterialOutMaintain.java new file mode 100644 index 0000000..bdc01e4 --- /dev/null +++ b/ic/src/public/nccloud/api/ic/m4d/IAPIMaterialOutMaintain.java @@ -0,0 +1,25 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nccloud.api.ic.m4d; + +import java.util.List; +import java.util.Map; +import nc.vo.ic.m4d.entity.MaterialOutVO; +import nc.vo.pub.BusinessException; + +public interface IAPIMaterialOutMaintain { + MaterialOutVO[] save(List> var1) throws BusinessException; + + MaterialOutVO[] update(List> var1) throws BusinessException; + + MaterialOutVO[] delete(MaterialOutVO[] var1) throws BusinessException; + + MaterialOutVO[] sign(MaterialOutVO[] var1) throws BusinessException; + + MaterialOutVO[] unSign(MaterialOutVO[] var1) throws BusinessException; + + MaterialOutVO[] saveByRef(List> var1) throws BusinessException; +}