1
0
Prechádzať zdrojové kódy

增加国别代码导入模块

zhh 3 rokov pred
rodič
commit
ffc0262fcb

+ 69 - 5
kmall-admin/src/main/java/com/kmall/admin/controller/SysCusNationCodeController.java

@@ -1,34 +1,46 @@
 package com.kmall.admin.controller;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import com.kmall.admin.entity.SysCusNationCodeEntity;
 import com.kmall.admin.service.SysCusNationCodeService;
 import com.kmall.admin.fromcomm.entity.SysUserEntity;
+import com.kmall.common.constant.JxlsXmlTemplateName;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
 import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.common.utils.RRException;
+import com.kmall.common.utils.excel.ExcelUtil;
+import com.kmall.manager.manager.express.sf.ServiceException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jxls.reader.XLSDataReadException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 国别地区代码Controller
  *
- * @author huangyq
+ * @author huangyq,zhuhh
  * @email admin@qhdswl.com
  * @date 2018-11-10 15:26:44
  */
-@Controller
+@RestController
 @RequestMapping("syscusnationcode")
 public class SysCusNationCodeController {
+    private Log logger = LogFactory.getLog(SysCusNationCodeController.class);
+
     @Autowired
     private SysCusNationCodeService sysCusNationCodeService;
 
+    @Autowired
+    private ExcelUtil excelUtil;
+
     /**
      * 查看列表
      */
@@ -115,4 +127,56 @@ public class SysCusNationCodeController {
 
         return R.ok().put("list", list);
     }
+
+    /**
+     * 导入 excel 数据
+     * @author zhuhh
+     * @param file
+     * @return
+     */
+    @RequestMapping("/upload")
+    public R upload(@RequestParam("file") MultipartFile file) {
+        List<SysCusNationCodeEntity> sysCusNationCodeEntityList = new ArrayList<>();
+        // 读取 excel 数据
+        try {
+            SysCusNationCodeEntity sysCusNationCodeEntity = new SysCusNationCodeEntity();
+            Map<String, Object> beans = new HashMap<>();
+            beans.put("sysCusNationCodeEntity", sysCusNationCodeEntity);
+            beans.put("sysCusNationCodeEntityList", sysCusNationCodeEntityList);
+            if (file.isEmpty()) {
+                return R.error("文件不能为空!");
+            }
+            excelUtil.readExcel(JxlsXmlTemplateName.SYS_CUS_NATION_CODE_DTO_List, beans, file.getInputStream());
+        } catch (XLSDataReadException e) {
+            e.printStackTrace();
+            logger.error("商品供货商读取excel失败:" + e.getMessage());
+            return R.error("导入失败!请在单元格输入正确的数据格式");
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("商品供货商读取excel失败:" + e.getMessage());
+            return R.error("读取excel数据失败!");
+        }
+        // 新增数据
+        try {
+            if (sysCusNationCodeEntityList == null || sysCusNationCodeEntityList.size() == 0) {
+                return R.error("读取excel失败!单元格内容不能为空!");
+            }
+
+            sysCusNationCodeService.uploadExcel(sysCusNationCodeEntityList);
+        } catch (ServiceException e) {
+            e.printStackTrace();
+            logger.error("商品供货商数据格式校验失败:" + e.getMessage());
+            return R.error(e.getMessage());
+        } catch (RRException e) {
+            e.printStackTrace();
+            logger.error("商品供货商添加数据失败:" + e.getMsg());
+            return R.error(e.getMsg());
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("商品供货商添加数据失败:" + e.getMessage());
+            return R.error("数据保存数据库失败!");
+        }
+        return R.ok("导入成功!");
+    }
+
 }

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/service/SysCusNationCodeService.java

@@ -75,4 +75,11 @@ public interface SysCusNationCodeService {
     SysCusNationCodeEntity getCusNationByCode(String code);
 
     List<SysCusNationCodeEntity> findCusNationByAll();
+
+    /**
+     * 导入excel
+     * @author zhuhh
+     * @param sysCusNationCodeEntityList
+     */
+    void uploadExcel(List<SysCusNationCodeEntity> sysCusNationCodeEntityList);
 }

+ 67 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/SysCusNationCodeServiceImpl.java

@@ -3,13 +3,19 @@ package com.kmall.admin.service.impl;
 import com.google.common.collect.ImmutableBiMap;
 import com.kmall.admin.dao.SysCusNationCodeDao;
 import com.kmall.admin.entity.SysCusNationCodeEntity;
+import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.service.SysCusNationCodeService;
+import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.admin.utils.ValidateUtils;
 import com.kmall.common.constant.TablePrimaryKeyPrefix;
 import com.kmall.common.utils.*;
+import com.kmall.manager.manager.express.sf.ServiceException;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
@@ -115,4 +121,65 @@ public class SysCusNationCodeServiceImpl
     public List<SysCusNationCodeEntity> findCusNationByAll() {
         return sysCusNationCodeDao.queryAll();
     }
