From f7018ca7d42b7f84d0191d748cfdb2d38473ea86 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 17 Apr 2024 18:17:20 +0800
Subject: [PATCH] 新增房屋标签绑定初始化接口

---
 src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java |   57 +++++++++++++++++++
 src/main/java/org/springblade/modules/house/mapper/HouseMapper.java            |   15 +++++
 src/main/java/org/springblade/modules/house/service/IHouseService.java         |    7 ++
 src/main/java/org/springblade/modules/house/controller/HouseController.java    |   10 +++
 src/main/java/org/springblade/modules/house/vo/HouseVO.java                    |    5 +
 src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml             |   55 ++++++++++++++++++
 6 files changed, 149 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/springblade/modules/house/controller/HouseController.java b/src/main/java/org/springblade/modules/house/controller/HouseController.java
index 49c3e7e..aaa6dee 100644
--- a/src/main/java/org/springblade/modules/house/controller/HouseController.java
+++ b/src/main/java/org/springblade/modules/house/controller/HouseController.java
@@ -303,4 +303,14 @@
 		return R.data(houseService.getHouseLabelStatistic(house));
 	}
 
+	/**
+	 * 房屋标签初始化处置-根据有租客的,初始成出租,有业主没租客的初始化成自主,业主都没的就是闲置
+	 * @return
+	 */
+	@GetMapping("/initHouseLabelBind")
+	@ApiOperation(value = "房屋标签初始化处置")
+	public R initHouseLabelBind(HouseVO house) {
+		return R.status(houseService.initHouseLabelBind(house));
+	}
+
 }
diff --git a/src/main/java/org/springblade/modules/house/mapper/HouseMapper.java b/src/main/java/org/springblade/modules/house/mapper/HouseMapper.java
index 51110ce..b26c950 100644
--- a/src/main/java/org/springblade/modules/house/mapper/HouseMapper.java
+++ b/src/main/java/org/springblade/modules/house/mapper/HouseMapper.java
@@ -144,4 +144,19 @@
 	 * @return
 	 */
 	List<HouseVO> getAllList(@Param("i") int i,@Param("size") int size);
+
+	/**
+	 * 查询无房屋状态的房屋数量
+	 * @param house
+	 * @return
+	 */
+    int getNotBindLabelHouseNum(HouseVO house);
+
+	/**
+	 * 查询无房屋状态的房屋列表集合
+	 * @param i
+	 * @param size
+	 * @return
+	 */
+	List<HouseVO> getNotBindLabelHouseList(@Param("i") int i,@Param("size")  int size);
 }
diff --git a/src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml b/src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml
index 5de9fde..b477a44 100644
--- a/src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml
+++ b/src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml
@@ -922,5 +922,60 @@
         limit #{i},#{size}
     </select>
 
+    <!--查询无房屋状态的房屋数量-->
+    <select id="getNotBindLabelHouseNum" resultType="java.lang.Integer">
+        select count(*) from (
+            SELECT
+            jh.house_code,
+            case when c.house_code is not null then 1
+            when a.house_code is not null and b.house_code is null then 2
+            when b.house_code is not null then 3
+            end as status
+            FROM
+            jczz_house jh
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship = 1 and house_code is not null and house_code != '' GROUP BY house_code
+            ) a on a.house_code = jh.house_code
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship = 18 and house_code is not null and house_code != '' GROUP BY house_code
+            ) b on b.house_code = jh.house_code
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship is null or (relationship!=1 and relationship!=18) and house_code is not null and house_code != '' GROUP BY house_code
+            ) c on c.house_code = jh.house_code
+        ) d left join jczz_user_house_label juhl on d.house_code = juhl.house_code and lable_type = 2
+        where juhl.id is null and status is not null
+    </select>
+
+    <!--查询无房屋状态的房屋列表集合-->
+    <select id="getNotBindLabelHouseList" resultType="org.springblade.modules.house.vo.HouseVO">
+        select d.* from (
+            SELECT
+            jh.house_code,
+            case when c.house_code is not null then 1
+            when a.house_code is not null and b.house_code is null then 2
+            when b.house_code is not null then 3
+            end as status
+            FROM
+            jczz_house jh
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship = 1 and house_code is not null and house_code != '' GROUP BY house_code
+            ) a on a.house_code = jh.house_code
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship = 18 and house_code is not null and house_code != '' GROUP BY house_code
+            ) b on b.house_code = jh.house_code
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship is null or (relationship!=1 and relationship!=18) and house_code is not null and house_code != '' GROUP BY house_code
+            ) c on c.house_code = jh.house_code
+        ) d left join jczz_user_house_label juhl on d.house_code = juhl.house_code and lable_type = 2
+        where juhl.id is null and status is not null
+        limit #{i},#{size}
+    </select>
+
 
 </mapper>
