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