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 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> paramMapList) throws BusinessException { // 必输项检查 try { List onhandDimVOS = new ArrayList<>(); for (Map 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> paramMapList) throws Exception { // 必输项检查 try { List onhandDimVOS = new ArrayList<>(); for (Map 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 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 paramMap) throws Exception { try { List onhandDimVOS = new ArrayList<>(); String pk_org = paramMap.get("pk_org").toString(); if (paramMap.get("cmaterialoid") != null && paramMap.get("cmaterialoid") instanceof List) { List cmaterialoids = (List) paramMap.get("cmaterialoid"); for (String cmaterialoid : cmaterialoids) { Map 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 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 paramMap) { for (String field : requiredField) { Object keyValue = paramMap.get(field); if (null == keyValue) { ExceptionUtils.wrappBusinessException("字段:" + field + "为必输项!"); } } } private void requiredFieldCheck1(Map 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("仓库和物料字段不能都为空!"); } } }