Просмотр исходного кода

停车场手机管理端:停车场相关接口

chenwen 3 лет назад
Родитель
Сommit
50c665ca80

+ 9 - 1
src/main/java/com/charging/chargingparking/mapper/mobile/ParkingSiteMapper.java

@@ -9,5 +9,13 @@ public interface ParkingSiteMapper {
 
 
 	List<Map<String,Object>> loadMyParkingSites(String usId);
 	List<Map<String,Object>> loadMyParkingSites(String usId);
 	
 	
-	Integer getUsingCount(@Param("parkingIds") String[] parkingIds);
+	List<Map<String, Object>> getCrtSeatInfo(@Param("parkingIds") String[] parkingIds);
+	
+	List<Map<String, Object>> loadTodayTrend(@Param("parkingIds") String[] parkingIds);
+	
+	List<Map<String, Object>> rptPay(@Param("parkingIds") String[] parkingIds,@Param("rptMonth") String rptMonth,@Param("rptDate") String rptDate);
+	
+	List<Map<String, Object>> rptDailyCarFlow(@Param("parkingIds") String[] parkingIds,@Param("rptDate") String rptDate);
+	
+	List<Map<String, Object>> loadParkSitDevs(String parkingId);
 }
 }

+ 54 - 5
src/main/java/com/charging/chargingparking/modules/mobileController/ParkingSiteController.java

@@ -1,14 +1,21 @@
 package com.charging.chargingparking.modules.mobileController;
 package com.charging.chargingparking.modules.mobileController;
 
 
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
 
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.time.DateFormatUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import com.charging.chargingparking.modules.mobileservice.ParkingSiteService;
 import com.charging.chargingparking.modules.mobileservice.ParkingSiteService;
+import com.charging.chargingparking.utils.DateUtil;
 import com.charging.chargingparking.utils.RespVO;
 import com.charging.chargingparking.utils.RespVO;
 import com.charging.chargingparking.utils.RespVOBuilder;
 import com.charging.chargingparking.utils.RespVOBuilder;
 
 
@@ -26,17 +33,59 @@ public class ParkingSiteController {
 	 * @return
 	 * @return
 	 */
 	 */
 	@RequestMapping("/loadMy")
 	@RequestMapping("/loadMy")
-	public RespVO  loadMy(@NotBlank(message = "usId【用户编号不能为空") String usId) {
+	public RespVO  loadMy(@NotBlank(message = "用户编号不能为空") String usId) {
 			return RespVOBuilder.ok(service.loadMyParkingSites(usId));
 			return RespVOBuilder.ok(service.loadMyParkingSites(usId));
 	}
 	}
 	
 	
 	/**
 	/**
-	 * 获取指定停车场已用车位数
+	 * 获取指定停车场当前车位使用情况
+	 * @param parkingIds
+	 * @return
+	 */
+	@RequestMapping("/getCrtSeatInfo")
+	public RespVO  getCrtSeatInfo(@NotBlank(message = "停车场编号不能为空") String parkingIds) {
+			return RespVOBuilder.ok(service.getCrtSeatInfo(StringUtils.split(parkingIds, ",")));
+	}
+	
+	/**
+	 * 获取指定停车场的运营动态
+	 * @param parkingIds
+	 * @return
+	 */
+	@RequestMapping("/loadTodayTrend")
+	public RespVO loadTodayTrend(@NotBlank(message = "停车场编号不能为空") String parkingIds) {
+		return RespVOBuilder.ok(service.loadTodayTrend(StringUtils.split(parkingIds, ",")));
+	}
+	
+	/**
+	 *  统计支付数据
+	 * @param parkingIds
+	 * @return
+	 */
+	@RequestMapping("/rptPay")
+	public RespVO rptPay(@NotBlank(message = "停车场编号不能为空") String parkingIds) {
+		String nowStr=DateFormatUtils.format(new Date(), "yyyy-MM-dd");
+		String monthStr=nowStr.substring(0, 7);
+		return RespVOBuilder.ok(service.rptPay(StringUtils.split(parkingIds, ","),monthStr,nowStr));
+	}
+	
+	/**
+	 * 统计某日的车流量(进入、出去)
 	 * @param parkingIds
 	 * @param parkingIds
+	 * @param flowDate
 	 * @return
 	 * @return
 	 */
 	 */
-	@RequestMapping("/getUsingCount")
-	public RespVO  getUsingCount(@NotBlank(message = "parkingIds【停车场编号】不能为空") String parkingIds) {
-			return RespVOBuilder.ok(service.getUsingCount(StringUtils.split(parkingIds, ",")));
+	@RequestMapping("/rptDailyCarFlow")
+	public RespVO rptDailyCarFlow(@NotBlank(message = "停车场编号不能为空") String parkingIds,@Pattern(regexp = "^[1-9]\\d{3}-\\d{2}-\\d{2}", message = "日期不符合格式要求【yyyy-MM-dd】") String flowDate) {
+		if(StringUtils.isBlank(flowDate)) {
+			flowDate=DateUtil.format(new Date(), "yyyy-MM-dd");
+		}
+		else{
+			if(DateUtil.parse(flowDate)==null) {  //非日期字符串
+				flowDate=DateUtil.format(new Date(), "yyyy-MM-dd");
+			}
+		}
+		List<Map<String,Object>> datas=service.rptDailyCarFlow(StringUtils.split(parkingIds, ","),flowDate);
+		return RespVOBuilder.ok(datas);
 	}
 	}
 }
 }