diff --git a/src/main/java/org/springblade/modules/house/service/IHouseService.java b/src/main/java/org/springblade/modules/house/service/IHouseService.java
index 4cf8258..d9c5256 100644
--- a/src/main/java/org/springblade/modules/house/service/IHouseService.java
+++ b/src/main/java/org/springblade/modules/house/service/IHouseService.java
@@ -130,4 +130,11 @@
 	 * @return
 	 */
 	List<HouseVO> getAllList(int i, int size);
+
+	/**
+	 * 房屋标签初始化处置-根据有租客的,初始成出租,有业主没租客的初始化成自主,业主都没的就是闲置
+	 * @param house
+	 * @return
+	 */
+    boolean initHouseLabelBind(HouseVO house);
 }
diff --git a/src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java b/src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java
index e141664..e4c8fda 100644
--- a/src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java
+++ b/src/main/java/org/springblade/modules/house/service/impl/HouseServiceImpl.java
@@ -954,4 +954,61 @@
 	public List<HouseVO> getAllList(int i, int size) {
 		return baseMapper.getAllList(i,size);
 	}
+
+	/**
+	 * 房屋标签初始化处置-根据有租客的,初始成出租,有业主没租客的初始化成自主,业主都没的就是闲置
+	 * @param house
+	 * @return
+	 */
+	@Override
+	public boolean initHouseLabelBind(HouseVO house) {
+		IUserHouseLabelService userHouseLabelService = SpringUtils.getBean(IUserHouseLabelService.class);
+		// 查询无房屋状态的房屋数量
+		int total = baseMapper.getNotBindLabelHouseNum(house);
+		int size = 1000;
+		int num = total / size;
+		for (int i = 1; i <= num + 1; i++) {
+			// 查询无房屋状态的房屋列表集合
+			List<HouseVO> houseVOList = baseMapper.getNotBindLabelHouseList((i - 1) * size, size);
+			for (HouseVO houseEntity : houseVOList) {
+				//处理状态
+				UserHouseLabelEntity houseLabelEntity = new UserHouseLabelEntity();
+				houseLabelEntity.setHouseCode(houseEntity.getHouseCode());
+				houseLabelEntity.setLableType(2);
+				houseLabelEntity.setCreateTime(new Date());
+				if (houseEntity.getStatus()==1) {
+					// 闲置
+					houseLabelEntity.setColor("green");
+					houseLabelEntity.setLabelName("闲置");
+					houseLabelEntity.setLabelId(1037L);
+				}
+				if (houseEntity.getStatus()==2) {
+					// 自住
+					houseLabelEntity.setColor("blue");
+					houseLabelEntity.setLabelName("自住");
+					houseLabelEntity.setLabelId(1038L);
+				}
+				if (houseEntity.getStatus()==3) {
+					// 出租
+					houseLabelEntity.setColor("yellow");
+					houseLabelEntity.setLabelName("出租");
+					houseLabelEntity.setLabelId(1039L);
+				}
+				// 查询当前房屋是否已有,有则更新,无则新增
+				QueryWrapper<UserHouseLabelEntity> wrapper = new QueryWrapper<>();
+				wrapper.eq("house_code",houseEntity.getHouseCode())
+					.eq("lable_type",2);
+				UserHouseLabelEntity userHouseLabelEntity = userHouseLabelService.getOne(wrapper);
+				if (null!=userHouseLabelEntity){
+					// 更新
+					houseLabelEntity.setId(userHouseLabelEntity.getId());
+					userHouseLabelService.updateById(houseLabelEntity);
+				}else {
+					// 新增
+					userHouseLabelService.save(houseLabelEntity);
+				}
+			}
+		}
+		return true;
+	}
 }
diff --git a/src/main/java/org/springblade/modules/house/vo/HouseVO.java b/src/main/java/org/springblade/modules/house/vo/HouseVO.java
index 8a9cd0a..b3cf0fe 100644
--- a/src/main/java/org/springblade/modules/house/vo/HouseVO.java
+++ b/src/main/java/org/springblade/modules/house/vo/HouseVO.java
@@ -83,4 +83,9 @@
 	private String communityCode;
 
 	private List<UserHouseLabelVO> userHouseLabelVOList = new ArrayList<>();
+
+	/**
+	 * 标签id
+	 */
+	private Integer status;
 }

--
Gitblit v1.9.3