Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
08be4cff54
|
@ -129,6 +129,89 @@ public class OnhandResource {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询现存量-思普PLM
|
||||
*
|
||||
* @author mzr
|
||||
* @date 2025/7/24
|
||||
*/
|
||||
@POST
|
||||
@Path("onhandQuerySp")
|
||||
@Consumes("application/json")
|
||||
@Produces("application/json")
|
||||
public JSONString onhandQuerySp(Map<String, Object> paramMap) {
|
||||
if (paramMap == null) {
|
||||
return ResultMessageUtil.exceptionToJSON("传入参数错误,组织条件必输", APIErrCodeEnum.BUSINESSEXCCODE.getCode());
|
||||
}
|
||||
try {
|
||||
OnhandVO[] onhandVOs = NCLocator.getInstance().lookup(IAPIOnhandQuery.class)
|
||||
.queryOnhandVOByDims(paramMap);
|
||||
// 对数据进行整合组装,返回物料+仓库+数量
|
||||
if (null != onhandVOs && onhandVOs.length > 0) {
|
||||
// 收集所有物料和仓库ID
|
||||
Set<String> materialIds = Arrays.stream(onhandVOs)
|
||||
.map(OnhandVO::getCmaterialvid)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
Set<String> warehouseIds = Arrays.stream(onhandVOs)
|
||||
.map(OnhandVO::getCwarehouseid)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 批量查询物料和仓库信息
|
||||
Map<String, Map<String, Object>> materialInfoMap = new HashMap<>();
|
||||
Map<String, Map<String, Object>> warehouseInfoMap = new HashMap<>();
|
||||
|
||||
String materialSelectFields = MaterialVO.CODE + "," + MaterialVO.NAME;
|
||||
String warehouseSelectFields = StordocVO.CODE + "," + StordocVO.NAME;
|
||||
|
||||
for (String materialId : materialIds) {
|
||||
Map<String, Object> materialMap = this.transferFields(
|
||||
MaterialVO.getDefaultTableName(), materialSelectFields, MaterialVO.PK_MATERIAL, materialId);
|
||||
materialInfoMap.put(materialId, materialMap != null ? materialMap : new HashMap<>());
|
||||
}
|
||||
|
||||
for (String warehouseId : warehouseIds) {
|
||||
Map<String, Object> warehouseMap = this.transferFields(
|
||||
StordocVO.getDefaultTableName(), warehouseSelectFields, StordocVO.PK_STORDOC, warehouseId);
|
||||
warehouseInfoMap.put(warehouseId, warehouseMap != null ? warehouseMap : new HashMap<>());
|
||||
}
|
||||
// 根据物料和仓库分组
|
||||
Map<String, List<OnhandVO>> groupedOnhand = Arrays.stream(onhandVOs)
|
||||
.collect(Collectors.groupingBy(onhandVO -> onhandVO.getPk_org() + "_" + onhandVO.getCmaterialvid() + "_" + onhandVO.getCwarehouseid()));
|
||||
Set<String> keys = groupedOnhand.keySet();
|
||||
JSONArray reArray = new JSONArray();
|
||||
for (String dimkey : keys) {
|
||||
List<OnhandVO> onhandVOList = groupedOnhand.get(dimkey);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
UFDouble onhandNum = UFDouble.ZERO_DBL;
|
||||
|
||||
String cmaterialvid = onhandVOList.get(0).getCmaterialvid();
|
||||
String cwarehouseid = onhandVOList.get(0).getCwarehouseid();
|
||||
Map<String, Object> goodsMap = materialInfoMap.getOrDefault(cmaterialvid, Collections.emptyMap());
|
||||
Map<String, Object> stordocMap = warehouseInfoMap.getOrDefault(cwarehouseid, Collections.emptyMap());
|
||||
jsonObject.put("materialPk", cmaterialvid);
|
||||
jsonObject.put("materialCode", goodsMap.getOrDefault(MaterialVO.CODE, ""));// 物料编码
|
||||
jsonObject.put("materialName", goodsMap.getOrDefault(MaterialVO.NAME, ""));// 物料名称
|
||||
jsonObject.put("warehousePk", cwarehouseid);
|
||||
jsonObject.put("warehouseCode", stordocMap.getOrDefault(StordocVO.CODE, ""));// 仓库编码
|
||||
jsonObject.put("warehouseName", stordocMap.getOrDefault(StordocVO.NAME, ""));// 仓库名称
|
||||
for (OnhandVO onhandVO : onhandVOList) {
|
||||
onhandNum = onhandNum.add(onhandVO.getNonhandnum());
|
||||
}
|
||||
jsonObject.put("onhandnum", onhandNum);
|
||||
reArray.add(jsonObject);
|
||||
}
|
||||
return ResultMessageUtil.toJSON(reArray, "现存量查询成功!");
|
||||
|
||||
} else {
|
||||
return ResultMessageUtil.toJSON(null, "现存量查询成功,无数据!");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return ResultMessageUtil.exceptionToJSON(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据条件批量查询现存量
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue