实体层
package com.slwvote.system.domain.community;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.slwvote.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.math.BigDecimal;
import java.util.List;
/**
* 楼栋表
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@TableName("cu_building")
public class Building extends BaseEntity {
/**
* 楼栋ID
*/
@JsonFormat(shape = JsonFormat.Shape.STRING)
@TableId(value = "building_id")
private Long buildingId;
/**
* 楼栋编码
*/
private String buildingCode;
/**
* 楼栋名称
*/
private String buildingName;
/**
* 楼层数
*/
private Long floorNumber;
/**
* 户数
*/
private Long households;
/**
* 是否有电梯(0:否 1:是)
*/
private String elevator;
/**
* 占地面积
*/
private BigDecimal buildingSpace;
/**
* 备注
*/
private String remark;
/**
* 是否删除(0:否 1:是)
*/
private String delFlag;
/**
* 小区ID
*/
private Long residenceId;
/**
* 所属小区
*/
private Residence residence;
/**
* 单元列表
*/
private List<Unit> units;
}
Mapper层
package com.slwvote.system.mapper.community;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.slwvote.common.core.mapper.BaseMapperPlus;
import com.slwvote.system.domain.community.Building;
import com.slwvote.system.domain.community.Residence;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 楼栋表 数据层
*/
@Mapper
public interface BuildingMapper extends BaseMapperPlus<BuildingMapper, Building, Building> {
/**
*楼栋分页查询
*
* @param page
* @param wrapper
* @return
*/
Page<Building> selectBuildingPageList(@Param("page") Page<Building> page,@Param(Constants.WRAPPER) Wrapper<Object> wrapper);
/**
* 楼栋列表查询
*
* @param buildingName
* @Param buildingCode
* @return null没查到 List<Building>查到了
*/
List<Building> selectList1(@Param("buildingCode")String buildingCode,@Param("buildingName")String buildingName);
/**
* 楼栋ID查询
*
* @param id
* @return null没查到 Building查到了
*/
Building selectById1(Long id);
/**
* 添加楼栋信息
*
* @param building
* @return 0失败 >0成功
*/
int insert1(Building building);
/**
* 批量删除楼栋信息
*
* @param id
* @return 0失败 >0成功
*/
int deleteById1(Long id);
/**
* 修改楼栋信息
*
* @param building
* @return 0失败 >0成功
*/
int updateById1(Building building);
/**
* 通过小区ID查询楼栋信息
*
* @param id
* @return 0没查到 >0查到了
*/
int selectBuildingByResidenceId(Long id);
}
xml层
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.slwvote.system.mapper.community.BuildingMapper">
<resultMap id="BuildingResult" type="com.slwvote.system.domain.community.Building">
<id property="buildingId" column="building_id"/>
<result property="buildingCode" column="building_code"/>
<result property="buildingName" column="building_name"/>
<result property="floorNumber" column="floor_number"/>
<result property="households" column="households"/>
<result property="elevator" column="elevator"/>
<result property="buildingSpace" column="building_space"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<resultMap id="ResidenceBuildingUnit" type="com.slwvote.system.domain.community.Building">
<id property="buildingId" column="building_id"/>
<result property="buildingCode" column="building_code"/>
<result property="buildingName" column="building_name"/>
<result property="floorNumber" column="floor_number"/>
<result property="households" column="households"/>
<result property="elevator" column="elevator"/>
<result property="buildingSpace" column="building_space"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<association property="residence" javaType="com.slwvote.system.domain.community.Residence">
<id property="residenceId" column="residence_id"/>
<result property="residenceCode" column="residence_code"/>
<result property="residenceName" column="residence_name"/>
<result property="residenceLocation" column="residence_location"/>
<result property="residenceAddress" column="residence_address"/>
<result property="buildingType" column="building_type"/>
<result property="buildingSpace" column="building_space"/>
<result property="buildingNumber" column="building_number"/>
<result property="households" column="households"/>
<result property="parkingSpace" column="parking_space"/>
<result property="supportingFacility" column="supporting_facility"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</association>
<collection property="units" ofType="com.slwvote.system.domain.community.Unit">
<id property="unitId" column="unit_id"/>
<result property="unitCode" column="unit_code"/>
<result property="unitName" column="unit_name"/>
<result property="floorNumber" column="floor_number"/>
<result property="households" column="households"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</collection>
</resultMap>
<select id="selectBuildingPageList" resultMap="ResidenceBuildingUnit">
select b.building_id,
b.building_code,
b.building_name,
b.floor_number,
b.households,
b.elevator,
b.building_space,
b.remark,
b.del_flag,
b.create_by,
b.create_time,
b.update_by,
b.update_time,
b.residence_id,
r.residence_id,
r.residence_code,
r.residence_name,
r.residence_location,
r.residence_address,
r.building_type,
r.building_space,
r.building_number,
r.households,
r.parking_space,
r.elevator,
r.supporting_facility,
r.del_flag,
r.create_by,
r.create_time,
r.update_by,
r.update_time,
r.remark,
u.unit_id,
u.unit_code,
u.unit_name,
u.floor_number,
u.households,
u.del_flag,
u.create_by,
u.create_time,
u.update_by,
u.update_time,
u.remark,
u.building_id
from cu_building b
left join cu_residence r on b.residence_id = r.residence_id
left join cu_unit u on u.building_id = b.building_id
${ew.getCustomSqlSegment}
</select>
<select id="selectList1" resultMap="BuildingResult">
select * from cu_building
where del_flag = 0
<if test=" buildingCode!=null and buildingCode.trim()!='' ">
and building_code like '%${buildingCode}%'
</if>
<if test=" buildingName!=null and buildingName.trim()!='' ">
and building_name like '%${buildingName}%'
</if>
order by create_time desc
</select>
<select id="selectById1" resultMap="BuildingResult">
select * from cu_building where building_id = #{id} and del_flag = 0
</select>
<insert id="insert1">
insert into cu_building(
<if test=" buildingId!=null and buildingId.trim()!='' ">building_id,</if>
<if test=" buildingCode!=null and buildingCode.trim()!='' ">building_code,</if>
<if test=" buildingName!=null and buildingName.trim()!='' ">building_name,</if>
<if test=" floorNumber!=null and floorNumber.trim()!='' ">floor_number,</if>
<if test=" households!=null and households.trim()!='' ">households,</if>
<if test=" elevator!=null and elevator.trim()!='' ">elevator,</if>
<if test=" buildingSpace!=null and buildingSpace.trim()!='' ">building_space,</if>
<if test=" remark!=null and remark.trim()!='' ">remark</if>
) values(
<if test=" buildingId!=null and buildingId.trim()!='' ">#{buildingId},</if>
<if test=" buildingCode!=null and buildingCode.trim()!='' ">#{buildingCode},</if>
<if test=" buildingName!=null and buildingName.trim()!='' ">#{buildingName},</if>
<if test=" floorNumber!=null and floorNumber.trim()!='' ">#{floorNumber},</if>
<if test=" households!=null and households.trim()!='' ">#{households},</if>
<if test=" elevator!=null and elevator.trim()!='' ">#{elevator},</if>
<if test=" buildingSpace!=null and buildingSpace.trim()!='' ">#{buildingSpace},</if>
<if test=" remark!=null and remark.trim()!='' ">#{remark}</if>
)
</insert>
<delete id="deleteById1">
delete from cu_building where building_id = #{id}
</delete>
<update id="updateById1">
update cu_building
<set>
<if test=" buildingCode!=null and buildingCode.trim()!='' ">
building_code = #{buildingCode},
</if>
<if test=" buildingName!=null and buildingName.trim()!='' ">
building_name = #{buildingName},
</if>
<if test=" floorNumber!=null and floorNumber.trim()!='' ">
floor_number = #{floorNumber},
</if>
<if test=" households!=null and households.trim()!='' ">
households = #{households},
</if>
<if test=" elevator!=null and elevator.trim()!='' ">
elevator = #{elevator},
</if>
<if test=" buildingSpace!=null and buildingSpace.trim()!='' ">
building_space = #{buildingSpace},
</if>
<if test=" remark!=null and remark.trim()!='' ">
remark = #{remark}
</if>
</set>
where building_id = #{id}
</update>
<select id="selectBuildingByResidenceId" resultType="java.lang.Integer">
select count(*) from cu_building where residence_id = #{id}
</select>
</mapper>
service层
package com.slwvote.system.service.community;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.slwvote.common.core.domain.PageQuery;
import com.slwvote.system.domain.community.Building;
import java.util.List;
/**
* 楼栋表 业务层
*/
public interface BuildingService {
/**
* 楼栋分页查询
*
* @param pageQuery
* @param building
* @return
*/
Page<Building> selectBuildingPageList(PageQuery pageQuery,Building building);
/**
* 楼栋列表查询
*
* @param buildingName
* @Param buildingCode
* @return
*/
List<Building> selectBuildingList(String buildingCode,String buildingName);
/**
* 楼栋ID查询
*
* @param id
* @return
*/
Building selectBuildingById(Long id);
/**
* 添加楼栋信息
*
* @param building
* @return
*/
boolean insertBuilding(Building building);
/**
* 按ID删除楼栋信息
*
* @param ids
* @return
*/
boolean deleteBuildingByIds(Long[] ids);
/**
* 修改楼栋信息
*
* @param building
* @return
*/
boolean updateBuilding(Building building);
}
serviceImpl层
package com.slwvote.system.service.community.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.slwvote.common.constant.Constants;
import com.slwvote.common.core.domain.PageQuery;
import com.slwvote.system.domain.community.Building;
import com.slwvote.system.mapper.community.BuildingMapper;
import com.slwvote.system.mapper.community.UnitMapper;
import com.slwvote.system.service.community.BuildingService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 楼栋表 业务层实现
*/
@RequiredArgsConstructor
@Service
public class BuildingServiceImpl implements BuildingService {
private final BuildingMapper buildingMapper;
private final UnitMapper unitMapper;
/**
* 楼栋分页查询
*
* @param pageQuery
* @param building
* @return
*/
@Override
public Page<Building> selectBuildingPageList(PageQuery pageQuery, Building building) {
Page<Building> page = buildingMapper.selectBuildingPageList(pageQuery.build(),new QueryWrapper<>()
.eq(building.getBuildingCode()!=null,"building_code",building.getBuildingCode())
.eq(building.getBuildingName()!=null,"building_name",building.getBuildingName())
.eq("del_flag", Constants.DEL_EXIST));
return page;
}
/**
* 楼栋列表查询
*
* @param buildingName
* @Param buildingCode
* @return 0失败 List成功
*/
@Override
public List<Building> selectBuildingList(String buildingCode,String buildingName) {
return buildingMapper.selectList1(buildingCode,buildingName);
}
/**
* 楼栋ID查询
*
* @param id
* @return 0失败 Building成功
*/
@Override
public Building selectBuildingById(Long id) {
return buildingMapper.selectById1(id);
}
/**
* 添加楼栋信息
*
* @param building
* @return true成功 false失败
*/
@Override
public boolean insertBuilding(Building building) {
return buildingMapper.insert1(building);
}
/**
* 批量删除楼栋信息
*
* @param ids
* @return true成功 false失败
*/
@Override
public boolean deleteBuildingByIds(Long[] ids) {
//如果ID列表不为空,循环ID
if(ids != null && ids.length >0 ){
for(Long id : ids){
//查询从表有没有数据
Integer i = unitMapper.selectUnitByBuildingId(id);
//没有数据直接删除主表
if (i == null || i == 0) {
buildingMapper.deleteById1(id);
return true;
}
}
}
//有数据返回 error
return false;
}
/**
* 修改楼栋信息
*
* @param building
* @return true成功 false失败
*/
@Override
public boolean updateBuilding(Building building) {
return buildingMapper.updateById1(building);
}
}
controller层
package com.slwvote.web.controller.community;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.slwvote.common.core.controller.BaseController;
import com.slwvote.common.core.domain.PageQuery;
import com.slwvote.common.core.domain.R;
import com.slwvote.common.core.domain.page.TableDataInfo;
import com.slwvote.system.domain.community.Building;
import com.slwvote.system.service.community.BuildingService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 楼栋表 控制层
*/
@RequiredArgsConstructor
@RestController
@RequestMapping("/community/building")
public class BuildingController extends BaseController {
private final BuildingService buildingService;
/**
* 楼栋分页查询
*
* @param pageQuery
* @param building
* @return
*/
@GetMapping("/pageList")
public TableDataInfo<Building> pageList(PageQuery pageQuery,Building building){
Page<Building> page = buildingService.selectBuildingPageList(pageQuery,building);
return TableDataInfo.build(page);
}
/**
* 楼栋列表查询
*
* @param buildingName
* @Param buildingCode
* @return
*/
@GetMapping("/list")
public R<List<Building>> list(String buildingCode,String buildingName){
return R.ok(buildingService.selectBuildingList(buildingName,buildingCode));
}
/**
* 楼栋ID查询
*
* @param id
* @return
*/
@GetMapping("/getInfo")
public R<Building> getInfo(Long id){
return R.ok(buildingService.selectBuildingById(id));
}
/**
* 添加楼栋信息
*
* @param building
* @return
*/
@PostMapping("add")
public R add(Building building){
return buildingService.insertBuilding(building) ? R.ok() : R.fail();
}
/**
* 修改楼栋信息
*
* @param building
* @return
*/
@PostMapping("edit")
public R edit(Building building){
return buildingService.updateBuilding(building) ? R.ok() : R.fail();
}
/**
* 按ID删除楼栋信息
*
* @param ids
* @return
*/
@DeleteMapping("/remove")
public R remove(Long[] ids){
return buildingService.deleteBuildingByIds(ids) ? R.ok() : R.fail();
}
}