Browse Source

入住信息统计

夏文涛 1 year ago
parent
commit
eae568e179

+ 8 - 0
src/main/java/com/template/api/CensusControllerAPI.java

@@ -22,7 +22,15 @@ public interface CensusControllerAPI {
     @ApiOperation(value = "床位分配统计", notes = "床位分配统计", httpMethod = "GET")
     CommonResult queryBedTotal(Integer collegeId, String sex);
 
+    @GetMapping(value = "bedTotalExport")
+    @ApiOperation(value = "导出床位分配统计数据", notes = "导出床位分配统计数据", httpMethod = "GET")
+    void bedTotalExport(HttpServletResponse response, Integer collegeId, String sex);
+
     @GetMapping(value = "/queryCheckTotal")
     @ApiOperation(value = "床位入住统计", notes = "床位入住统计", httpMethod = "GET")
     CommonResult queryCheckTotal(Integer collegeId, String sex);
+
+    @GetMapping(value = "checkTotalExport")
+    @ApiOperation(value = "导出床位入住统计数据", notes = "导出床位入住统计数据", httpMethod = "GET")
+    void checkTotalExport(HttpServletResponse response, Integer collegeId, String sex);
 }

+ 138 - 7
src/main/java/com/template/controller/CensusController.java

@@ -18,6 +18,10 @@ import com.template.model.result.CommonResult;
 import com.template.model.result.Wx_user;
 import com.template.model.vo.*;
 import com.template.services.*;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -95,6 +99,67 @@ public class CensusController implements CensusControllerAPI {
         return CommonResult.ok(result);
     }
 
+    @Override
+    public void bedTotalExport(HttpServletResponse response, Integer collegeId, String sex) {
+        List<BedTotalVo> result = new ArrayList<>();
+        List<WelcomeOrg> orgs = welcomeOrgService.queryColleges();
+        List<BedSqlTotalVo> sqlDatas = welcomeBedService.queryBedSqlList(collegeId, sex);
+        List<String> sexs = new ArrayList<>();
+        sexs.add("男");
+        sexs.add("女");
+        for (WelcomeOrg org : orgs) {
+            for (String sexStr :sexs){
+                BedTotalVo btv = new BedTotalVo();
+                btv.setCollege(org.getName());
+                btv.setSex(sexStr);
+                List<BedSqlTotalVo> sqlDataCs = sqlDatas.stream().filter(e -> e.getCollege().equals(org.getName()) && e.getSex().equals(sexStr)).collect(Collectors.toList());
+                if(sqlDataCs != null && sqlDataCs.size() > 0){
+                    int totalData = sqlDataCs.get(0).getTotalData() == null ? 0 : sqlDataCs.get(0).getTotalData();
+                    btv.setTotal(totalData);//总人数
+                    int bedTotals = 0;
+                    for (BedSqlTotalVo d:sqlDataCs) {
+                        bedTotals = bedTotals + d.getTotalBed();
+                    }
+                    btv.setAssignedBed(bedTotals);//已分配床
+                    btv.setAssignedDormitory(sqlDataCs.size());//已分配寝室
+                    int buildCount = (int)sqlDataCs.stream().map(BedSqlTotalVo::getBuild).distinct().count();
+                    btv.setAssignedBuild(buildCount);//已分配楼栋
+                }else{
+                    btv.setTotal(0);
+                    btv.setAssignedBed(0);//已分配床
+                    btv.setAssignedDormitory(0);//已分配寝室
+                    btv.setAssignedBuild(0);//已分配楼栋
+                }
+                result.add(btv);
+            }
+        }
+        //导出
+        Workbook workbook = new XSSFWorkbook();
+        Sheet sheet = workbook.createSheet("床位分配统计");
+
+        Row headerRow = sheet.createRow(0);
+        headerRow.createCell(0).setCellValue("序号");
+        headerRow.createCell(1).setCellValue("学院名称");
+        headerRow.createCell(2).setCellValue("性别");
+        headerRow.createCell(3).setCellValue("总人数");
+        headerRow.createCell(4).setCellValue("已分配床位数");
+        headerRow.createCell(5).setCellValue("已分配寝室数");
+        headerRow.createCell(6).setCellValue("已分配楼栋数");
+        for (int i = 0; i < result.size(); i++) {
+            BedTotalVo bedData = result.get(i);
+            Row dataRow = sheet.createRow(i + 1);
+            dataRow.createCell(0).setCellValue(i + 1);
+            dataRow.createCell(1).setCellValue(bedData.getCollege());
+            dataRow.createCell(2).setCellValue(bedData.getSex());
+            dataRow.createCell(3).setCellValue(bedData.getTotal());
+            dataRow.createCell(4).setCellValue(bedData.getAssignedBed());
+            dataRow.createCell(5).setCellValue(bedData.getAssignedDormitory());
+            dataRow.createCell(6).setCellValue(bedData.getAssignedBuild());
+        }
+        // 将工作簿写入文件
+        ExcelUtils.excelDownload(workbook, "床位分配统计.xlsx", response);
+    }
+
     //    #总人数 totalData
     //    #已入住人数 sleeper
     //    #未入住人数 = 总人数 - 已入住人数
