Browse Source

庭院 小区必选 没有楼栋 单元更没有 参数只有小区ID 返回的是楼栋 小区必填 楼栋非必填(小区名称当楼栋名称返回来)
架空和底腿 小区楼栋必传 没有单元这个参数 返回的是单元 小区楼栋必填 单元非必填 选到楼栋返回单元

wangzhe 10 tháng trước cách đây
mục cha
commit
0a9dcf78da

+ 3 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/mapper/ZEngineeringCivilMapper.java

@@ -6,6 +6,7 @@ import com.ruoyi.zdsz.domain.bo.ZEngineeringCivilBo;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringInfoBo;
 import com.ruoyi.zdsz.domain.vo.*;
 import com.ruoyi.common.core.mapper.BaseMapperPlus;
+import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.LinkedList;
@@ -26,6 +27,8 @@ public interface ZEngineeringCivilMapper extends BaseMapperPlus<ZEngineeringCivi
 
     List<roomStatusVo> getObtainRoomcCompletionInformationList(ZEngineeringCivilBo bo);
 
+    @MapKey("")
+    List<Map<String, Object>> getObtainUnitCompletionInformationList(ZEngineeringCivilBo bo);
     List<UnitStatusVo> getObtainUnitCompletionInformationList_overleg(ZEngineeringCivilBo bo);
     List<BuildingStatusVo> getObtainUnitCompletionInformationList_courtyard(ZEngineeringCivilBo bo);
     List<areaWillDoneVo> getAreaCompletionInformationList(@Param("idList") List idList,@Param("enginCycle")String enginCycle,@Param("enginType")String enginType);

+ 114 - 9
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringCivilServiceImpl.java

@@ -978,19 +978,124 @@ public class ZEngineeringCivilServiceImpl implements IZEngineeringCivilService {
         return areaList;
     }
     @Override
