Browse Source

停车记录标记在场查询接口、批量出场处理接口,停车记录显示增加出场方式

chenwen 11 months ago
parent
commit
e250bc2def

+ 14 - 0
src/main/java/com/charging/chargingparking/mapper/mobile/ParkingLogMapper.java

@@ -46,4 +46,18 @@ public interface ParkingLogMapper {
 	 * @param parkingLogIds
 	 */
 	void batchOffUnmarkParkingLog(@Param("parkingLogIds") List<String> parkingLogIds);
+	
+	/**
+	 * 重置在场标记(根据标记批量出场后要重置已标记的,便于下次标记)
+	 * @param parkId
+	 */
+	void resetMarkinOfPark(@Param("parkId") String parkId);
+	
+	/**
+	 * 查询已标记停车记录(标记出场使用)
+	 * @param parkId
+	 * @param carNums
+	 * @return
+	 */
+	IPage<Map<String,Object>> queryMarkedParkingLog(@Param("parkId") String parkId,@Param("carNums") List<String> carNums,IPage<Map<String,Object>> page);
 }

+ 54 - 15
src/main/java/com/charging/chargingparking/modules/mobileController/ParkingLogController.java

@@ -44,6 +44,39 @@ public class ParkingLogController {
 	@Autowired
 	private ParkingRecordService parkingRecordService;
 	
+	/**
+	 * 查询已标记的停车记录
+	 * @param parkId
+	 * @param pageNum
+	 * @param pageSize
+	 * @return
+	 */
+	@RequestMapping("/queryMarked")
+	public RespVO queryMarked(@NotBlank(message = "停车场编号不能为空") String parkId,String carNum,
+			@RequestParam(value="pageNum",defaultValue="1") int pageNum,
+            @RequestParam(value="pageSize",defaultValue="15") int pageSize) {
+		
+		try {
+			List<String> carArgs=null;
+			if(StringUtils.isNotBlank(carNum)) { //增加多个输入模糊查询的支持
+				String[] carNumAry=carNum.trim().toUpperCase().split("\\s+|[,,;;]+");
+				carArgs=new ArrayList<>(carNumAry.length);
+				for(String car : carNumAry) {
+					if(StringUtils.isNotBlank(car)) {
+						carArgs.add("%"+car+"%");
+					}
+					
+				}
+			}
+			IPage<Map<String,Object>> pagedData=service.queryMarkedParkingLog(parkId,carArgs,pageNum, pageSize);
+			return RespVOBuilder.ok(MapUtils.build("pagedData",pagedData));
+		}
+		catch(Exception e) {
+			e.printStackTrace();
+			return RespVOBuilder.error("查询服务出现错误");
+		}
+	}
+	
 	/**
 	 * 分页查询停车记录
 	 * @param status off:已离场;其它:未离场
@@ -55,7 +88,9 @@ public class ParkingLogController {
 	 * @return
 	 */
 	@RequestMapping("/query")
-	public RespVO  query(@NotBlank(message = "停车场编号不能为空") String parkingIds,String status,String carNum,String queryStart,String queryEnd,@RequestParam(value="pageNum",defaultValue="1") int pageNum,
+	public RespVO  query(@NotBlank(message = "停车场编号不能为空") String parkId,String status,String carNum,
+			String queryStart,String queryEnd,
+			@RequestParam(value="pageNum",defaultValue="1") int pageNum,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize) {
 		
 		
@@ -63,23 +98,24 @@ public class ParkingLogController {
 		IPage<Map<String,Object>> pagedData=null;
 		
 		Map<String,Object> searchParams=new HashMap<String,Object>();
-		searchParams.put("parkingIds", parkingIds.split(","));
+		searchParams.put("parkingIds", new String[] {parkId});
 		searchParams.put("status", "off".equals(status)?"1":"0");
 		
-		if(StringUtils.isNotBlank(carNum)) {
-			searchParams.put("carNum", "%"+carNum.toUpperCase().trim()+"%");
+		if(StringUtils.isNotBlank(carNum)) { //增加多个输入模糊查询的支持
+			String[] carNumAry=carNum.trim().toUpperCase().split("\\s+|[,,;;]+");
+			List<String> carArgs=new ArrayList<>(carNumAry.length);
+			for(String car : carNumAry) {
+				if(StringUtils.isNotBlank(car)) {
+					carArgs.add("%"+car+"%");
+				}
+				
+			}
+			searchParams.put("carNum", carArgs);
 		}
 		
 		searchParams.put("queryStart", queryStart);
 		searchParams.put("queryEnd", queryEnd);
 		
-		/*
-		if(pageNum==1) {  //全新查询,附加统计数量
-			rptData=service.rptParkingLog(searchParams);
-			if(rptData==null) {
-				rptData=new HashMap<>();
-			}
-		}*/
 		
 		//无时间、且是已离场查询,默认查当天
 		Date dateObj=DateUtil.parse(queryStart,"yyyy-MM-dd");
@@ -182,7 +218,7 @@ public class ParkingLogController {
 		
 		//不管设备是否在线都尝试开门(在线离线状态可能是滞后数据)
         //parkingChannelService.remoteOpen(outChannelId);
-        //记录放行数据
+        //记录放行数据  该语句也会控制设备开门
         //parkingSiteService.addManualOpenRecord(MapUtils.build("channelId",outChannelId,"usId",callerId,"note","手机端手动出场"));
         //更新剩余车位,减1
         parkingSiteService.plusIdleSeatCount(parkingLog.getParkId(), 1);
@@ -191,8 +227,10 @@ public class ParkingLogController {
         parkingLog.setOutChannelId(outChannelId);
         parkingLog.setOutParkingTime(new Date());
         parkingLog.setUpdateTime(new Date());
+        parkingLog.setUpdateBy(callerId);
         parkingLog.setReleaseStatus("1");
-        parkingLog.setRemark("用户:【"+callerId+"】执行了手动出场;"+(parkingLog.getRemark()!=null?parkingLog.getRemark():""));
+        parkingLog.setOutType("2");  //2:手动出场
+        parkingLog.setRemark("【"+callerId+"】手动出场;"+(parkingLog.getRemark()!=null?parkingLog.getRemark():""));
         parkingRecordService.updateById(parkingLog);
 		
 		return RespVOBuilder.ok();
@@ -229,7 +267,7 @@ public class ParkingLogController {
 		parkingLog.setMarkIn(true);
 		parkingLog.setMarkTime(new Date());
 		parkingLog.setUpdateTime(new Date());
-		parkingLog.setRemark("用户:【"+callerId+"】标记在场;"+(parkingLog.getRemark()!=null?parkingLog.getRemark():""));
+		parkingLog.setRemark("【"+callerId+"】标记在场;"+(parkingLog.getRemark()!=null?parkingLog.getRemark():""));
 		
 		parkingRecordService.updateById(parkingLog);
 		return RespVOBuilder.ok();
@@ -259,6 +297,7 @@ public class ParkingLogController {
 	
 	/**
 	 * 批量出场未标记在场,且长时间显示在场内的车
+	 * 批量出场后,已标记的要重置为未标记,可下次再标记
 	 * @param parkId
 	 * @param callerId
 	 * @return
@@ -283,7 +322,7 @@ public class ParkingLogController {
 				parkingLogIds.add((String)itm.get("id"));
 			}
 			
-			service.batchOffUnmarkParkingLog(parkingLogIds);
+			service.batchOffUnmarkParkingLog(parkId,parkingLogIds);
 			
 			return RespVOBuilder.ok();
 		}

+ 13 - 3
src/main/java/com/charging/chargingparking/modules/mobileservice/ParkingLogService.java

@@ -4,8 +4,6 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.ibatis.annotations.Param;
-
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 public interface ParkingLogService {
@@ -50,7 +48,19 @@ public interface ParkingLogService {
 	
 	/**
 	 * 批量手动出场未标记的停车记录
+	 * 并同步重置在场标记
+	 * @param parkId
 	 * @param parkingLogIds
 	 */
-	void batchOffUnmarkParkingLog(List<String> parkingLogIds);
+	void batchOffUnmarkParkingLog(String parkId,List<String> parkingLogIds);
+	
+	/**
+	 * 查询已标记停车记录(标记出场使用)
+	 * @param parkId
+	 * @param carNums
+	 * @param pageNum
+	 * @param pageSize
+	 * @return
+	 */
+	IPage<Map<String,Object>> queryMarkedParkingLog(String parkId,List<String> carNums, int pageNum,int pageSize);
 }

+ 10 - 1
src/main/java/com/charging/chargingparking/modules/mobileservice/impl/ParkingLogServiceImp.java

@@ -58,8 +58,17 @@ public class ParkingLogServiceImp implements ParkingLogService {
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void batchOffUnmarkParkingLog(List<String> parkingLogIds) {
+	public void batchOffUnmarkParkingLog(String parkId,List<String> parkingLogIds) {
 		 mapper.batchOffUnmarkParkingLog(parkingLogIds);
+		 mapper.resetMarkinOfPark(parkId);
+	}
+
+	@Override
+	public IPage<Map<String, Object>> queryMarkedParkingLog(String parkId,List<String> carNums, int pageNum,int pageSize) {
+		Page<Map<String, Object>> page = new Page<>();
+        page.setCurrent(pageNum);
+        page.setSize(pageSize);
+		return mapper.queryMarkedParkingLog(parkId,carNums,page);
 	}
 
 }

+ 44 - 11
src/main/resources/mapper/api/ParkingLogMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.charging.chargingparking.mapper.mobile.ParkingLogMapper">
 
-	<!-- 分类统计数量 for 查询停车记录 -->
+	<!-- 分类统计数量 for 查询停车记录 【已停用】 -->
 	<select id="rptParkingLog" parameterType="hashmap" resultType="java.util.HashMap">
 		select release_status,count(1) parking_count
 		from base_parking_record pr
@@ -29,22 +29,47 @@
 		group by release_status
 	</select>
     
+    <!-- 查询已标记停车记录(标记出场使用) -->
+    <select id="queryMarkedParkingLog" resultType="java.util.HashMap">
+    	select pr.id,park_id,car_num,release_status,
+    	ifnull(in_fragment_image,in_image) in_image,pi.parking_name,
+    	TIMESTAMPDIFF(MINUTE,in_parking_time,sysdate()) cal_parking_time, in_parking_time
+    	from base_parking_record pr
+    	left join base_parking_info pi on pr.park_id=pi.id and pi.del_flag=false
+    	where pr.del_flag=false
+    	and pr.release_status='0'
+    	and pr.mark_in=true
+    	and pr.park_id=#{parkId}
+    	<if test="carNums!=null">
+			and 
+			<foreach collection="carNums" item="car" index="index" open="(" close=")" separator=" or ">
+				pr.car_num like #{car}
+			</foreach>
+		</if>
+    </select>
+    
     <!-- 查询停车记录 -->
     <select id="queryParkingLog" parameterType="hashmap" resultType="java.util.HashMap">
     	select pr.id, TIMESTAMPDIFF(MINUTE,in_parking_time,sysdate()) cal_parking_time, in_parking_time,out_parking_time,
-    	parking_time,total_amount,pay_amount,release_status,pi.parking_name,car_num,ifnull(in_image,in_fragment_image) in_image,ifnull(out_image,out_fragment_image) out_image,
-    	mark_in,mark_time
+    	parking_time,total_amount,pay_amount,release_status,pi.parking_name,car_num,ifnull(in_fragment_image,in_image) in_image,ifnull(out_fragment_image,out_image) out_image,
+    	mark_in,mark_time,out_type
 		from base_parking_record pr
 		left join base_parking_info pi on pr.park_id=pi.id and pi.del_flag=false
 		where pr.del_flag=false
 		and pr.release_status=#{searchParams.status}
-		and pr.park_id in 
-		<foreach collection="searchParams.parkingIds" item="id" index="index" open="(" close=")" separator=",">
-	        #{id}
-	    </foreach>
+		
+		<if test="searchParams.parkingIds!=null">
+			and pr.park_id in 
+			<foreach collection="searchParams.parkingIds" item="id" index="index" open="(" close=")" separator=",">
+		        #{id}
+		    </foreach>
+	    </if>
 		
 		<if test="searchParams.carNum!=null">
-			and pr.car_num like #{searchParams.carNum}
+			and 
+			<foreach collection="searchParams.carNum" item="car" index="index" open="(" close=")" separator=" or ">
+				pr.car_num like #{car}
+			</foreach>
 		</if>
 		
 		<choose>
@@ -84,7 +109,7 @@
     </select>
     
     <!--查询未标记且状态在场内的车,用于批量手动出场  -->
-    <!--limitDate 限制为当前时间的前天  -->
+    <!--limitDate 限制为当前时间的前天  -->
     <select id="loadUnmarkButInParkingLog" resultType="java.util.HashMap">
     <![CDATA[
     	select pr.id 
@@ -99,11 +124,19 @@
     
     <!-- 批量手动出场未标记的停车记录 -->
     <update id="batchOffUnmarkParkingLog">
-    	update base_parking_record  set update_time=now(),release_status='1',remark_=concat('手动批量出场;',remark_)
+    	update base_parking_record  set update_time=now(),out_parking_time=now(),release_status='1',update_by='标记批量出场'
     	where release_status='0'
-    	and (mark_in is null or pr.mark_in=false)
+    	and (mark_in is null or mark_in=false)
+    	and id in 
 		<foreach collection="parkingLogIds" item="id" index="index" open="(" close=")" separator=",">
 	        #{id}
 	    </foreach>
     </update>
+    
+    <!-- 重置在场标记(根据标记批量出场后要重置已标记的,便于下次标记) -->
+    <update id="resetMarkinOfPark">
+    	update base_parking_record set update_time=now(),mark_in=false,update_by='标记重置'
+    	where park_id=#{parkId}
+    	and mark_in=true
+    </update>
 </mapper>