Procházet zdrojové kódy

住宿信息统计

夏文涛 před 1 rokem
rodič
revize
8623602859

+ 1 - 1
src/main/java/com/template/api/CensusControllerAPI.java

@@ -20,7 +20,7 @@ public interface CensusControllerAPI {
 
 
     @GetMapping(value = "/queryBedTotal")
     @GetMapping(value = "/queryBedTotal")
     @ApiOperation(value = "床位分配统计", notes = "床位分配统计", httpMethod = "GET")
     @ApiOperation(value = "床位分配统计", notes = "床位分配统计", httpMethod = "GET")
-    CommonResult payResult(Integer collegeId, String sex);
+    CommonResult queryBedTotal(Integer collegeId, String sex);
 
 
     @GetMapping(value = "/queryCheckTotal")
     @GetMapping(value = "/queryCheckTotal")
     @ApiOperation(value = "床位入住统计", notes = "床位入住统计", httpMethod = "GET")
     @ApiOperation(value = "床位入住统计", notes = "床位入住统计", httpMethod = "GET")

+ 83 - 3
src/main/java/com/template/controller/CensusController.java

@@ -31,6 +31,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.net.URLEncoder;
 import java.net.URLEncoder;
 import java.util.*;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * @Author: binguo
  * @Author: binguo
@@ -41,11 +42,57 @@ import java.util.*;
 @RestController
 @RestController
 public class CensusController implements CensusControllerAPI {
 public class CensusController implements CensusControllerAPI {
 
 
+    @Autowired
+    private WelcomeBedService welcomeBedService;
 
 
+    @Autowired
+    private WelcomeOrgService welcomeOrgService;
+
+    // #分配
+    // #总人数 totalData
+    // #已分配床位数 根据性别、学院求和的 totalBed
+    // #已分配寝室数
+    // select (select sum(1) as total from welcome_student where deleted = 0 and college = wb.college and iden_type = 1) as totalData,
+    // SUM(1) as totalBed,college,sex,build,dormitory
+    // from welcome_bed wb
+    // where wb.deleted = 0 and wb.college is not null and wb.college != ''
+    // group by wb.college,wb.sex,wb.build,wb.dormitory
     @Override
     @Override
-    public CommonResult payResult(Integer collegeId, String sex) {
+    public CommonResult queryBedTotal(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);
+            }
+        }
 
 
-        return null;
+        return CommonResult.ok(result);
     }
     }
 
 
     //    #总人数 totalData
     //    #总人数 totalData
@@ -61,6 +108,39 @@ public class CensusController implements CensusControllerAPI {
     //    group by wb.college,wb.sex
     //    group by wb.college,wb.sex
     @Override
     @Override
     public CommonResult queryCheckTotal(Integer collegeId, String sex) {
     public CommonResult queryCheckTotal(Integer collegeId, String sex) {
-        return null;
+        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);//未入住人数
+                    btv.setSleeper(totalBed);//总床数
+                    btv.setSleeper(sleeper);//已入住床位数
+                    btv.setSleeper(totalBed - sleeper);//未入住床位数
+                }else{
+                    btv.setTotalData(0);//总人数
+                    btv.setSleeper(0);//已入住人数
+                    btv.setUnSleeper(0);//未入住人数
+                    btv.setSleeper(0);//总床数
+                    btv.setSleeper(0);//已入住床位数
+                    btv.setSleeper(0);//未入住床位数
+                }
+                result.add(btv);
+            }
+        }
+        return CommonResult.ok(result);
     }
     }
 }
 }

+ 6 - 0
src/main/java/com/template/mapper/WelcomeBedMapper.java

@@ -3,6 +3,8 @@ package com.template.mapper;
 import com.template.model.pojo.WelcomeBed;
 import com.template.model.pojo.WelcomeBed;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.template.model.vo.BedDetailsVo;
 import com.template.model.vo.BedDetailsVo;
+import com.template.model.vo.BedSqlTotalVo;
+import com.template.model.vo.SleepSqlTotalVo;
 import com.template.model.vo.WelcomeBedCheckVo;
 import com.template.model.vo.WelcomeBedCheckVo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 import org.springframework.stereotype.Repository;
