123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481 |
- package com.xc.service.impl;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import com.google.common.collect.Lists;
- import com.xc.common.ServerResponse;
- import com.xc.config.StockPoll;
- import com.xc.dao.RealTimeMapper;
- import com.xc.dao.StockIndexMapper;
- import com.xc.dao.StockMapper;
- import com.xc.pojo.*;
- import com.xc.service.DbStockService;
- import com.xc.service.IStockMarketsDayService;
- import com.xc.service.IStockService;
- import com.xc.service.IUserPositionService;
- import com.xc.utils.HttpClientRequest;
- import com.xc.utils.PropertiesUtil;
- import com.xc.utils.stock.BuyAndSellUtils;
- import com.xc.utils.stock.pinyin.GetPyByChinese;
- import com.xc.utils.stock.sina.SinaStockApi;
- import com.xc.vo.stock.*;
- import com.xc.vo.stock.k.MinDataVO;
- import com.xc.vo.stock.k.echarts.EchartsDataVO;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.math.BigDecimal;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import net.sf.json.JSONArray;
- import net.sf.json.JSONObject;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- @Service("iStockService")
- public class StockServiceImpl implements IStockService {
- private static final Logger log = LoggerFactory.getLogger(StockServiceImpl.class);
- @Autowired
- StockMapper stockMapper;
- @Autowired
- RealTimeMapper realTimeMapper;
- @Autowired
- IStockMarketsDayService iStockMarketsDayService;
- @Autowired
- StockPoll stockPoll;
- @Autowired
- StockIndexMapper stockIndexMapper;
- @Autowired
- private IUserPositionService userPositionService;
- @Autowired
- DbStockService dbStockService;
- public ServerResponse getMarket() {
- String market_url = PropertiesUtil.getProperty("sina.market.url");
- String result = null;
- try {
- result = HttpClientRequest.doGet(market_url);
- } catch (Exception e) {
- log.error("e = {}", e);
- }
- String[] marketArray = result.split(";");
- List<MarketVO> marketVOS = Lists.newArrayList();
- for (int i = 0; i < marketArray.length; i++) {
- String hqstr = marketArray[i];
- try {
- if (StringUtils.isNotBlank(hqstr)) {
- hqstr = hqstr.substring(hqstr.indexOf("\"") + 1, hqstr.lastIndexOf("\""));
- MarketVO marketVO = new MarketVO();
- String[] sh01_arr = hqstr.split(",");
- marketVO.setName(sh01_arr[0]);
- marketVO.setNowPrice(sh01_arr[1]);
- marketVO.setIncrease(sh01_arr[2]);
- marketVO.setIncreaseRate(sh01_arr[3]);
- marketVOS.add(marketVO);
- }
- } catch (Exception e) {
- log.error("str = {} , e = {}", hqstr, e);
- }
- }
- MarketVOResult marketVOResult = new MarketVOResult();
- marketVOResult.setMarket(marketVOS);
- return ServerResponse.createBySuccess(marketVOResult);
- }
- public ServerResponse getStock(int num, int pageNum, int pageSize, String keyWords, String stockPlate, String stockType) {
- List<Stock> stockList = null;
- PageHelper.startPage(pageNum, pageSize);
- stockList = this.stockMapper.findStockListByKeyWords(keyWords, stockPlate, stockType, 0);
- List<StockListVO> stockListVOS = Lists.newArrayList();
- for (Stock stock : stockList) {
- StockListVO stockListVO = dbStockService.getStockListVO(stock.getStockGid());
- stockListVO.setName(stock.getStockName());
- stockListVO.setId(stock.getId());
- stockListVO.setCode(stock.getStockCode());
- stockListVO.setSpell(stock.getStockSpell());
- stockListVO.setGid(stock.getStockGid());
- BigDecimal day3Rate = (BigDecimal) selectRateByDaysAndStockCode(stock.getStockCode(), 3).getData();
- stockListVO.setDay3Rate(day3Rate);
- stockListVO.setStock_plate(stock.getStockPlate());
- stockListVO.setStock_type(stock.getStockType());
- // stockListVO.setTransState(isTransState);
- // stockListVO.setBuyLimit(stock.getBuyLimit());
- stockListVOS.add(stockListVO);
- }
- PageInfo pageInfo = new PageInfo(stockList);
- pageInfo.setList(stockListVOS);
- return ServerResponse.createBySuccess(pageInfo);
- }
- public boolean isTransState(Stock stock){
- try {
- boolean am = BuyAndSellUtils.isTransTime(stock.getTransAmBegin(), stock.getTransAmEnd());
- boolean pm = BuyAndSellUtils.isTransTime(stock.getTransPmBegin(), stock.getTransPmEnd());
- boolean elseTime = BuyAndSellUtils.isTransTime(stock.getTransElseBegin(), stock.getTransElseEnd());
- if(am || pm || elseTime){
- return true;
- }
- return false;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- public void z1() {
- this.stockPoll.z1();
- }
- public void z2() {
- this.stockPoll.z2();
- }
- public void z3() {
- this.stockPoll.z3();
- }
- public void z4() {
- this.stockPoll.z4();
- }
- public void h1() {
- this.stockPoll.h1();
- }
- public void h2() {
- this.stockPoll.h2();
- }
- public void h3() {
- this.stockPoll.h3();
- }
- public ServerResponse getDateline(HttpServletResponse response, String code) {
- if (StringUtils.isBlank(code))
- return ServerResponse.createByErrorMsg("");
- Stock stock = this.stockMapper.findStockByCode(code);
- if (stock == null)
- return ServerResponse.createByErrorMsg("");
- response.setHeader("Access-Control-Allow-Origin", "*");
- Date time = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
- String end = sdf.format(time);
- Calendar c = Calendar.getInstance();
- c.setTime(new Date());
- c.add(2, -3);
- Date m = c.getTime();
- String mon = sdf.format(m);
- String methodUrl = "http://q.stock.sohu.com/hisHq?code=cn_" + code + "+&start=" + mon + "&end=" + end + "&stat=1&order=D";
- HttpURLConnection connection = null;
- BufferedReader reader = null;
- String line = null;
- EchartsDataVO echartsDataVO = new EchartsDataVO();
- try {
- URL url = new URL(methodUrl);
- connection = (HttpURLConnection) url.openConnection();
- connection.setRequestMethod("GET");
- connection.connect();
- if (connection.getResponseCode() == 200) {
- reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "gbk"));
- StringBuilder result = new StringBuilder();
- while ((line = reader.readLine()) != null)
- result.append(line).append(System.getProperty("line.separator"));
- JSONArray jsonArray = JSONArray.fromObject(result.toString());
- JSONObject json = jsonArray.getJSONObject(0);
- JSONArray jsonArray1 = JSONArray.fromObject(json.get("hq"));
- Collections.reverse((List<?>) jsonArray1);
- double[][] values = (double[][]) null;
- Object[][] volumes = (Object[][]) null;
- String[] date = null;
- values = new double[jsonArray1.size()][5];
- volumes = new Object[jsonArray1.size()][3];
- date = new String[jsonArray1.size()];
- for (int i = 0; i < jsonArray1.size(); i++) {
- JSONArray js = JSONArray.fromObject(jsonArray1.get(i));
- date[i] = js.get(0).toString();
- values[i][0] = Double.valueOf(js.get(1).toString()).doubleValue();
- values[i][1] = Double.valueOf(js.get(2).toString()).doubleValue();
- values[i][2] = Double.valueOf(js.get(5).toString()).doubleValue();
- values[i][3] = Double.valueOf(js.get(6).toString()).doubleValue();
- values[i][4] = Double.valueOf(js.get(7).toString()).doubleValue();
- volumes[i][0] = Integer.valueOf(i);
- volumes[i][1] = Double.valueOf(js.get(7).toString());
- volumes[i][2] = Integer.valueOf((Double.valueOf(js.get(3).toString()).doubleValue() > 0.0D) ? 1 : -1);
- }
- echartsDataVO.setDate(date);
- echartsDataVO.setValues(values);
- echartsDataVO.setVolumes(volumes);
- echartsDataVO.setStockCode(stock.getStockCode());
- echartsDataVO.setStockName(stock.getStockName());
- log.info(String.valueOf(echartsDataVO));
- ServerResponse.createBySuccess(echartsDataVO);
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- reader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- connection.disconnect();
- }
- return ServerResponse.createBySuccess(echartsDataVO);
- }
- public ServerResponse getSingleStock(Integer id) {
- Stock stock = this.stockMapper.selectByPrimaryKey(id);
- // 查询详情
- if (stock == null) {
- return ServerResponse.createByErrorMsg("");
- }
- try {
- String gid = stock.getStockGid();
- StockVO stockVO = dbStockService.getStock(gid);
- stockVO.setName(stock.getStockName());
- stockVO.setId(stock.getId());
- stockVO.setCode(stock.getStockCode());
- stockVO.setSpell(stock.getStockSpell());
- stockVO.setGid(stock.getStockGid());
- // stockVO.setBuyLimit(stock.getBuyLimit());
- // stockVO.setStockOrBond(stock.getStockOrBond());
- return ServerResponse.createBySuccess(stockVO);
- } catch (Exception e) {
- StockVO stockVO = new StockVO();
- return ServerResponse.createBySuccess(stockVO);
- }
- }
- public ServerResponse getSingleStockConfig(Integer id) {
- //TODO 查询详情
- Stock stock = this.stockMapper.selectByPrimaryKey(id);
- return ServerResponse.createBySuccess(stock);
- }
- public ServerResponse getMinK(String code, Integer time, Integer ma, Integer size) {
- if (StringUtils.isBlank(code) || time == null || ma == null || size == null)
- return ServerResponse.createByErrorMsg("");
- Stock stock = this.stockMapper.findStockByCode(code);
- if (stock == null)
- return ServerResponse.createByErrorMsg("");
- return SinaStockApi.getStockMinK(stock, time.intValue(), ma.intValue(), size.intValue());
- }
- public ServerResponse getMinK_Echarts(String code, Integer time, Integer ma, Integer size) {
- if (StringUtils.isBlank(code) || time == null || ma == null || size == null)
- return ServerResponse.createByErrorMsg("");
- Stock stock = this.stockMapper.findStockByCode(code);
- if (stock == null)
- return ServerResponse.createByErrorMsg("");
- ServerResponse<MinDataVO> serverResponse = SinaStockApi.getStockMinK(stock, time.intValue(), ma.intValue(), size.intValue());
- MinDataVO minDataVO = (MinDataVO) serverResponse.getData();
- EchartsDataVO echartsDataVO = SinaStockApi.assembleEchartsDataVO(minDataVO);
- return ServerResponse.createBySuccess(echartsDataVO);
- }
- public ServerResponse<Stock> findStockByName(String name) {
- return ServerResponse.createBySuccess(this.stockMapper.findStockByName(name));
- }
- public ServerResponse<Stock> findStockByCode(String code) {
- return ServerResponse.createBySuccess(this.stockMapper.findStockByCode(code));
- }
- public ServerResponse<Stock> findStockById(Integer stockId) {
- return ServerResponse.createBySuccess(this.stockMapper.selectByPrimaryKey(stockId));
- }
- public ServerResponse<PageInfo> listByAdmin(Integer showState, Integer lockState, String code, String name, String stockPlate, String stockType, int pageNum, int pageSize, HttpServletRequest request) {
- PageHelper.startPage(pageNum, pageSize);
- List<Stock> stockList = this.stockMapper.listByAdmin(showState, lockState, code, name, stockPlate, stockType);
- for (Stock stock : stockList) {
- StockListVO stockListVO = dbStockService.getStockListVO(stock.getStockGid());
- stock.setNowPrice(stockListVO.getNowPrice());
- stock.setHcrate(stockListVO.getHcrate());
- // stock.setChange(stockListVO.getChange());
- // stock.setPctChange(stockListVO.getPctChange());
- ServerResponse serverResponse = selectRateByDaysAndStockCode(stock.getStockCode(), 3);
- BigDecimal day3Rate = new BigDecimal("0");
- if (serverResponse.isSuccess())
- day3Rate = (BigDecimal) serverResponse.getData();
- stock.setDay3Rate(day3Rate);
- }
- PageInfo pageInfo = new PageInfo(stockList);
- pageInfo.setList(stockList);
- return ServerResponse.createBySuccess(pageInfo);
- }
- private StockAdminListVO assembleStockAdminListVO(Stock stock) {
- StockAdminListVO stockAdminListVO = new StockAdminListVO();
- stockAdminListVO.setId(stock.getId());
- stockAdminListVO.setStockName(stock.getStockName());
- stockAdminListVO.setStockCode(stock.getStockCode());
- stockAdminListVO.setStockSpell(stock.getStockSpell());
- stockAdminListVO.setStockType(stock.getStockType());
- stockAdminListVO.setStockGid(stock.getStockGid());
- stockAdminListVO.setStockPlate(stock.getStockPlate());
- stockAdminListVO.setIsLock(stock.getIsLock());
- stockAdminListVO.setIsShow(stock.getIsShow());
- stockAdminListVO.setAddTime(stock.getAddTime());
- StockListVO stockListVO = dbStockService.getStockListVO(stock.getStockGid());
- stockAdminListVO.setNowPrice(stockListVO.getNowPrice());
- stockAdminListVO.setHcrate(stockListVO.getHcrate());
- ServerResponse serverResponse = selectRateByDaysAndStockCode(stock.getStockCode(), 3);
- BigDecimal day3Rate = new BigDecimal("0");
- if (serverResponse.isSuccess())
- day3Rate = (BigDecimal) serverResponse.getData();
- stockAdminListVO.setDay3Rate(day3Rate);
- return stockAdminListVO;
- }
- public ServerResponse updateLock(Integer stockId) {
- Stock stock = this.stockMapper.selectByPrimaryKey(stockId);
- if (stock == null)
- return ServerResponse.createByErrorMsg("");
- if (stock.getIsLock().intValue() == 1) {
- stock.setIsLock(Integer.valueOf(0));
- } else {
- stock.setIsLock(Integer.valueOf(1));
- }
- int updateCount = this.stockMapper.updateByPrimaryKeySelective(stock);
- if (updateCount > 0)
- return ServerResponse.createBySuccessMsg("");
- return ServerResponse.createByErrorMsg("");
- }
- public ServerResponse updateShow(Integer stockId) {
- Stock stock = this.stockMapper.selectByPrimaryKey(stockId);
- if (stock == null)
- return ServerResponse.createByErrorMsg("");
- if (stock.getIsShow().intValue() == 0) {
- stock.setIsShow(Integer.valueOf(1));
- } else {
- stock.setIsShow(Integer.valueOf(0));
- }
- int updateCount = this.stockMapper.updateByPrimaryKeySelective(stock);
- if (updateCount > 0)
- return ServerResponse.createBySuccessMsg("");
- return ServerResponse.createByErrorMsg("");
- }
- public ServerResponse addStock(String stockName, String stockCode, String stockType, String stockPlate, Integer isLock, Integer isShow) {
- if (StringUtils.isBlank(stockName) || StringUtils.isBlank(stockCode) || StringUtils.isBlank(stockType) || isLock == null || isShow == null)
- return ServerResponse.createByErrorMsg("");
- Stock cstock = (Stock) findStockByCode(stockCode).getData();
- if (cstock != null)
- return ServerResponse.createByErrorMsg("");
- Stock nstock = (Stock) findStockByName(stockName).getData();
- if (nstock != null)
- return ServerResponse.createByErrorMsg("");
- Stock stock = new Stock();
- stock.setStockName(stockName);
- stock.setStockCode(stockCode);
- stock.setStockSpell(GetPyByChinese.converterToFirstSpell(stockName));
- stock.setStockType(stockType);
- stock.setStockGid(stockType + stockCode);
- stock.setIsLock(isLock);
- stock.setIsShow(isShow);
- stock.setAddTime(new Date());
- if (stockPlate != null)
- stock.setStockPlate(stockPlate);
- int insertCount = this.stockMapper.insert(stock);
- if (insertCount > 0)
- return ServerResponse.createBySuccessMsg("");
- return ServerResponse.createByErrorMsg("");
- }
- public int CountStockNum() {
- return this.stockMapper.CountStockNum();
- }
- public int CountShowNum(Integer showState) {
- return this.stockMapper.CountShowNum(showState);
- }
- public int CountUnLockNum(Integer lockState) {
- return this.stockMapper.CountUnLockNum(lockState);
- }
- public List findStockList() {
- return this.stockMapper.findStockList();
- }
- public ServerResponse selectRateByDaysAndStockCode(String stockCode, int days) {
- Stock stock = this.stockMapper.findStockByCode(stockCode);
- if (stock == null)
- return ServerResponse.createByErrorMsg("");
- BigDecimal daysRate = this.iStockMarketsDayService.selectRateByDaysAndStockCode(stock.getId(), days);
- return ServerResponse.createBySuccess(daysRate);
- }
- public ServerResponse addStock(Stock stock) {
- // Stock cstock = (Stock)findStockByCode(stockCode).getData();
- // if (cstock != null)
- // return ServerResponse.createByErrorMsg("");
- // Stock nstock = (Stock)findStockByName(stockName).getData();
- // if (nstock != null)
- // return ServerResponse.createByErrorMsg("");
- stock.setStockSpell(GetPyByChinese.converterToFirstSpell(stock.getStockName()));
- stock.setAddTime(new Date());
- int insertCount = this.stockMapper.insertSelective(stock);
- if (insertCount > 0)
- return ServerResponse.createBySuccessMsg("添加成功");
- return ServerResponse.createByErrorMsg("添加失败");
- }
- public ServerResponse update(Stock stock) {
- stock.setTransAmBegin(stock.getTransAmBegin().replace(":", ":"));
- stock.setTransAmEnd(stock.getTransAmEnd().replace(":", ":"));
- stock.setTransPmBegin(stock.getTransPmBegin().replace(":", ":"));
- stock.setTransPmEnd(stock.getTransPmEnd().replace(":", ":"));
- stock.setTransElseBegin(stock.getTransElseBegin().replace(":", ":"));
- stock.setTransElseEnd(stock.getTransElseEnd().replace(":", ":"));
- int updateCount = this.stockMapper.updateByPrimaryKeySelective(stock);
- if (updateCount > 0)
- return ServerResponse.createBySuccessMsg("修改成功");
- return ServerResponse.createByErrorMsg("修改失败");
- }
- @Override
- public List<IndexInfoVo> getStockInfoList() {
- List<IndexInfo> indexInfoList = stockMapper.selectStockList();
- List<IndexInfoVo> indexInfoVoList = new ArrayList<>();
- IndexInfoVo indexInfoVo;
- BigDecimal nowPrice;
- for (IndexInfo indexInfo : indexInfoList) {
- indexInfoVo = new IndexInfoVo();
- nowPrice = new BigDecimal(0);
- BeanUtils.copyProperties(indexInfo, indexInfoVo);
- if (StringUtils.isNotEmpty(indexInfo.getDataDbName())) {
- try {
- StockListVO stockListVO = dbStockService.getStockListVO(indexInfo.getCode());
- nowPrice = new BigDecimal(stockListVO.getNowPrice());
- } catch (Exception e) {
- // 数据库不存在
- log.info("数据库不存在");
- }
- }
- indexInfoVo.setNowPrice(nowPrice);
- indexInfoVoList.add(indexInfoVo);
- }
- return indexInfoVoList;
- }
- }
|