Browse Source

开始开发小区车辆

wuxw 1 year ago
parent
commit
861e4b915c

+ 9 - 0
java110-bean/src/main/java/com/java110/dto/parking/ParkingAreaDto.java

@@ -21,6 +21,7 @@ public class ParkingAreaDto extends PageDto implements Serializable {
     private String[] paIds;
     private String remark;
     private String communityId;
+    private String communityName;
     private List<ParkingAreaAttrDto> attrs;
 
 
@@ -100,4 +101,12 @@ public class ParkingAreaDto extends PageDto implements Serializable {
     public void setAttrs(List<ParkingAreaAttrDto> attrs) {
         this.attrs = attrs;
     }
+
+    public String getCommunityName() {
+        return communityName;
+    }
+
+    public void setCommunityName(String communityName) {
+        this.communityName = communityName;
+    }
 }

+ 16 - 0
java110-db/src/main/resources/mapper/report/ReportCommunityServiceDaoImplMapper.xml

@@ -293,6 +293,22 @@
         </if>
         order by f.seq ,CONVERT(t.unit_num, SIGNED)
     </select>
+
+    <select id="queryCommunityParkingTree" parameterType="Map" resultType="Map">
+        select s.community_id communityId,s.name communityName,t.num,t.pa_id paId
+        from parking_area t
+        left join s_community s on t.community_id = s.community_id and s.status_cd = '0'
+        where t.status_cd = '0'
+        and s.status_cd ='0'
+        <if test="communityIds !=null ">
+            and s.community_id in
+            <foreach collection="communityIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        order by t.num
+    </select>
+
     <select id="queryHisOwnerCarCount" parameterType="Map" resultType="Map">
         select count(1) count
         from business_owner_car t

+ 4 - 0
java110-interface/src/main/java/com/java110/intf/report/IReportCommunityInnerServiceSMO.java

@@ -2,6 +2,7 @@ package com.java110.intf.report;
 
 import com.java110.config.feign.FeignConfiguration;
 import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.parking.ParkingAreaDto;
 import com.java110.dto.room.RoomDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.owner.OwnerCarDto;
@@ -105,4 +106,7 @@ public interface IReportCommunityInnerServiceSMO {
 
     @RequestMapping(value = "/queryCommunityUnitTree", method = RequestMethod.POST)
     List<UnitDto> queryCommunityUnitTree(@RequestBody UnitDto unitDto);
+
+    @RequestMapping(value = "/queryCommunityParkingTree", method = RequestMethod.POST)
+    List<ParkingAreaDto> queryCommunityParkingTree(@RequestBody ParkingAreaDto parkingAreaDto);
 }

+ 166 - 0
service-report/src/main/java/com/java110/report/cmd/community/QueryCommunityParkingTreeCmd.java

@@ -0,0 +1,166 @@
+package com.java110.report.cmd.community;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.dto.dict.DictDto;
+import com.java110.dto.parking.ParkingAreaDto;
+import com.java110.dto.unit.UnitDto;
+import com.java110.intf.dev.IDictV1InnerServiceSMO;
+import com.java110.intf.report.IReportCommunityInnerServiceSMO;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.ListUtil;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * 查询小区停车场树形结构
+ */
+@Java110Cmd(serviceCode = "community.queryCommunityParkingTree")
+public class QueryCommunityParkingTreeCmd extends Cmd {
+
+    @Autowired
+    private IReportCommunityInnerServiceSMO reportCommunityInnerServiceSMOImpl;
+
+    @Autowired
+    private IDictV1InnerServiceSMO dictV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+        // must be administrator
+        super.validateAdmin(context);
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+
+        List<ParkingAreaDto> parkingAreaDtos = null;
+
+        ParkingAreaDto parkingAreaDto = new ParkingAreaDto();
+
+
+        parkingAreaDtos = reportCommunityInnerServiceSMOImpl.queryCommunityParkingTree(parkingAreaDto);
+        JSONArray communitys = new JSONArray();
+        if (ListUtil.isNull(parkingAreaDtos)) {
+            context.setResponseEntity(ResultVo.createResponseEntity(communitys));
+            return;
+        }
+
+        JSONObject communityInfo = null;
+        for (ParkingAreaDto tmpParkingAreaDto : parkingAreaDtos) {
+            if (!hasInCommunity(tmpParkingAreaDto, communitys)) {
+                communityInfo = new JSONObject();
+                communityInfo.put("id", "c_" + tmpParkingAreaDto.getCommunityId());
+                communityInfo.put("communityId", tmpParkingAreaDto.getCommunityId());
+                communityInfo.put("text", tmpParkingAreaDto.getCommunityName());
+                communityInfo.put("icon", "/img/org.png");
+                communityInfo.put("children", new JSONArray());
+                communitys.add(communityInfo);
+            }
+        }
+
+        DictDto dictDto = new DictDto();
+        dictDto.setTableName("owner_car");
+        dictDto.setTableColumns("lease_type");
+        List<DictDto> dictDtos = dictV1InnerServiceSMOImpl.queryDicts(dictDto);
+
+        JSONObject community = null;
+        for (int cIndex = 0; cIndex < communitys.size(); cIndex++) {
+            community = communitys.getJSONObject(cIndex);
+            // find floor data in unitDtos
+            findParkingArea(community, parkingAreaDtos, dictDtos);
+        }
+        context.setResponseEntity(ResultVo.createResponseEntity(communitys));
+
+
+    }
+
+    /**
+     * find community floor data
+     *
+     * @param community       current community
+     * @param parkingAreaDtos all units data
+     */
+    private void findParkingArea(JSONObject community, List<ParkingAreaDto> parkingAreaDtos, List<DictDto> dictDtos) {
+        JSONArray parkings = community.getJSONArray("children");
+        JSONObject parkingInfo = null;
+        for (ParkingAreaDto tmpParkingAreaDto : parkingAreaDtos) {
+            if (!hasInParkingArea(tmpParkingAreaDto, parkings)) {
+                parkingInfo = new JSONObject();
+                parkingInfo.put("id", "p_" + tmpParkingAreaDto.getPaId());
+                parkingInfo.put("paId", tmpParkingAreaDto.getPaId());
+                parkingInfo.put("text", tmpParkingAreaDto.getNum() + "停车场");
+                parkingInfo.put("icon", "/img/floor.png");
+                parkingInfo.put("children", new JSONArray());
+                parkings.add(parkingInfo);
+            }
+        }
+
+
+        JSONObject parking = null;
+        for (int cIndex = 0; cIndex < parkings.size(); cIndex++) {
+            parking = parkings.getJSONObject(cIndex);
+            // find floor data in unitDtos
+            findLeaseType(parking, parkingAreaDtos, dictDtos);
+        }
+    }
+
+    private void findLeaseType(JSONObject parking, List<ParkingAreaDto> parkingAreaDtos, List<DictDto> dictDtos) {
+        JSONArray leaseTypes = parking.getJSONArray("children");
+        JSONObject leaseTypeInfo = null;
+        for (DictDto tmpDictDto : dictDtos) {
+            leaseTypeInfo = new JSONObject();
+            leaseTypeInfo.put("id", "l_" + tmpDictDto.getStatusCd());
+            leaseTypeInfo.put("leaseType", tmpDictDto.getStatusCd());
+            leaseTypeInfo.put("text", tmpDictDto.getName());
+            leaseTypeInfo.put("icon", "/img/unit.png");
+            leaseTypes.add(leaseTypeInfo);
+        }
+
+    }
+
+
+    private boolean hasInParkingArea(ParkingAreaDto tmpParkingAreaDto, JSONArray parkings) {
+        JSONObject parkingArea = null;
+        for (int cIndex = 0; cIndex < parkings.size(); cIndex++) {
+            parkingArea = parkings.getJSONObject(cIndex);
+            if (!parkingArea.containsKey("paId")) {
+                continue;
+            }
+            if (StringUtil.isEmpty(parkingArea.getString("paId"))) {
+                continue;
+            }
+            if (parkingArea.getString("paId").equals(tmpParkingAreaDto.getPaId())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    private boolean hasInCommunity(ParkingAreaDto tmpParkingAreaDto, JSONArray communitys) {
+        JSONObject community = null;
+        for (int cIndex = 0; cIndex < communitys.size(); cIndex++) {
+            community = communitys.getJSONObject(cIndex);
+            if (!community.containsKey("communityId")) {
+                continue;
+            }
+            if (StringUtil.isEmpty(community.getString("communityId"))) {
+                continue;
+            }
+            if (community.getString("communityId").equals(tmpParkingAreaDto.getCommunityId())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+}

+ 1 - 0
service-report/src/main/java/com/java110/report/dao/IReportCommunityServiceDao.java

@@ -115,4 +115,5 @@ public interface IReportCommunityServiceDao {
     List<Map> queryHisRooms(Map info);
 
 
+    List<Map> queryCommunityParkingTree(Map info);
 }

+ 9 - 0
service-report/src/main/java/com/java110/report/dao/impl/ReportCommunityServiceDaoImpl.java

@@ -137,6 +137,15 @@ public class ReportCommunityServiceDaoImpl extends BaseServiceDao implements IRe
         return infos;
     }
 
+    @Override
+    public List<Map> queryCommunityParkingTree(Map info) {
+        logger.debug("查询queryCommunityParkingTree信息 入参 info : {}", JSONObject.toJSONString(info));
+
+        List<Map> infos = sqlSessionTemplate.selectList("reportCommunityServiceDaoImpl.queryCommunityParkingTree", info);
+
+        return infos;
+    }
+
     @Override
     public int queryHisOwnerCarCount(Map info) {
         logger.debug("查询车辆管理数据 入参 info : {}", info);

+ 11 - 0
service-report/src/main/java/com/java110/report/smo/impl/ReportCommunityInnerServiceSMOImpl.java

@@ -4,6 +4,7 @@ package com.java110.report.smo.impl;
 import com.java110.core.base.smo.BaseServiceSMO;
 import com.java110.dto.PageDto;
 import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.parking.ParkingAreaDto;
 import com.java110.dto.room.RoomDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.owner.OwnerAttrDto;
@@ -79,6 +80,16 @@ public class ReportCommunityInnerServiceSMOImpl extends BaseServiceSMO implement
         return unitDtos;
     }
 
+    @Override
+    public List<ParkingAreaDto> queryCommunityParkingTree(@RequestBody ParkingAreaDto parkingAreaDto) {
+        //校验是否传了 分页信息
+        List<ParkingAreaDto> parkingAreaDtos = BeanConvertUtil.covertBeanList(
+                reportCommunityServiceDaoImpl.queryCommunityParkingTree(BeanConvertUtil.beanCovertMap(parkingAreaDto)),
+                ParkingAreaDto.class);
+
+        return parkingAreaDtos;
+    }
+
     @Override
     public int queryHisOwnerCarCount(@RequestBody OwnerCarDto ownerCarDto) {
         return reportCommunityServiceDaoImpl.queryHisOwnerCarCount(BeanConvertUtil.beanCovertMap(ownerCarDto));

+ 0 - 1
service-user/src/main/java/com/java110/user/cmd/owner/QueryAdminOwnerCarsCmd.java

@@ -56,7 +56,6 @@ public class QueryAdminOwnerCarsCmd extends Cmd {
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
         super.validateAdmin(cmdDataFlowContext);
         super.validatePageInfo(reqJson);
-        Assert.hasKeyAndValue(reqJson,"ownerId","未包含业主ID");
     }
 
     @Override

+ 2 - 1
service-user/src/main/java/com/java110/user/cmd/owner/QueryOwnerCarsCmd.java

@@ -54,9 +54,10 @@ public class QueryOwnerCarsCmd extends Cmd {
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+        super.validateProperty(cmdDataFlowContext);
         Assert.jsonObjectHaveKey(reqJson, "page", "请求中未包含page信息");
         Assert.jsonObjectHaveKey(reqJson, "row", "请求中未包含row信息");
-        Assert.jsonObjectHaveKey(reqJson, "communityId", "请求中未包含communityId信息");
+        Assert.hasKeyAndValue(reqJson, "communityId", "请求中未包含communityId信息");
         Assert.isInteger(reqJson.getString("page"), "不是有效数字");
         Assert.isInteger(reqJson.getString("row"), "不是有效数字");
     }