@@ -25,4 +27,8 @@ public interface WelcomeBedMapper extends BaseMapper<WelcomeBed> {
     BedDetailsVo getBedDetailsVo(@Param("schoolId") Integer schoolId, @Param("buildId") Integer buildId, @Param("dormitoryId") Integer dormitoryId, @Param("studentCard") String studentCard);
     BedDetailsVo getBedDetailsVo(@Param("schoolId") Integer schoolId, @Param("buildId") Integer buildId, @Param("dormitoryId") Integer dormitoryId, @Param("studentCard") String studentCard);
 
 
     WelcomeBedCheckVo isCheck(@Param("studentCard") String studentCard);
     WelcomeBedCheckVo isCheck(@Param("studentCard") String studentCard);
+
+    List<BedSqlTotalVo> queryBedSqlList(@Param("collegeId") Integer collegeId,@Param("sex") String sex);
+
+    List<SleepSqlTotalVo> queryTotalSqlList(@Param("collegeId") Integer collegeId,@Param("sex") String sex);
 }
 }

+ 31 - 0
src/main/java/com/template/model/vo/BedSqlTotalVo.java

@@ -0,0 +1,31 @@
+package com.template.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author: xwt
+ * @Date: 2025/6/16 星期一 11:28
+ * @Description: com.template.model.vo
+ * @Version: 1.0
+ */
+@Data
+public class BedSqlTotalVo {
+    @ApiModelProperty(value = "总人数")
+    private Integer totalData;
+
+    @ApiModelProperty(value = "已分配床位数")
+    private Integer totalBed;
+
+    @ApiModelProperty(value = "学院")
+    private String college;
+
+    @ApiModelProperty(value = "性别")
+    private String sex;
+
+    @ApiModelProperty(value = "楼栋")
+    private String build;
+
+    @ApiModelProperty(value = "寝室")
+    private String dormitory;
+}

+ 31 - 0
src/main/java/com/template/model/vo/BedTotalVo.java

@@ -0,0 +1,31 @@
+package com.template.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author: xwt
+ * @Date: 2025/6/16 星期一 11:28
+ * @Description: com.template.model.vo
+ * @Version: 1.0
+ */
+@Data
+public class BedTotalVo {
+    @ApiModelProperty(value = "学院名称")
+    private String college;
+
+    @ApiModelProperty(value = "性别")
+    private String sex;
+
+    @ApiModelProperty(value = "总人数")
+    private Integer total;
+
+    @ApiModelProperty(value = "已分配床位数")
+    private Integer assignedBed;
+
+    @ApiModelProperty(value = "已分配寝室数")
+    private Integer assignedDormitory;
+
+    @ApiModelProperty(value = "已分配楼栋数")
+    private Integer assignedBuild;
+}

+ 29 - 0
src/main/java/com/template/model/vo/SleepSqlTotalVo.java

@@ -0,0 +1,29 @@
+package com.template.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author: xwt
+ * @Date: 2025/6/16 星期一 11:28
+ * @Description: com.template.model.vo
+ * @Version: 1.0
+ */
+@Data
+public class SleepSqlTotalVo {
+    @ApiModelProperty(value = "总床数")
+    private Integer totalBed;
+
+    @ApiModelProperty(value = "已入住人数")
+    private Integer sleeper;
+
+    @ApiModelProperty(value = "总人数")
+    private Integer totalData;
+
+    @ApiModelProperty(value = "学院")
+    private String college;
+
+    @ApiModelProperty(value = "性别")
+    private String sex;
+
+}

+ 38 - 0
src/main/java/com/template/model/vo/SleepTotalVo.java

@@ -0,0 +1,38 @@
+package com.template.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author: xwt
+ * @Date: 2025/6/16 星期一 11:28
+ * @Description: com.template.model.vo
+ * @Version: 1.0
+ */
+@Data
+public class SleepTotalVo {
+    @ApiModelProperty(value = "学院")
+    private String college;
+
+    @ApiModelProperty(value = "性别")
+    private String sex;
+
+    @ApiModelProperty(value = "总人数")
+    private Integer totalData;
+
+    @ApiModelProperty(value = "已入住人数")
+    private Integer sleeper;
+
+    @ApiModelProperty(value = "未入住人数")
+    private Integer unSleeper;
+
+    @ApiModelProperty(value = "总床数")
+    private Integer totalBed;
+
+    @ApiModelProperty(value = "已入住床位数")
+    private Integer sleepBed;
+
+    @ApiModelProperty(value = "未入住床位数")
+    private Integer unSleepBed;
+
+}

