package cn.huge.module.client.api.impl; import cn.huge.base.common.bo.R; import cn.huge.base.common.bo.ReturnBO; import cn.huge.base.common.constant.ReturnConsts; import cn.huge.base.common.exception.ClientException; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.ObjectUtils; import cn.huge.module.cases.domain.dto.GridApprovalRecordDTO; import cn.huge.module.cases.domain.dto.GridEventDTO; import cn.huge.module.cases.domain.vo.GenerateQrCodeRequestVo; import cn.huge.module.sy.service.SyHolidayService; import cn.huge.module.syncbydyh.domain.po.SyCause; import cn.huge.module.sys.vo.*; import cn.huge.module.cases.domain.dto.FileRelateDTO; import cn.huge.module.client.api.SysClient; import cn.huge.module.sys.constant.TimeUnitConsts; import cn.huge.module.sys.dto.*; import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.*; import static cn.huge.base.common.utils.BigDecimalUtil.stringToDouble; /** * @title: 系统公共服务微服务调用接口 * @description: 系统公共服务微服务调用接口 * @company: hugeinfo * @author: liyj * @time: 2021-11-05 16:51:48 * @version: 1.0.0 */ @Slf4j @Component public class SysClientImpl { private SysClient sysClient; @Autowired private SyHolidayService syHolidayService; @Autowired public SysClientImpl(SysClient sysClient) { this.sysClient = sysClient; } /** * ObjectMapper工具类 */ private ObjectMapper objectMapper = new ObjectMapper(); public ReturnBO deleteFileById(String fileId) { ReturnBO returnBo = new ReturnBO(); try { returnBo = sysClient.deleteFileById(fileId); } catch (Exception e) { log.error("service方法[SysClientImpl.getQueAddrByBaiduiLngLat]调用异常:" + e, e); } return returnBo; } public FileRelateDTO getFileRelateByFileId(String fileId) { FileRelateDTO fileRelateDTO = new FileRelateDTO(); try { ReturnBO returnBo = sysClient.getFileRelateByFileId(fileId); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { fileRelateDTO = objectMapper.convertValue(returnBo.getData(), FileRelateDTO.class); } } } catch (Exception e) { log.error("service方法[SysClientImpl.getQueAddrByBaiduiLngLat]调用异常:" + e, e); } return fileRelateDTO; } /** * 附件中心-根据多个所属编号查询附件并根据先根据ownerId再根据附件类型分组 * * @param term 所属业务编号 * @return List */ public List listIdTypeInfoByOwnerIdList(Map term) { List fileIdTypeInfoBaseDTOList = new ArrayList<>(); try { ReturnBO returnBo = sysClient.listTypeInfoByOwnerIdList(term); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { List list = (List) returnBo.getData(); for (LinkedHashMap map : list) { FileIdTypeInfoBaseDTO fileIdTypeInfoBaseDTO = JSON.parseObject(JSON.toJSONString(map), FileIdTypeInfoBaseDTO.class); fileIdTypeInfoBaseDTOList.add(fileIdTypeInfoBaseDTO); } } } } catch (Exception e) { log.error("service方法[SysClientImpl.listIdTypeInfoByOwnerIdList]调用异常:" + e, e); } return fileIdTypeInfoBaseDTOList; } /** * 附件中心-根据业务编号查询固定格式所有附件 * * @param term 所属业务编号 * @return List */ public List listIdInfoByOwnerIdList(Map term) { List fileIdInfoBaseDTOList = new ArrayList<>(); try { ReturnBO returnBo = sysClient.listInfoByOwnerIdList(term); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { List list = (List) returnBo.getData(); for (LinkedHashMap map : list) { FileIdInfoBaseDTO fileIdInfoBaseDTO = JSON.parseObject(JSON.toJSONString(map), FileIdInfoBaseDTO.class); fileIdInfoBaseDTOList.add(fileIdInfoBaseDTO); } } } } catch (Exception e) { log.error("service方法[SysClientImpl.listIdInfoByOwnerIdList]调用异常:" + e, e); } return fileIdInfoBaseDTOList; } /** * 获取时限 * * @param limitType 时限类型 * @return List */ public Integer getTimeLimitHour(String limitType) { int timeTerm = 0; try { ReturnBO returnBo = sysClient.getExpireTime(limitType); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { SyTimeLimitDTO syTimeLimitDTO = objectMapper.convertValue(returnBo.getData(), SyTimeLimitDTO.class); if (ObjectUtils.isNotEmpty(syTimeLimitDTO)) { if (ObjectUtils.isNotEmpty(syTimeLimitDTO)) { if (TimeUnitConsts.TIME_UNIT_1.equals(syTimeLimitDTO.getTermUnit())) { timeTerm = syTimeLimitDTO.getTimeTerm() * 24 * 365; } if (TimeUnitConsts.TIME_UNIT_2.equals(syTimeLimitDTO.getTermUnit())) { timeTerm = syTimeLimitDTO.getTimeTerm() * 24 * 30; } if (TimeUnitConsts.TIME_UNIT_3.equals(syTimeLimitDTO.getTermUnit())) { timeTerm = syTimeLimitDTO.getTimeTerm() * 24; } if (TimeUnitConsts.TIME_UNIT_4.equals(syTimeLimitDTO.getTermUnit())) { timeTerm = syTimeLimitDTO.getTimeTerm(); } if (TimeUnitConsts.TIME_UNIT_5.equals(syTimeLimitDTO.getTermUnit())) { timeTerm = syTimeLimitDTO.getTimeTerm() / 60; } } } } } } catch (Exception e) { log.error("service方法[SysClientImpl.listIdInfoByOwnerIdList]调用异常:" + e, e); } return timeTerm; } /** * 获取时限 * * @param computeTime * @param limitType * @return * @url {ctx}/api/web/syTimeLimit/getExpireTime */ public Date getExpireTime(Date computeTime, String limitType) { Date expireTime = null; try { ReturnBO returnBo = sysClient.getExpireTime(limitType); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { SyTimeLimitDTO syTimeLimitDTO = objectMapper.convertValue(returnBo.getData(), SyTimeLimitDTO.class); if (ObjectUtils.isNotEmpty(syTimeLimitDTO)) { if (ObjectUtils.isNotEmpty(syTimeLimitDTO)) { if (TimeUnitConsts.TIME_UNIT_1.equals(syTimeLimitDTO.getTermUnit())) { expireTime = DateUtils.addYear(computeTime, syTimeLimitDTO.getTimeTerm()); } if (TimeUnitConsts.TIME_UNIT_2.equals(syTimeLimitDTO.getTermUnit())) { expireTime = DateUtils.addMonth(computeTime, syTimeLimitDTO.getTimeTerm()); } if (TimeUnitConsts.TIME_UNIT_3.equals(syTimeLimitDTO.getTermUnit())) { expireTime = syHolidayService.getExpiryDay(computeTime, syTimeLimitDTO.getTimeTerm()); } if (TimeUnitConsts.TIME_UNIT_4.equals(syTimeLimitDTO.getTermUnit())) { expireTime = syHolidayService.getExpiryHour(computeTime, syTimeLimitDTO.getTimeTerm()); } if (TimeUnitConsts.TIME_UNIT_5.equals(syTimeLimitDTO.getTermUnit())) { expireTime = DateUtils.addMonth(computeTime, syTimeLimitDTO.getTimeTerm()); } } } } } } catch (Exception e) { log.error("service方法[SysClientImpl.getExpireTime]调用异常:" + e, e); } return expireTime; } /** * 根据条件删除附件关系 * * @param fileTypeTermsDTO 条件 * @return Object */ public void removeFileRelate(FileTypeTermsDTO fileTypeTermsDTO) { try { ReturnBO returnBo = sysClient.removeFileRelate(fileTypeTermsDTO); if (ReturnConsts.OK != returnBo.getCode()) { log.error("Client外服务接口[SysClientImpl.removeFileRelate]请求异常:" + returnBo.getMsg(), returnBo.getMsg()); } } catch (Exception e) { log.error("service方法[SysClientImpl.removeFileRelate]请求异常:" + e, e); } } /** * 根据百度地图经纬度获取街道 * * @param lng 经度 * @param lat 维度 * @return * @url {ctx}/api/client/syRegion/getTownByBaiduiLngLat */ public QueAddrBaseDTO getQueAddrByBaiduiLngLat(String lng, String lat) { QueAddrBaseDTO queAddrBaseDTO = new QueAddrBaseDTO(); try { ReturnBO returnBo = sysClient.getQueAddrByBaiduiLngLat(lng, lat); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { queAddrBaseDTO = objectMapper.convertValue(returnBo.getData(), QueAddrBaseDTO.class); } } } catch (Exception e) { log.error("service方法[SysClientImpl.getQueAddrByBaiduiLngLat]调用异常:" + e, e); } return queAddrBaseDTO; } /** * 根据百度地图地址获取街道 * * @param addr 地址 * @return * @url {ctx}/api/client/syRegion/getQueAddrByBaiduiAddr */ public QueAddrBaseDTO getQueAddrByBaiduiAddr(String addr) { QueAddrBaseDTO queAddrBaseDTO = new QueAddrBaseDTO(); try { ReturnBO returnBo = sysClient.getQueAddrByBaiduiAddr(addr); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { queAddrBaseDTO = objectMapper.convertValue(returnBo.getData(), QueAddrBaseDTO.class); } } } catch (Exception e) { log.error("service方法[SysClientImpl.getQueAddrByBaiduiAddr]调用异常:" + e, e); } return queAddrBaseDTO; } /** * 根据关系编号查询附件关系信息 * * @param ownerId 附件关系编号 * @return List */ public List listFileRelateByOwnerId(String ownerId) { List fileRelateDTOList = new ArrayList<>(); try { ReturnBO returnBo = sysClient.listFileRelateByOwnerId(ownerId); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { List list = (List) returnBo.getData(); for (LinkedHashMap map : list) { FileRelateDTO fileRelateDTO = JSON.parseObject(JSON.toJSONString(map), FileRelateDTO.class); fileRelateDTOList.add(fileRelateDTO); } } } } catch (Exception e) { log.error("service方法[SysClientImpl.listFileRelateByOwnerId]调用异常:" + e, e); } return fileRelateDTOList; } /** * 插入多条附件关系记录 * * @param fileRelateList 附件关系 * @return Object */ public void saveFileRelateList(List fileRelateList) { try { ReturnBO returnBo = sysClient.saveFileRelateList(fileRelateList); if (ReturnConsts.OK != returnBo.getCode()) { log.error("Client外服务接口[SysClientImpl.saveFileRelateList]请求异常:" + returnBo.getMsg(), returnBo.getMsg()); } } catch (Exception e) { log.error("service方法[SysClientImpl.saveFileRelateList]请求异常:" + e, e); } } public List listByParentId(String parentId) { List queAreaDTOList = new ArrayList<>(); try { ReturnBO returnBo = sysClient.listByParentId(parentId); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { List list = (List) returnBo.getData(); for (LinkedHashMap map : list) { QueAreaDTO queAreaDTO = JSON.parseObject(JSON.toJSONString(map), QueAreaDTO.class); queAreaDTOList.add(queAreaDTO); } } } } catch (Exception e) { log.error("service方法[SysClientImpl.listFileRelateByOwnerId]调用异常:" + e, e); } return queAreaDTOList; } /** * 创建待办 * * @param gridToDoBacthVo * @param unitId * @return * @url {ctx}/api/thrid/grid/todo/create-task-todo */ public void createTaskToDo(GridToDoBacthVo gridToDoBacthVo, String unitId) { try { R> gridToDoBo = sysClient.createTaskToDo(gridToDoBacthVo, unitId); if (ReturnConsts.OK != gridToDoBo.getCode()) { log.error("Client外服务接口[SysClientImpl.createToDo]请求异常:" + gridToDoBo.getMsg()); } else { log.info("创建工单成功"); } } catch (Exception e) { log.error("service方法[SysClientImpl.createToDo]调用异常:" + e, e); } } /** * 更新待办 * * @param gridToDoVo * @return * @url {ctx}/api/thrid/grid/todo/update-task-todo */ public void updateTaskTodo(GridToDoVo gridToDoVo, String previousTaskId) { try { R> gridToDoBo = sysClient.updateTaskTodo(gridToDoVo, previousTaskId); if (ReturnConsts.OK != gridToDoBo.getCode()) { log.error("Client外服务接口[SysClientImpl.updateTodo]请求异常:" + gridToDoBo.getMsg()); } else { log.info("修改工单成功"); } } catch (Exception e) { log.error("service方法[SysClientImpl.updateTodo]调用异常:" + e, e); } } /** * 批量删除待办 * * @param gridTaskVo * @return * @url {ctx}/api/thrid/grid/todo/delete-task-todo */ public void deleteTaskTodo(GridTaskVo gridTaskVo) { try { R gridToDoBo = sysClient.deleteTaskTodo(gridTaskVo); if (ReturnConsts.OK != gridToDoBo.getCode()) { log.error("Client外服务接口[SysClientImpl.deleteTaskTodo]请求异常:" + gridToDoBo.getMsg()); } else { log.info("批量删除待办成功"); } } catch (Exception e) { log.error("service方法[SysClientImpl.deleteTaskTodo]调用异常:" + e, e); } } /** * 根据id查询附件信息 * * @param id 条件 * @return * @url {ctx}/api/client/fileInfo/getFileInfoById */ public FileInfoBaseDTO getFileInfoById(String id) { FileInfoBaseDTO fileInfoBaseDTO = null; try { ReturnBO returnBo = sysClient.getFileInfoById(id); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { fileInfoBaseDTO = new FileInfoBaseDTO(); fileInfoBaseDTO = objectMapper.convertValue(returnBo.getData(), FileInfoBaseDTO.class); } } } catch (Exception e) { log.error("service方法[SysClientImpl.getFileInfoById]调用异常:" + e, e); } return fileInfoBaseDTO; } /** * 根据坐标获取网格信息 bd09 */ public GridCoordinateDTO getGridInfoBd09(String longitude, String latitude) { try { GridCoordinateVo gridCoordinateVo = new GridCoordinateVo(); // 将 longitude 和 latitude 从 String 类型转换为 Double 类型 gridCoordinateVo.setLongitude(stringToDouble(longitude)); gridCoordinateVo.setLatitude(stringToDouble(latitude)); R res = sysClient.getGridInfoBd09(gridCoordinateVo); if (ReturnConsts.OK != res.getCode()) { log.error("查询网格信息失败"); log.error(res.getMsg()); throw new RuntimeException(res.getMsg()); } if (ObjectUtils.isEmpty(res.getData())) { log.error("未查询到网格信息"); log.error(res.getMsg()); throw new RuntimeException("未查询到网格信息"); } GridCoordinateDTO gridCoordinateDTO = res.getData(); return gridCoordinateDTO; } catch (Exception e) { log.error("service方法[SysClientImpl.getGridInfoBd09]调用异常:" + e, e); return null; } } /** * 附件中心-根据条件查询附件 * * @param term 条件 * @return List */ public List listFileInfoByTerms(Map term) { List fileInfoBaseDTOList = new ArrayList<>(); try { ReturnBO returnBo = sysClient.listFileInfoByTerms(term); if (ReturnConsts.OK == returnBo.getCode()) { if (ObjectUtils.isNotEmpty(returnBo.getData())) { List list = (List) returnBo.getData(); for (LinkedHashMap map : list) { FileInfoBaseDTO fileInfoBaseDTO = JSON.parseObject(JSON.toJSONString(map), FileInfoBaseDTO.class); fileInfoBaseDTOList.add(fileInfoBaseDTO); } } } } catch (Exception e) { log.error("service方法[SysClientImpl.listFileInfoByTerms]调用异常:" + e, e); } return fileInfoBaseDTOList; } /** * 根据id获取父级案件类型对象 * @url {ctx}/api/client/fileInfo/getCaseTypeById * @param id 条件 * @return */ public SyCause getParentCaseTypeById(String id){ SyCause syCause = null; try{ ReturnBO returnBo = sysClient.getParentCaseTypeById(id); if (ReturnConsts.OK == returnBo.getCode()){ if (ObjectUtils.isNotEmpty(returnBo.getData())){ syCause = new SyCause(); syCause = objectMapper.convertValue(returnBo.getData(), SyCause.class); } } }catch (Exception e){ log.error("service方法[SysClientImpl.getCaseTypeById]调用异常:"+e, e); } return syCause; } /** * 根据id获取父级案件类型对象 * @url {ctx}/api/client/fileInfo/isGridEvent * @param caseId 案件编号 * @return */ public GridEventDTO getGridEventId(String caseId){ GridEventDTO gridEventDTO = null; try{ ReturnBO returnBo = sysClient.getGridEventId(caseId); if (ReturnConsts.OK == returnBo.getCode()){ if (ObjectUtils.isNotEmpty(returnBo.getData())){ gridEventDTO = objectMapper.convertValue(returnBo.getData(), GridEventDTO.class); } } }catch (Exception e){ log.error("service方法[SysClientImpl.getGridEventId]调用异常:"+e, e); } return gridEventDTO; } /** * * @url {ctx}/api/client/fileInfo/updateCaseEvent * @param gridApprovalRecordDTO * @return */ public void updateCaseEvent(GridApprovalRecordDTO gridApprovalRecordDTO){ try{ ReturnBO returnBo = sysClient.updateCaseEvent(gridApprovalRecordDTO); if (ReturnConsts.OK != returnBo.getCode()){ log.error("Client外服务接口[SysClientImpl.deleteTaskTodo]请求异常:" + returnBo.getMsg()); }else{ log.info("更新网格事件成功"); } }catch (Exception e){ log.error("service方法[SysClientImpl.updateCaseEvent]调用异常:"+e, e); } } /** * 根据id获取父级案件类型对象 * @url {ctx}/api/client/fileInfo/copyFile * @return */ public void copyFile(String mainId,String ownerId,String ownerType,String fileId){ try{ ReturnBO returnBo = sysClient.copyFile(mainId,ownerId,ownerType,fileId); log.info("service方法[SysClientImpl.copyFile]调用结果返回:"+ JSON.toJSONString(returnBo)); }catch (Exception e){ log.error("service方法[SysClientImpl.copyFile]调用异常:"+e, e); } } /** * 生成二维码并保存工单信息 * @url {ctx}/api/client/event/generateQrCode * @param generateQrCodeRequestVo 生成二维码接口请求参数 * @return */ public String getCaseRefByGenerateQrCode(GenerateQrCodeRequestVo generateQrCodeRequestVo){ try{ ReturnBO returnBo = sysClient.getCaseRefByGenerateQrCode(generateQrCodeRequestVo); if (ReturnConsts.OK == returnBo.getCode()){ String id = (String) returnBo.getData(); return id; }else{ log.error("Client外服务接口[SysClientImpl.getCaseRefByGenerateQrCode]请求异常:" + returnBo.getMsg(), returnBo.getMsg()); throw new ClientException("SysClientImpl.getCaseRefByGenerateQrCode", returnBo.getMsg()); } }catch (Exception e){ log.error("service方法[SysClientImpl.getCaseRefByGenerateQrCode]请求成功,处理异常:"+e, e); throw new ServiceException("SysClientImpl.getCaseRefByGenerateQrCode", e); } } }