| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.panzhihua.common.api.LangchaoApiConstants; |
| | | import com.panzhihua.common.api.LcApiConstants; |
| | | import com.panzhihua.common.api.LcRequestEnum; |
| | | import com.panzhihua.common.api.LcReturnObject; |
| | | import com.panzhihua.common.api.LcVisitRecordKeyPersonLabelEnum; |
| | | import com.panzhihua.common.constants.TokenConstant; |
| | | import com.panzhihua.common.enums.LocalEventToLangChaoEventTypeEnum; |
| | | import com.panzhihua.common.model.dtos.api.EventFile; |
| | | import com.panzhihua.common.model.dtos.api.EventInfo; |
| | | import com.panzhihua.common.model.dtos.grid.LcEventVisitingTasksListDTO; |
| | | import com.panzhihua.common.model.vos.R; |
| | | import com.panzhihua.common.model.vos.grid.EventDetailsVO; |
| | | import com.panzhihua.common.model.vos.grid.EventGridDataDetailsVO; |
| | | import com.panzhihua.common.model.vos.grid.EventResourceVO; |
| | | import com.panzhihua.common.service.community.CommunityService; |
| | | import com.panzhihua.common.service.grid.GridService; |
| | | import com.panzhihua.common.utlis.DateUtils; |
| | | import com.panzhihua.serviceapi.biz.LcApiService; |
| | | import com.panzhihua.serviceapi.model.dto.LcFlowPersonVisitRecordDTO; |
| | | import com.panzhihua.serviceapi.model.dto.LcGridData; |
| | | import com.panzhihua.serviceapi.model.dto.LcKeyPersonVisitRecordDTO; |
| | | import com.panzhihua.serviceapi.model.dto.LcKeyPersonVisitRecordQueryDTO; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | |
| | | @Autowired |
| | | private StringRedisTemplate redisTemplate; |
| | | |
| | | @Resource |
| | | private CommunityService communityService; |
| | | |
| | | /** |
| | | * 从redis获取token |
| | | * |
| | |
| | | */ |
| | | private String getAuthToken() { |
| | | ValueOperations<String, String> valueOperations = redisTemplate.opsForValue(); |
| | | if (valueOperations.get(LangchaoApiConstants.LANG_CHAO_TOKEN) == null) { |
| | | saveTokenFromRemoteRequest("18080799023", "123456"); |
| | | if (valueOperations.get(LcApiConstants.LANG_CHAO_TOKEN) == null) { |
| | | saveTokenFromRemoteRequest(LcApiConstants.LC_UPLOAD_NAME, LcApiConstants.LC_UPLOAD_PASSWORD); |
| | | } |
| | | return valueOperations.get(LangchaoApiConstants.LANG_CHAO_TOKEN); |
| | | return valueOperations.get(LcApiConstants.LANG_CHAO_TOKEN); |
| | | } |
| | | |
| | | @Override |
| | | public String saveTokenFromRemoteRequest(String name, String password) { |
| | | if (redisTemplate.hasKey(LangchaoApiConstants.LANG_CHAO_TOKEN)) { |
| | | Boolean authToken = redisTemplate.hasKey(LcApiConstants.LANG_CHAO_TOKEN); |
| | | if (authToken != null) { |
| | | //如果redis存在token,直接返回redis存储的token |
| | | ValueOperations<String, String> valueOperations = redisTemplate.opsForValue(); |
| | | return valueOperations.get(LangchaoApiConstants.LANG_CHAO_TOKEN); |
| | | return valueOperations.get(LcApiConstants.LANG_CHAO_TOKEN); |
| | | } else { |
| | | //如果第一次请求浪潮的token请求,请求完成后,保存对于的token到数据库中。便于12小时内重复调用 |
| | | HttpRequest request = HttpUtil.createPost(LangchaoApiConstants.GRID_GET_TOKEN_URL.replace("#username", name).replace("#password", password)); |
| | | HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_GET_TOKEN_URL.replace("#username", name).replace("#password", password)); |
| | | HttpResponse result = request.execute(); |
| | | ValueOperations<String, String> valueOperations = redisTemplate.opsForValue(); |
| | | valueOperations.set(LangchaoApiConstants.LANG_CHAO_TOKEN, result.body(), TokenConstant.EXPIRETIME, TimeUnit.MINUTES); |
| | | valueOperations.set(LcApiConstants.LANG_CHAO_TOKEN, result.body(), TokenConstant.EXPIRETIME, TimeUnit.MINUTES); |
| | | return result.toString(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String getAllEventTypeList() { |
| | | HttpRequest request = HttpUtil.createPost(LangchaoApiConstants.GRID_EVENT_CATEGORY_URL); |
| | | HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_EVENT_CATEGORY_URL); |
| | | request.auth(getAuthToken()); |
| | | HttpResponse result = request.execute(); |
| | | return result.body(); |
| | |
| | | |
| | | @Override |
| | | public String submitEventRegister(EventInfo eventInfo) { |
| | | HttpRequest request = HttpUtil.createPost(LangchaoApiConstants.GRID_REGIST_EVENT_URL); |
| | | HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_REGIST_EVENT_URL); |
| | | request.auth(getAuthToken()); |
| | | ObjectMapper mapper = new ObjectMapper(); |
| | | try { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public R submitEventRelationFile(EventFile eventFile) { |
| | | HttpRequest request = HttpUtil.createPost(LangchaoApiConstants.GRID_EVENT_FILE_UPLOAD_URL); |
| | | public R submitEventOrVisitRecordRelationFile(EventFile eventFile) { |
| | | HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_EVENT_FILE_UPLOAD_URL); |
| | | request.auth(getAuthToken()); |
| | | try { |
| | | HttpURLConnection httpUrl = (HttpURLConnection) new URL(eventFile.getFiles()).openConnection(); |
| | |
| | | |
| | | @Override |
| | | public String getEventInfoById(String eventId) { |
| | | HttpRequest request = HttpUtil.createPost(LangchaoApiConstants.GRID_APP_EVENT_INFO_DETAIL_URL); |
| | | HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_APP_EVENT_INFO_DETAIL_URL); |
| | | request.auth(getAuthToken()); |
| | | request.form("eventId", eventId); |
| | | HttpResponse result = request.execute(); |
| | |
| | | |
| | | @Override |
| | | public List<LcGridData> getGridListByAreaId(String areaId) { |
| | | HttpRequest request = HttpUtil.createPost(LangchaoApiConstants.GRID_GET_EVENT_INFO_AREA_ID_URL); |
| | | HttpRequest request = HttpUtil.createPost(LcApiConstants.GRID_GET_EVENT_INFO_AREA_ID_URL); |
| | | request.auth(getAuthToken()); |
| | | request.form("areaId", areaId); |
| | | HttpResponse result = request.execute(); |
| | |
| | | |
| | | @Override |
| | | public String getGridMemberListByAreaIdOrName(String areaId) { |
| | | HttpRequest request = HttpUtil.createPost(LangchaoApiConstants.GRID_GET_GETALL_SEARCH_PAGE_URL); |
| | | HttpRequest request = HttpUtil.createGet(LcApiConstants.GRID_GET_GETALL_SEARCH_PAGE_URL); |
| | | request.auth(getAuthToken()); |
| | | request.form("areaId", areaId); |
| | | HttpResponse result = request.execute(); |
| | |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public String getFlowPersonVisitRecordDetailById(String recordId) { |
| | | HttpRequest request = HttpUtil.createPost(LcApiConstants.VISIT_RECORD_FLOW_PERSON_DETAIL_URL); |
| | | request.auth(getAuthToken()); |
| | | request.form("id", recordId); |
| | | HttpResponse result = request.execute(); |
| | | return result.body(); |
| | | } |
| | | |
| | | @Override |
| | | public String getFlowPersonVisitRecordPage(LcKeyPersonVisitRecordQueryDTO personVisitRecordQueryDTO, Long loginUserId) { |
| | | HttpResponse result = getHttpResponse(personVisitRecordQueryDTO, loginUserId, LcApiConstants.VISIT_RECORD_FLOW_PERSON_PAGE_URL, "flowPeopleId"); |
| | | return result.body(); |
| | | } |
| | | |
| | | @Override |
| | | public String uploadFlowPersonVisitRecord(LcFlowPersonVisitRecordDTO lcFlowPersonVisitRecordDTO) { |
| | | HttpRequest request = HttpUtil.createPost(LcApiConstants.VISIT_RECORD_FLOW_PERSON_SAVE_URL); |
| | | request.auth(getAuthToken()); |
| | | ObjectMapper mapper = new ObjectMapper(); |
| | | try { |
| | | //对象转map |
| | | Map m = mapper.readValue(mapper.writeValueAsString(lcFlowPersonVisitRecordDTO), Map.class); |
| | | request.form(m); |
| | | } catch (JsonProcessingException e) { |
| | | log.info("方法uploadFlowPersonVisitRecord发生错误:{}", e.getMessage()); |
| | | } |
| | | HttpResponse result = request.execute(); |
| | | log.info("submit上传浪潮事件信息:{}", result.body()); |
| | | return result.body(); |
| | | } |
| | | |
| | | @Override |
| | | public String uploadKeyPersonVisitRecord(LcKeyPersonVisitRecordDTO lcKeyPersonVisitRecordDTO) { |
| | | HttpRequest request = HttpUtil.createPost(LcApiConstants.VISIT_RECORD_KEY_PERSON_SAVE_REMOTE_URL); |
| | | request.auth(getAuthToken()); |
| | | ObjectMapper mapper = new ObjectMapper(); |
| | | try { |
| | | //对象转map |
| | | Map m = mapper.readValue(mapper.writeValueAsString(lcKeyPersonVisitRecordDTO), Map.class); |
| | | request.form(m); |
| | | } catch (JsonProcessingException e) { |
| | | log.info("方法uploadKeyPersonVisitRecord发生错误:{}", e.getMessage()); |
| | | } |
| | | HttpResponse result = request.execute(); |
| | | log.info("submit上传浪潮事件信息:{}", result.body()); |
| | | return result.body(); |
| | | } |
| | | |
| | | @Override |
| | | public String getKeyPersonVisitRecordDetailById(String recordId) { |
| | | HttpRequest request = HttpUtil.createPost(LcApiConstants.VISIT_RECORD_KEY_PERSON_DETAIL_URL); |
| | | request.auth(getAuthToken()); |
| | | request.form("id", recordId); |
| | | HttpResponse result = request.execute(); |
| | | return result.body(); |
| | | } |
| | | |
| | | @Override |
| | | public String getKeyPersonVisitRecordPage(LcKeyPersonVisitRecordQueryDTO personVisitRecordQueryDTO, Long loginUserId) { |
| | | HttpResponse result = getHttpResponse(personVisitRecordQueryDTO, loginUserId, LcApiConstants.VISIT_RECORD_KEY_PERSON_PAGE_URL, "keyPersonId"); |
| | | return result.body(); |
| | | } |
| | | |
| | | @Override |
| | | public void automationUploadVisitRecord() { |
| | | List<LcEventVisitingTasksListDTO> unUploadTaskList = gridService.getUnUploadVisitingTask(); |
| | | unUploadTaskList.forEach(lcEventVisitingTasksListDTO -> { |
| | | String lcGrid = gridService.getLcGridIdByLocal(lcEventVisitingTasksListDTO.getGridId()); |
| | | String lcGridUserId = gridService.getLcUserIdByLocalUserId(lcEventVisitingTasksListDTO.getGridMember().toString()); |
| | | R populationDetail = communityService.detailPopulation(lcEventVisitingTasksListDTO.getVisiterId()); |
| | | R grid = gridService.eventGridDataDetails(lcEventVisitingTasksListDTO.getGridId()); |
| | | EventGridDataDetailsVO gridData = (EventGridDataDetailsVO) grid.getData(); |
| | | String[] data = lcEventVisitingTasksListDTO.getHappentLatLng().split(","); |
| | | if (lcEventVisitingTasksListDTO.getVisiterType() != null) { |
| | | log.info("上传数据导重点人口走访记录表"); |
| | | LcReturnObject lcReturnObject = requestLcKeyPersonVisitRecord(lcEventVisitingTasksListDTO, lcGrid, lcGridUserId, populationDetail.getData(), gridData.getGridName(), data); |
| | | if (LcRequestEnum.SUCCESS.getCode().equals(lcReturnObject.getCode())) { |
| | | uploadVisitRecord(lcEventVisitingTasksListDTO); |
| | | gridService.updateLcUploadFlagVisitingTask(lcEventVisitingTasksListDTO.getId()); |
| | | } |
| | | } else { |
| | | log.info("上传数据导流动人口走访记录表"); |
| | | LcReturnObject lcReturnObject = requestLcFlowPersonVisitRecord(lcEventVisitingTasksListDTO, lcGrid, lcGridUserId, populationDetail.getData(), gridData.getGridName(), data); |
| | | if (LcRequestEnum.SUCCESS.getCode().equals(lcReturnObject.getCode())) { |
| | | uploadVisitRecord(lcEventVisitingTasksListDTO); |
| | | gridService.updateLcUploadFlagVisitingTask(lcEventVisitingTasksListDTO.getId()); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | private void uploadVisitRecord(LcEventVisitingTasksListDTO lcEventVisitingTasksListDTO) { |
| | | log.info("开始上传走访任务附件文件"); |
| | | List<EventResourceVO> picsList = lcEventVisitingTasksListDTO.getPics(); |
| | | uploadVisitRecordFile(lcEventVisitingTasksListDTO, picsList, "IMAGE"); |
| | | List<EventResourceVO> audiosList = lcEventVisitingTasksListDTO.getAudios(); |
| | | uploadVisitRecordFile(lcEventVisitingTasksListDTO, audiosList, "AUDIO"); |
| | | List<EventResourceVO> videoList = lcEventVisitingTasksListDTO.getVideos(); |
| | | uploadVisitRecordFile(lcEventVisitingTasksListDTO, videoList, "VIDEO"); |
| | | log.info("结束上传走访任务附件文件"); |
| | | } |
| | | |
| | | private void uploadVisitRecordFile(LcEventVisitingTasksListDTO lcEventVisitingTasksListDTO, List<EventResourceVO> picsList, String type) { |
| | | picsList.forEach(eventResourceVO -> { |
| | | EventFile eventFile = new EventFile(); |
| | | eventFile.setDataId(lcEventVisitingTasksListDTO.getId().toString()); |
| | | eventFile.setFiles(eventResourceVO.getUrl()); |
| | | eventFile.setType(type); |
| | | eventFile.setModule("key_person"); |
| | | eventFile.setFileName(eventResourceVO.getResourceName()); |
| | | submitEventOrVisitRecordRelationFile(eventFile); |
| | | }); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public LcReturnObject requestLcFlowPersonVisitRecord(LcEventVisitingTasksListDTO lcEventVisitingTasksListDTO, String lcGrid, String lcGridUserId, Object populationDetail, String gridName, String[] data) { |
| | | //如果是流动人口走访 |
| | | LcFlowPersonVisitRecordDTO lcFlowPersonVisitRecordDTO = new LcFlowPersonVisitRecordDTO(); |
| | | lcFlowPersonVisitRecordDTO.setId(lcEventVisitingTasksListDTO.getId().toString()); |
| | | lcFlowPersonVisitRecordDTO.setUserId(lcGridUserId); |
| | | lcFlowPersonVisitRecordDTO.setGridPersonName(lcEventVisitingTasksListDTO.getGridMemberName()); |
| | | lcFlowPersonVisitRecordDTO.setGridPersonPhone(lcEventVisitingTasksListDTO.getGridMenberTele()); |
| | | JSONObject population = (JSONObject) JSONObject.toJSON(populationDetail); |
| | | lcFlowPersonVisitRecordDTO.setComMngPopulation(population.toJSONString()); |
| | | lcFlowPersonVisitRecordDTO.setGridId(lcGrid); |
| | | lcFlowPersonVisitRecordDTO.setGridName(gridName); |
| | | lcFlowPersonVisitRecordDTO.setWorkWithPoliceMan("0"); |
| | | lcFlowPersonVisitRecordDTO.setPoliceManName(null); |
| | | lcFlowPersonVisitRecordDTO.setPoliceManPhone(null); |
| | | lcFlowPersonVisitRecordDTO.setPoliceManWorkContent(null); |
| | | lcFlowPersonVisitRecordDTO.setVisitTime(lcEventVisitingTasksListDTO.getHappenTime().getTime()); |
| | | lcFlowPersonVisitRecordDTO.setVisitAddress(lcEventVisitingTasksListDTO.getHappentAddress()); |
| | | lcFlowPersonVisitRecordDTO.setLongitude(Double.valueOf(data[0])); |
| | | lcFlowPersonVisitRecordDTO.setLatitude(Double.valueOf(data[1])); |
| | | lcFlowPersonVisitRecordDTO.setHouseType(null); |
| | | lcFlowPersonVisitRecordDTO.setHouseAddress(lcEventVisitingTasksListDTO.getHappentAddress()); |
| | | lcFlowPersonVisitRecordDTO.setIsReportInfo(null); |
| | | lcFlowPersonVisitRecordDTO.setHaveCertificate("0"); |
| | | lcFlowPersonVisitRecordDTO.setCertificateType("身份证"); |
| | | lcFlowPersonVisitRecordDTO.setCertificateNumber(population.getString("cardNo")); |
| | | lcFlowPersonVisitRecordDTO.setCertificateDeadTime("0"); |
| | | lcFlowPersonVisitRecordDTO.setIsPropaganda("1"); |
| | | lcFlowPersonVisitRecordDTO.setIsCheckReview("1"); |
| | | lcFlowPersonVisitRecordDTO.setIsAbnormal(lcEventVisitingTasksListDTO.getException().toString()); |
| | | lcFlowPersonVisitRecordDTO.setAbnormalSituation(lcEventVisitingTasksListDTO.getTableContentJson()); |
| | | lcFlowPersonVisitRecordDTO.setRemark(lcEventVisitingTasksListDTO.getEventDes()); |
| | | log.info("事件请求数据:{}", JSONObject.toJSONString(lcFlowPersonVisitRecordDTO)); |
| | | String flowPersonData = uploadFlowPersonVisitRecord(lcFlowPersonVisitRecordDTO); |
| | | LcReturnObject lcReturnObject = JSONObject.parseObject(flowPersonData, LcReturnObject.class); |
| | | log.info("提交浪潮服务器,接口返回结果为:{}", lcReturnObject); |
| | | return lcReturnObject; |
| | | } |
| | | |
| | | @Override |
| | | public LcReturnObject requestLcKeyPersonVisitRecord(LcEventVisitingTasksListDTO lcEventVisitingTasksListDTO, String lcGrid, String lcGridUserId, Object populationDetail, String gridName, String[] data) { |
| | | LcKeyPersonVisitRecordDTO keyPersonVisitRecordDTO = new LcKeyPersonVisitRecordDTO(); |
| | | keyPersonVisitRecordDTO.setId(lcEventVisitingTasksListDTO.getId().toString()); |
| | | keyPersonVisitRecordDTO.setUserId(lcGridUserId); |
| | | keyPersonVisitRecordDTO.setGridPersonName(lcEventVisitingTasksListDTO.getGridMemberName()); |
| | | keyPersonVisitRecordDTO.setGridPersonPhone(lcEventVisitingTasksListDTO.getGridMenberTele()); |
| | | keyPersonVisitRecordDTO.setComMngPopulation(JSONObject.toJSONString(populationDetail)); |
| | | keyPersonVisitRecordDTO.setGridId(lcGrid); |
| | | keyPersonVisitRecordDTO.setGridName(gridName); |
| | | keyPersonVisitRecordDTO.setVisitTime(lcEventVisitingTasksListDTO.getHappenTime().getTime()); |
| | | keyPersonVisitRecordDTO.setVisitAddress(lcEventVisitingTasksListDTO.getHappentAddress()); |
| | | keyPersonVisitRecordDTO.setLongitude(Double.valueOf(data[0])); |
| | | keyPersonVisitRecordDTO.setLatitude(Double.valueOf(data[1])); |
| | | keyPersonVisitRecordDTO.setFamilyMemberContact(lcEventVisitingTasksListDTO.getFamilyPhone()); |
| | | keyPersonVisitRecordDTO.setHowLive(lcEventVisitingTasksListDTO.getFamilySource()); |
| | | keyPersonVisitRecordDTO.setIsAbnormal(lcEventVisitingTasksListDTO.getException().toString()); |
| | | keyPersonVisitRecordDTO.setAbnormalSituation(null); |
| | | keyPersonVisitRecordDTO.setAbnormalDes(lcEventVisitingTasksListDTO.getTableContentJson()); |
| | | keyPersonVisitRecordDTO.setRemark(lcEventVisitingTasksListDTO.getEventDes()); |
| | | keyPersonVisitRecordDTO.setType(LcVisitRecordKeyPersonLabelEnum.getCnDescByName(lcEventVisitingTasksListDTO.getVisiterType())); |
| | | log.info("事件请求数据:{}", JSONObject.toJSONString(keyPersonVisitRecordDTO)); |
| | | String remoteData = uploadKeyPersonVisitRecord(keyPersonVisitRecordDTO); |
| | | LcReturnObject lcReturnObject = JSONObject.parseObject(remoteData, LcReturnObject.class); |
| | | log.info("提交浪潮服务器,接口返回结果为:{}", remoteData); |
| | | return lcReturnObject; |
| | | } |
| | | |
| | | |
| | | private HttpResponse getHttpResponse(LcKeyPersonVisitRecordQueryDTO personVisitRecordQueryDTO, Long loginUserId, String requestUrl, String flowPeopleId) { |
| | | HttpRequest request = HttpUtil.createPost(requestUrl); |
| | | request.auth(getAuthToken()); |
| | | request.form("userId", loginUserId); |
| | | request.form("gridId", personVisitRecordQueryDTO.getGridId()); |
| | | request.form("limit", personVisitRecordQueryDTO.getLimit()); |
| | | request.form("startNumber", personVisitRecordQueryDTO.getStartNumber()); |
| | | request.form(flowPeopleId, personVisitRecordQueryDTO.getPersonId()); |
| | | return request.execute(); |
| | | } |
| | | |
| | | private void uploadLcApiEventFile(EventDetailsVO eventInfoVo, List<EventResourceVO> picsList, String type) { |
| | | picsList.forEach(eventResourceVO -> { |
| | | EventFile eventFile = new EventFile(); |
| | |
| | | eventFile.setType(type); |
| | | eventFile.setModule("event"); |
| | | eventFile.setFileName(eventResourceVO.getResourceName()); |
| | | submitEventRelationFile(eventFile); |
| | | submitEventOrVisitRecordRelationFile(eventFile); |
| | | }); |
| | | } |
| | | |
| | |
| | | * 工具方法 |
| | | * inputStream 转 File |
| | | */ |
| | | public static File inputStreamToFile(InputStream ins, String name) throws Exception { |
| | | private static File inputStreamToFile(InputStream ins, String name) throws Exception { |
| | | File file = new File(System.getProperty("java.io.tmpdir") + File.separator + name); |
| | | log.info(System.getProperty("java.io.tmpdir") + File.separator + name); |
| | | if (file.exists()) { |