【fix sonar】DlMockController文件

This commit is contained in:
梁琦涛
2023-03-16 09:55:08 +08:00
parent 67aee4071e
commit e04f268195
@@ -16,6 +16,8 @@ import com.jero.common.system.query.QueryGenerator;
import com.jero.common.constant.VXESocketConst;
import com.jero.modules.demo.mock.vxe.websocket.VXESocket;
import com.jero.modules.dlglong.entity.MockEntity;
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 DlMockController {
* @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 DlMockController {
* @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 DlMockController {
* @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() 即可 */
// 封装行数据
@@ -120,7 +122,7 @@ public class DlMockController {
* @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,必须保持一致
@@ -142,7 +144,7 @@ public class DlMockController {
* @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);
@@ -155,7 +157,7 @@ public class DlMockController {
* @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、如果你实现了“即时保存”,那么除了新增的数据,其他的都是已经保存过的了,
@@ -178,7 +180,7 @@ public class DlMockController {
* @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查询子级,如果为空则查询顶级
@@ -204,7 +206,7 @@ public class DlMockController {
* @return
*/
@GetMapping("/getDdjhData")
public Result getMockDdjhData(
public Result<IPage<JSONObject>> getMockDdjhData(
// SpringMVC 会自动将参数注入到实体里
MockEntity mockEntity,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@@ -222,32 +224,11 @@ public class DlMockController {
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 {
log.info("\ngetDdjhData - 高级查询条件:");
// 高级查询模式
MatchTypeEnum matchType = MatchTypeEnum.getByValue(superQueryMatchType);
if (matchType == null) {
log.info("-- 高级查询模式:不识别(" + superQueryMatchType + "");
} else {
log.info("-- 高级查询模式:" + matchType.getValue());
}
superQueryParams = URLDecoder.decode(superQueryParams, "UTF-8");
List<QueryCondition> conditions = JSON.parseArray(superQueryParams, QueryCondition.class);
if (conditions != null) {
for (QueryCondition condition : conditions) {
log.info("-- " + JSON.toJSONString(condition));
}
} else {
log.info("-- 没有传递任何高级查询条件");
}
} catch (Exception e) {
log.error("-- 高级查询操作失败:" + superQueryParams, e);
e.printStackTrace();
}
printExpertQuery(superQueryParams, superQueryMatchType);
/* 注:实际使用中不用写上面那种繁琐的代码,这里只是为了直观的输出到控制台里而写的示例,
使用下面这种写法更简洁方便 */
@@ -270,12 +251,19 @@ public class DlMockController {
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)) {
// 拖轮根据分号分割
@@ -283,49 +271,81 @@ public class DlMockController {
// 查询子表数据
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;
}
}
}
}
getRecords(tugStatusMap, tugs, subRecords);
}
// 新加一个字段用于保存拖轮状态,不要直接覆盖原来的,这个字段可以不保存到数据库里
record.put("tug_status", tugStatusMap);
obj.put("tug_status", tugStatusMap);
}
return records;
}
private void getRecords(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;
}
}
}
private void printExpertQuery(@RequestParam(name = "superQueryParams", required = false) String superQueryParams, @RequestParam(name = "superQueryMatchType", required = false) String superQueryMatchType) {
try {
log.info("\ngetDdjhData - 高级查询条件:");
// 高级查询模式
MatchTypeEnum matchType = MatchTypeEnum.getByValue(superQueryMatchType);
if (matchType == null) {
log.info("-- 高级查询模式:不识别(" + superQueryMatchType + "");
} else {
log.info("-- 高级查询模式:" + matchType.getValue());
}
superQueryParams = URLDecoder.decode(superQueryParams, "UTF-8");
List<QueryCondition> conditions = JSON.parseArray(superQueryParams, QueryCondition.class);
if (conditions != null) {
for (QueryCondition condition : conditions) {
log.info("-- " + JSON.toJSONString(condition));
}
} else {
log.info("-- 没有传递任何高级查询条件");
}
} catch (Exception e) {
log.error("-- 高级查询操作失败:" + superQueryParams, e);
e.printStackTrace();
}
page.setRecords(records);
return Result.OK(page);
}
/**