材料出库接口去除电缆代码

This commit is contained in:
李正@用友 2025-07-01 09:37:32 +08:00 committed by mzr
parent 8f89aa5915
commit bf23623f91
2 changed files with 144 additions and 119 deletions

View File

@ -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<Map<String, Object>> 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<Map<String, Object>> materialOutVOS) throws BusinessException {
List<MaterialOutVO> 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<Map<String, Object>> materialOutVOS) throws BusinessException {
//
// List<MaterialOutVO> 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<Map<String, Object>> pickingPlanData = (List<Map<String, Object>>) 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<Map<String, Object>> pickingPlanData = (List<Map<String, Object>>) 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<Map<String, Object>> pickingPlanData) {
if (pickingPlanData == null || pickingPlanData.isEmpty()) {
return;
}
Map<String, Object> 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<Map<String, Object>> pickingPlanData) {
// if (pickingPlanData == null || pickingPlanData.isEmpty()) {
// return;
// }
//
// Map<String, Object> 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();
// }
}

View File

@ -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<Map<String, Object>> var1) throws BusinessException;
MaterialOutVO[] update(List<Map<String, Object>> var1) throws BusinessException;
MaterialOutVO[] delete(MaterialOutVO[] var1) throws BusinessException;
MaterialOutVO[] sign(MaterialOutVO[] var1) throws BusinessException;
MaterialOutVO[] unSign(MaterialOutVO[] var1) throws BusinessException;
MaterialOutVO[] saveByRef(List<Map<String, Object>> var1) throws BusinessException;
}