+
+    @Override
+    @Transactional
+    public void uploadExcel(List<SysCusNationCodeEntity> sysCusNationCodeEntityList) {
+        for (SysCusNationCodeEntity sysCusNationCodeEntity : sysCusNationCodeEntityList) {
+            String code = sysCusNationCodeEntity.getCode();
+            String name = sysCusNationCodeEntity.getName();
+            String ename = sysCusNationCodeEntity.getEname();
+            String discountsTaxType = sysCusNationCodeEntity.getDiscountsTaxType();
+            String isValid = sysCusNationCodeEntity.getIsValid();
+            String remark = sysCusNationCodeEntity.getRemark();
+
+            if (!ValidateUtils.validateStrIsInteger(code)) {
+                throw new ServiceException("请输入正确的代码,有问题的代码:" + code);
+            }
+            if (!ValidateUtils.validateChinese(name)) {
+                throw new ServiceException("请输入正确的名称,有问题的名称:" + name);
+            }
+            if (!ValidateUtils.validateEName(ename)) {
+                throw new ServiceException("请输入正确的英文名,有问题的英文名:" + ename);
+            }
+            if (!ValidateUtils.validateEnglishChar(discountsTaxType)) {
+                throw new ServiceException("请输入正确的优普税率类型,有问题的优普税率类型:" + discountsTaxType);
+            }
+            if (!"0".equals(isValid) && !"1".equals(isValid)) {
+                throw new ServiceException("请输入正确的是否有效,有问题的是否有效:" + isValid);
+            }
+            if (remark != null && !ValidateUtils.validateSpecialAllowChinese(remark)) {
+                throw new ServiceException("请输入正确的备注,有问题的备注:" + remark);
+            }
+
+            SysUserEntity user = ShiroUtils.getUserEntity();
+            // 查询代码是否存在
+            SysCusNationCodeEntity temp = this.getCusNationByCode(code);
+            if (temp == null) {
+                // 不存在则新增
+                sysCusNationCodeEntity.setCreaterSn(user.getUserId() + "");
+                sysCusNationCodeEntity.setCreateTime(new Date());
+
+                this.save(sysCusNationCodeEntity);
+            } else {
+                // 存在修改对应代码的数据
+                SysCusNationCodeEntity SysCusNationCodeTemp = sysCusNationCodeDao.queryObjectByName(sysCusNationCodeEntity.getName());
+                if (SysCusNationCodeTemp != null && !SysCusNationCodeTemp.getSn().equals(sysCusNationCodeEntity.getSn())) {
+                    throw new RRException("名称已经存在");
+                }
+
+                if (StringUtils.isNotEmpty(sysCusNationCodeEntity.getDiscountsTaxType()) &&
+                        sysCusNationCodeEntity.getDiscountsTaxType().length() > 1) {
+                    throw new RRException("优普税率类型有误");
+                }
+
+                sysCusNationCodeEntity.setSn(temp.getSn());
+                sysCusNationCodeEntity.setModerSn(user.getUserId() + "");
+                sysCusNationCodeEntity.setModTime(new Date());
+
+                sysCusNationCodeDao.update(sysCusNationCodeEntity);
+            }
+
+        }
+    }
 }

+ 22 - 0
kmall-admin/src/main/resources/XmlTemplate/SysCusNationCodeDtoList.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workbook>
+    <worksheet name="Sheet1">
+        <section startRow="0" endRow="1"/>
+        <loop startRow="1" endRow="1" items="sysCusNationCodeEntityList" var="sysCusNationCodeEntity"
+              varType="com.kmall.admin.entity.SysCusNationCodeEntity">
+            <section startRow="1" endRow="1">
+                <mapping row="1" col="0">sysCusNationCodeEntity.code</mapping>
+                <mapping row="1" col="1">sysCusNationCodeEntity.name</mapping>
+                <mapping row="1" col="2">sysCusNationCodeEntity.ename</mapping>
+                <mapping row="1" col="3">sysCusNationCodeEntity.discountsTaxType</mapping>
+                <mapping row="1" col="4">sysCusNationCodeEntity.isValid</mapping>
+                <mapping row="1" col="5">sysCusNationCodeEntity.remark</mapping>
+            </section>
+            <loopbreakcondition>
+                <rowcheck offset="0">
+                    <cellcheck offset="0"></cellcheck>
+                </rowcheck>
+            </loopbreakcondition>
+        </loop>
+    </worksheet>
+</workbook>

+ 9 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/syscusnationcode.html

@@ -16,6 +16,15 @@
                 <i-button @click="reloadSearch">重置</i-button>
             </div>
             <div class="buttons-group">
+                <a @click="importTemplateSysCusNationCode">国别代码导入模板下载</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="../syscusnationcode/upload">
+                        <i-button type="ghost" icon="ios-cloud-upload-outline">国别代码导入</i-button>
+                    </Upload>
+                </i-col>
                 #if($shiro.hasPermission("syscusnationcode:save"))
                 <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
                 #end

+ 44 - 1
kmall-admin/src/main/webapp/js/shop/syscusnationcode.js

@@ -26,7 +26,7 @@ $(function () {
             },
             {label: '备注', name: 'remark', index: 'remark', width: 100}],
 		viewrecords: true,
-        height: 550,
+        height: '100%',
         rowNum: 10,
         rowList: [10, 30, 50],
         rownumbers: true,
@@ -163,6 +163,49 @@ let vm = new Vue({
         },
         handleReset: function (name) {
             handleResetForm(this, name);
+        },
+        // 下载导入的模板方法
+        importTemplateSysCusNationCode: function (){
+            const msg = this.$Message.loading({
+                content: 'Loading...',
+                duration: 0
+            });
+            window.location.href='../statics/file/sys_cus_nation_code_export_yyyy_mm_dd_v1.0.0.xls';
+            setTimeout(msg, 1000);
+        },
+        // 上传方法开始 ----
+        uploadExcelSuccess: function (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
+            });
+        },
+        uploadExcelFormatError: function (file) {
+            this.$Notice.warning({
+                title: '文件格式不正确',
+                desc: '文件 ' + file.name + ' 格式不正确,请上传 xls 或 xlsx 格式的文件。'
+            });
+            setTimeout(exportMsg, 100);
         }
+        // 上传方法结束----
 	}
 });

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