package com.smartearth.poiexcel.service; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import com.smartearth.poiexcel.entity.*; import com.smartearth.poiexcel.mapper.BasicMapper; import com.smartearth.poiexcel.mapper.EntMapper; import com.smartearth.poiexcel.utils.RestHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.lang.reflect.Field; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 企业服务类 * @author WWW * @date 2023-10-05 */ @Service public class EntService { @Resource EntMapper entMapper; @Value("${qylweb.host}") String host; @Value("${qylweb.user}") String user; @Value("${qylweb.pwd}") String pwd; private final static Log log = LogFactory.getLog(EntService.class); private final static String generateToken = "%s/yqfwg/app/generateToken"; private final static String getEntBaseInfo = "%s/yqfwg/api/project/getEntBaseInfoForOtherSysListPage?ctoken=%s&showCount=%d¤tPage=%d"; /** * 获取令牌 */ public String selectToken() { try { String url = String.format(generateToken, host); Map map = new HashMap<>(2); map.put("userName", user); map.put("passWord", pwd); // String str = RestHelper.postForRest(url, map) Result rs = postForRest(url, map, Result.class); if (null == rs || StaticData.I200 != rs.getCode()) { return null; } // TokenResult tr = JSONObject.parseObject(rs.getData().toJSONString(), TokenResult.class) TokenResult tr = rs.getData().toJavaObject(TokenResult.class); return tr.getCtoken(); } catch (Exception ex) { log.error(ex.getMessage(), ex); return null; } } /** * 查询企业 */ public List selectEnts(String token, String startDate, String endDate, String qylabel, Integer showCount, Integer currentPage) { try { String url = String.format(getEntBaseInfo, host, token, showCount, currentPage); if (null != startDate) { url += "&buildDate_startdate=" + startDate; } if (null != endDate) { url += "&buildDate_enddate=" + endDate; } if (null != qylabel) { url += "&qylabel=" + qylabel; } Result rs = getForRest(url, Result.class); if (null == rs || StaticData.I200 != rs.getCode()) { return null; } EntResult er = JSONObject.parseObject(rs.getData().toJSONString(), EntResult.class); return er.getPd().getList(); } catch (Exception ex) { log.error(ex.getMessage(), ex); return null; } } /** * 插入企业 */ public Integer insertEnts(List list) { try { int rows = 0; List> subLists = Lists.partition(list, StaticData.I200); for (List sub : subLists) { try { rows += entMapper.insertBatch(sub); } catch (Exception ex) { log.error(ex); } } return rows; } catch (Exception ex) { log.error(ex.getMessage(), ex); return 0; } } /** * get请求(Rest) */ public T getForRest(String url, Class clazz) { RestTemplate rest = RestHelper.getRestTemplate(); return rest.getForObject(url, clazz); } /** * post请求(Rest) */ public T postForRest(String url, Map map, Class clazz) { RestTemplate rest = RestHelper.getRestTemplate(); return rest.postForObject(url, map, clazz); } /** * delete请求(Rest) */ public T deleteForRest(String url, Map map, Class clazz) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity entity = new HttpEntity<>(map, headers); RestTemplate rest = RestHelper.getRestTemplate(); ResponseEntity rs = rest.exchange(url, HttpMethod.DELETE, entity, clazz); return rs.getBody(); } /** * 获取Map数据 */ public Map getMapData(T t) { Map map = new HashMap<>(1); Field[] fields = t.getClass().getDeclaredFields(); for (Field field : fields) { try { if ("serialVersionUID".equals(field.getName())) { continue; } field.setAccessible(true); Object obj = field.get(t); map.put(field.getName(), obj); } catch (Exception ex) { // } } return map; } }