package com.boying.controller; import com.boying.common.BaseController; import com.boying.common.util.DateUtil; import com.boying.common.util.StringUtil; import com.boying.entity.*; import com.boying.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import java.beans.Transient; import java.text.ParseException; import java.util.*; import static com.boying.common.util.DateUtil.getMinute; @RestController @RequestMapping("outPark") public class OutParkController extends BaseController { @Autowired private OutParkService outParkService; @Autowired private EnterParkService enterParkService; @Autowired private BarrierService barrierService; @Autowired private TicketService ticketService; @Autowired private CostRuleService costRuleService; @PostMapping("findPage") public Object findPage(int page,int pageSize) { Pageable pageable = PageRequest.of(page-1,pageSize, Sort.Direction.DESC,"id"); Page pages = outParkService.findPage(pageable); return success("",pages); } //道闸code @PostMapping("findByBarrierCode") public Object findById(String code) { Specification specification = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { List list = new ArrayList(); list.add(cb.equal(root.get("code2").as(String.class), code)); Predicate[] arr = new Predicate[list.size()]; cq.where(list.toArray(arr)); return null; } }; List all = barrierService.findAll(specification); if(all.size()==0){ return error("未找到该设备"); }else{ Barrier barrier = all.get(0); String carNo = barrier.getCarNo(); OutPark outPark = outParkService.findByCarNoAndBarrierId(carNo,barrier.getId()); if(outPark==null){ return error("未识别到车牌号"); }else{ outPark.setParkName(barrier.getName()); return success("请求成功",outPark); } } } // @PostMapping("save") // public Object save(OutPark outPark,String barrierCode) { // if(StringUtil.isNullOrEmpty(barrierCode)){ // return error("barrierCode不能为空"); // } // if(StringUtil.isNullOrEmpty(outPark.getCarNo())){ // return error("carNo不能为空"); // } // if(outPark.getCreateTime()==null){ // return error("createTime不能为空"); // } // // Specification specification = new Specification() { // @Override // public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { // List list = new ArrayList(); // list.add(cb.equal(root.get("code").as(String.class), barrierCode)); // Predicate[] arr = new Predicate[list.size()]; // cq.where(list.toArray(arr)); // return null; // } // }; // List all = barrierService.findAll(specification); // if(all.size()==0){ // return error("未找到该设备"); // }else{ // Barrier barrier = all.get(0); // outPark.setBarrierId(barrier.getId()); // outPark.setParkId(barrier.getParkId()); // barrier.setCarNo(outPark.getCarNo()); // barrierService.save(barrier); // } // int i = -((int) (outPark.getTime())); // outPark.setEnterTime(getMinute(outPark.getCreateTime(),i)); // outParkService.save(outPark); // Map map = new HashMap<>(); // map.put("id",outPark.getId()); // return success("保存成功",map); // } @PostMapping("delete") public Object delete(Long id) { outParkService.delete(id); return success("删除成功"); } //进停车场接口 // @PostMapping("enterPark") // public Object enterPark(EnterPark enterPark,String barrierCode) { // if(StringUtil.isNullOrEmpty(barrierCode)){ // return error("barrierCode不能为空"); // } // if(StringUtil.isNullOrEmpty(enterPark.getCarNo())){ // return error("carNo不能为空"); // } // if(enterPark.getCreateTime()==null){ // return error("createTime不能为空"); // } // // Specification specification = new Specification() { // @Override // public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { // List list = new ArrayList(); // list.add(cb.equal(root.get("code").as(String.class), barrierCode)); // Predicate[] arr = new Predicate[list.size()]; // cq.where(list.toArray(arr)); // return null; // } // }; // List all = barrierService.findAll(specification); // if(all.size()==0){ // return error("未找到该设备"); // }else{ // enterPark.setBarrierId(all.get(0).getId()); // enterPark.setParkId(all.get(0).getParkId()); // } // // Specification specification2 = new Specification() { // @Override // public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { // List list = new ArrayList(); // list.add(cb.equal(root.get("carNo").as(String.class), enterPark.getCarNo())); // list.add(cb.notEqual(root.get("payStatus"), 1)); // Predicate[] arr = new Predicate[list.size()]; // cq.where(list.toArray(arr)); // return null; // } // }; // List tickets = ticketService.findAll(specification2); // if(tickets.size()>0){ // enterPark.setStatus(1);//发现有违章 // } // // enterParkService.save(enterPark); // Map map = new HashMap<>(); // map.put("id",enterPark.getId()); // return success("保存成功",map); // } @PostMapping("enterPark2") public Object enterPark(String carNo,Long barrierId,Long parkId,String code2) { Barrier barrier1 = findBarrier(code2); barrierId = barrier1.getId(); parkId = barrier1.getParkId(); enterParkService.deleteByCarNo(carNo,parkId); EnterPark enterPark = new EnterPark(); enterPark.setCreateTime(new Date()); enterPark.setCarNo(carNo); enterPark.setBarrierId(barrierId); enterPark.setParkId(parkId); // Specification specification2 = new Specification() { // @Override // public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { // List list = new ArrayList(); // list.add(cb.equal(root.get("carNo").as(String.class), enterPark.getCarNo())); // list.add(cb.notEqual(root.get("payStatus"), 1)); // Predicate[] arr = new Predicate[list.size()]; // cq.where(list.toArray(arr)); // return null; // } // }; // List tickets = ticketService.findAll(specification2); // if(tickets.size()>0){ // enterPark.setStatus(1);//发现有违章 // } enterParkService.save(enterPark); Barrier barrier = (Barrier) barrierService.findById(barrierId); barrier.setType2(1); barrierService.save(barrier); return success("请求成功"); } @PostMapping("outPark2") public Object outPark(String carNo,Long barrierId,Long parkId,String code2) { Barrier barrier1 = findBarrier(code2); barrierId = barrier1.getId(); parkId = barrier1.getParkId(); OutPark outPark = new OutPark(); outPark.setCarNo(carNo); outPark.setParkId(parkId); outPark.setBarrierId(barrierId); outPark.setCreateTime(new Date()); outPark.setCode(System.currentTimeMillis()+""); EnterPark enterPark = enterParkService.findByCarNo(carNo); if(enterPark==null){ return error("无进场记录或手机号进出输入不一致",null); }else{ outPark.setEnterTime(enterPark.getCreateTime()); } long l = outPark.getCreateTime().getTime() - enterPark.getCreateTime().getTime(); outPark.setTime(l/(1000*60)); double money = 0; try { money = costRuleService.getMoney(parkId, enterPark.getCreateTime(), outPark.getCreateTime(), 1); } catch (ParseException e) { e.printStackTrace(); } outPark.setPrice(Double.valueOf(String.format("%.1f", money))); //outPark.setStatus3(findTicket(carNo)); outParkService.save(outPark); Barrier barrier = (Barrier) barrierService.findById(barrierId); barrier.setCarNo(carNo); if(outPark.getPrice()==0&&outPark.getStatus3()==0){ barrier.setType2(1); } barrierService.save(barrier); return success("请求成功",outPark); } public Barrier findBarrier(String code2) { Specification specification = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { List list = new ArrayList(); list.add(cb.equal(root.get("code2").as(String.class), code2)); Predicate[] arr = new Predicate[list.size()]; cq.where(list.toArray(arr)); return null; } }; List all = barrierService.findAll(specification); if(all.size()==0){ return null; }else{ Barrier barrier = all.get(0); return barrier; } } //设备状态接口 // @PostMapping("status") // public Object status(String barrierCode) { // Specification specification = new Specification() { // @Override // public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { // List list = new ArrayList(); // list.add(cb.equal(root.get("code").as(String.class), barrierCode)); // Predicate[] arr = new Predicate[list.size()]; // cq.where(list.toArray(arr)); // return null; // } // }; // List all = barrierService.findAll(specification); // if(all.size()==0){ // return error("未找到该设备"); // }else{ // Barrier barrier = all.get(0); // barrier.setCreateTime(new Date()); // barrierService.save(barrier); // } // return success("保存成功"); // } }