Bladeren bron

xwh增加品牌导入导出功能

xwh 4 jaren geleden
bovenliggende
commit
1476d4752a

+ 95 - 3
kmall-admin/src/main/java/com/kmall/admin/controller/BrandController.java

@@ -3,17 +3,25 @@ package com.kmall.admin.controller;
 import com.google.common.collect.ImmutableBiMap;
 import com.kmall.admin.dto.CopyBrandDto;
 import com.kmall.admin.dto.CopyCategoryDto;
+import com.kmall.admin.dto.StoreGoodsDto;
 import com.kmall.admin.entity.BrandEntity;
+import com.kmall.admin.entity.ProductStoreRelaEntity;
 import com.kmall.admin.service.BrandService;
 import com.kmall.admin.utils.ParamUtils;
+import com.kmall.common.constant.Dict;
+import com.kmall.common.constant.JxlsXmlTemplateName;
 import com.kmall.common.utils.*;
+import com.kmall.common.utils.excel.ExcelExport;
+import com.kmall.common.utils.excel.ExcelUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
 
 /**
  * Controller
@@ -28,6 +36,9 @@ public class BrandController {
     @Autowired
     private BrandService brandService;
 
+    @Autowired
+    private ExcelUtil excelUtil;
+
     /**
      * 查看列表
      */
@@ -140,4 +151,85 @@ public class BrandController {
         brandService.saveCopyCategory(copyBrandDto);
         return R.ok();
     }
+
+
+
+
+    /**
+     * 品牌导出
+     * @param params
+     * @param response
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "export")
+    public R export(@RequestParam Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) {
+        // 根据条件查询出列表
+        List<BrandEntity> brandEntityList = brandService.queryExportList(params);
+
+        ExcelExport ee = new ExcelExport("品牌制造商信息");
+
+        String[] header = new String[]{"品牌id","所属商户","所属商户id","所属分类","所属分类id","品牌名称","描述","是否显示","是否新品牌"};
+
+
+        List<Map<String, Object>> list = new ArrayList<>();
+        if (brandEntityList!=null && brandEntityList.size()>0){
+            for (BrandEntity brandEntity : brandEntityList) {
+                LinkedHashMap<String, Object> map = new LinkedHashMap<>();
+                map.put("Id",brandEntity.getId());
+                map.put("MerchName",brandEntity.getMerchName());
+                map.put("MerchSn",brandEntity.getMerchSn());
+                map.put("CategoryName",brandEntity.getCategoryName());
+                map.put("CategoryId",brandEntity.getCategoryId());
+                map.put("BrandName",brandEntity.getName());
+                map.put("SimpleDesc",brandEntity.getSimpleDesc());
+                map.put("IsShow",brandEntity.getIsShow()==1?"是":"否");
+                map.put("IsNew",brandEntity.getIsNew()==1?"是":"否");
+                list.add(map);
+            }
+        }
+
+
+
+        ee.addSheetByMap("品牌制造商信息", list, header);
+        ee.export(response);
+
+        return R.ok();
+    }
+
+
+
+
+    /**
+     * 导入品牌
+     */
+    @RequestMapping("/upload")
+    @ResponseBody
+    public R upload(@RequestParam("file") MultipartFile file) {
+        List<BrandEntity> brandEntityList = new ArrayList<>();//信息
+        try {
+            BrandEntity brandEntity = new BrandEntity();
+            Map<String, Object> beans = new HashMap<String, Object>();
+            beans.put("BrandEntity", brandEntity);
+            beans.put("BrandEntityList", brandEntityList);
+            if (file.isEmpty()) {
+                return R.error("文件不能为空!");
+            }
+            excelUtil.readExcel(JxlsXmlTemplateName.BRAND_DTO_LIST, beans, file.getInputStream());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error("导入失败!");
+        }
+        brandService.uploadExcel(brandEntityList);
+        //上传文件
+        return R.ok("导入成功!");
+    }
+
+
+
+
+
+
+
+
 }

+ 3 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/BrandDao.java

@@ -5,6 +5,7 @@ import com.kmall.manager.dao.BaseDao;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Dao
@@ -27,4 +28,6 @@ public interface BrandDao extends BaseDao<BrandEntity> {
     String queryBrandName(@Param("prodBarcode") String prodBarcode, @Param("storeId") String storeId);
 
     BrandEntity queryByCategoryIdAndBrandNameAndMerchSn(@Param("categoryId") Integer categoryId,@Param("name") String name,@Param("merchSn") String merchSn);
+
+    List<BrandEntity> queryExportList(Map<String, Object> params);
 }

+ 4 - 0
kmall-admin/src/main/java/com/kmall/admin/service/BrandService.java

@@ -86,4 +86,8 @@ public interface BrandService {
 
 
     BrandEntity queryByCategoryIdAndBrandNameAndMerchSn(Integer categoryId, String name, String merchSn);
+
+    List<BrandEntity> queryExportList(Map<String, Object> params);
+
+    void uploadExcel(List<BrandEntity> brandEntityList);
 }

