【fix sonar】VxeMockController文件

This commit is contained in:
梁琦涛
2023-03-16 09:56:32 +08:00
parent 03de63bc97
commit ceb45fe9fe
@@ -16,6 +16,8 @@ import com.jero.common.system.query.QueryCondition;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.demo.mock.vxe.entity.MockEntity;
import com.jero.modules.demo.mock.vxe.websocket.VXESocket;
import org.apache.poi.ss.formula.functions.T;
import org.jetbrains.annotations.NotNull;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@@ -38,7 +40,7 @@ public class VxeMockController {
* @return
*/
@GetMapping("/change1")
public Result mockChange1(@RequestParam("id") String id, @RequestParam("status") String status) {
public Result<T> mockChange1(@RequestParam("id") String id, @RequestParam("status") String status) {
/* id 为 行的idrowId),只要获取到rowId,那么只需要调用 VXESocket.sendMessageToAll() 即可 */
// 封装行数据
@@ -61,7 +63,7 @@ public class VxeMockController {
* @return
*/
@GetMapping("/change2")
public Result mockChange2(@RequestParam("id") String id, @RequestParam("tug_status") String tug_status) {
public Result<T> mockChange2(@RequestParam("id") String id, @RequestParam("tug_status") String tug_status) {
/* id 为 行的idrowId),只要获取到rowId,那么只需要调用 VXESocket.sendMessageToAll() 即可 */
// 封装行数据
@@ -85,7 +87,7 @@ public class VxeMockController {
* @return
*/
@GetMapping("/change3")
public Result mockChange3(@RequestParam("id") String id, @RequestParam("progress") String progress) {
public Result<T> mockChange3(@RequestParam("id") String id, @RequestParam("progress") String progress) {
/* id 为 行的idrowId),只要获取到rowId,那么只需要调用 VXESocket.sendMessageToAll() 即可 */
// 封装行数据
@@ -121,7 +123,7 @@ public class VxeMockController {
* @return
*/
@GetMapping("/change4")
public Result mockChange4(@RequestParam("status") String status) {
public Result<T> mockChange4(@RequestParam("status") String status) {
// 封装socket数据
JSONObject socketData = new JSONObject();
// 这里的 key 是前端注册时使用的key,必须保持一致
@@ -143,7 +145,7 @@ public class VxeMockController {
* @param rowData 行数据,实际使用时可以替换成一个实体类
*/
@PostMapping ("/immediateSaveRow")
public Result mockImmediateSaveRow(@RequestBody JSONObject rowData) throws Exception {
public Result<T> mockImmediateSaveRow(@RequestBody JSONObject rowData) throws InterruptedException {
log.info("即时保存.rowData" + rowData.toJSONString());
// 延时1.5秒,模拟网慢堵塞真实感
Thread.sleep(500);
@@ -156,7 +158,7 @@ public class VxeMockController {
* @param tableData 表格数据(实际使用时可以替换成一个List实体类)
*/
@PostMapping("/immediateSaveAll")
public Result mockImmediateSaveAll(@RequestBody JSONArray tableData) throws Exception {
public Result<T> mockImmediateSaveAll(@RequestBody JSONArray tableData) throws InterruptedException {
// 【注】:
// 1、tableData里包含该页所有的数据
// 2、如果你实现了“即时保存”,那么除了新增的数据,其他的都是已经保存过的了,
@@ -179,7 +181,7 @@ public class VxeMockController {
* @return
*/
@GetMapping("/getData")
public Result getMockData(
public Result<IPage<JSONObject>> getMockData(
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
// 父级id,根据父级id查询子级,如果为空则查询顶级
@@ -205,7 +207,7 @@ public class VxeMockController {
* @return
*/
@GetMapping("/getDdjhData")
public Result getMockDdjhData(
public Result<IPage<JSONObject>> getMockDdjhData(
// SpringMVC 会自动将参数注入到实体里
MockEntity mockEntity,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@@ -223,8 +225,8 @@ public class VxeMockController {
Map<String, String[]> parameterMap = request.getParameterMap();
// 遍历输出到控制台
log.info("\ngetDdjhData - 普通查询条件:");
for (String key : parameterMap.keySet()) {
log.info("-- " + key + ": " + JSON.toJSONString(parameterMap.get(key)));
for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
log.info("-- " + entry.getKey() + ": " + JSON.toJSONString(entry.getValue()));
}
// 输出高级查询
try {
@@ -270,13 +272,20 @@ public class VxeMockController {
}
IPage<JSONObject> page = this.queryDataPage(dataList, parentId, pageNo, pageSize);
List<JSONObject> records = getJsonObjects(dataList, page);
page.setRecords(records);
return Result.OK(page);
}
@NotNull
private List<JSONObject> getJsonObjects(JSONArray dataList, IPage<JSONObject> page) {
// 逐行查询子表数据,用于计算拖轮状态
List<JSONObject> records = page.getRecords();
for (JSONObject record : records) {
for (JSONObject obj : records) {
Map<String, Integer> tugStatusMap = new HashMap<>();
String id = record.getString("id");
String id = obj.getString("id");
// 查询出主表的拖轮
String tugMain = record.getString("tug");
String tugMain = obj.getString("tug");
// 判断是否有值
if (StringUtils.isNotBlank(tugMain)) {
// 拖轮根据分号分割
@@ -284,49 +293,56 @@ public class VxeMockController {
// 查询子表数据
List<JSONObject> subRecords = this.queryDataPage(dataList, id, null, null).getRecords();
// 遍历子表和拖轮数据,找出进行计算反推拖轮状态
for (JSONObject subData : subRecords) {
String subTug = subData.getString("tug");
if (StringUtils.isNotBlank(subTug)) {
for (String tug : tugs) {
if (tug.equals(subTug)) {
// 计算拖轮状态逻辑
int statusCode = 0;
/* 如果有发船时间、作业开始时间、作业结束时间、回船时间,则主表中的拖轮列中的每个拖轮背景色要即时变色 */
// 有发船时间,状态 +1
String departureTime = subData.getString("departure_time");
if (StringUtils.isNotBlank(departureTime)) {
statusCode += 1;
}
// 有作业开始时间,状态 +1
String workBeginTime = subData.getString("work_begin_time");
if (StringUtils.isNotBlank(workBeginTime)) {
statusCode += 1;
}
// 有作业结束时间,状态 +1
String workEndTime = subData.getString("work_end_time");
if (StringUtils.isNotBlank(workEndTime)) {
statusCode += 1;
}
// 有回船时间,状态 +1
String returnTime = subData.getString("return_time");
if (StringUtils.isNotBlank(returnTime)) {
statusCode += 1;
}
// 保存拖轮状态,key是拖轮的值,value是状态,前端根据不同的状态码,显示不同的颜色,这个颜色也可以后台计算完之后返回给前端直接使用
tugStatusMap.put(tug, statusCode);
break;
}
}
}
}
doForSubRecords(tugStatusMap, tugs, subRecords);
}
// 新加一个字段用于保存拖轮状态,不要直接覆盖原来的,这个字段可以不保存到数据库里
record.put("tug_status", tugStatusMap);
obj.put("tug_status", tugStatusMap);
}
return records;
}
private void doForSubRecords(Map<String, Integer> tugStatusMap, String[] tugs, List<JSONObject> subRecords) {
for (JSONObject subData : subRecords) {
String subTug = subData.getString("tug");
if (StringUtils.isNotBlank(subTug)) {
doForTugs(tugStatusMap, tugs, subData, subTug);
}
}
}
private void doForTugs(Map<String, Integer> tugStatusMap, String[] tugs, JSONObject subData, String subTug) {
for (String tug : tugs) {
if (tug.equals(subTug)) {
// 计算拖轮状态逻辑
int statusCode = 0;
/* 如果有发船时间、作业开始时间、作业结束时间、回船时间,则主表中的拖轮列中的每个拖轮背景色要即时变色 */
// 有发船时间,状态 +1
String departureTime = subData.getString("departure_time");
if (StringUtils.isNotBlank(departureTime)) {
statusCode += 1;
}
// 有作业开始时间,状态 +1
String workBeginTime = subData.getString("work_begin_time");
if (StringUtils.isNotBlank(workBeginTime)) {
statusCode += 1;
}
// 有作业结束时间,状态 +1
String workEndTime = subData.getString("work_end_time");
if (StringUtils.isNotBlank(workEndTime)) {
statusCode += 1;
}
// 有回船时间,状态 +1
String returnTime = subData.getString("return_time");
if (StringUtils.isNotBlank(returnTime)) {
statusCode += 1;
}
// 保存拖轮状态,key是拖轮的值,value是状态,前端根据不同的状态码,显示不同的颜色,这个颜色也可以后台计算完之后返回给前端直接使用
tugStatusMap.put(tug, statusCode);
break;
}
}
page.setRecords(records);
return Result.OK(page);
}
/**