zjh
2023-12-26 e61f0a9cc2e229dd6f8156cc020e59ee3c164a01
ltkj-admin/src/main/java/com/ltkj/web/controller/sqlserver/TjSqlController.java
@@ -1,26 +1,46 @@
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 = "获取从库数据")
@Api(tags = "AAAAAAAAAAA获取从库数据")
public class TjSqlController extends BaseController {
    @Resource
    private TestMapper testMapper;
@@ -41,9 +61,90 @@
    private LtkjHybgdService ltkjHybgdService;
    @Resource
    private LtkjHysqdService ltkjHysqdService;
    @Autowired
    public RedisTemplate<Object,Object> 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("/newGetTjPat")
    @ApiOperation(value = "新的查询体检信息接口")
    public AjaxResult newGetTjPat(@RequestParam(required = false)String pacCode,
                                  @RequestParam(required = false)String pacName,
                                  @RequestParam(required = false)String pacRemark) {
        List<Map<String, Object>> 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<String> redisSerializer = (RedisSerializer<String>) redisTemplate.getKeySerializer();
//        Cursor cursor = redisTemplate.executeWithStickyConnection(redisConnection -> new ConvertingCursor<>(redisConnection.scan(options), redisSerializer::deserialize));
//        List<Object> 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());
//        Map<String,Object>map=new HashMap<>();
//        map.put("result",result);
//        map.put("scan扫描共耗时:{} ms key数量:{}",System.currentTimeMillis()-start+result.size());
//        List<TjOrderRemark> list = remarkService.list(new LambdaQueryWrapper<TjOrderRemark>().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<String, Object>> map = deptService.getSysDeptYjWjCustomerList(deptId, tjName, tjNum, aa, page, pageSize);
//        List<ResultSet> 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<String,Object> map = deptService.getSysDeptYjWjCustomerList13(deptId, tjName, tjNum, aa, page, pageSize);
        return AjaxResult.success(map);
    }
    @GetMapping("/getMiddleDetail")
    @ApiOperation(value = "查询收费项目详情")
    public AjaxResult getMiddleDetail() {
        List<LtkjMiddleDetail> list = testMapper.getMiddleDetail();
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
@@ -56,6 +157,7 @@
    @GetMapping("/getMiddleHead")
    @ApiOperation(value = "查询收费信息")
    public AjaxResult getMiddleHead() {
        List<LtkjMiddleHead> list = testMapper.getMiddleHead();
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
@@ -66,15 +168,32 @@
        return AjaxResult.success(list);
    }
//    @GetMapping("/getVbjitem")
//    @ApiOperation(value = "查看列表")
//    public AjaxResult getVbjitem() {
//        List<LtkjVbjitem> list = testMapper.getVbjitem();
//        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<LtkjMiddleDetail> 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<LtkjTjPat> list = testMapper.getTjPat();
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
@@ -85,6 +204,31 @@
        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<LtkjExamJcbgd> list = testMapper.getExamJcbgd();