diff --git a/newstock-system/src/main/java/com/ruoyi/newstocksystem/controller/StockDataController.java b/newstock-system/src/main/java/com/ruoyi/newstocksystem/controller/StockDataController.java index 70a3994..862c9ce 100644 --- a/newstock-system/src/main/java/com/ruoyi/newstocksystem/controller/StockDataController.java +++ b/newstock-system/src/main/java/com/ruoyi/newstocksystem/controller/StockDataController.java @@ -356,6 +356,36 @@ public class StockDataController extends BaseController return getDataTable(list); } + /** + * 导入个股新高新低状态数据 + * + * @param file Excel文件 + * @param updateSupport 是否支持更新已存在数据 + * @param tradeDate 交易日期(格式:yyyy-MM-dd) + */ + @Log(title = "个股新高新低状态数据导入", businessType = BusinessType.IMPORT) + @PostMapping("/stockHighLow/importData") + public AjaxResult importStockHighLowStatus(MultipartFile file, boolean updateSupport, String tradeDate) + { + Date tradeDateValue = parseTradeDate(tradeDate); + if (tradeDateValue == null) + { + return AjaxResult.error("交易日期格式错误,请使用yyyy-MM-dd格式"); + } + + ExcelUtil util = new ExcelUtil(TStockHighLowStatus.class); + try + { + List stockHighLowStatusList = util.importExcel(file.getInputStream()); + int successNum = stockHighLowStatusService.importStockHighLowStatus(stockHighLowStatusList, tradeDateValue); + return AjaxResult.success("成功导入 " + successNum + " 条个股新高新低状态数据"); + } + catch (Exception e) + { + return AjaxResult.error("导入失败:" + e.getMessage()); + } + } + // ========================= 工具方法 ========================= /** diff --git a/newstock-system/src/main/java/com/ruoyi/newstocksystem/domain/TStockHighLowStatus.java b/newstock-system/src/main/java/com/ruoyi/newstocksystem/domain/TStockHighLowStatus.java index 7fb3f46..ec6dc79 100644 --- a/newstock-system/src/main/java/com/ruoyi/newstocksystem/domain/TStockHighLowStatus.java +++ b/newstock-system/src/main/java/com/ruoyi/newstocksystem/domain/TStockHighLowStatus.java @@ -27,21 +27,21 @@ public class TStockHighLowStatus extends BaseEntity private Date tradeDate; /** 是否创阶段新高(1=是,0=否) */ - @Excel(name = "是否新高", readConverterExp = "1=是,0=否") + @Excel(name = "近期创阶段新高", readConverterExp = "1=是,0=否") private Integer isNewHigh; /** 区间最高价日(创新高时填充) */ @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "新高日期", dateFormat = "yyyy-MM-dd") + @Excel(name = "区间最高价日", dateFormat = "yyyy-MM-dd") private Date newHighDate; /** 是否创阶段新低(1=是,0=否) */ - @Excel(name = "是否新低", readConverterExp = "1=是,0=否") + @Excel(name = "近期创阶段新低", readConverterExp = "1=是,0=否") private Integer isNewLow; /** 区间最低价日(创新低时填充) */ @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "新低日期", dateFormat = "yyyy-MM-dd") + @Excel(name = "区间最低价日", dateFormat = "yyyy-MM-dd") private Date newLowDate; /** 证券名称(查询时关联获取) */ diff --git a/ruoyi-ui/src/api/newstocksystem/stockdata.js b/ruoyi-ui/src/api/newstocksystem/stockdata.js index 86a486b..ddac247 100644 --- a/ruoyi-ui/src/api/newstocksystem/stockdata.js +++ b/ruoyi-ui/src/api/newstocksystem/stockdata.js @@ -186,6 +186,14 @@ export default { method: 'get', params: query }) + }, + // 导入个股新高新低状态数据 + importStockHighLowStatus(data) { + return request({ + url: '/newstocksystem/stockdata/stockHighLow/importData', + method: 'post', + data: data + }) } } @@ -193,5 +201,6 @@ export default { export const IMPORT_URLS = { industryIndex: '/newstocksystem/stockdata/industryIndex/importData', stockBasic: '/newstocksystem/stockdata/stockBasic/importData', - stockDailyTrade: '/newstocksystem/stockdata/stockDailyTrade/importData' + stockDailyTrade: '/newstocksystem/stockdata/stockDailyTrade/importData', + stockHighLow: '/newstocksystem/stockdata/stockHighLow/importData' } diff --git a/ruoyi-ui/src/views/newstocksystem/stockdata.vue b/ruoyi-ui/src/views/newstocksystem/stockdata.vue index 11ae1f0..de8c83d 100644 --- a/ruoyi-ui/src/views/newstocksystem/stockdata.vue +++ b/ruoyi-ui/src/views/newstocksystem/stockdata.vue @@ -12,13 +12,13 @@ - - 导入个股基础信息 + + 导入每日交易数据 - - 导入每日交易数据 + + 导入新高新低数据 @@ -181,6 +181,52 @@ + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + + + + + + + + + + + + + + + + @@ -278,6 +324,19 @@ export default { tradeDate: null }, + // ========================= 新高新低数据 ========================= + stockHighLowLoading: false, + stockHighLowList: [], + stockHighLowTotal: 0, + stockHighLowQuery: { + pageNum: 1, + pageSize: 10, + stockCode: null, + stockName: null, + tradeDate: null, + isNewHigh: null + }, + // ========================= 上传相关 ========================= upload: { open: false, @@ -301,7 +360,7 @@ export default { }, methods: { // ========================= 通用方法 ========================= - + /** 获取行业选项列表 */ getIndustryOptions() { stockdataApi.getDistinctIndustryIndexList().then(response => { @@ -317,6 +376,8 @@ export default { this.getStockBasicList() } else if (tab.name === 'industryIndex' && this.industryIndexList.length === 0) { this.getIndustryIndexList() + } else if (tab.name === 'stockHighLow' && this.stockHighLowList.length === 0) { + this.getStockHighLowList() } }, @@ -409,6 +470,40 @@ export default { this.getStockBasicList() }, + // ========================= 新高新低数据方法 ========================= + + /** 获取新高新低数据列表 */ + getStockHighLowList() { + this.stockHighLowLoading = true + stockdataApi.listStockHighLowStatusWithBasic(this.stockHighLowQuery).then(response => { + this.stockHighLowList = response.rows + this.stockHighLowTotal = response.total + this.stockHighLowLoading = false + }).catch(() => { + this.stockHighLowLoading = false + }) + }, + + /** 查询新高新低数据 */ + queryStockHighLow() { + this.stockHighLowQuery.pageNum = 1 + this.getStockHighLowList() + }, + + /** 重置新高新低数据查询 */ + resetStockHighLowQuery() { + this.$refs.stockHighLowForm.resetFields() + this.stockHighLowQuery = { + pageNum: 1, + pageSize: 10, + stockCode: null, + stockName: null, + tradeDate: null, + isNewHigh: null + } + this.getStockHighLowList() + }, + // ========================= 行业指数数据方法 ========================= /** 获取行业指数数据列表 */ @@ -451,7 +546,7 @@ export default { this.upload.updateSupport = false this.upload.tradeDate = null this.fileList = [] - + if (type === 'industryIndex') { this.upload.title = '导入行业指数数据' this.upload.url = IMPORT_URLS.industryIndex @@ -461,6 +556,9 @@ export default { } else if (type === 'stockDailyTrade') { this.upload.title = '导入每日交易数据' this.upload.url = IMPORT_URLS.stockDailyTrade + } else if (type === 'stockHighLow') { + this.upload.title = '导入新高新低数据' + this.upload.url = IMPORT_URLS.stockHighLow } // 清除已选文件 @@ -482,8 +580,8 @@ export default { this.$message.error('请选择要上传的文件') return } - - if (this.upload.type !== 'stockBasic' && !this.upload.tradeDate) { + + if (['industryIndex', 'stockDailyTrade', 'stockHighLow'].includes(this.upload.type) && !this.upload.tradeDate) { this.$message.error('请选择交易日期') return } @@ -533,6 +631,8 @@ export default { this.getStockBasicList() } else if (this.upload.type === 'stockDailyTrade') { this.getDailyTradeList() + } else if (this.upload.type === 'stockHighLow') { + this.getStockHighLowList() } } }