+ 33 - 2
src/main/java/com/charging/chargingparking/modules/mobileservice/ParkingSiteService.java

@@ -13,9 +13,40 @@ public interface ParkingSiteService {
 	List<Map<String,Object>> loadMyParkingSites(String usId);
 	List<Map<String,Object>> loadMyParkingSites(String usId);
 	
 	
 	/**
 	/**
-	 * 获取指定停车场已用车位数
+	 * 获取指定停车场车位使用信息 可传多个停车场id参,根据放行状态(1:放行,0:未放行)判断是否占用车位
 	 * @param parkingIds
 	 * @param parkingIds
 	 * @return
 	 * @return
 	 */
 	 */
-	Integer getUsingCount(String[] parkingIds);
+	List<Map<String, Object>> getCrtSeatInfo(String[] parkingIds);
+	
+	/**
+	 * 获取指定停车场的运营动态
+	 * @param parkingIds
+	 * @return
+	 */
+	List<Map<String,Object>> loadTodayTrend(String[] parkingIds);
+	
+	/**
+	 * 统计支付数据
+	 * @param parkingIds
+	 * @param rptMonth
+	 * @param rptDate
+	 * @return
+	 */
+	List<Map<String, Object>> rptPay(String[] parkingIds,String rptMonth,String rptDate);
+	
+	/**
+	 * 统计某日的车流量(进入、出去)
+	 * @param parkingIds
+	 * @param rptDate
+	 * @return
+	 */
+	List<Map<String, Object>> rptDailyCarFlow(String[] parkingIds,String rptDate);
+	
+	/**
+	 * 获取某个停车场的匝道设备情况
+	 * @param parkingId
+	 * @return
+	 */
+	List<Map<String, Object>> loadParkSitDevs(String parkingId);
 }
 }

+ 22 - 2
src/main/java/com/charging/chargingparking/modules/mobileservice/impl/ParkingSiteServiceImp.java

@@ -23,9 +23,29 @@ public class ParkingSiteServiceImp implements ParkingSiteService {
 	}
 	}
 
 
 	@Override
 	@Override
-	public Integer getUsingCount(String[] parkingIds) {
+	public List<Map<String, Object>> getCrtSeatInfo(String[] parkingIds) {
 		
 		
-		return mapper.getUsingCount(parkingIds);
+		return mapper.getCrtSeatInfo(parkingIds);
+	}
+
+	@Override
+	public List<Map<String, Object>> loadTodayTrend(String[] parkingIds) {
+		return mapper.loadTodayTrend(parkingIds);
+	}
+
+	@Override
+	public List<Map<String, Object>> rptPay(String[] parkingIds, String rptMonth, String rptDate) {
+		return mapper.rptPay(parkingIds, rptMonth, rptDate);
+	}
+
+	@Override
+	public List<Map<String, Object>> rptDailyCarFlow(String[] parkingIds, String rptDate) {
+		return mapper.rptDailyCarFlow(parkingIds, rptDate);
+	}
+
+	@Override
+	public List<Map<String, Object>> loadParkSitDevs(String parkingId) {
+		return mapper.loadParkSitDevs(parkingId);
 	}
 	}
 
 
 }
 }

+ 97 - 8
src/main/resources/mapper/api/ParkingSiteMapper.xml

@@ -6,20 +6,109 @@
     
     
     <!-- 加载当前用户所有的停车场基本信息 -->
     <!-- 加载当前用户所有的停车场基本信息 -->
     <select id="loadMyParkingSites" resultType="java.util.HashMap">
     <select id="loadMyParkingSites" resultType="java.util.HashMap">
-        select a.parking_name,a.id from base_parking_info a
+        select a.parking_name,a.id,a.address_,a.total_parking_number from base_parking_info a
         inner join base_parking_user_relation b on a.id = b.parking_id
         inner join base_parking_user_relation b on a.id = b.parking_id
         where b.reg_user_id = #{0} and a.del_flag=false and b.del_flag=false
         where b.reg_user_id = #{0} and a.del_flag=false and b.del_flag=false
         order by a.parking_name
         order by a.parking_name
     </select>
     </select>
     
     