+ 10 - 4
src/main/java/com/template/services/WelcomeBedService.java

@@ -5,13 +5,15 @@ import com.template.model.pojo.WelcomeBed;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.template.model.result.PageUtils;
 import com.template.model.result.PageUtils;
 import com.template.model.vo.BedDetailsVo;
 import com.template.model.vo.BedDetailsVo;
+import com.template.model.vo.BedSqlTotalVo;
+import com.template.model.vo.SleepSqlTotalVo;
 import com.template.model.vo.WelcomeBedCheckVo;
 import com.template.model.vo.WelcomeBedCheckVo;
 
 
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
  * <p>
  * <p>
- *  服务类
+ * 服务类
  * </p>
  * </p>
  *
  *
  * @author ceshi
  * @author ceshi
@@ -22,15 +24,15 @@ public interface WelcomeBedService extends IService<WelcomeBed> {
 
 
     int updateWelcomeBed(WelcomeBed rns);
     int updateWelcomeBed(WelcomeBed rns);
 
 
-    PageUtils<WelcomeBed> queryPageWelcomeBeds(int currentPage, int pageCount, Integer schoolId, Integer buildId, Integer dormitoryId, String sex, Integer isCheck, Integer collegeId, Integer majorId, Integer classstrId,Integer retentionState);
+    PageUtils<WelcomeBed> queryPageWelcomeBeds(int currentPage, int pageCount, Integer schoolId, Integer buildId, Integer dormitoryId, String sex, Integer isCheck, Integer collegeId, Integer majorId, Integer classstrId, Integer retentionState);
 
 
     int deleteWelcomeBedById(int id);
     int deleteWelcomeBedById(int id);
 
 
     WelcomeBed getBedById(int id);
     WelcomeBed getBedById(int id);
 
 
-    WelcomeBed queryBedData(String school,Integer buildId,Integer dormitoryId,Integer number);
+    WelcomeBed queryBedData(String school, Integer buildId, Integer dormitoryId, Integer number);
 
 
-    List<WelcomeBed> queryPageWelcomeBeds( Integer schoolId, Integer buildId, Integer dormitoryId, String sex, Integer isCheck, Integer collegeId, Integer majorId, Integer classstrId);
+    List<WelcomeBed> queryPageWelcomeBeds(Integer schoolId, Integer buildId, Integer dormitoryId, String sex, Integer isCheck, Integer collegeId, Integer majorId, Integer classstrId);
 
 
     WelcomeBed getBedByCardId(String studentCard);
     WelcomeBed getBedByCardId(String studentCard);
 
 
@@ -51,4 +53,8 @@ public interface WelcomeBedService extends IService<WelcomeBed> {
     PageUtils<WelcomeBed> studentAccommodationPage(int currentPage, int pageCount, Integer schoolId, Integer buildId, Integer dormitoryId, Integer collegeId, Integer majorId, Integer classstrId, String name);
     PageUtils<WelcomeBed> studentAccommodationPage(int currentPage, int pageCount, Integer schoolId, Integer buildId, Integer dormitoryId, Integer collegeId, Integer majorId, Integer classstrId, String name);
 
 
     List<WelcomeBed> studentAccommodationList(Integer schoolId, Integer buildId, Integer dormitoryId, Integer collegeId, Integer majorId, Integer classstrId, String name);
     List<WelcomeBed> studentAccommodationList(Integer schoolId, Integer buildId, Integer dormitoryId, Integer collegeId, Integer majorId, Integer classstrId, String name);
+
+    List<BedSqlTotalVo> queryBedSqlList(Integer collegeId, String sex);
+
+    List<SleepSqlTotalVo> queryTotalSqlList(Integer collegeId, String sex);
 }
 }

+ 14 - 0
src/main/java/com/template/services/impl/WelcomeBedServiceImpl.java

