From 64b11e539b05798b7b460305d2ee36e81489d8ae Mon Sep 17 00:00:00 2001 From: kongdeqiang <123456> Date: 星期二, 03 十二月 2024 17:31:22 +0800 Subject: [PATCH] fix : 新增修改出场接口 --- src/main/java/com/boying/controller/EnterParkController.java | 153 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 147 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/boying/controller/EnterParkController.java b/src/main/java/com/boying/controller/EnterParkController.java index ec9488d..9e18a34 100644 --- a/src/main/java/com/boying/controller/EnterParkController.java +++ b/src/main/java/com/boying/controller/EnterParkController.java @@ -1,27 +1,29 @@ package com.boying.controller; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.boying.common.R; -import com.boying.entity.Barrier; -import com.boying.entity.EnterPark; -import com.boying.entity.OutPark; -import com.boying.service.BarrierService; -import com.boying.service.EnterParkService; -import com.boying.service.ParkService; +import com.boying.entity.*; +import com.boying.service.*; +import com.boying.util.DateUtilOther; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.*; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.Date; import java.util.List; +import java.util.concurrent.TimeUnit; /** * 鍏ュ満琛� @@ -36,8 +38,13 @@ public class EnterParkController { private final EnterParkService enterParkService; + private final OutParkService outParkService; + private final OutParkLogService outParkLogService; private final BarrierService barrierService; private final ParkService parkService; + private final CostRuleService costRuleService; + private final WhiteListService whiteListService; + private final StringRedisTemplate redisTemplate; /** * 鍒嗛〉鏌ヨ @@ -85,6 +92,140 @@ return R.ok(page); } + @PostMapping("/findByCar") + public Object findByCar(String carNo,Integer parkId) { + if(StringUtils.isBlank(carNo)){ + return R.failed("璇疯緭鍏ユ纭溅鐗屽彿"); + }else { + QueryWrapper<EnterPark> queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda() + .eq(EnterPark::getCarNo,carNo) + .eq(EnterPark::getParkId,parkId); + List<EnterPark> list = enterParkService.list(queryWrapper); + if(list !=null && list.size()>0){ + for (EnterPark enterPark : list) { + enterPark.setParkName(parkService.getById(enterPark.getParkId()).getName()); + } + return R.ok(list); + }else { + return R.failed("璇ヨ溅鐗屾湭鏌ヨ鍒板叆鍦鸿褰�"); + } + } + } + + @PostMapping("/getByBarrierId") + public Object getByBarrierId(Integer barrierId) throws ParseException { + Barrier byId1 = barrierService.getById(barrierId); + OutPark byId = outParkService.findByCarNoAndBarrierId(byId1.getCarNo(), barrierId); + if(byId==null){ + return R.failed("鏈煡璇㈠埌鍑哄満璁板綍"); + }else { + return R.ok(byId); + } + + } + + @PostMapping("/editOutByEnter") + public Object editOutByEnter(Integer outParkId,String carNo,Integer enterId) throws ParseException { + double money = 0.0; + OutPark outPark = outParkService.getById(outParkId); + EnterPark enterPark = enterParkService.getById(enterId); + outPark.setCarNo(enterPark.getCarNo()); + outPark.setEnterTime(enterPark.getCreateTime()); + try { + long l = outPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() - enterPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli(); + outPark.setTime(l/(1000*60)); + money = costRuleService.getMoney(enterPark.getParkId(), outPark.getEnterTime(), outPark.getCreateTime(), 1); + //鍏ュ満璁板綍淇濆瓨涓�涓� + if(enterPark.getIsPay() != null && enterPark.getIsPay()==1){ + money = money - enterPark.getPrice(); + }else { + enterPark.setPrice(money); + enterPark.setIsPay(0); + enterParkService.updateById(enterPark); + } + } catch (ParseException e) { + e.printStackTrace(); + } + outPark.setPrice(money); + outPark.setStatus3(0); + outParkService.saveOrUpdate(outPark); + Barrier barrier =barrierService.getById(outPark.getBarrierId()); + barrier.setCarNo(carNo); + //鍒ゆ柇鏄惁鍦ㄧ櫧鍚嶅崟 + QueryWrapper<WhiteList> wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(WhiteList::getCarNo,carNo); + List<WhiteList> all = whiteListService.list(wrapper); + if(all.size() >0){ + for(WhiteList w : all){ + if(w.getType()==0){ + outPark.setStatus(2); + outPark.setStatus2(1); + outParkService.saveOrUpdate(outPark); + barrierService.saveOrUpdate(barrier); + String jsonValue2 = JSON.toJSONString(barrier); + redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2); + String jsonValue = JSON.toJSONString(outPark); + redisTemplate.opsForValue().set("outPark_dif_"+ outPark.getBarrierId(), jsonValue); + //缂撳瓨鍦╮edis閲�,蹇冭烦鎺ュ彛鍘绘姮鏉� + String jsonValue1 = JSON.toJSONString(outPark); + redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue1); + redisTemplate.opsForValue().set("park_change_in_"+outPark.getParkId(),"true",1, TimeUnit.DAYS); + return R.ok("鎿嶄綔鎴愬姛"); + }else{ + if(StringUtils.isNotBlank(w.getParkIds())){ + if(w.getEndTime()!=null){ + String parkIds = w.getParkIds(); + String[] split = parkIds.split(","); + for (String s : split) { + int pid = Integer.parseInt(s); + if(pid == outPark.getParkId() && System.currentTimeMillis()<w.getEndTime().getTime()){ + outPark.setStatus(2); + outPark.setStatus2(1); + outParkService.saveOrUpdate(outPark); + barrierService.saveOrUpdate(barrier); + String jsonValue2 = JSON.toJSONString(barrier); + redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2); + String jsonValue = JSON.toJSONString(outPark); + redisTemplate.opsForValue().set("outPark_dif_"+ outPark.getBarrierId(), jsonValue); + //缂撳瓨鍦╮edis閲�,蹇冭烦鎺ュ彛鍘绘姮鏉� + String jsonValue1 = JSON.toJSONString(outPark); + redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue1); + redisTemplate.opsForValue().set("park_change_in_"+outPark.getParkId(),"true",1, TimeUnit.DAYS); + return R.ok("鎿嶄綔鎴愬姛"); + } + } + } + } + } + } + }else { + barrierService.saveOrUpdate(barrier); + String jsonValue2 = JSON.toJSONString(barrier); + redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2); + if(outPark.getPrice()==0&&outPark.getStatus3()==0){ + String jsonValue = JSON.toJSONString(outPark); + redisTemplate.opsForValue().set("outPark_dif_"+ barrier.getId(), jsonValue); + String jsonValue1 = JSON.toJSONString(outPark); + redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue1); + redisTemplate.opsForValue().set("park_change_in_"+outPark.getParkId(),"true",1, TimeUnit.DAYS); + return R.ok("鎿嶄綔鎴愬姛"); + }else { + //闇�瑕佺即璐规垨鑰呮湁杩濈珷 + OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId()); + byOutPark.setOutTime(outPark.getCreateTime()); + byOutPark.setParkId(outPark.getParkId()); + byOutPark.setCarNo(carNo); + outParkLogService.saveOrUpdate(byOutPark); + String jsonValue = JSON.toJSONString(outPark); + redisTemplate.opsForValue().set("outPark_dif_"+ barrier.getId(), jsonValue); + return R.ok("鎿嶄綔鎴愬姛,璇锋壂鐮佺即璐�"); + } + } + return R.failed("鎿嶄綔澶辫触"); + } + /** * 閫氳繃id鏌ヨ鍏ュ満琛� * @param id id -- Gitblit v1.9.1