| | |
| | | import com.java110.po.fee.PayFeePo; |
| | | import com.java110.po.owner.OwnerPo; |
| | | import com.java110.utils.exception.CmdException; |
| | | import com.java110.utils.lock.DistributedLock; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.DateUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | |
| | | //是否是临时车 |
| | | String tempCar = OwnerCarDto.LEASE_TYPE_TEMP; |
| | | String tempCarName ="临时车"; |
| | | String tempCarName = "临时车"; |
| | | |
| | | |
| | | //查询设备信息 |
| | |
| | | |
| | | Assert.listOnlyOne(machineDtos, "设备不存在"); |
| | | |
| | | List<String> paIds = new ArrayList<>(); |
| | | ParkingBoxAreaDto parkingBoxAreaDto = new ParkingBoxAreaDto(); |
| | | parkingBoxAreaDto.setBoxId(machineDto.getLocationObjId()); |
| | | List<ParkingBoxAreaDto> parkingBoxAreaDtos = parkingBoxAreaV1InnerServiceSMOImpl.queryParkingBoxAreas(parkingBoxAreaDto); |
| | | if (parkingBoxAreaDtos != null && parkingBoxAreaDtos.size() > 0) { |
| | | for (ParkingBoxAreaDto parkingBoxAreaDto1 : parkingBoxAreaDtos) { |
| | | paIds.add(parkingBoxAreaDto1.getPaId()); |
| | | } |
| | | } |
| | | |
| | | //查询车辆 |
| | | OwnerCarDto ownerCarDto = new OwnerCarDto(); |
| | | ownerCarDto.setCarNum(reqJson.getString("carNum")); |
| | | ownerCarDto.setCommunityId(reqJson.getString("communityId")); |
| | | ownerCarDto.setPaIds(paIds.toArray(new String[paIds.size()])); |
| | | List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto); |
| | | |
| | | //说明是临时车 |
| | |
| | | reqJson.put("carId", ownerCarDtos.get(0).getCarId()); |
| | | tempCar = ownerCarDtos.get(0).getLeaseType(); |
| | | tempCarName = ownerCarDtos.get(0).getLeaseTypeName(); |
| | | if(ownerCarDtos.size()>1){ |
| | | for(OwnerCarDto tmpOwnerCarDto : ownerCarDtos){ |
| | | if(OwnerCarDto.LEASE_TYPE_TEMP.equals(tmpOwnerCarDto.getLeaseType())){ |
| | | continue; |
| | | if (ownerCarDtos.size() > 1) { |
| | | for (OwnerCarDto tmpOwnerCarDto : ownerCarDtos) { |
| | | if (OwnerCarDto.LEASE_TYPE_TEMP.equals(tmpOwnerCarDto.getLeaseType())) { |
| | | continue; |
| | | } |
| | | tempCar = tmpOwnerCarDto.getLeaseType(); |
| | | tempCarName = tmpOwnerCarDto.getLeaseTypeName(); |
| | |
| | | |
| | | //进场处理 |
| | | if (MachineDto.DIRECTION_IN.equals(machineDtos.get(0).getDirection())) { |
| | | carIn(reqJson, machineDtos.get(0), tempCar,tempCarName); |
| | | carIn(reqJson, machineDtos.get(0), tempCar, tempCarName); |
| | | } else { |
| | | carOut(reqJson, machineDtos.get(0), tempCar,tempCarName); |
| | | carOut(reqJson, machineDtos.get(0), tempCar, tempCarName); |
| | | } |
| | | |
| | | } |
| | |
| | | * @param machineDto |
| | | * @param tempCar |
| | | */ |
| | | private void carOut(JSONObject reqJson, MachineDto machineDto, String tempCar,String tempCarName) { |
| | | private void carOut(JSONObject reqJson, MachineDto machineDto, String tempCar, String tempCarName) { |
| | | |
| | | String state = CarInoutDto.STATE_OUT; |
| | | //进场失败记录 |
| | |
| | | carInoutDetailPo.setRemark(reqJson.getString("remark")); |
| | | carInoutDetailPo.setState(state); |
| | | carInoutDetailPo.setCarType(CAR_TYPE_NO_DATA.equals(tempCar) ? OwnerCarDto.LEASE_TYPE_TEMP + "" : tempCar + ""); |
| | | carInoutDetailPo.setCarTypeName(CAR_TYPE_NO_DATA.equals(tempCar) ? "临时车" : tempCarName); |
| | | int flag = carInoutDetailV1InnerServiceSMOImpl.saveCarInoutDetail(carInoutDetailPo); |
| | | if (flag < 1) { |
| | | throw new CmdException("保存出记录明细失败"); |
| | |
| | | carInoutDetailPo.setMachineId(machineDto.getMachineId()); |
| | | carInoutDetailPo.setPaId(carInoutDtos.get(0).getPaId()); |
| | | carInoutDetailPo.setRemark(reqJson.getString("remark")); |
| | | carInoutDetailPo.setPhotoJpg(reqJson.getString("photoJpg")); |
| | | carInoutDetailPo.setState(state); |
| | | if(CAR_TYPE_NO_DATA.equals(tempCar)){ |
| | | if (CAR_TYPE_NO_DATA.equals(tempCar)) { |
| | | carInoutDetailPo.setCarType(OwnerCarDto.LEASE_TYPE_TEMP); |
| | | carInoutDetailPo.setCarTypeName("临时车"); |
| | | //检查是否为黑白名单 |
| | |
| | | carBlackWhiteDto.setPaId(carInoutDtos.get(0).getPaId()); |
| | | carBlackWhiteDto.setValidity("Y"); |
| | | List<CarBlackWhiteDto> carBlackWhiteDtos = carBlackWhiteV1InnerServiceSMOImpl.queryCarBlackWhites(carBlackWhiteDto); |
| | | if(carBlackWhiteDtos != null && carBlackWhiteDtos.size() >0 ){ |
| | | if(CarBlackWhiteDto.BLACK_WHITE_BLACK.equals(carBlackWhiteDtos.get(0).getBlackWhite())){ |
| | | if (carBlackWhiteDtos != null && carBlackWhiteDtos.size() > 0) { |
| | | if (CarBlackWhiteDto.BLACK_WHITE_BLACK.equals(carBlackWhiteDtos.get(0).getBlackWhite())) { |
| | | carInoutDetailPo.setCarType("B"); |
| | | carInoutDetailPo.setCarTypeName("黑名单"); |
| | | }else{ |
| | | } else { |
| | | carInoutDetailPo.setCarType("W"); |
| | | carInoutDetailPo.setCarTypeName("白名单"); |
| | | } |
| | | } |
| | | }else{ |
| | | } else { |
| | | carInoutDetailPo.setCarType(tempCar); |
| | | carInoutDetailPo.setCarTypeName(tempCarName); |
| | | } |
| | |
| | | |
| | | //将状态更新为 出场状态 |
| | | |
| | | CarInoutPo carInoutPo = new CarInoutPo(); |
| | | carInoutPo.setPaId(carInoutDtos.get(0).getPaId()); |
| | | carInoutPo.setOutTime(reqJson.getString("outTime")); |
| | | carInoutPo.setInoutId(carInoutDtos.get(0).getInoutId()); |
| | | carInoutPo.setCommunityId(carInoutDtos.get(0).getCommunityId()); |
| | | carInoutPo.setState(CarInoutDto.STATE_OUT); |
| | | flag = carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo); |
| | | |
| | | if (flag < 1) { |
| | | throw new CmdException("更新出场时间失败"); |
| | | } |
| | | updateCarInoutState(reqJson, carInoutDtos.get(0)); |
| | | |
| | | //写支付记录 |
| | | // CarInoutPaymentPo carInoutPaymentPo = new CarInoutPaymentPo(); |
| | |
| | | // hasFeeAndPayFee(carInoutDtos.get(0), reqJson, carInoutPo, carInoutPaymentPo); |
| | | } |
| | | |
| | | private void updateCarInoutState(JSONObject reqJson, CarInoutDto carInoutDto) { |
| | | int flag; |
| | | String requestId = DistributedLock.getLockUUID(); |
| | | String key = "updateInoutState_" + carInoutDto.getInoutId(); |
| | | try { |
| | | DistributedLock.waitGetDistributedLock(key, requestId); |
| | | |
| | | |
| | | CarInoutDto newCarInoutDto = new CarInoutDto(); |
| | | newCarInoutDto.setCommunityId(reqJson.getString("communityId")); |
| | | newCarInoutDto.setCarNum(reqJson.getString("carNum")); |
| | | newCarInoutDto.setPaId(carInoutDto.getPaId()); |
| | | newCarInoutDto.setStates(new String[]{ |
| | | CarInoutDto.STATE_IN, |
| | | CarInoutDto.STATE_PAY, |
| | | CarInoutDto.STATE_REPAY |
| | | }); |
| | | List<CarInoutDto> carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(newCarInoutDto); |
| | | |
| | | if(carInoutDtos == null || carInoutDtos.size()<1){ |
| | | return ; |
| | | } |
| | | |
| | | CarInoutPo carInoutPo = new CarInoutPo(); |
| | | carInoutPo.setPaId(carInoutDto.getPaId()); |
| | | carInoutPo.setOutTime(reqJson.getString("outTime")); |
| | | carInoutPo.setInoutId(carInoutDto.getInoutId()); |
| | | carInoutPo.setCommunityId(carInoutDto.getCommunityId()); |
| | | carInoutPo.setState(CarInoutDto.STATE_OUT); |
| | | flag = carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo); |
| | | |
| | | if (flag < 1) { |
| | | throw new CmdException("更新出场时间失败"); |
| | | } |
| | | } finally { |
| | | DistributedLock.releaseDistributedLock(requestId, key); |
| | | } |
| | | } |
| | | |
| | | private boolean hasFeeAndPayFee(CarInoutDto carInoutDto, JSONObject reqJson, CarInoutPo carInoutPo, CarInoutPaymentPo carInoutPaymentPo) { |
| | | |
| | | FeeAttrDto feeAttrDto = new FeeAttrDto(); |
| | |
| | | * @param machineDto |
| | | * @param tempCar |
| | | */ |
| | | private void carIn(JSONObject reqJson, MachineDto machineDto, String tempCar,String tempCarName) { |
| | | private void carIn(JSONObject reqJson, MachineDto machineDto, String tempCar, String tempCarName) { |
| | | String state = CarInoutDto.STATE_IN; |
| | | //进场失败记录 |
| | | if (reqJson.containsKey("state") && "5".equals(reqJson.getString("state"))) { |
| | |
| | | carInoutDetailPo.setPaId(paId); |
| | | carInoutDetailPo.setState(state); |
| | | carInoutDetailPo.setRemark(reqJson.getString("remark")); |
| | | if(CAR_TYPE_NO_DATA.equals(tempCar)){ |
| | | carInoutDetailPo.setPhotoJpg(reqJson.getString("photoJpg")); |
| | | if (CAR_TYPE_NO_DATA.equals(tempCar)) { |
| | | carInoutDetailPo.setCarType(OwnerCarDto.LEASE_TYPE_TEMP); |
| | | carInoutDetailPo.setCarTypeName("临时车"); |
| | | //检查是否为黑白名单 |
| | |
| | | carBlackWhiteDto.setPaId(paId); |
| | | carBlackWhiteDto.setValidity("Y"); |
| | | List<CarBlackWhiteDto> carBlackWhiteDtos = carBlackWhiteV1InnerServiceSMOImpl.queryCarBlackWhites(carBlackWhiteDto); |
| | | if(carBlackWhiteDtos != null && carBlackWhiteDtos.size() >0 ){ |
| | | if(CarBlackWhiteDto.BLACK_WHITE_BLACK.equals(carBlackWhiteDtos.get(0).getBlackWhite())){ |
| | | if (carBlackWhiteDtos != null && carBlackWhiteDtos.size() > 0) { |
| | | if (CarBlackWhiteDto.BLACK_WHITE_BLACK.equals(carBlackWhiteDtos.get(0).getBlackWhite())) { |
| | | carInoutDetailPo.setCarType("B"); |
| | | carInoutDetailPo.setCarTypeName("黑名单"); |
| | | }else{ |
| | | } else { |
| | | carInoutDetailPo.setCarType("W"); |
| | | carInoutDetailPo.setCarTypeName("白名单"); |
| | | } |
| | | } |
| | | }else{ |
| | | } else { |
| | | carInoutDetailPo.setCarType(tempCar); |
| | | carInoutDetailPo.setCarTypeName(tempCarName); |
| | | } |
| | |
| | | throw new CmdException("保存入记录明细失败"); |
| | | } |
| | | //月租车 |
| | | if (!OwnerCarDto.LEASE_TYPE_TEMP.equals(tempCar)) { |
| | | if (!OwnerCarDto.LEASE_TYPE_TEMP.equals(carInoutDetailPo.getCarType())) { |
| | | return; |
| | | } |
| | | |