Files
dzpt/src/main/java/com/saye/hospitalgd/controller/FinancialReconciliation/ReconciliationResultController.java

316 lines
14 KiB
Java
Raw Normal View History

2025-07-23 09:55:50 +08:00
package com.saye.hospitalgd.controller.FinancialReconciliation;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.saye.hospitalgd.commons.date.DateDUtil;
import com.saye.hospitalgd.commons.log.ExceptionDUtil;
import com.saye.hospitalgd.commons.log.LogUtil;
import com.saye.hospitalgd.commons.string.StringDUtil;
import com.saye.hospitalgd.model.StatusDefine;
import com.saye.hospitalgd.service.ReconciliationResultService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
import java.util.List;
import java.util.*;
/**
* @author thuang
* @version 1.0
* @description: 对账结果
* @date 2021/8/31 10:17
*/
@Api(tags = "对账结果相关接口")
@Controller
@RequestMapping("/reconciliationResult")
public class ReconciliationResultController {
@Autowired
private ReconciliationResultService reconciliationResultService;
@RequestMapping("/toReconciliationResult")
public String toReconciliationResult(ModelMap modelMap) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DATE, -1);
Date startDate = calendar.getTime();
String startTime = DateDUtil.DateToStr(DateDUtil.yyyy_MM_dd, startDate);
String endTime = DateDUtil.getCurrentDate(DateDUtil.yyyy_MM_dd);
modelMap.addAttribute("startTime", startTime);
modelMap.addAttribute("endTime", endTime);
return "financialReconciliation/reconciliationResult";
}
/**
* @description: 查询对账的结果记录
* @author thuang
* @date 2021/8/30 14:30
* @version 1.0
*/
@RequestMapping("/findReconciliationResultPageList")
@ResponseBody
@ApiOperation(value = "查询对账的结果记录")
public HashMap<Object, Object> findReconciliationResultPageList(@ApiParam(name = "开始时间") String startTime,
@ApiParam(name = "结束时间") String endTime,
@ApiParam(name = "页码") int page,
@ApiParam(name = "每页限制个数") int limit) {
HashMap<Object, Object> responseMap = new HashMap<Object, Object>();
try {
HashMap<Object, Object> map = new HashMap<Object, Object>();
map.put("startTime", startTime);
map.put("endTime", endTime);
PageHelper.startPage(page, limit);
PageInfo<HashMap<Object, Object>> pageInfo = new PageInfo<HashMap<Object, Object>>(reconciliationResultService.findReconciliationResultPageList(map));
responseMap.put("code", 0);
responseMap.put("msg", "OK");
responseMap.put("count", pageInfo.getTotal());
responseMap.put("data", pageInfo.getList());
} catch (Exception e) {
e.printStackTrace();
String msg = e.getMessage();
responseMap.put("code", 1);
responseMap.put("msg", "查询失败,原因:" + msg);
}
return responseMap;
}
/**
* @description: 导出对账结果excel
* @author thuang
* @date 2021/10/22 10:43
* @version 1.0
*/
@PostMapping("/exportReconciliationResult")
@ResponseBody
@ApiOperation(value = "导出对账结果excel")
public HashMap<Object, Object> exportReconciliationResult(@RequestBody HashMap<Object, Object> map) {
HashMap<Object, Object> responseMap = new HashMap<Object, Object>();
String errCode = "0";
String errMsg = "";
String dlName = "";
String fileName = "";
String dowloadName = StringDUtil.changeNullToEmpty(map.get("dowloadName"));
try {
String startTime = StringDUtil.changeNullToEmpty(map.get("startTime"));
String endTime = StringDUtil.changeNullToEmpty(map.get("endTime"));
List<HashMap<Object, Object>> list = reconciliationResultService.findReconciliationResultPageList(map);
if (list != null && list.size() > 0) {
//创建工作薄对象
XSSFWorkbook xwb = new XSSFWorkbook();//这里也可以设置sheet的Name
//创建工作表对象
XSSFSheet sheet = xwb.createSheet("sheet0");
//设置主标题样式
XSSFFont mainTitleFont = xwb.createFont();
mainTitleFont.setFontName("宋体");
mainTitleFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//字体加粗
mainTitleFont.setFontHeightInPoints((short) 14);// 字体大小
XSSFCellStyle mainTitleStyle = xwb.createCellStyle();
mainTitleStyle.setFont(mainTitleFont);
mainTitleStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);// 左右居中
mainTitleStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 上下居中
mainTitleStyle.setLocked(true);
//标题样式
XSSFFont titleFont = xwb.createFont();
titleFont.setFontName("宋体");
titleFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//字体加粗
titleFont.setFontHeightInPoints((short) 10);// 字体大小
XSSFCellStyle titleStyle = xwb.createCellStyle();
titleStyle.setFont(titleFont);
titleStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);// 左右居中
titleStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 上下居中
titleStyle.setFillForegroundColor(new XSSFColor(new Color(225, 225, 225)));
titleStyle.setFillBackgroundColor(new XSSFColor(new Color(225, 225, 225)));
titleStyle.setFillPattern(XSSFCellStyle.SPARSE_DOTS);
titleStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); // 下边框
titleStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);// 左边框
titleStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);// 上边框
titleStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);// 右边框
titleStyle.setLocked(true);
//内容样式
XSSFFont contentFont = xwb.createFont();
contentFont.setFontName("宋体");
contentFont.setFontHeightInPoints((short) 10);// 字体大小
XSSFCellStyle contentStyle = xwb.createCellStyle();
contentStyle.setFont(contentFont);
contentStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);// 左右居中
contentStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 上下居中
contentStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); // 下边框
contentStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);// 左边框
contentStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);// 上边框
contentStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);// 右边框
contentStyle.setWrapText(true);
contentStyle.setLocked(true);
//标题
LinkedHashMap<String, String> titleMap = new LinkedHashMap<>();
// titleMap.put("院区", "1,2");//一列两行
titleMap.put("日期", "1,2");
titleMap.put("结算金额", "4,1");
titleMap.put("单边账", "2,1");
titleMap.put("对账情况", "1,1");
//第二行标题
List<String> titleList2 = new ArrayList<>();
titleList2.add("第三方支付结算");
titleList2.add("HIS结算金额");
titleList2.add("三方单边账");
titleList2.add("HIS单边账");
titleList2.add("处理历史单边账金额");
titleList2.add("当日结算单边账条数");
titleList2.add("是否通过");
//内容key
List<String> contentKey = new ArrayList<>();
// contentKey.add("AREA");
contentKey.add("TRADE_DATE");
contentKey.add("THIRD_MONEY");
contentKey.add("HIS_MONEY");
contentKey.add("THIRD_UNILATERAL");
contentKey.add("HIS_UNILATERAL");
contentKey.add("MANAGER_HISTORY_UNILATERAL");
contentKey.add("UNILATERAL_NUM");
contentKey.add("STATUS_STR");
//定义列宽
sheet.setColumnWidth(0, 5000);
sheet.setColumnWidth(1, 5000);
sheet.setColumnWidth(2, 5000);
sheet.setColumnWidth(3, 5000);
sheet.setColumnWidth(4, 5000);
sheet.setColumnWidth(5, 5000);
sheet.setColumnWidth(6, 5000);
sheet.setColumnWidth(7, 5000);
// sheet.setColumnWidth(8, 5000);
//刚开始先创建大标题
//设置行单元格合并
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 7));
//创建工作表的行
XSSFRow mainRow = sheet.createRow(0);//设置第一行,从零开始
mainRow.setHeight((short) 375);
XSSFCell mainCell = mainRow.createCell(0);
mainCell.setCellStyle(mainTitleStyle);
mainCell.setCellValue(startTime + "~" + endTime + "对账结果表(金额单位:元)");
//创建标题行
XSSFRow titleRow1 = sheet.createRow(1);
XSSFRow titleRow2 = sheet.createRow(2);
int thisColNum = 0;
for (String title : titleMap.keySet()) {
String value = titleMap.get(title);
String[] split = value.split(",");
int colNum = Integer.parseInt(split[0]);
int rowNum = Integer.parseInt(split[1]);
XSSFCell cell = titleRow1.createCell(thisColNum);
cell.setCellStyle(titleStyle);
cell.setCellValue(title);
if (rowNum != 1) {
XSSFCell cell2 = titleRow2.createCell(thisColNum);
cell2.setCellStyle(titleStyle);
sheet.addMergedRegion(new CellRangeAddress(1, rowNum, thisColNum, thisColNum));
}
if (colNum != 1) {
for (int i = 1; i < colNum; i++) {
XSSFCell cell2 = titleRow1.createCell(thisColNum + i);
cell2.setCellStyle(titleStyle);
}
sheet.addMergedRegion(new CellRangeAddress(1, 1, thisColNum, thisColNum + colNum - 1));
}
//将大小加上 之后计算起始要用到
thisColNum = thisColNum + colNum;
}
//第二行标题
int title2StartCol = 1; //第二行标题开始列是第三列
for (int i = 0; i < titleList2.size(); i++) {
String title2 = titleList2.get(i);
XSSFCell cell2 = titleRow2.createCell(title2StartCol + i);
cell2.setCellStyle(titleStyle);
cell2.setCellValue(title2);
}
//循环内容
int startRow = 3; //标题加上抬头名称 共用了三行
for (int i = 0; i < list.size(); i++) {
int thisRow = startRow + i;
XSSFRow contentRow = sheet.createRow(thisRow);
HashMap<Object, Object> hashMap = list.get(i);
for (int j = 0; j < contentKey.size(); j++) {
String s = contentKey.get(j);
String content = StringDUtil.changeNullToEmpty(hashMap.get(s));
XSSFCell otherCell = contentRow.createCell(j);
otherCell.setCellStyle(contentStyle);
otherCell.setCellValue(content);
}
}
String randomStr = StringDUtil.generateRandomCodeForLength(4);
dlName = DateDUtil.DateToStr(DateDUtil.yyyyMMddHHmmss, new Date()) + randomStr;
fileName = dlName + ".xlsx";
String uploadPath = StatusDefine.filePath + "/ReconciliaionResult/";
File uploadPathFile = new File(uploadPath);
if (!uploadPathFile.exists()) uploadPathFile.mkdirs();
String savePath = uploadPath + fileName;
// 设置输入流
FileOutputStream fOut = new FileOutputStream(savePath);
// 将模板的内容写到输出文件上
xwb.write(fOut);
fOut.flush();
// 操作结束,关闭文件
fOut.close();
}
} catch (Exception e) {
errCode = "999";
errMsg = "未知异常:" + ExceptionDUtil.getDetailExceptionMsg(e);
LogUtil.error(this.getClass(), "@@@系统出错!【" + errMsg + "");
}
responseMap.put("errCode", errCode);
responseMap.put("errMsg", errMsg);
responseMap.put("dlName", "ReconciliaionResult/" + fileName);
return responseMap;
}
}