Commit 3b67812e authored by shenxin's avatar shenxin

添加事项清单导入

parent ee0df0de
......@@ -12,4 +12,5 @@ public interface RybWorkDao extends ICRUDDao<ImplementlistEntity,Long> {
List<RybWorkEntry> find(String deptCode);
void inserts(List<RybWorkEntry> list);
}
......@@ -21,4 +21,9 @@ public class RybWorkDaoImpl extends BaseCRUDDaoMybatis<ImplementlistEntity,Long>
public List<RybWorkEntry> find(String deptCode) {
return getSqlSession().selectList(getSqlId("findRyb"),deptCode);
}
@Override
public void inserts(List<RybWorkEntry> rybWorkEntries) {
getSqlSession().insert(getSqlId("insertRyb"),rybWorkEntries);
}
}
package com.mortals.xhx.modules.implementlist.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.mortals.xhx.common.utils.SnowFlakeUtil;
import com.mortals.xhx.modules.implementlist.dao.ImplementlistDao;
import com.mortals.xhx.modules.implementlist.model.ImplementlistEntity;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
/**
* @author liaozimu
* @Date: 2021-11-2021/11/2-17:23
* @Description:
*/
@Slf4j
public class ImplementImportListener extends AnalysisEventListener<ImplementlistEntity> {
private ImplementlistDao implementlistDao;
/**
* 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
*/
private static final int BATCH_COUNT = 3000;
/**
* 这个集合用于接收 读取Excel文件得到的数据
*/
List<ImplementlistEntity> entityList = new ArrayList<ImplementlistEntity>();
public ImplementImportListener(ImplementlistDao implementlistDao) {
this.implementlistDao = implementlistDao;
}
@SneakyThrows
@Override
public void invoke(ImplementlistEntity implementlistEntity, AnalysisContext analysisContext) {
implementlistEntity.setId(SnowFlakeUtil.get().nextId());
entityList.add(implementlistEntity);
//达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
if (entityList.size() >= BATCH_COUNT) {
implementlistDao.insertBatch(entityList);
//存储完成清理list
entityList.clear();
}
log.info("=======Excel文件<<>>导入成功===========");
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 这里也要保存数据,确保最后遗留的数据也存储到数据库
implementlistDao.insertBatch(entityList);
log.info("=======Excel文件<<>>导入成功===========");
}
}
package com.mortals.xhx.modules.implementlist.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.mortals.xhx.modules.implementlist.dao.RybMatterDao;
import com.mortals.xhx.modules.implementlist.model.RybMatterListEntry;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
/**
* @author liaozimu
* @Date: 2021-11-2021/11/2-17:23
* @Description:
*/
@Slf4j
public class RybMatterImportListener extends AnalysisEventListener<RybMatterListEntry> {
private RybMatterDao rybMatterDao;
/**
* 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
*/
private static final int BATCH_COUNT = 3000;
/**
* 这个集合用于接收 读取Excel文件得到的数据
*/
List<RybMatterListEntry> entityList = new ArrayList<RybMatterListEntry>();
public RybMatterImportListener(RybMatterDao rybMatterDao) {
this.rybMatterDao = rybMatterDao;
}
@SneakyThrows
@Override
public void invoke(RybMatterListEntry rybMatterListEntry, AnalysisContext analysisContext) {
entityList.add(rybMatterListEntry);
//达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
if (entityList.size() >= BATCH_COUNT) {
rybMatterDao.inserts(entityList);
//存储完成清理list
entityList.clear();
}
log.info("=======Excel文件<<>>导入成功===========");
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 这里也要保存数据,确保最后遗留的数据也存储到数据库
rybMatterDao.inserts(entityList);
log.info("=======Excel文件<<>>导入成功===========");
}
}
package com.mortals.xhx.modules.implementlist.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.mortals.xhx.common.utils.SnowFlakeUtil;
import com.mortals.xhx.modules.implementlist.dao.RybWorkDao;
import com.mortals.xhx.modules.implementlist.model.RybWorkEntry;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
/**
* @author liaozimu
* @Date: 2021-11-2021/11/2-17:23
* @Description:
*/
@Slf4j
public class RybWorkImportListener extends AnalysisEventListener<RybWorkEntry> {
private RybWorkDao rybWorkDao;
/**
* 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
*/
private static final int BATCH_COUNT = 3000;
/**
* 这个集合用于接收 读取Excel文件得到的数据
*/
List<RybWorkEntry> entityList = new ArrayList<RybWorkEntry>();
public RybWorkImportListener(RybWorkDao rybWorkDao) {
this.rybWorkDao = rybWorkDao;
}
@SneakyThrows
@Override
public void invoke(RybWorkEntry rybWorkEntry, AnalysisContext analysisContext) {
rybWorkEntry.setId(SnowFlakeUtil.get().nextId());
entityList.add(rybWorkEntry);
//达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
if (entityList.size() >= BATCH_COUNT) {
rybWorkDao.inserts(entityList);
//存储完成清理list
entityList.clear();
}
log.info("=======Excel文件<<>>导入成功===========");
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 这里也要保存数据,确保最后遗留的数据也存储到数据库
rybWorkDao.inserts(entityList);
log.info("=======Excel文件<<>>导入成功===========");
}
}
......@@ -3,6 +3,7 @@ package com.mortals.xhx.modules.implementlist.model;
* 蓉易办对接实体类
*/
import com.alibaba.excel.annotation.ExcelProperty;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
......@@ -12,42 +13,27 @@ import java.util.Date;
public class RybMatterListEntry extends BaseEntityLong {
//部门编码
@ExcelProperty("部门编码")
private String deptCode;
//部门名称
@ExcelProperty("部门编码")
private String deptName;
//事项名称
@ExcelProperty("部门编码")
private String matterName;
//事项编码
@ExcelProperty("部门编码")
private String matterCode;
//taskId
@ExcelProperty("部门编码")
private String taskId;
//事项类型
@ExcelProperty("部门编码")
private String matterType;
/**
* 是否推送(0 否 1是)
*/
private String isReport;
/**
* 是否成功(0 否 1是)
*/
private String isSuccess;
/**
* 失败次数
*/
private Integer failTimes;
/**
* 推送失败原因
*/
private String failReason;
private Date createTime;
}
......@@ -3,6 +3,7 @@ package com.mortals.xhx.modules.implementlist.model;
* 蓉易办工作人员对接实体类
*/
import com.alibaba.excel.annotation.ExcelProperty;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
......@@ -10,18 +11,23 @@ import lombok.Data;
public class RybWorkEntry extends BaseEntityLong {
//部门编码
@ExcelProperty("部门编码")
private String deptCode;
//部门名称
@ExcelProperty("部门名称")
private String deptName;
//'接受人'
@ExcelProperty("接受人")
private String receiveUserName;
//'接收人身份证号'
@ExcelProperty("接收人身份证号")
private String receiveUserIdcard;
//'接收人号码'
@ExcelProperty("接收人号码")
private String receiveUserPhone;
}
package com.mortals.xhx.modules.supplement.web;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.common.code.ExcelUploadEnum;
import com.mortals.xhx.common.code.PushTypeEnum;
import com.mortals.xhx.common.pdu.ApiRespPdu;
import com.mortals.xhx.modules.implementlist.dao.ImplementlistDao;
import com.mortals.xhx.modules.implementlist.dao.RybMatterDao;
import com.mortals.xhx.modules.implementlist.dao.RybWorkDao;
import com.mortals.xhx.modules.implementlist.listener.ImplementImportListener;
import com.mortals.xhx.modules.implementlist.listener.RybMatterImportListener;
import com.mortals.xhx.modules.implementlist.listener.RybWorkImportListener;
import com.mortals.xhx.modules.implementlist.model.ImplementlistEntity;
import com.mortals.xhx.modules.implementlist.model.RybMatterListEntry;
import com.mortals.xhx.modules.implementlist.model.RybWorkEntry;
import com.mortals.xhx.modules.supplement.model.SupplementEntity;
import com.mortals.xhx.modules.supplement.service.SupplementService;
import lombok.extern.slf4j.Slf4j;
......@@ -16,6 +28,7 @@ import org.springframework.web.bind.annotation.*;
import com.mortals.framework.web.BaseCRUDJsonMappingController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
......@@ -39,6 +52,14 @@ public class SupplementController extends BaseCRUDJsonMappingController<Suppleme
@Autowired
private ICacheService iCacheService;
@Autowired
private RybWorkDao rybWorkDao;
@Autowired
private ImplementlistDao implementlistDao;
@Autowired
private RybMatterDao matterDao;
/**
* 导入办件信息,一阶段通过excel表格导入,放入磁盘中,在通过文件地址去获取文件内容进行数据清洗
......@@ -62,7 +83,51 @@ public class SupplementController extends BaseCRUDJsonMappingController<Suppleme
return respPdu;
}
/*
*
* 蓉易办对接入口,excel上传,工作人员上传
* */
@RequestMapping("rybImportWork")
public ApiRespPdu<Object> rybImportWork(@RequestPart("file") MultipartFile file){
ApiRespPdu respPdu=new ApiRespPdu();
try {
EasyExcel.read(file.getInputStream(), RybWorkEntry.class, new RybWorkImportListener(rybWorkDao))
.sheet(0)
.headRowNumber(3)
.doRead();
respPdu.setCode(200);
respPdu.setMsg("上传文件成功");
} catch (IOException e) {
e.printStackTrace();
}
return respPdu;
}
/*
* excel上传,事项清单
* */
@RequestMapping("importMatter")
public ApiRespPdu<Object> importMatter(@RequestPart("file") MultipartFile file, Integer type){
ApiRespPdu respPdu=new ApiRespPdu();
try {
if(PushTypeEnum.SYTH.getValue() == type){
EasyExcel.read(file.getInputStream(), ImplementlistEntity.class, new ImplementImportListener(implementlistDao))
.sheet(0)
.headRowNumber(3)
.doRead();
}else if(PushTypeEnum.RYB.getValue() == type){
EasyExcel.read(file.getInputStream(), RybMatterListEntry.class, new RybMatterImportListener(matterDao))
.sheet(0)
.headRowNumber(3)
.doRead();
}
respPdu.setCode(200);
respPdu.setMsg("上传文件成功");
} catch (IOException e) {
e.printStackTrace();
}
return respPdu;
}
public SupplementController(){
super.setFormClass(SupplementForm.class);
......
......@@ -9,12 +9,7 @@
matter_name as matterName,
matter_code as matterCode,
task_id as taskId,
matter_type as matterType,
create_time as createTime,
is_report as isReport,
is_success as isSuccess,
fail_times as failTimes,
fail_reason as failReason
matter_type as matterType
from ryb_matter_list
where matter_code = #{eventCode}
</select>
......@@ -22,7 +17,7 @@
<select id="insertRyb" parameterType="collection">
insert into values
<foreach collection="collection" item="entry" index=",">
(#{entry.deptCode},#{entry.deptName},#{entry.matterName},#{entry.matterCode},#{entry.taskId},#{entry.matterType},#{entry.createTime},#{entry.isReport},#{entry.isSuccess},#{entry.failTimes},#{entry.failReason})
(#{entry.deptCode},#{entry.deptName},#{entry.matterName},#{entry.matterCode},#{entry.taskId},#{entry.matterType})
</foreach>
</select>
</mapper>
\ No newline at end of file
......@@ -12,4 +12,11 @@
from ryb_work
where dept_code = #{deptCode}
</select>
<select id="insertRyb" parameterType="collection">
insert into values
<foreach collection="collection" item="entry" index=",">
(#{entry.deptCode},#{entry.deptName},#{entry.matterName},#{entry.receiveUserName},#{entry.receiveUserIdcard},#{entry.receiveUserPhone})
</foreach>
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment