| | |
| | | import com.java110.dto.machine.CarBlackWhiteDto; |
| | | import com.java110.dto.machine.MachineDto; |
| | | import com.java110.dto.oaWorkflow.OaWorkflowDto; |
| | | import com.java110.dto.oaWorkflowXml.OaWorkflowXmlDto; |
| | | import com.java110.dto.owner.OwnerCarDto; |
| | | import com.java110.dto.parking.ParkingSpaceDto; |
| | | import com.java110.dto.visit.VisitDto; |
| | |
| | | import com.java110.intf.common.*; |
| | | import com.java110.intf.community.*; |
| | | import com.java110.intf.oa.IOaWorkflowInnerServiceSMO; |
| | | import com.java110.intf.oa.IOaWorkflowXmlInnerServiceSMO; |
| | | import com.java110.intf.user.*; |
| | | import com.java110.po.accessControlWhite.AccessControlWhitePo; |
| | | import com.java110.po.car.CarBlackWhitePo; |
| | |
| | | @Autowired |
| | | private IOaWorkflowActivitiInnerServiceSMO oaWorkflowActivitiInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IOaWorkflowXmlInnerServiceSMO oaWorkflowXmlInnerServiceSMOImpl; |
| | | |
| | | public static final String CODE_PREFIX_ID = "10"; |
| | | |
| | | //键 |
| | |
| | | return; // 需要审核结束,审核时处理 相应 送图片 和车牌数据 |
| | | } |
| | | |
| | | String faceWay = "Y"; |
| | | String carNumWay = "N"; |
| | | |
| | | // 查询访客设置 |
| | | VisitSettingDto visitSettingDto = new VisitSettingDto(); |
| | | visitSettingDto.setCommunityId(reqJson.getString("communityId")); |
| | | List<VisitSettingDto> visitSettingDtos = visitSettingV1InnerServiceSMOImpl.queryVisitSettings(visitSettingDto); |
| | | |
| | | if (visitSettingDtos != null && visitSettingDtos.size() > 0) { |
| | | faceWay = visitSettingDtos.get(0).getFaceWay(); |
| | | carNumWay = visitSettingDtos.get(0).getCarNumWay(); |
| | | // 同步车牌 这里需要停车场,所以没有配置访客设置,不同步 |
| | | synchronizedVisitCarNum(visitPo, carNumWay, visitSettingDtos.get(0)); |
| | | } |
| | | |
| | | // 同步访客人脸 |
| | | synchronousVisitFace(visitPo, faceWay, reqJson.getString("photo")); |
| | | |
| | | visitPo = new VisitPo(); |
| | | visitPo.setState(VisitDto.STATE_C); |
| | | visitPo.setvId(reqJson.getString("vId")); |
| | |
| | | } |
| | | } |
| | | |
| | | private void synchronousVisitFace(VisitPo visitPo, String faceWay, String photo) { |
| | | if (VisitSettingDto.FACE_WAY_NO.equals(faceWay) || StringUtil.isEmpty(photo)) { |
| | | return; |
| | | } |
| | | // 查询 访问业主可以访问的门禁设备 |
| | | RoomDto roomDto = new RoomDto(); |
| | | roomDto.setOwnerId(visitPo.getOwnerId()); |
| | | //这种情况说明 业主已经删掉了 需要查询状态为 1 的数据 |
| | | List<RoomDto> rooms = roomInnerServiceSMOImpl.queryRoomsByOwner(roomDto); |
| | | |
| | | //拿到小区ID |
| | | String communityId = visitPo.getCommunityId(); |
| | | //根据小区ID查询现有设备 |
| | | MachineDto machineDto = new MachineDto(); |
| | | machineDto.setCommunityId(communityId); |
| | | //String[] locationObjIds = new String[]{communityId}; |
| | | List<String> locationObjIds = new ArrayList<>(); |
| | | locationObjIds.add(communityId); |
| | | for (RoomDto tRoomDto : rooms) { |
| | | locationObjIds.add(tRoomDto.getUnitId()); |
| | | locationObjIds.add(tRoomDto.getRoomId()); |
| | | locationObjIds.add(tRoomDto.getFloorId()); |
| | | } |
| | | |
| | | machineDto.setLocationObjIds(locationObjIds.toArray(new String[locationObjIds.size()])); |
| | | List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto); |
| | | if (machineDtos == null || machineDtos.size() < 1) { |
| | | return; |
| | | } |
| | | |
| | | // 同步到 门禁白名单中 |
| | | for (MachineDto tmpMachineDto : machineDtos) { |
| | | if (!"9999".equals(tmpMachineDto.getMachineTypeCd())) { |
| | | continue; |
| | | } |
| | | AccessControlWhiteDto accessControlWhiteDto = new AccessControlWhiteDto(); |
| | | accessControlWhiteDto.setCommunityId(communityId); |
| | | accessControlWhiteDto.setTel(visitPo.getPhoneNumber()); |
| | | accessControlWhiteDto.setMachineId(tmpMachineDto.getMachineId()); |
| | | List<AccessControlWhiteDto> accessControlWhiteDtos = accessControlWhiteV1InnerServiceSMOImpl.queryAccessControlWhites(accessControlWhiteDto); |
| | | AccessControlWhitePo accessControlWhitePo = new AccessControlWhitePo(); |
| | | if (accessControlWhiteDtos == null || accessControlWhiteDtos.size() < 1) { |
| | | accessControlWhitePo.setAcwId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID)); |
| | | accessControlWhitePo.setCommunityId(visitPo.getCommunityId()); |
| | | accessControlWhitePo.setEndTime(visitPo.getDepartureTime()); |
| | | accessControlWhitePo.setIdCard(""); |
| | | accessControlWhitePo.setMachineId(tmpMachineDto.getMachineId()); |
| | | accessControlWhitePo.setPersonName(visitPo.getvName()); |
| | | accessControlWhitePo.setPersonType(AccessControlWhiteDto.PERSON_TYPE_VISIT); |
| | | accessControlWhitePo.setStartTime(visitPo.getVisitTime()); |
| | | accessControlWhitePo.setTel(visitPo.getPhoneNumber()); |
| | | accessControlWhitePo.setThirdId(visitPo.getvId()); |
| | | int flag = accessControlWhiteV1InnerServiceSMOImpl.saveAccessControlWhite(accessControlWhitePo); |
| | | if (flag < 1) { |
| | | throw new CmdException("同步门禁白名单失败"); |
| | | } |
| | | } else { |
| | | accessControlWhitePo.setAcwId(accessControlWhiteDtos.get(0).getAcwId()); |
| | | accessControlWhitePo.setStartTime(visitPo.getVisitTime()); |
| | | accessControlWhitePo.setEndTime(visitPo.getDepartureTime()); |
| | | int flag = accessControlWhiteV1InnerServiceSMOImpl.updateAccessControlWhite(accessControlWhitePo); |
| | | if (flag < 1) { |
| | | throw new CmdException("保存数据失败"); |
| | | } |
| | | } |
| | | |
| | | photoSMOImpl.savePhoto(photo, accessControlWhitePo.getAcwId(), accessControlWhitePo.getCommunityId()); |
| | | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 预约车辆 加入 白名单 是最合适的 |
| | | * 不应该加入到业主车辆中 |
| | | * |
| | | * @param visitPo |
| | | * @param carNumWay |
| | | * @param visitSettingDto |
| | | */ |
| | | private void synchronizedVisitCarNum(VisitPo visitPo, String carNumWay, VisitSettingDto visitSettingDto) { |
| | | if (VisitSettingDto.CAR_NUM_WAY_NO.equals(carNumWay)) { |
| | | return; |
| | | } |
| | | |
| | | CarBlackWhitePo carBlackWhitePo = new CarBlackWhitePo(); |
| | | carBlackWhitePo.setCarNum(visitPo.getCarNum()); |
| | | carBlackWhitePo.setBlackWhite(CarBlackWhiteDto.BLACK_WHITE_WHITE); |
| | | carBlackWhitePo.setCommunityId(visitPo.getCommunityId()); |
| | | carBlackWhitePo.setPaId(visitSettingDto.getPaId()); |
| | | carBlackWhitePo.setBwId(GenerateCodeFactory.getGeneratorId("11")); |
| | | carBlackWhitePo.setStartTime(visitPo.getVisitTime()); |
| | | carBlackWhitePo.setEndTime(visitPo.getDepartureTime()); |
| | | int flag = carBlackWhiteV1InnerServiceSMOImpl.saveCarBlackWhite(carBlackWhitePo); |
| | | if (flag < 1) { |
| | | throw new CmdException("预约车辆添加白名单失败"); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 是否需要审核 |
| | |
| | | flowJson = new JSONObject(); |
| | | flowJson.put("processInstanceId", result.getString("processInstanceId")); |
| | | flowJson.put("createUserId", userId); |
| | | flowJson.put("nextUserId", userId); // 这里要求流程 下一处理人必须要指定 |
| | | flowJson.put("nextUserId", nextAuditStaff(storeId, visitSettingDtos.get(0).getFlowId())); // 这里要求流程 下一处理人必须要指定 |
| | | flowJson.put("storeId", storeId); |
| | | flowJson.put("id", visitPo.getvId()); |
| | | flowJson.put("flowId", oaWorkflowDtos.get(0).getFlowId()); |
| | |
| | | if (flag < 1) { |
| | | throw new CmdException("修改访客状态失败"); |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | private String nextAuditStaff(String storeId, String flowId) { |
| | | OaWorkflowDto oaWorkflowDto = new OaWorkflowDto(); |
| | | oaWorkflowDto.setFlowId(flowId); |
| | | oaWorkflowDto.setStoreId(storeId); |
| | | List<OaWorkflowDto> oaWorkflowDtos = oaWorkflowInnerServiceSMOImpl.queryOaWorkflows(oaWorkflowDto); |
| | | |
| | | Assert.listOnlyOne(oaWorkflowDtos, "流程不存在"); |
| | | |
| | | OaWorkflowXmlDto oaWorkflowXmlDto = new OaWorkflowXmlDto(); |
| | | oaWorkflowXmlDto.setFlowId(oaWorkflowDtos.get(0).getFlowId()); |
| | | List<OaWorkflowXmlDto> oaWorkflowXmlDtos = oaWorkflowXmlInnerServiceSMOImpl.queryOaWorkflowXmls(oaWorkflowXmlDto); |
| | | Assert.listOnlyOne(oaWorkflowXmlDtos, "流程不存在"); |
| | | |
| | | List<JSONObject> tasks = oaWorkflowActivitiInnerServiceSMOImpl.queryFirstAuditStaff(oaWorkflowXmlDtos.get(0)); |
| | | |
| | | if (tasks == null || tasks.size() < 1) { |
| | | throw new CmdException("流程未设置下一步审核人"); |
| | | } |
| | | String assignee = tasks.get(0).getString("assignee"); |
| | | |
| | | if (assignee.startsWith("-")) { |
| | | throw new CmdException("流程未设置下一步审核人"); |
| | | } |
| | | return assignee; |
| | | |
| | | } |
| | | |