增加现存量查询的api-EIP-v0

This commit is contained in:
mzr 2025-07-18 17:53:18 +08:00
parent d705484810
commit 17898b3e6e
3 changed files with 161 additions and 34 deletions

View File

@ -4,6 +4,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import nc.bs.framework.common.NCLocator;
import nc.itf.ic.onhand.OnhandResService;
import nc.vo.ic.onhand.entity.OnhandDimVO;
@ -78,6 +80,25 @@ public class APIOnhandQueryIpml implements IAPIOnhandQuery {
}
}
@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;
}
// ±ØÊäÏîУÑé
private void requiredFieldCheck(String[] requiredField, Map<String, Object> paramMap) {
for (String field : requiredField) {
@ -88,4 +109,16 @@ public class APIOnhandQueryIpml implements IAPIOnhandQuery {
}
}
private void requiredFieldCheck1(Map<String, Object> paramMap) {
Object orgValue = paramMap.get("pk_org");
if (ObjectUtil.isEmpty(orgValue)) {
ExceptionUtils.wrappBusinessException("组织字段为必输项!");
}
Object cmaterialoid = paramMap.get("cmaterialoid");
Object cwarehouseid = paramMap.get("cwarehouseid");
if (ObjectUtil.isEmpty(cmaterialoid) && ObjectUtil.isEmpty(cwarehouseid)) {
ExceptionUtils.wrappBusinessException("仓库和物料字段不能都为空!");
}
}
}

View File

