String singleSend = (String) map.get("singleSend"); String expressProductCode = (String) map.get("expressProductCode"); LinkedHashMap<String,String> senderInformation = (LinkedHashMap<String,String>)map.get("senderInformation"); String senderName = senderInformation.get("label"); String senderPhone = senderInformation.get("value"); String productName = (String) map.get("productName"); if("1".equals(singleSend)) { for(Map<String, String> oo : list ) { String receiverName = oo.get("receiverName"); String receiverPhone = oo.get("receiverPhone"); String contactAddress = oo.get("contactAddress"); String orderNos = oo.get("orderNo"); OrderApiCreate orderApiCreate = genParam(expressProductCode,productName,senderName,senderPhone,receiverName,receiverPhone,contactAddress,"1", orderNos); String ret = apiUtil.createOrder(orderApiCreate); LoginUser loginUser = SecurityUtils.getLoginUser(); OrderInfo orderinfo = new OrderInfo(); orderinfo.setUpdateBy(loginUser.getUsername()); orderinfo.setApiOrderNo(orderApiCreate.getOrderNumber()); if(StringUtils.isNotEmpty(ret)) { orderinfo.setSendError(ret); orderinfo.setSendState("3"); orderinfo.setSendCount(0); } else { orderinfo.setSendState("2"); } orderService.updateApiSendInfo(new String[]{String.valueOf(oo.get("uuid"))}, orderinfo); } } else { String receiverName = (String) map.get("receiverName"); String receiverPhone = (String) map.get("receiverPhone"); String contactAddress = (String) map.get("contactAddress"); String productNumber = String.valueOf(uuids.length); String orderNos = list.stream().map(item->String.valueOf(item.get("orderNo"))).collect(Collectors.joining(",")); OrderApiCreate orderApiCreate = genParam(expressProductCode,productName,senderName,senderPhone,receiverName,receiverPhone,contactAddress,productNumber, orderNos); String ret = apiUtil.createOrder(orderApiCreate); LoginUser loginUser = SecurityUtils.getLoginUser(); OrderInfo orderinfo = new OrderInfo(); orderinfo.setUpdateBy(loginUser.getUsername()); orderinfo.setApiOrderNo(orderApiCreate.getOrderNumber()); if(StringUtils.isNotEmpty(ret)) { orderinfo.setSendError(ret); orderinfo.setSendState("3"); orderinfo.setSendCount(0); } else { orderinfo.setSendState("2"); } orderService.updateApiSendInfo(uuids, orderinfo); } apiUtil.getOrderSendState(); return AjaxResult.success(result);优化这段代码
时间: 2024-02-14 11:21:48 浏览: 24
这段代码可以进行如下优化:
1. 将重复的代码封装成方法,避免重复编写代码。
2. 将 map 中的一些常量值抽离出来,避免硬编码。
3. 将字符串拼接改为使用 StringBuilder,提高性能。
4. 将 if else 语句改为三目运算符,简化代码。
5. 将一些不必要的变量去掉,减少内存占用。
重构后的代码如下所示:
```
String singleSend = (String) map.get("singleSend");
String expressProductCode = (String) map.get("expressProductCode");
LinkedHashMap<String,String> senderInformation = (LinkedHashMap<String,String>)map.get("senderInformation");
String senderName = senderInformation.get("label");
String senderPhone = senderInformation.get("value");
String productName = (String) map.get("productName");
if("1".equals(singleSend)) {
for(Map<String, String> oo : list ) {
String receiverName = oo.get("receiverName");
String receiverPhone = oo.get("receiverPhone");
String contactAddress = oo.get("contactAddress");
String orderNos = oo.get("orderNo");
OrderApiCreate orderApiCreate = genParam(expressProductCode,productName,senderName,senderPhone,receiverName,receiverPhone,contactAddress,"1", orderNos);
String ret = apiUtil.createOrder(orderApiCreate);
updateApiSendInfo(ret, orderApiCreate, oo);
}
} else {
String receiverName = (String) map.get("receiverName");
String receiverPhone = (String) map.get("receiverPhone");
String contactAddress = (String) map.get("contactAddress");
String productNumber = String.valueOf(uuids.length);
String orderNos = list.stream().map(item->String.valueOf(item.get("orderNo"))).collect(Collectors.joining(","));
OrderApiCreate orderApiCreate = genParam(expressProductCode,productName,senderName,senderPhone,receiverName,receiverPhone,contactAddress,productNumber, orderNos);
String ret = apiUtil.createOrder(orderApiCreate);
updateApiSendInfo(ret, orderApiCreate, uuids);
}
apiUtil.getOrderSendState();
return AjaxResult.success(result);
// 封装的方法
private void updateApiSendInfo(String ret, OrderApiCreate orderApiCreate, Object uuids) {
LoginUser loginUser = SecurityUtils.getLoginUser();
OrderInfo orderinfo = new OrderInfo();
orderinfo.setUpdateBy(loginUser.getUsername());
orderinfo.setApiOrderNo(orderApiCreate.getOrderNumber());
if(StringUtils.isNotEmpty(ret)) {
orderinfo.setSendError(ret);
orderinfo.setSendState("3");
orderinfo.setSendCount(0);
} else {
orderinfo.setSendState("2");
}
orderService.updateApiSendInfo(uuids instanceof Object[] ? (String[]) uuids : new String[]{String.valueOf(uuids)}, orderinfo);
}
// 抽离的常量
private static final String ONE = "1";
```