js实现Excle批量导入

该文章展示了一个使用JavaSpringMVC框架和MyBatis持久层实现的数据核验前端页面和后台处理逻辑。前端使用jQueryvalidate插件进行表单验证,后台接收上传的MultipartFile文件并调用服务层进行数据导入。
摘要由CSDN通过智能技术生成

前台:

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head>
	<title>数据核验</title>
	<meta name="decorator" content="default"/>
	<script type="text/javascript">
		$(document).ready(function() {
			//$("#name").focus();
			$("#inputForm").validate({
				submitHandler: function(form){
					loading('正在提交,请稍等...');
					form.submit();
				},
				errorContainer: "#messageBox",
				errorPlacement: function(error, element) {
					$("#messageBox").text("输入有误,请先更正。");
					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
						error.appendTo(element.parent().parent());
					} else {
						error.insertAfter(element);
					}
				}
			});
		});
	</script>
</head>
<body>
	<ul class="nav nav-tabs">
		<li><a href="">数据核验</a></li>
	</ul>
	<br/>
	<form:form id="inputForm" modelAttribute="ActionRecord" action="${ctx}/silence/dataVerification/dataVerificationImport" method="post" class="form-horizontal" enctype="multipart/form-data">
		<sys:message content="${message}"/>

		<div class="control-group">
			<label class="control-label">数据文件:</label>
			<div class="controls">
				<input id="uploadFile" name="file" type="file" style="width:330px" class="required"/> 
				<span class="help-inline"><font color="red">*</font> </span>
			</div>
		</div>
		<div class="form-actions">
			<input id="btnImportSubmit" class="btn btn-primary" type="submit" value="  导    入   "/>
		</div>

	</form:form>
</body>
</html>

后台:

controller层:

package com.thinkgem.jeesite.modules.silence.web;

import com.thinkgem.jeesite.common.web.BaseController;
import com.thinkgem.jeesite.modules.silence.service.DataAVerificationService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import javax.annotation.Resource;


@Controller
@RequestMapping(value = "${adminPath}/silence/dataVerification")
public class DataAVerificationController extends BaseController {

     @Resource
     private DataAVerificationService dataAVerificationService;

     /**
     *  数据核验导入主页
     * @return
     */
    @RequestMapping(value = "ImportIndex")
    public String ImportIndex(){
        return "modules/silence/impDataForm";
    }


    /**
     *  数据核验导入
     * @return
     */
    @RequestMapping(value = "dataVerificationImport" ,method= RequestMethod.POST)
    public String actionRecordImport(MultipartFile file, RedirectAttributes redirectAttributes) {
        try {
            dataAVerificationService.actionRecordImport(file);
        } catch (Exception e) {
            addMessage(redirectAttributes, "导入数据失败!失败信息:" + e.getMessage());
        }
        return "redirect:" + adminPath + "/silence/dataVerification/ImportIndex?repage";
    }
}

service层:

package com.thinkgem.jeesite.modules.silence.service;

import com.thinkgem.jeesite.common.utils.excel.ImportExcel;
import com.thinkgem.jeesite.modules.silence.dao.*;
import com.thinkgem.jeesite.modules.silence.model.ImpDataAVerification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;

@Service
public class DataAVerificationService {

    public static final String Treatment_Status = "暂停发放";
    // public static final String Treatment_Status ="正常发放";
    //public static final String Treatment_Status ="年检停发";

    public static final String Treatment_cause = "超期未参加资格认证";
    public static final String Treatment_cause2 = "超期未参加资格认证的人员";
    public static final String Treatment_cause3 = "年检停发";
    // public static final String Treatment_cause="年检停发";

    /**
     * 日志对象
     */
    protected Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    private AuWaitRecoverDao auWaitRecoverDao;
    @Autowired
    private AuHistorySuspendDao auHistorySuspendDao;
    @Autowired
    private PersonnelWarnDao personnelWarnDao;
    @Autowired
    private PersonnelLoseDao personnelLoseDao;
    @Autowired
    private ModifyRecordDao modifyRecordDao;
    @Autowired
    DataAVerificationDao dataAVerificationDao;
    
    public void actionRecordImport(MultipartFile file) throws Exception {

        //转换数据对象
        ImportExcel ei = new ImportExcel(file, 1, 0);
        List<ImpDataAVerification> impDataAVerifications = ei.getDataList(ImpDataAVerification.class);

        /*保持最新数据,批量删除已有身份证号的数据*/
        int delete = dataAVerificationDao.delete(impDataAVerifications);
        if (delete > 0) {
            System.out.println("成功删除" + delete + "条重复数据");
        }

        /*excle导入添加数据库*/
        int i = dataAVerificationDao.actionRecordImport(impDataAVerifications);
        if (i > 0) {
            System.out.println("成功新增" + i + "条数据");
        }
    }
}

Dao层:

package com.thinkgem.jeesite.modules.silence.dao;

import com.thinkgem.jeesite.common.persistence.CrudDao;
import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
import com.thinkgem.jeesite.modules.silence.model.ImpDataAVerification;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@MyBatisDao
public interface DataAVerificationDao extends CrudDao<ImpDataAVerification> {
    int actionRecordImport(@Param("list") List<ImpDataAVerification> list);
}

 xml文件:数据库为oracles

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.thinkgem.jeesite.modules.silence.dao.DataAVerificationDao">

    <insert id="actionRecordImport" parameterType="java.util.List">
        INSERT INTO test_data(idname,idcard,dyzt,dyztyy)
        <foreach collection="list" item="item" separator="UNION ALL">
            select
            #{item.idname},#{item.idcard},#{item.dyzt},#{item.dyztyy}
            from dual
        </foreach>
    </insert>
</mapper>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值