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.annotation.RepeatSubmit; 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.config.UserHoder; import com.ltkj.framework.datasource.DynamicDataSourceContextHolder; import com.ltkj.hosp.domain.*; 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 io.swagger.annotations.ApiParam; 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 javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; import java.util.stream.Collectors; 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; @Resource private ITjCustomerService tjCustomerService; @Resource private ITjOrderService orderService; @Resource private ISysDeptService deptService; @Resource private LtkjHisUserService hisUserService; @Resource private ITjProjectService tjProjectService; @Autowired private ITjOrderDetailService tjOrderDetailService; @Resource private ITjOrderRemarkService tjOrderRemarkService; @Resource private ITjProjectService projectService; @GetMapping("/getTjHyBgList") @ApiOperation(value = "查询lis数据库项目信息接口") public AjaxResult getTjHyBgList(@RequestParam(defaultValue = "1")Integer page, @RequestParam(defaultValue = "10")Integer pageSize, @RequestParam(required = false)String pname, @RequestParam(required = false)String pid, @RequestParam(required = false)String pym, @RequestParam(required = false)String checktype) { // List> maps = testMapper.getTjHyBgList(pacCode,pacName,pacRemark); // DynamicDataSourceContextHolder.clearDataSourceType(); Map map= projectService.getTjHyBgList(page,pageSize,pname,pid,pym,checktype); return AjaxResult.success(map); } @GetMapping("/newGetTjPat") @ApiOperation(value = "A------新的查询体检信息接口") public AjaxResult newGetTjPat(@RequestParam(required = false)String pacCode, @RequestParam(required = false)String pacName, @RequestParam(required = false)String pacRemark) { List> maps = testMapper.newGetTjPat(pacCode,pacName,pacRemark); DynamicDataSourceContextHolder.clearDataSourceType(); List strings = orderService.selectTjOrderByCardId1(); if(null !=strings && strings.size()>0){ List> collect = maps.stream() .filter(item -> !strings.contains(item.get("pacCode").toString())).collect(Collectors.toList()); return AjaxResult.success(collect); } 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(); } @GetMapping("/getLtkjHisUser") @ApiOperation(value = "同步his用户") public AjaxResult getLtkjHisUser() { List list = testMapper.getLtkjHisUser(); if(null !=list && list.size()>0){ DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); for (LtkjHisUser user : list) { LtkjHisUser hisUser= hisUserService.getHisUserByHisGh(user.getHisgh()); if(null == hisUser){ hisUserService.save(user); } } DynamicDataSourceContextHolder.clearDataSourceType(); } return AjaxResult.success(); } @GetMapping("/dataSynchronization") @ApiOperation(value = "同步sql server数据到本地数据库数据接口") @RepeatSubmit public AjaxResult dataSynchronization(@RequestParam String tjNumber) { //根据配置调取存储过程 将临时表数据存入预约表2023.12.12 // final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData"); // if ("Y".equals(getInfoFromSqlData)) { TjOrder order = orderService.getOrderByTjNum(tjNumber); if (null != order) { List one = testMapper.getHysqdByTmh(order.getCardId()); if (one != null && one.size() > 0) { for (LtkjHysqd ltkjHysqd : one) { // DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); LtkjHysqd hysqd = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(ltkjHysqd.getTjh(), ltkjHysqd.getTmh()); if(hysqd==null){ ltkjHysqdService.save(ltkjHysqd); DynamicDataSourceContextHolder.clearDataSourceType(); List one1 = testMapper.getHybgdByTmh(ltkjHysqd.getTmh()); if (one1 != null && one1.size() > 0) { DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); ltkjHybgdService.saveBatch(one1); DynamicDataSourceContextHolder.clearDataSourceType(); } } } } // List one2 = testMapper.getExamJcsqdTmh(tjNumber); // if (one2 != null && one2.size() > 0) { // DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); // ltkjExamJcsqdService.saveBatch(one2); // DynamicDataSourceContextHolder.clearDataSourceType(); // for (LtkjExamJcsqd ltkjExamJcsqd : one2) { // List one3 = testMapper.getExamJcbgdByTjh(ltkjExamJcsqd.getTmh()); // if (one3 != null && one3.size() > 0) { // DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); // ltkjExamJcbgdService.saveBatch(one3); // DynamicDataSourceContextHolder.clearDataSourceType(); // } // } // } //同步化验项目 testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()),order.getTjNumber(), "1"); //同步检查项目 // testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()),order.getTjNumber(),"1"); } // } return AjaxResult.success("同步成功"); } @GetMapping("/getTjYxjcList") @ApiOperation(value = "查询影响检查项目") public AjaxResult getTjYxjcList() { List> tjYxjcList = testMapper.getTjYxjcList("杨云云",null,null); return AjaxResult.success(tjYxjcList); } @GetMapping("/getPacTjProjectList") @ApiOperation(value = "维护套餐页面新增项目时调用") public AjaxResult getPacTjProjectList() { // LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); // wq.eq(TjProject::getProParentId, 0); // wq.eq(TjProject::getProStatus, 0); List tjProjects = tjProjectService.getPacTjProjectList(); // if (tjProjects != null) { // for (TjProject project : tjProjects) { // List projectList = tjProjectService.getTjProjectListBySoneId(String.valueOf(project.getProId())); // project.setTjProjectList(projectList); // } // return AjaxResult.success(tjProjects); // } return AjaxResult.success(tjProjects); } @GetMapping("/getHuaYanProByTjNum") @ApiOperation(value = "根据体检号查询化验项目接口") public AjaxResult getHuaYanProByTjNum(@RequestParam @ApiParam(value = "体检号") String tjNumber) { Map map=new HashMap<>(); List tjOrderDetails = tjOrderDetailService.addHuaYanTable(tjNumber); List tjOrderRemarks = tjOrderRemarkService.addHuaYanTable(tjNumber); map.put("tjOrderDetails",tjOrderDetails); map.put("tjOrderRemarks",tjOrderRemarks); return AjaxResult.success(map); } }