材料出库接口去除电缆代码
This commit is contained in:
parent
691bbb8815
commit
87c25fbf45
|
@ -48,9 +48,9 @@ import java.util.*;
|
|||
|
||||
public class APIMaterialOutMaintainImpl implements IAPIMaterialOutMaintain{
|
||||
|
||||
private static final BaseDAO DAO = new BaseDAO();
|
||||
// private static final BaseDAO DAO = new BaseDAO();
|
||||
|
||||
private static final IHttpPostOtherSys HTTP_POST_OTHER_SYS = NCLocator.getInstance().lookup(IHttpPostOtherSys.class);
|
||||
// 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();
|
||||
// }
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue