|
@@ -66,9 +66,9 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
|
|
|
@Override
|
|
|
public Page<JdBackVo> getPage(JdBackSelectDto dto) {
|
|
|
IWrapper<JdBack> wrapper = getWrapper();
|
|
|
- wrapper.like("jb",JdBackVo::getLogisticsCode, dto.getKeyword());
|
|
|
- wrapper.eq("jb",JdBackVo::getType, dto.getType());
|
|
|
- wrapper.eq("jb",JdBackVo::getStatus, dto.getStatus());
|
|
|
+ wrapper.like("jb", JdBackVo::getLogisticsCode, dto.getKeyword());
|
|
|
+ wrapper.eq("jb", JdBackVo::getType, dto.getType());
|
|
|
+ wrapper.eq("jb", JdBackVo::getStatus, dto.getStatus());
|
|
|
wrapper.orderByDesc("jb", JdBack::getId);
|
|
|
Page<JdBackVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
List<JdBackVo> records = page.getRecords();
|
|
@@ -127,6 +127,7 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
|
|
|
logisticsInfos.setStatus(0);
|
|
|
logisticsInfos.setInStockStatus(10);
|
|
|
logisticsInfos.setBusinessId(jdBackDto.getId());
|
|
|
+ logisticsInfos.setBusinessType(4);//京东退货
|
|
|
logisticsInfos.setWarehouseId(jdBackDto.getWarehouseId());
|
|
|
logisticsInfos.setLogisticsCompanyCode(jdBackDto.getLogisticsCompanyCode());
|
|
|
logisticsInfos.setCode(jdBackDto.getLogisticsCode());
|
|
@@ -150,70 +151,74 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
|
|
|
public void createJdBackQualityWait(List<JdBackDetails> jdBackDetailsList) {
|
|
|
Map<Long, BigDecimal> map = new HashMap<>();
|
|
|
List<String> productCodeList = jdBackDetailsList.stream().map(JdBackDetails::getProductCode).collect(Collectors.toList());
|
|
|
- if (ObjectUtil.isNotEmpty(productCodeList)) {
|
|
|
- List<ProductInfo> productList = productInfoService.list(q -> q.in(ProductInfo::getCode, productCodeList));
|
|
|
- Map<String, ProductInfo> productInfoMap = productList.stream().collect(Collectors.toMap(ProductInfo::getCode, Function.identity()));
|
|
|
- for (JdBackDetails jdBackDetails : jdBackDetailsList) {
|
|
|
- ProductInfo productInfo = productInfoMap.get(jdBackDetails.getProductCode());
|
|
|
- if (ObjectUtil.isEmpty(productInfo)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- //判断是否存在扩展json
|
|
|
- String victoriatouristJson = productInfo.getVictoriatouristJson();
|
|
|
- if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
|
|
|
- JSONObject json = JSONObject.parseObject(victoriatouristJson);
|
|
|
- //判断是否是组合
|
|
|
- if (1 == json.getInteger("combination")) {
|
|
|
- JSONArray productCombinationList = json.getJSONArray("productCombinationList");
|
|
|
- if (ObjectUtil.isEmpty(productCombinationList)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- for (int i = 0; i < productCombinationList.size(); i++) {
|
|
|
- JSONObject productCombination = productCombinationList.getJSONObject(i);
|
|
|
- Long linkProductId = productCombination.getLong("linkProductId");
|
|
|
- BigDecimal linkQuantity = productCombination.getBigDecimal("linkQuantity");
|
|
|
+ if (ObjectUtil.isEmpty(productCodeList)) {
|
|
|
+ throw new ServiceException("退货列表为空");
|
|
|
+ }
|
|
|
+ List<ProductInfo> productList = productInfoService.list(q -> q.in(ProductInfo::getCustomCode, productCodeList));
|
|
|
+ if (productList.size() != jdBackDetailsList.size()) {
|
|
|
+ throw new ServiceException("存在未知产品");
|
|
|
+ }
|
|
|
+ Map<String, ProductInfo> productInfoMap = productList.stream().collect(Collectors.toMap(ProductInfo::getCustomCode, Function.identity()));
|
|
|
+ for (JdBackDetails jdBackDetails : jdBackDetailsList) {
|
|
|
+ ProductInfo productInfo = productInfoMap.get(jdBackDetails.getProductCode());
|
|
|
+ if (ObjectUtil.isEmpty(productInfo)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //判断是否存在扩展json
|
|
|
+ String victoriatouristJson = productInfo.getVictoriatouristJson();
|
|
|
+ if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
|
|
|
+ JSONObject json = JSONObject.parseObject(victoriatouristJson);
|
|
|
+ //判断是否是组合
|
|
|
+ if (1 == json.getInteger("combination")) {
|
|
|
+ JSONArray productCombinationList = json.getJSONArray("productCombinationList");
|
|
|
+ if (ObjectUtil.isEmpty(productCombinationList)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (int i = 0; i < productCombinationList.size(); i++) {
|
|
|
+ JSONObject productCombination = productCombinationList.getJSONObject(i);
|
|
|
+ Long linkProductId = productCombination.getLong("linkProductId");
|
|
|
+ BigDecimal linkQuantity = productCombination.getBigDecimal("linkQuantity");
|
|
|
|
|
|
- //根据退货数量*组合产品对应组成产品所需要的数量计算待质检数量
|
|
|
- BigDecimal quantity0 = jdBackDetails.getQuantity().multiply(linkQuantity);
|
|
|
+ //根据退货数量*组合产品对应组成产品所需要的数量计算待质检数量
|
|
|
+ BigDecimal quantity0 = jdBackDetails.getQuantity().multiply(linkQuantity);
|
|
|
|
|
|
- BigDecimal quantity = map.getOrDefault(linkProductId, BigDecimal.ZERO);
|
|
|
- map.put(productInfo.getId(), quantity.add(quantity0));
|
|
|
- }
|
|
|
- //组合产品处理完直接结束
|
|
|
- continue;
|
|
|
+ BigDecimal quantity = map.getOrDefault(linkProductId, BigDecimal.ZERO);
|
|
|
+ map.put(productInfo.getId(), quantity.add(quantity0));
|
|
|
}
|
|
|
+ //组合产品处理完直接结束
|
|
|
+ continue;
|
|
|
}
|
|
|
- //如果不是组合产品
|
|
|
- BigDecimal quantity = map.getOrDefault(productInfo.getId(), BigDecimal.ZERO);
|
|
|
- map.put(productInfo.getId(), quantity.add(jdBackDetails.getQuantity()));
|
|
|
}
|
|
|
- //创建待质检记录
|
|
|
- if (ObjectUtil.isEmpty(map)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- List<JdBackQualityWait> addJdBackQualityWaitList = new ArrayList<>();
|
|
|
- //获取已存在的待质检产品列表
|
|
|
- List<JdBackQualityWait> jdBackQualityWaitList1 = jdBackQualityWaitService.list(q -> q.in(JdBackQualityWait::getProductId, map.keySet()));
|
|
|
- Map<Long, JdBackQualityWait> JdBackQualityWaitMap = jdBackQualityWaitList1.stream().collect(Collectors.toMap(JdBackQualityWait::getProductId, Function.identity()));
|
|
|
- for (Map.Entry<Long, BigDecimal> entry : map.entrySet()) {
|
|
|
- JdBackQualityWait oldJdBackQualityWait = JdBackQualityWaitMap.getOrDefault(entry.getKey(), new JdBackQualityWait());
|
|
|
- oldJdBackQualityWait.setProductId(entry.getKey());
|
|
|
- //计算历史待质检+当前待质检
|
|
|
- BigDecimal oldQuantity = oldJdBackQualityWait.getQuantity() == null ? BigDecimal.ZERO : oldJdBackQualityWait.getQuantity();
|
|
|
- oldJdBackQualityWait.setQuantity(oldQuantity.add(entry.getValue()));
|
|
|
+ //如果不是组合产品
|
|
|
+ BigDecimal quantity = map.getOrDefault(productInfo.getId(), BigDecimal.ZERO);
|
|
|
+ map.put(productInfo.getId(), quantity.add(jdBackDetails.getQuantity()));
|
|
|
+ }
|
|
|
+ //创建待质检记录
|
|
|
+ if (ObjectUtil.isEmpty(map)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<JdBackQualityWait> addJdBackQualityWaitList = new ArrayList<>();
|
|
|
+ //获取已存在的待质检产品列表
|
|
|
+ List<JdBackQualityWait> jdBackQualityWaitList1 = jdBackQualityWaitService.list(q -> q.in(JdBackQualityWait::getProductId, map.keySet()));
|
|
|
+ Map<Long, JdBackQualityWait> JdBackQualityWaitMap = jdBackQualityWaitList1.stream().collect(Collectors.toMap(JdBackQualityWait::getProductId, Function.identity()));
|
|
|
+ for (Map.Entry<Long, BigDecimal> entry : map.entrySet()) {
|
|
|
+ JdBackQualityWait oldJdBackQualityWait = JdBackQualityWaitMap.getOrDefault(entry.getKey(), new JdBackQualityWait());
|
|
|
+ oldJdBackQualityWait.setProductId(entry.getKey());
|
|
|
+ //计算历史待质检+当前待质检
|
|
|
+ BigDecimal oldQuantity = oldJdBackQualityWait.getQuantity() == null ? BigDecimal.ZERO : oldJdBackQualityWait.getQuantity();
|
|
|
+ oldJdBackQualityWait.setQuantity(oldQuantity.add(entry.getValue()));
|
|
|
|
|
|
- //添加部分直接丢list统一处理
|
|
|
- if (ObjectUtil.isEmpty(oldJdBackQualityWait.getId())) {
|
|
|
- addJdBackQualityWaitList.add(oldJdBackQualityWait);
|
|
|
- }
|
|
|
- //处理更新部分
|
|
|
- jdBackQualityWaitService.update(q -> q
|
|
|
- .eq(JdBackQualityWait::getId, oldJdBackQualityWait.getId())
|
|
|
- .setSql("quantity = quantity + " + entry.getValue()));
|
|
|
+ //添加部分直接丢list统一处理
|
|
|
+ if (ObjectUtil.isEmpty(oldJdBackQualityWait.getId())) {
|
|
|
+ addJdBackQualityWaitList.add(oldJdBackQualityWait);
|
|
|
}
|
|
|
- //统一处理添加部分
|
|
|
- jdBackQualityWaitService.saveBatch(addJdBackQualityWaitList);
|
|
|
+ //处理更新部分
|
|
|
+ jdBackQualityWaitService.update(q -> q
|
|
|
+ .eq(JdBackQualityWait::getId, oldJdBackQualityWait.getId())
|
|
|
+ .setSql("quantity = quantity + " + entry.getValue()));
|
|
|
}
|
|
|
+ //统一处理添加部分
|
|
|
+ jdBackQualityWaitService.saveBatch(addJdBackQualityWaitList);
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -271,7 +276,7 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
|
|
|
}
|
|
|
|
|
|
List<String> productCodeString = jdBackDetailsList.stream().map(JdBackDetails::getProductCode).distinct().collect(Collectors.toList());
|
|
|
- List<String> list = productInfoService.listObject(ProductInfo::getCode, q -> q.in(ProductInfo::getCode, productCodeString));
|
|
|
+ List<String> list = productInfoService.listObject(ProductInfo::getCustomCode, q -> q.in(ProductInfo::getCustomCode, productCodeString));
|
|
|
StringJoiner stringJoiner = new StringJoiner(",");
|
|
|
if (list.size() < productCodeString.size()) {
|
|
|
productCodeString.forEach(item -> {
|