@@ -126,21 +191,87 @@ public class CensusController implements CensusControllerAPI {
                     int totalBed = sqlDataCs.get(0).getTotalBed() == null ? 0 : sqlDataCs.get(0).getTotalBed();
                     btv.setTotalData(toalData);//总人数
                     btv.setSleeper(sleeper);//已入住人数
-                    btv.setUnSleeper(toalData - sleeper);//未入住人数
-                    btv.setSleeper(totalBed);//总床数
-                    btv.setSleeper(sleeper);//已入住床位数
-                    btv.setSleeper(totalBed - sleeper);//未入住床位数
+                    btv.setUnSleeper((toalData - sleeper) < 0 ? 0 : (toalData - sleeper));//未入住人数
+                    btv.setTotalBed(totalBed);//总床数
+                    btv.setSleepBed(sleeper);//已入住床位数
+                    btv.setUnSleepBed((totalBed - sleeper) < 0 ? 0 : (totalBed - sleeper));//未入住床位数
                 }else{
                     btv.setTotalData(0);//总人数
                     btv.setSleeper(0);//已入住人数
                     btv.setUnSleeper(0);//未入住人数
-                    btv.setSleeper(0);//总床数
-                    btv.setSleeper(0);//已入住床位数
-                    btv.setSleeper(0);//未入住床位数
+                    btv.setTotalBed(0);//总床数
+                    btv.setSleepBed(0);//已入住床位数
+                    btv.setUnSleepBed(0);//未入住床位数
                 }
                 result.add(btv);
             }
         }
         return CommonResult.ok(result);
     }
+
+    @Override
+    public void checkTotalExport(HttpServletResponse response, Integer collegeId, String sex) {
+        List<SleepTotalVo> result = new ArrayList<>();
+        List<WelcomeOrg> orgs = welcomeOrgService.queryColleges();
+        List<SleepSqlTotalVo> sqlDatas = welcomeBedService.queryTotalSqlList(collegeId, sex);
+        List<String> sexs = new ArrayList<>();
+        sexs.add("男");
+        sexs.add("女");
+        for (WelcomeOrg org : orgs) {
+            for (String sexStr :sexs){
+                SleepTotalVo btv = new SleepTotalVo();
+                btv.setCollege(org.getName());
+                btv.setSex(sexStr);
+                List<SleepSqlTotalVo> sqlDataCs = sqlDatas.stream().filter(e -> e.getCollege().equals(org.getName()) && e.getSex().equals(sexStr)).collect(Collectors.toList());
+                if(sqlDataCs != null && sqlDataCs.size() > 0){
+                    int toalData =sqlDataCs.get(0).getTotalData() == null ? 0 : sqlDataCs.get(0).getTotalData();
+                    int sleeper = sqlDataCs.get(0).getSleeper() == null ? 0 : sqlDataCs.get(0).getSleeper();
+                    int totalBed = sqlDataCs.get(0).getTotalBed() == null ? 0 : sqlDataCs.get(0).getTotalBed();
+                    btv.setTotalData(toalData);//总人数
+                    btv.setSleeper(sleeper);//已入住人数
+                    btv.setUnSleeper((toalData - sleeper) < 0 ? 0 : (toalData - sleeper));//未入住人数
+                    btv.setTotalBed(totalBed);//总床数
+                    btv.setSleepBed(sleeper);//已入住床位数
+                    btv.setUnSleepBed((totalBed - sleeper) < 0 ? 0 : (totalBed - sleeper));//未入住床位数
+                }else{
+                    btv.setTotalData(0);//总人数
+                    btv.setSleeper(0);//已入住人数
+                    btv.setUnSleeper(0);//未入住人数
+                    btv.setTotalBed(0);//总床数
+                    btv.setSleepBed(0);//已入住床位数
+                    btv.setUnSleepBed(0);//未入住床位数
+                }
+                result.add(btv);
+            }
+        }
+        //导出
+        Workbook workbook = new XSSFWorkbook();
+        Sheet sheet = workbook.createSheet("床位入住统计");
+
+        Row headerRow = sheet.createRow(0);
+        headerRow.createCell(0).setCellValue("序号");
+        headerRow.createCell(1).setCellValue("学院名称");
+        headerRow.createCell(2).setCellValue("性别");
+        headerRow.createCell(3).setCellValue("总人数");
+        headerRow.createCell(4).setCellValue("已入住人数");
+        headerRow.createCell(5).setCellValue("未入住人数");
+        headerRow.createCell(6).setCellValue("总床位数");
+        headerRow.createCell(7).setCellValue("已入住床位数");
+        headerRow.createCell(8).setCellValue("未入住床位数");
+        for (int i = 0; i < result.size(); i++) {
+            SleepTotalVo bedData = result.get(i);
+            Row dataRow = sheet.createRow(i + 1);
+            dataRow.createCell(0).setCellValue(i + 1);
+            dataRow.createCell(1).setCellValue(bedData.getCollege());
+            dataRow.createCell(2).setCellValue(bedData.getSex());
+            dataRow.createCell(3).setCellValue(bedData.getTotalData());
+            dataRow.createCell(4).setCellValue(bedData.getSleeper());
+            dataRow.createCell(5).setCellValue(bedData.getUnSleeper());
+            dataRow.createCell(6).setCellValue(bedData.getTotalBed());
+            dataRow.createCell(7).setCellValue(bedData.getSleepBed());
+            dataRow.createCell(8).setCellValue(bedData.getUnSleepBed());
+        }
+        // 将工作簿写入文件
+        ExcelUtils.excelDownload(workbook, "床位入住统计.xlsx", response);
+    }
 }

+ 1 - 1
src/main/resources/mapper/template/WelcomeBedMapper.xml

@@ -116,7 +116,7 @@
     </select>
 
 
-    <resultMap type="com.template.model.vo.BedSqlTotalVo" id="queryTotalSqlMap">
+    <resultMap type="com.template.model.vo.SleepSqlTotalVo" id="queryTotalSqlMap">
         <result property="totalBed" column="totalBed"/>
         <result property="sleeper" column="sleeper"/>
         <result property="totalData" column="totalData"/>