-    public List getObtainUnitCompletionInformationList(ZEngineeringCivilBo bo) { // 庭院courtyard 架空overhead 底腿bottom_leg
-        switch (bo.getEnginClassification()){
-            case "overhead": // 架空
-            case "bottom_leg": { // 底腿
-                return getObtainUnitCompletionInformationList_overleg(bo); // 查询条件 小区和楼栋 返回单元
+    public List getObtainUnitCompletionInformationList(ZEngineeringCivilBo bo) { // 庭院 courtyard 架空 overhead 底腿 bottom_leg
+//        return getObtainUnitCompletionInformationList_all(bo);
+        return getObtainUnitCompletionInformationList_new(bo);
+//        switch (bo.getEnginClassification()){
+//            case "overhead": // 架空
+//            case "bottom_leg": { // 底腿
+//                return getObtainUnitCompletionInformationList_overleg(bo); // 查询条件 小区和楼栋 返回单元
+//            }
+//            case "courtyard":{ // 庭院 查询条件小区
+//                return getObtainUnitCompletionInformationList_courtyard(bo); // 返回楼栋 不返回单元数据
+//            }
+//            default:{
+//                return null;
+//            }
+//        }
+    }
+    public List getObtainUnitCompletionInformationList_new(ZEngineeringCivilBo bo) { // 架空、底腿
+        String statusVoListName = bo.getEnginClassification().equals("")?"buildingStatusVoList":"unitStatusVoList";
+        List<Map<String, Object>> result = new ArrayList();
+        List<Map<String, Object>> statusList = baseMapper.getObtainUnitCompletionInformationList(bo);
+        Set set = new HashSet();
+        for (Map item:  statusList) {
+            set.add(item.get("areaId"));
+        }
+        Iterator iterator = set.iterator();
+        while (iterator.hasNext()){
+            String areaId = iterator.next().toString();
+            String areaName = zAreaMapper.selectById(areaId).getName();
+            Map object = new HashMap();
+            List statusVoList = new ArrayList();
+            object.put("areaId", areaId);
+            object.put("areaName", areaName);
+            object.put(statusVoListName, statusVoList);
+            result.add(object);
+        }
+
+        for (Map item: statusList) {
+            String areaId = item.get("areaId").toString();
+            for (Map res: result) {
+                if(res.get("areaId").equals(areaId)){
+                    ((List)res.get(statusVoListName)).add(item);
+                }
             }
-            case "courtyard":{ // 庭院 查询条件小区
-                return getObtainUnitCompletionInformationList_courtyard(bo); // 返回楼栋 不返回单元数据
+        }
+        for (Map res: result) {
+            List<Map> statusVoList = (List)res.get(statusVoListName);
+            List willDone = statusVoList.stream().filter(item -> item.get("unitStatus").equals("未施工")).collect(Collectors.toList());
+            List notstart = statusVoList.stream().filter(item -> item.get("unitStatus").equals("施工中")).collect(Collectors.toList());
+            List done = statusVoList.stream().filter(item -> item.get("unitStatus").equals("竣工")).collect(Collectors.toList());
+            List notInstall = statusVoList.stream().filter(item -> item.get("unitStatus").equals("未安装")).collect(Collectors.toList());
+            for (Object object: statusVoList) {
+                Map objMap = (Map) object;
+                objMap.put("done", String.valueOf(done.size()));
+                objMap.put("willDone", String.valueOf(willDone.size()));
+                objMap.put("notstart", String.valueOf(notstart.size()));
+//                String status = ((Map)object).get("unitStatus").toString();
             }
-            default:{
-                return null;
+        }
+
+//        List areaList = new ArrayList();
+//        map.forEach((key, value) -> {
+//            Map buildingStatusVo = new HashMap();
+//            buildingStatusVo.put("name", key);
+//            buildingStatusVo.put("id", value.get(0).get("buildingId"));
+//            Map<String, List<Map>> unitMap = value.stream().collect(Collectors.groupingBy(item -> (item.get("ordername").toString().replaceAll("[^0-9]", "").length() > 3 ? item.get("ordername").toString().substring(0, 2) : item.get("ordername").toString().substring(0, 1))));
+//            List willDone = value.stream().filter(item -> item.get("unitStatus").equals("未施工")).collect(Collectors.toList());
+//            List notstart = value.stream().filter(item -> item.get("unitStatus").equals("施工中")).collect(Collectors.toList());
+//            List done = value.stream().filter(item -> item.get("unitStatus").equals("竣工")).collect(Collectors.toList());
+//            List notInstall = value.stream().filter(item -> item.get("unitStatus").equals("未安装")).collect(Collectors.toList());
+//            List<List<Map>> statusVoList = new ArrayList<>();
+//            Map<String, List<Map>> sortMap = unitMap.entrySet().stream().sorted(Comparator.comparingInt(entry -> Integer.parseInt(entry.getKey()))).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldVal, newVal) -> oldVal, LinkedHashMap::new));
+//            sortMap.forEach((key1, value1) -> {
+//                statusVoList.add(value1);
+//            });
+//            buildingStatusVo.put("statusVoList", statusVoList);
+//            buildingStatusVo.put("done", String.valueOf(done.size()));
+//            buildingStatusVo.put("willDone", String.valueOf(willDone.size()));
+//            buildingStatusVo.put("notstart", String.valueOf(notstart.size()));
+//            areaList.add(buildingStatusVo);
+//        });
+        return result;
+    }
+    public List getObtainUnitCompletionInformationList_all(ZEngineeringCivilBo bo) { // 架空、底腿
+        List<Map<String, Object>> statusList = baseMapper.getObtainUnitCompletionInformationList(bo);
+        LinkedHashMap<String, List<Map>> map = new LinkedHashMap<>();
+        List<Map> mapvalue = new ArrayList<>();
+        for (int i = 0; i < statusList.size(); i++) {
+
+            if (i > 0 && statusList.get(i).get("areaId").equals(statusList.get(i - 1).get("areaId"))) {
+                mapvalue.add(statusList.get(i));
+            } else {
+                mapvalue = new ArrayList<>();
+                mapvalue.add(statusList.get(i));
             }
         }
+        map.put("key", mapvalue);
+        List areaList = new ArrayList();
+        map.forEach((key, value) -> {
+            Map buildingStatusVo = new HashMap();
+            buildingStatusVo.put("name", key);
+            buildingStatusVo.put("id", value.get(0).get("buildingId"));
+            Map<String, List<Map>> unitMap = value.stream().collect(Collectors.groupingBy(item -> (item.get("ordername").toString().replaceAll("[^0-9]", "").length() > 3 ? item.get("ordername").toString().substring(0, 2) : item.get("ordername").toString().substring(0, 1))));
+            List willDone = value.stream().filter(item -> item.get("unitStatus").equals("未施工")).collect(Collectors.toList());
+            List notstart = value.stream().filter(item -> item.get("unitStatus").equals("施工中")).collect(Collectors.toList());
+            List done = value.stream().filter(item -> item.get("unitStatus").equals("竣工")).collect(Collectors.toList());
+            List notInstall = value.stream().filter(item -> item.get("unitStatus").equals("未安装")).collect(Collectors.toList());
+            List<List<Map>> statusVoList = new ArrayList<>();
+            Map<String, List<Map>> sortMap = unitMap.entrySet().stream().sorted(Comparator.comparingInt(entry -> Integer.parseInt(entry.getKey()))).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldVal, newVal) -> oldVal, LinkedHashMap::new));
+            sortMap.forEach((key1, value1) -> {
+                statusVoList.add(value1);
+            });
+            buildingStatusVo.put("statusVoList", statusVoList);
+            buildingStatusVo.put("done", String.valueOf(done.size()));
+            buildingStatusVo.put("willDone", String.valueOf(willDone.size()));
+            buildingStatusVo.put("notstart", String.valueOf(notstart.size()));
+            areaList.add(buildingStatusVo);
+        });
+        return areaList;
     }
     public List getObtainUnitCompletionInformationList_overleg(ZEngineeringCivilBo bo) { // 架空、底腿
         List<UnitStatusVo> unitStatusList = baseMapper.getObtainUnitCompletionInformationList_overleg(bo);

+ 32 - 0
ruoyi-zdsz/src/main/resources/mapper/zdsz/ZEngineeringCivilMapper.xml

@@ -228,6 +228,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(a.`name`,')',''),'(',''),')',''),'(',''),'号','') ASC
 </select>
 
