196 lines
7.7 KiB
Java
196 lines
7.7 KiB
Java
package nccloud.api.impl.ic.onhand;
|
|
|
|
import nc.bs.framework.common.NCLocator;
|
|
import nc.bs.logging.Logger;
|
|
import nc.itf.ic.onhand.OnhandResService;
|
|
import nc.vo.ic.onhand.entity.OnhandDimVO;
|
|
import nc.vo.ic.onhand.entity.OnhandVO;
|
|
import nc.vo.pub.BusinessException;
|
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
|
import nccloud.api.ic.onhand.IAPIOnhandQuery;
|
|
import nccloud.api.ic.onhand.OnhandDataSupplement;
|
|
import nccloud.commons.lang.StringUtils;
|
|
import nccloud.openapi.ic.onhand.mapping.OnhandMapping;
|
|
import nccloud.openapi.scmpub.pub.TransferCodeToPKTool;
|
|
import nccloud.openapi.scmpub.pubitf.IJsonParamMapping;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* 现存量查询操作实现类
|
|
*
|
|
* @version NCC1909
|
|
* @Description:
|
|
* @author: shijkb
|
|
* @date: 2019年11月14日 上午9:55:49
|
|
*/
|
|
public class APIOnhandQueryIpml implements IAPIOnhandQuery {
|
|
|
|
String[] requiredField = new String[]{
|
|
"pk_org", "cmaterialoid"
|
|
};
|
|
|
|
private IJsonParamMapping jsonParamMapping = new OnhandMapping();
|
|
|
|
@Override
|
|
public OnhandVO[] queryOnhandVOByDims(Map<String, Object> paramMap) throws BusinessException {
|
|
|
|
|
|
// 必输项检查
|
|
this.requiredFieldCheck(requiredField, paramMap);
|
|
// 翻译
|
|
paramMap = TransferCodeToPKTool.doTranslateFields(jsonParamMapping, paramMap);
|
|
|
|
OnhandDataSupplement dataSupplement = new OnhandDataSupplement();
|
|
OnhandDimVO onhandDimVO = new OnhandDimVO();
|
|
try {
|
|
onhandDimVO = dataSupplement.process(paramMap);
|
|
} catch (Exception e) {
|
|
// TODO Auto-generated catch block
|
|
ExceptionUtils.marsh(e);
|
|
}
|
|
|
|
OnhandVO[] onhandVOs = NCLocator.getInstance().lookup(OnhandResService.class)
|
|
.queryOnhandVOByDims(new OnhandDimVO[]{onhandDimVO});
|
|
return onhandVOs;
|
|
}
|
|
|
|
public OnhandVO[] queryOnhandVOByDimsNoTrans(List<Map<String, Object>> paramMapList) throws BusinessException {
|
|
|
|
|
|
// 必输项检查
|
|
try {
|
|
List<OnhandDimVO> onhandDimVOS = new ArrayList<>();
|
|
for (Map<String, Object> paramMap : paramMapList) {
|
|
this.requiredFieldCheck(requiredField, paramMap);
|
|
// 翻译
|
|
// paramMap = TransferCodeToPKTool.doTranslateFields(jsonParamMapping, paramMap);
|
|
OnhandDataSupplement dataSupplement = new OnhandDataSupplement();
|
|
OnhandDimVO onhandDimVO = new OnhandDimVO();
|
|
onhandDimVO = dataSupplement.process(paramMap);
|
|
onhandDimVOS.add(onhandDimVO);
|
|
}
|
|
OnhandVO[] onhandVOs = NCLocator.getInstance().lookup(OnhandResService.class)
|
|
.queryOnhandVOByDims(onhandDimVOS.toArray(new OnhandDimVO[0]));
|
|
return onhandVOs;
|
|
} catch (Exception e) {
|
|
ExceptionUtils.marsh(e);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public OnhandVO[] queryOnhandVOByDims(List<Map<String, Object>> paramMapList) throws Exception {
|
|
// 必输项检查
|
|
try {
|
|
List<OnhandDimVO> onhandDimVOS = new ArrayList<>();
|
|
for (Map<String, Object> paramMap : paramMapList) {
|
|
this.requiredFieldCheck(requiredField, paramMap);
|
|
// 翻译
|
|
paramMap = TransferCodeToPKTool.doTranslateFields(jsonParamMapping, paramMap);
|
|
OnhandDataSupplement dataSupplement = new OnhandDataSupplement();
|
|
OnhandDimVO onhandDimVO = new OnhandDimVO();
|
|
onhandDimVO = dataSupplement.process(paramMap);
|
|
onhandDimVOS.add(onhandDimVO);
|
|
}
|
|
OnhandVO[] onhandVOs = NCLocator.getInstance().lookup(OnhandResService.class)
|
|
.queryOnhandVOByDims(onhandDimVOS.toArray(new OnhandDimVO[0]));
|
|
return onhandVOs;
|
|
} catch (Exception e) {
|
|
ExceptionUtils.marsh(e);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
public OnhandVO[] queryOnhandVOByCondition(Map<String, Object> paramMap) throws Exception {
|
|
this.requiredFieldCheck1(paramMap);
|
|
// 翻译
|
|
paramMap = TransferCodeToPKTool.doTranslateFields(jsonParamMapping, paramMap);
|
|
OnhandDataSupplement dataSupplement = new OnhandDataSupplement();
|
|
OnhandDimVO onhandDimVO = new OnhandDimVO();
|
|
try {
|
|
onhandDimVO = dataSupplement.process(paramMap);
|
|
} catch (Exception e) {
|
|
ExceptionUtils.marsh(e);
|
|
}
|
|
OnhandVO[] onhandVOs = NCLocator.getInstance().lookup(OnhandResService.class)
|
|
.queryOnhandVOByDims(new OnhandDimVO[]{onhandDimVO});
|
|
return onhandVOs;
|
|
}
|
|
|
|
@Override
|
|
public OnhandVO[] onhandQueryBatch(Map<String, Object> paramMap) throws Exception {
|
|
try {
|
|
List<OnhandDimVO> onhandDimVOS = new ArrayList<>();
|
|
String pk_org = paramMap.get("pk_org").toString();
|
|
if (paramMap.get("cmaterialoid") != null && paramMap.get("cmaterialoid") instanceof List) {
|
|
List<String> cmaterialoids = (List<String>) paramMap.get("cmaterialoid");
|
|
for (String cmaterialoid : cmaterialoids) {
|
|
Map<String, Object> selMap = new HashMap<>();
|
|
selMap.put("pk_org", pk_org);
|
|
selMap.put("cmaterialoid", cmaterialoid);
|
|
// 翻译
|
|
selMap = TransferCodeToPKTool.doTranslateFields(jsonParamMapping, selMap);
|
|
OnhandDataSupplement dataSupplement = new OnhandDataSupplement();
|
|
OnhandDimVO onhandDimVO = new OnhandDimVO();
|
|
try {
|
|
onhandDimVO = dataSupplement.process(selMap);
|
|
} catch (Exception e) {
|
|
Logger.error(e);
|
|
}
|
|
// 跳过查不出数据的物料
|
|
if (onhandDimVO == null || onhandDimVO.getCmaterialoid() == null) {
|
|
continue;
|
|
}
|
|
onhandDimVOS.add(onhandDimVO);
|
|
}
|
|
|
|
} else {
|
|
Map<String, Object> selMap = new HashMap<>();
|
|
selMap.put("pk_org", pk_org);
|
|
// 翻译
|
|
selMap = TransferCodeToPKTool.doTranslateFields(jsonParamMapping, selMap);
|
|
OnhandDataSupplement dataSupplement = new OnhandDataSupplement();
|
|
OnhandDimVO onhandDimVO = new OnhandDimVO();
|
|
onhandDimVO = dataSupplement.process(selMap);
|
|
onhandDimVOS.add(onhandDimVO);
|
|
}
|
|
OnhandVO[] onhandVOs = NCLocator.getInstance().lookup(OnhandResService.class)
|
|
.queryOnhandVOByDims(onhandDimVOS.toArray(new OnhandDimVO[0]));
|
|
return onhandVOs;
|
|
} catch (Exception e) {
|
|
ExceptionUtils.marsh(e);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
// 必输项校验
|
|
private void requiredFieldCheck(String[] requiredField, Map<String, Object> paramMap) {
|
|
for (String field : requiredField) {
|
|
Object keyValue = paramMap.get(field);
|
|
if (null == keyValue) {
|
|
ExceptionUtils.wrappBusinessException("字段:" + field + "为必输项!");
|
|
}
|
|
}
|
|
}
|
|
|
|
private void requiredFieldCheck1(Map<String, Object> paramMap) {
|
|
String orgValue = paramMap.getOrDefault("pk_org", "") + "";
|
|
if (StringUtils.isEmpty(orgValue)) {
|
|
ExceptionUtils.wrappBusinessException("组织字段为必输项!");
|
|
}
|
|
String cmaterialoid = paramMap.getOrDefault("cmaterialoid", "") + "";
|
|
String cwarehouseid = paramMap.getOrDefault("cwarehouseid", "") + "";
|
|
if (StringUtils.isEmpty(cmaterialoid) && StringUtils.isEmpty(cwarehouseid)) {
|
|
ExceptionUtils.wrappBusinessException("仓库和物料字段不能都为空!");
|
|
}
|
|
}
|
|
|
|
}
|