| | |
| | | import com.yami.trading.common.domain.Result; |
| | | import com.yami.trading.common.exception.YamiShopBindException; |
| | | import com.yami.trading.common.util.Arith; |
| | | import com.yami.trading.common.util.DateUtils; |
| | | import com.yami.trading.common.util.RandomUtil; |
| | | import com.yami.trading.common.util.StringEscapeUtil; |
| | | import com.yami.trading.dao.dz.ExchangeApplyOrderDzMapper; |
| | | import com.yami.trading.dao.dz.StockDzMapper; |
| | | import com.yami.trading.service.MarketOpenChecker; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.lang.reflect.Field; |
| | | import java.lang.reflect.Method; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.DecimalFormat; |
| | | import java.util.*; |
| | | |
| | |
| | | double dayRate = BigDecimal.valueOf(stockDzDto.getDayRate()).multiply(BigDecimal.valueOf(100)).doubleValue(); |
| | | stockDzDto.setDayRate(dayRate); |
| | | } |
| | | if (!stockDzDto.getStockName().isEmpty()) { |
| | | stockDzDto.setStockName(StringEscapeUtil.unEscapeAmpersand(stockDzDto.getStockName())); |
| | | } |
| | | }); |
| | | return Result.succeed(page); |
| | | } catch (Exception e) { |
| | |
| | | return Result.failed("请输入股票名称"); |
| | | } |
| | | } |
| | | |
| | | /*if (!stockName.isEmpty()) { |
| | | stockName = StringEscapeUtil.escapeAmpersand(stockName); |
| | | }*/ |
| | | |
| | | //该类型是否已添加 |
| | | Long count = stockDzMapper.selectCount(new LambdaQueryWrapper<StockDz>() |
| | |
| | | stockDz.setSwitchType(switchType); |
| | | stockDz.setNowPrice(new BigDecimal(nowPrice)); |
| | | stockDz.setDayRate(dayRate); |
| | | |
| | | if (save(stockDz)) { |
| | | return Result.succeed("添加成功"); |
| | | } |
| | |
| | | try { |
| | | Page page = new Page(pageNum, pageSize); |
| | | stockDzMapper.getDzListByAdmin(page, Keywords, stockType); |
| | | |
| | | page.getRecords().forEach(stockDzObj -> { |
| | | // 1. 判空 + 强转为HashMap(兼容所有Map子类,如LinkedHashMap) |
| | | if (stockDzObj == null || !(stockDzObj instanceof HashMap)) { |
| | | return; |
| | | } |
| | | |
| | | // 强转为HashMap<String, Object>(确保key是字符串类型) |
| | | HashMap<String, Object> stockDzMap = (HashMap<String, Object>) stockDzObj; |
| | | |
| | | // 2. 获取stock_name字段值(注意:key的拼写/大小写要和Map中完全一致!) |
| | | Object oldValue = stockDzMap.get("stock_name"); |
| | | |
| | | // 3. 空值防护 + 处理&转义 |
| | | if (oldValue instanceof String) { |
| | | String oldStr = (String) oldValue; |
| | | // 反转义&为& |
| | | String newStr = oldStr.replace("&", "&"); |
| | | // 4. 重新赋值回HashMap |
| | | stockDzMap.put("stock_name", newStr); |
| | | } else { |
| | | // 字段值不是字符串/为null时的提示(方便排查) |
| | | System.out.println("stock_name字段值异常:" + oldValue); |
| | | } |
| | | }); |
| | | return Result.succeed(page); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | |
| | | if(stockDz == null){ |
| | | return Result.failed("不存在该大宗信息"); |
| | | } |
| | | |
| | | /*if (!model.getStockName().isEmpty()) { |
| | | System.out.println(model.getStockName()); |
| | | //model.setStockName(StringEscapeUtil.escapeAmpersand(model.getStockName())); |
| | | }*/ |
| | | |
| | | if (!stockDz.getStockType().equalsIgnoreCase(Item.indices)) { |
| | | Item item = itemService.findBySymbol(model.getStockCode()); |
| | |
| | | String resultPer = df.format(profitPercentage); |
| | | dz.setProfitLossPercentage(Double.parseDouble(resultPer)); |
| | | } |
| | | |
| | | if (!dz.getStockName().isEmpty()) { |
| | | dz.setStockName(StringEscapeUtil.unEscapeAmpersand(dz.getStockName())); |
| | | } |
| | | |
| | | }); |
| | | } |
| | | |
| | |
| | | Page page = new Page(pageNum, pageSize); |
| | | |
| | | stockDzMapper.getDzCheckList(page ,state, stockCode, stockType, userName, checkedList); |
| | | |
| | | page.getRecords().forEach(stockDzObj -> { |
| | | if (stockDzObj == null) { |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | // ========== 第一步:获取字段值(以stockName为例) ========== |
| | | // 1. 获取getter方法(JavaBean规范:字段名stockName → 方法名getStockName) |
| | | Method getter = stockDzObj.getClass().getMethod("getStockName"); |
| | | // 2. 执行方法获取值 |
| | | Object oldValue = getter.invoke(stockDzObj); |
| | | |
| | | // ========== 第二步:处理字段值(仅当值不为null时) ========== |
| | | if (oldValue instanceof String) { // 确保字段类型是String(根据实际字段类型调整) |
| | | String newValue = ((String) oldValue).replace("&", "&"); // 自定义处理逻辑 |
| | | |
| | | // ========== 第三步:重新赋值 ========== |
| | | // 1. 获取setter方法(参数为字段类型,比如String) |
| | | Method setter = stockDzObj.getClass().getMethod("setStockName", String.class); |
| | | // 2. 执行setter方法赋值 |
| | | setter.invoke(stockDzObj, newValue); |
| | | } |
| | | } catch (Exception e) { |
| | | // 捕获反射异常(方法不存在、权限不足等),避免循环中断 |
| | | log.error(e.getMessage()); |
| | | } |
| | | }); |
| | | return Result.succeed(page); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | log.error(e.getMessage(), e); |
| | | } |
| | | return Result.failed("获取失败"); |
| | | } |