Ver Fonte

Merge branch 'featrue/所有商品修改同步税率210805' of qng/kmall-pt-general into master

杨波 há 3 anos atrás
pai
commit
4973f66271

+ 26 - 4
kmall-admin/src/main/java/com/kmall/admin/controller/GoodsController.java

@@ -700,20 +700,42 @@ public class GoodsController {
 
 
     /**
-     * 同步海关编号和商品税率
+     * 选择同步海关编号和商品税率
      * @return
      */
     @PostMapping("/syncGoodsRate")
-    public R syncGoodsRate(){
+    public R syncGoodsRate(@RequestBody Integer[] ids){
         // 先同步海关商品编码,再同步税率
         try {
-            goodsService.syncOmsHsCode();
+            goodsService.syncOmsHsCodeGoode(Arrays.asList(ids));
         }catch (Exception e){
             e.printStackTrace();
             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("同步商品税率失败,请联系管理员");

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

@@ -83,4 +83,10 @@ public interface GoodsDao extends BaseDao<GoodsEntity> {
     List<GoodsEntity> querySpecialCosmetics(@Param("hdCodeSet") Set<String> hdCodeSet);
 
     void updateBatch(List<GoodsEntity> updateGoodsList);
+
+    List<String> syncOmsHsCodeGoode(List<Integer> ids);
+
+    List<GoodsEntity> syncGoodsRateGoode(List<Integer> ids);
+
+
 }

+ 8 - 6
kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java

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

+ 61 - 23
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -27,6 +27,7 @@ import com.kmall.common.constant.Dict;
 import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.common.utils.*;
 import com.kmall.manager.manager.redis.JedisUtil;
+import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -2132,13 +2133,65 @@ public class GoodsServiceImpl implements GoodsService {
         return goodsDao.queryObjectBySn(goodsSn);
     }
 
+    /**
+     * 全量拉取
+     */
+    @Override
+    public void syncOmsHsCodeTask() {
+        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) {
+        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 = goodsDao.queryNonSyncOmsHsCodeSkuList();
+    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) {
@@ -2177,31 +2230,13 @@ public class GoodsServiceImpl implements GoodsService {
 
     }
 
-    @Override
-    @Transactional
-    public void syncOmsGoodsRate() {
-        List<GoodsEntity> list = goodsDao.queryNonSyncOmsGoodsRateSkuList();
-        if (Objects.nonNull(list) && list.size()>0){
-            String result = HttpUtil.get("https://oms.ds-bay.com/oms-controller-mgt/taxBill/queryGoodsRate?thirdPartyMerchCode=CW001");
-            Map<String,String> map = JSON.parseObject(result, Map.class);
-            for (GoodsEntity goodsEntity : list) {
-                String goodsRate = map.get(goodsEntity.getHsCode());
-                if (StringUtils.isNotEmpty(goodsRate)){
-                    goodsEntity.setIsSyncGoodsRate("1");
-                    goodsEntity.setGoodsRate(new BigDecimal(goodsRate));
-                    goodsDao.update(goodsEntity);
-                }
-            }
 
-        }
-    }
 
-    @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())) {
@@ -2214,6 +2249,7 @@ public class GoodsServiceImpl implements GoodsService {
 //                    BigDecimal goodsRate = calculateTax.divide(actualPaymentAmount, 4, BigDecimal.ROUND_HALF_UP);
                     BigDecimal goodsRate =CalculateTax.calculateGoodsRate(goodsEntity);
                     goodsEntity.setGoodsRate(goodsRate);
+                    goodsEntity.setIsSyncHsCode("0");
                     goodsDao.update(goodsEntity);
 //                }
             }
@@ -2269,6 +2305,8 @@ public class GoodsServiceImpl implements GoodsService {
         return goodsDao.queryAllList(page,pageSize);
     }
 
+
+
     private void calculeatePromotion(SysUserEntity user, GoodsEntity goods, List<Map<String, String>> errorPriceSkuList, List<ShopErrorPriceRecordEntity> shopErrorPriceRecordEntities) {
         String prodBarcode = goods.getProdBarcode();
         String storeId = goods.getStoreId()+"";

+ 6 - 5
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -2219,12 +2219,13 @@ public class OrderServiceImpl implements OrderService {
                 }
             }
 
+
             // 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()); // 根据门店编号查询

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

@@ -33,33 +33,17 @@ public class SyncOmsTask {
      */
     @Scheduled(cron = "0 0 3 * * ?")
     public void syncOmsHsCode() {
-        logger.info("同步所有商品表海关备案编码数据开始-----------------");
+        logger.info("syncOmsHsCode同步所有商品表海关备案编码数据开始-----------------");
         try {
-            goodsService.syncOmsHsCode();
+            goodsService.syncOmsHsCodeTask();
         } catch (Exception e) {
             e.printStackTrace();
-            logger.info("同步所有商品表海关备案编码数据异常-----------------原因:" + e.getMessage());
+            logger.info("syncOmsHsCode同步所有商品表海关备案编码数据异常-----------------原因:" + e.getMessage());
         }
-        logger.info("同步所有商品表海关备案编码数据结束-----------");
+        logger.info("syncOmsHsCode同步所有商品表海关备案编码数据结束-----------");
 
     }
 
-    /**
-     * 同步oms海关备案编码对应税率
-     * 每天凌晨四点执行一次
-     */
-//    @Scheduled(cron = "0 0 4 * * ?")
-    public void syncOmsGoodsRate() {
-        logger.info("同步所有商品表海关备案编码对应税率数据开始-----------------");
-        try {
-            goodsService.syncOmsGoodsRate();
-        } catch (Exception e) {
-            e.printStackTrace();
-            logger.info("同步所有商品表海关备案编码对应税率数据异常-----------------原因:" + e.getMessage());
-        }
-        logger.info("同步所有商品表海关备案编码数据对应税率结束-----------");
-
-    }
 
 
     /**
@@ -68,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同步所有商品表当前售价海关备案编码数据对应税率结束-----------");
 
     }
 

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

@@ -1079,4 +1079,22 @@
         </foreach>
     </update>
 
+    <select id="syncOmsHsCodeGoode" resultType="java.lang.String">
+        select sku from mall_goods where id in
+        <foreach collection="list" item="id" index="index"
+                 open="(" close=")" separator=",">
+            #{id}
+        </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>

+ 3 - 2
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>-->
@@ -197,7 +198,7 @@
                 #end
             </div>
         </Row>
-        <table id="jqGrid"></table>
+        <table id="jqGrid" ref="selection" ></table>
         <div id="jqGridPager"><div class="ui-jqgrid-bdiv frozen-div"></div></div>
 
     </div>

+ 12 - 0
kmall-admin/src/main/webapp/js/common.js

@@ -109,6 +109,18 @@ function getSelectedRows() {
     return grid.getGridParam("selarrrow");
 };
 
+
+//选择多条记录
+function getSelectedRowsSku() {
+    var grid = $("#jqGrid");
+    var rowKey = grid.getGridParam("selrow");
+    if (!rowKey) {
+        iview.Message.error("请选择一条记录");
+        return;
+    }
+    return grid.getGridParam("selarrrow");
+};
+
 /**
  * 预览图片
  * @param url

+ 47 - 14
kmall-admin/src/main/webapp/js/shop/goods.js

@@ -399,21 +399,54 @@ var vm = new Vue({
             });
         },
         syncGoodsRate: function () {
-            confirm('同步商品税率会影响线上收银,请谨慎确认,并会同步产品备案信息,同步税率和产品备案信息预需要数分钟,确定要同步?', function () {
-                $.ajax({
-                    type: "POST",
-                    url: "../goods/syncGoodsRate",
-                    contentType: "application/json",
-                    success: function (r) {
-                        if (r.code == 0) {
-                            alert('同步税率成功', function (index) {
-                                $("#jqGrid").trigger("reloadGrid");
-                            });
-                        } else {
-                            alert(r.msg);
+            var ids = getSelectedRows();
+            if(ids == null){
+                return ;
+            }
+            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 () {