From c3a5a9ae94e5604160f0ba4ac6148934db84f26b Mon Sep 17 00:00:00 2001 From: manailin <261030956@qq.com> Date: 星期日, 27 六月 2021 15:58:50 +0800 Subject: [PATCH] [新增]走访任务向市平台推送。推送市平台测环境 --- springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java | 240 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 223 insertions(+), 17 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java index 4700bb5..8a332da 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_api/src/main/java/com/panzhihua/serviceapi/biz/impl/LcApiServiceImpl.java @@ -7,20 +7,27 @@ 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; @@ -55,6 +62,9 @@ @Autowired private StringRedisTemplate redisTemplate; + @Resource + private CommunityService communityService; + /** * 从redis获取token * @@ -62,31 +72,32 @@ */ 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(); @@ -94,7 +105,7 @@ @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 { @@ -110,8 +121,8 @@ } @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(); @@ -133,7 +144,7 @@ @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(); @@ -142,7 +153,7 @@ @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(); @@ -151,7 +162,7 @@ @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(); @@ -210,6 +221,201 @@ }); } + @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(); @@ -218,7 +424,7 @@ eventFile.setType(type); eventFile.setModule("event"); eventFile.setFileName(eventResourceVO.getResourceName()); - submitEventRelationFile(eventFile); + submitEventOrVisitRecordRelationFile(eventFile); }); } @@ -226,7 +432,7 @@ * 工具方法 * 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()) { -- Gitblit v1.7.1