taikai2312/ic/src/private/nccloud/api/impl/ic/onhand/APIOnhandQueryIpml.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("仓库和物料字段不能都为空!");
}
}
}