Browse Source

增加计量单位代码导入

zhh 3 years ago
parent
commit
56a333436a

+ 66 - 4
kmall-admin/src/main/java/com/kmall/admin/controller/SysCusUnitCodeController.java

@@ -1,20 +1,26 @@
 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.SysCusUnitCodeEntity;
 import com.kmall.admin.service.SysCusUnitCodeService;
 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
@@ -23,12 +29,17 @@ import org.springframework.web.bind.annotation.*;
  * @email admin@qhdswl.com
  * @date 2018-11-10 15:34:36
  */
-@Controller
+@RestController
 @RequestMapping("syscusunitcode")
 public class SysCusUnitCodeController {
+    private Log logger = LogFactory.getLog(SysCusUnitCodeController.class);
+
     @Autowired
     private SysCusUnitCodeService sysCusUnitCodeService;
 
+    @Autowired
+    private ExcelUtil excelUtil;
+
     /**
      * 查看列表
      */
@@ -118,4 +129,55 @@ public class SysCusUnitCodeController {
 
         return R.ok().put("list", list);
     }
+
+    /**
+     * 导入 excel 数据
+     * @author zhuhh
+     * @param file
+     * @return
+     */
+    @RequestMapping("/upload")
+    public R upload(@RequestParam("file") MultipartFile file) {
+        List<SysCusUnitCodeEntity> sysCusUnitCodeEntityList = new ArrayList<>();
+        // 读取 excel 数据
+        try {
+            SysCusUnitCodeEntity sysCusUnitCodeEntity = new SysCusUnitCodeEntity();
+            Map<String, Object> beans = new HashMap<>();
+            beans.put("sysCusUnitCodeEntity", sysCusUnitCodeEntity);
+            beans.put("sysCusUnitCodeEntityList", sysCusUnitCodeEntityList);
+            if (file.isEmpty()) {
+                return R.error("文件不能为空!");
+            }
+            excelUtil.readExcel(JxlsXmlTemplateName.SYS_CUS_UNIT_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 (sysCusUnitCodeEntityList == null || sysCusUnitCodeEntityList.size() == 0) {
+                return R.error("读取excel失败!单元格内容不能为空!");
+            }
+
+            sysCusUnitCodeService.uploadExcel(sysCusUnitCodeEntityList);
+        } 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/SysCusUnitCodeService.java

@@ -75,4 +75,11 @@ public interface SysCusUnitCodeService {
     SysCusUnitCodeEntity getUnitName(String name);
 
     List<SysCusUnitCodeEntity> getAll();
+
+    /**
+     * 导入excel
+     * @author zhuhh
+     * @param sysCusUnitCodeEntityList
+     */
+    void uploadExcel(List<SysCusUnitCodeEntity> sysCusUnitCodeEntityList);
 }

+ 54 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/SysCusUnitCodeServiceImpl.java

@@ -3,14 +3,20 @@ package com.kmall.admin.service.impl;
 import com.kmall.admin.dao.SysCusUnitCodeDao;
 import com.kmall.admin.entity.SysCusNationCodeEntity;
 import com.kmall.admin.entity.SysCusUnitCodeEntity;
+import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.service.SysCusUnitCodeService;
+import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.admin.utils.ValidateUtils;
 import com.kmall.common.constant.TablePrimaryKeyPrefix;
 import com.kmall.common.utils.RRException;
 import com.kmall.common.utils.RandomUtils;
+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;
 
@@ -107,4 +113,52 @@ public class SysCusUnitCodeServiceImpl
     public List<SysCusUnitCodeEntity> getAll() {
         return sysCusUnitCodeDao.queryAll();
     }
+
+    @Override
+    @Transactional
+    public void uploadExcel(List<SysCusUnitCodeEntity> sysCusUnitCodeEntityList) {
+        for (SysCusUnitCodeEntity sysCusUnitCodeEntity : sysCusUnitCodeEntityList) {
+            String code = sysCusUnitCodeEntity.getCode();
+            String name = sysCusUnitCodeEntity.getName();
+            String isValid = sysCusUnitCodeEntity.getIsValid();
+            String remark = sysCusUnitCodeEntity.getRemark();
+
+            if (!ValidateUtils.validateStrIsInteger(code)) {
+                throw new ServiceException("请输入正确的代码,有问题的代码:" + code);
+            }
+            if (!ValidateUtils.validateChinese(name)) {
+                throw new ServiceException("请输入正确的名称,有问题的名称:" + name);
+            }
+            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();
+            // 查询代码是否存在
+            SysCusUnitCodeEntity temp = this.getUnitCode(code);
+            if (temp == null) {
+                // 不存在则新增
+                sysCusUnitCodeEntity.setCreaterSn(user.getUserId() + "");
+                sysCusUnitCodeEntity.setCreateTime(new Date());
+
+                this.save(sysCusUnitCodeEntity);
+            } else {
+                // 存在则修改
+                SysCusUnitCodeEntity SysCusUnitCodeTemp = sysCusUnitCodeDao.queryObjectByName(temp.getName());
+                if (SysCusUnitCodeTemp != null && !SysCusUnitCodeTemp.getSn().equals(temp.getSn())) {
+                    throw new RRException("名称已经存在");
+                }
+
+                sysCusUnitCodeEntity.setSn(temp.getSn());
+                sysCusUnitCodeEntity.setModerSn(user.getUserId() + "");
+                sysCusUnitCodeEntity.setModTime(new Date());
+
+                sysCusUnitCodeDao.update(sysCusUnitCodeEntity);
+            }
+
+        }
+    }
 }

+ 20 - 0
kmall-admin/src/main/resources/XmlTemplate/SysCusUnitCodeDtoList.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workbook>
+    <worksheet name="Sheet1">
+        <section startRow="0" endRow="1"/>
+        <loop startRow="1" endRow="1" items="sysCusUnitCodeEntityList" var="sysCusUnitCodeEntity"
+              varType="com.kmall.admin.entity.SysCusUnitCodeEntity">
+            <section startRow="1" endRow="1">
+                <mapping row="1" col="0">sysCusUnitCodeEntity.code</mapping>
+                <mapping row="1" col="1">sysCusUnitCodeEntity.name</mapping>
+                <mapping row="1" col="2">sysCusUnitCodeEntity.isValid</mapping>
+                <mapping row="1" col="3">sysCusUnitCodeEntity.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/syscusunitcode.html

@@ -16,6 +16,15 @@
                 <i-button @click="reloadSearch">重置</i-button>
             </div>
             <div class="buttons-group">
+                <a @click="importTemplateSysCusUnitCode">计量单位代码导入模板下载</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="../syscusunitcode/upload">
+                        <i-button type="ghost" icon="ios-cloud-upload-outline">计量单位代码导入</i-button>
+                    </Upload>
+                </i-col>
                 #if($shiro.hasPermission("syscusunitcode: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/syscusunitcode.js

@@ -23,7 +23,7 @@ $(function () {
             },
             {label: '备注', name: 'remark', index: 'remark', width: 280}],
 		viewrecords: true,
-        height: 550,
+        height: '100%',
         rowNum: 10,
         rowList: [10, 30, 50],
         rownumbers: true,
@@ -157,6 +157,49 @@ let vm = new Vue({
         },
         handleReset: function (name) {
             handleResetForm(this, name);
+        },
+        // 下载导入的模板方法
+        importTemplateSysCusUnitCode: function (){
+            const msg = this.$Message.loading({
+                content: 'Loading...',
+                duration: 0
+            });
+            window.location.href='../statics/file/sys_cus_unit_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_unit_code_export_yyyy_mm_dd_v1.0.0.xls


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

@@ -74,5 +74,7 @@ public class JxlsXmlTemplateName {
     // 国别代码导入
     public static final String SYS_CUS_NATION_CODE_DTO_List = "/XmlTemplate/SysCusNationCodeDtoList.xml";
 
+    // 计量单位代码导入
+    public static final String SYS_CUS_UNIT_CODE_DTO_List = "/XmlTemplate/SysCusUnitCodeDtoList.xml";
 
 }