js
layui.use(['upload', 'table'], function () {
var $ = layui.jquery, upload = layui.upload, table = layui.table;
upload.render({
elem: '#selectCsvFile'
, url: zcm.ctxPath + '/t-acceptance-result/importCsv'
, auto: false
, accept: 'file'
, exts: 'csv'
, bindAction: '#startUpload'
, done: function (res) {
var list = new Array();
list = res.data;
if (list.existList.length != 0 || list.importList.length != 0) {
var str = $("#content").val();
$("#content").val(str + "成功件数:" + list.importList.length + "件。");
if (list.existList.length != 0) {
var str = $("#content").val();
$("#content").val(str + "\n" +
"失敗件数:" + list.existList.length + "件。");
for (var i = 0; i < list.existList.length; i++) {
var str = $("#content").val();
$("#content").val(str + "\n" +
"失敗" + (i + 1) + "件目:シリアルNO:" + list.existList[i].serialNo + "、既に取り込まれたシリアルNOです。");
}
}
}
if ($("#content").val() != "") {
document.getElementById("startUpload").setAttribute("disabled", true);
}
}
});
});
后台逻辑
@Transactional
@Override
public Object insertCsvInfo(MultipartFile file) throws Exception {
List<TAcceptanceResult> cvsList = new ArrayList<TAcceptanceResult>();
List<TAcceptanceResult> existList = new ArrayList<TAcceptanceResult>();
List<TAcceptanceResult> importList= new ArrayList<TAcceptanceResult>();
Map<String, Object> map = new HashMap<>();
if(file != null){
InputStream inputStream = file.getInputStream();
cvsList = readCSVFile(inputStream);
for(int i =0 ;i<cvsList.size();i++){
String epc = itAcceptanceResultService.selectEPCByEPC(cvsList.get(i).getEpc());
if(!(cvsList.get(i).getEpc().equals(epc))){//数据库不存在该epc
TAcceptanceResult tAcceptanceResult = new TAcceptanceResult();
tAcceptanceResult.setEpc(cvsList.get(i).getEpc());
tAcceptanceResult.setSerialNo(GetAfterUtil.getAfter8(cvsList.get(i).getEpc()));
tAcceptanceResult.setYardCd(cvsList.get(i).getYardCd());
tAcceptanceResult.setAllocationClass("0");
tAcceptanceResult.setImportDate(new Date());
tAcceptanceResult.setQuantity(new BigDecimal(1));
importList.add(tAcceptanceResult);
}else{
//存在该epc
String exist_epc = cvsList.get(i).getSerialNo();
TAcceptanceResult existAcceptanceResult = new TAcceptanceResult();
existAcceptanceResult.setSerialNo(GetAfterUtil.getAfter8(exist_epc));
existList.add(existAcceptanceResult);
}
}
map.put("importList", importList);
map.put("existList", existList);
if(importList.size() > 0){
itAcceptanceResultService.saveBatches(importList);
}
}
return new SuccessResponseData(200,"导入成功",map);
}
saveBatches方法入参为 List<TAcceptanceResult> list
<insert id="saveBatches" parameterType="java.util.List">
INSERT INTO t_acceptance_result
(
epc,
serial_no,
yard_cd,
allocation_class,
import_date,
quantity,
created_date,
update_date
)
values
<foreach collection="list" item="model" index="index" separator=",">
(
#{model.epc,jdbcType=VARCHAR},
#{model.serialNo,jdbcType=VARCHAR},
#{model.yardCd,jdbcType=VARCHAR},
#{model.allocationClass,jdbcType=VARCHAR},
#{model.importDate,jdbcType=DATE},
#{model.quantity,jdbcType=DECIMAL},
now()::timestamp(0)without time zone,
now()::timestamp(0)without time zone
)
</foreach>
</insert>
readCSVFile方法
public static List<TAcceptanceResult> readCSVFile(InputStream inputStream) {
List<TAcceptanceResult> csvList = new ArrayList<TAcceptanceResult>();
CsvReader reader = null;
TAcceptanceResult tAcceptanceResult = null;
Timestamp ts = null;
Date date = null;
try {
reader = new CsvReader(inputStream, ',', Charset.forName("UTF-8"));
reader.readHeaders(); // 跳过表头 如果需要表头的话,不要写这句。
while (reader.readRecord()) { // 逐行读入除表头的数据
tAcceptanceResult = new TAcceptanceResult();
tAcceptanceResult.setEpc(reader.get("EPC"));
tAcceptanceResult.setSerialNo(reader.get("EPC"));
tAcceptanceResult.setYardCd(reader.get("yard_cd").toString());
tAcceptanceResult.setAllocationClass("0");
tAcceptanceResult.setImportDate(new Date());
tAcceptanceResult.setQuantity(new BigDecimal(1));
csvList.add(tAcceptanceResult);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
reader.close();
}
}
return csvList;
}