-    <!-- 获取指定停车场已用车位数 可传多个停车场id参数,根据是否有出场时间判断是否占用车位 -->
-    <select id="getUsingCount" resultType="java.lang.Integer">
-    	select count(distinct car_num) from base_parking_record  pr
-		where pr.del_flag=false 
-		and pr.out_parking_time is null
+     <select id="get" resultType="java.util.HashMap">
+       select a.parking_name,a.id,a.address_,a.total_parking_number,pic_url 
+       from base_parking_info a
+       where a.del_flag=false and a.id=#{0}
+     </select>
+    
+    
+    <!-- 获取指定停车场车位使用信息.设备在线状态 可传多个停车场id参数,根据放行状态(1:放行,0:未放行)判断是否占用车位 -->
+    <!-- 设备在线状态判断,离线=离线状态或在线但更新时间已滞后30分钟-->
+    <select id="getCrtSeatInfo" resultType="java.util.HashMap">
+    	
+	    	select prtab.using_seat_count,p.id,p.total_parking_number,
+	    	(p.total_parking_number-prtab.using_seat_count)  idle_seat_count,
+	    	<![CDATA[
+		    	(select sum((case when channel_status='2' or (channel_status='1' and date_add(update_time, interval 30 minute)<sysdate()) then 1 else 0 end)) offline_count 
+		    	from base_parking_channel pc where pc.del_flag=false and pc.park_id=p.id) online_dev_count
+	    	]]>
+	    	from base_parking_info  p 
+			left join (
+			select pr.park_id,count(distinct car_num) using_seat_count  from base_parking_record  pr
+			where pr.del_flag=false 
+			and pr.release_status='0'
+			group by pr.park_id
+			) prtab  on p.id=prtab.park_id
+			where p.del_flag=false 
+			and p.id in 
+			<foreach collection="parkingIds" item="id" index="index" open="(" close=")" separator=",">
+	           #{id}
+	    	</foreach>
+     	
+    </select>
+    
+    <!-- 获取指定停车场的运营动态 可传多个停车场id参数 -->
+    <select id="loadTodayTrend" resultType="java.util.HashMap">
+    	<![CDATA[
+	    	select   park_id,sum(total_amount) should_pay,sum(pay_amount) real_pay,
+			sum((case when pr.release_status='1' and pay_amount<=0 then 1 else 0 end)) free_pay_count
+		 ]]>
+		from base_parking_record pr
+		where pr.del_flag=false
 		and park_id in 
 		and park_id in 
+			<foreach collection="parkingIds" item="id" index="index" open="(" close=")" separator=",">
+	           #{id}
+	    	</foreach>
+		group by park_id
+		
+	 
+    </select>
+    
+    <!-- 统计指定停车场支付金额、笔数(时间维度:月、今天、全部) -->
+    <select id="rptPay" resultType="java.util.HashMap">
+    	select park_id,sum(pay_amount) total_pay_amount,sum((case when pay_month=#{rptMonth} then pay_amount else 0 end)) month_pay_amount,
+		sum((case when pay_date=#{rptDate} then pay_amount else 0 end)) today_pay_amount,
+		sum((case when pay_date=#{rptDate} then 1 else 0 end)) today_pay_count
+		from (
+		select pr.park_id,pp.pay_amount,pp.id,date_format(pp.pay_time,'%Y-%m') pay_month,date_format(pp.pay_time,'%Y-%m-%d') pay_date
+		from base_parking_pay pp
+		inner join base_parking_record pr on pp.parking_record_id=pr.id
+		where pp.del_flag=false  and pr.del_flag=false 
+		and pr.park_id in 
 		<foreach collection="parkingIds" item="id" index="index" open="(" close=")" separator=",">
 		<foreach collection="parkingIds" item="id" index="index" open="(" close=")" separator=",">
-           #{id}
-    	</foreach>
+	           #{id}
+	    </foreach>
+		
+		) tab
+		group by park_id
+		
+    </select>
+    
+    <!-- 统计某日的车流量(进入、出去) -->
+    <select id="rptDailyCarFlow" resultType="java.util.HashMap">
+    	select count(car_num) flow_count,date_format(in_parking_time,'%H') flow_hour,'in' flow_type
+		from base_parking_record  pr
+		where pr.del_flag=false and date_format(in_parking_time,'%Y-%m-%d')=#{rptDate}
+		and pr.park_id in 
+		<foreach collection="parkingIds" item="id" index="index" open="(" close=")" separator=",">
+	           #{id}
+	    </foreach>
+		group by date_format(in_parking_time,'%H')
+		
+		union all
+		
+		select count(car_num) flow_count,date_format(out_parking_time,'%H') flow_hour,'out' flow_type
+		from base_parking_record  pr
+		where pr.del_flag=false and pr.release_status='1' and  date_format(out_parking_time,'%Y-%m-%d')=#{rptDate}
+		and pr.park_id in 
+		<foreach collection="parkingIds" item="id" index="index" open="(" close=")" separator=",">
+	           #{id}
+	    </foreach>
+		group by date_format(out_parking_time,'%H')
+    </select>
+    
+    <!-- 获取某个停车场的匝道设备情况 -->
+    <select id="loadParkSitDevs" resultType="java.util.HashMap">
+    	select channel_name,channel_type,channel_status
+		from base_parking_channel
+		where del_flag=false and park_id=#{0}
+    
     </select>
     </select>
 </mapper>
 </mapper>