@@ -10,6 +10,8 @@ import com.template.model.pojo.WelcomeBed;
 import com.template.mapper.WelcomeBedMapper;
 import com.template.mapper.WelcomeBedMapper;
 import com.template.model.result.PageUtils;
 import com.template.model.result.PageUtils;
 import com.template.model.vo.BedDetailsVo;
 import com.template.model.vo.BedDetailsVo;
+import com.template.model.vo.BedSqlTotalVo;
+import com.template.model.vo.SleepSqlTotalVo;
 import com.template.model.vo.WelcomeBedCheckVo;
 import com.template.model.vo.WelcomeBedCheckVo;
 import com.template.services.WelcomeBedService;
 import com.template.services.WelcomeBedService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -208,4 +210,16 @@ public class WelcomeBedServiceImpl extends ServiceImpl<WelcomeBedMapper, Welcome
         return result;
         return result;
     }
     }
 
 
+    @Override
+    public List<BedSqlTotalVo> queryBedSqlList(Integer collegeId, String sex) {
+        List<BedSqlTotalVo> result = welcomeBedMapper.queryBedSqlList(collegeId, sex);
+        return result;
+    }
+
+    @Override
+    public List<SleepSqlTotalVo> queryTotalSqlList(Integer collegeId, String sex) {
+        List<SleepSqlTotalVo> result = welcomeBedMapper.queryTotalSqlList(collegeId, sex);
+        return result;
+    }
+
 }
 }

+ 47 - 0
src/main/resources/mapper/template/WelcomeBedMapper.xml

@@ -76,4 +76,51 @@
             wb.deleted =0
             wb.deleted =0
           AND wb.student_card= #{studentCard}
           AND wb.student_card= #{studentCard}
     </select>
     </select>
+
+
+    <resultMap type="com.template.model.vo.BedSqlTotalVo" id="queryBedSqlMap">
+        <result property="totalData" column="totalData"/>
+        <result property="totalBed" column="totalBed"/>
+        <result property="college" column="college"/>
+        <result property="sex" column="sex"/>
+        <result property="build" column="build"/>
+        <result property="dormitory" column="dormitory"/>
+    </resultMap>
+
+    <select id="queryBedSqlList" resultType="com.template.model.vo.BedSqlTotalVo" resultMap="queryBedSqlMap">
+        select (select sum(1) as total from welcome_student where deleted = 0 and college = wb.college and iden_type = 1 and sex = wb.sex) as totalData,
+        SUM(1) as totalBed,college,sex,build,dormitory
+        from welcome_bed wb
+        where wb.deleted = 0 and wb.college is not null and wb.college != ''
+        <if test="collegeId != null and collegeId != ''">
+            and wb.college_id = #{collegeId}
+        </if>
+        <if test="sex != null and sex != ''">
+            and wb.sex = #{sex}
+        </if>
+        group by wb.college,wb.sex,wb.build,wb.dormitory
+    </select>
+
+
+    <resultMap type="com.template.model.vo.BedSqlTotalVo" id="queryTotalSqlMap">
+        <result property="totalBed" column="totalBed"/>
+        <result property="sleeper" column="sleeper"/>
+        <result property="totalData" column="totalData"/>
+        <result property="college" column="college"/>
+        <result property="sex" column="sex"/>
+    </resultMap>
+
+    <select id="queryTotalSqlList" resultType="com.template.model.vo.SleepSqlTotalVo" resultMap="queryTotalSqlMap">
+        select SUM(1) as totalBed,
+        (select SUM(1) as total from welcome_bed where deleted = 0 and `name` is not null and name != '' and college = wb.college and sex = wb.sex) as sleeper,
+        (select sum(1) as total from welcome_student where deleted = 0 and college = wb.college and iden_type = 1 and sex = wb.sex) as totalData,wb.college,wb.sex from welcome_bed wb
+        where wb.deleted = 0 and wb.college is not null
+        <if test="collegeId != null and collegeId != ''">
+            and wb.college_id = #{collegeId}
+        </if>
+        <if test="sex != null and sex != ''">
+            and wb.sex = #{sex}
+        </if>
+        group by wb.college,wb.sex
+    </select>
 </mapper>
 </mapper>