Commit a120e928 authored by chenzhao's avatar chenzhao

统计首页导出开发

parent 038eff36
......@@ -48,7 +48,7 @@ public enum StatisicsHomePageEnum {
融资户数("rzhs",36),
融资容量("rzrl",37),
融资单价("rzdj",38),
放款金额("fkje",30);
放款金额("fkje",39);
/**
* 名称,描述
*/
......
......@@ -40,5 +40,6 @@ public interface StatisticsHomepageMapper {
public Map<String,Object> stationNum(String developerCode, String regionalCompaniesCode, String province, String city, String district);
public String selectProvince (String regionSeq);
public List<Map<String,Object>> getRent (String regionalCompaniesCode);
}
......@@ -381,38 +381,44 @@
<select id="homePageExport" resultType="map">
SELECT
ph.regional_companies_name as regionalCompaniesName,
ph.developer_name developerName,
SUM( IFNULL(ei.real_scale,0)) AS realScale,
SUM( CASE WHEN ps.process_status = '不通过' THEN 1 ELSE 0 END ) AS kcwtg,
SUM( CASE WHEN ps.process_status = '进行中' THEN 1 ELSE 0 END ) AS kcjxz,
SUM( CASE WHEN ps.process_status = '完成' THEN 1 ELSE 0 END ) AS kcywc,
SUM( CASE WHEN ph.preparation_money_state = '备货完成' THEN 1 ELSE 0 END ) AS bhywc,
SUM( CASE WHEN ph.preparation_money_state = '待收货' THEN 1 ELSE 0 END ) AS bhjxz,
SUM( CASE WHEN ph.preparation_money_state = '待补货' THEN 1 ELSE 0 END ) AS bhwtg,
SUM( CASE WHEN wops.power_station_construction_status = '未通过' THEN 1 ELSE 0 END ) AS sgwtg,
SUM( CASE WHEN wops.power_station_construction_status = '未通过' THEN ei.real_scale ELSE 0 END ) AS sgwtgrl,
SUM( CASE WHEN wops.power_station_construction_status != '未通过' AND wops.power_station_construction_status != '已完工' AND wops.power_station_construction_status != '待施工' THEN 1 ELSE 0 END ) AS sgjxz,
SUM( CASE WHEN wops.power_station_construction_status != '未通过' AND wops.power_station_construction_status != '已完工' AND wops.power_station_construction_status != '待施工' THEN ei.real_scale ELSE 0 END ) AS sgjxzrl,
SUM( CASE WHEN wops.power_station_construction_status = '已完工' THEN 1 ELSE 0 END ) AS sgywc,
SUM( CASE WHEN wops.power_station_construction_status = '已完工' THEN ei.real_scale ELSE 0 END ) AS sgywcrl,
SUM( CASE WHEN br.grid_status = '4' THEN 1 ELSE 0 END ) AS bwwtg,
SUM( CASE WHEN br.grid_status = '4' THEN ei.real_scale ELSE 0 END ) AS bwwtgrl,
SUM( CASE WHEN br.grid_status != '4' AND br.grid_status != '3' AND br.grid_status != '1' THEN ei.real_scale ELSE 0 END ) AS bwjxz,
SUM( CASE WHEN br.grid_status != '4' AND br.grid_status != '3' AND br.grid_status != '1' THEN ei.real_scale ELSE 0 END ) AS bwjxzrl,
SUM( CASE WHEN br.grid_status = '3' THEN 1 ELSE 0 END ) AS bwywc,
SUM( CASE WHEN br.grid_status = '3' THEN ei.real_scale ELSE 0 END ) AS bwywcrl,
SUM( CASE WHEN ac.acceptance_check_status = '3' THEN 1 ELSE 0 END ) AS ysywc,
SUM( CASE WHEN ac.acceptance_check_status = '3' THEN ei.real_scale ELSE 0 END ) AS ysywcrl,
SUM( CASE WHEN ac.acceptance_check_status = '4' THEN 1 ELSE 0 END ) AS yswtg,
SUM( CASE WHEN ac.acceptance_check_status = '4' THEN ei.real_scale ELSE 0 END ) AS yswtgrl,
SUM( CASE WHEN ac.acceptance_check_status != '3' AND ac.acceptance_check_status != '4' AND ac.acceptance_check_status != '15' THEN 1 ELSE 0 END ) AS ysjxz,
SUM( CASE WHEN ac.acceptance_check_status != '3' AND ac.acceptance_check_status != '4' AND ac.acceptance_check_status != '15' THEN ei.real_scale ELSE 0 END ) AS ysjxzrl,
SUM(CASE WHEN fi.status = '放款完成' THEN 1 ELSE 0 END) as rzhs,
MAX(CASE WHEN fi.status = '放款完成' THEN fi.unit_price ELSE 0 END) as rzdj,
MAX(CASE WHEN fi.status = '放款完成' THEN fi.financing_companies_name ELSE ''END) as rzgs,
SUM(CASE WHEN fi.status = '放款完成' THEN fi.disbursement_money ELSE 0 END) as fkje,
SUM(CASE WHEN fi.status = '放款完成' THEN ei.real_scale ELSE 0 END) AS rzrl
ph.regional_companies_name AS regionalCompaniesName,
ph.developer_name AS developerName,
ROUND(COALESCE(SUM(IFNULL(ei.real_scale, 0))/1000, 0), 2) AS realScale,
SUM(CASE WHEN ps.process_status = '不通过' THEN 1 ELSE 0 END) AS kcwtg,
'' AS kcwtgrl,
SUM(CASE WHEN ps.process_status = '进行中' THEN 1 ELSE 0 END) AS kcjxz,
'' AS kcjxzrl,
SUM(CASE WHEN ps.process_status = '完成' THEN 1 ELSE 0 END) AS kcywc,
'' AS kcywcrl,
SUM(CASE WHEN ph.preparation_money_state = '备货完成' THEN 1 ELSE 0 END) AS bhywc,
'' AS bhywcrl,
SUM(CASE WHEN ph.preparation_money_state = '待收货' THEN 1 ELSE 0 END) AS bhjxz,
'' AS bhjxzrl,
SUM(CASE WHEN ph.preparation_money_state = '待补货' THEN 1 ELSE 0 END) AS bhwtg,
'' AS bhwtgrl,
SUM(CASE WHEN wops.power_station_construction_status = '未通过' THEN 1 ELSE 0 END) AS sgwtg,
SUM(CASE WHEN wops.power_station_construction_status = '未通过' THEN ROUND(COALESCE(ei.real_scale/1000, 0), 2) ELSE 0 END) AS sgwtgrl,
SUM(CASE WHEN wops.power_station_construction_status NOT IN ('未通过', '已完工', '待施工') THEN 1 ELSE 0 END) AS sgjxz,
ROUND(COALESCE( SUM(CASE WHEN wops.power_station_construction_status NOT IN ('未通过', '已完工', '待施工') THEN ei.real_scale/1000 ELSE 0 END), 0), 2) AS sgjxzrl,
SUM(CASE WHEN wops.power_station_construction_status = '已完工' THEN 1 ELSE 0 END) AS sgywc,
ROUND(COALESCE(SUM(CASE WHEN wops.power_station_construction_status = '已完工' THEN ei.real_scale/1000 ELSE 0 END) , 0), 2)AS sgywcrl,
SUM(CASE WHEN br.grid_status = '4' THEN 1 ELSE 0 END) AS bwwtg,
SUM(CASE WHEN br.grid_status = '4' THEN ROUND(COALESCE(ei.real_scale/1000, 0), 2) ELSE 0 END) AS bwwtgrl,
SUM(CASE WHEN br.grid_status NOT IN ('4', '3', '1') THEN 1 ELSE 0 END) AS bwjxz,
ROUND(COALESCE(SUM(CASE WHEN br.grid_status NOT IN ('4', '3', '1') THEN ei.real_scale/1000 ELSE 0 END), 0), 2) AS bwjxzrl,
SUM(CASE WHEN br.grid_status = '3' THEN 1 ELSE 0 END) AS bwywc,
ROUND(COALESCE(SUM(CASE WHEN br.grid_status = '3' THEN ei.real_scale/1000 ELSE 0 END), 0), 2) AS bwywcrl,
SUM(CASE WHEN ac.acceptance_check_status = '3' THEN 1 ELSE 0 END) AS ysywc,
ROUND(COALESCE(SUM(CASE WHEN ac.acceptance_check_status = '3' THEN ei.real_scale/1000 ELSE 0 END), 0), 2) AS ysywcrl,
SUM(CASE WHEN ac.acceptance_check_status = '4' THEN 1 ELSE 0 END) AS yswtg,
ROUND(COALESCE(SUM(CASE WHEN ac.acceptance_check_status = '4' THEN ei.real_scale/1000 ELSE 0 END), 0), 2) AS yswtgrl,
SUM(CASE WHEN ac.acceptance_check_status NOT IN ('3', '4', '15') THEN 1 ELSE 0 END) AS ysjxz,
ROUND(COALESCE(SUM(CASE WHEN ac.acceptance_check_status NOT IN ('3', '4', '15') THEN ei.real_scale/1000 ELSE 0 END), 0), 2) AS ysjxzrl,
SUM(CASE WHEN fi.status = '放款完成' THEN 1 ELSE 0 END) AS rzhs,
MAX(CASE WHEN fi.status = '放款完成' THEN fi.unit_price ELSE 0 END) AS rzdj,
MAX(CASE WHEN fi.status = '放款完成' THEN fi.financing_companies_name ELSE '' END) AS rzgs,
ROUND(COALESCE(SUM(CASE WHEN fi.status = '放款完成' THEN fi.disbursement_money ELSE 0 END), 0), 2) AS fkje,
ROUND(COALESCE(SUM(CASE WHEN fi.status = '放款完成' THEN ei.real_scale/1000 ELSE 0 END), 0), 2)AS rzrl
FROM
hygf_peasant_household ph
LEFT JOIN hygf_power_station ps ON ps.peasant_household_id = ph.sequence_nbr
......@@ -524,4 +530,21 @@
WHERE
pt.PARENT_ID = 0;
</select>
<select id="getRent" resultType="map">
SELECT
sum( CASE WHEN repay_state = '1' THEN rent ELSE 0 END ) yhk,
sum( CASE WHEN repay_state = '0' THEN rent ELSE 0 END ) sywhk,
sum( CASE WHEN repay_state = '0' AND ( YEAR ( repay_date ) = YEAR ( CURDATE())) THEN rent ELSE 0 END ) jnwhk,
max(regional_companies_code) regionalCompaniesCode
FROM
`hygf_repayment`
<where>
<if test="regionalCompaniesCode != null and regionalCompaniesCode != ''">
regional_companies_code = #{regionalCompaniesCode}
</if>
</where>
GROUP BY
regional_companies_code
</select>
</mapper>
\ No newline at end of file
......@@ -13,6 +13,7 @@ import com.yeejoin.amos.boot.module.hygf.api.mapper.StatisticsHomepageMapper;
import org.apache.activemq.util.MapHelper;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.RegionUtil;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFSheet;
......@@ -314,24 +315,109 @@ public class StatisticsHomepageServiceImpl {
Sheet firstSheet = workbook.getSheetAt(0);
fillSheet(firstSheet, maps);
int startNum = 4;
List<Map<String, Object>> rent = statisticsHomepageMapper.getRent(null);
for (Map<String, Object> map : merCountMap) {
if (!map.get("total").toString().equals("1")){
int total = Integer.valueOf(map.get("total").toString()) -1 ;
int endNum = startNum+total;
String regionName = statisticsHomepageMapper.selectProvince(map.get("regionSeq").toString());
firstSheet.getRow(startNum).getCell(1).setCellValue(regionName);
if ( firstSheet.getRow(startNum) != null){
Cell cell = firstSheet.getRow(startNum).createCell(1);
cell.setCellValue(regionName);
applyBorder(cell);
boolean flag = true;
for (Map<String, Object> stringObjectMap : rent) {
if (stringObjectMap.get("regionalCompaniesCode").equals(map.get("regionalCompaniesCode"))){
Cell cell3 = firstSheet.getRow(startNum).createCell(40);
cell3.setCellValue(stringObjectMap.get("yhk").toString());
applyBorder(cell3);
Cell cell1 = firstSheet.getRow(startNum).createCell(41);
cell1.setCellValue(stringObjectMap.get("jnwhk").toString());
applyBorder(cell1);
Cell cell2 = firstSheet.getRow(startNum).createCell(42);
cell2.setCellValue(stringObjectMap.get("sywhk").toString());
applyBorder(cell2);
flag = false;
}
}
if (flag){
Cell cell3 = firstSheet.getRow(startNum).createCell(40);
cell3.setCellValue(0);
applyBorder(cell3);
Cell cell1 = firstSheet.getRow(startNum).createCell(41);
cell1.setCellValue(0);
applyBorder(cell1);
Cell cell2 = firstSheet.getRow(startNum).createCell(42);
cell2.setCellValue(0);
applyBorder(cell2);
}
CellRangeAddress cellRangeAddress2 = new CellRangeAddress(startNum, endNum, 1, 1);
CellRangeAddress cellRangeAddress = new CellRangeAddress(startNum, endNum, 2, 2);
CellRangeAddress cellRangeAddress1 = new CellRangeAddress(startNum, endNum, 35, 35);
CellRangeAddress cellRangeAddress3 = new CellRangeAddress(startNum, endNum, 40, 40);
CellRangeAddress cellRangeAddress4 = new CellRangeAddress(startNum, endNum, 41, 41);
CellRangeAddress cellRangeAddress5 = new CellRangeAddress(startNum, endNum, 42, 42);
firstSheet.addMergedRegion(cellRangeAddress);
firstSheet.addMergedRegion(cellRangeAddress1);
firstSheet.addMergedRegion(cellRangeAddress2);
firstSheet.addMergedRegion(cellRangeAddress3);
firstSheet.addMergedRegion(cellRangeAddress4);
firstSheet.addMergedRegion(cellRangeAddress5);
applyBorderToMergedRegion(firstSheet,cellRangeAddress2);
applyBorderToMergedRegion(firstSheet,cellRangeAddress );
applyBorderToMergedRegion(firstSheet,cellRangeAddress1);
applyBorderToMergedRegion(firstSheet,cellRangeAddress3);
applyBorderToMergedRegion(firstSheet,cellRangeAddress4);
applyBorderToMergedRegion(firstSheet,cellRangeAddress5);
startNum = endNum +1;
}
}else {
String regionName = statisticsHomepageMapper.selectProvince(map.get("regionSeq").toString());
if ( firstSheet.getRow(startNum) != null) {
Cell cell = firstSheet.getRow(startNum).createCell(1);
cell.setCellValue(regionName);
applyBorder(cell);
boolean flag = true;
for (Map<String, Object> stringObjectMap : rent) {
if (stringObjectMap.get("regionalCompaniesCode").equals(map.get("regionalCompaniesCode"))){
Cell cell3 = firstSheet.getRow(startNum).createCell(40);
cell3.setCellValue(stringObjectMap.get("yhk").toString());
applyBorder(cell3);
Cell cell1 = firstSheet.getRow(startNum).createCell(41);
cell1.setCellValue(stringObjectMap.get("jnwhk").toString());
applyBorder(cell1);
Cell cell2 = firstSheet.getRow(startNum).createCell(42);
cell2.setCellValue(stringObjectMap.get("sywhk").toString());
applyBorder(cell2);
}
}
if (flag){
Cell cell3 = firstSheet.getRow(startNum).createCell(40);
cell3.setCellValue(0);
applyBorder(cell3);
Cell cell1 = firstSheet.getRow(startNum).createCell(41);
cell1.setCellValue(0);
applyBorder(cell1);
Cell cell2 = firstSheet.getRow(startNum).createCell(42);
cell2.setCellValue(0);
applyBorder(cell2);
}
startNum +=1;
}
}
}
autoSizeColumns(firstSheet);
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("统计数据.xlsx", "UTF-8"));
response.setHeader("content-Type", "application/vnd.ms-excel");
response.flushBuffer();
......@@ -349,37 +435,48 @@ public class StatisticsHomepageServiceImpl {
Map<String, List<Integer>> merList = new HashMap<>();
for (int dataIndex = 0; dataIndex < data.size(); dataIndex++) {
Row dataRow = sheet.createRow(startRow + dataIndex);
dataRow.createCell(0).setCellValue(dataIndex+1);
Cell cell = dataRow.createCell(0);
cell.setCellValue(dataIndex+1);
applyBorder(cell);
Map<String, Object> result = (Map<String, Object>) data.get(dataIndex);
for (String key : result.keySet()) {
Cell dataCell = dataRow.createCell(StatisicsHomePageEnum.getCodeByName(key));
dataCell.setCellValue(result.get(key).toString());
applyBorder(dataCell);
}
}
}
private void autoSizeColumns(Sheet sheet) {
for (int i = 0; i < sheet.getRow(0).getLastCellNum(); i++) {
if (i<35){
sheet.autoSizeColumn(i);
}
public static List<Map<String, Object>> convertList(List<Object> objectList) {
List<Map<String, Object>> result = new ArrayList<>();
for (Object obj : objectList) {
if (obj != null) {
Map<String, Object> map = new HashMap<>();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true); // 允许访问私有字段(如果需要)
try {
map.put(field.getName(), field.get(obj));
} catch (IllegalAccessException e) {
e.printStackTrace();
// 可以选择记录日志或抛出异常
}
}
result.add(map);
private void applyBorder(Cell cell) {
Workbook workbook = cell.getSheet().getWorkbook();
CellStyle style = cell.getCellStyle();
if (style == null) {
style = workbook.createCellStyle();
}
style.setBorderTop(BorderStyle.THIN);
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
cell.setCellStyle(style);
}
}
return result;
private void applyBorderToMergedRegion(Sheet sheet, CellRangeAddress mergedRegion) {
RegionUtil.setBorderBottom(BorderStyle.THIN,mergedRegion,sheet);
RegionUtil.setBorderTop(BorderStyle.THIN,mergedRegion,sheet);
RegionUtil.setBorderLeft(BorderStyle.THIN,mergedRegion,sheet);
RegionUtil.setBorderRight(BorderStyle.THIN,mergedRegion,sheet);
}
}
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