Commit 4a231883 authored by lvcunle's avatar lvcunle

纪检监察员管理系统——问题清单 导入功能

name = "monitorCounter-issuesList", url = "third/monitor/issuesListDetail/importExcel.json"
parent 043b710c
......@@ -67,6 +67,18 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel-core</artifactId>
<version>3.1.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.3</version>
</dependency>
</dependencies>
</project>
//package com.yundong.third.easyExcel;
//
//import cn.hutool.core.util.ObjectUtil;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.InputStream;
//import java.io.OutputStream;
//
//public class MultipartFileToFileUtil {
// public static File ToFile(MultipartFile file) throws Exception {
// if (ObjectUtil.isNull(file)) {
// return null;
// }
// File toFile = null;
// if (file.equals("") || file.getSize() <= 0) {
// file = null;
// } else {
// InputStream ins = null;
// ins = file.getInputStream();
// toFile = new File(file.getOriginalFilename());
// inputStreamToFile(ins, toFile);
// ins.close();
// }
// return toFile;
// }
//
// private static void inputStreamToFile(InputStream ins, File file) {
// try {
// OutputStream os = new FileOutputStream(file);
// int bytesRead = 0;
// byte[] buffer = new byte[8192];
// while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
// os.write(buffer, 0, bytesRead);
// }
// os.close();
// ins.close();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
//}
package com.yundong.third.easyExcel.listener;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.yundong.third.entity.IssuesListDetail;
import com.yundong.third.entity.IssuesListDetailExcel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class ExcelListener extends AnalysisEventListener<IssuesListDetailExcel> {
private int successCount = 0;
private int count = 0;
private final List<IssuesListDetail> successData = new ArrayList<>();
private final List<String> failData = new ArrayList<>();
@Override
public void invoke(IssuesListDetailExcel issuesListDetailExcel, AnalysisContext analysisContext) {
//空json直接跳过
if ("{}".equals(JSON.toJSONString(issuesListDetailExcel))) {
return;
}
log.info("excel导入,解析到一条数据:{}", JSON.toJSONString(issuesListDetailExcel));
if ("TYPE".equals(issuesListDetailExcel.getTYPE())){
return;
}
successData.add(BeanUtil.copyProperties(issuesListDetailExcel,IssuesListDetail.class));
count++;
successCount++;
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
log.info("所有数据解析完成!共" + successCount + "条数据");
}
}
package com.yundong.third.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.sql.Date;
/**
* @author BEJSON
* @description issues_list_detail
* @date 2024-04-07
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "issues_list_detail")
public class IssuesListDetail implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 唯一主键
*/
@TableId(value = "id")
private String id;
/**
* 创建时间
*/
private Date gmtCreate;
/**
* 修改时间
*/
private Date gmtModified;
/**
* 创建人
*/
private String createBy;
/**
* 修改人
*/
private String updateBy;
/**
* 租户ID
*/
private String tenantId;
/**
* 是否删除
*/
private Long isDeleted;
/**
* 流程实例状态 AGREE:已同意 REFUSE:已拒绝 PENDING:审批中 CANCEL:已撤销
*/
private String bpmInstanceStatus;
/**
* 流程实例id
*/
private String bpmInstanceId;
/**
* 问题分类(合同管理 分包管理 采购管理 成本管理 财务管理 物资管理 设备管理 集体决策 作风建设 其他)
*/
@TableField(value = "TYPE")
private String TYPE;
/**
* 具体问题描述
*/
@TableField(value = "DESCRIBETEXT")
private String DESCRIBETEXT;
/**
* 发现时间
*/
@TableField(value = "DISCOVERYTIME")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date DISCOVERYTIME;
/**
* 整改措施
*/
@TableField(value = "RECTIFICATIONMEASURES")
private String RECTIFICATIONMEASURES;
/**
* 整改完成时间
*/
@TableField(value = "RECTIFICATIONCOMPLETIONTIME")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date RECTIFICATIONCOMPLETIONTIME;
/**
* 整改进度
*/
@TableField(value = "RECTIFICATIONPROGRESS")
private String RECTIFICATIONPROGRESS;
/**
* 情况
*/
@TableField(value = "SITUATION")
private String SITUATION;
/**
* 项目id
*/
@TableField(value = "PROJECTID")
private String PROJECTID;
/**
* 项目名称
*/
@TableField(value = "PROJECTNAME")
private String PROJECTNAME;
/**
* 监察员
*/
@TableField(value = "INSPECTOR")
private String INSPECTOR;
}
\ No newline at end of file
package com.yundong.third.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.sql.Date;
/**
* @author BEJSON
* @description issues_list_detail
* @date 2024-04-07
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class IssuesListDetailExcel implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 问题分类(合同管理 分包管理 采购管理 成本管理 财务管理 物资管理 设备管理 集体决策 作风建设 其他)
*/
@ExcelProperty(value = "问题分类")
@TableField(value = "TYPE")
private String TYPE;
/**
* 具体问题描述
*/
@ExcelProperty(value = "具体问题描述")
@TableField(value = "DESCRIBETEXT")
private String DESCRIBETEXT;
/**
* 发现时间
*/
@ExcelProperty(value = "发现时间")
@TableField(value = "DISCOVERYTIME")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private String DISCOVERYTIME;
/**
* 整改措施
*/
@ExcelProperty(value = "整改措施")
@TableField(value = "RECTIFICATIONMEASURES")
private String RECTIFICATIONMEASURES;
/**
* 整改完成时间
*/
@ExcelProperty(value = "整改完成时间")
@TableField(value = "RECTIFICATIONCOMPLETIONTIME")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private String RECTIFICATIONCOMPLETIONTIME;
/**
* 整改进度
*/
@ExcelProperty(value = "整改进度")
@TableField(value = "RECTIFICATIONPROGRESS")
private String RECTIFICATIONPROGRESS;
/**
* 情况
*/
@ExcelProperty(value = "情况")
@TableField(value = "SITUATION")
private String SITUATION;
}
\ No newline at end of file
package com.yundong.third.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yundong.third.entity.IssuesListDetail;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface IssuesListDeatilMapper extends BaseMapper<IssuesListDetail> {
}
package com.yundong.third.server;
import com.yundong.base.result.Result;
import java.io.File;
/**
* 项目纪检监察员管理 问题清单
*/
public interface IssuesListDetailServer {
/**
* * excel导入
*
* @param excel excel文件
* @param projectId 项目id
* @param userId 当前登录人id
* @return
*/
Result<String> importExcel(File excel, String projectId, String userId);
}
package com.yundong.third.server.impl;
import cn.hutool.core.util.IdUtil;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yundong.base.result.Result;
import com.yundong.gateway.register.annotation.YdcGateway;
import com.yundong.third.easyExcel.listener.ExcelListener;
import com.yundong.third.entity.IssuesListDetail;
import com.yundong.third.entity.IssuesListDetailExcel;
import com.yundong.third.mapper.IssuesListDeatilMapper;
import com.yundong.third.server.IssuesListDetailServer;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.sql.Date;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
@org.apache.dubbo.config.annotation.Service(version = "${dubbo.provider.version}", group = "${dubbo.provider.group}")
public class IssuesListDetailServerImpl implements IssuesListDetailServer {
@Autowired
private IssuesListDeatilMapper issuesListDeatilMapper;
/**
* excel导入
*
* @param excel excel文件
* @param projectId 项目id
* @param userId 当前登录人id
* @return
*/
@YdcGateway(name = "monitorCounter-issuesList", url = "third/monitor/issuesListDetail/importExcel.json")
@Override
public Result<String> importExcel(File excel, String projectId, String userId) {
if (excel == null) {
return Result.fail("文件不能为空");
}
if (excel.getName().endsWith(".xlsx")) {
return Result.fail("请导入xlsx格式的文件");
}
try {
//解析
ExcelListener excelListener = new ExcelListener();
EasyExcelFactory.read(excel, IssuesListDetailExcel.class, excelListener).excelType(ExcelTypeEnum.XLSX).sheet().doRead();
List<IssuesListDetail> successData = excelListener.getSuccessData();
//查询
List<IssuesListDetail> issuesListDetails = issuesListDeatilMapper.selectList(
new LambdaQueryWrapper<IssuesListDetail>()
.eq(IssuesListDetail::getIsDeleted, 0)
.eq(IssuesListDetail::getPROJECTID, projectId));
String projectName = issuesListDetails.get(NumberUtils.INTEGER_ZERO).getPROJECTNAME();
String tenantId = issuesListDetails.get(NumberUtils.INTEGER_ZERO).getTenantId();
//过滤
List<IssuesListDetail> importDataList = successData.stream()
.filter(item1 -> issuesListDetails.stream().noneMatch(item2 -> item2.getDISCOVERYTIME().equals(item1.getDISCOVERYTIME())
&& item2.getDESCRIBETEXT().equals(item1.getDESCRIBETEXT())))
.collect(Collectors.toList());
//赋值导入
Date date = new Date(System.currentTimeMillis());
for (IssuesListDetail issuesListDetail : importDataList) {
issuesListDetail.setId(IdUtil.simpleUUID());
issuesListDetail.setPROJECTID(projectId);
issuesListDetail.setPROJECTNAME(projectName);
issuesListDetail.setCreateBy(userId);
issuesListDetail.setUpdateBy(userId);
issuesListDetail.setINSPECTOR(userId);
issuesListDetail.setTenantId(tenantId);
issuesListDetail.setGmtModified(date);
issuesListDetail.setGmtCreate(date);
this.issuesListDeatilMapper.insert(issuesListDetail);
}
return Result.success("导入成功,条数:" + importDataList.size());
} catch (Exception e) {
return Result.fail("导入失败:" + e.getMessage());
}
}
}
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