+    <select id="getObtainUnitCompletionInformationList" resultType="java.util.Map">
+        SELECT
+        a.area_id areaId,
+        a.building_id buildingId,
+        a.unit_id unitId,
+        IFNULL(
+        ( SELECT NAME FROM z_unit u WHERE u.id = a.unit_id ),
+        IFNULL(( SELECT NAME FROM z_building b WHERE b.id = a.building_id ),( SELECT NAME FROM z_area c WHERE c.id = a.area_id ))
+        ) unitName,
+        a.engin_type AS enginCycle,
+        IFNULL(
+        a.completion_status,
+        IFNULL(( SELECT '未安装' FROM z_engin_not_installed ni WHERE ni.building_id = a.building_id LIMIT 1 ), '未施工' )) AS unitStatus
+        FROM
+        z_engineering_civil a
+        WHERE
+        a.del_flag = 0
+        <if test="areaId != null and areaId != ''">
+          AND a.area_id = #{areaId}
+        </if>
+        <if test="buildingId != null and buildingId != ''">
+            AND a.building_id =  #{buildingId}
+        </if>
+        <if test="enginClassification != null and enginClassification != ''">
+            AND a.engin_classification =  #{enginClassification}
+        </if>
+        AND a.engin_cycle = '0'
+        ORDER BY
+        CAST(unitName AS SIGNED)
+--         CAST(ordername AS SIGNED)
+        ASC
+    </select>
     <select id="getObtainUnitCompletionInformationList_overleg" resultType="com.ruoyi.zdsz.domain.vo.UnitStatusVo">
     select
     a.area_id,