Commit 5d1e69e4 authored by xiachenqi's avatar xiachenqi

新增邮寄数据CSV导出功能,支持今日邮寄信息和指定日期的导出

parent ffe25d90
...@@ -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.PersonPostService;
import com.yxproject.start.service.PreproPersonService; import com.yxproject.start.service.PreproPersonService;
import com.yxproject.start.utils.IDCardFactory; import com.yxproject.start.utils.IDCardFactory;
import com.yxproject.start.utils.YXJSONResponse; import com.yxproject.start.utils.YXJSONResponse;
...@@ -43,12 +44,14 @@ public class ReadXmlApi { ...@@ -43,12 +44,14 @@ public class ReadXmlApi {
private final ImportXmlService importXmlService; private final ImportXmlService importXmlService;
private final PreproPersonService preproPersonService; private final PreproPersonService preproPersonService;
private final PersonPostService personPostService;
Logger logger = Logger.getLogger(ReadXmlApi.class); Logger logger = Logger.getLogger(ReadXmlApi.class);
public ReadXmlApi(ImportXmlService importXmlService, PreproPersonService preproPersonService) { public ReadXmlApi(ImportXmlService importXmlService, PreproPersonService preproPersonService, PersonPostService personPostService) {
this.importXmlService = importXmlService; this.importXmlService = importXmlService;
this.preproPersonService = preproPersonService; this.preproPersonService = preproPersonService;
this.personPostService = personPostService;
} }
/** /**
...@@ -286,4 +289,26 @@ public class ReadXmlApi { ...@@ -286,4 +289,26 @@ public class ReadXmlApi {
.contentType(org.springframework.http.MediaType.parseMediaType("text/csv")) .contentType(org.springframework.http.MediaType.parseMediaType("text/csv"))
.body(resource); .body(resource);
} }
/**
* 导出今日邮寄证信息表-制证包管理
* @param date 日期
* @return csv文件
* @throws IOException IO异常
*/
@GetMapping("exportPostCsv")
public ResponseEntity<FileSystemResource> exportPostCsv(@RequestParam(required = false) String date) throws IOException {
String fileName;
if (date == null) {
fileName = personPostService.generatePostCsv();
} else {
fileName = personPostService.generatePostCsv(date);
}
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);
}
} }
...@@ -343,4 +343,22 @@ public interface PersonPostMapper { ...@@ -343,4 +343,22 @@ public interface PersonPostMapper {
@Update("UPDATE PERSON_POST SET GK = #{GK} where ID = #{id}") @Update("UPDATE PERSON_POST SET GK = #{GK} where ID = #{id}")
boolean addGk( @Param("id") long id, @Param("GK") Long gk ); boolean addGk( @Param("id") long id, @Param("GK") Long gk );
@Select("SELECT FIRST_WHITE AS JMSFZSLH, APPLICANT_NAME XM, ID_CARD AS GMSFHM, RECIPIENT_NAME AS SJRXM, RECIPIENT_PHONE AS LXDH, RECIPIENT_ADDRESS AS YJDZ, PRINT_DATE AS YJDYRQ " +
"FROM PERSON_POST " +
"WHERE STATE1 = 0 " +
" AND PRINT_DATE IS NOT NULL " +
" AND PRINT_DATE >= TRUNC(SYSDATE) " +
" AND PRINT_DATE < TRUNC(SYSDATE) + 1 " +
"ORDER BY PRINT_DATE DESC")
List<Map<String, String>> selectPostToday();
@Select("SELECT FIRST_WHITE AS JMSFZSLH, APPLICANT_NAME XM, ID_CARD AS GMSFHM, RECIPIENT_NAME AS SJRXM, RECIPIENT_PHONE AS LXDH, RECIPIENT_ADDRESS AS YJDZ, PRINT_DATE AS YJDYRQ " +
"FROM PERSON_POST " +
"WHERE STATE1 = 0 " +
" AND PRINT_DATE IS NOT NULL " +
" AND PRINT_DATE >= TO_DATE(#{date}, 'yyyyMMdd') " +
" AND PRINT_DATE < TO_DATE(#{date}, 'yyyyMMdd') + 1 " +
"ORDER BY PRINT_DATE DESC")
List<Map<String, String>> selectPost(String date);
} }
...@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; ...@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -70,4 +71,18 @@ public interface PersonPostService { ...@@ -70,4 +71,18 @@ public interface PersonPostService {
List<PersonPostDto> getPostInfoAtMachine(ReadCardDto readCardDto); List<PersonPostDto> getPostInfoAtMachine(ReadCardDto readCardDto);
boolean updatePrintDateAtMachine(int id, Date printDateTime); boolean updatePrintDateAtMachine(int id, Date printDateTime);
/**
* 生成邮寄数据CSV文件
* @return csv
*/
String generatePostCsv() throws IOException;
/**
* 生成邮寄数据CSV文件
*
* @param date 日期
* @return {@link String }
*/
String generatePostCsv(String date) throws IOException;
} }
package com.yxproject.start.service.impl; package com.yxproject.start.service.impl;
import com.opencsv.CSVWriter;
import com.yxproject.start.dto.PersonPostDto; import com.yxproject.start.dto.PersonPostDto;
import com.yxproject.start.dto.ReadCardDto; import com.yxproject.start.dto.ReadCardDto;
import com.yxproject.start.entity.GATTrackEntity; import com.yxproject.start.entity.GATTrackEntity;
...@@ -16,6 +17,11 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -16,6 +17,11 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -238,5 +244,70 @@ public class PersonPostServiceImpl implements PersonPostService { ...@@ -238,5 +244,70 @@ public class PersonPostServiceImpl implements PersonPostService {
return true; return true;
} }
/**
* 生成post-csv
*
* @param dataList 数据列表
* @param date 日期
* @return {@link String }
* @throws IOException 异常
*/
private String generatePostCsv(List<Map<String, String>> dataList, String date) throws IOException {
String csvFile = "YD_POST_" + 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 (Map<String, String> data : dataList) {
// 确保所有字段都作为字符串保存,防止 Excel 将其解析为数字
String[] row = {
data.get("JMSFZSLH"),
data.get("XM"),
data.get("GMSFHM"),
data.get("SJRXM"),
data.get("LXDH"),
data.get("YJDZ"),
String.valueOf(data.get("YJDYRQ"))
};
csvWriter.writeNext(row);
}
}
return csvFile;
}
/**
* 生成邮寄数据CSV文件
*
* @return csv
*/
@Override
public String generatePostCsv() throws IOException {
List<Map<String, String>> dataList = personPostMapper.selectPostToday();
LocalDate date = LocalDate.now();
return generatePostCsv(dataList, date.toString());
}
/**
* 生成邮寄数据CSV文件
*
* @param date 日期
* @return {@link String }
*/
@Override
public String generatePostCsv(String date) throws IOException {
List<Map<String, String>> dataList = personPostMapper.selectPost(date);
return generatePostCsv(dataList, date);
}
} }
...@@ -111,9 +111,8 @@ ...@@ -111,9 +111,8 @@
</button> </button>
</td> </td>
<td style="text-align: left"> <td style="text-align: left">
<button class="btn btn-primary" ng-click="downLoadXml()"> <button class="btn btn-primary" ng-click="downLoadXml()">导出今日全国异地证信息表</button>
导出今日全国异地证信息表 <button class="btn btn-primary" ng-click="downloadPostCsv()">导出今日邮寄证信息表</button>
</button>
</td> </td>
</tr> </tr>
</table> </table>
......
...@@ -201,13 +201,19 @@ angular ...@@ -201,13 +201,19 @@ angular
} }
$scope.downLoadXml = function (fileId) { $scope.downLoadXml = function (fileId) {
var url = "../importXML/exportCsv" const url = "../importXML/exportCsv";
var a = document.createElement("a") const a = document.createElement("a");
document.body.appendChild(a)
a.href = encodeURI(url)
a.click()
}
$scope.downloadPostCsv = function () {
const url = "../importXML/exportPostCsv";
const a = document.createElement("a");
document.body.appendChild(a) document.body.appendChild(a)
a.href = encodeURI(url) a.href = encodeURI(url)
a.click() a.click()
} }
var reGet = $scope.getXmlPackage var reGet = $scope.getXmlPackage
$scope.deleteDataById = function (uploadDate, packageCount) { $scope.deleteDataById = function (uploadDate, packageCount) {
ngDialog.open({ ngDialog.open({
......
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