Commit 3b67812e authored by shenxin's avatar shenxin

添加事项清单导入

parent ee0df0de
...@@ -12,4 +12,5 @@ public interface RybWorkDao extends ICRUDDao<ImplementlistEntity,Long> { ...@@ -12,4 +12,5 @@ public interface RybWorkDao extends ICRUDDao<ImplementlistEntity,Long> {
List<RybWorkEntry> find(String deptCode); List<RybWorkEntry> find(String deptCode);
void inserts(List<RybWorkEntry> list);
} }
...@@ -21,4 +21,9 @@ public class RybWorkDaoImpl extends BaseCRUDDaoMybatis<ImplementlistEntity,Long> ...@@ -21,4 +21,9 @@ public class RybWorkDaoImpl extends BaseCRUDDaoMybatis<ImplementlistEntity,Long>
public List<RybWorkEntry> find(String deptCode) { public List<RybWorkEntry> find(String deptCode) {
return getSqlSession().selectList(getSqlId("findRyb"),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; ...@@ -3,6 +3,7 @@ package com.mortals.xhx.modules.implementlist.model;
* 蓉易办对接实体类 * 蓉易办对接实体类
*/ */
import com.alibaba.excel.annotation.ExcelProperty;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import lombok.Data; import lombok.Data;
...@@ -12,42 +13,27 @@ import java.util.Date; ...@@ -12,42 +13,27 @@ import java.util.Date;
public class RybMatterListEntry extends BaseEntityLong { public class RybMatterListEntry extends BaseEntityLong {
//部门编码 //部门编码
@ExcelProperty("部门编码")
private String deptCode; private String deptCode;
//部门名称 //部门名称
@ExcelProperty("部门编码")
private String deptName; private String deptName;
//事项名称 //事项名称
@ExcelProperty("部门编码")
private String matterName; private String matterName;
//事项编码 //事项编码
@ExcelProperty("部门编码")
private String matterCode; private String matterCode;
//taskId //taskId
@ExcelProperty("部门编码")
private String taskId; private String taskId;
//事项类型 //事项类型
@ExcelProperty("部门编码")
private String matterType; 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; ...@@ -3,6 +3,7 @@ package com.mortals.xhx.modules.implementlist.model;
* 蓉易办工作人员对接实体类 * 蓉易办工作人员对接实体类
*/ */
import com.alibaba.excel.annotation.ExcelProperty;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import lombok.Data; import lombok.Data;
...@@ -10,18 +11,23 @@ import lombok.Data; ...@@ -10,18 +11,23 @@ import lombok.Data;
public class RybWorkEntry extends BaseEntityLong { public class RybWorkEntry extends BaseEntityLong {
//部门编码 //部门编码
@ExcelProperty("部门编码")
private String deptCode; private String deptCode;
//部门名称 //部门名称
@ExcelProperty("部门名称")
private String deptName; private String deptName;
//'接受人' //'接受人'
@ExcelProperty("接受人")
private String receiveUserName; private String receiveUserName;
//'接收人身份证号' //'接收人身份证号'
@ExcelProperty("接收人身份证号")
private String receiveUserIdcard; private String receiveUserIdcard;
//'接收人号码' //'接收人号码'
@ExcelProperty("接收人号码")
private String receiveUserPhone; private String receiveUserPhone;
} }
package com.mortals.xhx.modules.supplement.web; package com.mortals.xhx.modules.supplement.web;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSONObject; 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.service.ICacheService;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.base.system.upload.service.UploadService; import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.common.code.ExcelUploadEnum; import com.mortals.xhx.common.code.ExcelUploadEnum;
import com.mortals.xhx.common.code.PushTypeEnum; import com.mortals.xhx.common.code.PushTypeEnum;
import com.mortals.xhx.common.pdu.ApiRespPdu; 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.model.SupplementEntity;
import com.mortals.xhx.modules.supplement.service.SupplementService; import com.mortals.xhx.modules.supplement.service.SupplementService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -16,6 +28,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -16,6 +28,7 @@ import org.springframework.web.bind.annotation.*;
import com.mortals.framework.web.BaseCRUDJsonMappingController; import com.mortals.framework.web.BaseCRUDJsonMappingController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -39,6 +52,14 @@ public class SupplementController extends BaseCRUDJsonMappingController<Suppleme ...@@ -39,6 +52,14 @@ public class SupplementController extends BaseCRUDJsonMappingController<Suppleme
@Autowired @Autowired
private ICacheService iCacheService; private ICacheService iCacheService;
@Autowired
private RybWorkDao rybWorkDao;
@Autowired
private ImplementlistDao implementlistDao;
@Autowired
private RybMatterDao matterDao;
/** /**
* 导入办件信息,一阶段通过excel表格导入,放入磁盘中,在通过文件地址去获取文件内容进行数据清洗 * 导入办件信息,一阶段通过excel表格导入,放入磁盘中,在通过文件地址去获取文件内容进行数据清洗
...@@ -62,7 +83,51 @@ public class SupplementController extends BaseCRUDJsonMappingController<Suppleme ...@@ -62,7 +83,51 @@ public class SupplementController extends BaseCRUDJsonMappingController<Suppleme
return respPdu; 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(){ public SupplementController(){
super.setFormClass(SupplementForm.class); super.setFormClass(SupplementForm.class);
......
...@@ -9,12 +9,7 @@ ...@@ -9,12 +9,7 @@
matter_name as matterName, matter_name as matterName,
matter_code as matterCode, matter_code as matterCode,
task_id as taskId, task_id as taskId,
matter_type as matterType, matter_type as matterType
create_time as createTime,
is_report as isReport,
is_success as isSuccess,
fail_times as failTimes,
fail_reason as failReason
from ryb_matter_list from ryb_matter_list
where matter_code = #{eventCode} where matter_code = #{eventCode}
</select> </select>
...@@ -22,7 +17,7 @@ ...@@ -22,7 +17,7 @@
<select id="insertRyb" parameterType="collection"> <select id="insertRyb" parameterType="collection">
insert into values insert into values
<foreach collection="collection" item="entry" index=","> <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> </foreach>
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -12,4 +12,11 @@ ...@@ -12,4 +12,11 @@
from ryb_work from ryb_work
where dept_code = #{deptCode} where dept_code = #{deptCode}
</select> </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> </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