@ -8,11 +8,11 @@ import nc.vo.pub.BusinessException;
/**
* 现存量查询操作接口
* @Description:
*
* @version NCC1909
* @Description:
* @author: shijkb
* @date: 2019年11月8日 下午2:49:51
* @version NCC1909
*/
public interface IAPIOnhandQuery {
@ -35,4 +35,13 @@ public interface IAPIOnhandQuery {
* @throws Exception 当查询操作失败时抛出的异常
*/
OnhandVO[] queryOnhandVOByDims(List<Map<String, Object>> paramMap) throws Exception;
/**
* 根据查询条件查询现存量信息
*
* @param paramMap 参数映射列表每个映射包含一组查询条件
* @return OnhandVO[] 查询到的现存量信息数组
* @throws Exception 当查询操作失败时抛出的异常
*/
OnhandVO[] queryOnhandVOByCondition(Map<String, Object> paramMap) throws Exception;
}

View File

@ -12,9 +12,12 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import nc.bs.dao.BaseDAO;
import nc.bs.dao.DAOException;
import nc.bs.uapbd.util.MyHelper;
import nc.impl.pubapp.pattern.database.SqlBuilderUtil;
import nc.jdbc.framework.processor.MapProcessor;
import nc.vo.bd.material.MaterialVO;
import nc.vo.bd.stordoc.StordocVO;
import nc.vo.cmp.util.StringUtils;
import nc.vo.pub.BusinessException;
import nc.vo.pubapp.pattern.pub.SqlBuilder;
import org.json.JSONString;
@ -28,11 +31,11 @@ import nccloud.api.rest.utils.ResultMessageUtil;
/**
* 现存量信息查询资源类
* @Description:
*
* @version NCC1909
* @Description:
* @author: shijkb
* @date: 2019年11月8日 下午2:42:47
* @version NCC1909
*/
@Path("ic/onhand")
public class OnhandResource {
@ -127,6 +130,58 @@ public class OnhandResource {
}
}
/**
* 根据条件批量查询现存量
*
* @author mzr
* @date 2025/7/16
*/
@POST
@Path("onhandQueryByCondition")
@Consumes("application/json")
@Produces("application/json")
public JSONString onhandQueryByCondition(Map<String, Object> paramMap) {
if (paramMap == null) {
return ResultMessageUtil.exceptionToJSON("传入参数错误,组织条件必输", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
}
try {
OnhandVO[] onhandVOs = NCLocator.getInstance().lookup(IAPIOnhandQuery.class)
.queryOnhandVOByCondition(paramMap);
// 对数据进行整合组装
if (null != onhandVOs && onhandVOs.length > 0) {
JSONArray resArr = new JSONArray();
for (OnhandVO onhandVO : onhandVOs) {
String cmaterialvid = onhandVO.getCmaterialvid();
String cwarehouseid = onhandVO.getCwarehouseid();
Map<String, Object> goodsMap = this.getMaterialInfo(cmaterialvid);
String selectFields = StordocVO.CODE + "," + StordocVO.NAME;
Map<String, Object> stordocMap = this.transferFields(StordocVO.getDefaultTableName(), selectFields, StordocVO.PK_STORDOC, cwarehouseid);
JSONObject oneJson = new JSONObject();
oneJson.put("pk_material", cmaterialvid);
oneJson.put("materialCode", goodsMap.getOrDefault(MaterialVO.CODE, ""));// 物料编码
oneJson.put("materialName", goodsMap.getOrDefault(MaterialVO.NAME, ""));// 物料名称
oneJson.put("materialtype", goodsMap.getOrDefault(MaterialVO.MATERIALTYPE, "")); // 型号
oneJson.put("materialspec", goodsMap.getOrDefault(MaterialVO.MATERIALSPEC, "")); // // 规格
oneJson.put("unitcode", goodsMap.getOrDefault("unitcode", "")); // // 计量单位编码
oneJson.put("unitname", goodsMap.getOrDefault("unitname", "")); // // 计量单位名称
oneJson.put("warehousePk", onhandVO.getCwarehouseid());
oneJson.put("warehouseCode", stordocMap.getOrDefault(StordocVO.CODE, ""));// 仓库编码
oneJson.put("warehouseName", stordocMap.getOrDefault(StordocVO.NAME, ""));// 仓库名称
oneJson.put("vbatchcode", onhandVO.getVbatchcode());// 批次号
oneJson.put("onhandnum", onhandVO.getNonhandnum());
resArr.add(oneJson);
}
return ResultMessageUtil.toJSON(resArr, "现存量查询成功!");
} else {
return ResultMessageUtil.toJSON(null, "现存量查询成功,无数据!");
}
} catch (Exception e) {
return ResultMessageUtil.exceptionToJSON(e);
}
}
private Map<String, String> queryPK2CodeMap(String pkname, Set<String> pks, String tablename) throws DAOException {
SqlBuilderUtil SqlBuilderUtil = new SqlBuilderUtil();
SqlBuilder sql = new SqlBuilder();
@ -149,4 +204,34 @@ public class OnhandResource {
}
return pkCodeMap;
}
public Map<String, Object> transferFields(String tableName, String selectFields, String pkField, String pk) throws Exception {
if (StringUtils.isEmpty(pk)) {
return null;
}
SqlBuilder sqlBuilder = new SqlBuilder();
sqlBuilder.append(" select " + selectFields);
sqlBuilder.append(" from " + tableName);
sqlBuilder.append(" where dr = 0 ");
sqlBuilder.append(" and ");
sqlBuilder.append(pkField, pk);
Map<String, Object> result = (Map<String, Object>) new BaseDAO().executeQuery(sqlBuilder.toString(), new MapProcessor());
if (result == null || result.isEmpty()) {
result = new HashMap<>();
}
return result;
}
private Map getMaterialInfo(String pkMaterial) throws BusinessException {
String sql = " select a.code, a.name, a.materialtype, a.materialspec, a.pk_measdoc, c.code unitcode, c.name unitname " +
"from bd_material a " +
"left join bd_materialconvert b on a.pk_material = b.pk_material " +
"left join bd_measdoc c on a.pk_measdoc = c.pk_measdoc " +
"where a.pk_material = '" + pkMaterial + "' ";
Map map = (Map) new BaseDAO().executeQuery(sql, new MapProcessor());
return map;
}
}