qng пре 3 година
родитељ
комит
be91efb8c6

+ 24 - 2
kmall-admin/src/main/java/com/kmall/admin/controller/GoodsController.java

@@ -700,7 +700,7 @@ public class GoodsController {
 
 
     /**
-     * 同步海关编号和商品税率
+     * 选择同步海关编号和商品税率
      * @return
      */
     @PostMapping("/syncGoodsRate")
@@ -713,7 +713,29 @@ public class GoodsController {
             return R.error("同步海关商品编码失败,请联系管理员");
         }
         try {
-            goodsService.syncGoodsRate();
+            goodsService.syncGoodsRateGoode(Arrays.asList(ids));
+        }catch (Exception e){
+            e.printStackTrace();
+            return R.error("同步商品税率失败,请联系管理员");
+        }
+        return R.ok();
+    }
+
+    /**
+     * 全量同步海关编号和商品税率
+     * @return
+     */
+    @PostMapping("/syncGoodsRateAll")
+    public R syncGoodsRateAll(){
+        // 先同步海关商品编码,再同步税率
+        try {
+            goodsService.syncOmsHsCodeTask();
+        }catch (Exception e){
+            e.printStackTrace();
+            return R.error("同步海关商品编码失败,请联系管理员");
+        }
+        try {
+            goodsService.syncGoodsRateTask();
         }catch (Exception e){
             e.printStackTrace();
             return R.error("同步商品税率失败,请联系管理员");

+ 4 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/GoodsDao.java

@@ -85,4 +85,8 @@ public interface GoodsDao extends BaseDao<GoodsEntity> {
     void updateBatch(List<GoodsEntity> updateGoodsList);
 
     List<String> syncOmsHsCodeGoode(List<Integer> ids);
+
+    List<GoodsEntity> syncGoodsRateGoode(List<Integer> ids);
+
+
 }

+ 5 - 3
kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java

@@ -195,9 +195,6 @@ public interface GoodsService {
      */
     List<GoodsEntity> queryByName(String storeId, String goodsName);
 
-
-    void syncGoodsRate();
-
     void updateTaxErrorRecord(TaxErrorRecordEntity taxErrorRecordEntity);
     void insertTaxErrorRecord(TaxErrorRecordEntity taxErrorRecordEntity);
 
@@ -210,4 +207,9 @@ public interface GoodsService {
     void syncOmsHsCodeTask();
 
      void syncOmsHsCodeGoode(List<Integer> skuList);
+
+    void syncGoodsRateGoode(List<Integer> skuList);
+
+    void syncGoodsRateTask();
+
 }

+ 49 - 7
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -2133,21 +2133,65 @@ public class GoodsServiceImpl implements GoodsService {
         return goodsDao.queryObjectBySn(goodsSn);
     }
 
+    /**
+     * 全量拉取
+     */
     @Override
     public void syncOmsHsCodeTask() {
-        List<String> skuList = goodsDao.queryNonSyncOmsHsCodeSkuList();
-        syncOmsHsCode(skuList);
+        syncOmsHsCodeSegment(goodsDao.queryNonSyncOmsHsCodeSkuList());
+    }
+    /**
+     * 全量计算
+     */
+    @Override
+    public void syncGoodsRateTask() {
+        // 查询出所有商品
+        List<GoodsEntity> allGoodsList = goodsDao.queryAllList(null,null);
+        syncGoodsRate(allGoodsList);
     }
 
+    /**
+     * 选择拉取
+     * @param ids
+     */
     @Override
     public void syncOmsHsCodeGoode(List<Integer> ids) {
-        syncOmsHsCode(goodsDao.syncOmsHsCodeGoode(ids));
+        syncOmsHsCodeSegment(goodsDao.syncOmsHsCodeGoode(ids));
+    }
+
+    /**
+     * 选择计算
+     * @param ids
+     */
+    @Override
+    public void syncGoodsRateGoode(List<Integer> ids) {
+        syncGoodsRate(goodsDao.syncGoodsRateGoode(ids));
+    }
+
+
+    public void syncOmsHsCodeSegment(List<String> skuList) {
+        int segmentLimitSize = 300;
+        if (skuList.size() < segmentLimitSize) {
+            this.syncOmsHsCode(skuList);
+        } else {
+            int segmentSize = skuList.size() % segmentLimitSize == 0 ? skuList.size() / segmentLimitSize : (skuList.size() / segmentLimitSize) + 1;
+            List<List<String>> segment = new ArrayList<>();
+            for (int i = 0; i < segmentSize; i++) {
+                int end = (i == segmentSize - 1) ? skuList.size() : i * segmentLimitSize + segmentLimitSize;
+                segment.add(new ArrayList<>(skuList.subList(i * segmentLimitSize, end)));
+            }
+            for (List<String> tmp : segment) {
+                this.syncOmsHsCode(tmp);
+            }
+        }
     }
 
     @Transactional
     public void syncOmsHsCode(List<String> skuList) {
         if (Objects.nonNull(skuList) && skuList.size()>0){
             String result = HttpUtil.get("https://oms.ds-bay.com/oms-controller-mgt/pdProductRecord/hsCodeMapBySkuList?skuList=" + skuList);
+            //String result = HttpUtil.get("http://183.3.221.143:8080/oms-controller-mgt/pdProductRecord/hsCodeMapBySkuList?skuList=" + skuList);
+            //String result = HttpUtil.get("http://127.0.0.1:8080/oms-controller-mgt/pdProductRecord/hsCodeMapBySkuList?skuList=" + skuList);
             Map<String,Map> map = JSON.parseObject(result, Map.class);
 
             for (String sku : skuList) {
@@ -2189,12 +2233,10 @@ public class GoodsServiceImpl implements GoodsService {
 
 
 
-    @Override
     @Transactional
-    public void syncGoodsRate() {
+    public void syncGoodsRate(List<GoodsEntity> allGoodsList) {
         String storeId = "163"; // 市场部说所有门店价格一致,并且活动一致,可直接取其中一个门店价格进行计算税率
-        // 查询出所有商品
-        List<GoodsEntity> allGoodsList = goodsDao.queryAllList(null,null);
+
         for (GoodsEntity goodsEntity : allGoodsList) {
             // 同步过海关商品编码才可以算税率
             if ("1".equals(goodsEntity.getIsSyncHsCode())) {

+ 23 - 22
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -2201,30 +2201,31 @@ public class OrderServiceImpl implements OrderService {
             // 设置支付单开始时间
             processRecordEntity.setPaymentStartTime(new Date());
             // 判断是微信的支付码还是支付宝的支付码
-//            if (parCode.startsWith("28")) {
-//                // 支付宝支付
-//                try {
-//                    AliPay(user, parCode, order, processRecordEntity, orderWXPayRecordCurrent, store);
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                    throw e;
-//                }
-//            } else {
-//                // 微信支付
-//                try {
-//                    wxPay(user, parCode, resultObj, order, processRecordEntity, orderWXPayRecordCurrent, store);
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                    throw e;
-//                }
-//            }
+            if (parCode.startsWith("28")) {
+                // 支付宝支付
+                try {
+                    AliPay(user, parCode, order, processRecordEntity, orderWXPayRecordCurrent, store);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    throw e;
+                }
+            } else {
+                // 微信支付
+                try {
+                    wxPay(user, parCode, resultObj, order, processRecordEntity, orderWXPayRecordCurrent, store);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    throw e;
+                }
+            }
+
 
             // TODO 到时候要注释掉,测试用而已
-            OrderEntity orderEntity = queryObject(order.getId());
-            orderEntity.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_201.getItem()));
-            orderEntity.setPayStatus(Integer.parseInt(Dict.payStatus.item_2.getItem()));
-            orderEntity.setPayTime(new Date());
-            orderDao.update(orderEntity);
+//            OrderEntity orderEntity = queryObject(order.getId());
+//            orderEntity.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_201.getItem()));
+//            orderEntity.setPayStatus(Integer.parseInt(Dict.payStatus.item_2.getItem()));
+//            orderEntity.setPayTime(new Date());
+//            orderDao.update(orderEntity);
 
 
             resultObj.put("shopName", store.getStoreName()); // 根据门店编号查询

+ 7 - 7
kmall-admin/src/main/java/com/kmall/admin/task/SyncOmsTask.java

@@ -33,14 +33,14 @@ public class SyncOmsTask {
      */
     @Scheduled(cron = "0 0 3 * * ?")
     public void syncOmsHsCode() {
-        logger.info("同步所有商品表海关备案编码数据开始-----------------");
+        logger.info("syncOmsHsCode同步所有商品表海关备案编码数据开始-----------------");
         try {
             goodsService.syncOmsHsCodeTask();
         } catch (Exception e) {
             e.printStackTrace();
-            logger.info("同步所有商品表海关备案编码数据异常-----------------原因:" + e.getMessage());
+            logger.info("syncOmsHsCode同步所有商品表海关备案编码数据异常-----------------原因:" + e.getMessage());
         }
-        logger.info("同步所有商品表海关备案编码数据结束-----------");
+        logger.info("syncOmsHsCode同步所有商品表海关备案编码数据结束-----------");
 
     }
 
@@ -52,14 +52,14 @@ public class SyncOmsTask {
      */
     @Scheduled(cron = "0 0 4 * * ?")
     public void syncGoodsRate() {
-        logger.info("同步所有商品表当前售价海关备案编码对应税率数据开始-----------------");
+        logger.info("syncGoodsRate同步所有商品表当前售价海关备案编码对应税率数据开始-----------------");
         try {
-            goodsService.syncGoodsRate();
+            goodsService.syncGoodsRateTask();
         } catch (Exception e) {
             e.printStackTrace();
-            logger.info("同步所有商品表当前售价海关备案编码对应税率数据异常-----------------原因:" + e.getMessage());
+            logger.info("syncGoodsRate同步所有商品表当前售价海关备案编码对应税率数据异常-----------------原因:" + e.getMessage());
         }
-        logger.info("同步所有商品表当前售价海关备案编码数据对应税率结束-----------");
+        logger.info("syncGoodsRate同步所有商品表当前售价海关备案编码数据对应税率结束-----------");
 
     }
 

+ 8 - 0
kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml

@@ -1087,6 +1087,14 @@
         </foreach>
     </select>
 
+    <select id="syncGoodsRateGoode" resultType="com.kmall.admin.entity.GoodsEntity">
+        select * from mall_goods where is_delete = 0 and id in
+        <foreach collection="list" item="id" index="index"
+                 open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
+
 
 
 </mapper>

+ 2 - 1
kmall-admin/src/main/webapp/WEB-INF/page/shop/goods.html

@@ -140,7 +140,8 @@
                 <i-button type="dashed" @click="unSale"><i class="fa fa-hand-o-down"></i>&nbsp;下架</i-button>
                 #end
 
-                <i-button type="primary" @click="syncGoodsRate"><i class="fa fa-pencil-square-o"></i>&nbsp;同步税率</i-button>
+                <i-button type="primary" @click="syncGoodsRate"><i class="fa fa-pencil-square-o"></i>&nbsp;选择同步税率</i-button>
+                <i-button type="primary" @click="syncGoodsRateAll"><i class="fa fa-pencil-square-o"></i>&nbsp;全量同步税率</i-button>
                 <i-button type="primary" @click="checkGoodsPrice"><i class="fa fa-pencil-square-o"></i>&nbsp;校验产品价格</i-button>
 
                 <!--<i-button type="info" @click="goodsExport"><i class="fa fa-plus"></i>&nbsp;商品导入</i-button>-->

+ 43 - 15
kmall-admin/src/main/webapp/js/shop/goods.js

@@ -403,22 +403,50 @@ var vm = new Vue({
             if(ids == null){
                 return ;
             }
-            confirm('同步商品税率会影响线上收银,请谨慎确认,并会同步产品备案信息,同步税率和产品备案信息预需要数分钟,确定要同步?', function () {
-                $.ajax({
-                    type: "POST",
-                    url: "../goods/syncGoodsRate",
-                    contentType: "application/json",
-                    data: JSON.stringify(ids),
-                    success: function (r) {
-                        if (r.code == 0) {
-                            alert('同步税率成功', function (index) {
-                                $("#jqGrid").trigger("reloadGrid");
-                            });
-                        } else {
-                            alert(r.msg);
+            var lock=false;
+            confirm('选择同步商品税率会影响线上收银,请谨慎确认,并会同步产品备案信息,确定要同步?', function () {
+                if(!lock){
+                    lock=true;
+                    $.ajax({
+                        type: "POST",
+                        url: "../goods/syncGoodsRate",
+                        contentType: "application/json",
+                        data: JSON.stringify(ids),
+                        success: function (r) {
+                            if (r.code == 0) {
+                                alert('选择同步税率成功', function (index) {
+                                    $("#jqGrid").trigger("reloadGrid");
+                                });
+                            } else {
+                                alert(r.msg);
+                            }
                         }
-                    }
-                });
+                    });
+                }
+
+            });
+        },
+        syncGoodsRateAll: function () {
+            var lock=false;
+            confirm('全量同步商品税率会影响线上收银,请谨慎确认,并会同步产品备案信息,同步税率和产品备案信息预需要数分钟,确定要同步?', function () {
+                if(!lock){
+                    lock=true;
+                    $.ajax({
+                        type: "POST",
+                        url: "../goods/syncGoodsRateAll",
+                        contentType: "application/json",
+                        success: function (r) {
+                            if (r.code == 0) {
+                                alert('全量同步税率成功', function (index) {
+                                    $("#jqGrid").trigger("reloadGrid");
+                                });
+                            } else {
+                                alert(r.msg);
+                            }
+                        }
+                    });
+                }
+
             });
         },
         openSpe: function () {