public int add(CommonUse commonUse){ String userFlag = commonUse.getUserFlag(); int userId = commonUse.getUserId(); String key = commonUse.getPlanterOnlyKey(); int result = -1; if(String.valueOf(commonUse.getUserId()).equals("0")){ return -1; } //用户id和用户标志必须有 if("1".equals(userFlag)){ commonUse.setPlanterOnlyKey(UUID.randomUUID().toString().replaceAll("-","")); int res = planterDao.insert(commonUse); if(res > 0){ CommonUse commonUse1 = planterDao.viewByPlanterId(commonUse); sdk(commonUse1.getPlanterOnlyKey(),commonUse.getUserId()); } return res; }else if("2".equals(userFlag)){ result = processDao.insert(commonUse); if(result>0){ sdk(key,userId); } return result; }else if("3".equals(userFlag)){ result = logisticsDao.insert(commonUse); if(result>0){ sdk(key,userId); } return result; }else if ("4".equals(userFlag)){ result = saleDao.insert(commonUse); if(result>0){ sdk(key,userId); } return result; } return -1; }
时间: 2024-02-14 17:11:29 浏览: 92
ERP系统中几个好用的公共类
以下是一些可能的代码优化建议:
1. 对于字符串的比较,可以使用常量或者字面量来比较,例如 `"1".equals(userFlag)` 可以改为 `userFlag.equals("1")`,这样可以避免空指针异常。
2. 可以使用 switch-case 语句来替代 if-else 语句,这样可以使代码更加简洁易懂。
3. 可以使用枚举类型来代替字符串常量,这样可以提高代码的可读性和可维护性。
4. 可以将重复的代码块提取出来封装成一个函数,以减少代码冗余。
5. 可以使用代码注释来解释代码的作用和意图。
综上建议,重构后的代码如下:
```
public int add(CommonUse commonUse) {
String userFlag = commonUse.getUserFlag();
int userId = commonUse.getUserId();
String key = commonUse.getPlanterOnlyKey();
int result = -1;
// 用户id和用户标志必须有
if (userId == 0) {
return -1;
}
// 根据用户标志调用不同的 DAO 方法
switch (UserFlag.valueOf(userFlag)) {
case PLANTER:
commonUse.setPlanterOnlyKey(UUID.randomUUID().toString().replaceAll("-", ""));
result = planterDao.insert(commonUse);
if (result > 0) {
CommonUse commonUse1 = planterDao.viewByPlanterId(commonUse);
sdk(commonUse1.getPlanterOnlyKey(), userId);
}
break;
case PROCESS:
result = processDao.insert(commonUse);
if (result > 0) {
sdk(key, userId);
}
break;
case LOGISTICS:
result = logisticsDao.insert(commonUse);
if (result > 0) {
sdk(key, userId);
}
break;
case SALE:
result = saleDao.insert(commonUse);
if (result > 0) {
sdk(key, userId);
}
break;
default:
break;
}
return result;
}
// 枚举类型 UserFlag,代表用户标志
enum UserFlag {
PLANTER("1"),
PROCESS("2"),
LOGISTICS("3"),
SALE("4");
private final String value;
UserFlag(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public static UserFlag valueOf(String value) {
for (UserFlag flag : values()) {
if (flag.getValue().equals(value)) {
return flag;
}
}
throw new IllegalArgumentException("Invalid UserFlag value: " + value);
}
}
// 封装的 sdk 方法
private void sdk(String key, int userId) {
// TODO: 实现 sdk 方法
}
```
阅读全文