PostMappingBOMreferenceDataTest public MapString Object referenceDataTestRequestBody String requestBody JSONObject params = JSONparseObjectrequestBody; ListMaterial materialList = ma
以下是对代码的优化建议:
-
将一些常量或重复使用的变量定义为常量或静态变量,避免重复创建和赋值,提高性能。
-
在lambda表达式中使用方法引用或静态导入,使代码更加简洁。
-
将长的if-else语句和嵌套的for循环拆分成小的方法,使代码更加可读和易于维护。
-
使用Java 8的Stream API进行集合操作,使代码更加简洁和易于阅读。
以下是优化后的代码:
@PostMapping("/BOM/referenceDataTest")
public Map<String, Object> referenceDataTest(@RequestBody String requestBody) {
JSONObject params = JSON.parseObject(requestBody);
List
List<Material> oldMaterialList = materialList;
int count = params.getIntValue("count");
String country = params.getString("country");
String supplier = params.getString("supplier");
String batch = "GDZB2A38SA";
Integer version = 1;
List<NPallet> palletList = nPalletService.list(Wrappers.<NPallet>lambdaQuery()
.select(NPallet::get托架型号)
.eq(NPallet::get批次号, batch)
.eq(NPallet::get关联版本, version)
.likeRight(NPallet::get包装物料, "屏")
.orderByAsc(NPallet::get序号));
List<String> collect = palletList.stream().map(NPallet::get托架型号).collect(Collectors.toList());
int y = NumberUtil.parseInt(StrUtil.subAfter(collect.get(0), "×", true));
List<Material> newMaterialList = oldMaterialList.stream()
.filter(i -> checkMaterial(i, count, country, supplier))
.collect(Collectors.toList());
Map<String, Object> result = new HashMap<>();
result.put("code", 0);
result.put("message", "操作成功");
result.put("bom", newMaterialList);
return result;
}
private boolean checkMaterial(Material material, int count, String country, String supplier) {
JSONArray limit = JSON.parseArray(material.getLimit());
if (limit == null) {
return true;
}
List
private boolean checkLimitItem(JSONObject limitItem, int count, String country, String supplier) { switch (limitItem.getString("key")) { case "woodenCase": return true; case "count": if (limitItem.getIntValue("value") > count) { return true; } else { return false; } case "country": if (limitItem.getString("operator").equals("不为")) { if (!limitItem.getString("value").equals(country)) { return true; } else { return false; } } else { if (limitItem.getString("value").equals(country)) { return true; } else { return false; } } case "supplier": if (limitItem.getString("operator").equals("不为")) { if (!limitItem.getString("value").equals(supplier)) { return true; } else { return false; } } else { if (limitItem.getString("value").equals(supplier)) { return true; } else { return false; } } default: return true; }
原文地址: https://www.cveoy.top/t/topic/e3bD 著作权归作者所有。请勿转载和采集!