• HttpClient 调用示例


    import com.alibaba.fastjson.JSON;
    import com.software.boot.common.entity.Response;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.lang.time.DateFormatUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.http.*;
    import org.springframework.stereotype.Service;
    import org.springframework.web.client.RestTemplate;
    
    import java.util.*;
    import java.util.stream.Collectors;
    
    @Service
    @Slf4j
    @RefreshScope
    public class TodoServiceImpl implements TodoService {
    
    
        @Autowired
        RestTemplate restTemplate;
    
        @Value("${micro.service.RY.service}")
        private String ryUrl;
        @Value("${micro.service.RY.ryBriefs}")
        private String ryBriefs;
    
        @Override
        public Response<?> list(TodoRequest request) {
            request.setScheduleDate(DateFormatUtils.format(new Date(), "yyyy-MM-dd"));
            HttpHeaders headers = new HttpHeaders();
            headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
            headers.set("employeeId", request.getEmployeeId());
            log.info(">>>> Method:todoList>>Begin request:{}", request);
            HttpEntity<String> entity = new HttpEntity<String>("", headers);
            ResponseEntity<YqApiResult> responseEntity = restTemplate.exchange(ryUrl + "/integrate/yq/getSchedule?shopId=" + request.getShopId() + "&userCode=" + request.getEmployeeId(), HttpMethod.GET, entity, YqApiResult.class);
            HttpStatus statusCode = responseEntity.getStatusCode();
            int code = statusCode.value();
            log.info(">>> " + ryUrl + "/integrate/yq/getSchedule,result http status: {}", code);
            YqApiResult body = responseEntity.getBody();
            log.info(">>> /integrate/yq/getSchedule,response body: {}", body);
            if (body == null) {
                return Response.error(BusinessError.CALL_FAILED);
            }
            List<TodoResponse> data = body.getData();
            return Response.success(getQuantity(request, data));
        }
    
    
        /**
         * 查询待办数量
         *
         * @param quest
         * @param data
         * @return
         */
        private List<TodoResponse> getQuantity(TodoRequest quest, List<TodoResponse> data) {
            try {
                if (data == null) {
                    return data;
                }
                List<ScheduleCode> codeList = new ArrayList<>();
                data.forEach(item -> {
                    ScheduleCode codeItem = new ScheduleCode();
                    codeItem.setScheduleCode(item.getScheduleCode());
                    codeList.add(codeItem);
                });
    
                TodoIconRequest request = new TodoIconRequest();
                request.setData(codeList);
                request.setShopId(quest.getShopId());
                request.setUserCode(quest.getEmployeeId());
                request.setScheduleDate(quest.getScheduleDate());
    
    
                HttpHeaders requestHeaders = new HttpHeaders();
                requestHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
                requestHeaders.set("employeeId", quest.getEmployeeId());
                requestHeaders.set("token", quest.getToken());
                requestHeaders.set("innerToken", ryBriefs);
                log.info(">>> Req quantity {},request header {}", JSON.toJSON(request), requestHeaders);
                HttpEntity<TodoIconRequest> requestEntity = new HttpEntity<>(request, requestHeaders);
                ResponseEntity<YqApiQuantityResult> quantityResp = null;
                quantityResp = restTemplate.postForEntity(ryUrl + "/schedule/yq/getScheduleQuantity", requestEntity, YqApiQuantityResult.class);
                log.info(">>> Quantity response,{}", quantityResp);
    //            YqApiQuantityResult body = JSON.parseObject(JSON.toJSONString(quantityResponse), new TypeReference<YqApiQuantityResult>() {
    //            });
                YqApiQuantityResult body = quantityResp.getBody();
                if (body == null) {
                    return data;
                }
                List<TodoIconResponse> numData = body.getData();
                if (numData != null) {
                    Map<String, Integer> buMap = numData.stream().collect(Collectors.toMap(TodoIconResponse::getScheduleCode, TodoIconResponse::getQuantity, (key1, key2) -> key1));
                    //设置角标
                    for (int i = 0; i < data.size(); i++) {
                        TodoResponse item = data.get(i);
                        Integer num = buMap.getOrDefault(item.getScheduleCode(), 0);
                        item.setQuantity(num == null ? 0 : num);
                        data.set(i, item);
                    }
                }
                return data;
            } catch (Exception e) {
                log.info(">>> Call Failed {},use default 0", e.getMessage());
            }
            return data;
        }
    }
    

      

  • 相关阅读:
    linux (debian) 配置静态ip
    使用yum高速部署Oracle安装环境(11g)
    shell 例程 —— 解决redis读取稳定性
    面向对象的设计模式(六),状态模式
    python调用shell命令之三慷慨法
    Codeforces Round #316 (Div. 2) C. Replacement(线段树)
    vim随想笔记(1)
    JavaSE入门学习12: Java面相对象之static使用方法
    软件架构————架构核对表
    模板管理类
  • 原文地址:https://www.cnblogs.com/irobotzz/p/13957382.html
Copyright © 2020-2023  润新知