15143018065 2 years ago
parent
commit
2a2e17fb3e

+ 4 - 0
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java

@@ -22,6 +22,7 @@ import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
 import org.apache.poi.xssf.usermodel.XSSFDataValidation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.util.ObjectUtils;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -280,6 +281,9 @@ public class ExcelUtil<T>
             Map<String, Integer> cellMap = new HashMap<String, Integer>();
             // 获取表头
             Row heard = sheet.getRow(titleNum);
+            if (ObjectUtils.isEmpty(heard)) {
+                throw new IOException("文件表头不存在");
+            }
             for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++)
             {
                 Cell cell = heard.getCell(i);

+ 49 - 0
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/ImportUtils.java

@@ -0,0 +1,49 @@
+package com.ruoyi.common.security.utils;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.util.ObjectUtils;
+
+import javax.validation.constraints.NotBlank;
+import java.lang.reflect.Field;
+
+public class ImportUtils {
+    /**
+     * 根据实体类注解进行检测,且将数据导入前将字典翻译过来
+     */
+    public static <T> String checkAndTrans(T t) {
+        StringBuilder res = new StringBuilder();
+        try {
+            Class<?> bean = t.getClass();
+            Field[] fields = bean.getDeclaredFields();
+            for (Field field : fields) {
+                field.setAccessible(true);
+                Object attObj = field.get(t);
+                if (field.isAnnotationPresent(NotBlank.class)) {
+                    if (ObjectUtils.isEmpty(attObj)) {
+                        res.append(field.getAnnotation(ApiModelProperty.class).value()).append("不能为空<br />");
+                        return res.toString();
+                    }
+                }
+//                if (field.isAnnotationPresent(DictV.class)) {
+//                    if (!ObjectUtils.isEmpty(attObj)) {
+//                        String key = field.getAnnotation(DictV.class).type();
+//                        List<SysDictData> dictDataList = DictUtils.getDictCache(key);
+//                        if (!CollectionUtils.isEmpty(dictDataList)) {
+//                            Optional<SysDictData> dictData = dictDataList.stream().filter(d ->
+//                                    StringUtils.equals(d.getDictLabel(), attObj.toString())).findFirst();
+//                            if (dictData.isPresent()) {
+//                                field.set(t, dictData.get().getDictValue());
+//                            } else {
+//                                res.append(field.getAnnotation(ApiModelProperty.class).value()).append("参数不符合规范<br />");
+//                                return res.toString();
+//                            }
+//                        }
+//                    }
+//                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return res.toString();
+    }
+}

+ 0 - 3
ruoyi-modules/mz-business-btgl/src/main/java/com/ruoyi/business/mapper/ZwywBtglLrbtglMapper.java

@@ -1,6 +1,5 @@
 package com.ruoyi.business.mapper;
 
-import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.ruoyi.business.domain.ZwywBtglLrbtgl;
 import com.ruoyi.common.datascope.handler.DataColumn;
 import com.ruoyi.common.datascope.handler.DataPermission;
@@ -8,7 +7,6 @@ import com.ruoyi.common.datascope.utils.BaseMapperPlus;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * 老人补贴资金受理Mapper接口
@@ -34,6 +32,5 @@ public interface ZwywBtglLrbtglMapper extends BaseMapperPlus<ZwywBtglLrbtgl> {
 
    void saveBaths(List<ZwywBtglLrbtgl> zwywBtglLrbtglList);
 
-   @InterceptorIgnore(tenantLine = "true")
    ZwywBtglLrbtgl getZwywBtglLrbtgl( @Param("type")String type,@Param("number") String number, @Param("status") String status);
 }

+ 29 - 93
ruoyi-modules/mz-business-btgl/src/main/java/com/ruoyi/business/service/impl/ZwywBtglLrbtglServiceImpl.java

@@ -1,9 +1,6 @@
 package com.ruoyi.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.business.domain.ZwywBtglLrbtgl;
 import com.ruoyi.business.domain.ZwywBtglXmgl;
 import com.ruoyi.business.mapper.ZwywBtglLrbtglMapper;
@@ -11,18 +8,22 @@ import com.ruoyi.business.mapper.ZwywBtglXmglMapper;
 import com.ruoyi.business.service.IZwywBtglLrbtglService;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
-import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.security.utils.AmountUtils;
+import com.ruoyi.common.security.utils.ImportUtils;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.enums.DataStatus;
+import com.ruoyi.system.api.enums.ExamineStatus;
 import com.ruoyi.system.utils.SubCodeUtil;
+import io.seata.common.util.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import sun.nio.cs.ext.MacArabic;
 
-import java.util.*;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * 老人补贴资金受理Service业务层处理
@@ -182,100 +183,35 @@ public class ZwywBtglLrbtglServiceImpl  implements IZwywBtglLrbtglService
 
     @Override
     public String importZwywBtglLrbtgl(List<ZwywBtglLrbtgl> zwywBtglLrbtglList) {
-
-        if (com.ruoyi.common.core.utils.StringUtils.isNull(zwywBtglLrbtglList) || zwywBtglLrbtglList.size() == 0) {
+        StringBuilder msg = new StringBuilder();
+        if (CollectionUtils.isEmpty(zwywBtglLrbtglList)) {
             throw new ServiceException("导入数据不能为空!");
         }
-        for (ZwywBtglLrbtgl n:zwywBtglLrbtglList){
-            if (StringUtils.isEmpty(n.getZjhm())) {
-                throw new ServiceException("证件号码不能为空");
-            }
-        }
-        //list数据去重
-        Long count = zwywBtglLrbtglList.stream().distinct().count();
-        boolean isRepeat = count < zwywBtglLrbtglList.size();
-        if (isRepeat) {
+        long count = zwywBtglLrbtglList.stream().distinct().count();
+        if (count < zwywBtglLrbtglList.size()) {
             throw new ServiceException("导入的Excel有重复信息,请检查。");
         }
-        int successNum = 0;
-        int failureNum= 0;
-        StringBuilder successMsg = new StringBuilder();
-        StringBuilder failureMsg = new StringBuilder();
-        for (ZwywBtglLrbtgl z:zwywBtglLrbtglList){
-           //证件号码 证件类型 数据状态 status  DataStatus.NORMAL.getCode
-            ZwywBtglLrbtgl one = zwywBtglLrbtglMapper.getZwywBtglLrbtgl(z.getZjlx(),z.getZjhm(),DataStatus.NORMAL.getCode());
-            if (one != null){
-                failureNum++;
-                failureMsg.append("<br/>" + failureNum + "<" + "证件号码:" +z.getZjhm()+ " >已存在,请修改。");
+        for (ZwywBtglLrbtgl n: zwywBtglLrbtglList){
+            msg.append(ImportUtils.checkAndTrans(n));
+            n.setSljg(ExamineStatus.SNO.getCode());
+            if (ObjectUtils.isNotEmpty(zwywBtglLrbtglMapper.getZwywBtglLrbtgl(n.getZjlx(), n.getZjhm(),
+                    DataStatus.NORMAL.getCode()))){
+                msg.append("<").append("证件号码:").append(n.getZjhm()).append(" >已存在,请修改。");
+            }
+            if (StringUtils.isEmpty(n.getRjsr())) {
+                n.setRjsr(null);
             }
         }
-
-        List<ZwywBtglLrbtgl> insertList = new ArrayList<>();
-        for (int i=0;i<zwywBtglLrbtglList.size();i++){
-            //开始导入
-            ZwywBtglLrbtgl zwywBtglLrbtgl = new ZwywBtglLrbtgl();
-
-            zwywBtglLrbtgl.setId(IdUtils.simpleUUID());
-            zwywBtglLrbtgl.setXm(zwywBtglLrbtglList.get(i).getXm());
-            zwywBtglLrbtgl.setZjlx(zwywBtglLrbtglList.get(i).getZjlx());
-            zwywBtglLrbtgl.setZjhm(zwywBtglLrbtglList.get(i).getZjhm());
-            zwywBtglLrbtgl.setCsrq(zwywBtglLrbtglList.get(i).getCsrq());
-            zwywBtglLrbtgl.setXb(zwywBtglLrbtglList.get(i).getXb());
-            zwywBtglLrbtgl.setGj(zwywBtglLrbtglList.get(i).getGj());
-            zwywBtglLrbtgl.setMz(zwywBtglLrbtglList.get(i).getMz());
-            zwywBtglLrbtgl.setWhcd(zwywBtglLrbtglList.get(i).getWhcd());
-            zwywBtglLrbtgl.setHyzk(zwywBtglLrbtglList.get(i).getHyzk());
-            zwywBtglLrbtgl.setZzmm(zwywBtglLrbtglList.get(i).getZzmm());
-            zwywBtglLrbtgl.setRjsr(zwywBtglLrbtglList.get(i).getRjsr());
-            zwywBtglLrbtgl.setSjhm(zwywBtglLrbtglList.get(i).getSjhm());
-            zwywBtglLrbtgl.setGddh(zwywBtglLrbtglList.get(i).getGddh());
-            zwywBtglLrbtgl.setSxsfbq(zwywBtglLrbtglList.get(i).getSxsfbq());
-            zwywBtglLrbtgl.setBtlx(zwywBtglLrbtglList.get(i).getBtlx());
-            zwywBtglLrbtgl.setFfzq(zwywBtglLrbtglList.get(i).getFfzq());
-            zwywBtglLrbtgl.setXqpglx(zwywBtglLrbtglList.get(i).getXqpglx());
-            zwywBtglLrbtgl.setHjlb(zwywBtglLrbtglList.get(i).getHjlb());
-            zwywBtglLrbtgl.setHjszd(zwywBtglLrbtglList.get(i).getHjszd());
-            zwywBtglLrbtgl.setHjdzms(zwywBtglLrbtglList.get(i).getHjdzms());
-            zwywBtglLrbtgl.setJg(zwywBtglLrbtglList.get(i).getJg());
-            zwywBtglLrbtgl.setXjd(zwywBtglLrbtglList.get(i).getXjd());
-            zwywBtglLrbtgl.setJzdzms(zwywBtglLrbtglList.get(i).getJzdzms());
-            zwywBtglLrbtgl.setCjlb(zwywBtglLrbtglList.get(i).getCjlb());
-            zwywBtglLrbtgl.setCjdj(zwywBtglLrbtglList.get(i).getCjdj());
-            zwywBtglLrbtgl.setCjzh(zwywBtglLrbtglList.get(i).getCjzh());
-            zwywBtglLrbtgl.setSfxschx(zwywBtglLrbtglList.get(i).getSfxschx());
-            zwywBtglLrbtgl.setSfcjsb(zwywBtglLrbtglList.get(i).getSfcjsb());
-            zwywBtglLrbtgl.setSbkh(zwywBtglLrbtglList.get(i).getSbkh());
-            zwywBtglLrbtgl.setYblb(zwywBtglLrbtglList.get(i).getYblb());
-            zwywBtglLrbtgl.setPgdj(zwywBtglLrbtglList.get(i).getPgdj());
-            zwywBtglLrbtgl.setJhrxm(zwywBtglLrbtglList.get(i).getJhrxm());
-            zwywBtglLrbtgl.setJhrsjhm(zwywBtglLrbtglList.get(i).getJhrsjhm());
-            zwywBtglLrbtgl.setJhrgx(zwywBtglLrbtglList.get(i).getJhrgx());
-            zwywBtglLrbtgl.setKhyh(zwywBtglLrbtglList.get(i).getKhyh());
-            zwywBtglLrbtgl.setYhzh(zwywBtglLrbtglList.get(i).getYhzh());
-            zwywBtglLrbtgl.setKhmc(zwywBtglLrbtglList.get(i).getKhmc());
-            zwywBtglLrbtgl.setDbrxm(zwywBtglLrbtglList.get(i).getDbrxm());
-            zwywBtglLrbtgl.setDbrdh(zwywBtglLrbtglList.get(i).getDbrdh());
-            zwywBtglLrbtgl.setSljg(zwywBtglLrbtglList.get(i).getSljg());
-            zwywBtglLrbtgl.setSlyj(zwywBtglLrbtglList.get(i).getSlyj());
-            zwywBtglLrbtgl.setShjg(zwywBtglLrbtglList.get(i).getShjg());
-            zwywBtglLrbtgl.setShyj(zwywBtglLrbtglList.get(i).getShyj());
-            zwywBtglLrbtgl.setSpjg(zwywBtglLrbtglList.get(i).getSpjg());
-            zwywBtglLrbtgl.setShyj(zwywBtglLrbtglList.get(i).getShyj());
-            insertList.add(zwywBtglLrbtgl);
-            successNum++;
-            successMsg.append("<br/>"+ successNum + "、姓名: " + zwywBtglLrbtglList.get(i).getXm() + " 导入成功");
-        }
-        if (failureNum > 0) {
-            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
-            throw new ServiceException(failureMsg.toString());
-        }else
-        {
-            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+        if (StringUtils.isNotEmpty(msg)) {
+            msg.insert(0, "很抱歉,导入失败!错误如下:<br />");
+            throw new ServiceException(msg.toString());
         }
-        if (insertList.size()>0){
-            zwywBtglLrbtglMapper.saveBaths(insertList);
+        zwywBtglLrbtglMapper.saveBaths(zwywBtglLrbtglList);
+        msg.insert(0, "恭喜您,数据已全部导入成功!共 " + zwywBtglLrbtglList.size() + " 条,数据如下:<br />");
+        for (ZwywBtglLrbtgl n: zwywBtglLrbtglList){
+            msg.append("姓名: ").append(n.getXm()).append(" 导入成功 <br />");
         }
-        return successMsg.toString();
+        return msg.toString();
     }
 
 }

+ 1 - 0
ruoyi-modules/mz-business-btgl/src/main/resources/mapper/business/ZwywBtglLrbtgl.xml

@@ -473,5 +473,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where zjlx = #{type}
         and zjhm = #{number}
         and status = #{status}
+        limit 1
     </select>
 </mapper>