Commit 8156d7ab authored by xiachenqi's avatar xiachenqi

支持导出全国异地证系统制证人信息

parent 23d600c4
...@@ -101,6 +101,13 @@ ...@@ -101,6 +101,13 @@
<scope>system</scope> <scope>system</scope>
<systemPath>${project.basedir}/lib/ojdbc6.jar</systemPath> <systemPath>${project.basedir}/lib/ojdbc6.jar</systemPath>
</dependency> </dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.9</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -171,14 +171,14 @@ public class ReadExcelApi { ...@@ -171,14 +171,14 @@ public class ReadExcelApi {
personPostEntity.setGetToCounty((String) list2.get(28)); personPostEntity.setGetToCounty((String) list2.get(28));
personPostEntity.setBusinessType((String) list2.get(1)); personPostEntity.setBusinessType((String) list2.get(1));
//todo 格口信息 //todo 格口信息
personPostEntity.setLatticeMouthInformation(""); personPostEntity.setLatticeMouthInformation((String) list2.get(51));
//内件性质 //内件性质
personPostEntity.setNatureOfTheInternal(""); personPostEntity.setNatureOfTheInternal("");
//内件信息 //内件信息
personPostEntity.setNatureOfTheInformation(""); personPostEntity.setNatureOfTheInformation("");
personPostEntity.setFirstWhite((String) list2.get(47)); personPostEntity.setFirstWhite((String) list2.get(47));
personPostEntity.setFileId(fileNameDicEntity.getFileId()); personPostEntity.setFileId(fileNameDicEntity.getFileId());
personPostEntity.setGk(0L); personPostEntity.setGk(gkMap);
} else { } else {
personPostEntity.setWaybillNumber((String) list2.get(0)); personPostEntity.setWaybillNumber((String) list2.get(0));
personPostEntity.setBackWaybillNumber((String) list2.get(1)); personPostEntity.setBackWaybillNumber((String) list2.get(1));
......
...@@ -4,6 +4,7 @@ import com.yxproject.start.dto.PreproPersonDto; ...@@ -4,6 +4,7 @@ import com.yxproject.start.dto.PreproPersonDto;
import com.yxproject.start.entity.CountDataEntity; import com.yxproject.start.entity.CountDataEntity;
import com.yxproject.start.entity.FilesEntity; import com.yxproject.start.entity.FilesEntity;
import com.yxproject.start.service.ImportXmlService; import com.yxproject.start.service.ImportXmlService;
import com.yxproject.start.service.impl.PreproPersonServiceImpl;
import com.yxproject.start.utils.IDCardFactory; import com.yxproject.start.utils.IDCardFactory;
import com.yxproject.start.utils.YXJSONResponse; import com.yxproject.start.utils.YXJSONResponse;
import com.yxproject.start.utils.YXStringUtils; import com.yxproject.start.utils.YXStringUtils;
...@@ -13,7 +14,11 @@ import org.apache.commons.lang.StringUtils; ...@@ -13,7 +14,11 @@ import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.log4j.MDC; import org.apache.log4j.MDC;
import org.dom4j.DocumentException; import org.dom4j.DocumentException;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -27,9 +32,11 @@ import javax.ws.rs.Consumes; ...@@ -27,9 +32,11 @@ import javax.ws.rs.Consumes;
import javax.ws.rs.Produces; import javax.ws.rs.Produces;
import javax.ws.rs.core.Context; import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.time.LocalDate;
import java.util.*; import java.util.*;
@RestController @RestController
...@@ -37,11 +44,13 @@ import java.util.*; ...@@ -37,11 +44,13 @@ import java.util.*;
public class ReadXmlApi { public class ReadXmlApi {
private final ImportXmlService importXmlService; private final ImportXmlService importXmlService;
private final PreproPersonServiceImpl preproPersonServiceImpl;
Logger logger = Logger.getLogger(ReadXmlApi.class); Logger logger = Logger.getLogger(ReadXmlApi.class);
public ReadXmlApi(ImportXmlService importXmlService) { public ReadXmlApi(ImportXmlService importXmlService, PreproPersonServiceImpl preproPersonServiceImpl) {
this.importXmlService = importXmlService; this.importXmlService = importXmlService;
this.preproPersonServiceImpl = preproPersonServiceImpl;
} }
/** /**
...@@ -55,8 +64,8 @@ public class ReadXmlApi { ...@@ -55,8 +64,8 @@ public class ReadXmlApi {
@Consumes(MediaType.MULTIPART_FORM_DATA) @Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Map<String,Object> getXMLToCheck(@Context HttpServletResponse resp, HttpServletRequest requ) { public Map<String, Object> getXMLToCheck(@Context HttpServletResponse resp, HttpServletRequest requ) {
Map<String,Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
List<String> errList = new ArrayList<>(); List<String> errList = new ArrayList<>();
String remoteAddr = requ.getRemoteAddr(); String remoteAddr = requ.getRemoteAddr();
MDC.put("ip", remoteAddr); MDC.put("ip", remoteAddr);
...@@ -82,7 +91,7 @@ public class ReadXmlApi { ...@@ -82,7 +91,7 @@ public class ReadXmlApi {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) requ; MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) requ;
Iterator<String> iter = multiRequest.getFileNames(); Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) { while (iter.hasNext()) {
logger.info("开始获取整体文件信息! "+System.currentTimeMillis()); logger.info("开始获取整体文件信息! " + System.currentTimeMillis());
List<MultipartFile> fileRows = multiRequest.getFiles(iter.next()); List<MultipartFile> fileRows = multiRequest.getFiles(iter.next());
for (MultipartFile item : fileRows) { for (MultipartFile item : fileRows) {
try { try {
...@@ -93,47 +102,47 @@ public class ReadXmlApi { ...@@ -93,47 +102,47 @@ public class ReadXmlApi {
if (StringUtils.isBlank(filename)) { if (StringUtils.isBlank(filename)) {
continue; continue;
} }
logger.error("获取"+filename+"文件信息! "+System.currentTimeMillis()); logger.error("获取" + filename + "文件信息! " + System.currentTimeMillis());
InputStream in = item.getInputStream(); InputStream in = item.getInputStream();
String str = YXStringUtils.inputStream2String(in, "utf-8"); String str = YXStringUtils.inputStream2String(in, "utf-8");
in.close(); in.close();
IDCardFactory idCardFactory = new IDCardFactory(); IDCardFactory idCardFactory = new IDCardFactory();
logger.error("开始解析"+filename+"文件! "+System.currentTimeMillis()); logger.error("开始解析" + filename + "文件! " + System.currentTimeMillis());
boolean isGAT = idCardFactory.isGAT(filename); boolean isGAT = idCardFactory.isGAT(filename);
Map<String, Object> objectMap = isGAT ? idCardFactory.extractGATCard(str, date) : idCardFactory.extractIDCard(str, date); Map<String, Object> objectMap = isGAT ? idCardFactory.extractGATCard(str, date) : idCardFactory.extractIDCard(str, date);
logger.error("开始存储"+filename+"文件! "+System.currentTimeMillis()); logger.error("开始存储" + filename + "文件! " + System.currentTimeMillis());
Boolean aBoolean = idcardsFactory(objectMap); Boolean aBoolean = idcardsFactory(objectMap);
logger.error("存储"+filename+"文件完成! "+System.currentTimeMillis()); logger.error("存储" + filename + "文件完成! " + System.currentTimeMillis());
if (!aBoolean){ if (!aBoolean) {
errList.add("上传文件名:" + filename+",文件上传失败"); errList.add("上传文件名:" + filename + ",文件上传失败");
} }
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
logger.error("上传文件名" + filename ); logger.error("上传文件名" + filename);
logger.error("UnsupportedEncodingException 上传文件时发现文件编码错误", e); logger.error("UnsupportedEncodingException 上传文件时发现文件编码错误", e);
// yxresp.outPutError("UnsupportedEncodingException", "上传文件时发现文件编码错误:" + e.getMessage()); // yxresp.outPutError("UnsupportedEncodingException", "上传文件时发现文件编码错误:" + e.getMessage());
errList.add("上传文件名:" + filename+",上传文件时发现文件编码错误"); errList.add("上传文件名:" + filename + ",上传文件时发现文件编码错误");
continue; continue;
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
logger.error("上传文件名" + filename ); logger.error("上传文件名" + filename);
logger.error("IOException 上传文件时发生IO错误", e); logger.error("IOException 上传文件时发生IO错误", e);
// yxresp.outPutError("IOException", "上传文件时发生IO错误:" + e.getMessage()); // yxresp.outPutError("IOException", "上传文件时发生IO错误:" + e.getMessage());
errList.add("上传文件名:" + filename+",上传文件时发生IO错误"); errList.add("上传文件名:" + filename + ",上传文件时发生IO错误");
continue; continue;
} catch (DocumentException e) { } catch (DocumentException e) {
e.printStackTrace(); e.printStackTrace();
logger.error("上传文件名" + filename ); logger.error("上传文件名" + filename);
logger.error("DocumentException 上传文件时发生错误,非法XML文件", e); logger.error("DocumentException 上传文件时发生错误,非法XML文件", e);
// yxresp.outPutError("DocumentException", "上传文件时发生IO错误:" + e.getMessage()); // yxresp.outPutError("DocumentException", "上传文件时发生IO错误:" + e.getMessage());
errList.add("上传文件名:" + filename+",上传文件时发生错误,非法XML文件"); errList.add("上传文件名:" + filename + ",上传文件时发生错误,非法XML文件");
continue; continue;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
logger.error("上传文件名" + filename ); logger.error("上传文件名" + filename);
logger.error("Exception 上传文件时发生错误", e); logger.error("Exception 上传文件时发生错误", e);
// yxresp.outPutError("Exception", "上传文件时发生错误,非法XML文件:" + filename); // yxresp.outPutError("Exception", "上传文件时发生错误,非法XML文件:" + filename);
errList.add("上传文件名:" + filename+",上传文件时发生错误"); errList.add("上传文件名:" + filename + ",上传文件时发生错误");
continue; continue;
} }
} }
...@@ -141,20 +150,20 @@ public class ReadXmlApi { ...@@ -141,20 +150,20 @@ public class ReadXmlApi {
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
logger.error("上传文件名" + filename ); logger.error("上传文件名" + filename);
logger.error("FileUploadException 文件上传发生异常", e); logger.error("FileUploadException 文件上传发生异常", e);
// yxresp.outPutError("FileUploadException", "文件上传发生异常:" + e.getMessage()); // yxresp.outPutError("FileUploadException", "文件上传发生异常:" + e.getMessage());
errList.add("上传文件名:" + filename+",上传文件时发生错误"); errList.add("上传文件名:" + filename + ",上传文件时发生错误");
} }
if (errList.size() == 0){ if (errList.size() == 0) {
map.put("msg","文件上传成功!"); map.put("msg", "文件上传成功!");
map.put("code","200"); map.put("code", "200");
}else { } else {
map.put("msg","文件上传失败!"); map.put("msg", "文件上传失败!");
map.put("code","500"); map.put("code", "500");
map.put("errMsg",errList); map.put("errMsg", errList);
} }
logger.error("所有文件上传完成! "+System.currentTimeMillis()); logger.error("所有文件上传完成! " + System.currentTimeMillis());
return map; return map;
} }
...@@ -269,4 +278,14 @@ public class ReadXmlApi { ...@@ -269,4 +278,14 @@ public class ReadXmlApi {
return str.replace("-", "").replace(" ", "").replace(":", ""); return str.replace("-", "").replace(" ", "").replace(":", "");
} }
@GetMapping("exportCsv")
public ResponseEntity<FileSystemResource> exportCsv() throws IOException {
String fileName = preproPersonServiceImpl.generateCsv();
FileSystemResource resource = new FileSystemResource(fileName);
// 返回文件下载响应
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName)
.contentType(org.springframework.http.MediaType.parseMediaType("text/csv"))
.body(resource);
}
} }
...@@ -2,6 +2,9 @@ package com.yxproject.start.dto; ...@@ -2,6 +2,9 @@ package com.yxproject.start.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import javax.persistence.Basic;
import javax.persistence.Column; import javax.persistence.Column;
...@@ -35,8 +38,18 @@ public class PersonPostDto { ...@@ -35,8 +38,18 @@ public class PersonPostDto {
private String natureOfTheInformation; private String natureOfTheInformation;
private long id; private long id;
private Long state; private Long state;
private String playState;
@JsonProperty("playType")
@Column(name = "PLAY_STATE")
public String getPlayState() {
return playState;
}
public void setPlayState(String playState) {
this.playState = playState;
}
@Column(name = "WAYBILL_NUMBER") @Column(name = "WAYBILL_NUMBER")
public String getWaybillNumber() { public String getWaybillNumber() {
return waybillNumber; return waybillNumber;
......
...@@ -12,7 +12,7 @@ public interface FilesMapper { ...@@ -12,7 +12,7 @@ public interface FilesMapper {
@Insert("INSERT INTO FILES (VERSION_CODE,DWDM,DWMC,RECORD_NUMBER,CREATE_TIME,SOURCE_FILE_NAME,UPLOAD_DATE)" + @Insert("INSERT INTO FILES (VERSION_CODE,DWDM,DWMC,RECORD_NUMBER,CREATE_TIME,SOURCE_FILE_NAME,UPLOAD_DATE)" +
"VALUES(#{versionCode},#{dwdm},#{dwmc},#{recordNumber},#{createTime},#{sourceFileName},#{uploadDate})") "VALUES(#{versionCode},#{dwdm},#{dwmc},#{recordNumber},#{createTime},#{sourceFileName},#{uploadDate})")
@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id") @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")
public long insertFiles(FilesEntity filesEntity); long insertFiles(FilesEntity filesEntity);
......
...@@ -3,6 +3,7 @@ package com.yxproject.start.mapper; ...@@ -3,6 +3,7 @@ package com.yxproject.start.mapper;
import com.yxproject.start.dto.PersonPostDto; import com.yxproject.start.dto.PersonPostDto;
import com.yxproject.start.entity.GATTrackEntity; import com.yxproject.start.entity.GATTrackEntity;
import com.yxproject.start.entity.PersonPostEntity; import com.yxproject.start.entity.PersonPostEntity;
import com.yxproject.start.entity.PreproPersonEntity;
import org.apache.ibatis.annotations.*; import org.apache.ibatis.annotations.*;
import java.util.Date; import java.util.Date;
...@@ -314,7 +315,7 @@ public interface PersonPostMapper { ...@@ -314,7 +315,7 @@ public interface PersonPostMapper {
@Select("SELECT ID,WAYBILL_NUMBER,BACK_WAYBILL_NUMBER,ORDER_NUMBER,RECIPIENT_NAME,RECIPIENT_PHONE," + @Select("SELECT ID,WAYBILL_NUMBER,BACK_WAYBILL_NUMBER,ORDER_NUMBER,RECIPIENT_NAME,RECIPIENT_PHONE," +
"RECIPIENT_ADDRESS,APPLICANT_NAME,PRINT_DATE,SENDER_NAME,SENDER_PHONE,SENDER_ADDRESS," + "RECIPIENT_ADDRESS,APPLICANT_NAME,PRINT_DATE,SENDER_NAME,SENDER_PHONE,SENDER_ADDRESS," +
"GET_TO_PROVINCE,GET_TO_CITY,GET_TO_COUNTY,BUSINESS_TYPE," + "GET_TO_PROVINCE,GET_TO_CITY,GET_TO_COUNTY,BUSINESS_TYPE," +
"LATTICE_MOUTH_INFORMATION,NATURE_OF_THE_INTERNAL,NATURE_OF_THE_INFORMATION," + "LATTICE_MOUTH_INFORMATION,NATURE_OF_THE_INTERNAL,NATURE_OF_THE_INFORMATION,PLAY_STATE," +
"STATE FROM PERSON_POST WHERE ID_CARD=#{idCard} AND BEGIN_USEFUL_LIFE=#{startDate} AND VALID_PERIOD_END=#{endDate} AND STATE1=0") "STATE FROM PERSON_POST WHERE ID_CARD=#{idCard} AND BEGIN_USEFUL_LIFE=#{startDate} AND VALID_PERIOD_END=#{endDate} AND STATE1=0")
List<PersonPostDto> getPostInfoAtMachine(@Param("idCard") String idCard, @Param("startDate") String startDate, @Param("endDate") String endDate); List<PersonPostDto> getPostInfoAtMachine(@Param("idCard") String idCard, @Param("startDate") String startDate, @Param("endDate") String endDate);
......
...@@ -262,8 +262,17 @@ public interface PreproPersonMapper { ...@@ -262,8 +262,17 @@ public interface PreproPersonMapper {
@Select("select UPLOAD_NO,ACCEPT_NO from ACCYD_DBA.ACC_CARD_T@ACCUYD_LINK WHERE ACCEPT_NO =#{acceptNo}\n" + @Select("select UPLOAD_NO,ACCEPT_NO from ACCYD_DBA.ACC_CARD_T@ACCUYD_LINK WHERE ACCEPT_NO =#{acceptNo}\n" +
"UNION all \n" + "UNION all \n" +
"select UPLOAD_NO,ACCEPT_NO from PRODYD_DBA.PROD_CARD_T@PRODYD_LINK WHERE ACCEPT_NO =#{acceptNo}") "select UPLOAD_NO,ACCEPT_NO from PRODYD_DBA.PROD_CARD_T@PRODYD_LINK WHERE ACCEPT_NO =#{acceptNo}")
public List<Map<String, Object>> selectUploadNoByAcceptNo(String acceptNo); List<Map<String, Object>> selectUploadNoByAcceptNo(String acceptNo);
@Select("SELECT TP_PATH FROM PREPRO_PERSON WHERE FILE_ID = #{id}") @Select("SELECT TP_PATH FROM PREPRO_PERSON WHERE FILE_ID = #{id}")
public List<PreproPersonEntity> selectPath (String id); List<PreproPersonEntity> selectPath(String id);
@Select("SELECT PREPRO_PERSON.* " +
"FROM PREPRO_PERSON " +
"LEFT JOIN YINGXINYD.FILES F ON PREPRO_PERSON.FILE_ID = F.ID " +
"WHERE F.UPLOAD_DATE >= TRUNC(SYSDATE) " +
"AND F.UPLOAD_DATE < TRUNC(SYSDATE) + 1 " +
"AND SUBSTR(PREPRO_PERSON.JMSFZSLH, 18, 1) = '8' " +
"ORDER BY PREPRO_PERSON.ID DESC")
List<PreproPersonEntity> selectPreproPersonsToday();
} }
\ No newline at end of file
...@@ -3,6 +3,7 @@ package com.yxproject.start.service; ...@@ -3,6 +3,7 @@ package com.yxproject.start.service;
import com.yxproject.start.dto.PreproPersonDto; import com.yxproject.start.dto.PreproPersonDto;
import com.yxproject.start.entity.PreproPersonEntity; import com.yxproject.start.entity.PreproPersonEntity;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -12,21 +13,21 @@ import java.util.Map; ...@@ -12,21 +13,21 @@ import java.util.Map;
*/ */
public interface PreproPersonService { public interface PreproPersonService {
public boolean uploadState(String acceptNo,String state); boolean uploadState(String acceptNo, String state);
public List<Map<String,Object>> selectUploadNoByAcceptNo(String acceptNo); List<Map<String,Object>> selectUploadNoByAcceptNo(String acceptNo);
public boolean updatePreproPersonIsValid(PreproPersonEntity preproPersonEntity); boolean updatePreproPersonIsValid(PreproPersonEntity preproPersonEntity);
public List<Map<String, Object>> selectPreproPerson(String uploadNo, String IDCard, String oldFile, String newFile, String SSXQDM, String cardType, String state, String uploadDate1,String uploadDate2,String currPage,String pageSize,String downloadState); List<Map<String, Object>> selectPreproPerson(String uploadNo, String IDCard, String oldFile, String newFile, String SSXQDM, String cardType, String state, String uploadDate1, String uploadDate2, String currPage, String pageSize, String downloadState);
public List<Map<String, Object>> selectPreproPerson(String uploadNo, String IDCard, String oldFile, String newFile, String SSXQDM, String cardType, String state, String uploadDate1,String uploadDate2,String downloadState); List<Map<String, Object>> selectPreproPerson(String uploadNo, String IDCard, String oldFile, String newFile, String SSXQDM, String cardType, String state, String uploadDate1, String uploadDate2, String downloadState);
public List<PreproPersonDto> selectAllPreproPerson( String uploadNo, String IDCard, String oldFile, String newFile, String SSXQDM, String cardType, String state, String uploadDate1, String uploadDate2, String downloadState); List<PreproPersonDto> selectAllPreproPerson(String uploadNo, String IDCard, String oldFile, String newFile, String SSXQDM, String cardType, String state, String uploadDate1, String uploadDate2, String downloadState);
public int selectPreproPersonCount(String uploadNo, String IDCard, String oldFile, String newFile, String SSXQDM, String cardType, String state, String uploadDate1,String uploadDate2,String downloadState); int selectPreproPersonCount(String uploadNo, String IDCard, String oldFile, String newFile, String SSXQDM, String cardType, String state, String uploadDate1, String uploadDate2, String downloadState);
public boolean updatePreproPerson_NewFileName(List<PreproPersonDto> preproPersonEntities);
boolean updatePreproPerson_NewFileName(List<PreproPersonDto> preproPersonEntities);
String generateCsv() throws IOException;
} }
package com.yxproject.start.service.impl; package com.yxproject.start.service.impl;
import com.opencsv.CSVWriter;
import com.yxproject.start.dto.PreproPersonDto; import com.yxproject.start.dto.PreproPersonDto;
import com.yxproject.start.entity.PreproPersonEntity; import com.yxproject.start.entity.PreproPersonEntity;
import com.yxproject.start.mapper.PreproPersonMapper; import com.yxproject.start.mapper.PreproPersonMapper;
...@@ -9,10 +10,11 @@ import org.dom4j.Document; ...@@ -9,10 +10,11 @@ import org.dom4j.Document;
import org.dom4j.DocumentException; import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper; import org.dom4j.DocumentHelper;
import org.dom4j.Element; import org.dom4j.Element;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -23,8 +25,12 @@ import java.util.Map; ...@@ -23,8 +25,12 @@ import java.util.Map;
*/ */
@Service @Service
public class PreproPersonServiceImpl implements PreproPersonService { public class PreproPersonServiceImpl implements PreproPersonService {
@Autowired
private PreproPersonMapper preproPersonMapper; private final PreproPersonMapper preproPersonMapper;
public PreproPersonServiceImpl(PreproPersonMapper preproPersonMapper) {
this.preproPersonMapper = preproPersonMapper;
}
@Override @Override
public boolean uploadState(String acceptNo, String state) { public boolean uploadState(String acceptNo, String state) {
...@@ -173,4 +179,47 @@ public class PreproPersonServiceImpl implements PreproPersonService { ...@@ -173,4 +179,47 @@ public class PreproPersonServiceImpl implements PreproPersonService {
public List<Map<String,Object>> selectUploadNoByAcceptNo(String acceptNo) { public List<Map<String,Object>> selectUploadNoByAcceptNo(String acceptNo) {
return preproPersonMapper.selectUploadNoByAcceptNo(acceptNo); return preproPersonMapper.selectUploadNoByAcceptNo(acceptNo);
} }
@Override
public String generateCsv() throws IOException {
List<PreproPersonEntity> dataList = preproPersonMapper.selectPreproPersonsToday();
LocalDate date = LocalDate.now();
// 定义 CSV 文件路径
String csvFile = "./" + date + ".csv";
// 创建 CSVWriter
// 使用 OutputStreamWriter 和 FileOutputStream 来设置 UTF-8 编码
try (FileOutputStream fileOut = new FileOutputStream(csvFile);
OutputStreamWriter writer = new OutputStreamWriter(fileOut, StandardCharsets.UTF_8)) {
// 可选:写入 UTF-8 BOM(用于兼容 Excel)
writer.write('\uFEFF');
// 创建 CSVWriter
CSVWriter csvWriter = new CSVWriter(writer);
// 写入表头
String[] header = {"受理号", "身份证号", "姓名", "联系电话", "申领原因代码", "受理日期", "受理单位代码"};
csvWriter.writeNext(header);
// 写入数据
for (PreproPersonEntity data : dataList) {
// 确保所有字段都作为字符串保存,防止 Excel 将其解析为数字
String[] row = {
data.getJmsfzslh(),
data.getGmsfhm(),
data.getXm(), // 姓名
data.getSjrLxdh(), // 联系电话
data.getJmsfzslyydm(), // 原因代码
data.getJmsfzslh().substring(9, 17), // 身份证号后部分
data.getJmsfzslh().substring(0, 9) // 身份证号前部分
};
csvWriter.writeNext(row);
}
}
System.out.println("CSV 文件生成成功,路径为:" + csvFile);
return csvFile;
}
} }
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