|
@@ -1491,8 +1491,10 @@ public class KwpGoodsService {
|
|
|
public GoodsInfoResp getGoods(GoodsInfoReq req) {
|
|
public GoodsInfoResp getGoods(GoodsInfoReq req) {
|
|
|
log.info("查询商品信息,请求参数 :{}", JSON.toJSONString(req));
|
|
log.info("查询商品信息,请求参数 :{}", JSON.toJSONString(req));
|
|
|
//查询上商品信息
|
|
//查询上商品信息
|
|
|
- Long entId = StringUtils.isNotBlank(req.getEntId()) ? Long.valueOf(req.getEntId()) : null;
|
|
|
|
|
- List<KwpGoods> goods = kwpGoodsRepository.queryByEntIdAndGoodsName(entId, req.getGoodsName());
|
|
|
|
|
|
|
+ Long entId = parseLongParam(req.getEntId(), "企业id");
|
|
|
|
|
+ Long proxyEntId = parseLongParam(req.getProxyEntId(), "代理商id");
|
|
|
|
|
+ List<KwpGoods> goods = queryGoodsInfoList(req, entId, proxyEntId);
|
|
|
|
|
+ log.info("查询商品信息,返回条数 :{}", goods.size());
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isEmpty(goods)) {
|
|
if (org.apache.commons.collections4.CollectionUtils.isEmpty(goods)) {
|
|
|
return new GoodsInfoResp();
|
|
return new GoodsInfoResp();
|
|
|
}
|
|
}
|
|
@@ -1506,6 +1508,59 @@ public class KwpGoodsService {
|
|
|
return goodsInfoResp;
|
|
return goodsInfoResp;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 查询商品信息列表。企业id和代理商id同时传入时,按代理合同商品限定商品范围;代理商id未传入时保持原有查询逻辑。
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param req 查询商品请求参数
|
|
|
|
|
+ * @param entId 企业id
|
|
|
|
|
+ * @param proxyEntId 代理商id
|
|
|
|
|
+ * @return 商品信息列表
|
|
|
|
|
+ */
|
|
|
|
|
+ private List<KwpGoods> queryGoodsInfoList(GoodsInfoReq req, Long entId, Long proxyEntId) {
|
|
|
|
|
+ if (!isProxyGoodsQuery(req)) {
|
|
|
|
|
+ log.info("查询商品信息,请求参数 :{}", JSON.toJSONString(req));
|
|
|
|
|
+ return kwpGoodsRepository.queryByEntIdAndGoodsName(entId, req.getGoodsName());
|
|
|
|
|
+ }
|
|
|
|
|
+ List<Long> proxyGoodsIds = remoteContractService.queryProxyGoodsIds(entId, proxyEntId);
|
|
|
|
|
+ log.info("查询代理商品信息,企业id :{}, 代理商id :{},条数:{}", entId, proxyEntId, proxyGoodsIds.size());
|
|
|
|
|
+ if (CollUtil.isEmpty(proxyGoodsIds)) {
|
|
|
|
|
+ log.info("查询代理商品信息为空");
|
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
|
+ }
|
|
|
|
|
+ return kwpGoodsRepository.queryByIdsAndGoodsName(proxyGoodsIds, req.getGoodsName());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 判断是否按代理合同商品查询。只有企业id与代理商id同时存在时才切换新逻辑,避免影响原有调用方。
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param req 查询商品请求参数
|
|
|
|
|
+ * @return true-按代理合同商品查询;false-按原有企业商品查询
|
|
|
|
|
+ */
|
|
|
|
|
+ static boolean isProxyGoodsQuery(GoodsInfoReq req) {
|
|
|
|
|
+ return Objects.nonNull(req)
|
|
|
|
|
+ && StringUtils.isNotBlank(req.getEntId())
|
|
|
|
|
+ && StringUtils.isNotBlank(req.getProxyEntId());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 安全转换Long参数,避免非法字符串导致系统异常。
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param value 参数值
|
|
|
|
|
+ * @param paramName 参数名称
|
|
|
|
|
+ * @return Long参数值
|
|
|
|
|
+ */
|
|
|
|
|
+ private Long parseLongParam(String value, String paramName) {
|
|
|
|
|
+ if (StringUtils.isBlank(value)) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ try {
|
|
|
|
|
+ return Long.valueOf(value);
|
|
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
|
|
+ log.warn("查询商品信息参数转换失败,{}:{}", paramName, value, e);
|
|
|
|
|
+ throw new BusinessException(paramName + "格式不正确");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private static GoodsInfoResp.GoodsInfo getGoodsInfo(KwpGoods x, Map<String, Map<String, String>> valueAndDictResDtoMap) {
|
|
private static GoodsInfoResp.GoodsInfo getGoodsInfo(KwpGoods x, Map<String, Map<String, String>> valueAndDictResDtoMap) {
|
|
|
GoodsInfoResp.GoodsInfo goodsInfo = new GoodsInfoResp.GoodsInfo();
|
|
GoodsInfoResp.GoodsInfo goodsInfo = new GoodsInfoResp.GoodsInfo();
|
|
|
goodsInfo.setGoodsId(x.getId());
|
|
goodsInfo.setGoodsId(x.getId());
|