| | |
| | | package com.ltkj.web.controller.system; |
| | | |
| | | import java.util.List; |
| | | import java.util.Locale; |
| | | import java.util.*; |
| | | import java.util.concurrent.ExecutorService; |
| | | import java.util.concurrent.Executors; |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import com.ltkj.common.core.domain.entity.SysMenu; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.extra.pinyin.PinyinUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.ltkj.hosp.idutil.IdUtils; |
| | | import com.ltkj.common.utils.SecurityUtils; |
| | | import com.ltkj.framework.datasource.DynamicDataSourceContextHolder; |
| | | import com.ltkj.hosp.domain.*; |
| | | import com.ltkj.hosp.mapper.TestMapper; |
| | | import com.ltkj.hosp.service.*; |
| | | import com.ltkj.hosp.sqlDomain.*; |
| | | import com.ltkj.system.service.ISysMenuService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import jodd.util.StringUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.DeleteMapping; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.PutMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import com.ltkj.common.annotation.Log; |
| | | import com.ltkj.common.constant.UserConstants; |
| | | import com.ltkj.common.core.controller.BaseController; |
| | |
| | | @RestController |
| | | @RequestMapping("/system/config") |
| | | @Api(tags = "A---PC端参数配置接口集") |
| | | @Slf4j |
| | | public class SysConfigController extends BaseController { |
| | | @Autowired |
| | | private ISysConfigService configService; |
| | | @Autowired |
| | | private ISysMenuService menuService; |
| | | @Resource |
| | | private IDictHospService dictHospService; |
| | | @Value ("${token.secret_key}") |
| | | private String secret; |
| | | @Autowired |
| | | private ITjProjectService projectService; |
| | | @Resource |
| | | private ITjOrderService orderService; |
| | | @Autowired |
| | | private TjJcycxmService jcycxmService; |
| | | @Resource |
| | | private LtkjExamJcsqdService jcsqdService; |
| | | @Resource |
| | | private LtkjExamJcbgdService jcbgdService; |
| | | @Resource |
| | | private LtkjHybgdService ltkjHybgdService; |
| | | @Resource |
| | | private LtkjHysqdService ltkjHysqdService; |
| | | @Resource |
| | | private TestMapper testMapper; |
| | | @Autowired |
| | | private AwsService awsService; |
| | | @Autowired |
| | | private IdUtils idUtils; |
| | | |
| | | /** |
| | | * 获取参数配置列表 |
| | | */ |
| | | // @PreAuthorize("@ss.hasPermi('system:config:list')") |
| | | @GetMapping("/list") |
| | | @ApiOperation(value = "获取参数配置列表") |
| | | @GetMapping ("/list") |
| | | @ApiOperation (value = "获取参数配置列表") |
| | | public TableDataInfo list(SysConfig config) { |
| | | startPage(); |
| | | List<SysConfig> list = configService.selectConfigList(config); |
| | | return getDataTable(list); |
| | | } |
| | | |
| | | @Log(title = "参数管理", businessType = BusinessType.EXPORT) |
| | | @Log (title = "参数管理", businessType = BusinessType.EXPORT) |
| | | // @PreAuthorize("@ss.hasPermi('system:config:export')") |
| | | @PostMapping("/export") |
| | | @PostMapping ("/export") |
| | | public void export(HttpServletResponse response, SysConfig config) { |
| | | List<SysConfig> list = configService.selectConfigList(config); |
| | | ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class); |
| | |
| | | * 根据参数编号获取详细信息 |
| | | */ |
| | | // @PreAuthorize("@ss.hasPermi('system:config:query')") |
| | | @GetMapping(value = "/{configId}") |
| | | @GetMapping (value = "/{configId}") |
| | | public AjaxResult getInfo(@PathVariable Long configId) { |
| | | return success(configService.selectConfigById(configId)); |
| | | } |
| | |
| | | /** |
| | | * 根据参数键名查询参数值 |
| | | */ |
| | | @GetMapping(value = "/configKey/{configKey}") |
| | | @ApiOperation(value = "根据参数键名查询参数值") |
| | | @GetMapping (value = "/configKey/{configKey}") |
| | | @ApiOperation (value = "根据参数键名查询参数值") |
| | | public AjaxResult getConfigKey(@PathVariable String configKey) { |
| | | return success(configService.selectConfigByKey(configKey)); |
| | | } |
| | |
| | | * 新增参数配置 |
| | | */ |
| | | // @PreAuthorize("@ss.hasPermi('system:config:add')") |
| | | @Log(title = "参数管理", businessType = BusinessType.INSERT) |
| | | @Log (title = "参数管理", businessType = BusinessType.INSERT) |
| | | @PostMapping |
| | | public AjaxResult add(@Validated @RequestBody SysConfig config) { |
| | | if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) { |
| | | return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); |
| | | } |
| | | String configValue = config.getConfigValue(); |
| | | if(configValue.length()==1) configValue = config.getConfigValue().toUpperCase(Locale.ROOT); |
| | | if (configValue.length() == 1) configValue = config.getConfigValue().toUpperCase(Locale.ROOT); |
| | | |
| | | config.setConfigValue(configValue); |
| | | config.setCreateBy(getUsername()); |
| | |
| | | * 修改参数配置 |
| | | */ |
| | | // @PreAuthorize("@ss.hasPermi('system:config:edit')") |
| | | @Log(title = "参数管理", businessType = BusinessType.UPDATE) |
| | | @Log (title = "参数管理", businessType = BusinessType.UPDATE) |
| | | @PutMapping |
| | | public AjaxResult edit(@Validated @RequestBody SysConfig config) { |
| | | if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) { |
| | |
| | | } |
| | | |
| | | String configValue = config.getConfigValue(); |
| | | if(configValue.length()==1) configValue = config.getConfigValue().toUpperCase(Locale.ROOT); |
| | | if (configValue.length() == 1) configValue = config.getConfigValue().toUpperCase(Locale.ROOT); |
| | | config.setConfigValue(configValue); |
| | | config.setUpdateBy(getUsername()); |
| | | int i = configService.updateConfig(config); |
| | | if(i>0){ |
| | | if(config.getConfigId()==113){ |
| | | SysMenu byId = menuService.getById(2305); |
| | | if("Y".equals(configValue)){ |
| | | byId.setVisible("0"); |
| | | } |
| | | if("N".equals(configValue)){ |
| | | byId.setVisible("1"); |
| | | } |
| | | menuService.updateById(byId); |
| | | } |
| | | if (i > 0) { |
| | | // if (config.getConfigId() == 113) { |
| | | // SysMenu byId = menuService.getById(2305); |
| | | // if ("Y".equals(configValue)) { |
| | | // byId.setVisible("0"); |
| | | // } |
| | | // if ("N".equals(configValue)) { |
| | | // byId.setVisible("1"); |
| | | // } |
| | | // menuService.updateById(byId); |
| | | // } |
| | | } |
| | | return toAjax(i); |
| | | } |
| | |
| | | * 删除参数配置 |
| | | */ |
| | | // @PreAuthorize("@ss.hasPermi('system:config:remove')") |
| | | @Log(title = "参数管理", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{configIds}") |
| | | @Log (title = "参数管理", businessType = BusinessType.DELETE) |
| | | @DeleteMapping ("/{configIds}") |
| | | public AjaxResult remove(@PathVariable Long[] configIds) { |
| | | configService.deleteConfigByIds(configIds); |
| | | return success(); |
| | |
| | | * 刷新参数缓存 |
| | | */ |
| | | // @PreAuthorize("@ss.hasPermi('system:config:remove')") |
| | | @Log(title = "参数管理", businessType = BusinessType.CLEAN) |
| | | @DeleteMapping("/refreshCache") |
| | | @Log (title = "参数管理", businessType = BusinessType.CLEAN) |
| | | @DeleteMapping ("/refreshCache") |
| | | public AjaxResult refreshCache() { |
| | | configService.resetConfigCache(); |
| | | return success(); |
| | | } |
| | | |
| | | |
| | | @GetMapping ("/shoudongtbjyjcwsxmjg") |
| | | @ApiOperation(value = "手动同步检验检查外送项目结果接口") |
| | | public AjaxResult shoudongtbjyjcwsxmjg(@RequestParam @ApiParam(value = "jy检验 jc检查 jyjc检验和检查") String tblx, |
| | | @ApiParam(value = "体检号")@RequestParam String tjh) { |
| | | String dqyyyqbm = configService.selectConfigByKey("dqyyyqbm"); |
| | | log.info("手动同步检验或检查结果开始->{}",DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")); |
| | | try { |
| | | |
| | | switch (tblx){ |
| | | case "jy": |
| | | tbjianyan(tjh,dqyyyqbm); |
| | | log.info("当前同步的是->{} 结果","检验"); |
| | | break; |
| | | case "jc": |
| | | tbjiancha(tjh,dqyyyqbm); |
| | | log.info("当前同步的是->{} 结果","检查"); |
| | | break; |
| | | case "jyjc": |
| | | tbjianyan(tjh,dqyyyqbm); |
| | | tbjiancha(tjh,dqyyyqbm); |
| | | log.info("当前同步的是->{} 结果","检验检查"); |
| | | break; |
| | | default: |
| | | log.info("没有找到所匹配的同步类型"); |
| | | return AjaxResult.error("没有找到所匹配的同步类型!"); |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | testMapper.tjplUpdateDetatilByVi(map); |
| | | Integer object = (Integer) map.get("total"); |
| | | log.info("执行存储过程后出参->{}", object); |
| | | log.info("手动同步检验或检查结果结束->{}",DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")); |
| | | return AjaxResult.success("同步成功"); |
| | | |
| | | } catch (Exception e) { |
| | | log.error(String.valueOf(e)); |
| | | } |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | private void tbjianyan(String s,String dqyyyqbm) { |
| | | try { |
| | | List<Aws> awsList = testMapper.getWsxmLtkjHysqdByLisViBySLAVEWS(s); |
| | | if(null !=awsList && !awsList.isEmpty()){ |
| | | log.info("外送项目个数->{} 结果",awsList.size()); |
| | | log.info(awsList.toString()); |
| | | testMapper.delWsxmjg(s); |
| | | log.info("删除外送项目成功"); |
| | | awsService.saveBatch(awsList); |
| | | log.info("保存外送项目成功"); |
| | | } |
| | | List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(s,dqyyyqbm); |
| | | log.info("原hysqdList->{} 结果", JSONUtil.parseObj(hysqdList)); |
| | | List<LtkjHysqd> wssq = testMapper.getWsxmLtkjHysqdByLisVi(s); |
| | | if(null !=wssq && !wssq.isEmpty()){ |
| | | log.info("外送项个->{} 结果",wssq.toString()); |
| | | hysqdList.addAll(wssq); |
| | | } |
| | | if (null != hysqdList && !hysqdList.isEmpty()) { |
| | | log.info("现hysqdList->{} 结果", JSONUtil.parseObj(hysqdList)); |
| | | for (LtkjHysqd hysqd : hysqdList) { |
| | | LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(hysqd.getTjh(), hysqd.getTmh()); |
| | | if (null != jybgid) { |
| | | ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(hysqd.getTjh(), hysqd.getTmh()); |
| | | ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(hysqd.getTmh()); |
| | | } |
| | | if (ltkjHysqdService.save(hysqd)) { |
| | | List<LtkjHybgd> hybgdList = testMapper.getCcXZxYyLtkjHybgdByLisVi(hysqd.getTmh()); |
| | | List<LtkjHybgd> wsbg = testMapper.getWsxmLtkjHybgdByLisVi(s); |
| | | if(null !=wsbg && !wsbg.isEmpty())hybgdList.addAll(wsbg); |
| | | ltkjHybgdService.saveBatch(hybgdList); |
| | | } |
| | | } |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | } |
| | | } catch (Exception e) { |
| | | log.info("同步检验数据失败"); |
| | | // throw new RuntimeException(e); |
| | | log.error(String.valueOf(e)); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | private void tbjiancha(String s,String dqyyyqbm) { |
| | | |
| | | try { |
| | | List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(s,dqyyyqbm); |
| | | if (null != jcsqdList && !jcsqdList.isEmpty()) { |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | jcsqdService.deletedLtkjJcsqdByTjhAndTmh(s); |
| | | jcbgdService.deletedLtkjJcbgdByTjhAndTmh(s); |
| | | jcsqdService.saveBatch(jcsqdList); |
| | | List<LtkjExamJcbgd> jcbgdList = testMapper.getCcXZxYyPacsLtkjExamJcbgd(s); |
| | | jcycxmService.deletedByTjh(s); |
| | | if(!jcsqdList.isEmpty()){ |
| | | for (LtkjExamJcsqd jcsqd : jcsqdList) { |
| | | if(StringUtil.isNotBlank(jcsqd.getJgzt())){ |
| | | String[] split = jcsqd.getJgzt().replaceAll("\n", "").split("。|;|;|,|,"); |
| | | for (String jg : split) { |
| | | if(StringUtil.isNotBlank(jg) && !jg.contains("未见异常") |
| | | && !jg.contains("未见明显异常") && !jg.contains("未见占位") && !jg.contains("未见") |
| | | && !jg.contains("未见明显")&& !jg.contains("正常")&& !jg.contains("双侧椎间孔无狭窄")){ |
| | | TjJcycxm jcycxm=new TjJcycxm(); |
| | | jcycxm.setTjh(s); |
| | | jcycxm.setYqid(dqyyyqbm); |
| | | String[] split1 = jcsqd.getJcxmid().split(";"); |
| | | jcycxm.setProId(split1[0]); |
| | | jcycxm.setProName(jcsqd.getJcxmmc()); |
| | | jcycxm.setCreateTime(new Date()); |
| | | jcycxm.setJcjg(jg); |
| | | jcycxmService.save(jcycxm); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | if (null != jcbgdList && !jcbgdList.isEmpty()) jcbgdService.saveBatch(jcbgdList); |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | } |
| | | } catch (Exception e) { |
| | | log.info("同步检查数据失败"); |
| | | // throw new RuntimeException(e); |
| | | log.error(String.valueOf(e)); |
| | | } |
| | | } |
| | | |
| | | |
| | | @GetMapping ("/chaxunjyjcwsxmjg") |
| | | @ApiOperation(value = "查询检验检查项目结果接口") |
| | | public AjaxResult chaxunjyjcwsxmjg(@RequestParam @ApiParam(value = "jy检验 jc检查 jyjc检验和检查") String tblx, |
| | | @ApiParam(value = "体检号")@RequestParam String tjh) { |
| | | String hospId = configService.selectConfigByKey("dqyyyqbm"); |
| | | log.info("手动查询检验或检查结果开始->{}{}",hospId,DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")); |
| | | try { |
| | | |
| | | switch (tblx){ |
| | | case "jy": |
| | | List<Map<String, Object>> hysqdList = testMapper.sysgetCcXZxYyLtkjHysqdByLisVi(tjh,hospId); |
| | | if (null != hysqdList && !hysqdList.isEmpty()) { |
| | | for (Map<String, Object> map : hysqdList) { |
| | | List<Map<String, Object>> hybgdList = testMapper.sysgetCcXZxYyLtkjHybgdByLisVi(map.get("条码号").toString()); |
| | | map.put("jybgd",hybgdList); |
| | | } |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | } |
| | | |
| | | log.info("当前查询的是->{} 结果","检验"); |
| | | return AjaxResult.success(hysqdList); |
| | | |
| | | case "jc": |
| | | List<Map<String, Object>> jcsqdList = testMapper.sysgetCcXZxYyPacsLtkjExamJcsqd(tjh,hospId); |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | log.info("当前查询的是->{} 结果","检查"); |
| | | return AjaxResult.success(jcsqdList); |
| | | default: |
| | | log.info("没有找到所匹配的同步类型"); |
| | | // return AjaxResult.error("没有找到所匹配的同步类型!"); |
| | | } |
| | | log.info("手动查询检验或检查结果开始->{}",DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")); |
| | | return AjaxResult.error("没有找到所匹配的同步类型!"); |
| | | |
| | | } catch (Exception e) { |
| | | log.error(String.valueOf(e)); |
| | | return AjaxResult.error(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | @GetMapping ("/zxsq")//执行 |
| | | @ApiOperation(value = "zxsq") |
| | | public AjaxResult zx(@RequestParam int day) { |
| | | try { |
| | | List<DictHosp> list = dictHospService.list(); |
| | | DateTime dateTime1 = DateUtil.offsetDay(new Date(), day); |
| | | for (DictHosp dictHosp : list) { |
| | | String mallMerchantSecretKey = SecurityUtils.getMallMerchantSecretKey(secret, dictHosp.getHospAreaId(), dictHosp.getHospAreaName(), dateTime1); |
| | | dictHosp.setSecretKey(mallMerchantSecretKey); |
| | | dictHosp.setExpirationTime(dateTime1); |
| | | dictHosp.setUpdateTime(new Date()); |
| | | dictHospService.updateById(dictHosp); |
| | | } |
| | | return AjaxResult.success(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return AjaxResult.error(); |
| | | } |
| | | |
| | | |
| | | @GetMapping ("/gxxmpym")//执行 |
| | | @ApiOperation(value = "一键同步更新项目拼音码") |
| | | public AjaxResult gxxmpym() { |
| | | try { |
| | | List<TjProject> list = projectService.list(); |
| | | for (TjProject project : list) { |
| | | project.setProEngName(PinyinUtil.getFirstLetter(project.getProName(),"")); |
| | | projectService.updateById(project); |
| | | } |
| | | return AjaxResult.success(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return AjaxResult.error(); |
| | | } |
| | | |
| | | |
| | | |
| | | @GetMapping ("/tbhisproprice")//同步his项目单价信息 |
| | | @PreAuthorize("@ss.hasPermi('system:config:tbhisproprice')") |
| | | public AjaxResult tbhisproprice() { |
| | | configService.tbhisproprice(); |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | |
| | | |
| | | @GetMapping ("/tjjcycxm")//同步his项目单价信息 |
| | | // @PreAuthorize("@ss.hasPermi('system:config:tbhisproprice')") |
| | | @ApiOperation (value = "tjjcycxm") |
| | | public AjaxResult tjjcycxm(@RequestParam(required = false)@ApiParam(value = "体检号") String tjh) { |
| | | String yqbm = configService.selectConfigByKey("dqyyyqbm"); |
| | | if(StringUtil.isNotBlank(tjh)){ |
| | | zongjianshengchengyichangxiangmu(tjh, yqbm); |
| | | return AjaxResult.success(); |
| | | } |
| | | List<String> jc = orderService.getJianChaTjNum(); |
| | | if (null != jc && !jc.isEmpty()) { |
| | | for (String s : jc) { |
| | | zongjianshengchengyichangxiangmu(s, yqbm); |
| | | |
| | | } |
| | | } |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | public void zongjianshengchengyichangxiangmu(String s, String yqbm) { |
| | | TjOrder order = orderService.getOrderByTjNum(s); |
| | | jcycxmService.deletedByTjh(s); |
| | | List<LtkjExamJcsqd> list = jcsqdService.getLtkjJcsqdByTjh(order.getCardId()); |
| | | if(null !=list && !list.isEmpty()){ |
| | | for (LtkjExamJcsqd jcsqd : list) { |
| | | if(StringUtil.isNotBlank(jcsqd.getJgzt())){ |
| | | String[] split = jcsqd.getJgzt().replaceAll("\n", "").split("。|;|;|,|,"); |
| | | for (String jg : split) { |
| | | if(StringUtil.isNotBlank(jg) && !jg.contains("未见异常") |
| | | && !jg.contains("未见明显异常") && !jg.contains("未见占位") |
| | | && !jg.contains("未见明显")&& !jg.contains("正常")&& !jg.contains("双侧椎间孔无狭窄")&& !jg.contains("无殊")){ |
| | | TjJcycxm jcycxm=new TjJcycxm(); |
| | | jcycxm.setTjh(s); |
| | | jcycxm.setYqid(yqbm); |
| | | String[] split1 = jcsqd.getJcxmid().split(";"); |
| | | jcycxm.setProId(split1[0]); |
| | | jcycxm.setProName(jcsqd.getJcxmmc()); |
| | | jcycxm.setCreateTime(new Date()); |
| | | jcycxm.setJcjg(jg); |
| | | jcycxmService.save(jcycxm); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | @GetMapping ("/ceshitijianhao")//同步his项目单价信息 |
| | | // @PreAuthorize("@ss.hasPermi('system:config:tbhisproprice')") |
| | | @ApiOperation (value = "测试体检号") |
| | | public AjaxResult ceshitijianhao() { |
| | | //创建线程池 |
| | | ExecutorService threadPool = Executors.newFixedThreadPool(2000); |
| | | List<String> numbers = new ArrayList<>(); |
| | | for (int i = 0; i < 2000; i++) { |
| | | //获取线程 |
| | | threadPool.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | String number = idUtils.getNewTjNumberRedisLock(); // 调用获取编号的方法 |
| | | numbers.add(number); // 添加到 Set |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | threadPool.shutdown(); |
| | | return AjaxResult.success(numbers); |
| | | } |
| | | |
| | | } |