main
黄海 9 months ago
parent 7c82063f50
commit 15c2c4e769

File diff suppressed because one or more lines are too long

@ -114,6 +114,53 @@
}
},
"name": "保存数据集下的数据表"
},
{
"request": {
"method": "GET",
"url": {
"query": [],
"raw": "{{domain}}/dataease/getDataSetByCity"
}
},
"name": "市级管理员获取县区级可视数据集有哪些"
},
{
"request": {
"method": "GET",
"url": {
"query": [
{
"description": "数据集id",
"value": "",
"key": "id"
}
],
"raw": "{{domain}}/dataease/getDataSetContentByCity"
}
},
"name": "市州管理员,帮助县区管理员填报数据,需要获取指定数据集的数据"
},
{
"request": {
"method": "POST",
"url": {
"query": [
{
"description": "数据集id",
"value": "",
"key": "id"
},
{
"description": "保存的数据",
"value": "",
"key": "data"
}
],
"raw": "{{domain}}/dataease/saveDataSetByCity"
}
},
"name": "市州管理员,帮助县区管理员填报数据,保存数据集下的数据表"
}
],
"name": "DataEaseController"

@ -66,6 +66,15 @@
<a class="catalog-item" href="com_dsideal_base_DataEase_Controller_DataEaseController.html#saveDataSet">
保存数据集下的数据表
</a>
<a class="catalog-item" href="com_dsideal_base_DataEase_Controller_DataEaseController.html#getDataSetByCity">
市级管理员获取县区级可视数据集有哪些
</a>
<a class="catalog-item" href="com_dsideal_base_DataEase_Controller_DataEaseController.html#getDataSetContentByCity">
市州管理员,帮助县区管理员填报数据,需要获取指定数据集的数据
</a>
<a class="catalog-item" href="com_dsideal_base_DataEase_Controller_DataEaseController.html#saveDataSetByCity">
市州管理员,帮助县区管理员填报数据,保存数据集下的数据表
</a>
</div>
</div>
</div> </div>
@ -231,6 +240,78 @@
<code>/dataease/saveDataSet</code>
<span class="label label-default">GET</span>
<span class="label label-default">POST</span>
</p>
<p><strong>请求参数</strong> <span class="badge">application/x-www-form-urlencoded</span></p>
<table class="table table-bordered">
<tr>
<th>参数名</th>
<th>类型</th>
<th>必须</th>
<th>描述</th>
</tr>
<tr>
<td>id</td>
<td>int</td>
<td></td>
<td>数据集id</td>
</tr>
<tr>
<td>data</td>
<td>string</td>
<td></td>
<td>保存的数据</td>
</tr>
</table>
<p><strong>返回结果</strong></p>
<pre class="prettyprint lang-json">{}</pre>
</div>
<hr>
<div class="action-item">
<h2 id="getDataSetByCity"><a href="#">市级管理员获取县区级可视数据集有哪些 </a></h2>
<p><strong>请求URL</strong></p>
<p>
<code>/dataease/getDataSetByCity</code>
<span class="label label-default">GET</span>
<span class="label label-default">POST</span>
</p>
<p><strong>返回结果</strong></p>
<pre class="prettyprint lang-json">{}</pre>
</div>
<hr>
<div class="action-item">
<h2 id="getDataSetContentByCity"><a href="#">市州管理员,帮助县区管理员填报数据,需要获取指定数据集的数据 </a></h2>
<p><strong>请求URL</strong></p>
<p>
<code>/dataease/getDataSetContentByCity</code>
<span class="label label-default">GET</span>
<span class="label label-default">POST</span>
</p>
<p><strong>请求参数</strong> <span class="badge">application/x-www-form-urlencoded</span></p>
<table class="table table-bordered">
<tr>
<th>参数名</th>
<th>类型</th>
<th>必须</th>
<th>描述</th>
</tr>
<tr>
<td>id</td>
<td>int</td>
<td></td>
<td>数据集id</td>
</tr>
</table>
<p><strong>返回结果</strong></p>
<pre class="prettyprint lang-json">{}</pre>
</div>
<hr>
<div class="action-item">
<h2 id="saveDataSetByCity"><a href="#">市州管理员,帮助县区管理员填报数据,保存数据集下的数据表 </a></h2>
<p><strong>请求URL</strong></p>
<p>
<code>/dataease/saveDataSetByCity</code>
<span class="label label-default">GET</span>
<span class="label label-default">POST</span>
</p>
<p><strong>请求参数</strong> <span class="badge">application/x-www-form-urlencoded</span></p>
<table class="table table-bordered">
@ -278,6 +359,9 @@
{name: 'DataEaseController.上传Excel文件', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#uploadExcel'},
{name: 'DataEaseController.获取数据集下的数据表', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#getDataSetContent'},
{name: 'DataEaseController.保存数据集下的数据表', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#saveDataSet'},
{name: 'DataEaseController.市级管理员获取县区级可视数据集有哪些', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#getDataSetByCity'},
{name: 'DataEaseController.市州管理员,帮助县区管理员填报数据,需要获取指定数据集的数据', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#getDataSetContentByCity'},
{name: 'DataEaseController.市州管理员,帮助县区管理员填报数据,保存数据集下的数据表', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#saveDataSetByCity'},
];

@ -66,6 +66,15 @@
<a class="catalog-item" href="com_dsideal_base_DataEase_Controller_DataEaseController.html#saveDataSet">
保存数据集下的数据表
</a>
<a class="catalog-item" href="com_dsideal_base_DataEase_Controller_DataEaseController.html#getDataSetByCity">
市级管理员获取县区级可视数据集有哪些
</a>
<a class="catalog-item" href="com_dsideal_base_DataEase_Controller_DataEaseController.html#getDataSetContentByCity">
市州管理员,帮助县区管理员填报数据,需要获取指定数据集的数据
</a>
<a class="catalog-item" href="com_dsideal_base_DataEase_Controller_DataEaseController.html#saveDataSetByCity">
市州管理员,帮助县区管理员填报数据,保存数据集下的数据表
</a>
</div>
</div>
</div> </div>
@ -106,6 +115,9 @@
{name: 'DataEaseController.上传Excel文件', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#uploadExcel'},
{name: 'DataEaseController.获取数据集下的数据表', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#getDataSetContent'},
{name: 'DataEaseController.保存数据集下的数据表', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#saveDataSet'},
{name: 'DataEaseController.市级管理员获取县区级可视数据集有哪些', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#getDataSetByCity'},
{name: 'DataEaseController.市州管理员,帮助县区管理员填报数据,需要获取指定数据集的数据', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#getDataSetContentByCity'},
{name: 'DataEaseController.市州管理员,帮助县区管理员填报数据,保存数据集下的数据表', url: 'com_dsideal_base_DataEase_Controller_DataEaseController.html#saveDataSetByCity'},
];

@ -129,67 +129,68 @@ public class DataEaseController extends Controller {
renderJson(CommonUtil.renderJsonForLayUI(list));
}
/**
* Excel
* Excel
*
* @param id id
*/
@Before(GET.class)
@IsLoginInterface({})
@IsNumericInterface({"id"})
public void downloadExcel(int id) throws IOException {
public void downSampleExcel(int id) throws IOException {
String identity_idStr = CookieUtil.getValue(getRequest(), "identity_id");
int identity_id = 1;
if (!StrKit.isBlank(identity_idStr)) {
identity_id = Integer.parseInt(identity_idStr);
}
//根据当前登录人员的身份,获取对应的数据集名称
String person_id = CookieUtil.getValue(getRequest(), "person_id");
//获取他是哪个城市或者县区的管理员
//行政区划码
String area_code = rm.getAreaCode(identity_id, person_id);
//根据区域码,获取区域名称
String area_name = rm.getAreaName(area_code);
String area_name = "云南省";
//获取他是哪个城市的管理员
if (identity_id == 2) {
area_name = "昆明市";
}
//获取他是哪个县区的管理员
if (identity_id == 3) {
area_name = "寻甸县";
}
Record record = dm.getDataSetById(id);
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name");
//导出excel
String upPath = BaseApplication.PropKit.get("upload.path") + "/";
String excelFileName = dm.exportExcel(identity_id, tableName, upPath, area_name);
String excelFileName = dm.exportExcel(identity_id, tableName, tempDir, area_name);
//renderFile
renderFile(new File(excelFileName), "【" + area_name + "】" + dataSetName + "." + "xlsx");
renderFile(new File(excelFileName), "【样例:" + area_name + "】" + dataSetName + "." + "xlsx");
}
/**
* Excel
* Excel
*
* @param id id
*/
@Before(GET.class)
@IsLoginInterface({})
@IsNumericInterface({"id"})
public void downSampleExcel(int id) throws IOException {
public void downloadExcel(int id) throws IOException {
String identity_idStr = CookieUtil.getValue(getRequest(), "identity_id");
int identity_id = 1;
if (!StrKit.isBlank(identity_idStr)) {
identity_id = Integer.parseInt(identity_idStr);
}
String area_name = "云南省";
//获取他是哪个城市的管理员
if (identity_id == 2) {
area_name = "昆明市";
}
//获取他是哪个县区的管理员
if (identity_id == 3) {
area_name = "寻甸县";
}
//根据当前登录人员的身份,获取对应的数据集名称
String person_id = CookieUtil.getValue(getRequest(), "person_id");
//获取他是哪个城市或者县区的管理员
//行政区划码
String area_code = rm.getAreaCode(identity_id, person_id);
//根据区域码,获取区域名称
String area_name = rm.getAreaName(area_code);
Record record = dm.getDataSetById(id);
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name");
//导出excel
String excelFileName = dm.exportExcel(identity_id, tableName, tempDir, area_name);
String upPath = BaseApplication.PropKit.get("upload.path") + "/";
String excelFileName = dm.exportExcel(identity_id, tableName, upPath, area_name);
//renderFile
renderFile(new File(excelFileName), "【样例:" + area_name + "】" + dataSetName + "." + "xlsx");
renderFile(new File(excelFileName), "【" + area_name + "】" + dataSetName + "." + "xlsx");
}
/**
@ -403,4 +404,92 @@ public class DataEaseController extends Controller {
dm.saveDataSetByCity(id, area_name, jsonArray);
renderJson(CommonUtil.returnMessageJson(true, "保存成功"));
}
/**
* Excel
*
* @param id id
*/
@Before(GET.class)
@IsLoginInterface({})
@IsNumericInterface({"id"})
public void downloadExcelByCity(int id) throws IOException {
int identity_id = 2;
//根据当前登录人员的身份,获取对应的数据集名称
String person_id = CookieUtil.getValue(getRequest(), "person_id");
//获取他是哪个城市或者县区的管理员
//行政区划码
String area_code = rm.getAreaCode(identity_id, person_id);
//根据区域码,获取区域名称
String area_name = rm.getAreaName(area_code);
Record record = dm.getDataSetById(id);
String tableName = record.getStr("table_name");
String dataSetName = record.getStr("dataset_name");
//导出excel
String upPath = BaseApplication.PropKit.get("upload.path") + "/";
String excelFileName = dm.exportExcelByCity(tableName, upPath, area_name);
//renderFile
renderFile(new File(excelFileName), "【" + area_name + "】" + dataSetName + "." + "xlsx");
}
/**
* :Excel
*/
@Before(POST.class)
@IsLoginInterface({})
public void uploadExcelByCity() {
//根据当前登录人员的身份,获取对应的数据集名称
int identity_id = 2;
String person_id = CookieUtil.getValue(getRequest(), "person_id");
//获取他是哪个城市或者县区的管理员
//行政区划码
String area_code = rm.getAreaCode(identity_id, person_id);
//根据区域码,获取区域名称
String area_name = rm.getAreaName(area_code);
//父亲的区域名称
String parent_area_name = rm.getParentAreaName(area_name);
//上传的文件
UploadFile uploadFile = getFile("file");
//数据集id
int id = getParaToInt("id");
//文件是不是以.xlsx为扩展名
if (!uploadFile.getFileName().endsWith(".xlsx")) {
renderJson(CommonUtil.returnMessageJson(false, "文件格式不正确,请上传.xlsx格式的文件"));
return;
}
//检查上传的excel获取它有哪些列与数据集的列是否一致
String excelPath = uploadFile.getFile().getAbsolutePath();
List<String> excelCols = dm.getColumnNamesFromExcel(excelPath);
//获取指定数据表有哪些列
Record rDataSet = dm.getDataSetById(id);
String tableName = rDataSet.getStr("table_name");
//mysql数据库中真实表有哪些字段
List<String> mysqlCols = dm.getColumns(tableName);
//id列需要特殊处理
mysqlCols.remove("id");
//对比两个数组集是不是一致,就是对比列名是不是完全匹配,使用交集去检查
Set<String> set1 = new HashSet<>(excelCols);
Set<String> set2 = new HashSet<>(mysqlCols);
//是不是完整匹配
boolean match = set1.equals(set2);
if (!match) {
renderJson(CommonUtil.returnMessageJson(false, "上传的Excel列名与数据集列名不一致请重新上传"));
return;
}
//如果一致,那么需要先把数据集的指定行政区划列的表清空,再导入数据
ExcelReader excelReader = new ExcelReader();
List<ExcelRow> rows = excelReader.readXlsxFile(excelPath, excelCols);
dm.saveDataSetTableByCity(id,area_name, rows);
//返回结果
Kv kv = Kv.create();
kv.set("success", true);
kv.set("message", "上传成功");
renderJson(kv);
}
}

@ -665,4 +665,66 @@ public class DataEaseModel {
}
Db.use(DB_NAME).batchSave(tableName, list, 100);
}
/**
* Excel
*
* @param tableName
* @param exportPath
* @param area_name
* @throws IOException
*/
public String exportExcelByCity(String tableName, String exportPath, String area_name) throws IOException {
//填充默认的行政区划
fillDefaultXzqh(3, tableName);
//对此表中的数据进行直接导出EXCEL
String sql = "select * from `" + tableName + "`";
sql = sql + "where `行政区划`='" + area_name + "'";
//获取一下表有哪些列
List<String> columnNames = getColumns(tableName);
List<Record> tableData = Db.use(DataEaseModel.DB_NAME).find(sql);
String excelFileName = UUID.randomUUID().toString().toUpperCase() + ".xlsx";
String filePath = exportPath + excelFileName;
//导出
ExcelCommonUtil.writeExcel(columnNames, tableData, filePath, true);
return filePath;
}
/**
*
*
* @param dataset_id id
*/
public void saveDataSetTableByCity(int dataset_id, String area_name, List<ExcelRow> listExcelRow) {
//根据数据集id获取表名
String tableName = getDataSetById(dataset_id).getStr("table_name");
// 清除数据
String sql = "delete from `" + tableName + "` where `行政区划`=?";
Db.use(DB_NAME).update(sql, area_name);
List<Record> list = new ArrayList<>();
//数据行
for (int i = 1; i < listExcelRow.size(); i++) {
ExcelRow row = listExcelRow.get(i);
Record record = new Record();
for (int j = 0; j < row.getData().size(); j++) {
String value = row.getData().get(j);
//第一行是表头
String colName = listExcelRow.getFirst().getData().get(j);
if (StrKit.isBlank(value.trim()) && colName.equals("数值")) {
record.set(colName, 0);
} else if (isInteger(value)) {
record.set(colName, Integer.parseInt(value));
} else if (isDouble(value)) {
record.set(colName, Double.parseDouble(value));
} else {
record.set(colName, value);
}
}
list.add(record);
}
Db.use(DB_NAME).batchSave(tableName, list, 100);
}
}

Loading…
Cancel
Save