+ 61 - 6
kmall-admin/src/main/java/com/kmall/admin/service/impl/BrandServiceImpl.java

@@ -10,13 +10,13 @@ import com.kmall.common.utils.MapBeanUtil;
 import com.kmall.common.utils.R;
 import com.kmall.common.utils.RRException;
 import com.kmall.common.utils.ValidatorUtil;
+import com.kmall.manager.manager.express.sf.ServiceException;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Service实现类
@@ -35,6 +35,8 @@ public class BrandServiceImpl implements BrandService {
     private StoreDao storeDao;
     @Autowired
     private CategoryDao categoryDao;
+    @Autowired
+    private MerchDao merchDao;
 
     @Override
     public BrandEntity queryObject(Integer id) {
@@ -187,11 +189,64 @@ public class BrandServiceImpl implements BrandService {
      */
     @Override
     public String queryBrandName(String prodBarcode, String storeId) {
-        return brandDao.queryBrandName(prodBarcode,storeId);
+        return brandDao.queryBrandName(prodBarcode, storeId);
     }
 
     @Override
     public BrandEntity queryByCategoryIdAndBrandNameAndMerchSn(Integer categoryId, String name, String merchSn) {
-        return brandDao.queryByCategoryIdAndBrandNameAndMerchSn(categoryId,name,merchSn);
+        return brandDao.queryByCategoryIdAndBrandNameAndMerchSn(categoryId, name, merchSn);
+    }
+
+    @Override
+    public List<BrandEntity> queryExportList(Map<String, Object> params) {
+        return brandDao.queryExportList(params);
+    }
+
+    @Override
+    @Transactional
+    public void uploadExcel(List<BrandEntity> brandEntityList) {
+        if (brandEntityList != null && brandEntityList.size() > 0) {
+            for (int i = 0; i < brandEntityList.size(); i++) {
+                BrandEntity brandEntity = brandEntityList.get(i);
+                Integer brandId = brandEntity.getId();
+                String merchSn = brandEntity.getMerchSn();
+                Integer categoryId = brandEntity.getCategoryId();
+                Integer isShow = brandEntity.getIsShow();
+                Integer isNew = brandEntity.getIsNew();
+                MerchEntity merchEntity = merchDao.findByMerchSn(merchSn);
+
+                if (isShow.intValue() != 0 && isShow.intValue() != 1 && isNew.intValue() != 0 && isNew != 1) {
+                    throw new ServiceException("第" + (i + 1) + "行的是否显示或者是否新品牌只可填(0:否 1:是)");
+                }
+
+                if (Objects.isNull(merchEntity)) {
+                    throw new ServiceException("第" + (i + 1) + "行的该商户编号:【" + merchSn + "】不存在!");
+                }
+                CategoryEntity categoryEntity = categoryDao.queryObject(categoryId);
+                if (Objects.isNull(categoryEntity)) {
+                    throw new ServiceException("第" + (i + 1) + "行的该分类编号:【" + categoryEntity + "】不存在!");
+                }
+
+
+                // 如果是0就添加数据
+                if (brandId.intValue() == 0) {
+                    BrandEntity insertBrandEntity = new BrandEntity();
+                    insertBrandEntity.setName(brandEntity.getName());
+                    insertBrandEntity.setSimpleDesc(brandEntity.getSimpleDesc());
+                    insertBrandEntity.setIsShow(isShow);
+                    insertBrandEntity.setIsNew(isNew);
+                    insertBrandEntity.setMerchSn(merchSn);
+                    insertBrandEntity.setCategoryId(categoryId);
+                    brandDao.save(insertBrandEntity);
+                } else {
+                    BrandEntity updateBrandEntity = brandDao.queryObject(brandId);
+                    if (Objects.isNull(updateBrandEntity)) {
+                        throw new ServiceException("第" + (i + 1) + "行的该品牌编号:【" + updateBrandEntity + "】不存在!");
+                    }
+                    BeanUtils.copyProperties(brandEntity,updateBrandEntity);
+                    brandDao.update(updateBrandEntity);
+                }
+            }
+        }
     }
 }

+ 23 - 0
kmall-admin/src/main/resources/XmlTemplate/BrandDtoList.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workbook>
+    <worksheet name="Sheet1">
+        <section startRow="0" endRow="1"/>
+        <loop startRow="1" endRow="1" items="BrandEntityList" var="BrandEntity"
+              varType="com.kmall.admin.entity.BrandEntity">
+            <section startRow="1" endRow="1">
+                <mapping row="1" col="0">BrandEntity.id</mapping>
+                <mapping row="1" col="1">BrandEntity.merchSn</mapping>
+                <mapping row="1" col="2">BrandEntity.categoryId</mapping>
+                <mapping row="1" col="3">BrandEntity.name</mapping>
+                <mapping row="1" col="4">BrandEntity.simpleDesc</mapping>
+                <mapping row="1" col="5">BrandEntity.isShow</mapping>
+                <mapping row="1" col="6">BrandEntity.isNew</mapping>
+            </section>
+            <loopbreakcondition>
+                <rowcheck offset="0">
+                    <cellcheck offset="0"></cellcheck>
+                </rowcheck>
+            </loopbreakcondition>
+        </loop>
+    </worksheet>
+</workbook>

+ 29 - 0
kmall-admin/src/main/resources/mybatis/mapper/BrandDao.xml

@@ -267,5 +267,34 @@
             AND `name` = #{name}
         </if>
     </select>
+    <select id="queryExportList" resultType="com.kmall.admin.entity.BrandEntity">
+        select
+        b.id,
+        b.name,
+        b.store_id,
+        b.merch_sn,
+        `list_pic_url`,
+        `simple_desc`,
+        `pic_url`,
+        b.sort_order,
+        b.is_show,
+        `floor_price`,
+        `app_list_pic_url`,
+        b.is_new,
+        `new_pic_url`,
+        b.new_sort_order,
+        m.merch_name merchName,
+        cg.name categoryName,
+        b.category_id
+        from mall_brand b
+        left join mall_merch m on b.merch_sn = m.merch_sn
+        LEFT JOIN mall_category cg ON b.category_id = cg.id
+        WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND b.name LIKE concat('%',#{name},'%')
+        </if>
+
+
+    </select>
 
 </mapper>

+ 11 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/brand.html

@@ -22,6 +22,17 @@
                 <i-button @click="query">查询</i-button>
             </div>
             <div class="buttons-group">
+
+                &nbsp;&nbsp;&nbsp;<a href="../statics/file/brand_export_yyyy_mm_dd_v1.0.0.xls">品牌导入模板下载</a>&nbsp;&nbsp;&nbsp;&nbsp;
+                <i-col style="display: inline-grid;">
+                    <Upload :show-upload-list="false" :on-success="uploadExcelSuccess" :on-format-error="uploadExcelFormatError"
+                            :format="['xls','xlsx']"
+                            :on-progress="uploadExcelProgress"
+                            action="../brand/upload">
+                        <i-button type="ghost" icon="ios-cloud-upload-outline">品牌导入</i-button>
+                    </Upload>
+                </i-col>
+                <i-button type="primary" @click="exportBrand"><i class="fa fa-cloud-download"></i>&nbsp;导出</i-button>
                 #if($shiro.hasPermission("brand:save"))
                 <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
                 #end

+ 45 - 0
kmall-admin/src/main/webapp/js/shop/brand.js

@@ -84,6 +84,7 @@ $(function () {
 
 
 var category_ztree;
+var exportMsg;
 var category_setting = {
     data: {
         simpleData: {
@@ -398,6 +399,50 @@ var vm = new Vue({
         },
         handleReset: function (name) {
             handleResetForm(this, name);
+        },
+        exportBrand :function () {
+            const msg = this.$Message.loading({
+                content: 'Loading...',
+                duration: 0
+            });
+            var params = {};
+            params.name = vm.q.name;
+            exportFile('#rrapp', '../brand/export', params);
+            setTimeout(msg, 1000);
+        },
+        uploadExcelSuccess: function (data) {
+            // console.log(data);
+            if(data.code==0){
+                alert('导入成功', function (index) {
+                    $("#jqGrid").trigger("reloadGrid");
+                });
+            }else{
+                alert(data.msg);
+            }
+            setTimeout(exportMsg, 100);
+        },
+        uploadExcelError: function () {
+            alert('上传出现异常,请重试!');
+            setTimeout(exportMsg, 100);
+        },
+        uploadExcelProgress:function(event, file, fileList){
+            console.log("上传中")
+            console.log(event)
+            console.log(file)
+            console.log(fileList)
+            console.log("上传中")
+            exportMsg = this.$Message.loading({
+                content: 'Loading...',
+                duration: 0
+            });
+            // setTimeout(msg, 3000);
+        },
+        uploadExcelFormatError: function (file) {
+            this.$Notice.warning({
+                title: '文件格式不正确',
+                desc: '文件 ' + file.name + ' 格式不正确,请上传 xls 或 xlsx 格式的文件。'
+            });
+            setTimeout(exportMsg, 100);
         }
     },
     mounted() {

BIN
kmall-admin/src/main/webapp/statics/file/brand_export_yyyy_mm_dd_v1.0.0.xls


+ 2 - 2
kmall-common/src/main/java/com/kmall/common/constant/JxlsXmlTemplateName.java

@@ -52,6 +52,6 @@ public class JxlsXmlTemplateName {
     public static final String WX_PAY_ORDER_DTO_LIST = "/XmlTemplate/WXPayOrderDtoList.xml";
     // 税单导入
     public static final String TAX_ORDER_DTO_LIST = "/XmlTemplate/TaxOrderDtoList.xml";
-
-
+    // 品牌导入
+    public static final String BRAND_DTO_LIST = "/XmlTemplate/BrandDtoList.xml";
 }