|  |  |  | 
|---|
|  |  |  | import com.doumee.core.utils.DateUtil; | 
|---|
|  |  |  | import com.doumee.core.utils.Utils; | 
|---|
|  |  |  | import com.doumee.dao.business.CarEventMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.CarsMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.ParksMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.VisitsMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.join.ParkBookJoinMapper; | 
|---|
|  |  |  | import com.doumee.dao.business.model.*; | 
|---|
|  |  |  | import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
|---|
|  |  |  | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Objects; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 海康停车库同步Service实现 | 
|---|
|  |  |  | 
|---|
|  |  |  | private ParkBookJoinMapper parkBookMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private CarEventMapper carEventMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private CarsMapper carsMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private VisitsMapper visitsMapper; | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public  void syncParkBookData() { | 
|---|
|  |  |  | if(Constants.DEALING_HK_PARKBOOK){ | 
|---|
|  |  |  | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Date date = new Date(); | 
|---|
|  |  |  | //先出所有需要取消包期的数据记录 | 
|---|
|  |  |  | for(ParkBook c : list) { | 
|---|
|  |  |  | if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)){ | 
|---|
|  |  |  | //如果取消预约,则进行取消包期 | 
|---|
|  |  |  | if(StringUtils.isNotBlank(c.getParkHkId()) | 
|---|
|  |  |  | && StringUtils.isNotBlank(c.getCarCode())){ | 
|---|
|  |  |  | boolean result =  cancelParkBookHk(c); | 
|---|
|  |  |  | c.setHkStatus(result?Constants.ONE:Constants.TWO); | 
|---|
|  |  |  | c.setRemark(result?"取消包期成功":"取消包期失败"); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | c.setHkStatus(Constants.TWO);//下发失败 | 
|---|
|  |  |  | c.setRemark("取消包期失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | c.setHkDate(date); | 
|---|
|  |  |  | parkBookMapper.updateById(c); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //处理所有需要包期的车辆数据记录 | 
|---|
|  |  |  | for(ParkBook c : list) { | 
|---|
|  |  |  | if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)) { | 
|---|
|  |  |  | //删除的已处理,跳过处理 | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | dealParkBookBiz(c,date); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | }finally { | 
|---|
|  |  |  | Constants.DEALING_HK_PARKBOOK =false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void dealParkBookBiz(ParkBook c,Date date) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)) { | 
|---|
|  |  |  | //如果取消预约,则进行取消包期 | 
|---|
|  |  |  | if(StringUtils.isNotBlank(c.getParkHkId()) | 
|---|
|  |  |  | && StringUtils.isNotBlank(c.getCarCode())){ | 
|---|
|  |  |  | boolean result =  cancelParkBookHk(c); | 
|---|
|  |  |  | c.setHkStatus(result?Constants.ONE:Constants.TWO); | 
|---|
|  |  |  | c.setRemark(result?"取消包期成功":"取消包期失败"); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | c.setHkStatus(Constants.TWO);//下发失败 | 
|---|
|  |  |  | c.setRemark("取消包期失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //数据不合法,直接提示下发失败 | 
|---|
|  |  |  | c.setHkDate(date); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //如果是新增包期,数据不合法,直接提示下发失败 | 
|---|
|  |  |  | if(StringUtils.isNotBlank(c.getParkHkId()) | 
|---|
|  |  |  | && StringUtils.isNotBlank(c.getCarCode())){ | 
|---|
|  |  |  | boolean result =  addParkBookHk(c); | 
|---|
|  |  |  | 
|---|
|  |  |  | c.setHkStatus(Constants.TWO); | 
|---|
|  |  |  | c.setRemark("包期失败~"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | c.setHkDate(date); | 
|---|
|  |  |  | parkBookMapper.updateById(c); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | c.setHkDate(date); | 
|---|
|  |  |  | parkBookMapper.updateById(c); | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | }finally { | 
|---|
|  |  |  | Constants.DEALING_HK_PARKBOOK =false; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public  void syncParkBookBySingleModel(ParkBook c) { | 
|---|
|  |  |  | if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)){ | 
|---|
|  |  |  | 
|---|
|  |  |  | CarChargeAddRequest param = new CarChargeAddRequest(); | 
|---|
|  |  |  | param.setPlateNo(c.getCarCode()); | 
|---|
|  |  |  | param.setParkSyscode(c.getParkHkId()); | 
|---|
|  |  |  | param.setStartTime(DateUtil.getShortTime(c.getStartTime())); | 
|---|
|  |  |  | param.setEndTime(DateUtil.getShortTime(c.getEndTime())); | 
|---|
|  |  |  | param.setStartTime(Objects.isNull(c.getStartTime())?DateUtil.getDate(new Date(),"yyyy-MM-dd"):DateUtil.getShortTimeToNull(c.getStartTime())); | 
|---|
|  |  |  | param.setEndTime(Objects.isNull(c.getEndTime())?"2999-12-31":DateUtil.getShortTimeToNull(c.getEndTime())); | 
|---|
|  |  |  | BaseResponse response = HKService.carChargeAddtion(param); | 
|---|
|  |  |  | if(response!=null | 
|---|
|  |  |  | && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){ | 
|---|
|  |  |  | 
|---|
|  |  |  | queryWrapper.selectAs(Parks::getHkId,ParkBook::getParkHkId); | 
|---|
|  |  |  | queryWrapper.leftJoin(Parks.class,Parks::getId,ParkBook::getParkId); | 
|---|
|  |  |  | queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode); | 
|---|
|  |  |  | List<ParkBook> list = parkBookMapper.selectJoinList(ParkBook.class,queryWrapper.eq(ParkBook::getHkStatus,Constants.ZERO)); | 
|---|
|  |  |  | List<ParkBook> list = parkBookMapper.selectJoinList(ParkBook.class,queryWrapper.eq(ParkBook::getHkStatus,Constants.ZERO).orderByAsc(ParkBook::getId)); | 
|---|
|  |  |  | return list; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private void getDataChangeList(List<Parks> allList, List<ParkListResponse> allHkList, List<Parks> addList, List<Parks> editList,List<Parks> deleteList, Date date) { | 
|---|
|  |  |  | if(allHkList!=null && allHkList.size()>0){ | 
|---|
|  |  |  | for(ParkListResponse device : allHkList){ | 
|---|
|  |  |  | Parks model = getExistedData(device,allList); | 
|---|
|  |  |  | if(model !=null){ | 
|---|
|  |  |  | //如果已存在,则更新数据 | 
|---|
|  |  |  | model =  initModelByHkData(model,device,date); | 
|---|
|  |  |  | editList.add(model); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //如果不存在,则新增数据 | 
|---|
|  |  |  | model = new Parks(); | 
|---|
|  |  |  | model =  initModelByHkData(model,device,date); | 
|---|
|  |  |  | addList.add(model); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //判断获取删除的门禁设备,逻辑删除 | 
|---|
|  |  |  | getDeleteList(allList,allHkList,deleteList,date); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 同步海康停车库数据 | 
|---|
|  |  |  | 
|---|
|  |  |  | }finally { | 
|---|
|  |  |  | Constants.DEALING_HK_SYNCPRIVILEGE =false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private void getDataChangeList(List<Parks> allList, List<ParkListResponse> allHkList, List<Parks> addList, List<Parks> editList,List<Parks> deleteList, Date date) { | 
|---|
|  |  |  | if(allHkList!=null && allHkList.size()>0){ | 
|---|
|  |  |  | for(ParkListResponse device : allHkList){ | 
|---|
|  |  |  | Parks model = getExistedData(device,allList); | 
|---|
|  |  |  | if(model !=null){ | 
|---|
|  |  |  | //如果已存在,则更新数据 | 
|---|
|  |  |  | model =  initModelByHkData(model,device,date); | 
|---|
|  |  |  | editList.add(model); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //如果不存在,则新增数据 | 
|---|
|  |  |  | model = new Parks(); | 
|---|
|  |  |  | model =  initModelByHkData(model,device,date); | 
|---|
|  |  |  | addList.add(model); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //判断获取删除的门禁设备,逻辑删除 | 
|---|
|  |  |  | getDeleteList(allList,allHkList,deleteList,date); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | c.setParkIndex(model.getParkSyscode()); | 
|---|
|  |  |  | c.setParkName(model.getParkName()); | 
|---|
|  |  |  | c.setEventId(model.getCrossRecordSyscode()); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(model.getPlateNo())){ | 
|---|
|  |  |  | Cars car =  carsMapper.selectOne(new QueryWrapper<Cars>().lambda() | 
|---|
|  |  |  | .eq(Cars::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(Cars::getCode,model.getPlateNo()) | 
|---|
|  |  |  | .last("limit 1" )); | 
|---|
|  |  |  | if(car!=null){ | 
|---|
|  |  |  | //如果是内部人员 | 
|---|
|  |  |  | c.setMemberId(car.getMemberId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Visits visits =  visitsMapper.selectOne(new QueryWrapper<Visits>().lambda() | 
|---|
|  |  |  | .eq(Visits::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(Visits::getCarNos,model.getPlateNo()) | 
|---|
|  |  |  | .last("limit 1" )); | 
|---|
|  |  |  | if(visits!=null){ | 
|---|
|  |  |  | //如果是访客 | 
|---|
|  |  |  | c.setMemberId(visits.getMemberId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | c.setGateIndex(model.getEntranceSyscode()); | 
|---|
|  |  |  | c.setGateName(model.getEntranceName()); | 
|---|
|  |  |  | c.setIsdeleted(Constants.ZERO); | 
|---|