zjh
2024-09-11 3844954e02e67611fd57dafa236ee2c20e258b78
ltkj-admin/src/main/java/com/ltkj/web/controller/sqlserver/TjSqlController.java
@@ -1,24 +1,47 @@
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.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.util.List;
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 = "获取从库数据")
@Api(tags = "AAAAAAAAAAA获取从库数据")
public class TjSqlController extends BaseController {
    @Resource
    private TestMapper testMapper;
@@ -39,9 +62,115 @@
    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;
    @Resource
    private LtkjHisUserService hisUserService;
    @Resource
    private ITjProjectService tjProjectService;
    @Autowired
    private ITjOrderDetailService tjOrderDetailService;
    @Resource
    private ITjOrderRemarkService tjOrderRemarkService;
    @GetMapping("/getTjHyBgList")
    @ApiOperation(value = "查询lis数据库项目信息接口")
    public AjaxResult getTjHyBgList(@RequestParam(required = false)String pacCode,
                                    @RequestParam(required = false)String pacName,
                                    @RequestParam(required = false)String pacRemark) {
        List<Map<String, Object>> maps = testMapper.getTjHyBgList(pacCode,pacName,pacRemark);
        DynamicDataSourceContextHolder.clearDataSourceType();
        return AjaxResult.success(maps);
    }
    @GetMapping("/newGetTjPat")
    @ApiOperation(value = "A------新的查询体检信息接口")
    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();
        List<String> strings = orderService.selectTjOrderByCardId1();
        if(null !=strings && strings.size()>0){
            List<Map<String, Object>> 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<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());
@@ -54,6 +183,7 @@
    @GetMapping("/getMiddleHead")
    @ApiOperation(value = "查询收费信息")
    public AjaxResult getMiddleHead() {
        List<LtkjMiddleHead> list = testMapper.getMiddleHead();
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
@@ -64,15 +194,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());
@@ -81,6 +228,31 @@
        }
        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")
@@ -128,76 +300,164 @@
    }
    @GetMapping("/getLtkjTjPatById")
    public AjaxResult getLtkjTjPatById(String id) {
        LtkjTjPat one = testMapper.getTjPatById(id);
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
        final boolean save = tjvLtkjvtjpatService.save(one);
        DynamicDataSourceContextHolder.clearDataSourceType();
        return AjaxResult.success(save);
    }
    @GetMapping("/getMiddleDetailById")
    public AjaxResult getMiddleDetailById(String id) {
        LtkjMiddleDetail one = testMapper.getMiddleDetailById(id);
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
        final boolean save = middleDetailService.save(one);
        DynamicDataSourceContextHolder.clearDataSourceType();
        return AjaxResult.success(save);
    }
    @GetMapping("/getMiddleHeadById")
    public AjaxResult getMiddleHeadById(String id) {
        LtkjMiddleHead one = testMapper.getMiddleHeadById(id);
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
        final boolean save = headService.save(one);
        DynamicDataSourceContextHolder.clearDataSourceType();
        return AjaxResult.success(save);
    }
    @GetMapping("/getExamJcbgdById")
    public AjaxResult getExamJcbgdById(String id) {
        LtkjExamJcbgd one = testMapper.getExamJcbgdById(id);
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
        final boolean save = ltkjExamJcbgdService.save(one);
        DynamicDataSourceContextHolder.clearDataSourceType();
        return AjaxResult.success(save);
    }
    @GetMapping("/getExamJcsqdById")
    public AjaxResult getExamJcsqdById(String id) {
        LtkjExamJcsqd one = testMapper.getExamJcsqdById(id);
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
        final boolean save = ltkjExamJcsqdService.save(one);
        DynamicDataSourceContextHolder.clearDataSourceType();
        return AjaxResult.success(save);
    }
    @GetMapping("/getHybgdById")
    public AjaxResult getHybgdById(String id) {
        LtkjHybgd one = testMapper.getHybgdById(id);
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
        final boolean save = ltkjHybgdService.save(one);
        DynamicDataSourceContextHolder.clearDataSourceType();
        return AjaxResult.success(save);
    }
    @GetMapping("/getHysqdById")
    public AjaxResult getHysqdById(String id) {
        LtkjHysqd one = testMapper.getHysqdById(id);
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
        final boolean save = ltkjHysqdService.save(one);
        DynamicDataSourceContextHolder.clearDataSourceType();
        return AjaxResult.success(save);
    }
    @GetMapping("/getTjPatByCusId")
    public AjaxResult getTjPatByCusId(String cusId) {
        testMapper.getTjPatByCusId(cusId);
        return AjaxResult.success();
    }
    @GetMapping("/saveMiddleHeadByPatId")
    public AjaxResult saveMiddleHeadByPatId(String id) {
        List<LtkjMiddleHead> 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<LtkjMiddleDetail> 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<LtkjHysqd> one = testMapper.getHysqdByTmh(id);
        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
        ltkjHysqdService.saveBatch(one);
        DynamicDataSourceContextHolder.clearDataSourceType();
        for (LtkjHysqd ltkjHysqd : one) {
            List<LtkjHybgd> 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<LtkjHisUser> 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<LtkjHysqd> 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<LtkjHybgd> one1 = testMapper.getHybgdByTmh(ltkjHysqd.getTmh());
                            if (one1 != null && one1.size() > 0) {
                                DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                                ltkjHybgdService.saveBatch(one1);
                                DynamicDataSourceContextHolder.clearDataSourceType();
                            }
                        }
                    }
                }
//                List<LtkjExamJcsqd> 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<LtkjExamJcbgd> 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<Map<String, Object>> tjYxjcList = testMapper.getTjYxjcList("杨云云",null,null);
        return AjaxResult.success(tjYxjcList);
    }
    @GetMapping("/getPacTjProjectList")
    @ApiOperation(value = "维护套餐页面新增项目时调用")
    public AjaxResult getPacTjProjectList() {
//        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
//        wq.eq(TjProject::getProParentId, 0);
//        wq.eq(TjProject::getProStatus, 0);
        List<TjProject> tjProjects = tjProjectService.getPacTjProjectList();
//        if (tjProjects != null) {
//            for (TjProject project : tjProjects) {
//                List<TjProject> 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<String,Object> map=new HashMap<>();
        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.addHuaYanTable(tjNumber);
        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.addHuaYanTable(tjNumber);
        map.put("tjOrderDetails",tjOrderDetails);
        map.put("tjOrderRemarks",tjOrderRemarks);
        return AjaxResult.success(map);
    }
}