package com.ltkj.web.controller.sqlserver; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.ltkj.common.core.controller.BaseController; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.core.redis.RedisCache; import com.ltkj.common.enums.DataSourceType; import com.ltkj.framework.datasource.DynamicDataSourceContextHolder; import com.ltkj.hosp.domain.TjCustomer; import com.ltkj.hosp.domain.TjOrder; import com.ltkj.hosp.domain.TjOrderRemark; import com.ltkj.hosp.service.*; import com.ltkj.hosp.sqlDomain.*; import com.ltkj.hosp.mapper.TestMapper; import com.ltkj.system.service.ISysDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.ConvertingCursor; import org.springframework.data.redis.core.Cursor; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ScanOptions; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log; import static org.apache.poi.hemf.record.emfplus.HemfPlusRecordType.save; @RestController @RequestMapping("/sqlserver/getdata") @Api(tags = "AAAAAAAAAAA获取从库数据") public class TjSqlController extends BaseController { @Resource private TestMapper testMapper; @Resource private TjvLtkjvtjpatService tjvLtkjvtjpatService; @Resource private LtkjMiddleDetailService middleDetailService; @Resource private LtkjMiddleHeadService headService; @Resource private LtkjExamJcbgdService ltkjExamJcbgdService; @Resource private LtkjExamJcsqdService ltkjExamJcsqdService; @Resource private LtkjHybgdService ltkjHybgdService; @Resource private LtkjHysqdService ltkjHysqdService; @Autowired public RedisTemplate redisTemplate; @Resource private ITjCustomerService tjCustomerService; @Resource private RedisCache redisCache; @Resource private TjAsyncService asyncService; @Resource private ITjOrderRemarkService remarkService; @Resource private ITjOrderService orderService; @Resource private ISysDeptService deptService; @GetMapping("/getTjHyBgList") @ApiOperation(value = "查询lis数据库项目信息接口") public AjaxResult getTjHyBgList(@RequestParam(required = false)String pacCode, @RequestParam(required = false)String pacName, @RequestParam(required = false)String pacRemark) { List> maps = testMapper.getTjHyBgList(pacCode,pacName,pacRemark); DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(maps); } @GetMapping("/newGetTjPat") @ApiOperation(value = "新的查询体检信息接口") public AjaxResult newGetTjPat(@RequestParam(required = false)String pacCode, @RequestParam(required = false)String pacName, @RequestParam(required = false)String pacRemark) { // List> maps = testMapper.newGetTjPat111111(pacName); List> maps = testMapper.newGetTjPat(pacCode,pacName,pacRemark); DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(maps); } @GetMapping("/getRedisValue") @ApiOperation(value = "测试redis模糊查询") public AjaxResult getRedisValue(@RequestParam int aa, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer pageSize, @RequestParam(required = false) String deptId, @RequestParam(required = false) String tjName, @RequestParam(required = false) String tjNum) throws SQLException, JsonProcessingException { // long start = System.currentTimeMillis(); // //需要匹配的key // ScanOptions options = ScanOptions.scanOptions() // //这里指定每次扫描key的数量(很多博客瞎说要指定Integer.MAX_VALUE,这样的话跟 keys有什么区别?) // .count(10000) // .match(aa+"*").build(); // RedisSerializer redisSerializer = (RedisSerializer) redisTemplate.getKeySerializer(); // Cursor cursor = redisTemplate.executeWithStickyConnection(redisConnection -> new ConvertingCursor<>(redisConnection.scan(options), redisSerializer::deserialize)); // List result = new ArrayList<>(); // while(cursor.hasNext()){ // String s = cursor.next().toString(); // redisCache.deleteObject(s); // } // //切记这里一定要关闭,否则会耗尽连接数。报Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisException: Could not get a // cursor.close(); //// System.out.println(result); // log.info("scan扫描共耗时:{} ms key数量:{}",System.currentTimeMillis()-start,result.size()); // Mapmap=new HashMap<>(); // map.put("result",result); // map.put("scan扫描共耗时:{} ms key数量:{}",System.currentTimeMillis()-start+result.size()); // List list = remarkService.list(new LambdaQueryWrapper().ne(TjOrderRemark::getType,2).groupBy(TjOrderRemark::getTjNumber)); // for (TjOrderRemark remark : list) { // TjOrder orderByTjNum = orderService.getOrderByTjNum(remark.getTjNumber()); // if(null !=orderByTjNum){ // asyncService.dockerSetWjCustomerByRedis(orderByTjNum.getOrderId(),remark.getDeptId()); // asyncService.dockerSetYjCustomerByRedis(orderByTjNum.getOrderId(),remark.getDeptId()); // } // } if(null==deptId) deptId=""; if(null==tjName) tjName=""; if(null==tjNum) tjNum=""; // List> map = deptService.getSysDeptYjWjCustomerList(deptId, tjName, tjNum, aa, page, pageSize); // List map = deptService.getSysDeptYjWjCustomerList1(deptId, tjName, tjNum, aa, page, pageSize); // ResultSet resultSet = deptService.getSysDeptYjWjCustomerList12(deptId, tjName, tjNum, aa, page, pageSize); // while (resultSet.next()){ // String anInt = resultSet.getString(1); // System.out.println(anInt); // } Map map = deptService.getSysDeptYjWjCustomerList13(deptId, tjName, tjNum, aa, page, pageSize); return AjaxResult.success(map); } @GetMapping("/getMiddleDetail") @ApiOperation(value = "查询收费项目详情") public AjaxResult getMiddleDetail() { List list = testMapper.getMiddleDetail(); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); for (LtkjMiddleDetail ltkjMiddleDetail : list) { final boolean save = middleDetailService.save(ltkjMiddleDetail); } DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(list); } @GetMapping("/getMiddleHead") @ApiOperation(value = "查询收费信息") public AjaxResult getMiddleHead() { List list = testMapper.getMiddleHead(); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); for (LtkjMiddleHead ltkjMiddleHead : list) { final boolean save = headService.save(ltkjMiddleHead); } DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(list); } @GetMapping("/getMiddleHeadByPartId") @ApiOperation(value = "根据身份证号查询收费信息") public AjaxResult getMiddleHeadByPartId(@RequestParam String partId) { TjCustomer customer = tjCustomerService.getTjCustomerByCusIdCard(partId); LtkjMiddleHead pat = testMapper.getMiddleHeadByPartId(customer.getCardId()); if (null != pat) { List list = testMapper.getMiddleDetailByFeadId(pat.getFeadId()); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); LtkjMiddleHead o = headService.getMiddleHeadByPartId(customer.getCardId()); if(o==null){ headService.save(pat); for (LtkjMiddleDetail ltkjMiddleDetail : list) { middleDetailService.save(ltkjMiddleDetail); } testMapper.saveTjProByCusId(customer.getCardId(),customer.getCusIdcard()); } testMapper.saveTjProByCusId(customer.getCardId(),customer.getCusIdcard()); } DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(); } @GetMapping("/getTjPat") @ApiOperation(value = "测试getTjPat") public AjaxResult getTjPat() { List list = testMapper.getTjPat(); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); for (LtkjTjPat ltkjTjPat : list) { final boolean save = tjvLtkjvtjpatService.save(ltkjTjPat); } DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(list); } @GetMapping("/getTjPatByIdCard") @ApiOperation(value = "根据身份证号测试getTjPat") public AjaxResult getTjPatByIdCard(@RequestParam String idCard) { LtkjTjPat tjPatByIdCard = testMapper.getTjPatByIdCard(idCard.trim()); if(null != tjPatByIdCard){ String fcardNo = tjPatByIdCard.getFcardNo(); if(null !=fcardNo){ fcardNo=fcardNo.trim(); tjPatByIdCard.setFcardNo(fcardNo); } LtkjTjPat ltkjTjPat = tjvLtkjvtjpatService.getLtkjTjPatByCusIdCard(idCard); if(null==ltkjTjPat){ tjvLtkjvtjpatService.save(tjPatByIdCard); } } DynamicDataSourceContextHolder.clearDataSourceType(); //再根据身份证号写customer表 TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(idCard); if(null == tjCustomer){ testMapper.getTjPatByCusId(idCard); } return AjaxResult.success(tjPatByIdCard); } @GetMapping("/getExamJcbgd") public AjaxResult getExamJcbgd() { List list = testMapper.getExamJcbgd(); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); for (LtkjExamJcbgd ltkjExamJcbgd : list) { final boolean save = ltkjExamJcbgdService.save(ltkjExamJcbgd); } DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(list); } @GetMapping("/getExamJcsqd") public AjaxResult getExamJcsqd() { List list = testMapper.getExamJcsqd(); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); for (LtkjExamJcsqd ltkjExamJcsqd : list) { final boolean save = ltkjExamJcsqdService.save(ltkjExamJcsqd); } DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(list); } @GetMapping("/getHybgd") public AjaxResult getHybgd() { List list = testMapper.getHybgd(); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); for (LtkjHybgd ltkjHybgd : list) { final boolean save = ltkjHybgdService.save(ltkjHybgd); } DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(list); } @GetMapping("/getHysqd") public AjaxResult getHysqd() { List list = testMapper.getHysqd(); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); for (LtkjHysqd ltkjHysqd : list) { final boolean save = ltkjHysqdService.save(ltkjHysqd); } DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(list); } @GetMapping("/getTjPatByCusId") public AjaxResult getTjPatByCusId(String cusId) { testMapper.getTjPatByCusId(cusId); return AjaxResult.success(); } @GetMapping("/saveMiddleHeadByPatId") public AjaxResult saveMiddleHeadByPatId(String id) { List one = testMapper.saveMiddleHeadByPatId(id); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); for (LtkjMiddleHead ltkjMiddleHead : one) { final boolean save = headService.save(ltkjMiddleHead); } DynamicDataSourceContextHolder.clearDataSourceType(); return AjaxResult.success(save); } @GetMapping("/getMiddleDetailByHeadId") public AjaxResult getMiddleDetailByHeadId(String id) { List one = testMapper.getMiddleDetailByHeadId(id); for (LtkjMiddleDetail ltkjMiddleDetail : one) { DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); final boolean save = middleDetailService.save(ltkjMiddleDetail); DynamicDataSourceContextHolder.clearDataSourceType(); } return AjaxResult.success(one); } @GetMapping("/test") public AjaxResult getHysqdByTmh(String id) { List one = testMapper.getHysqdByTmh(id); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); ltkjHysqdService.saveBatch(one); DynamicDataSourceContextHolder.clearDataSourceType(); for (LtkjHysqd ltkjHysqd : one) { List one1 = testMapper.getHybgdByTmh(ltkjHysqd.getTmh()); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); ltkjHybgdService.saveBatch(one1); DynamicDataSourceContextHolder.clearDataSourceType(); } return AjaxResult.success(); } }