From 2eb40036e885988fbf93ebcb98a339b197fb6340 Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期四, 05 六月 2025 17:39:52 +0800 Subject: [PATCH] zjh20250605 --- ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysConfigController.java | 427 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 383 insertions(+), 44 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysConfigController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysConfigController.java index df2b55f..326905a 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysConfigController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysConfigController.java @@ -1,24 +1,34 @@ 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; @@ -37,26 +47,52 @@ @RestController @RequestMapping("/system/config") @Api(tags = "A---PC绔弬鏁伴厤缃帴鍙i泦") +@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 = "鑾峰彇鍙傛暟閰嶇疆鍒楄〃") +// @PreAuthorize("@ss.hasPermi('system:config:list')") + @GetMapping ("/list") + @ApiOperation (value = "鑾峰彇鍙傛暟閰嶇疆鍒楄〃") public TableDataInfo list(SysConfig config) { startPage(); List<SysConfig> list = configService.selectConfigList(config); return getDataTable(list); } - @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.EXPORT) - @PreAuthorize("@ss.hasPermi('system:config:export')") - @PostMapping("/export") + @Log (title = "鍙傛暟绠$悊", businessType = BusinessType.EXPORT) +// @PreAuthorize("@ss.hasPermi('system:config:export')") + @PostMapping ("/export") public void export(HttpServletResponse response, SysConfig config) { List<SysConfig> list = configService.selectConfigList(config); ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class); @@ -66,8 +102,8 @@ /** * 鏍规嵁鍙傛暟缂栧彿鑾峰彇璇︾粏淇℃伅 */ - @PreAuthorize("@ss.hasPermi('system:config:query')") - @GetMapping(value = "/{configId}") +// @PreAuthorize("@ss.hasPermi('system:config:query')") + @GetMapping (value = "/{configId}") public AjaxResult getInfo(@PathVariable Long configId) { return success(configService.selectConfigById(configId)); } @@ -75,8 +111,8 @@ /** * 鏍规嵁鍙傛暟閿悕鏌ヨ鍙傛暟鍊� */ - @GetMapping(value = "/configKey/{configKey}") - @ApiOperation(value = "鏍规嵁鍙傛暟閿悕鏌ヨ鍙傛暟鍊�") + @GetMapping (value = "/configKey/{configKey}") + @ApiOperation (value = "鏍规嵁鍙傛暟閿悕鏌ヨ鍙傛暟鍊�") public AjaxResult getConfigKey(@PathVariable String configKey) { return success(configService.selectConfigByKey(configKey)); } @@ -84,15 +120,15 @@ /** * 鏂板鍙傛暟閰嶇疆 */ - @PreAuthorize("@ss.hasPermi('system:config:add')") - @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.INSERT) +// @PreAuthorize("@ss.hasPermi('system:config:add')") + @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()); @@ -102,8 +138,8 @@ /** * 淇敼鍙傛暟閰嶇疆 */ - @PreAuthorize("@ss.hasPermi('system:config:edit')") - @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.UPDATE) +// @PreAuthorize("@ss.hasPermi('system:config:edit')") + @Log (title = "鍙傛暟绠$悊", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@Validated @RequestBody SysConfig config) { if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) { @@ -111,21 +147,21 @@ } 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); } @@ -133,9 +169,9 @@ /** * 鍒犻櫎鍙傛暟閰嶇疆 */ - @PreAuthorize("@ss.hasPermi('system:config:remove')") - @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.DELETE) - @DeleteMapping("/{configIds}") +// @PreAuthorize("@ss.hasPermi('system:config:remove')") + @Log (title = "鍙傛暟绠$悊", businessType = BusinessType.DELETE) + @DeleteMapping ("/{configIds}") public AjaxResult remove(@PathVariable Long[] configIds) { configService.deleteConfigByIds(configIds); return success(); @@ -144,11 +180,314 @@ /** * 鍒锋柊鍙傛暟缂撳瓨 */ - @PreAuthorize("@ss.hasPermi('system:config:remove')") - @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.CLEAN) - @DeleteMapping("/refreshCache") +// @PreAuthorize("@ss.hasPermi('system:config:remove')") + @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("鍘焗ysqdList->{} 缁撴灉", 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("鐜癶ysqdList->{} 缁撴灉", 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("姝e父")&& !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, + @RequestParam(defaultValue = "0",required = false)@ApiParam(value = "0 浠呭悓姝ユ湭瀹℃牳浜哄憳 1鎵�鏈変汉") String lx) { + String yqbm = configService.selectConfigByKey("dqyyyqbm"); + if(StringUtil.isNotBlank(tjh)){ + zongjianshengchengyichangxiangmu(tjh, yqbm); + return AjaxResult.success(); + }else { + List<String> jc =null; + if(lx.equals("0")){ + jc = orderService.getJianChaTjNumWsh(); + }else { + 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("姝e父")&& !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); + } + } -- Gitblit v1.8.0