yzc 2 gadi atpakaļ
vecāks
revīzija
6ffea6e496

+ 105 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/po/ProductInfoWdlyJson.java

@@ -0,0 +1,105 @@
+package com.fjhx.item.entity.product.po;
+
+import java.util.List;
+
+/**
+ * 维多利亚产品信息扩展JSON实体
+ */
+
+public class ProductInfoWdlyJson {
+    /**
+     * 京东供价
+     */
+    private String jdPurchasePrice;
+    /**
+     * 标准售价
+     */
+    private String sellingPrice;
+    /**
+     * 库存清空期限
+     */
+    private String clearancePeriod;
+    /**
+     * 是否组合
+     */
+    private String combination;
+    /**
+     * 新品期
+     */
+    private Integer newProductsDay;
+    /**
+     * 成长期
+     */
+    private Integer growUpDay;
+    /**
+     * 当前周期
+     */
+    private String lifeCycle;
+    /**
+     * 新品预计销量
+     */
+    private String newProductsExpectedSales;
+    /**
+     * 成长期预计销量
+     */
+    private String growUpExpectedSales;
+    /**
+     * 成熟期预计销量
+     */
+    private String matureExpectedSales;
+    /**
+     * 重量
+     */
+    private String weight;
+    /**
+     * 材质面料
+     */
+    private String materialQuality;
+    /**
+     * 适用温度
+     */
+    private String applicableTemp;
+    /**
+     * 销售状态
+     */
+    private String salesStatus;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+    /**
+     * 部门名称
+     */
+    private String deptName;
+    /**
+     * 关联产品列表
+     */
+    private List<ProductCombination> productCombinationList;
+
+    class ProductCombination {
+        /**
+         * 关联产品id
+         */
+        private Long linkProductId;
+        /**
+         * 关联产品数量
+         */
+        private String linkQuantity;
+
+        //VO字段
+        /**
+         * 关联产品名称
+         */
+        private String name;
+        /**
+         * 关联产品编号
+         */
+        private String code;
+        /**
+         * 关联产品自定义编号
+         */
+        private String customCode;
+    }
+
+}

+ 64 - 60
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdBackServiceImpl.java

@@ -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();
@@ -151,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)
@@ -272,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 -> {